diff --git a/app/main.57f2bde58ab84c51d17a.js b/app/main.57f2bde58ab84c51d17a.js deleted file mode 100644 index fe42438d..00000000 --- a/app/main.57f2bde58ab84c51d17a.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{var e,t={52165:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppRoutingModule=void 0;const r=n(68012),o=n(32621),a=(n(68012),[{path:"providers",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(33150)))).ProvidersModule}))}]);class s{}t.AppRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[r.RouterModule.forChild(a)],r.RouterModule]})},63395:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppComponent=void 0;const i=n(27914),r=n(64281),o=n(47075),a=n(32621),s=n(68012);class l extends i.AppComponent{ngOnInit(){super.ngOnInit(),this.policyListService.addPolicies([new o.MaximumVaultTimeoutPolicy,new r.DisablePersonalVaultExportPolicy])}}t.AppComponent=l,l.ɵfac=function(){let e;return function(t){return(e||(e=a.ɵɵgetInheritedFactory(l)))(t||l)}}(),l.ɵcmp=a.ɵɵdefineComponent({type:l,selectors:[["app-root"]],features:[a.ɵɵInheritDefinitionFeature],decls:2,vars:0,template:function(e,t){1&e&&(a.ɵɵelement(0,"router-outlet"),a.ɵɵtext(1,"\n"))},directives:[s.RouterOutlet],encapsulation:2})},65895:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppModule=void 0;const i=n(83072),r=n(2336),o=n(96832),a=n(3435),s=n(68012),l=n(37407),c=n(44926),d=n(49173),p=n(77537),u=n(52976),m=n(7643),h=n(52165),v=n(63395),g=n(40299),f=n(32621);class y{}t.AppModule=y,y.ɵfac=function(e){return new(e||y)},y.ɵmod=f.ɵɵdefineNgModule({type:y,bootstrap:[v.AppComponent]}),y.ɵinj=f.ɵɵdefineInjector({imports:[[r.OverlayModule,p.OssModule,c.JslibModule,a.BrowserAnimationsModule,o.FormsModule,o.ReactiveFormsModule,u.ServicesModule,l.InfiniteScrollModule,i.DragDropModule,h.AppRoutingModule,d.OssRoutingModule,g.OrganizationsModule,s.RouterModule,m.WildcardRoutingModule]]})},22977:(e,t,n)=>{"use strict";const i=n(61248),r=n(32621);n(43734),n(19755),n(28981),n(5812),n(51857);const o=n(65895);r.enableProdMode(),i.platformBrowser().bootstrapModule(o.AppModule,{preserveWhitespaces:!0})},16653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCvaComponent=void 0;const i=n(96832),r=n(89924),o=n(32621),a=n(96832);class s{constructor(e){this.controlDir=e,this.internalControl=new i.FormControl(""),this.onValueChangesInternal=e=>this.onChange(e),this.controlDir.valueAccessor=this}get describedById(){return this.showDescribedBy?this.controlId+"Desc":null}get showDescribedBy(){return null!=this.helperText||this.controlDir.control.hasError("required")}get isRequired(){return this.controlDir.control.hasValidator(i.Validators.required)||this.controlDir.control.hasValidator(r.dirtyRequired)}ngOnInit(){this.internalControl.valueChanges.subscribe(this.onValueChangesInternal)}onBlurInternal(){this.onTouched()}writeValue(e){this.internalControl.setValue(e)}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){e?this.internalControl.disable():this.internalControl.enable()}}t.BaseCvaComponent=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(a.NgControl,2))},s.ɵdir=o.ɵɵdefineDirective({type:s,inputs:{label:"label",controlId:"controlId",helperText:"helperText"}})},64897:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputCheckboxComponent=void 0;const i=n(16653),r=n(32621),o=n(96832),a=n(57490);function s(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",5),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵattribute("id",e.describedById),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.helperText)}}class l extends i.BaseCvaComponent{}t.InputCheckboxComponent=l,l.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(l)))(t||l)}}(),l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["app-input-checkbox"]],features:[r.ɵɵInheritDefinitionFeature],decls:13,vars:6,consts:[[1,"form-group"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"formControl","blur"],[1,"form-check-label"],["class","form-text text-muted",4,"ngIf"],[1,"form-text","text-muted"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",3),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,s,2,2,"small",4),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-describedby",t.describedById),r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate(t.label),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.showDescribedBy))},directives:[o.CheckboxControlValueAccessor,o.NgControlStatus,o.FormControlDirective,a.NgIf],encapsulation:2})},3867:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputTextReadOnlyComponent=void 0;n(73828);const i=n(32621),r=n(73828),o=n(57490),a=n(8863),s=n(99729);function l(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"div",4),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"button",5),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);const t=i.ɵɵnextContext();return t.launchUri(t.controlValue)})),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4,"\n "),i.ɵɵelement(5,"i",6),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(3,1,"launch")))}function c(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"div",4),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"button",5),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);const t=i.ɵɵnextContext();return t.copy(t.controlValue)})),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4,"\n "),i.ɵɵelement(5,"i",7),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(3,1,"copyValue")))}class d{constructor(e){this.platformUtilsService=e,this.showCopy=!0,this.showLaunch=!1}copy(e){this.platformUtilsService.copyToClipboard(e)}launchUri(e){this.platformUtilsService.launchUri(e)}}t.InputTextReadOnlyComponent=d,d.ɵfac=function(e){return new(e||d)(i.ɵɵdirectiveInject(r.PlatformUtilsService))},d.ɵcmp=i.ɵɵdefineComponent({type:d,selectors:[["app-input-text-readonly"]],inputs:{controlValue:"controlValue",label:"label",showCopy:"showCopy",showLaunch:"showLaunch"},decls:15,vars:4,consts:[[1,"form-group"],[1,"input-group"],["readonly","",1,"form-control",3,"value"],["class","input-group-append",4,"ngIf"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-external-link"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"label"),i.ɵɵtext(3),i.ɵɵelementEnd(),i.ɵɵtext(4,"\n "),i.ɵɵelementStart(5,"div",1),i.ɵɵtext(6,"\n "),i.ɵɵelement(7,"input",2),i.ɵɵtext(8,"\n "),i.ɵɵtemplate(9,l,8,3,"div",3),i.ɵɵtext(10,"\n "),i.ɵɵtemplate(11,c,8,3,"div",3),i.ɵɵtext(12,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(13,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(14,"\n")),2&e&&(i.ɵɵadvance(3),i.ɵɵtextInterpolate(t.label),i.ɵɵadvance(4),i.ɵɵproperty("value",t.controlValue),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showLaunch),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showCopy))},directives:[o.NgIf,a.A11yTitleDirective],pipes:[s.I18nPipe],encapsulation:2})},874:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputTextComponent=void 0;const i=n(16653),r=n(32621),o=n(57490),a=n(96832),s=n(99729);function l(e,t){1&e&&(r.ɵɵelementStart(0,"small",4),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("(",r.ɵɵpipeBind1(2,1,"required"),")"))}function c(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",7),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.helperText,"\n ")}}function d(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",8),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",9),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",10),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(6,2,"error"),":"),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",e.controlDir.control.hasError(e.helperTextSameAsError)?e.helperText:r.ɵɵpipeBind2(8,4,"fieldRequiredError",e.label),"\n ")}}function p(e,t){if(1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,c,2,1,"small",5),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,d,9,7,"small",6),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵattribute("id",e.describedById),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",null!=e.helperText&&!e.controlDir.control.hasError(e.helperTextSameAsError)),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.controlDir.control.hasError("required"))}}class u extends i.BaseCvaComponent{constructor(){super(...arguments),this.stripSpaces=!1,this.transformValue=null,this.onValueChangesInternal=e=>{let t=e;null!=this.transformValue&&(t=this.transformValue(e),this.internalControl.setValue(t,{emitEvent:!1})),this.onChange(t)}}ngOnInit(){super.ngOnInit(),this.stripSpaces&&(this.transformValue=this.doStripSpaces)}writeValue(e){this.internalControl.setValue(null==e?"":e)}onValueChangeInternal(e){let t=e;null!=this.transformValue&&(t=this.transformValue(e),this.internalControl.setValue(t,{emitEvent:!1}))}doStripSpaces(e){return e.replace(/ /g,"")}}t.InputTextComponent=u,u.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(u)))(t||u)}}(),u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["app-input-text","label","","controlId",""]],inputs:{helperTextSameAsError:"helperTextSameAsError",requiredErrorMessage:"requiredErrorMessage",stripSpaces:"stripSpaces"},features:[r.ɵɵInheritDefinitionFeature],attrs:["label","","controlId",""],decls:12,vars:8,consts:[[1,"form-group"],["class","text-muted form-text d-inline",4,"ngIf"],[1,"form-control",3,"formControl","blur"],[4,"ngIf"],[1,"text-muted","form-text","d-inline"],["class","form-text text-muted",4,"ngIf"],["class","error-inline","role","alert",4,"ngIf"],[1,"form-text","text-muted"],["role","alert",1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle"],[1,"sr-only"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"label"),r.ɵɵtext(3),r.ɵɵtemplate(4,l,3,3,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"input",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,p,6,3,"div",3),r.ɵɵtext(10,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",t.label,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.isRequired),r.ɵɵadvance(3),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-describedby",t.describedById)("aria-invalid",t.controlDir.control.invalid),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.showDescribedBy))},directives:[o.NgIf,a.DefaultValueAccessor,a.NgControlStatus,a.FormControlDirective],pipes:[s.I18nPipe],encapsulation:2})},60528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectComponent=void 0;const i=n(16653),r=n(32621),o=n(57490),a=n(96832),s=n(99729);function l(e,t){1&e&&(r.ɵɵelementStart(0,"small",4),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("(",r.ɵɵpipeBind1(2,1,"required"),")"))}function c(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",5),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵpropertyInterpolate("disabled",e.disabled),r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}class d extends i.BaseCvaComponent{}t.SelectComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-select"]],inputs:{selectOptions:"selectOptions"},features:[r.ɵɵInheritDefinitionFeature],decls:13,vars:7,consts:[[1,"form-group"],["class","text-muted form-text d-inline",4,"ngIf"],[1,"form-control",3,"formControl","blur"],[3,"ngValue","disabled",4,"ngFor","ngForOf"],[1,"text-muted","form-text","d-inline"],[3,"ngValue","disabled"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"label"),r.ɵɵtext(3),r.ɵɵtemplate(4,l,3,3,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"select",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,c,2,3,"option",3),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",t.label,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.isRequired),r.ɵɵadvance(3),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-invalid",t.controlDir.control.invalid),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",t.selectOptions))},directives:[o.NgIf,a.SelectControlValueAccessor,a.NgControlStatus,a.FormControlDirective,o.NgForOf,a.NgSelectOption,a.ɵNgSelectMultipleOption],pipes:[s.I18nPipe],encapsulation:2})},19213:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoComponent=void 0;const r=n(96832),o=(n(68012),n(89924)),a=(n(91674),n(51554),n(63513),n(73828),n(37084)),s=n(82769),l=n(21021),c=n(20577),d=n(56259),p=n(32621),u=n(96832),m=n(68012),h=n(91674),v=n(73828),g=n(51554),f=n(63513),y=n(57490),x=n(56820),S=n(64897),b=n(8863),w=n(60528),C=n(51626),I=n(5495),E=n(24006),P=n(3867),O=n(874),k=n(1142),A=n(99729);function T(e,t){1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",3),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",4),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementContainerEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function M(e,t){1&e&&(p.ɵɵelement(0,"i",21),p.ɵɵpipe(1,"i18n")),2&e&&p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,1,"loading"))}function B(e,t){1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,"keyConnectorTest"),"\n "))}function D(e,t){1&e&&(p.ɵɵelementStart(0,"small",35),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,4,"keyConnectorTestFail"),"\n "))}function R(e,t){1&e&&(p.ɵɵtext(0,"\n "),p.ɵɵelementStart(1,"small",37),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",38),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n ")),2&e&&(p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(5,1,"keyConnectorTestSuccess"),"\n "))}function F(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",32),p.ɵɵtext(1,"\n "),p.ɵɵtemplate(2,D,9,6,"small",33),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,R,7,3,"ng-template",null,34,p.ɵɵtemplateRefExtractor),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵreference(5),t=p.ɵɵnextContext(3);p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.keyConnectorUrl.hasError("invalidUrl"))("ngIfElse",e)}}function U(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"app-callout",23),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n\n "),p.ɵɵelementStart(6,"div",9),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"label",24),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelementStart(11,"small",25),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementStart(16,"div",26),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"input",27),p.ɵɵlistener("change",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).haveTestedKeyConnector=!1})),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n "),p.ɵɵelementStart(20,"div",28),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"button",29),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).validateKeyConnectorUrl()})),p.ɵɵtext(23,"\n "),p.ɵɵtemplate(24,M,2,3,"i",30),p.ɵɵtext(25,"\n "),p.ɵɵtemplate(26,B,3,3,"span",1),p.ɵɵtext(27,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(28,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵtemplate(31,F,7,2,"div",31),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(2),p.ɵɵproperty("useAlertRole",!0),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,8,"keyConnectorWarning"),"\n "),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(10,10,"keyConnectorUrl"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("(",p.ɵɵpipeBind1(13,12,"required"),")"),p.ɵɵadvance(10),p.ɵɵproperty("disabled",!e.enableTestKeyConnector),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.keyConnectorUrl.pending),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.keyConnectorUrl.pending),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.haveTestedKeyConnector)}}const V=function(e,t){return{"bwi-angle-down":e,"bwi-chevron-up":t}};function N(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",40),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"h2",41),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n\n "),p.ɵɵelement(8,"app-input-text-readonly",42),p.ɵɵpipe(9,"i18n"),p.ɵɵtext(10,"\n\n "),p.ɵɵelement(11,"app-input-text-readonly",42),p.ɵɵpipe(12,"i18n"),p.ɵɵtext(13,"\n\n "),p.ɵɵelement(14,"app-input-text",43),p.ɵɵpipe(15,"i18n"),p.ɵɵtext(16,"\n\n "),p.ɵɵelement(17,"app-input-text",44),p.ɵɵpipe(18,"i18n"),p.ɵɵtext(19,"\n\n "),p.ɵɵelement(20,"app-input-text",45),p.ɵɵpipe(21,"i18n"),p.ɵɵtext(22,"\n\n "),p.ɵɵelement(23,"app-input-text",46),p.ɵɵpipe(24,"i18n"),p.ɵɵpipe(25,"i18n"),p.ɵɵtext(26,"\n\n "),p.ɵɵelementStart(27,"app-select",47),p.ɵɵpipe(28,"i18n"),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n\n "),p.ɵɵelement(31,"app-input-checkbox",48),p.ɵɵpipe(32,"i18n"),p.ɵɵtext(33,"\n\n "),p.ɵɵtext(34,"\n "),p.ɵɵelementStart(35,"div",49),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).toggleOpenIdCustomizations()})),p.ɵɵtext(36,"\n "),p.ɵɵelementStart(37,"h3",50),p.ɵɵtext(38),p.ɵɵpipe(39,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n "),p.ɵɵelementStart(41,"button",51),p.ɵɵtext(42,"\n "),p.ɵɵelement(43,"i",52),p.ɵɵtext(44,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(45,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(46,"\n "),p.ɵɵelementStart(47,"div",53),p.ɵɵtext(48,"\n "),p.ɵɵelement(49,"app-input-text",54),p.ɵɵpipe(50,"i18n"),p.ɵɵpipe(51,"i18n"),p.ɵɵtext(52,"\n\n "),p.ɵɵelement(53,"app-input-text",55),p.ɵɵpipe(54,"i18n"),p.ɵɵpipe(55,"i18n"),p.ɵɵtext(56,"\n\n "),p.ɵɵelement(57,"app-input-text",56),p.ɵɵpipe(58,"i18n"),p.ɵɵpipe(59,"i18n"),p.ɵɵtext(60,"\n\n "),p.ɵɵelement(61,"app-input-text",57),p.ɵɵpipe(62,"i18n"),p.ɵɵpipe(63,"i18n"),p.ɵɵtext(64,"\n\n "),p.ɵɵelement(65,"app-input-text",58),p.ɵɵpipe(66,"i18n"),p.ɵɵtext(67,"\n\n "),p.ɵɵelement(68,"app-input-text",59),p.ɵɵpipe(69,"i18n"),p.ɵɵtext(70,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(71,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(72,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵproperty("formGroup",e.openIdForm),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,32,"openIdConnectConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(9,34,"callbackPath"))("controlValue",e.callbackPath),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(12,36,"signedOutCallbackPath"))("controlValue",e.signedOutCallbackPath),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(15,38,"authority"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(18,40,"clientId"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(21,42,"clientSecret"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(24,44,"metadataAddress"))("stripSpaces",!0)("helperText",p.ɵɵpipeBind1(25,46,"openIdAuthorityRequired")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(28,48,"oidcRedirectBehavior"))("selectOptions",e.connectRedirectOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(32,50,"getClaimsFromUserInfoEndpoint")),p.ɵɵadvance(7),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(39,52,"openIdOptionalCustomizations"),"\n "),p.ɵɵadvance(3),p.ɵɵattribute("aria-expanded",e.showOpenIdCustomizations),p.ɵɵadvance(2),p.ɵɵproperty("ngClass",p.ɵɵpureFunction2(74,V,!e.showOpenIdCustomizations,e.showOpenIdCustomizations)),p.ɵɵadvance(4),p.ɵɵproperty("hidden",!e.showOpenIdCustomizations),p.ɵɵadvance(2),p.ɵɵproperty("label",p.ɵɵpipeBind1(50,54,"additionalScopes"))("helperText",p.ɵɵpipeBind1(51,56,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(54,58,"additionalUserIdClaimTypes"))("helperText",p.ɵɵpipeBind1(55,60,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(58,62,"additionalEmailClaimTypes"))("helperText",p.ɵɵpipeBind1(59,64,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(62,66,"additionalNameClaimTypes"))("helperText",p.ɵɵpipeBind1(63,68,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(66,70,"acrValues")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(69,72,"expectedReturnAcrValue"))}}function _(e,t){1&e&&(p.ɵɵelementStart(0,"small",77),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵpipe(9,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(8,4,"fieldRequiredError",p.ɵɵpipeBind1(9,7,"idpX509PublicCert")),"\n "))}function j(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"div",40),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"h2",41),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n\n "),p.ɵɵelement(9,"app-input-text-readonly",42),p.ɵɵpipe(10,"i18n"),p.ɵɵtext(11,"\n\n "),p.ɵɵelement(12,"app-input-text-readonly",60),p.ɵɵpipe(13,"i18n"),p.ɵɵtext(14,"\n\n "),p.ɵɵelement(15,"app-input-text-readonly",42),p.ɵɵpipe(16,"i18n"),p.ɵɵtext(17,"\n\n "),p.ɵɵelementStart(18,"app-select",61),p.ɵɵpipe(19,"i18n"),p.ɵɵtext(20,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(21,"\n\n "),p.ɵɵelementStart(22,"app-select",62),p.ɵɵpipe(23,"i18n"),p.ɵɵtext(24,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(25,"\n\n "),p.ɵɵelementStart(26,"app-select",63),p.ɵɵpipe(27,"i18n"),p.ɵɵtext(28,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n\n "),p.ɵɵelementStart(30,"app-select",64),p.ɵɵpipe(31,"i18n"),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n\n "),p.ɵɵelement(34,"app-input-checkbox",65),p.ɵɵpipe(35,"i18n"),p.ɵɵtext(36,"\n\n "),p.ɵɵelement(37,"app-input-checkbox",66),p.ɵɵpipe(38,"i18n"),p.ɵɵtext(39,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n\n "),p.ɵɵtext(41,"\n "),p.ɵɵelementStart(42,"div",40),p.ɵɵtext(43,"\n "),p.ɵɵelementStart(44,"h2",41),p.ɵɵtext(45),p.ɵɵpipe(46,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(47,"\n\n "),p.ɵɵelement(48,"app-input-text",67),p.ɵɵpipe(49,"i18n"),p.ɵɵtext(50,"\n\n "),p.ɵɵelementStart(51,"app-select",68),p.ɵɵpipe(52,"i18n"),p.ɵɵtext(53,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(54,"\n\n "),p.ɵɵelement(55,"app-input-text",69),p.ɵɵpipe(56,"i18n"),p.ɵɵpipe(57,"i18n"),p.ɵɵtext(58,"\n\n "),p.ɵɵelement(59,"app-input-text",70),p.ɵɵpipe(60,"i18n"),p.ɵɵtext(61,"\n\n "),p.ɵɵelementStart(62,"div",9),p.ɵɵtext(63,"\n "),p.ɵɵelementStart(64,"label",71),p.ɵɵtext(65),p.ɵɵpipe(66,"i18n"),p.ɵɵelementStart(67,"small",25),p.ɵɵtext(68),p.ɵɵpipe(69,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(70,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(71,"\n "),p.ɵɵelement(72,"textarea",72),p.ɵɵtext(73,"\n "),p.ɵɵtemplate(74,_,10,9,"small",73),p.ɵɵtext(75,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(76,"\n\n "),p.ɵɵelementStart(77,"app-select",74),p.ɵɵpipe(78,"i18n"),p.ɵɵtext(79,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(80,"\n\n "),p.ɵɵtext(81,"\n "),p.ɵɵtext(82,"\n\n "),p.ɵɵelement(83,"app-input-checkbox",75),p.ɵɵpipe(84,"i18n"),p.ɵɵtext(85,"\n\n "),p.ɵɵelement(86,"app-input-checkbox",76),p.ɵɵpipe(87,"i18n"),p.ɵɵtext(88,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(89,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(2);p.ɵɵproperty("formGroup",e.samlForm),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,35,"samlSpConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(10,37,"spEntityId"))("controlValue",e.spEntityId),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(13,39,"spMetadataUrl"))("controlValue",e.spMetadataUrl)("showLaunch",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(16,41,"spAcsUrl"))("controlValue",e.spAcsUrl),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(19,43,"spNameIdFormat"))("selectOptions",e.saml2NameIdFormatOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(23,45,"spOutboundSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(27,47,"spSigningBehavior"))("selectOptions",e.saml2SigningBehaviourOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(31,49,"spMinIncomingSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(35,51,"spWantAssertionsSigned")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(38,53,"spValidateCertificates")),p.ɵɵadvance(8),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(46,55,"samlIdpConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(49,57,"idpEntityId")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(52,59,"idpBindingType"))("selectOptions",e.saml2BindingTypeOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(56,61,"idpSingleSignOnServiceUrl"))("helperText",p.ɵɵpipeBind1(57,63,"idpSingleSignOnServiceUrlRequired"))("stripSpaces",!0),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(60,65,"idpSingleLogoutServiceUrl"))("stripSpaces",!0),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(66,67,"idpX509PublicCert"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("(",p.ɵɵpipeBind1(69,69,"required"),")"),p.ɵɵadvance(6),p.ɵɵproperty("ngIf",e.samlForm.get("idpX509PublicCert").hasError("required")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(78,71,"idpOutboundSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(6),p.ɵɵproperty("label",p.ɵɵpipeBind1(84,73,"idpAllowOutboundLogoutRequests")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(87,75,"idpSignAuthenticationRequests"))}}function z(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",78),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd()),2&e){const e=t.ngIf;p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(8,4,1===e?"formErrorSummarySingle":"formErrorSummaryPlural",e),"\n ")}}function H(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",5,6),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submit()})),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"p"),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementStart(6,"a",7),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelement(11,"br"),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n\n "),p.ɵɵtext(15,"\n "),p.ɵɵelementContainerStart(16),p.ɵɵtext(17,"\n "),p.ɵɵelement(18,"app-input-checkbox",8),p.ɵɵpipe(19,"i18n"),p.ɵɵpipe(20,"i18n"),p.ɵɵtext(21,"\n\n "),p.ɵɵelementStart(22,"div",9),p.ɵɵtext(23,"\n "),p.ɵɵelementStart(24,"label"),p.ɵɵtext(25),p.ɵɵpipe(26,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(27,"\n "),p.ɵɵelementStart(28,"div",10),p.ɵɵtext(29,"\n "),p.ɵɵelement(30,"input",11),p.ɵɵtext(31,"\n "),p.ɵɵelementStart(32,"label",12),p.ɵɵtext(33),p.ɵɵpipe(34,"i18n"),p.ɵɵelementStart(35,"small"),p.ɵɵtext(36),p.ɵɵpipe(37,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(38,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(39,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n "),p.ɵɵelementStart(41,"div",13),p.ɵɵtext(42,"\n "),p.ɵɵelement(43,"input",14),p.ɵɵtext(44,"\n "),p.ɵɵelementStart(45,"label",15),p.ɵɵtext(46),p.ɵɵpipe(47,"i18n"),p.ɵɵelementStart(48,"a",16),p.ɵɵpipe(49,"i18n"),p.ɵɵtext(50,"\n "),p.ɵɵelement(51,"i",17),p.ɵɵtext(52,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(53,"\n "),p.ɵɵelementStart(54,"small"),p.ɵɵtext(55),p.ɵɵpipe(56,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(57,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(58,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(59,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(60,"\n\n "),p.ɵɵtext(61,"\n "),p.ɵɵtemplate(62,U,34,14,"ng-container",1),p.ɵɵtext(63,"\n\n "),p.ɵɵelementStart(64,"app-select",18),p.ɵɵpipe(65,"i18n"),p.ɵɵtext(66,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(67,"\n "),p.ɵɵelementContainerEnd(),p.ɵɵtext(68,"\n\n "),p.ɵɵtext(69,"\n "),p.ɵɵtemplate(70,N,73,77,"div",19),p.ɵɵtext(71,"\n\n "),p.ɵɵtext(72,"\n "),p.ɵɵtemplate(73,j,90,77,"div",19),p.ɵɵtext(74,"\n\n "),p.ɵɵelementStart(75,"button",20),p.ɵɵtext(76,"\n "),p.ɵɵelement(77,"i",21),p.ɵɵpipe(78,"i18n"),p.ɵɵtext(79,"\n "),p.ɵɵelementStart(80,"span"),p.ɵɵtext(81),p.ɵɵpipe(82,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(83,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(84,"\n "),p.ɵɵtemplate(85,z,9,7,"div",22),p.ɵɵtext(86,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("formGroup",t.ssoConfigForm)("appApiAction",t.formPromise),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(5,27,"ssoPolicyHelpStart"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,29,"ssoPolicyHelpLink")),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(10,31,"ssoPolicyHelpEnd"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(13,33,"ssoPolicyHelpKeyConnector"),"\n "),p.ɵɵadvance(6),p.ɵɵproperty("formControl",t.enabled)("label",p.ɵɵpipeBind1(19,35,"allowSso"))("helperText",p.ɵɵpipeBind1(20,37,"allowSsoDesc")),p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(26,39,"memberDecryptionOption")),p.ɵɵadvance(5),p.ɵɵproperty("value",!1),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(34,41,"masterPass"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(37,43,"memberDecryptionPassDesc")),p.ɵɵadvance(7),p.ɵɵproperty("value",!0),p.ɵɵattribute("disabled",!t.organization.useKeyConnector||null),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(47,45,"keyConnector"),"\n "),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("appA11yTitle",p.ɵɵpipeBind1(49,47,"learnMore")),p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(56,49,"memberDecryptionKeyConnectorDesc")),p.ɵɵadvance(7),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("keyConnectorEnabled").value),p.ɵɵadvance(2),p.ɵɵproperty("label",p.ɵɵpipeBind1(65,51,"type"))("selectOptions",t.ssoTypeOptions),p.ɵɵadvance(6),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("configType").value===t.ssoType.OpenIdConnect),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("configType").value===t.ssoType.Saml2),p.ɵɵadvance(2),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(78,53,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(82,55,"save")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.getErrorCount(t.ssoConfigForm))}}const L="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";class K{constructor(e,t,n,i,r,s){this.formBuilder=e,this.route=t,this.apiService=n,this.platformUtilsService=i,this.i18nService=r,this.organizationService=s,this.ssoType=a.SsoType,this.ssoTypeOptions=[{name:this.i18nService.t("selectType"),value:a.SsoType.None,disabled:!0},{name:"OpenID Connect",value:a.SsoType.OpenIdConnect},{name:"SAML 2.0",value:a.SsoType.Saml2}],this.samlSigningAlgorithms=["http://www.w3.org/2001/04/xmldsig-more#rsa-sha256","http://www.w3.org/2000/09/xmldsig#rsa-sha384","http://www.w3.org/2000/09/xmldsig#rsa-sha512","http://www.w3.org/2000/09/xmldsig#rsa-sha1"],this.saml2SigningBehaviourOptions=[{name:"If IdP Wants Authn Requests Signed",value:a.Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned},{name:"Always",value:a.Saml2SigningBehavior.Always},{name:"Never",value:a.Saml2SigningBehavior.Never}],this.saml2BindingTypeOptions=[{name:"Redirect",value:a.Saml2BindingType.HttpRedirect},{name:"HTTP POST",value:a.Saml2BindingType.HttpPost}],this.saml2NameIdFormatOptions=[{name:"Not Configured",value:a.Saml2NameIdFormat.NotConfigured},{name:"Unspecified",value:a.Saml2NameIdFormat.Unspecified},{name:"Email Address",value:a.Saml2NameIdFormat.EmailAddress},{name:"X.509 Subject Name",value:a.Saml2NameIdFormat.X509SubjectName},{name:"Windows Domain Qualified Name",value:a.Saml2NameIdFormat.WindowsDomainQualifiedName},{name:"Kerberos Principal Name",value:a.Saml2NameIdFormat.KerberosPrincipalName},{name:"Entity Identifier",value:a.Saml2NameIdFormat.EntityIdentifier},{name:"Persistent",value:a.Saml2NameIdFormat.Persistent},{name:"Transient",value:a.Saml2NameIdFormat.Transient}],this.connectRedirectOptions=[{name:"Redirect GET",value:a.OpenIdConnectRedirectBehavior.RedirectGet},{name:"Form POST",value:a.OpenIdConnectRedirectBehavior.FormPost}],this.showOpenIdCustomizations=!1,this.loading=!0,this.haveTestedKeyConnector=!1,this.enabled=this.formBuilder.control(!1),this.openIdForm=this.formBuilder.group({authority:["",o.dirtyRequired],clientId:["",o.dirtyRequired],clientSecret:["",o.dirtyRequired],metadataAddress:[],redirectBehavior:[a.OpenIdConnectRedirectBehavior.RedirectGet,o.dirtyRequired],getClaimsFromUserInfoEndpoint:[],additionalScopes:[],additionalUserIdClaimTypes:[],additionalEmailClaimTypes:[],additionalNameClaimTypes:[],acrValues:[],expectedReturnAcrValue:[]},{updateOn:"blur"}),this.samlForm=this.formBuilder.group({spNameIdFormat:[a.Saml2NameIdFormat.NotConfigured],spOutboundSigningAlgorithm:[L],spSigningBehavior:[a.Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned],spMinIncomingSigningAlgorithm:[L],spWantAssertionsSigned:[],spValidateCertificates:[],idpEntityId:["",o.dirtyRequired],idpBindingType:[a.Saml2BindingType.HttpRedirect],idpSingleSignOnServiceUrl:[],idpSingleLogoutServiceUrl:[],idpX509PublicCert:["",o.dirtyRequired],idpOutboundSigningAlgorithm:[L],idpAllowUnsolicitedAuthnResponse:[],idpAllowOutboundLogoutRequests:[!0],idpWantAuthnRequestsSigned:[]},{updateOn:"blur"}),this.ssoConfigForm=this.formBuilder.group({configType:[a.SsoType.None],keyConnectorEnabled:[!1],keyConnectorUrl:[""],openId:this.openIdForm,saml:this.samlForm})}ngOnInit(){return i(this,void 0,void 0,(function*(){this.ssoConfigForm.get("configType").valueChanges.subscribe((e=>{e===a.SsoType.OpenIdConnect?(this.openIdForm.enable(),this.samlForm.disable()):e===a.SsoType.Saml2?(this.openIdForm.disable(),this.samlForm.enable()):(this.openIdForm.disable(),this.samlForm.disable())})),this.samlForm.get("spSigningBehavior").valueChanges.subscribe((()=>this.samlForm.get("idpX509PublicCert").updateValueAndValidity())),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load()}))))}))}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId);const e=yield this.apiService.getOrganizationSso(this.organizationId);this.populateForm(e),this.callbackPath=e.urls.callbackPath,this.signedOutCallbackPath=e.urls.signedOutCallbackPath,this.spEntityId=e.urls.spEntityId,this.spMetadataUrl=e.urls.spMetadataUrl,this.spAcsUrl=e.urls.spAcsUrl,this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){if(this.validateForm(this.ssoConfigForm),this.ssoConfigForm.get("keyConnectorEnabled").value&&(yield this.validateKeyConnectorUrl()),!this.ssoConfigForm.valid)return void this.readOutErrors();const e=new c.OrganizationSsoRequest;e.enabled=this.enabled.value,e.data=l.SsoConfigApi.fromView(this.ssoConfigForm.value),this.formPromise=this.apiService.postOrganizationSso(this.organizationId,e);try{const e=yield this.formPromise;this.populateForm(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("ssoSettingsSaved"))}catch(t){}this.formPromise=null}))}validateKeyConnectorUrl(){return i(this,void 0,void 0,(function*(){if(!this.haveTestedKeyConnector){this.keyConnectorUrl.markAsPending();try{yield this.apiService.getKeyConnectorAlive(this.keyConnectorUrl.value),this.keyConnectorUrl.updateValueAndValidity()}catch(e){this.keyConnectorUrl.setErrors({invalidUrl:!0})}this.haveTestedKeyConnector=!0}}))}toggleOpenIdCustomizations(){this.showOpenIdCustomizations=!this.showOpenIdCustomizations}getErrorCount(e){return Object.values(e.controls).reduce(((e,t)=>t instanceof r.FormGroup?e+this.getErrorCount(t):null==t.errors?e:e+Object.keys(t.errors).length),0)}get enableTestKeyConnector(){var e;return this.ssoConfigForm.get("keyConnectorEnabled").value&&!s.Utils.isNullOrWhitespace(null===(e=this.keyConnectorUrl)||void 0===e?void 0:e.value)}get keyConnectorUrl(){return this.ssoConfigForm.get("keyConnectorUrl")}get samlSigningAlgorithmOptions(){return this.samlSigningAlgorithms.map((e=>({name:e,value:e})))}validateForm(e){Object.values(e.controls).forEach((e=>{e.disabled||(e instanceof r.FormGroup?this.validateForm(e):(e.markAsDirty(),e.markAsTouched(),e.updateValueAndValidity()))}))}populateForm(e){if(this.enabled.setValue(e.enabled),null!=e.data){const t=new d.SsoConfigView(e.data);this.ssoConfigForm.patchValue(t)}}readOutErrors(){const e=this.i18nService.t("error"),t=this.getErrorCount(this.ssoConfigForm),n=this.i18nService.t(1===t?"formErrorSummarySingle":"formErrorSummaryPlural",t.toString()),i=document.createElement("div");i.className="sr-only",i.id="srErrorCount",i.setAttribute("aria-live","polite"),i.innerText=e+": "+n;const r=document.getElementById("srErrorCount");null!=r&&r.remove(),document.body.append(i)}}t.SsoComponent=K,K.ɵfac=function(e){return new(e||K)(p.ɵɵdirectiveInject(u.FormBuilder),p.ɵɵdirectiveInject(m.ActivatedRoute),p.ɵɵdirectiveInject(h.ApiService),p.ɵɵdirectiveInject(v.PlatformUtilsService),p.ɵɵdirectiveInject(g.I18nService),p.ɵɵdirectiveInject(f.OrganizationService))},K.ɵcmp=p.ɵɵdefineComponent({type:K,selectors:[["app-org-manage-sso"]],decls:11,vars:5,consts:[[1,"page-header","d-flex"],[4,"ngIf"],[3,"formGroup","appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[3,"formGroup","appApiAction","ngSubmit"],["form",""],["routerLink","../policies"],["controlId","enabled",3,"formControl","label","helperText"],[1,"form-group"],[1,"form-check","form-check-block"],["type","radio","id","memberDecryptionPass","formControlName","keyConnectorEnabled",1,"form-check-input",3,"value"],["for","memberDecryptionPass",1,"form-check-label"],[1,"form-check","mt-2","form-check-block"],["type","radio","id","memberDecryptionKey","formControlName","keyConnectorEnabled",1,"form-check-input",3,"value"],["for","memberDecryptionKey",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/about-key-connector/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["controlId","type","formControlName","configType",3,"label","selectOptions"],[3,"formGroup",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["id","errorSummary","class","error-summary text-danger",4,"ngIf"],["type","warning",3,"useAlertRole"],["for","keyConnectorUrl"],[1,"text-muted","form-text","d-inline"],[1,"input-group"],["formControlName","keyConnectorUrl","id","keyConnectorUrl","aria-describedby","keyConnectorUrlDesc","appInputStripSpaces","","appA11yInvalid","",1,"form-control",3,"change"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["id","keyConnectorUrlDesc","aria-live","polite",4,"ngIf"],["id","keyConnectorUrlDesc","aria-live","polite"],["class","error-inline",4,"ngIf","ngIfElse"],["keyConnectorSuccess",""],[1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle"],[1,"text-success"],["aria-hidden","true",1,"bwi","bwi-check-circle"],[3,"formGroup"],[1,"config-section"],[1,"secondary-header"],[3,"label","controlValue"],["controlId","authority","formControlName","authority",3,"label","stripSpaces"],["controlId","clientId","formControlName","clientId",3,"label","stripSpaces"],["controlId","clientSecret","formControlName","clientSecret",3,"label","stripSpaces"],["controlId","metadataAddress","formControlName","metadataAddress",3,"label","stripSpaces","helperText"],["controlId","redirectBehavior","formControlName","redirectBehavior",3,"label","selectOptions"],["controlId","getClaimsFromUserInfoEndpoint","formControlName","getClaimsFromUserInfoEndpoint",3,"label"],[1,"section-header","d-flex","flex-row","align-items-center","mt-3","mb-3",3,"click"],["id","customizations-header",1,"mb-0","mr-2"],["type","button","appStopClick","","role","button","aria-controls","customizations","aria-labelledby","customizations-header",1,"mb-1","btn","btn-link"],["aria-hidden","true",1,"bwi",3,"ngClass"],["id","customizations",3,"hidden"],["controlId","additionalScopes","formControlName","additionalScopes",3,"label","helperText"],["controlId","additionalUserIdClaimTypes","formControlName","additionalUserIdClaimTypes",3,"label","helperText"],["controlId","additionalEmailClaimTypes","formControlName","additionalEmailClaimTypes",3,"label","helperText"],["controlId","additionalNameClaimTypes","formControlName","additionalNameClaimTypes",3,"label","helperText"],["controlId","acrValues","helperText","acr_values","formControlName","acrValues",3,"label"],["controlId","expectedReturnAcrValue","helperText","acr_validation","formControlName","expectedReturnAcrValue",3,"label"],[3,"label","controlValue","showLaunch"],["controlId","spNameIdFormat","formControlName","spNameIdFormat",3,"label","selectOptions"],["controlId","spOutboundSigningAlgorithm","formControlName","spOutboundSigningAlgorithm",3,"label","selectOptions"],["controlId","spSigningBehavior","formControlName","spSigningBehavior",3,"label","selectOptions"],["controlId","spMinIncomingSigningAlgorithm","formControlName","spMinIncomingSigningAlgorithm",3,"label","selectOptions"],["controlId","spWantAssertionsSigned","formControlName","spWantAssertionsSigned",3,"label"],["controlId","spValidateCertificates","formControlName","spValidateCertificates",3,"label"],["controlId","idpEntityId","formControlName","idpEntityId",3,"label"],["controlId","idpBindingType","formControlName","idpBindingType",3,"label","selectOptions"],["controlId","idpSingleSignOnServiceUrl","formControlName","idpSingleSignOnServiceUrl",3,"label","helperText","stripSpaces"],["controlId","idpSingleLogoutServiceUrl","formControlName","idpSingleLogoutServiceUrl",3,"label","stripSpaces"],["for","idpX509PublicCert"],["formControlName","idpX509PublicCert","rows","6","id","idpX509PublicCert","appA11yInvalid","","aria-describedby","idpX509PublicCertDesc",1,"form-control","form-control-sm","text-monospace"],["id","idpX509PublicCertDesc","class","error-inline","role","alert",4,"ngIf"],["controlId","idpOutboundSigningAlgorithm","formControlName","idpOutboundSigningAlgorithm",3,"label","selectOptions"],["controlId","idpAllowOutboundLogoutRequests","formControlName","idpAllowOutboundLogoutRequests",3,"label"],["controlId","idpWantAuthnRequestsSigned","formControlName","idpWantAuthnRequestsSigned",3,"label"],["id","idpX509PublicCertDesc","role","alert",1,"error-inline"],["id","errorSummary",1,"error-summary","text-danger"]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n\n"),p.ɵɵtemplate(7,T,9,6,"ng-container",1),p.ɵɵtext(8,"\n\n"),p.ɵɵtemplate(9,H,87,57,"form",2),p.ɵɵtext(10,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,3,"singleSignOn")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!t.loading))},directives:[y.NgIf,u.ɵNgNoValidate,u.NgControlStatusGroup,u.FormGroupDirective,x.ApiActionDirective,m.RouterLinkWithHref,S.InputCheckboxComponent,u.NgControlStatus,u.FormControlDirective,u.RadioControlValueAccessor,u.DefaultValueAccessor,u.FormControlName,b.A11yTitleDirective,w.SelectComponent,C.CalloutComponent,I.InputStripSpacesDirective,E.A11yInvalidDirective,P.InputTextReadOnlyComponent,O.InputTextComponent,k.StopClickDirective,y.NgClass],pipes:[A.I18nPipe],encapsulation:2})},62421:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(47880),a=n(70734),s=n(45231),l=n(2021),c=n(13637),d=n(19213),p=n(32621),u=(n(68012),[{path:"organizations/:organizationId",component:s.OrganizationLayoutComponent,canActivate:[r.AuthGuard,a.PermissionsGuard],children:[{path:"manage",component:l.ManageComponent,canActivate:[a.PermissionsGuard],data:{permissions:c.NavigationPermissionsService.getPermissions("manage").concat(o.Permissions.ManageSso)},children:[{path:"sso",component:d.SsoComponent}]}]}]);class m{}t.OrganizationsRoutingModule=m,m.ɵfac=function(e){return new(e||m)},m.ɵmod=p.ɵɵdefineNgModule({type:m}),m.ɵinj=p.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(u)],i.RouterModule]})},40299:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsModule=void 0;const i=n(57490),r=n(96832),o=n(44926),a=n(62421),s=n(32621);class l{}t.OrganizationsModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({imports:[[i.CommonModule,r.FormsModule,r.ReactiveFormsModule,o.JslibModule,a.OrganizationsRoutingModule]]})},64281:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisablePersonalVaultExportPolicyComponent=t.DisablePersonalVaultExportPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(99729);class l extends r.BasePolicy{constructor(){super(...arguments),this.name="disablePersonalVaultExport",this.description="disablePersonalVaultExportDesc",this.type=i.PolicyType.DisablePersonalVaultExport,this.component=c}}t.DisablePersonalVaultExportPolicy=l;class c extends r.BasePolicyComponent{}t.DisablePersonalVaultExportPolicyComponent=c,c.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(c)))(t||c)}}(),c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["policy-disable-personal-vault-export"]],features:[o.ɵɵInheritDefinitionFeature],decls:12,vars:4,consts:[[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,2,"enabled")))},directives:[a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective],pipes:[s.I18nPipe],encapsulation:2})},47075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MaximumVaultTimeoutPolicyComponent=t.MaximumVaultTimeoutPolicy=void 0;n(96832),n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51554),l=n(51626),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="maximumVaultTimeout",this.description="maximumVaultTimeoutDesc",this.type=i.PolicyType.MaximumVaultTimeout,this.component=p}}t.MaximumVaultTimeoutPolicy=d;class p extends r.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.i18nService=t,this.data=this.formBuilder.group({hours:[null],minutes:[null]})}loadData(){var e;const t=null===(e=this.policyResponse.data)||void 0===e?void 0:e.minutes;null!=t&&this.data.patchValue({hours:Math.floor(t/60),minutes:t%60})}buildRequestData(){return null==this.data.value.hours&&null==this.data.value.minutes?null:{minutes:60*this.data.value.hours+this.data.value.minutes}}buildRequest(e){var t;const n=null!==(t=e.get(i.PolicyType.SingleOrg))&&void 0!==t&&t;if(this.enabled.value&&!n)throw new Error(this.i18nService.t("requireSsoPolicyReqError"));const r=this.buildRequestData();if(null==(null==r?void 0:r.minutes)||(null==r?void 0:r.minutes)<=0)throw new Error(this.i18nService.t("invalidMaximumVaultTimeout"));return super.buildRequest(e)}}t.MaximumVaultTimeoutPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.FormBuilder),o.ɵɵdirectiveInject(s.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-maximum-timeout"]],features:[o.ɵɵInheritDefinitionFeature],decls:48,vars:20,consts:[["type","tip",3,"title"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],["for","hours"],[1,"row"],[1,"col-6"],["id","hours","type","number","min","0","name","hours","formControlName","hours",1,"form-control"],["id","minutes","type","number","min","0","max","59","name","minutes","formControlName","minutes",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n\n"),o.ɵɵelementStart(5,"div",1),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",2),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"input",3),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"label",4),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n\n"),o.ɵɵelementStart(17,"div",5),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",1),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",6),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"div",7),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"div",8),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"input",9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"small"),o.ɵɵtext(32),o.ɵɵpipe(33,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",8),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"input",10),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"small"),o.ɵɵtext(41),o.ɵɵpipe(42,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n")),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,8,"prerequisite")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,10,"requireSsoPolicyReq"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,12,"enabled")),o.ɵɵadvance(5),o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,14,"maximumVaultTimeoutLabel")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(33,16,"hours")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(42,18,"minutes")))},directives:[l.CalloutComponent,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.NgControlStatusGroup,a.FormGroupDirective,a.MinValidator,a.NumberValueAccessor,a.DefaultValueAccessor,a.FormControlName,a.MaxValidator],pipes:[c.I18nPipe],encapsulation:2})},32656:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddOrganizationComponent=void 0;const r=n(32621),o=(n(47594),n(51554),n(73828),n(68291),n(49003),n(32621)),a=n(68291),s=n(49003),l=n(51554),c=n(73828),d=n(47594),p=n(8863),u=n(57490),m=n(15370),h=n(99729);function v(e,t){1&e&&(o.ɵɵelementStart(0,"div",10),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",11),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(5,4,"loading"),"\n "))}function g(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",14),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-avatar",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"td"),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",16),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).add(t)})),o.ɵɵtext(13,"\n Add\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("data",e.name)("circle",!0)("fontSize",14),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",e.name,"\n "),o.ɵɵadvance(4),o.ɵɵproperty("disabled",n.formPromise)}}function f(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"table",12),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,g,16,5,"tr",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.organizations)}}class y{constructor(e,t,n,i,o){this.providerService=e,this.webProviderService=t,this.i18nService=n,this.platformUtilsService=i,this.validationService=o,this.onAddedOrganization=new r.EventEmitter,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){null!=this.providerId&&(this.provider=yield this.providerService.get(this.providerId),this.loading=!1)}))}add(e){return i(this,void 0,void 0,(function*(){if(this.formPromise)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("addOrganizationConfirmation",e.name,this.provider.name),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.formPromise=this.webProviderService.addOrganizationToProvider(this.providerId,e.id),yield this.formPromise}catch(t){return void this.validationService.showError(t)}finally{this.formPromise=null}this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationJoinedProvider")),this.onAddedOrganization.emit()}))}}t.AddOrganizationComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.ProviderService),o.ɵɵdirectiveInject(s.WebProviderService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.ValidationService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["provider-add-organization"]],inputs:{providerId:"providerId",organizations:"organizations"},outputs:{onAddedOrganization:"onAddedOrganization"},decls:30,vars:8,consts:[["role","dialog","aria-modal","true","aria-labelledby","addTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content"],[1,"modal-header"],["id","addTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],[4,"ngIf"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],[1,"btn","btn-outline-secondary","pull-right",3,"disabled","click"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"h2",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",5),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",6),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",7),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,v,6,6,"div",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,f,7,1,"ng-container",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n")),2&e&&(o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(10,4,"addExistingOrganization"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,6,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading))},directives:[p.A11yTitleDirective,u.NgIf,u.NgForOf,m.AvatarComponent],pipes:[h.I18nPipe],encapsulation:2})},29063:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ClientsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(47594),n(91674),n(51554),n(36631),n(63513),n(73828),n(68291),n(60421),n(47937)),s=n(30185),l=(n(49003),n(32656)),c=n(32621),d=n(68012),p=n(68291),u=n(91674),m=n(60421),h=n(73828),v=n(51554),g=n(47594),f=n(49003),y=n(36631),x=n(64684),S=n(63513),b=n(96832),w=n(57490),C=n(15370),I=n(8863),E=n(1142),P=n(99729),O=n(50154),k=["add"];function A(e,t){1&e&&(c.ɵɵelementStart(0,"a",8),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"newClientOrganization"),"\n "))}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",10),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().addExistingOrganization()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"addExistingOrganization"),"\n "))}function M(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",11),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",12),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function B(e,t){1&e&&(c.ɵɵelementStart(0,"p"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"noClientsInList")))}function D(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",19),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",20),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"button",21),c.ɵɵpipe(5,"i18n"),c.ɵɵtext(6,"\n "),c.ɵɵelement(7,"i",22),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",23),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"a",24),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(3).remove(t)})),c.ɵɵtext(13,"\n "),c.ɵɵelement(14,"i",25),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(5,2,"options")),c.ɵɵadvance(11),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(16,4,"remove"),"\n "))}const R=function(e){return["/organizations",e]};function F(e,t){if(1&e&&(c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",15),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"app-avatar",16),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td"),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"a",17),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵtemplate(13,D,20,6,"td",18),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit,n=c.ɵɵnextContext(3);c.ɵɵadvance(4),c.ɵɵproperty("data",e.organizationName)("circle",!0)("fontSize",14),c.ɵɵadvance(5),c.ɵɵproperty("routerLink",c.ɵɵpureFunction1(6,R,e.organizationId)),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.organizationName),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",n.manageOrganizations)}}function U(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"table",13),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tbody"),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,F,15,8,"tr",14),c.ɵɵtext(7,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function V(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,3,3,"p",6),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,U,10,3,"ng-container",6),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}function N(e,t){}const _=[a.PlanType.Free,a.PlanType.FamiliesAnnually2019,a.PlanType.FamiliesAnnually];class j{constructor(e,t,n,i,r,o,a,s,l,c,d){this.route=e,this.providerService=t,this.apiService=n,this.searchService=i,this.platformUtilsService=r,this.i18nService=o,this.validationService=a,this.webProviderService=s,this.logService=l,this.modalService=c,this.organizationService=d,this.loading=!0,this.manageOrganizations=!1,this.showAddExisting=!1,this.didScroll=!1,this.pageSize=100,this.pagedClientsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))}))))}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getProviderClients(this.providerId);this.clients=null!=e.data&&e.data.length>0?e.data:[],this.manageOrganizations=(yield this.providerService.get(this.providerId)).type===s.ProviderUserType.ProviderAdmin;const t=(yield this.organizationService.getAll()).filter((e=>e.isOwner&&null==e.providerId)),n=yield Promise.all(t.map((e=>this.apiService.getOrganization(e.id)))).then((e=>e.filter((e=>!_.includes(e.planType))).map((e=>e.id))));this.addableOrganizations=t.filter((e=>n.includes(e.id))),this.showAddExisting=0!==this.addableOrganizations.length,this.loading=!1}))}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.clients&&this.clients.length>this.pageSize}isSearching(){return this.searchService.isSearchable(this.searchText)}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedClients=[],this.loadMore()}))}loadMore(){if(!this.clients||this.clients.length<=this.pageSize)return;const e=this.pagedClients.length;let t=this.pageSize;0===e&&this.pagedClientsCount>this.pageSize&&(t=this.pagedClientsCount),this.clients.length>e&&(this.pagedClients=this.pagedClients.concat(this.clients.slice(e,e+t))),this.pagedClientsCount=this.pagedClients.length,this.didScroll=this.pagedClients.length>this.pageSize}addExistingOrganization(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(l.AddOrganizationComponent,this.addModalRef,(t=>{t.providerId=this.providerId,t.organizations=this.addableOrganizations,t.onAddedOrganization.subscribe((()=>i(this,void 0,void 0,(function*(){try{yield this.load(),e.close()}catch(t){this.logService.error(`Handled exception: ${t}`)}}))))}))}))}remove(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("detachOrganizationConfirmation"),e.organizationName,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;this.actionPromise=this.webProviderService.detachOrganizastion(this.providerId,e.id);try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("detachedOrganization",e.organizationName)),yield this.load()}catch(t){this.validationService.showError(t)}this.actionPromise=null}))}}t.ClientsComponent=j,j.ɵfac=function(e){return new(e||j)(c.ɵɵdirectiveInject(d.ActivatedRoute),c.ɵɵdirectiveInject(p.ProviderService),c.ɵɵdirectiveInject(u.ApiService),c.ɵɵdirectiveInject(m.SearchService),c.ɵɵdirectiveInject(h.PlatformUtilsService),c.ɵɵdirectiveInject(v.I18nService),c.ɵɵdirectiveInject(g.ValidationService),c.ɵɵdirectiveInject(f.WebProviderService),c.ɵɵdirectiveInject(y.LogService),c.ɵɵdirectiveInject(x.ModalService),c.ɵɵdirectiveInject(S.OrganizationService))},j.ɵcmp=c.ɵɵdefineComponent({type:j,selectors:[["ng-component"]],viewQuery:function(e,t){if(1&e&&c.ɵɵviewQuery(k,7,r.ViewContainerRef),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.addModalRef=e.first)}},decls:32,vars:19,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["class","btn btn-sm btn-outline-primary ml-3","routerLink","create",4,"ngIf"],["class","btn btn-sm btn-outline-primary ml-3",3,"click",4,"ngIf"],[4,"ngIf"],["add",""],["routerLink","create",1,"btn","btn-sm","btn-outline-primary","ml-3"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],[3,"routerLink"],["class","table-list-options",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n\n "),c.ɵɵelementStart(6,"div",1),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div"),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",2),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",3),c.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,A,5,3,"a",4),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,T,5,3,"button",5),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n\n"),c.ɵɵtemplate(24,M,9,6,"ng-container",6),c.ɵɵtext(25,"\n\n"),c.ɵɵtemplate(26,V,6,2,"ng-container",6),c.ɵɵpipe(27,"search"),c.ɵɵtext(28,"\n\n"),c.ɵɵtemplate(29,N,0,0,"ng-template",null,7,c.ɵɵtemplateRefExtractor),c.ɵɵtext(31,"\n")),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,8,"clients")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,10,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(15,12,"search")),c.ɵɵproperty("ngModel",t.searchText),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.manageOrganizations),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.manageOrganizations&&t.showAddExisting),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&c.ɵɵpipeBind4(27,14,t.clients,t.searchText,"organizationName","id")))},directives:[b.DefaultValueAccessor,b.NgControlStatus,b.NgModel,w.NgIf,d.RouterLinkWithHref,w.NgForOf,C.AvatarComponent,I.A11yTitleDirective,E.StopClickDirective],pipes:[P.I18nPipe,O.SearchPipe],encapsulation:2})},53402:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CreateOrganizationComponent=void 0;n(68012);const r=n(28360),o=n(32621),a=n(68012),s=n(28360),l=n(99729);class c{constructor(e){this.route=e}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId}))))}}t.CreateOrganizationComponent=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵdirectiveInject(a.ActivatedRoute))},c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["app-create-organization"]],viewQuery:function(e,t){if(1&e&&o.ɵɵviewQuery(r.OrganizationPlansComponent,7),2&e){let e;o.ɵɵqueryRefresh(e=o.ɵɵloadQuery())&&(t.orgPlansComponent=e.first)}},decls:13,vars:7,consts:[[1,"page-header"],[3,"providerId"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelement(11,"app-organization-plans",1),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newClientOrganization")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,5,"newClientOrganizationDesc")),o.ɵɵadvance(3),o.ɵɵproperty("providerId",t.providerId))},directives:[s.OrganizationPlansComponent],pipes:[l.I18nPipe],encapsulation:2})},82074:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsGuard=void 0;n(68012),n(68291);const r=n(47880),o=n(32621),a=n(68291),s=n(68012);class l{constructor(e,t){this.providerService=e,this.router=t}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.providerService.get(e.params.providerId),n=null==e.data?null:e.data.permissions;return!!(-1!==n.indexOf(r.Permissions.AccessEventLogs)&&t.canAccessEventLogs||-1!==n.indexOf(r.Permissions.ManageProvider)&&t.isProviderAdmin||-1!==n.indexOf(r.Permissions.ManageUsers)&&t.canManageUsers)||(this.router.navigate(["/providers",t.id]),!1)}))}}t.PermissionsGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.ProviderService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},60261:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderGuard=void 0;n(68012),n(51554),n(73828),n(68291);const r=n(32621),o=n(68012),a=n(73828),s=n(51554),l=n(68291);class c{constructor(e,t,n,i){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.providerService=i}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.providerService.get(e.params.providerId);return null==t?(this.router.navigate(["/"]),!1):!(!t.isProviderAdmin&&!t.enabled)||(this.platformUtilsService.showToast("error",null,this.i18nService.t("providerIsDisabled")),this.router.navigate(["/"]),!1)}))}}t.ProviderGuard=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵinject(o.Router),r.ɵɵinject(a.PlatformUtilsService),r.ɵɵinject(s.I18nService),r.ɵɵinject(l.ProviderService))},c.ɵprov=r.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},34221:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptProviderComponent=void 0;n(68012),n(91674),n(51554),n(73828),n(73569);const r=n(82900),o=n(50009),a=n(32621),s=n(68012),l=n(51554),c=n(73569),d=n(91674),p=n(73828),u=n(57490),m=n(99729);function h(e,t){1&e&&(a.ɵɵelementStart(0,"div",2),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",3),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",4),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",5),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",6),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))}const v=function(e){return{email:e}};function g(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",8),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",9),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",10),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",11),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",12),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"p",4),a.ɵɵtext(15),a.ɵɵelementStart(16,"strong",13),a.ɵɵtext(17),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"p"),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelement(24,"hr"),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"div",14),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"a",15),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"a",16),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,8,"joinProvider")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",e.providerName,"\n "),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.email),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,10,"joinProviderDesc")),a.ɵɵadvance(7),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(16,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,12,"logIn"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(18,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(34,14,"createAccount"),"\n ")}}class f extends o.BaseAcceptComponent{constructor(e,t,n,i,r,o){super(e,o,t,n,i),this.apiService=r,this.failedMessage="providerInviteAcceptFailed",this.requiredParameters=["providerId","providerUserId","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new r.ProviderUserAcceptRequest;t.token=e.token,yield this.apiService.postProviderUserAccept(e.providerId,e.providerUserId,t),this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("providerInviteAcceptedDesc"),{timeout:1e4}),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.providerName=e.providerName}))}}t.AcceptProviderComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(c.StateService),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.PlatformUtilsService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["app-accept-provider"]],features:[a.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-block","mt-2"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,h,17,6,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,g,41,20,"div",1),a.ɵɵtext(3,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[u.NgIf,s.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},48620:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkConfirmComponent=void 0;const r=n(72418),o=n(64279),a=n(69316),s=n(61692),l=n(32621),c=n(8863),d=n(57490),p=n(51626),u=n(15370),m=n(99729),h=n(52080);function v(e,t){1&e&&(l.ɵɵelementStart(0,"div",15),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,4,"loading"),"\n "))}function g(e,t){1&e&&(l.ɵɵelementStart(0,"app-callout",17),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function f(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function y(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,y,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",n.fingerprints.get(e.id),"\n ")}}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,S,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵpipe(16,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(16,9,"bulkFilteredMessage"),"\n ")}}function w(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementStart(5,"a",19),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"table",20),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"thead"),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"tr"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"th",21),l.ɵɵtext(17),l.ɵɵpipe(18,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"th"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,x,17,9,"tr",22),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,b,18,11,"tr",22),l.ɵɵtext(29,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,6,"fingerprintEnsureIntegrityVerify"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(7,8,"learnMore"),""),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(18,10,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,12,"fingerprint")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.excludedUsers)}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit,t=l.ɵɵnextContext(2);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function E(e,t){1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,C,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵtemplate(14,I,2,1,"td",11),l.ɵɵtext(15,"\n "),l.ɵɵtemplate(16,E,3,3,"td",11),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",n.statuses.has(e.id)),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function O(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"table",20),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"thead"),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"tr"),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"th",21),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"th"),l.ɵɵtext(13),l.ɵɵpipe(14,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵtemplate(18,P,18,10,"tr",22),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,3,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(14,5,"status")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers)}}function k(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span"),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,3,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,5,"confirm"))}}class A extends s.BulkConfirmComponent{isAccepted(e){return e.status===r.ProviderUserStatusType.Accepted}getPublicKeys(){return i(this,void 0,void 0,(function*(){const e=new a.ProviderUserBulkRequest(this.filteredUsers.map((e=>e.id)));return yield this.apiService.postProviderUsersPublicKey(this.providerId,e)}))}getCryptoKey(){return this.cryptoService.getProviderKey(this.providerId)}postConfirmRequest(e){return i(this,void 0,void 0,(function*(){const t=new o.ProviderUserBulkConfirmRequest(e);return yield this.apiService.postProviderUserBulkConfirm(this.providerId,t)}))}}t.BulkConfirmComponent=A,A.ɵfac=function(){let e;return function(t){return(e||(e=l.ɵɵgetInheritedFactory(A)))(t||A)}}(),A.ɵcmp=l.ɵɵdefineComponent({type:A,selectors:[["ng-component"]],inputs:{providerId:"providerId"},features:[l.ɵɵInheritDefinitionFeature],decls:45,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","danger"],["type","error"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",5),l.ɵɵpipe(13,"i18n"),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"span",6),l.ɵɵtext(16,"×"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",7),l.ɵɵtext(21,"\n "),l.ɵɵtemplate(22,v,6,6,"div",8),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,g,3,3,"app-callout",9),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,f,2,1,"app-callout",10),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,w,31,14,"ng-container",11),l.ɵɵtext(29,"\n "),l.ɵɵtemplate(30,O,21,7,"ng-container",11),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",12),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,k,9,7,"button",13),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"button",14),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,9,"confirmUsers"),"\n "),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(13,11,"close")),l.ɵɵadvance(10),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.filteredUsers.length<=0),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.error),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.done),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&t.done),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",!t.done),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(39,13,"close"),"\n "))},directives:[c.A11yTitleDirective,d.NgIf,p.CalloutComponent,d.NgForOf,u.AvatarComponent],pipes:[m.I18nPipe,h.UserNamePipe],encapsulation:2})},48382:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRemoveComponent=void 0;const r=n(69316),o=n(37131),a=n(32621),s=n(8863),l=n(57490),c=n(51626),d=n(15370),p=n(99729),u=n(52080);function m(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",14),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"app-callout",15),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function v(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",20),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"removeUsersWarning"),"\n "))}function g(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",24),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}function f(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"app-avatar",22),a.ɵɵpipe(5,"userName"),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"td"),a.ɵɵtext(10),a.ɵɵtemplate(11,g,2,1,"small",23),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵadvance(4),a.ɵɵproperty("data",a.ɵɵpipeBind1(5,6,e))("email",e.email)("circle",!0)("fontSize",14),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",e.email,"\n "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.name)}}function y(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,v,3,3,"app-callout",16),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"table",17),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"thead"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"tr"),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"th",18),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,f,14,8,"tr",19),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.users.length>0&&!e.error),a.ɵɵadvance(9),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,3,"user")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",e.users)}}function x(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",24),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(2);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function b(e,t){1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"app-avatar",22),a.ɵɵpipe(5,"userName"),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"td"),a.ɵɵtext(10),a.ɵɵtemplate(11,x,2,1,"small",23),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,S,2,1,"td",10),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,b,3,3,"td",10),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("data",a.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",e.email,"\n "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.name),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",n.statuses.has(e.id)),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function C(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"table",17),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"thead"),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"tr"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"th",18),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"th"),a.ɵɵtext(13),a.ɵɵpipe(14,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵtemplate(18,w,18,10,"tr",19),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(9),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,3,"user")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(14,5,"status")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",e.users)}}function I(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",25),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",26),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span"),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,5,"removeUsers"))}}class E extends o.BulkRemoveComponent{deleteUsers(){return i(this,void 0,void 0,(function*(){const e=new r.ProviderUserBulkRequest(this.users.map((e=>e.id)));return yield this.apiService.deleteManyProviderUsers(this.providerId,e)}))}}t.BulkRemoveComponent=E,E.ɵfac=function(){let e;return function(t){return(e||(e=a.ɵɵgetInheritedFactory(E)))(t||E)}}(),E.ɵcmp=a.ɵɵdefineComponent({type:E,selectors:[["ng-component"]],inputs:{providerId:"providerId"},features:[a.ɵɵInheritDefinitionFeature],decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","danger"],["type","error"],["type","warning",4,"ngIf"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["type","warning"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",2),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",3),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"h2",4),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"button",5),a.ɵɵpipe(13,"i18n"),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"span",6),a.ɵɵtext(16,"×"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"div",7),a.ɵɵtext(21,"\n "),a.ɵɵtemplate(22,m,3,3,"app-callout",8),a.ɵɵtext(23,"\n "),a.ɵɵtemplate(24,h,2,1,"app-callout",9),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,y,19,5,"ng-container",10),a.ɵɵtext(27,"\n "),a.ɵɵtemplate(28,C,21,7,"ng-container",10),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",11),a.ɵɵtext(32,"\n "),a.ɵɵtemplate(33,I,9,7,"button",12),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"button",13),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n")),2&e&&(a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(10,8,"removeUsers"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(13,10,"close")),a.ɵɵadvance(10),a.ɵɵproperty("ngIf",t.users.length<=0),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.error),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.done),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.done),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!t.done&&t.users.length>0),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(37,12,"close"),"\n "))},directives:[s.A11yTitleDirective,l.NgIf,c.CalloutComponent,l.NgForOf,d.AvatarComponent],pipes:[p.I18nPipe,u.UserNamePipe],encapsulation:2})},42378:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventsComponent=void 0;n(68012),n(52080),n(91674),n(97445),n(51554),n(36631),n(73828),n(68291);const r=n(75512),o=(n(3202),n(32621)),a=n(91674),s=n(68012),l=n(3202),c=n(51554),d=n(68291),p=n(97445),u=n(73828),m=n(36631),h=n(52080),v=n(96832),g=n(56820),f=n(57490),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",17),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noEventsInList")))}function b(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td"),o.ɵɵtext(3),o.ɵɵpipe(4,"date"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"td"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",26),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"span",17),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"td"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",27),o.ɵɵtext(17),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelement(20,"td",28),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(4,11,e.date,"medium")),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),o.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",e.userEmail),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.userName),o.ɵɵadvance(3),o.ɵɵproperty("innerHTML",e.message,o.ɵɵsanitizeHtml)}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"thead"),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"tr"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"th",21),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",22),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"span",17),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"th",23),o.ɵɵtext(18),o.ɵɵpipe(19,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"th",24),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"tbody"),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,b,22,14,"tr",25),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"timestamp")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"device")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(19,9,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"event")),o.ɵɵadvance(7),o.ɵɵproperty("ngForOf",e.events)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",29,30),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).loadEvents(!1)})),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",31),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"span"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(4,4,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"loadMore"))}}function I(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,S,3,3,"p",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,w,32,13,"table",18),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,C,10,8,"button",19),o.ɵɵtext(7,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.events||!e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.events&&e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.continuationToken)}}const E=function(e){return{"bwi-spin":e}},P=function(e){return{loading:e}};class O extends r.BaseEventsComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(n,i,o,a,l),this.apiService=e,this.route=t,this.providerService=r,this.router=s,this.userNamePipe=c,this.exportFileName="provider-events",this.providerUsersUserIdMap=new Map,this.providerUsersIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;const t=yield this.providerService.get(this.providerId);null!=t&&t.useEvents?yield this.load():this.router.navigate(["/providers",this.providerId])}))))}))}load(){return i(this,void 0,void 0,(function*(){(yield this.apiService.getProviderUsers(this.providerId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.providerUsersIdMap.set(e.id,{name:t,email:e.email}),this.providerUsersUserIdMap.set(e.userId,{name:t,email:e.email})})),yield this.loadEvents(!0),this.loaded=!0}))}requestEvents(e,t,n){return this.apiService.getEventsProvider(this.providerId,e,t,n)}getUserName(e,t){return null!=t&&this.providerUsersUserIdMap.has(t)?this.providerUsersUserIdMap.get(t):null}}t.EventsComponent=O,O.ɵfac=function(e){return new(e||O)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.ActivatedRoute),o.ɵɵdirectiveInject(l.EventService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.ProviderService),o.ɵɵdirectiveInject(p.ExportService),o.ɵɵdirectiveInject(u.PlatformUtilsService),o.ɵɵdirectiveInject(s.Router),o.ɵɵdirectiveInject(m.LogService),o.ɵɵdirectiveInject(h.UserNamePipe))},O.ɵcmp=o.ɵɵdefineComponent({type:O,selectors:[["provider-events"]],features:[o.ɵɵInheritDefinitionFeature],decls:57,vars:35,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"d-inline",3,"appApiAction"],["refreshForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["exportForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","btn-submit","manual","ml-3",3,"ngClass","disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["width","150",1,"border-top-0"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["aria-hidden","true",3,"title"],[3,"title"],[3,"innerHTML"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",1),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",2),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",3),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",4),o.ɵɵlistener("ngModelChange",(function(e){return t.start=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"span",5),o.ɵɵtext(18,"-"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"label",6),o.ɵɵtext(21),o.ɵɵpipe(22,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"input",7),o.ɵɵlistener("ngModelChange",(function(e){return t.end=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"form",8,9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"button",10),o.ɵɵlistener("click",(function(){return t.loadEvents(!0)})),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",11),o.ɵɵtext(34),o.ɵɵpipe(35,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"form",8,12),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",13),o.ɵɵlistener("click",(function(){return t.exportEvents()})),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",14),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵtemplate(53,x,9,6,"ng-container",15),o.ɵɵtext(54,"\n"),o.ɵɵtemplate(55,I,8,3,"ng-container",15),o.ɵɵtext(56,"\n")),2&e){const e=o.ɵɵreference(29),n=o.ɵɵreference(39);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"eventLogs")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,19,"startDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(15,21,"startDate")),o.ɵɵproperty("ngModel",t.start),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(22,23,"endDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(25,25,"endDate")),o.ɵɵproperty("ngModel",t.end),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.refreshPromise),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loaded&&e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(31,E,t.loaded&&e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(35,27,"refresh"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.exportPromise),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(33,P,n.loading))("disabled",t.loaded&&n.loading||t.dirtyDates),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"export")),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded)}},directives:[v.DefaultValueAccessor,v.NgControlStatus,v.NgModel,v.ɵNgNoValidate,v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.NgClass,f.NgIf,f.NgForOf],pipes:[y.I18nPipe,f.DatePipe],encapsulation:2})},13346:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ManageComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(57490),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementStart(0,"a",10),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"people"),"\n "))}function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",11),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"eventLogs"),"\n "))}function p(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",5),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",6),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",7),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,3,3,"a",8),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,d,3,3,"a",9),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"manage")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.provider.canManageUsers),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.provider.canAccessEventLogs&&e.accessEvents)}}class u{constructor(e,t){this.route=e,this.providerService=t,this.accessEvents=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.provider=yield this.providerService.get(e.providerId),this.accessEvents=this.provider.useEvents}))))}}t.ManageComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["provider-manage"]],decls:16,vars:1,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","people","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","events","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","people","routerLinkActive","active",1,"list-group-item"],["routerLink","events","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,p,13,5,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelement(11,"router-outlet"),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(6),r.ɵɵproperty("ngIf",t.provider))},directives:[s.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[l.I18nPipe],encapsulation:2})},71601:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PeopleComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(73828),n(68291),n(60421),n(73569),n(72418)),s=n(30185),l=n(69316),c=n(98407),d=n(1833),p=n(33747),u=n(87876),m=n(48620),h=n(48382),v=n(20913),g=n(32621),f=n(91674),y=n(68012),x=n(51554),S=n(64684),b=n(73828),w=n(85714),C=n(60421),I=n(47594),E=n(36631),P=n(50154),O=n(52080),k=n(73569),A=n(68291),T=n(57490),M=n(96832),B=n(8863),D=n(1142),R=n(51626),F=n(39159),U=n(15370),V=n(99729),N=n(50154),_=n(52080),j=["addEdit"],z=["groupsTemplate"],H=["eventsTemplate"],L=["bulkStatusTemplate"],K=["bulkConfirmTemplate"],q=["bulkRemoveTemplate"];function G(e,t){if(1&e&&(g.ɵɵelementStart(0,"span",30),g.ɵɵtext(1),g.ɵɵelementEnd()),2&e){const e=g.ɵɵnextContext();g.ɵɵadvance(1),g.ɵɵtextInterpolate(e.allCount)}}function W(e,t){if(1&e&&(g.ɵɵelementStart(0,"span",30),g.ɵɵtext(1),g.ɵɵelementEnd()),2&e){const e=g.ɵɵnextContext();g.ɵɵadvance(1),g.ɵɵtextInterpolate(e.invitedCount)}}function $(e,t){if(1&e&&(g.ɵɵelementStart(0,"span",31),g.ɵɵtext(1),g.ɵɵelementEnd()),2&e){const e=g.ɵɵnextContext();g.ɵɵadvance(1),g.ɵɵtextInterpolate(e.acceptedCount)}}function Y(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"button",32),g.ɵɵlistener("click",(function(){g.ɵɵrestoreView(e);return g.ɵɵnextContext().bulkConfirm()})),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",33),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd()}2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(4,1,"confirmSelected"),"\n "))}function Q(e,t){1&e&&(g.ɵɵelementContainerStart(0),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",34),g.ɵɵpipe(3,"i18n"),g.ɵɵtext(4,"\n "),g.ɵɵelementStart(5,"span",35),g.ɵɵtext(6),g.ɵɵpipe(7,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(8,"\n"),g.ɵɵelementContainerEnd()),2&e&&(g.ɵɵadvance(2),g.ɵɵpropertyInterpolate("title",g.ɵɵpipeBind1(3,2,"loading")),g.ɵɵadvance(4),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(7,4,"loading")))}function J(e,t){1&e&&(g.ɵɵelementStart(0,"p"),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"noUsersInList")))}function Z(e,t){1&e&&(g.ɵɵelementStart(0,"app-callout",39),g.ɵɵpipe(1,"i18n"),g.ɵɵtext(2),g.ɵɵpipe(3,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵpropertyInterpolate("title",g.ɵɵpipeBind1(1,2,"confirmUsers")),g.ɵɵadvance(2),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(3,4,"providerUsersNeedConfirmed"),"\n "))}function X(e,t){1&e&&(g.ɵɵelementStart(0,"span",56),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"invited")))}function ee(e,t){1&e&&(g.ɵɵelementStart(0,"span",57),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"accepted")))}function te(e,t){if(1&e&&(g.ɵɵelementStart(0,"small",58),g.ɵɵtext(1),g.ɵɵelementEnd()),2&e){const e=g.ɵɵnextContext().$implicit;g.ɵɵadvance(1),g.ɵɵtextInterpolate(e.name)}}function ne(e,t){1&e&&(g.ɵɵelementContainerStart(0),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",59),g.ɵɵpipe(3,"i18n"),g.ɵɵtext(4,"\n "),g.ɵɵelementStart(5,"span",35),g.ɵɵtext(6),g.ɵɵpipe(7,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(8,"\n "),g.ɵɵelementContainerEnd()),2&e&&(g.ɵɵadvance(2),g.ɵɵpropertyInterpolate("title",g.ɵɵpipeBind1(3,2,"userUsingTwoStep")),g.ɵɵadvance(4),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(7,4,"userUsingTwoStep")))}function ie(e,t){1&e&&(g.ɵɵelementStart(0,"span"),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"providerAdmin")))}function re(e,t){1&e&&(g.ɵɵelementStart(0,"span"),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"serviceUser")))}function oe(e,t){1&e&&(g.ɵɵelementStart(0,"span"),g.ɵɵtext(1),g.ɵɵpipe(2,"i18n"),g.ɵɵelementEnd()),2&e&&(g.ɵɵadvance(1),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(2,1,"custom")))}function ae(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"a",60),g.ɵɵlistener("click",(function(){g.ɵɵrestoreView(e);const t=g.ɵɵnextContext().$implicit;return g.ɵɵnextContext(3).reinvite(t)})),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",14),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd()}2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function se(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"a",61),g.ɵɵlistener("click",(function(){g.ɵɵrestoreView(e);const t=g.ɵɵnextContext().$implicit;return g.ɵɵnextContext(3).confirm(t)})),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",33),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd()}2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function le(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"a",60),g.ɵɵlistener("click",(function(){g.ɵɵrestoreView(e);const t=g.ɵɵnextContext().$implicit;return g.ɵɵnextContext(3).groups(t)})),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",62),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd()}2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(4,1,"groups"),"\n "))}function ce(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"a",60),g.ɵɵlistener("click",(function(){g.ɵɵrestoreView(e);const t=g.ɵɵnextContext().$implicit;return g.ɵɵnextContext(3).events(t)})),g.ɵɵtext(1,"\n "),g.ɵɵelement(2,"i",63),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd()}2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function de(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementStart(0,"tr"),g.ɵɵtext(1,"\n "),g.ɵɵelementStart(2,"td",40),g.ɵɵlistener("click",(function(){const t=g.ɵɵrestoreView(e).$implicit;return g.ɵɵnextContext(3).checkUser(t)})),g.ɵɵtext(3,"\n "),g.ɵɵelementStart(4,"input",41),g.ɵɵlistener("ngModelChange",(function(t){return g.ɵɵrestoreView(e).$implicit.checked=t})),g.ɵɵelementEnd(),g.ɵɵtext(5,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(6,"\n "),g.ɵɵelementStart(7,"td",42),g.ɵɵtext(8,"\n "),g.ɵɵelementStart(9,"app-avatar",43),g.ɵɵpipe(10,"userName"),g.ɵɵtext(11,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(12,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(13,"\n "),g.ɵɵelementStart(14,"td"),g.ɵɵtext(15,"\n "),g.ɵɵelementStart(16,"a",44),g.ɵɵlistener("click",(function(){const t=g.ɵɵrestoreView(e).$implicit;return g.ɵɵnextContext(3).edit(t)})),g.ɵɵtext(17),g.ɵɵelementEnd(),g.ɵɵtext(18,"\n "),g.ɵɵtemplate(19,X,3,3,"span",45),g.ɵɵtext(20,"\n "),g.ɵɵtemplate(21,ee,3,3,"span",46),g.ɵɵtext(22,"\n "),g.ɵɵtemplate(23,te,2,1,"small",47),g.ɵɵtext(24,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(25,"\n "),g.ɵɵelementStart(26,"td"),g.ɵɵtext(27,"\n "),g.ɵɵtemplate(28,ne,9,6,"ng-container",23),g.ɵɵtext(29,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(30,"\n "),g.ɵɵelementStart(31,"td"),g.ɵɵtext(32,"\n "),g.ɵɵtemplate(33,ie,3,3,"span",23),g.ɵɵtext(34,"\n "),g.ɵɵtemplate(35,re,3,3,"span",23),g.ɵɵtext(36,"\n "),g.ɵɵtemplate(37,oe,3,3,"span",23),g.ɵɵtext(38,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(39,"\n "),g.ɵɵelementStart(40,"td",48),g.ɵɵtext(41,"\n "),g.ɵɵelementStart(42,"div",49),g.ɵɵtext(43,"\n "),g.ɵɵelementStart(44,"button",50),g.ɵɵpipe(45,"i18n"),g.ɵɵtext(46,"\n "),g.ɵɵelement(47,"i",51),g.ɵɵtext(48,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(49,"\n "),g.ɵɵelementStart(50,"div",52),g.ɵɵtext(51,"\n "),g.ɵɵtemplate(52,ae,5,3,"a",53),g.ɵɵtext(53,"\n "),g.ɵɵtemplate(54,se,5,3,"a",54),g.ɵɵtext(55,"\n "),g.ɵɵtemplate(56,le,5,3,"a",53),g.ɵɵtext(57,"\n "),g.ɵɵtemplate(58,ce,5,3,"a",53),g.ɵɵtext(59,"\n "),g.ɵɵelementStart(60,"a",55),g.ɵɵlistener("click",(function(){const t=g.ɵɵrestoreView(e).$implicit;return g.ɵɵnextContext(3).remove(t)})),g.ɵɵtext(61,"\n "),g.ɵɵelement(62,"i",17),g.ɵɵtext(63),g.ɵɵpipe(64,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(65,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(66,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(67,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(68,"\n "),g.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=g.ɵɵnextContext(3);g.ɵɵadvance(4),g.ɵɵproperty("ngModel",e.checked),g.ɵɵadvance(5),g.ɵɵproperty("data",g.ɵɵpipeBind1(10,19,e))("email",e.email)("circle",!0)("fontSize",14),g.ɵɵadvance(8),g.ɵɵtextInterpolate(e.email),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.name),g.ɵɵadvance(5),g.ɵɵproperty("ngIf",e.twoFactorEnabled),g.ɵɵadvance(5),g.ɵɵproperty("ngIf",e.type===n.userType.ProviderAdmin),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.type===n.userType.ServiceUser),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.type===n.userType.Custom),g.ɵɵadvance(7),g.ɵɵpropertyInterpolate("appA11yTitle",g.ɵɵpipeBind1(45,21,"options")),g.ɵɵadvance(8),g.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",n.accessGroups),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",n.accessEvents&&e.status===n.userStatusType.Confirmed),g.ɵɵadvance(5),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(64,23,"remove"),"\n ")}}function pe(e,t){if(1&e){const e=g.ɵɵgetCurrentView();g.ɵɵelementContainerStart(0),g.ɵɵtext(1,"\n "),g.ɵɵtemplate(2,Z,4,6,"app-callout",36),g.ɵɵtext(3,"\n "),g.ɵɵelementStart(4,"table",37),g.ɵɵlistener("scrolled",(function(){g.ɵɵrestoreView(e);return g.ɵɵnextContext(2).loadMore()})),g.ɵɵtext(5,"\n "),g.ɵɵelementStart(6,"tbody"),g.ɵɵtext(7,"\n "),g.ɵɵtemplate(8,de,69,25,"tr",38),g.ɵɵtext(9,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(10,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(11,"\n "),g.ɵɵelementContainerEnd()}if(2&e){const e=g.ɵɵnextContext().ngIf,t=g.ɵɵnextContext();g.ɵɵadvance(2),g.ɵɵproperty("ngIf",t.showConfirmUsers),g.ɵɵadvance(2),g.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),g.ɵɵadvance(4),g.ɵɵproperty("ngForOf",e)}}function ue(e,t){if(1&e&&(g.ɵɵelementContainerStart(0),g.ɵɵtext(1,"\n "),g.ɵɵtemplate(2,J,3,3,"p",23),g.ɵɵtext(3,"\n "),g.ɵɵtemplate(4,pe,12,4,"ng-container",23),g.ɵɵtext(5,"\n"),g.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;g.ɵɵadvance(2),g.ɵɵproperty("ngIf",!e.length),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",e.length)}}function me(e,t){}function he(e,t){}function ve(e,t){}function ge(e,t){}function fe(e,t){}function ye(e,t){}const xe=function(e){return{active:e}},Se=function(e,t){return[e,t,"name","email","id"]};class be extends d.BasePeopleComponent{constructor(e,t,n,i,r,o,l,c,d,p,u,m,h,v){super(e,c,n,r,o,d,i,p,u,m,h),this.route=t,this.router=l,this.providerService=v,this.userType=s.ProviderUserType,this.userStatusType=a.ProviderUserStatusType,this.accessEvents=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;const t=yield this.providerService.get(this.providerId);t.canManageUsers?(this.accessEvents=t.useEvents,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.searchText=e.search,null!=e.viewEvents){const t=this.users.filter((t=>t.id===e.viewEvents));t.length>0&&t[0].status===a.ProviderUserStatusType.Confirmed&&this.events(t[0])}}))))):this.router.navigate(["../"],{relativeTo:this.route})}))))}getUsers(){return this.apiService.getProviderUsers(this.providerId)}deleteUser(e){return this.apiService.deleteProviderUser(this.providerId,e)}reinviteUser(e){return this.apiService.postProviderUserReinvite(this.providerId,e)}confirmUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getProviderKey(this.providerId),i=yield this.cryptoService.rsaEncrypt(n.key,t.buffer),r=new c.ProviderUserConfirmRequest;r.key=i.encryptedString,yield this.apiService.postProviderUserConfirm(this.providerId,e.id,r)}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(v.UserAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.providerId=this.providerId,n.providerUserId=null!=e?e.id:null,n.onSavedUser.subscribe((()=>{t.close(),this.load()})),n.onDeletedUser.subscribe((()=>{t.close(),this.removeUser(e)}))}))}))}events(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(u.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=this.userNamePipe.transform(e),t.providerId=this.providerId,t.entityId=e.id,t.showUser=!1,t.entity="user"}))}))}bulkRemove(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(h.BulkRemoveComponent,this.bulkRemoveModalRef,(e=>{e.providerId=this.providerId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}bulkReinvite(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const e=this.getCheckedUsers(),t=e.filter((e=>e.status===a.ProviderUserStatusType.Invited));if(t.length<=0)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("noSelectedUsersApplicable"));else{try{const n=new l.ProviderUserBulkRequest(t.map((e=>e.id))),i=this.apiService.postManyProviderUserReinvite(this.providerId,n);this.showBulkStatus(e,t,i,this.i18nService.t("bulkReinviteMessage"))}catch(n){this.validationService.showError(n)}this.actionPromise=null}}))}bulkConfirm(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(m.BulkConfirmComponent,this.bulkConfirmModalRef,(e=>{e.providerId=this.providerId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}showBulkStatus(e,t,n,r){return i(this,void 0,void 0,(function*(){const[i,o]=yield this.modalService.openViewRef(p.BulkStatusComponent,this.bulkStatusModalRef,(e=>{e.loading=!0}));let a=!1;i.onShown.subscribe((()=>{a&&i.close()}));try{const a=yield n;if(i){const n=a.data.filter((e=>""!==e.error)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t.error})),{}),i=t.reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t})),{});o.users=e.map((e=>{var t;let o=null!==(t=n[e.id])&&void 0!==t?t:r;return i.hasOwnProperty(e.id)||(o=this.i18nService.t("bulkFilteredMessage")),{user:e,error:n.hasOwnProperty(e.id),message:o}})),o.loading=!1}}catch(s){a=!0,i.close()}}))}}t.PeopleComponent=be,be.ɵfac=function(e){return new(e||be)(g.ɵɵdirectiveInject(f.ApiService),g.ɵɵdirectiveInject(y.ActivatedRoute),g.ɵɵdirectiveInject(x.I18nService),g.ɵɵdirectiveInject(S.ModalService),g.ɵɵdirectiveInject(b.PlatformUtilsService),g.ɵɵdirectiveInject(w.CryptoService),g.ɵɵdirectiveInject(y.Router),g.ɵɵdirectiveInject(C.SearchService),g.ɵɵdirectiveInject(I.ValidationService),g.ɵɵdirectiveInject(E.LogService),g.ɵɵdirectiveInject(P.SearchPipe),g.ɵɵdirectiveInject(O.UserNamePipe),g.ɵɵdirectiveInject(k.StateService),g.ɵɵdirectiveInject(A.ProviderService))},be.ɵcmp=g.ɵɵdefineComponent({type:be,selectors:[["provider-people"]],viewQuery:function(e,t){if(1&e&&(g.ɵɵviewQuery(j,7,r.ViewContainerRef),g.ɵɵviewQuery(z,7,r.ViewContainerRef),g.ɵɵviewQuery(H,7,r.ViewContainerRef),g.ɵɵviewQuery(L,7,r.ViewContainerRef),g.ɵɵviewQuery(K,7,r.ViewContainerRef),g.ɵɵviewQuery(q,7,r.ViewContainerRef)),2&e){let e;g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.addEditModalRef=e.first),g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.groupsModalRef=e.first),g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.eventsModalRef=e.first),g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.bulkStatusModalRef=e.first),g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.bulkConfirmModalRef=e.first),g.ɵɵqueryRefresh(e=g.ɵɵloadQuery())&&(t.bulkRemoveModalRef=e.first)}},features:[g.ɵɵInheritDefinitionFeature],decls:110,vars:61,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],["class","badge badge-pill badge-warning",4,"ngIf"],[1,"ml-3"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["appListDropdown","",1,"dropdown","ml-3"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["class","dropdown-item text-success","appStopClick","",3,"click",4,"ngIf"],["appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"dropdown-divider"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["eventsTemplate",""],["confirmTemplate",""],["bulkStatusTemplate",""],["bulkConfirmTemplate",""],["bulkRemoveTemplate",""],[1,"badge","badge-pill","badge-info"],[1,"badge","badge-pill","badge-warning"],["appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","info","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["type","info","icon","bwi bwi-check-circle",3,"title"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-lock",3,"title"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sitemap"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"]],template:function(e,t){1&e&&(g.ɵɵelementStart(0,"div",0),g.ɵɵtext(1,"\n "),g.ɵɵelementStart(2,"h1"),g.ɵɵtext(3),g.ɵɵpipe(4,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(5,"\n "),g.ɵɵelementStart(6,"div",1),g.ɵɵtext(7,"\n "),g.ɵɵelementStart(8,"div",2),g.ɵɵtext(9,"\n "),g.ɵɵelementStart(10,"button",3),g.ɵɵlistener("click",(function(){return t.filter(null)})),g.ɵɵtext(11),g.ɵɵpipe(12,"i18n"),g.ɵɵtemplate(13,G,2,1,"span",4),g.ɵɵtext(14,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(15,"\n "),g.ɵɵelementStart(16,"button",3),g.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Invited)})),g.ɵɵtext(17),g.ɵɵpipe(18,"i18n"),g.ɵɵtemplate(19,W,2,1,"span",4),g.ɵɵtext(20,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(21,"\n "),g.ɵɵelementStart(22,"button",3),g.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Accepted)})),g.ɵɵtext(23),g.ɵɵpipe(24,"i18n"),g.ɵɵtemplate(25,$,2,1,"span",5),g.ɵɵtext(26,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(27,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(28,"\n "),g.ɵɵelementStart(29,"div",6),g.ɵɵtext(30,"\n "),g.ɵɵelementStart(31,"label",7),g.ɵɵtext(32),g.ɵɵpipe(33,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(34,"\n "),g.ɵɵelementStart(35,"input",8),g.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),g.ɵɵpipe(36,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(37,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(38,"\n "),g.ɵɵelementStart(39,"div",9),g.ɵɵtext(40,"\n "),g.ɵɵelementStart(41,"button",10),g.ɵɵpipe(42,"i18n"),g.ɵɵtext(43,"\n "),g.ɵɵelement(44,"i",11),g.ɵɵtext(45,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(46,"\n "),g.ɵɵelementStart(47,"div",12),g.ɵɵtext(48,"\n "),g.ɵɵelementStart(49,"button",13),g.ɵɵlistener("click",(function(){return t.bulkReinvite()})),g.ɵɵtext(50,"\n "),g.ɵɵelement(51,"i",14),g.ɵɵtext(52),g.ɵɵpipe(53,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(54,"\n "),g.ɵɵtemplate(55,Y,5,3,"button",15),g.ɵɵtext(56,"\n "),g.ɵɵelementStart(57,"button",16),g.ɵɵlistener("click",(function(){return t.bulkRemove()})),g.ɵɵtext(58,"\n "),g.ɵɵelement(59,"i",17),g.ɵɵtext(60),g.ɵɵpipe(61,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(62,"\n "),g.ɵɵelement(63,"div",18),g.ɵɵtext(64,"\n "),g.ɵɵelementStart(65,"button",13),g.ɵɵlistener("click",(function(){return t.selectAll(!0)})),g.ɵɵtext(66,"\n "),g.ɵɵelement(67,"i",19),g.ɵɵtext(68),g.ɵɵpipe(69,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(70,"\n "),g.ɵɵelementStart(71,"button",13),g.ɵɵlistener("click",(function(){return t.selectAll(!1)})),g.ɵɵtext(72,"\n "),g.ɵɵelement(73,"i",20),g.ɵɵtext(74),g.ɵɵpipe(75,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(76,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(77,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(78,"\n "),g.ɵɵelementStart(79,"button",21),g.ɵɵlistener("click",(function(){return t.invite()})),g.ɵɵtext(80,"\n "),g.ɵɵelement(81,"i",22),g.ɵɵtext(82),g.ɵɵpipe(83,"i18n"),g.ɵɵelementEnd(),g.ɵɵtext(84,"\n "),g.ɵɵelementEnd(),g.ɵɵtext(85,"\n"),g.ɵɵelementEnd(),g.ɵɵtext(86,"\n"),g.ɵɵtemplate(87,Q,9,6,"ng-container",23),g.ɵɵtext(88,"\n"),g.ɵɵtemplate(89,ue,6,2,"ng-container",23),g.ɵɵpipe(90,"search"),g.ɵɵtext(91,"\n"),g.ɵɵtemplate(92,me,0,0,"ng-template",null,24,g.ɵɵtemplateRefExtractor),g.ɵɵtext(94,"\n"),g.ɵɵtemplate(95,he,0,0,"ng-template",null,25,g.ɵɵtemplateRefExtractor),g.ɵɵtext(97,"\n"),g.ɵɵtemplate(98,ve,0,0,"ng-template",null,26,g.ɵɵtemplateRefExtractor),g.ɵɵtext(100,"\n"),g.ɵɵtemplate(101,ge,0,0,"ng-template",null,27,g.ɵɵtemplateRefExtractor),g.ɵɵtext(103,"\n"),g.ɵɵtemplate(104,fe,0,0,"ng-template",null,28,g.ɵɵtemplateRefExtractor),g.ɵɵtext(106,"\n"),g.ɵɵtemplate(107,ye,0,0,"ng-template",null,29,g.ɵɵtemplateRefExtractor),g.ɵɵtext(109,"\n")),2&e&&(g.ɵɵadvance(3),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(4,22,"people")),g.ɵɵadvance(7),g.ɵɵproperty("ngClass",g.ɵɵpureFunction1(52,xe,null==t.status)),g.ɵɵadvance(1),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(12,24,"all"),"\n "),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",t.allCount),g.ɵɵadvance(3),g.ɵɵproperty("ngClass",g.ɵɵpureFunction1(54,xe,t.status==t.userStatusType.Invited)),g.ɵɵadvance(1),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(18,26,"invited"),"\n "),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",t.invitedCount),g.ɵɵadvance(3),g.ɵɵproperty("ngClass",g.ɵɵpureFunction1(56,xe,t.status==t.userStatusType.Accepted)),g.ɵɵadvance(1),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(24,28,"accepted"),"\n "),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",t.acceptedCount),g.ɵɵadvance(7),g.ɵɵtextInterpolate(g.ɵɵpipeBind1(33,30,"search")),g.ɵɵadvance(3),g.ɵɵpropertyInterpolate("placeholder",g.ɵɵpipeBind1(36,32,"search")),g.ɵɵproperty("ngModel",t.searchText),g.ɵɵadvance(6),g.ɵɵpropertyInterpolate("appA11yTitle",g.ɵɵpipeBind1(42,34,"options")),g.ɵɵadvance(11),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(53,36,"reinviteSelected"),"\n "),g.ɵɵadvance(3),g.ɵɵproperty("ngIf",t.showBulkConfirmUsers),g.ɵɵadvance(5),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(61,38,"remove"),"\n "),g.ɵɵadvance(8),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(69,40,"selectAll"),"\n "),g.ɵɵadvance(6),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(75,42,"unselectAll"),"\n "),g.ɵɵadvance(8),g.ɵɵtextInterpolate1("\n ",g.ɵɵpipeBind1(83,44,"inviteUser"),"\n "),g.ɵɵadvance(5),g.ɵɵproperty("ngIf",t.loading),g.ɵɵadvance(2),g.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedUsers:g.ɵɵpipeBindV(90,46,g.ɵɵpureFunction2(58,Se,t.users,t.searchText)))))},directives:[T.NgClass,T.NgIf,M.DefaultValueAccessor,M.NgControlStatus,M.NgModel,B.A11yTitleDirective,D.StopClickDirective,T.NgForOf,R.CalloutComponent,M.CheckboxControlValueAccessor,F.StopPropDirective,U.AvatarComponent],pipes:[V.I18nPipe,N.SearchPipe,_.UserNamePipe],encapsulation:2})},20913:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(30185)),a=n(96926),s=n(7896),l=n(731),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),g=n(57490),f=n(8863),y=n(99729);function x(e,t){if(1&e&&(c.ɵɵelementStart(0,"small",16),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function S(e,t){1&e&&(c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",18),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",19),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"p"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",28),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"label",29),c.ɵɵtext(9),c.ɵɵpipe(10,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",30),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).emails=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"small",16),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,4,"providerInviteUserDesc")),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(10,6,"email")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.emails),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(16,8,"inviteMultipleEmailDesc","20"))}}function w(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,b,19,11,"ng-container",20),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"h3"),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementStart(7,"a",21),c.ɵɵpipe(8,"i18n"),c.ɵɵtext(9,"\n "),c.ɵɵelement(10,"i",22),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",23),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"input",24),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().type=t})),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"label",25),c.ɵɵtext(19),c.ɵɵpipe(20,"i18n"),c.ɵɵelementStart(21,"small"),c.ɵɵtext(22),c.ɵɵpipe(23,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementStart(27,"div",23),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"input",26),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().type=t})),c.ɵɵelementEnd(),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"label",27),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementStart(34,"small"),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.editMode),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(6,11,"userType"),"\n "),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(8,13,"learnMore")),c.ɵɵadvance(9),c.ɵɵproperty("value",e.userType.ServiceUser)("ngModel",e.type),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(20,15,"serviceUser"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(23,17,"serviceUserDesc")),c.ɵɵadvance(7),c.ɵɵproperty("value",e.userType.ProviderAdmin)("ngModel",e.type),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(33,19,"providerAdmin"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(36,21,"providerAdminDesc"))}}function C(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",31,32),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",33),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",34),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext();c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}class I{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedUser=new r.EventEmitter,this.onDeletedUser=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.type=o.ProviderUserType.ServiceUser,this.permissions=new a.PermissionsApi,this.showCustom=!1,this.access="selected",this.userType=o.ProviderUserType}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.providerUserId,this.editMode){this.editMode=!0,this.title=this.i18nService.t("editUser");try{const e=yield this.apiService.getProviderUser(this.providerId,this.providerUserId);this.type=e.type}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteUser");this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{if(this.editMode){const e=new l.ProviderUserUpdateRequest;e.type=this.type,this.formPromise=this.apiService.putProviderUser(this.providerId,this.providerUserId,e)}else{const e=new s.ProviderUserInviteRequest;e.emails=this.emails.trim().split(/\s*,\s*/),e.type=this.type,this.formPromise=this.apiService.postProviderUserInvite(this.providerId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSavedUser.emit()}catch(e){this.logService.error(e)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeUserConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteProviderUser(this.providerId,this.providerUserId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.name)),this.onDeletedUser.emit()}catch(e){this.logService.error(e)}}))}}t.UserAddEditComponent=I,I.ɵfac=function(e){return new(e||I)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},I.ɵcmp=c.ɵɵdefineComponent({type:I,selectors:[["provider-user-add-edit"]],inputs:{name:"name",providerUserId:"providerUserId",providerId:"providerId"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:51,vars:19,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/provider-users/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","userTypeServiceUser",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeServiceUser",1,"form-check-label"],["type","radio","name","userType","id","userTypeProviderAdmin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeProviderAdmin",1,"form-check-label"],[1,"form-group","mb-4"],["for","emails"],["id","emails","type","text","name","Emails","required","","appAutoFocus","",1,"form-control",3,"ngModel","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵtemplate(11,x,2,1,"small",6),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"button",7),c.ɵɵpipe(15,"i18n"),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"span",8),c.ɵɵtext(18,"×"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,S,9,6,"div",9),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,w,40,23,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",10),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"button",11),c.ɵɵtext(29,"\n "),c.ɵɵelement(30,"i",12),c.ɵɵpipe(31,"i18n"),c.ɵɵtext(32,"\n "),c.ɵɵelementStart(33,"span"),c.ɵɵtext(34),c.ɵɵpipe(35,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"button",13),c.ɵɵtext(39),c.ɵɵpipe(40,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(41,"\n "),c.ɵɵelementStart(42,"div",14),c.ɵɵtext(43,"\n "),c.ɵɵtemplate(44,C,9,10,"button",15),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",t.title,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",t.name),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(15,11,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(31,13,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(35,15,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(40,17,"cancel"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.editMode)}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,g.NgIf,f.A11yTitleDirective,h.RadioControlValueAccessor,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,h.RequiredValidator],pipes:[y.I18nPipe],encapsulation:2})},42204:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersLayoutComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(53280),l=n(57490),c=n(59964),d=n(15370),p=n(99729);function u(e,t){1&e&&(r.ɵɵelementStart(0,"div",11),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",13),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"providerIsDisabled"),"\n "))}function m(e,t){if(1&e&&(r.ɵɵelementStart(0,"li",15),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"a",19),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",20),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("routerLink",e.manageRoute),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,2,"manage"),"\n ")}}function h(e,t){1&e&&(r.ɵɵelementStart(0,"li",15),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"a",21),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",22),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"settings"),"\n "))}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",15),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",16),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",17),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,m,8,4,"li",18),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,h,8,3,"li",18),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,3,"clients"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showManageTab),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.showSettingsTab)}}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",4),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",5),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"app-avatar",6),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"div",7),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span"),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"small",8),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,u,8,3,"div",9),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵtemplate(23,v,15,5,"ul",10),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(8),r.ɵɵproperty("data",e.provider.name)("circle",!0),r.ɵɵadvance(5),r.ɵɵtextInterpolate(e.provider.name),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(17,6,"provider")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.provider.enabled),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.showMenuBar)}}class f{constructor(e,t){this.route=e,this.providerService=t}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId,yield this.load()}))))}load(){return i(this,void 0,void 0,(function*(){this.provider=yield this.providerService.get(this.providerId)}))}get showMenuBar(){return this.showManageTab||this.showSettingsTab}get showManageTab(){return this.provider.canManageUsers||this.provider.canAccessEventLogs}get showSettingsTab(){return this.provider.isProviderAdmin}get manageRoute(){switch(!0){case this.provider.canManageUsers:return"manage/people";case this.provider.canAccessEventLogs:return"manage/events"}}}t.ProvidersLayoutComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["providers-layout"]],decls:11,vars:1,consts:[["class","org-nav",4,"ngIf"],[1,"container","page-content"],[1,"org-nav"],[1,"container","d-flex"],[1,"d-flex","flex-column"],[1,"my-auto","d-flex","align-items-center","pl-1"],["size","45",3,"data","circle"],[1,"org-name","ml-3"],[1,"text-muted"],["class","ml-3 card border-danger text-danger bg-transparent",4,"ngIf"],["class","nav nav-tabs",4,"ngIf"],[1,"ml-3","card","border-danger","text-danger","bg-transparent"],[1,"card-body","py-2"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLink","clients","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-bank"],["class","nav-item",4,"ngIf"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-sliders"],["routerLink","settings","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-cogs"]],template:function(e,t){1&e&&(r.ɵɵelement(0,"app-navbar"),r.ɵɵtext(1,"\n"),r.ɵɵtemplate(2,g,27,8,"div",0),r.ɵɵtext(3,"\n"),r.ɵɵelementStart(4,"div",1),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"router-outlet"),r.ɵɵtext(7,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n"),r.ɵɵelement(9,"app-footer"),r.ɵɵtext(10,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.provider))},directives:[s.NavbarComponent,l.NgIf,o.RouterOutlet,c.FooterComponent,d.AvatarComponent,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[p.I18nPipe],encapsulation:2})},16077:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(47880),a=n(16823),s=n(30773),l=n(29063),c=n(53402),d=n(82074),p=n(60261),u=n(34221),m=n(42378),h=n(13346),v=n(71601),g=n(42204),f=n(41860),y=n(79222),x=n(6499),S=n(7529),b=n(32621),w=(n(68012),[{path:"",canActivate:[r.AuthGuard],component:s.ProvidersComponent},{path:"",component:a.FrontendLayoutComponent,children:[{path:"setup-provider",component:x.SetupProviderComponent,data:{titleId:"setupProvider"}},{path:"accept-provider",component:u.AcceptProviderComponent,data:{titleId:"acceptProvider"}}]},{path:"",canActivate:[r.AuthGuard],children:[{path:"setup",component:S.SetupComponent},{path:":providerId",component:g.ProvidersLayoutComponent,canActivate:[p.ProviderGuard],children:[{path:"",pathMatch:"full",redirectTo:"clients"},{path:"clients/create",component:c.CreateOrganizationComponent},{path:"clients",component:l.ClientsComponent,data:{titleId:"clients"}},{path:"manage",component:h.ManageComponent,children:[{path:"",pathMatch:"full",redirectTo:"people"},{path:"people",component:v.PeopleComponent,canActivate:[d.PermissionsGuard],data:{titleId:"people",permissions:[o.Permissions.ManageUsers]}},{path:"events",component:m.EventsComponent,canActivate:[d.PermissionsGuard],data:{titleId:"eventLogs",permissions:[o.Permissions.AccessEventLogs]}}]},{path:"settings",component:y.SettingsComponent,children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:f.AccountComponent,canActivate:[d.PermissionsGuard],data:{titleId:"myProvider",permissions:[o.Permissions.ManageProvider]}}]}]}]}]);class C{}t.ProvidersRoutingModule=C,C.ɵfac=function(e){return new(e||C)},C.ɵmod=b.ɵɵdefineNgModule({type:C}),C.ɵinj=b.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(w)],i.RouterModule]})},33150:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersModule=void 0;const i=n(57490),r=(n(32621),n(96832)),o=n(44926),a=(n(64684),n(77537)),s=n(32656),l=n(82074),c=n(60261),d=n(16077),p=n(49003),u=n(32621),m=n(64684);class h{constructor(e,t){e.registerComponentFactoryResolver(s.AddOrganizationComponent,t)}}t.ProvidersModule=h,h.ɵfac=function(e){return new(e||h)(u.ɵɵinject(m.ModalService),u.ɵɵinject(u.ComponentFactoryResolver))},h.ɵmod=u.ɵɵdefineNgModule({type:h}),h.ɵinj=u.ɵɵdefineInjector({providers:[p.WebProviderService,c.ProviderGuard,l.PermissionsGuard],imports:[[i.CommonModule,r.FormsModule,a.OssModule,o.JslibModule,d.ProvidersRoutingModule]]})},49003:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebProviderService=void 0;n(91674),n(85714),n(9724);const r=n(47298),o=n(32621),a=n(85714),s=n(9724),l=n(91674);class c{constructor(e,t,n){this.cryptoService=e,this.syncService=t,this.apiService=n}addOrganizationToProvider(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getOrgKey(t),i=yield this.cryptoService.getProviderKey(e),o=yield this.cryptoService.encrypt(n.key,i),a=new r.ProviderAddOrganizationRequest;a.organizationId=t,a.key=o.encryptedString;const s=yield this.apiService.postProviderAddOrganization(e,a);return yield this.syncService.fullSync(!0),s}))}detachOrganizastion(e,t){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteProviderOrganization(e,t),yield this.syncService.fullSync(!0)}))}}t.WebProviderService=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵinject(a.CryptoService),o.ɵɵinject(s.SyncService),o.ɵɵinject(l.ApiService))},c.ɵprov=o.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},41860:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(9724);const r=n(23839),o=n(32621),a=n(91674),s=n(51554),l=n(68012),c=n(9724),d=n(73828),p=n(36631),u=n(57490),m=n(96832),h=n(56820),v=n(15370),g=n(99729);function f(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",3),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",4),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"form",5,6),o.ɵɵlistener("ngSubmit",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",7),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",8),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",9),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"label",10),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"input",11),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().provider.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",9),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",12),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"input",13),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().provider.billingEmail=t})),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",8),o.ɵɵtext(27,"\n "),o.ɵɵelement(28,"app-avatar",14),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"button",15),o.ɵɵtext(33,"\n "),o.ɵɵelement(34,"i",16),o.ɵɵpipe(35,"i18n"),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"span"),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext();o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,11,"providerName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.provider.name)("disabled",t.selfHosted),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,13,"billingEmail")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.provider.billingEmail)("disabled",t.selfHosted),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("data",t.provider.name),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(35,15,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(39,17,"save"))}}class x{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.route=n,this.syncService=i,this.platformUtilsService=r,this.logService=o,this.selfHosted=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.selfHosted=this.platformUtilsService.isSelfHost(),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;try{this.provider=yield this.apiService.getProvider(this.providerId)}catch(t){this.logService.error(`Handled exception: ${t}`)}})))),this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.ProviderUpdateRequest;e.name=this.provider.name,e.businessName=this.provider.businessName,e.billingEmail=this.provider.billingEmail,this.formPromise=this.apiService.putProvider(this.providerId,e).then((()=>this.syncService.fullSync(!0))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("providerUpdated"))}catch(e){this.logService.error(`Handled exception: ${e}`)}}))}}t.AccountComponent=x,x.ɵfac=function(e){return new(e||x)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ActivatedRoute),o.ɵɵdirectiveInject(c.SyncService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.LogService))},x.ɵcmp=o.ɵɵdefineComponent({type:x,selectors:[["provider-account"]],decls:11,vars:5,consts:[[1,"page-header"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail",1,"form-control",3,"ngModel","disabled","ngModelChange"],["dynamic","true","size","75","fontSize","35",3,"data"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵtemplate(7,f,9,6,"div",1),o.ɵɵtext(8,"\n"),o.ɵɵtemplate(9,y,42,19,"form",2),o.ɵɵtext(10,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"myProvider")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.provider&&!t.loading))},directives:[u.NgIf,m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,v.AvatarComponent],pipes:[g.I18nPipe],encapsulation:2})},79222:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(99729);class l{constructor(e,t){this.route=e,this.providerService=t}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){yield this.providerService.get(e.providerId)}))))}}t.SettingsComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["provider-settings"]],decls:28,vars:6,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],[1,"col-9"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",7),r.ɵɵtext(22,"\n "),r.ɵɵelement(23,"router-outlet"),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,2,"settings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,4,"myProvider"),"\n "))},directives:[o.RouterLinkWithHref,o.RouterLinkActive,o.RouterOutlet],pipes:[s.I18nPipe],encapsulation:2})},6499:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetupProviderComponent=void 0;const r=n(50009),o=n(32621),a=n(57490),s=n(68012),l=n(99729);function c(e,t){1&e&&(o.ɵɵelementStart(0,"div",2),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"img",3),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",4),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",5),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"span",6),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(8),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,4,"loading")))}const d=function(e){return{email:e}};function p(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",7),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",8),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",9),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",10),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"div",11),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"div",12),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"p"),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"hr"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",13),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"a",14),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,4,"setupProvider")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(16,6,"setupProviderLoginDesc")),o.ɵɵadvance(7),o.ɵɵproperty("queryParams",o.ɵɵpureFunction1(10,d,e.email)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(24,8,"logIn"),"\n ")}}class u extends r.BaseAcceptComponent{constructor(){super(...arguments),this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed",this.requiredParameters=["providerId","email","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){this.router.navigate(["/providers/setup"],{queryParams:e})}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){}))}}t.SetupProviderComponent=u,u.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(u)))(t||u)}}(),u.ɵcmp=o.ɵɵdefineComponent({type:u,selectors:[["app-setup-provider"]],features:[o.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,c,17,6,"div",0),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,p,31,12,"div",1),o.ɵɵtext(3,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[a.NgIf,s.RouterLinkWithHref],pipes:[l.I18nPipe],encapsulation:2})},7529:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetupComponent=void 0;n(68012);const r=n(14857),o=(n(47594),n(91674),n(85714),n(51554),n(73828),n(9724),n(22748)),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(85714),p=n(91674),u=n(9724),m=n(47594),h=n(53280),v=n(57490),g=n(59964),f=n(96832),y=n(56820),x=n(99729);function S(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",16),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).cancel()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"form",3,4),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"h2",5),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",6),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",7),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",8),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"input",9),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().name=t})),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",7),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",10),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"input",11),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().billingEmail=t})),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n\n "),a.ɵɵelementStart(28,"div",12),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"button",13),a.ɵɵtext(31,"\n "),a.ɵɵelement(32,"i",14),a.ɵɵpipe(33,"i18n"),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"span"),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵtemplate(40,S,3,3,"button",15),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(5,10,"generalInformation")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,12,"providerName")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.name),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,14,"billingEmail")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.billingEmail),a.ɵɵadvance(6),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(33,16,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,18,"submit")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.showCancel)}}class w{constructor(e,t,n,i,r,o,a,s){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.cryptoService=r,this.apiService=o,this.syncService=a,this.validationService=s,this.loading=!0,this.authed=!1}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null==e.providerId||null==e.email||null==e.token)return this.platformUtilsService.showToast("error",null,this.i18nService.t("emergencyInviteAcceptFailed"),{timeout:1e4}),void this.router.navigate(["/"]);this.providerId=e.providerId,this.token=e.token;try{const e=yield this.apiService.getProvider(this.providerId);null!=e.name&&this.router.navigate(["/providers",e.id],{replaceUrl:!0})}catch(t){this.validationService.showError(t),this.router.navigate(["/"])}}))))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.doSubmit(),yield this.formPromise,this.formPromise=null}))}doSubmit(){return i(this,void 0,void 0,(function*(){try{const e=(yield this.cryptoService.makeShareKey())[0].encryptedString,t=new o.ProviderSetupRequest;t.name=this.name,t.billingEmail=this.billingEmail,t.token=this.token,t.key=e;const n=yield this.apiService.postProviderSetup(this.providerId,t);this.platformUtilsService.showToast("success",null,this.i18nService.t("providerSetup")),yield this.syncService.fullSync(!0),this.router.navigate(["/providers",n.id])}catch(e){this.validationService.showError(e)}}))}}t.SetupComponent=w,w.ɵfac=function(e){return new(e||w)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.CryptoService),a.ɵɵdirectiveInject(p.ApiService),a.ɵɵdirectiveInject(u.SyncService),a.ɵɵdirectiveInject(m.ValidationService))},w.ɵcmp=a.ɵɵdefineComponent({type:w,selectors:[["provider-setup"]],decls:20,vars:7,consts:[[1,"container","page-content"],[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"mt-5"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"mt-4"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(a.ɵɵelement(0,"app-navbar"),a.ɵɵtext(1,"\n"),a.ɵɵelementStart(2,"div",0),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",1),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"h1"),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"p"),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n\n "),a.ɵɵtemplate(15,b,43,20,"form",2),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n"),a.ɵɵelement(18,"app-footer"),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,3,"setupProvider")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,5,"setupProviderDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.loading))},directives:[h.NavbarComponent,v.NgIf,g.FooterComponent,f.NgControlStatusGroup,f.NgForm,y.ApiActionDirective,f.DefaultValueAccessor,f.RequiredValidator,f.NgControlStatus,f.NgModel],pipes:[x.I18nPipe],encapsulation:2})},4758:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditCustomFieldsComponent=void 0;const i=n(83072),r=(n(32621),n(32034),n(51554),n(32773)),o=n(80253),a=n(67577),s=n(82769),l=(n(97144),n(58545)),c=n(32621),d=n(51554),p=n(32034);class u{constructor(e,t){this.i18nService=e,this.eventService=t,this.addFieldType=a.FieldType.Text,this.linkedFieldOptions=[],this.cipherType=r.CipherType,this.fieldType=a.FieldType,this.eventType=o.EventType,this.addFieldTypeOptions=[{name:e.t("cfTypeText"),value:a.FieldType.Text},{name:e.t("cfTypeHidden"),value:a.FieldType.Hidden},{name:e.t("cfTypeBoolean"),value:a.FieldType.Boolean}],this.addFieldLinkedTypeOption={name:this.i18nService.t("cfTypeLinked"),value:a.FieldType.Linked}}ngOnChanges(e){null!=e.thisCipherType&&(this.setLinkedFieldOptions(),e.thisCipherType.firstChange||this.resetCipherLinkedFields())}addField(){null==this.cipher.fields&&(this.cipher.fields=[]);const e=new l.FieldView;e.type=this.addFieldType,e.newField=!0,e.type===a.FieldType.Linked&&(e.linkedId=this.linkedFieldOptions[0].value),this.cipher.fields.push(e)}removeField(e){const t=this.cipher.fields.indexOf(e);t>-1&&this.cipher.fields.splice(t,1)}toggleFieldValue(e){const t=e;t.showValue=!t.showValue,this.editMode&&t.showValue&&this.eventService.collect(o.EventType.Cipher_ClientToggledHiddenFieldVisible,this.cipher.id)}trackByFunction(e,t){return e}drop(e){i.moveItemInArray(this.cipher.fields,e.previousIndex,e.currentIndex)}setLinkedFieldOptions(){if(null==this.cipher.linkedFieldOptions)return;const e=[];this.cipher.linkedFieldOptions.forEach(((t,n)=>e.push({name:this.i18nService.t(t.i18nKey),value:n}))),this.linkedFieldOptions=e.sort(s.Utils.getSortFunction(this.i18nService,"name"))}resetCipherLinkedFields(){null!=this.cipher.fields&&0!==this.cipher.fields.length&&(null!=this.cipher.linkedFieldOptions?this.cipher.fields.filter((e=>e.type===a.FieldType.Linked)).forEach((e=>e.linkedId=this.linkedFieldOptions[0].value)):this.cipher.fields=this.cipher.fields.filter((e=>e.type!==a.FieldType.Linked)))}}t.AddEditCustomFieldsComponent=u,u.ɵfac=function(e){return new(e||u)(c.ɵɵdirectiveInject(d.I18nService),c.ɵɵdirectiveInject(p.EventService))},u.ɵdir=c.ɵɵdefineDirective({type:u,inputs:{cipher:"cipher",thisCipherType:"thisCipherType",editMode:"editMode"},features:[c.ɵɵNgOnChangesFeature]})},7481:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;const r=n(32621),o=(n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(44809),n(73828),n(62166),n(73569),n(34453)),a=n(32773),s=n(80253),l=n(7368),c=n(49906),d=n(76716),p=n(71703),u=n(82769),m=n(91766),h=n(97144),v=n(48830),g=n(16506),f=n(28331),y=n(99364),x=n(32621),S=n(45330),b=n(88308),w=n(51554),C=n(73828),I=n(42982),E=n(73569),P=n(3174),O=n(45552),k=n(32034),A=n(62166),T=n(36631),M=n(44809),B=n(63513);class D{constructor(e,t,n,i,o,s,l,c,d,u,m,h,v){this.cipherService=e,this.folderService=t,this.i18nService=n,this.platformUtilsService=i,this.auditService=o,this.stateService=s,this.collectionService=l,this.messagingService=c,this.eventService=d,this.policyService=u,this.logService=m,this.passwordRepromptService=h,this.organizationService=v,this.cloneMode=!1,this.folderId=null,this.organizationId=null,this.onSavedCipher=new r.EventEmitter,this.onDeletedCipher=new r.EventEmitter,this.onRestoredCipher=new r.EventEmitter,this.onCancelled=new r.EventEmitter,this.onEditAttachments=new r.EventEmitter,this.onShareCipher=new r.EventEmitter,this.onEditCollections=new r.EventEmitter,this.onGeneratePassword=new r.EventEmitter,this.onGenerateUsername=new r.EventEmitter,this.editMode=!1,this.collections=[],this.showPassword=!1,this.showCardNumber=!1,this.showCardCode=!1,this.cipherType=a.CipherType,this.ownershipOptions=[],this.currentDate=new Date,this.allowPersonal=!0,this.reprompt=!1,this.canUseReprompt=!0,this.typeOptions=[{name:n.t("typeLogin"),value:a.CipherType.Login},{name:n.t("typeCard"),value:a.CipherType.Card},{name:n.t("typeIdentity"),value:a.CipherType.Identity},{name:n.t("typeSecureNote"),value:a.CipherType.SecureNote}],this.cardBrandOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:"Visa",value:"Visa"},{name:"Mastercard",value:"Mastercard"},{name:"American Express",value:"Amex"},{name:"Discover",value:"Discover"},{name:"Diners Club",value:"Diners Club"},{name:"JCB",value:"JCB"},{name:"Maestro",value:"Maestro"},{name:"UnionPay",value:"UnionPay"},{name:n.t("other"),value:"Other"}],this.cardExpMonthOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:"01 - "+n.t("january"),value:"1"},{name:"02 - "+n.t("february"),value:"2"},{name:"03 - "+n.t("march"),value:"3"},{name:"04 - "+n.t("april"),value:"4"},{name:"05 - "+n.t("may"),value:"5"},{name:"06 - "+n.t("june"),value:"6"},{name:"07 - "+n.t("july"),value:"7"},{name:"08 - "+n.t("august"),value:"8"},{name:"09 - "+n.t("september"),value:"9"},{name:"10 - "+n.t("october"),value:"10"},{name:"11 - "+n.t("november"),value:"11"},{name:"12 - "+n.t("december"),value:"12"}],this.identityTitleOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:n.t("mr"),value:n.t("mr")},{name:n.t("mrs"),value:n.t("mrs")},{name:n.t("ms"),value:n.t("ms")},{name:n.t("dr"),value:n.t("dr")}],this.uriMatchOptions=[{name:n.t("defaultMatchDetection"),value:null},{name:n.t("baseDomain"),value:p.UriMatchType.Domain},{name:n.t("host"),value:p.UriMatchType.Host},{name:n.t("startsWith"),value:p.UriMatchType.StartsWith},{name:n.t("regEx"),value:p.UriMatchType.RegularExpression},{name:n.t("exact"),value:p.UriMatchType.Exact},{name:n.t("never"),value:p.UriMatchType.Never}],this.autofillOnPageLoadOptions=[{name:n.t("autoFillOnPageLoadUseDefault"),value:null},{name:n.t("autoFillOnPageLoadYes"),value:!0},{name:n.t("autoFillOnPageLoadNo"),value:!1}]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}init(){return i(this,void 0,void 0,(function*(){if(this.ownershipOptions.length&&(this.ownershipOptions=[]),yield this.policyService.policyAppliesToUser(c.PolicyType.PersonalOwnership))this.allowPersonal=!1;else{const e=yield this.stateService.getEmail();this.ownershipOptions.push({name:e,value:null})}(yield this.organizationService.getAll()).sort(u.Utils.getSortFunction(this.i18nService,"name")).forEach((e=>{e.enabled&&e.status===l.OrganizationUserStatusType.Confirmed&&this.ownershipOptions.push({name:e.name,value:e.id})})),this.allowPersonal||(this.organizationId=this.ownershipOptions[0].value),this.writeableCollections=yield this.loadCollections(),this.canUseReprompt=yield this.passwordRepromptService.enabled()}))}load(){return i(this,void 0,void 0,(function*(){this.editMode=null!=this.cipherId,this.editMode?(this.editMode=!0,this.cloneMode?(this.cloneMode=!0,this.title=this.i18nService.t("addItem")):this.title=this.i18nService.t("editItem")):this.title=this.i18nService.t("addItem");const e=yield this.stateService.getAddEditCipherInfo();if(null!=e&&(this.cipher=e.cipher,this.collectionIds=e.collectionIds),yield this.stateService.setAddEditCipherInfo(null),null==this.cipher)if(this.editMode){const e=yield this.loadCipher();this.cipher=yield e.decrypt(),this.cloneMode&&(this.cipher.name+=" - "+this.i18nService.t("clone"),null!=this.cipher.organizationId||this.allowPersonal||(this.cipher.organizationId=this.organizationId))}else this.cipher=new h.CipherView,this.cipher.organizationId=null==this.organizationId?null:this.organizationId,this.cipher.folderId=this.folderId,this.cipher.type=null==this.type?a.CipherType.Login:this.type,this.cipher.login=new f.LoginView,this.cipher.login.uris=[new g.LoginUriView],this.cipher.card=new m.CardView,this.cipher.identity=new v.IdentityView,this.cipher.secureNote=new y.SecureNoteView,this.cipher.secureNote.type=d.SecureNoteType.Generic,this.cipher.reprompt=o.CipherRepromptType.None;null==this.cipher||this.editMode&&null==e&&!this.cloneMode||(yield this.organizationChanged(),null!=this.collectionIds&&this.collectionIds.length>0&&this.collections.length>0&&this.collections.forEach((e=>{this.collectionIds.indexOf(e.id)>-1&&(e.checked=!0)}))),this.folders=yield this.folderService.getAllDecrypted(),this.editMode&&this.previousCipherId!==this.cipherId&&this.eventService.collect(s.EventType.Cipher_ClientViewed,this.cipherId),this.previousCipherId=this.cipherId,this.reprompt=this.cipher.reprompt!==o.CipherRepromptType.None}))}submit(){return i(this,void 0,void 0,(function*(){if(this.cipher.isDeleted)return this.restore();if(null==this.cipher.name||""===this.cipher.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;if((!this.editMode||this.cloneMode)&&!this.allowPersonal&&null==this.cipher.organizationId)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("personalOwnershipSubmitError")),!1;this.editMode&&!this.cloneMode||this.cipher.type!==a.CipherType.Login||null==this.cipher.login.uris||1!==this.cipher.login.uris.length||null!=this.cipher.login.uris[0].uri&&""!==this.cipher.login.uris[0].uri||(this.cipher.login.uris=null),this.editMode&&!this.cloneMode||null==this.cipher.organizationId||(this.cipher.collectionIds=null==this.collections?[]:this.collections.filter((e=>e.checked)).map((e=>e.id))),this.cloneMode&&(this.cipher.id=null);const e=yield this.encryptCipher();try{return this.formPromise=this.saveCipher(e),yield this.formPromise,this.cipher.id=e.id,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode&&!this.cloneMode?"editedItem":"addedItem")),this.onSavedCipher.emit(this.cipher),this.messagingService.send(this.editMode&&!this.cloneMode?"editedCipher":"addedCipher"),!0}catch(t){this.logService.error(t)}return!1}))}addUri(){this.cipher.type===a.CipherType.Login&&(null==this.cipher.login.uris&&(this.cipher.login.uris=[]),this.cipher.login.uris.push(new g.LoginUriView))}removeUri(e){if(this.cipher.type!==a.CipherType.Login||null==this.cipher.login.uris)return;const t=this.cipher.login.uris.indexOf(e);t>-1&&this.cipher.login.uris.splice(t,1)}trackByFunction(e,t){return e}cancel(){this.onCancelled.emit(this.cipher)}attachments(){this.onEditAttachments.emit(this.cipher)}share(){this.onShareCipher.emit(this.cipher)}editCollections(){this.onEditCollections.emit(this.cipher)}delete(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(this.cipher.isDeleted?"permanentlyDeleteItemConfirmation":"deleteItemConfirmation"),this.i18nService.t("deleteItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.deleteCipher(),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.cipher.isDeleted?"permanentlyDeletedItem":"deletedItem")),this.onDeletedCipher.emit(this.cipher),this.messagingService.send(this.cipher.isDeleted?"permanentlyDeletedCipher":"deletedCipher")}catch(e){this.logService.error(e)}return!0}))}restore(){return i(this,void 0,void 0,(function*(){if(!this.cipher.isDeleted)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("restoreItemConfirmation"),this.i18nService.t("restoreItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.restorePromise=this.restoreCipher(),yield this.restorePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItem")),this.onRestoredCipher.emit(this.cipher),this.messagingService.send("restoredCipher")}catch(e){this.logService.error(e)}return!0}))}generateUsername(){var e,t;return i(this,void 0,void 0,(function*(){if(null===(t=null===(e=this.cipher.login)||void 0===e?void 0:e.username)||void 0===t?void 0:t.length){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("overwriteUsernameConfirmation"),this.i18nService.t("overwriteUsername"),this.i18nService.t("yes"),this.i18nService.t("no"))))return!1}return this.onGenerateUsername.emit(),!0}))}generatePassword(){var e,t;return i(this,void 0,void 0,(function*(){if(null===(t=null===(e=this.cipher.login)||void 0===e?void 0:e.password)||void 0===t?void 0:t.length){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("overwritePasswordConfirmation"),this.i18nService.t("overwritePassword"),this.i18nService.t("yes"),this.i18nService.t("no"))))return!1}return this.onGeneratePassword.emit(),!0}))}togglePassword(){this.showPassword=!this.showPassword,document.getElementById("loginPassword").focus(),this.editMode&&this.showPassword&&this.eventService.collect(s.EventType.Cipher_ClientToggledPasswordVisible,this.cipherId)}toggleCardNumber(){return i(this,void 0,void 0,(function*(){this.showCardNumber=!this.showCardNumber,this.showCardNumber&&this.eventService.collect(s.EventType.Cipher_ClientToggledCardNumberVisible,this.cipherId)}))}toggleCardCode(){this.showCardCode=!this.showCardCode,document.getElementById("cardCode").focus(),this.editMode&&this.showCardCode&&this.eventService.collect(s.EventType.Cipher_ClientToggledCardCodeVisible,this.cipherId)}toggleUriOptions(e){const t=e;t.showOptions=(null!=t.showOptions||null==e.match)&&!t.showOptions}loginUriMatchChanged(e){const t=e;t.showOptions=null==t.showOptions||t.showOptions}organizationChanged(){return i(this,void 0,void 0,(function*(){if(null!=this.writeableCollections&&this.writeableCollections.forEach((e=>e.checked=!1)),null!=this.cipher.organizationId){this.collections=this.writeableCollections.filter((e=>e.organizationId===this.cipher.organizationId));const e=yield this.organizationService.get(this.cipher.organizationId);null!=e&&(this.cipher.organizationUseTotp=e.useTotp)}else this.collections=[]}))}checkPassword(){return i(this,void 0,void 0,(function*(){if(null!=this.checkPasswordPromise)return;if(null==this.cipher.login||null==this.cipher.login.password||""===this.cipher.login.password)return;this.checkPasswordPromise=this.auditService.passwordLeaked(this.cipher.login.password);const e=yield this.checkPasswordPromise;this.checkPasswordPromise=null,e>0?this.platformUtilsService.showToast("warning",null,this.i18nService.t("passwordExposed",e.toString())):this.platformUtilsService.showToast("success",null,this.i18nService.t("passwordSafe"))}))}repromptChanged(){this.reprompt=!this.reprompt,this.reprompt?this.cipher.reprompt=o.CipherRepromptType.Password:this.cipher.reprompt=o.CipherRepromptType.None}loadCollections(){return i(this,void 0,void 0,(function*(){return(yield this.collectionService.getAllDecrypted()).filter((e=>!e.readOnly))}))}loadCipher(){return this.cipherService.get(this.cipherId)}encryptCipher(){return this.cipherService.encrypt(this.cipher)}saveCipher(e){return this.cipherService.saveWithServer(e)}deleteCipher(){return this.cipher.isDeleted?this.cipherService.deleteWithServer(this.cipher.id):this.cipherService.softDeleteWithServer(this.cipher.id)}restoreCipher(){return this.cipherService.restoreWithServer(this.cipher.id)}}t.AddEditComponent=D,D.ɵfac=function(e){return new(e||D)(x.ɵɵdirectiveInject(S.CipherService),x.ɵɵdirectiveInject(b.FolderService),x.ɵɵdirectiveInject(w.I18nService),x.ɵɵdirectiveInject(C.PlatformUtilsService),x.ɵɵdirectiveInject(I.AuditService),x.ɵɵdirectiveInject(E.StateService),x.ɵɵdirectiveInject(P.CollectionService),x.ɵɵdirectiveInject(O.MessagingService),x.ɵɵdirectiveInject(k.EventService),x.ɵɵdirectiveInject(A.PolicyService),x.ɵɵdirectiveInject(T.LogService),x.ɵɵdirectiveInject(M.PasswordRepromptService),x.ɵɵdirectiveInject(B.OrganizationService))},D.ɵdir=x.ɵɵdefineDirective({type:D,inputs:{cloneMode:"cloneMode",folderId:"folderId",cipherId:"cipherId",type:"type",collectionIds:"collectionIds",organizationId:"organizationId"},outputs:{onSavedCipher:"onSavedCipher",onDeletedCipher:"onDeletedCipher",onRestoredCipher:"onRestoredCipher",onCancelled:"onCancelled",onEditAttachments:"onEditAttachments",onShareCipher:"onShareCipher",onEditCollections:"onEditCollections",onGeneratePassword:"onGeneratePassword",onGenerateUsername:"onGenerateUsername"}})},93705:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(33018)),a=n(32621),s=n(45330),l=n(51554),c=n(85714),d=n(73828),p=n(91674),u=n(36631),m=n(73569);class h{constructor(e,t,n,i,o,a,s,l){this.cipherService=e,this.i18nService=t,this.cryptoService=n,this.platformUtilsService=i,this.apiService=o,this.win=a,this.logService=s,this.stateService=l,this.onUploadedAttachment=new r.EventEmitter,this.onDeletedAttachment=new r.EventEmitter,this.onReuploadedAttachment=new r.EventEmitter,this.deletePromises={},this.reuploadPromises={},this.emergencyAccessId=null}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}submit(){return i(this,void 0,void 0,(function*(){if(!this.hasUpdatedKey)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("updateKey"));const e=document.getElementById("file"),t=e.files;if(null!=t&&0!==t.length)if(t[0].size>524288e3)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("maxFileSize"));else{try{this.formPromise=this.saveCipherAttachment(t[0]),this.cipherDomain=yield this.formPromise,this.cipher=yield this.cipherDomain.decrypt(),this.platformUtilsService.showToast("success",null,this.i18nService.t("attachmentSaved")),this.onUploadedAttachment.emit()}catch(n){this.logService.error(n)}e.type="",e.type="file",e.value=""}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}))}delete(e){return i(this,void 0,void 0,(function*(){if(null!=this.deletePromises[e.id])return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteAttachmentConfirmation"),this.i18nService.t("deleteAttachment"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")){try{this.deletePromises[e.id]=this.deleteCipherAttachment(e.id),yield this.deletePromises[e.id],this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedAttachment"));const t=this.cipher.attachments.indexOf(e);t>-1&&this.cipher.attachments.splice(t,1)}catch(t){this.logService.error(t)}this.deletePromises[e.id]=null,this.onDeletedAttachment.emit()}}))}download(e){return i(this,void 0,void 0,(function*(){const t=e;if(t.downloading)return;if(!this.canAccessAttachments)return void this.platformUtilsService.showToast("error",this.i18nService.t("premiumRequired"),this.i18nService.t("premiumRequiredDesc"));let n;try{n=(yield this.apiService.getAttachmentData(this.cipher.id,e.id,this.emergencyAccessId)).url}catch(r){if(!(r instanceof o.ErrorResponse&&404===r.statusCode))throw r instanceof o.ErrorResponse?new Error(r.getSingleMessage()):r;n=e.url}t.downloading=!0;const i=yield fetch(new Request(n,{cache:"no-store"}));if(200!==i.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(t.downloading=!1);try{const t=yield i.arrayBuffer(),n=null!=e.key?e.key:yield this.cryptoService.getOrgKey(this.cipher.organizationId),r=yield this.cryptoService.decryptFromBytes(t,n);this.platformUtilsService.saveFile(this.win,r,null,e.fileName)}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}t.downloading=!1}))}init(){return i(this,void 0,void 0,(function*(){this.cipherDomain=yield this.loadCipher(),this.cipher=yield this.cipherDomain.decrypt(),this.hasUpdatedKey=yield this.cryptoService.hasEncKey();const e=yield this.stateService.getCanAccessPremium();if(this.canAccessAttachments=e||null!=this.cipher.organizationId,this.canAccessAttachments){if(!this.hasUpdatedKey){(yield this.platformUtilsService.showDialog(this.i18nService.t("updateKey"),this.i18nService.t("featureUnavailable"),this.i18nService.t("learnMore"),this.i18nService.t("cancel"),"warning"))&&this.platformUtilsService.launchUri("https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key")}}else{(yield this.platformUtilsService.showDialog(this.i18nService.t("premiumRequiredDesc"),this.i18nService.t("premiumRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.platformUtilsService.launchUri("https://vault.bitwarden.com/#/?premium=purchase")}}))}reuploadCipherAttachment(e,t){return i(this,void 0,void 0,(function*(){const n=e;if(null==e.key&&!n.downloading&&null==this.reuploadPromises[e.id])try{this.reuploadPromises[e.id]=Promise.resolve().then((()=>i(this,void 0,void 0,(function*(){n.downloading=!0;const i=yield fetch(new Request(e.url,{cache:"no-store"}));if(200!==i.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(n.downloading=!1);try{const n=yield i.arrayBuffer(),r=null!=e.key?e.key:yield this.cryptoService.getOrgKey(this.cipher.organizationId),o=yield this.cryptoService.decryptFromBytes(n,r);this.cipherDomain=yield this.cipherService.saveAttachmentRawWithServer(this.cipherDomain,e.fileName,o,t),this.cipher=yield this.cipherDomain.decrypt(),this.deletePromises[e.id]=this.deleteCipherAttachment(e.id),yield this.deletePromises[e.id];const a=this.cipher.attachments.filter((t=>t.id===e.id));if(a.length>0){const e=this.cipher.attachments.indexOf(a[0]);e>-1&&this.cipher.attachments.splice(e,1)}this.platformUtilsService.showToast("success",null,this.i18nService.t("attachmentSaved")),this.onReuploadedAttachment.emit()}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}n.downloading=!1})))),yield this.reuploadPromises[e.id]}catch(r){this.logService.error(r)}}))}loadCipher(){return this.cipherService.get(this.cipherId)}saveCipherAttachment(e){return this.cipherService.saveAttachmentWithServer(this.cipherDomain,e)}deleteCipherAttachment(e){return this.cipherService.deleteAttachmentWithServer(this.cipher.id,e)}}t.AttachmentsComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.CryptoService),a.ɵɵdirectiveInject(d.PlatformUtilsService),a.ɵɵdirectiveInject(p.ApiService),a.ɵɵdirectiveInject(Window),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.StateService))},h.ɵdir=a.ɵɵdefineDirective({type:h,inputs:{cipherId:"cipherId"},outputs:{onUploadedAttachment:"onUploadedAttachment",onDeletedAttachment:"onDeletedAttachment",onReuploadedAttachment:"onReuploadedAttachment"}})},15370:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AvatarComponent=void 0;n(61248),n(1659),n(73569);const r=n(82769),o=n(32621),a=n(61248),s=n(1659),l=n(73569),c=n(57490),d=function(e){return{"rounded-circle":e}};function p(e,t){if(1&e&&o.ɵɵelement(0,"img",1),2&e){const e=o.ɵɵnextContext();o.ɵɵpropertyInterpolate("title",e.data),o.ɵɵproperty("src",e.sanitizer.bypassSecurityTrustResourceUrl(e.src),o.ɵɵsanitizeUrl)("ngClass",o.ɵɵpureFunction1(3,d,e.circle))}}class u{constructor(e,t,n){this.sanitizer=e,this.cryptoFunctionService=t,this.stateService=n,this.size=45,this.charCount=2,this.textColor="#ffffff",this.fontSize=20,this.fontWeight=300,this.dynamic=!1,this.circle=!1}ngOnInit(){this.dynamic||this.generate()}ngOnChanges(){this.dynamic&&this.generate()}generate(){return i(this,void 0,void 0,(function*(){if((yield this.stateService.getEnableGravitars())&&null!=this.email){const e=yield this.cryptoFunctionService.hash(this.email.toLowerCase().trim(),"md5"),t=r.Utils.fromBufferToHex(e).toLowerCase();this.src="https://www.gravatar.com/avatar/"+t+"?s="+this.size+"&r=pg&d=retro"}else{let e=null;const t=this.data.toUpperCase();this.charCount>1&&(e=this.getFirstLetters(t,this.charCount)),null==e&&(e=this.unicodeSafeSubstring(t,this.charCount)),e.match(r.Utils.regexpEmojiPresentation)&&(e=e.match(r.Utils.regexpEmojiPresentation)[0]);const n=this.getCharText(e),i=this.stringToColor(t),o=this.getSvg(this.size,i);o.appendChild(n);const a=window.document.createElement("div").appendChild(o).outerHTML,s=window.btoa(unescape(encodeURIComponent(a)));this.src="data:image/svg+xml;base64,"+s}}))}stringToColor(e){let t=0;for(let i=0;i>8*i&255).toString(16)).substr(-2)}return n}getFirstLetters(e,t){const n=e.split(" ");if(n.length>1){let e="";for(let i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutComponent=void 0;n(51554),n(27053);const i=n(32621),r=n(51554),o=n(57490),a=n(99729);function s(e,t){if(1&e&&i.ɵɵelement(0,"i",6),2&e){const e=i.ɵɵnextContext(2);i.ɵɵclassMapInterpolate1("bwi ",e.icon,"")}}function l(e,t){if(1&e&&(i.ɵɵelementStart(0,"h3",4),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,s,1,3,"i",5),i.ɵɵtext(3),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(2),i.ɵɵproperty("ngIf",e.icon),i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.title,"\n ")}}function c(e,t){if(1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext(2);i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectMinComplexity",e.getPasswordScoreAlertDisplay()),"\n ")}}function d(e,t){if(1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext(2);i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectMinLength",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minLength.toString()),"\n ")}}function p(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectUppercase"),"\n "))}function u(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectLowercase"),"\n "))}function m(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectNumbers"),"\n "))}function h(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectSpecial","!@#$%^&*"),"\n "))}function v(e,t){if(1&e&&(i.ɵɵelementStart(0,"div",7),i.ɵɵtext(1),i.ɵɵelementStart(2,"ul"),i.ɵɵtext(3,"\n "),i.ɵɵtemplate(4,c,3,4,"li",8),i.ɵɵtext(5,"\n "),i.ɵɵtemplate(6,d,3,4,"li",8),i.ɵɵtext(7,"\n "),i.ɵɵtemplate(8,p,3,3,"li",8),i.ɵɵtext(9,"\n "),i.ɵɵtemplate(10,u,3,3,"li",8),i.ɵɵtext(11,"\n "),i.ɵɵtemplate(12,m,3,3,"li",8),i.ɵɵtext(13,"\n "),i.ɵɵtemplate(14,h,3,4,"li",8),i.ɵɵtext(15,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(16,"\n "),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.enforcedPolicyMessage,"\n "),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",(null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minComplexity)>0),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",(null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minLength)>0),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireUpper),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireLower),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireNumbers),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireSpecial)}}const g=function(e){return{clickable:e}};class f{constructor(e){this.i18nService=e,this.type="info",this.useAlertRole=!1}ngOnInit(){this.calloutStyle=this.type,void 0===this.enforcedPolicyMessage&&(this.enforcedPolicyMessage=this.i18nService.t("masterPasswordPolicyInEffect")),"warning"===this.type||"danger"===this.type?("danger"===this.type&&(this.calloutStyle="danger"),void 0===this.title&&(this.title=this.i18nService.t("warning")),void 0===this.icon&&(this.icon="bwi-exclamation-triangle")):"error"===this.type?(this.calloutStyle="danger",void 0===this.title&&(this.title=this.i18nService.t("error")),void 0===this.icon&&(this.icon="bwi-error")):"tip"===this.type&&(this.calloutStyle="success",void 0===this.title&&(this.title=this.i18nService.t("tip")),void 0===this.icon&&(this.icon="bwi-lightbulb"))}getPasswordScoreAlertDisplay(){if(null==this.enforcedPolicyOptions)return"";let e;switch(this.enforcedPolicyOptions.minComplexity){case 4:e=this.i18nService.t("strong");break;case 3:e=this.i18nService.t("good");break;default:e=this.i18nService.t("weak")}return e+" ("+this.enforcedPolicyOptions.minComplexity+")"}}t.CalloutComponent=f,f.ɵfac=function(e){return new(e||f)(i.ɵɵdirectiveInject(r.I18nService))},f.ɵcmp=i.ɵɵdefineComponent({type:f,selectors:[["app-callout"]],inputs:{type:"type",icon:"icon",title:"title",clickable:"clickable",enforcedPolicyOptions:"enforcedPolicyOptions",enforcedPolicyMessage:"enforcedPolicyMessage",useAlertRole:"useAlertRole"},ngContentSelectors:["*"],decls:10,vars:9,consts:[[3,"ngClass"],["callout",""],["class","callout-heading",4,"ngIf"],["class","enforced-policy-options",4,"ngIf"],[1,"callout-heading"],["aria-hidden","true",3,"class",4,"ngIf"],["aria-hidden","true"],[1,"enforced-policy-options"],[4,"ngIf"]],template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵelementStart(0,"div",0,1),i.ɵɵtext(2,"\n "),i.ɵɵtemplate(3,l,4,2,"h3",2),i.ɵɵtext(4,"\n "),i.ɵɵtemplate(5,v,17,7,"div",3),i.ɵɵtext(6,"\n "),i.ɵɵprojection(7),i.ɵɵtext(8,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(9,"\n")),2&e&&(i.ɵɵclassMapInterpolate1("callout callout-",t.calloutStyle,""),i.ɵɵproperty("ngClass",i.ɵɵpureFunction1(7,g,t.clickable)),i.ɵɵattribute("role",t.useAlertRole?"alert":null),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",t.title),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.enforcedPolicyOptions))},directives:[o.NgClass,o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},60765:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CaptchaProtectedComponent=void 0;n(56071),n(51554),n(73828);const r=n(94700),o=n(82769),a=n(32621),s=n(56071),l=n(51554),c=n(73828);class d{constructor(e,t,n){this.environmentService=e,this.i18nService=t,this.platformUtilsService=n,this.captchaSiteKey=null,this.captchaToken=null}setupCaptcha(){return i(this,void 0,void 0,(function*(){const e=this.environmentService.getWebVaultUrl();this.captcha=new r.CaptchaIFrame(window,e,this.i18nService,(e=>{this.captchaToken=e}),(e=>{this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}),(e=>{this.platformUtilsService.showToast("info",this.i18nService.t("info"),e)}))}))}showCaptcha(){return!o.Utils.isNullOrWhitespace(this.captchaSiteKey)}handleCaptchaRequired(e){return!o.Utils.isNullOrWhitespace(e.captchaSiteKey)&&(this.captchaSiteKey=e.captchaSiteKey,this.captcha.init(e.captchaSiteKey),!0)}}t.CaptchaProtectedComponent=d,d.ɵfac=function(e){return new(e||d)(a.ɵɵdirectiveInject(s.EnvironmentService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService))},d.ɵdir=a.ɵɵdefineDirective({type:d,inputs:{captchaSiteKey:"captchaSiteKey"}})},16545:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePasswordComponent=void 0;n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569);const r=n(32621),o=n(51554),a=n(85714),s=n(45552),l=n(84275),c=n(73828),d=n(62166),p=n(73569);class u{constructor(e,t,n,i,r,o,a){this.i18nService=e,this.cryptoService=t,this.messagingService=n,this.passwordGenerationService=i,this.platformUtilsService=r,this.policyService=o,this.stateService=a}ngOnInit(){var e;return i(this,void 0,void 0,(function*(){this.email=yield this.stateService.getEmail(),null!==(e=this.enforcedPolicyOptions)&&void 0!==e||(this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions())}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.strongPassword()))return;if(!(yield this.setupSubmitActions()))return;const e=yield this.stateService.getEmail();null==this.kdf&&(this.kdf=yield this.stateService.getKdfType()),null==this.kdfIterations&&(this.kdfIterations=yield this.stateService.getKdfIterations());const t=yield this.cryptoService.makeKey(this.masterPassword,e.trim().toLowerCase(),this.kdf,this.kdfIterations),n=yield this.cryptoService.hashPassword(this.masterPassword,t);let i=null;i=null==(yield this.cryptoService.getEncKey())?yield this.cryptoService.makeEncKey(t):yield this.cryptoService.remakeEncKey(t),yield this.performSubmitActions(n,t,i)}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){}))}strongPassword(){return i(this,void 0,void 0,(function*(){if(null==this.masterPassword||""===this.masterPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;if(this.masterPassword.length<8)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength")),!1;if(this.masterPassword!==this.masterPasswordRetype)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassDoesntMatch")),!1;const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());if(null!=this.enforcedPolicyOptions&&!this.policyService.evaluateMasterPassword(e.score,this.masterPassword,this.enforcedPolicyOptions))return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet")),!1;if(null!=e&&e.score<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1}return!0}))}updatePasswordStrength(){null!=this.masterPasswordStrengthTimeout&&clearTimeout(this.masterPasswordStrengthTimeout),this.masterPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}logOut(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("logOutConfirmation"),this.i18nService.t("logOut"),this.i18nService.t("logOut"),this.i18nService.t("cancel")))&&this.messagingService.send("logout")}))}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),e}}t.ChangePasswordComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.CryptoService),r.ɵɵdirectiveInject(s.MessagingService),r.ɵɵdirectiveInject(l.PasswordGenerationService),r.ɵɵdirectiveInject(c.PlatformUtilsService),r.ɵɵdirectiveInject(d.PolicyService),r.ɵɵdirectiveInject(p.StateService))},u.ɵdir=r.ɵɵdefineDirective({type:u})},80008:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CiphersComponent=void 0;const r=n(32621),o=(n(60421),n(32621)),a=n(60421);class s{constructor(e){this.searchService=e,this.activeCipherId=null,this.onCipherClicked=new r.EventEmitter,this.onCipherRightClicked=new r.EventEmitter,this.onAddCipher=new r.EventEmitter,this.onAddCipherOptions=new r.EventEmitter,this.loaded=!1,this.ciphers=[],this.searchPlaceholder=null,this.filter=null,this.deleted=!1,this.searchPending=!1,this.searchTimeout=null,this.deletedFilter=e=>e.isDeleted===this.deleted}load(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.deleted=t||!1,yield this.applyFilter(e),this.loaded=!0}))}reload(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.loaded=!1,yield this.load(e,t)}))}refresh(){return i(this,void 0,void 0,(function*(){yield this.reload(this.filter,this.deleted)}))}applyFilter(e=null){return i(this,void 0,void 0,(function*(){this.filter=e,yield this.search(null)}))}search(e=null,t){return i(this,void 0,void 0,(function*(){this.searchPending=!1,null!=this.searchTimeout&&clearTimeout(this.searchTimeout),null!=e?(this.searchPending=!0,this.searchTimeout=setTimeout((()=>i(this,void 0,void 0,(function*(){yield this.doSearch(t),this.searchPending=!1}))),e)):yield this.doSearch(t)}))}selectCipher(e){this.onCipherClicked.emit(e)}rightClickCipher(e){this.onCipherRightClicked.emit(e)}addCipher(){this.onAddCipher.emit()}addCipherOptions(){this.onAddCipherOptions.emit()}isSearching(){return!this.searchPending&&this.searchService.isSearchable(this.searchText)}doSearch(e){return i(this,void 0,void 0,(function*(){this.ciphers=yield this.searchService.searchCiphers(this.searchText,[this.filter,this.deletedFilter],e)}))}}t.CiphersComponent=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(a.SearchService))},s.ɵdir=o.ɵɵdefineDirective({type:s,inputs:{activeCipherId:"activeCipherId"},outputs:{onCipherClicked:"onCipherClicked",onCipherRightClicked:"onCipherRightClicked",onAddCipher:"onAddCipher",onAddCipherOptions:"onAddCipherOptions"}})},84415:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const r=n(32621),o=(n(45330),n(3174),n(51554),n(36631),n(73828),n(32621)),a=n(3174),s=n(73828),l=n(51554),c=n(45330),d=n(36631);class p{constructor(e,t,n,i,o){this.collectionService=e,this.platformUtilsService=t,this.i18nService=n,this.cipherService=i,this.logService=o,this.allowSelectNone=!1,this.onSavedCollections=new r.EventEmitter,this.collections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.cipherDomain=yield this.loadCipher(),this.collectionIds=this.loadCipherCollections(),this.cipher=yield this.cipherDomain.decrypt(),this.collections=yield this.loadCollections(),this.collections.forEach((e=>e.checked=!1)),null!=this.collectionIds&&this.collections.forEach((e=>{e.checked=null!=this.collectionIds&&this.collectionIds.indexOf(e.id)>-1}))}))}submit(){return i(this,void 0,void 0,(function*(){const e=this.collections.filter((e=>!!e.checked)).map((e=>e.id));if(this.allowSelectNone||0!==e.length){this.cipherDomain.collectionIds=e;try{this.formPromise=this.saveCollections(),yield this.formPromise,this.onSavedCollections.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("editedItem"))}catch(t){this.logService.error(t)}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectOneCollection"))}))}loadCipher(){return this.cipherService.get(this.cipherId)}loadCipherCollections(){return this.cipherDomain.collectionIds}loadCollections(){return i(this,void 0,void 0,(function*(){return(yield this.collectionService.getAllDecrypted()).filter((e=>!e.readOnly&&e.organizationId===this.cipher.organizationId))}))}saveCollections(){return this.cipherService.saveCollectionsWithServer(this.cipherDomain)}}t.CollectionsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.CollectionService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.CipherService),o.ɵɵdirectiveInject(d.LogService))},p.ɵdir=o.ɵɵdefineDirective({type:p,inputs:{cipherId:"cipherId",allowSelectNone:"allowSelectNone"},outputs:{onSavedCollections:"onSavedCollections"}})},44995:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportScopeCalloutComponent=void 0;n(63513),n(73569);const r=n(32621),o=n(63513),a=n(73569),s=n(57490),l=n(51626),c=n(99729);function d(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"app-callout",1),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,e.scopeConfig.title)),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(5,4,e.scopeConfig.description,e.scopeConfig.scopeIdentifier),"\n ")}}class p{constructor(e,t){this.organizationService=e,this.stateService=t,this.organizationId=null,this.show=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){(yield this.organizationService.hasOrganizations())&&(this.scopeConfig=null!=this.organizationId?{title:"exportingOrganizationVaultTitle",description:"exportingOrganizationVaultDescription",scopeIdentifier:(yield this.organizationService.get(this.organizationId)).name}:{title:"exportingPersonalVaultTitle",description:"exportingPersonalVaultDescription",scopeIdentifier:yield this.stateService.getEmail()},this.show=!0)}))}}t.ExportScopeCalloutComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.OrganizationService),r.ɵɵdirectiveInject(a.StateService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-export-scope-callout"]],inputs:{organizationId:"organizationId"},decls:2,vars:1,consts:[[4,"ngIf"],["type","info",3,"title"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,7,7,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[s.NgIf,l.CalloutComponent],pipes:[c.I18nPipe],encapsulation:2})},21748:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;const r=n(32621),o=(n(96832),n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055),n(80253)),a=n(49906),s=n(32621),l=n(85714),c=n(51554),d=n(73828),p=n(97445),u=n(32034),m=n(62166),h=n(36631),v=n(57055),g=n(96832);class f{constructor(e,t,n,i,o,a,s,l,c,d){this.cryptoService=e,this.i18nService=t,this.platformUtilsService=n,this.exportService=i,this.eventService=o,this.policyService=a,this.win=s,this.logService=l,this.userVerificationService=c,this.formBuilder=d,this.onSaved=new r.EventEmitter,this.disabledByPolicy=!1,this.exportForm=this.formBuilder.group({format:["json"],secret:[""]}),this.formatOptions=[{name:".json",value:"json"},{name:".csv",value:"csv"},{name:".json (Encrypted)",value:"encrypted_json"}]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.checkExportDisabled()}))}checkExportDisabled(){return i(this,void 0,void 0,(function*(){this.disabledByPolicy=yield this.policyService.policyAppliesToUser(a.PolicyType.DisablePersonalVaultExport),this.disabledByPolicy&&this.exportForm.disable()}))}get encryptedFormat(){return"encrypted_json"===this.format}submit(){return i(this,void 0,void 0,(function*(){if(this.disabledByPolicy)return void this.platformUtilsService.showToast("error",null,this.i18nService.t("personalVaultExportPolicyInEffect"));if(!(yield this.warningDialog()))return;const e=this.exportForm.get("secret").value;try{yield this.userVerificationService.verifyUser(e)}catch(t){return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message)}try{this.formPromise=this.getExportData();const e=yield this.formPromise;this.downloadFile(e),this.saved(),yield this.collectEvent(),this.exportForm.get("secret").setValue("")}catch(t){this.logService.error(t)}}))}warningDialog(){return i(this,void 0,void 0,(function*(){return this.encryptedFormat?yield this.platformUtilsService.showDialog("

"+this.i18nService.t("encExportKeyWarningDesc")+"

"+this.i18nService.t("encExportAccountWarningDesc"),this.i18nService.t("confirmVaultExport"),this.i18nService.t("exportVault"),this.i18nService.t("cancel"),"warning",!0):yield this.platformUtilsService.showDialog(this.i18nService.t("exportWarningDesc"),this.i18nService.t("confirmVaultExport"),this.i18nService.t("exportVault"),this.i18nService.t("cancel"),"warning")}))}saved(){this.onSaved.emit()}getExportData(){return this.exportService.getExport(this.format)}getFileName(e){let t=this.format;return"encrypted_json"===this.format&&(e=null==e?"encrypted":"encrypted_"+e,t="json"),this.exportService.getFileName(e,t)}collectEvent(){return i(this,void 0,void 0,(function*(){yield this.eventService.collect(o.EventType.User_ClientExportedVault)}))}get format(){return this.exportForm.get("format").value}downloadFile(e){const t=this.getFileName();this.platformUtilsService.saveFile(this.win,e,{type:"text/plain"},t)}}t.ExportComponent=f,f.ɵfac=function(e){return new(e||f)(s.ɵɵdirectiveInject(l.CryptoService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.ExportService),s.ɵɵdirectiveInject(u.EventService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(Window),s.ɵɵdirectiveInject(h.LogService),s.ɵɵdirectiveInject(v.UserVerificationService),s.ɵɵdirectiveInject(g.FormBuilder))},f.ɵdir=s.ɵɵdefineDirective({type:f,outputs:{onSaved:"onSaved"}})},17301:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderAddEditComponent=void 0;const r=n(32621),o=(n(88308),n(51554),n(36631),n(73828),n(36914)),a=n(32621),s=n(88308),l=n(51554),c=n(73828),d=n(36631);class p{constructor(e,t,n,i){this.folderService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedFolder=new r.EventEmitter,this.onDeletedFolder=new r.EventEmitter,this.editMode=!1,this.folder=new o.FolderView}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.folder.name||""===this.folder.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;try{const e=yield this.folderService.encrypt(this.folder);return this.formPromise=this.folderService.saveWithServer(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedFolder":"addedFolder")),this.onSavedFolder.emit(this.folder),!0}catch(e){this.logService.error(e)}return!1}))}delete(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteFolderConfirmation"),this.i18nService.t("deleteFolder"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.folderService.deleteWithServer(this.folder.id),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedFolder")),this.onDeletedFolder.emit(this.folder)}catch(e){this.logService.error(e)}return!0}))}init(){return i(this,void 0,void 0,(function*(){if(this.editMode=null!=this.folderId,this.editMode){this.editMode=!0,this.title=this.i18nService.t("editFolder");const e=yield this.folderService.get(this.folderId);this.folder=yield e.decrypt()}else this.title=this.i18nService.t("addFolder")}))}}t.FolderAddEditComponent=p,p.ɵfac=function(e){return new(e||p)(a.ɵɵdirectiveInject(s.FolderService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.LogService))},p.ɵdir=a.ɵɵdefineDirective({type:p,inputs:{folderId:"folderId"},outputs:{onSavedFolder:"onSavedFolder",onDeletedFolder:"onDeletedFolder"}})},5675:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratorComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(51554),n(36631),n(84275),n(73828),n(73569),n(13444),n(32621)),s=n(84275),l=n(13444),c=n(73828),d=n(73569),p=n(51554),u=n(36631),m=n(68012);class h{constructor(e,t,n,i,o,a,s,l){this.passwordGenerationService=e,this.usernameGenerationService=t,this.platformUtilsService=n,this.stateService=i,this.i18nService=o,this.logService=a,this.route=s,this.win=l,this.comingFromAddEdit=!1,this.onSelected=new r.EventEmitter,this.usernameOptions={},this.passwordOptions={},this.username="-",this.password="-",this.showOptions=!1,this.avoidAmbiguous=!1,this.usernameWebsite=null,this.typeOptions=[{name:o.t("password"),value:"password"},{name:o.t("username"),value:"username"}],this.passTypeOptions=[{name:o.t("password"),value:"password"},{name:o.t("passphrase"),value:"passphrase"}],this.usernameTypeOptions=[{name:o.t("plusAddressedEmail"),value:"subaddress",desc:o.t("plusAddressedEmailDesc")},{name:o.t("catchallEmail"),value:"catchall",desc:o.t("catchallEmailDesc")},{name:o.t("forwardedEmail"),value:"forwarded",desc:o.t("forwardedEmailDesc")},{name:o.t("randomWord"),value:"word"}],this.subaddressOptions=[{name:o.t("random"),value:"random"}],this.catchallOptions=[{name:o.t("random"),value:"random"}],this.forwardOptions=[{name:"SimpleLogin",value:"simplelogin"},{name:"AnonAddy",value:"anonaddy"},{name:"Firefox Relay",value:"firefoxrelay"}]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){var t;const n=yield this.passwordGenerationService.getOptions();if(this.passwordOptions=n[0],this.enforcedPasswordPolicyOptions=n[1],this.avoidAmbiguous=!this.passwordOptions.ambiguous,this.passwordOptions.type="passphrase"===this.passwordOptions.type?"passphrase":"password",this.usernameOptions=yield this.usernameGenerationService.getOptions(),null==this.usernameOptions.type&&(this.usernameOptions.type="word"),null!=this.usernameOptions.subaddressEmail&&""!==this.usernameOptions.subaddressEmail||(this.usernameOptions.subaddressEmail=yield this.stateService.getEmail()),null==this.usernameWebsite)this.usernameOptions.subaddressType=this.usernameOptions.catchallType="random";else{this.usernameOptions.website=this.usernameWebsite;const e={name:this.i18nService.t("websiteName"),value:"website-name"};this.subaddressOptions.push(e),this.catchallOptions.push(e)}if("username"!==this.type&&"password"!==this.type)if("username"===e.type||"password"===e.type)this.type=e.type;else{const e=yield this.stateService.getGeneratorOptions();this.type=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:"password"}this.regenerateWithoutButtonPress()&&(yield this.regenerate())}))))}))}typeChanged(){return i(this,void 0,void 0,(function*(){yield this.stateService.setGeneratorOptions({type:this.type}),this.regenerateWithoutButtonPress()&&(yield this.regenerate())}))}regenerate(){return i(this,void 0,void 0,(function*(){"password"===this.type?yield this.regeneratePassword():"username"===this.type&&(yield this.regenerateUsername())}))}sliderChanged(){return i(this,void 0,void 0,(function*(){this.savePasswordOptions(!1),yield this.passwordGenerationService.addHistory(this.password)}))}sliderInput(){return i(this,void 0,void 0,(function*(){this.normalizePasswordOptions(),this.password=yield this.passwordGenerationService.generatePassword(this.passwordOptions)}))}savePasswordOptions(e=!0){return i(this,void 0,void 0,(function*(){this.normalizePasswordOptions(),yield this.passwordGenerationService.saveOptions(this.passwordOptions),e&&this.regenerateWithoutButtonPress()&&(yield this.regeneratePassword())}))}saveUsernameOptions(e=!0){return i(this,void 0,void 0,(function*(){yield this.usernameGenerationService.saveOptions(this.usernameOptions),"forwarded"===this.usernameOptions.type&&(this.username="-"),e&&this.regenerateWithoutButtonPress()&&(yield this.regenerateUsername())}))}regeneratePassword(){return i(this,void 0,void 0,(function*(){this.password=yield this.passwordGenerationService.generatePassword(this.passwordOptions),yield this.passwordGenerationService.addHistory(this.password)}))}regenerateUsername(){return this.generateUsername()}generateUsername(){return i(this,void 0,void 0,(function*(){try{this.usernameGeneratingPromise=this.usernameGenerationService.generateUsername(this.usernameOptions),this.username=yield this.usernameGeneratingPromise,""!==this.username&&null!==this.username||(this.username="-")}catch(e){this.logService.error(e)}}))}copy(){const e="password"===this.type,t=null!=this.win?{window:this.win}:null;this.platformUtilsService.copyToClipboard(e?this.password:this.username,t),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(e?"password":"username")))}select(){this.onSelected.emit("password"===this.type?this.password:this.username)}toggleOptions(){this.showOptions=!this.showOptions}regenerateWithoutButtonPress(){return"username"!==this.type||"forwarded"!==this.usernameOptions.type}normalizePasswordOptions(){if(this.passwordOptions.ambiguous=!this.avoidAmbiguous,!(this.passwordOptions.uppercase||this.passwordOptions.lowercase||this.passwordOptions.number||this.passwordOptions.special)&&(this.passwordOptions.lowercase=!0,null!=this.win)){const e=this.win.document.querySelector("#lowercase");e&&(e.checked=!0)}this.passwordGenerationService.normalizeOptions(this.passwordOptions,this.enforcedPasswordPolicyOptions)}}t.GeneratorComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.PasswordGenerationService),a.ɵɵdirectiveInject(l.UsernameGenerationService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.I18nService),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.ActivatedRoute),a.ɵɵdirectiveInject(Window))},h.ɵdir=a.ɵɵdefineDirective({type:h,inputs:{comingFromAddEdit:"comingFromAddEdit",type:"type"},outputs:{onSelected:"onSelected"}})},43337:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HintComponent=void 0;const r=n(77992);t.HintComponent=class{constructor(e,t,n,i,r){this.router=e,this.i18nService=t,this.apiService=n,this.platformUtilsService=i,this.logService=r,this.email="",this.successRoute="login"}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.email&&""!==this.email)if(-1!==this.email.indexOf("@"))try{this.formPromise=this.apiService.postPasswordHint(new r.PasswordHintRequest(this.email)),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("masterPassSent")),null!=this.onSuccessfulSubmit?this.onSuccessfulSubmit():null!=this.router&&this.router.navigate([this.successRoute])}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"))}))}}},18310:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.IconComponent=void 0;n(56071),n(73569);const r=n(32773),o=n(82769),a=(n(97144),n(32621)),s=n(56071),l=n(73569),c=n(57490),d=n(23042);function p(e,t){if(1&e&&a.ɵɵelement(0,"img",3),2&e){const e=a.ɵɵnextContext();a.ɵɵpropertyInterpolate("appFallbackSrc",e.fallbackImage),a.ɵɵproperty("src",e.image,a.ɵɵsanitizeUrl)}}function u(e,t){if(1&e&&a.ɵɵelement(0,"i"),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMapInterpolate1("bwi bwi-fw bwi-lg ",e.icon,"")}}const m={Visa:"card-visa",Mastercard:"card-mastercard",Amex:"card-amex",Discover:"card-discover","Diners Club":"card-diners-club",JCB:"card-jcb",Maestro:"card-maestro",UnionPay:"card-union-pay"};class h{constructor(e,t){this.stateService=t,this.iconsUrl=e.getIconsUrl()}ngOnChanges(){return i(this,void 0,void 0,(function*(){this.image=null,this.fallbackImage=null,this.imageEnabled=!(yield this.stateService.getDisableFavicon()),this.load()}))}load(){switch(this.cipher.type){case r.CipherType.Login:this.icon="bwi-globe",this.setLoginIcon();break;case r.CipherType.SecureNote:this.icon="bwi-sticky-note";break;case r.CipherType.Card:this.icon="bwi-credit-card",this.setCardIcon();break;case r.CipherType.Identity:this.icon="bwi-id-card"}}setLoginIcon(){if(this.cipher.login.uri){let t=this.cipher.login.uri,n=!1;if(0===t.indexOf("androidapp://")?(this.icon="bwi-android",this.image=null):0===t.indexOf("iosapp://")?(this.icon="bwi-apple",this.image=null):this.imageEnabled&&-1===t.indexOf("://")&&t.indexOf(".")>-1?(t="http://"+t,n=!0):this.imageEnabled&&(n=0===t.indexOf("http")&&t.indexOf(".")>-1),this.imageEnabled&&n)try{this.image=this.iconsUrl+"/"+o.Utils.getHostname(t)+"/icon.png",this.fallbackImage="images/bwi-globe.png"}catch(e){}}else this.image=null}setCardIcon(){const e=this.cipher.card.brand;this.imageEnabled&&e in m&&(this.icon="credit-card-icon "+m[e])}}t.IconComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.EnvironmentService),a.ɵɵdirectiveInject(l.StateService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["app-vault-icon"]],inputs:{cipher:"cipher"},features:[a.ɵɵNgOnChangesFeature],decls:7,vars:2,consts:[["aria-hidden","true",1,"icon"],["alt","","decoding","async","loading","lazy",3,"src","appFallbackSrc",4,"ngIf"],[3,"class",4,"ngIf"],["alt","","decoding","async","loading","lazy",3,"src","appFallbackSrc"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,p,1,2,"img",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,u,1,3,"i",2),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n")),2&e&&(a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.imageEnabled&&t.image),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.imageEnabled||!t.image))},directives:[c.NgIf,d.FallbackSrcDirective],encapsulation:2})},33793:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockComponent=void 0;n(32621),n(68012);const r=n(14857),o=(n(91674),n(85714),n(56071),n(51554),n(72277),n(36631),n(45552),n(73828),n(73569),n(82656),n(43578)),a=n(7980),s=n(82769),l=n(22205),c=n(36119),d=n(32621),p=n(68012),u=n(51554),m=n(73828),h=n(45552),v=n(85714),g=n(82656),f=n(56071),y=n(73569),x=n(91674),S=n(36631),b=n(72277);class w{constructor(e,t,n,i,r,o,a,s,l,c,d,p){this.router=e,this.i18nService=t,this.platformUtilsService=n,this.messagingService=i,this.cryptoService=r,this.vaultTimeoutService=o,this.environmentService=a,this.stateService=s,this.apiService=l,this.logService=c,this.keyConnectorService=d,this.ngZone=p,this.masterPassword="",this.pin="",this.showPassword=!1,this.pinLock=!1,this.webVaultHostname="",this.successRoute="vault",this.invalidPinAttempts=0}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.stateService.activeAccount.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.load()}))))}))}submit(){return i(this,void 0,void 0,(function*(){if(this.pinLock&&(null==this.pin||""===this.pin))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("pinRequired"));if(!this.pinLock&&(null==this.masterPassword||""===this.masterPassword))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));const e=yield this.stateService.getKdfType(),t=yield this.stateService.getKdfIterations();if(this.pinLock){let i=!0;try{if(this.pinSet[0]){const n=yield this.cryptoService.makeKeyFromPin(this.pin,this.email,e,t,yield this.stateService.getDecryptedPinProtected()),r=yield this.cryptoService.getEncKey(n),o=yield this.stateService.getProtectedPin();i=(yield this.cryptoService.decryptToUtf8(new l.EncString(o),r))!==this.pin,i||(yield this.setKeyAndContinue(n))}else{const n=yield this.cryptoService.makeKeyFromPin(this.pin,this.email,e,t);i=!1,yield this.setKeyAndContinue(n)}}catch(n){i=!0}if(i){if(this.invalidPinAttempts++,this.invalidPinAttempts>=5)return void this.messagingService.send("logout");this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidPin"))}}else{const n=yield this.cryptoService.makeKey(this.masterPassword,this.email,e,t);let r=!1;if(null!=(yield this.cryptoService.getKeyHash()))r=yield this.cryptoService.compareAndUpdateKeyHash(this.masterPassword,n);else{const e=new c.SecretVerificationRequest,t=yield this.cryptoService.hashPassword(this.masterPassword,n,o.HashPurpose.ServerAuthorization);e.masterPasswordHash=t;try{this.formPromise=this.apiService.postAccountVerifyPassword(e),yield this.formPromise,r=!0;const t=yield this.cryptoService.hashPassword(this.masterPassword,n,o.HashPurpose.LocalAuthorization);yield this.cryptoService.setKeyHash(t)}catch(i){this.logService.error(i)}}if(r){if(this.pinSet[0]){const i=yield this.stateService.getProtectedPin(),r=yield this.cryptoService.getEncKey(n),o=yield this.cryptoService.decryptToUtf8(new l.EncString(i),r),a=yield this.cryptoService.makePinKey(o,this.email,e,t);yield this.stateService.setDecryptedPinProtected(yield this.cryptoService.encrypt(n.key,a))}yield this.setKeyAndContinue(n)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidMasterPassword"))}}))}logOut(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("logOutConfirmation"),this.i18nService.t("logOut"),this.i18nService.t("logOut"),this.i18nService.t("cancel")))&&this.messagingService.send("logout")}))}unlockBiometric(){return i(this,void 0,void 0,(function*(){if(!this.biometricLock)return;const e=null!=(yield this.cryptoService.getKey(a.KeySuffixOptions.Biometric));return e&&(yield this.doContinue()),e}))}togglePassword(){this.showPassword=!this.showPassword;const e=document.getElementById(this.pinLock?"pin":"masterPassword");this.ngZone.isStable?e.focus():this.ngZone.onStable.pipe(r.take(1)).subscribe((()=>e.focus()))}setKeyAndContinue(e){return i(this,void 0,void 0,(function*(){yield this.cryptoService.setKey(e),yield this.doContinue()}))}doContinue(){return i(this,void 0,void 0,(function*(){yield this.stateService.setBiometricLocked(!1),yield this.stateService.setEverBeenUnlocked(!0);const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),this.messagingService.send("unlocked"),null!=this.onSuccessfulSubmit?yield this.onSuccessfulSubmit():null!=this.router&&this.router.navigate([this.successRoute])}))}load(){return i(this,void 0,void 0,(function*(){this.pinSet=yield this.vaultTimeoutService.isPinLockSet(),this.pinLock=this.pinSet[0]&&null!=(yield this.stateService.getDecryptedPinProtected())||this.pinSet[1],this.supportsBiometric=yield this.platformUtilsService.supportsBiometric(),this.biometricLock=(yield this.vaultTimeoutService.isBiometricLockSet())&&((yield this.cryptoService.hasKeyStored(a.KeySuffixOptions.Biometric))||!this.platformUtilsService.supportsSecureStorage()),this.biometricText=yield this.stateService.getBiometricText(),this.email=yield this.stateService.getEmail();const e=yield this.keyConnectorService.getUsesKeyConnector();this.hideInput=e&&!this.pinLock,!e||this.biometricLock||this.pinLock||(yield this.vaultTimeoutService.logOut());const t=this.environmentService.getWebVaultUrl(),n="https://vault.bitwarden.com"===t?"https://bitwarden.com":t;this.webVaultHostname=s.Utils.getHostname(n)}))}}t.LockComponent=w,w.ɵfac=function(e){return new(e||w)(d.ɵɵdirectiveInject(p.Router),d.ɵɵdirectiveInject(u.I18nService),d.ɵɵdirectiveInject(m.PlatformUtilsService),d.ɵɵdirectiveInject(h.MessagingService),d.ɵɵdirectiveInject(v.CryptoService),d.ɵɵdirectiveInject(g.VaultTimeoutService),d.ɵɵdirectiveInject(f.EnvironmentService),d.ɵɵdirectiveInject(y.StateService),d.ɵɵdirectiveInject(x.ApiService),d.ɵɵdirectiveInject(S.LogService),d.ɵɵdirectiveInject(b.KeyConnectorService),d.ɵɵdirectiveInject(d.NgZone))},w.ɵdir=d.ɵɵdefineDirective({type:w})},13744:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginComponent=void 0;n(32621),n(68012);const r=n(14857),o=(n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(82769)),a=n(70045),s=n(60765),l=n(32621),c=n(62694),d=n(68012),p=n(73828),u=n(51554),m=n(73569),h=n(56071),v=n(84275),g=n(1659),f=n(36631);class y extends s.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(o,i,n),this.authService=e,this.router=t,this.stateService=r,this.passwordGenerationService=a,this.cryptoFunctionService=s,this.logService=l,this.ngZone=c,this.email="",this.rememberEmail=!0,this.masterPassword="",this.showPassword=!1,this.twoFactorRoute="2fa",this.successRoute="vault",this.forcePasswordResetRoute="update-temp-password",this.alwaysRememberEmail=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){null!=this.email&&""!==this.email||(this.email=yield this.stateService.getRememberedEmail(),null==this.email&&(this.email="")),this.alwaysRememberEmail||(this.rememberEmail=null!=(yield this.stateService.getRememberedEmail())),o.Utils.isBrowser&&!o.Utils.isNode&&this.focusInput()}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.setupCaptcha(),null!=this.email&&""!==this.email)if(-1!==this.email.indexOf("@"))if(null!=this.masterPassword&&""!==this.masterPassword)try{const e=new a.PasswordLogInCredentials(this.email,this.masterPassword,this.captchaToken,null);this.formPromise=this.authService.logIn(e);const t=yield this.formPromise;if(this.rememberEmail||this.alwaysRememberEmail?yield this.stateService.setRememberedEmail(this.email):yield this.stateService.setRememberedEmail(null),this.handleCaptchaRequired(t))return;if(t.requiresTwoFactor)null!=this.onSuccessfulLoginTwoFactorNavigate?this.onSuccessfulLoginTwoFactorNavigate():this.router.navigate([this.twoFactorRoute]);else if(t.forcePasswordReset)null!=this.onSuccessfulLoginForceResetNavigate?this.onSuccessfulLoginForceResetNavigate():this.router.navigate([this.forcePasswordResetRoute]);else{const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute])}}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"))}))}togglePassword(){this.showPassword=!this.showPassword,this.ngZone.isStable?document.getElementById("masterPassword").focus():this.ngZone.onStable.pipe(r.take(1)).subscribe((()=>document.getElementById("masterPassword").focus()))}launchSsoBrowser(e,t){return i(this,void 0,void 0,(function*(){const n={type:"password",length:64,uppercase:!0,lowercase:!0,numbers:!0,special:!1},i=yield this.passwordGenerationService.generatePassword(n),r=yield this.passwordGenerationService.generatePassword(n),a=yield this.cryptoFunctionService.hash(r,"sha256"),s=o.Utils.fromBufferToUrlB64(a);yield this.stateService.setSsoState(i),yield this.stateService.setSsoCodeVerifier(r);const l=this.environmentService.getWebVaultUrl();this.platformUtilsService.launchUri(l+"/#/sso?clientId="+e+"&redirectUri="+encodeURIComponent(t)+"&state="+i+"&codeChallenge="+s)}))}focusInput(){document.getElementById(null==this.email||""===this.email?"email":"masterPassword").focus()}}t.LoginComponent=y,y.ɵfac=function(e){return new(e||y)(l.ɵɵdirectiveInject(c.AuthService),l.ɵɵdirectiveInject(d.Router),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.I18nService),l.ɵɵdirectiveInject(m.StateService),l.ɵɵdirectiveInject(h.EnvironmentService),l.ɵɵdirectiveInject(v.PasswordGenerationService),l.ɵɵdirectiveInject(g.CryptoFunctionService),l.ɵɵdirectiveInject(f.LogService),l.ɵɵdirectiveInject(l.NgZone))},y.ɵdir=l.ɵɵdefineDirective({type:y,inputs:{email:"email",rememberEmail:"rememberEmail"},features:[l.ɵɵInheritDefinitionFeature]})},83249:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DynamicModalComponent=void 0;n(46915);const i=n(32621),r=(n(64684),n(38387),n(32621)),o=n(64684),a=n(46915),s=n(38387),l=["modalContent"];function c(e,t){}class d{constructor(e,t,n,i,r){this.modalService=e,this.cd=t,this.el=n,this.focusTrapFactory=i,this.modalRef=r}ngAfterViewInit(){this.loadChildComponent(this.childComponentType),null!=this.setComponentParameters&&this.setComponentParameters(this.componentRef.instance),this.cd.detectChanges(),this.modalRef.created(this.el.nativeElement),this.focusTrap=this.focusTrapFactory.create(this.el.nativeElement.querySelector(".modal-dialog")),null==this.el.nativeElement.querySelector("[appAutoFocus]")&&this.focusTrap.focusFirstTabbableElementWhenReady()}loadChildComponent(e){const t=this.modalService.resolveComponentFactory(e);this.modalContentRef.clear(),this.componentRef=this.modalContentRef.createComponent(t)}ngOnDestroy(){this.componentRef&&this.componentRef.destroy(),this.focusTrap.destroy()}close(){this.modalRef.close()}getFocus(){const e=this.el.nativeElement.querySelector("[appAutoFocus]");null==e||e.focus()}}t.DynamicModalComponent=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵdirectiveInject(o.ModalService),r.ɵɵdirectiveInject(r.ChangeDetectorRef),r.ɵɵdirectiveInject(r.ElementRef),r.ɵɵdirectiveInject(a.ConfigurableFocusTrapFactory),r.ɵɵdirectiveInject(s.ModalRef))},d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-modal"]],viewQuery:function(e,t){if(1&e&&r.ɵɵviewQuery(l,7,i.ViewContainerRef),2&e){let e;r.ɵɵqueryRefresh(e=r.ɵɵloadQuery())&&(t.modalContentRef=e.first)}},decls:2,vars:0,consts:[["modalContent",""]],template:function(e,t){1&e&&r.ɵɵtemplate(0,c,0,0,"ng-template",null,0,r.ɵɵtemplateRefExtractor)},encapsulation:2})},64050:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalInjector=void 0;t.ModalInjector=class{constructor(e,t){this._parentInjector=e,this._additionalTokens=t}get(e,t,n){var i;return null!==(i=this._additionalTokens.get(e))&&void 0!==i?i:this._parentInjector.get(e,t)}}},38387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalRef=void 0;const i=n(72872),r=n(14857);t.ModalRef=class{constructor(){this._onCreated=new i.Subject,this._onClose=new i.Subject,this._onClosed=new i.Subject,this._onShow=new i.Subject,this._onShown=new i.Subject,this.onCreated=this._onCreated.asObservable(),this.onClose=this._onClose.asObservable(),this.onClosed=this._onClosed.asObservable(),this.onShow=this._onShow.asObservable(),this.onShown=this._onShow.asObservable()}show(){this._onShow.next()}shown(){this._onShown.next()}close(e){this.lastResult=e,this._onClose.next(e)}closed(){this._onClosed.next(this.lastResult)}created(e){this._onCreated.next(e)}onClosedPromise(){return this.onClosed.pipe(r.first()).toPromise()}}},61738:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorHistoryComponent=void 0;n(51554),n(84275),n(73828);const r=n(32621),o=n(84275),a=n(73828),s=n(51554);class l{constructor(e,t,n,i){this.passwordGenerationService=e,this.platformUtilsService=t,this.i18nService=n,this.win=i,this.history=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.history=yield this.passwordGenerationService.getHistory()}))}clear(){this.history=[],this.passwordGenerationService.clear()}copy(e){const t=null!=this.win?{window:this.win}:null;this.platformUtilsService.copyToClipboard(e,t),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t("password")))}}t.PasswordGeneratorHistoryComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.PasswordGenerationService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(Window))},l.ɵdir=r.ɵɵdefineDirective({type:l})},38991:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptComponent=void 0;n(85714),n(51554),n(73828),n(38387);const r=n(32621),o=n(38387),a=n(85714),s=n(73828),l=n(51554);class c{constructor(e,t,n,i){this.modalRef=e,this.cryptoService=t,this.platformUtilsService=n,this.i18nService=i,this.showPassword=!1,this.masterPassword=""}togglePassword(){this.showPassword=!this.showPassword}submit(){return i(this,void 0,void 0,(function*(){(yield this.cryptoService.compareAndUpdateKeyHash(this.masterPassword,null))?this.modalRef.close(!0):this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidMasterPassword"))}))}}t.PasswordRepromptComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.ModalRef),r.ɵɵdirectiveInject(a.CryptoService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.I18nService))},c.ɵdir=r.ɵɵdefineDirective({type:c})},11405:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterComponent=void 0;n(68012),n(91674),n(62694),n(85714),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569);const r=n(20971),o=n(74284),a=n(6556),s=n(60765),l=n(32621),c=n(62694),d=n(68012),p=n(51554),u=n(85714),m=n(91674),h=n(73569),v=n(73828),g=n(84275),f=n(56071),y=n(36631);class x extends s.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(l,n,a),this.authService=e,this.router=t,this.cryptoService=i,this.apiService=r,this.stateService=o,this.passwordGenerationService=s,this.logService=c,this.name="",this.email="",this.masterPassword="",this.confirmMasterPassword="",this.hint="",this.showPassword=!1,this.showTerms=!0,this.acceptPolicies=!1,this.successRoute="login",this.showTerms=!a.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.setupCaptcha()}))}get masterPasswordScoreWidth(){return null==this.masterPasswordScore?0:20*(this.masterPasswordScore+1)}get masterPasswordScoreColor(){switch(this.masterPasswordScore){case 4:return"success";case 3:return"primary";case 2:return"warning";default:return"danger"}}get masterPasswordScoreText(){switch(this.masterPasswordScore){case 4:return this.i18nService.t("strong");case 3:return this.i18nService.t("good");case 2:return this.i18nService.t("weak");default:return null!=this.masterPasswordScore?this.i18nService.t("weak"):null}}submit(){return i(this,void 0,void 0,(function*(){if(!this.acceptPolicies&&this.showTerms)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("acceptPoliciesError"));if(null==this.email||""===this.email)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"));if(-1===this.email.indexOf("@"))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));if(null==this.masterPassword||""===this.masterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));if(this.masterPassword.length<8)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength"));if(this.masterPassword!==this.confirmMasterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassDoesntMatch"));const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());if(null!=e&&e.score<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return}if(this.hint===this.masterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("hintEqualsPassword"));this.name=""===this.name?null:this.name,this.email=this.email.trim().toLowerCase();const t=r.DEFAULT_KDF_TYPE,n=r.DEFAULT_KDF_ITERATIONS,i=yield this.cryptoService.makeKey(this.masterPassword,this.email,t,n),s=yield this.cryptoService.makeEncKey(i),l=yield this.cryptoService.hashPassword(this.masterPassword,i),c=yield this.cryptoService.makeKeyPair(s[0]),d=new a.RegisterRequest(this.email,this.name,l,this.hint,s[1].encryptedString,t,n,this.referenceData,this.captchaToken);d.keys=new o.KeysRequest(c[0],c[1].encryptedString);const p=yield this.stateService.getOrganizationInvitation();null!=p&&null!=p.token&&null!=p.organizationUserId&&(d.token=p.token,d.organizationUserId=p.organizationUserId);try{this.formPromise=this.apiService.postRegister(d);try{yield this.formPromise}catch(u){if(this.handleCaptchaRequired(u))return;throw u}this.platformUtilsService.showToast("success",null,this.i18nService.t("newAccountCreated")),this.router.navigate([this.successRoute],{queryParams:{email:this.email}})}catch(u){this.logService.error(u)}}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}updatePasswordStrength(){null!=this.masterPasswordStrengthTimeout&&clearTimeout(this.masterPasswordStrengthTimeout),this.masterPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),null!=this.name&&""!==this.name&&(e=e.concat(this.name.trim().toLowerCase().split(" "))),e}}t.RegisterComponent=x,x.ɵfac=function(e){return new(e||x)(l.ɵɵdirectiveInject(c.AuthService),l.ɵɵdirectiveInject(d.Router),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(u.CryptoService),l.ɵɵdirectiveInject(m.ApiService),l.ɵɵdirectiveInject(h.StateService),l.ɵɵdirectiveInject(v.PlatformUtilsService),l.ɵɵdirectiveInject(g.PasswordGenerationService),l.ɵɵdirectiveInject(f.EnvironmentService),l.ɵɵdirectiveInject(y.LogService))},x.ɵdir=l.ɵɵdefineDirective({type:x,features:[l.ɵɵInheritDefinitionFeature]})},42893:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RemovePasswordComponent=void 0;n(68012),n(91674),n(51554),n(72277),n(73828),n(73569),n(9724);const r=n(32621),o=n(68012),a=n(73569),s=n(91674),l=n(9724),c=n(73828),d=n(51554),p=n(72277);class u{constructor(e,t,n,i,r,o,a){this.router=e,this.stateService=t,this.apiService=n,this.syncService=i,this.platformUtilsService=r,this.i18nService=o,this.keyConnectorService=a,this.continuing=!1,this.leaving=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.organization=yield this.keyConnectorService.getManagingOrganization(),this.email=yield this.stateService.getEmail(),yield this.syncService.fullSync(!1),this.loading=!1}))}convert(){return i(this,void 0,void 0,(function*(){this.continuing=!0,this.actionPromise=this.keyConnectorService.migrateUser();try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedMasterPassword")),yield this.keyConnectorService.removeConvertAccountRequired(),this.router.navigate([""])}catch(e){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e.message)}}))}leave(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("leaveOrganizationConfirmation"),this.organization.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.leaving=!0,this.actionPromise=this.apiService.postLeaveOrganization(this.organization.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("leftOrganization")),yield this.keyConnectorService.removeConvertAccountRequired(),this.router.navigate([""])}catch(e){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}}))}}t.RemovePasswordComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.StateService),r.ɵɵdirectiveInject(s.ApiService),r.ɵɵdirectiveInject(l.SyncService),r.ɵɵdirectiveInject(c.PlatformUtilsService),r.ɵɵdirectiveInject(d.I18nService),r.ɵɵdirectiveInject(p.KeyConnectorService))},u.ɵdir=r.ɵɵdefineDirective({type:u})},83810:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(57490);const r=n(32621),o=(n(56071),n(51554),n(36631),n(45552),n(73828),n(62166),n(76532),n(73569),n(49906)),a=n(70149),s=n(22620),l=n(59884),c=n(1725),d=n(32621),p=n(51554),u=n(73828),m=n(56071),h=n(57490),v=n(76532),g=n(45552),f=n(62166),y=n(36631),x=n(73569);class S{constructor(e,t,n,i,o,s,l,c,d){this.i18nService=e,this.platformUtilsService=t,this.environmentService=n,this.datePipe=i,this.sendService=o,this.messagingService=s,this.policyService=l,this.logService=c,this.stateService=d,this.onSavedSend=new r.EventEmitter,this.onDeletedSend=new r.EventEmitter,this.onCancelled=new r.EventEmitter,this.copyLink=!1,this.disableSend=!1,this.disableHideEmail=!1,this.showPassword=!1,this.sendType=a.SendType,this.canAccessPremium=!0,this.emailVerified=!0,this.alertShown=!1,this.showOptions=!1,this.typeOptions=[{name:e.t("sendTypeFile"),value:a.SendType.File},{name:e.t("sendTypeText"),value:a.SendType.Text}],this.sendLinkBaseUrl=this.environmentService.getSendUrl()}get link(){return null!=this.send.id&&null!=this.send.accessId?this.sendLinkBaseUrl+this.send.accessId+"/"+this.send.urlB64Key:null}get isSafari(){return this.platformUtilsService.isSafari()}get isDateTimeLocalSupported(){return!(this.platformUtilsService.isFirefox()||this.platformUtilsService.isSafari())}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}get editMode(){return null!=this.sendId}get title(){return this.i18nService.t(this.editMode?"editSend":"createSend")}setDates(e){this.deletionDate=e.deletionDate,this.expirationDate=e.expirationDate}load(){return i(this,void 0,void 0,(function*(){if(this.disableSend=yield this.policyService.policyAppliesToUser(o.PolicyType.DisableSend),this.disableHideEmail=yield this.policyService.policyAppliesToUser(o.PolicyType.SendOptions,(e=>e.data.disableHideEmail)),this.canAccessPremium=yield this.stateService.getCanAccessPremium(),this.emailVerified=yield this.stateService.getEmailVerified(),this.canAccessPremium&&this.emailVerified||(this.type=a.SendType.Text),null==this.send)if(this.editMode){const e=yield this.loadSend();this.send=yield e.decrypt()}else this.send=new c.SendView,this.send.type=null==this.type?a.SendType.File:this.type,this.send.file=new s.SendFileView,this.send.text=new l.SendTextView,this.send.deletionDate=new Date,this.send.deletionDate.setDate(this.send.deletionDate.getDate()+7);this.hasPassword=null!=this.send.password&&""!==this.send.password.trim()}))}submit(){return i(this,void 0,void 0,(function*(){if(this.disableSend)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("sendDisabledWarning")),!1;if(null==this.send.name||""===this.send.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;let e=null;if(this.send.type===a.SendType.File&&!this.editMode){const t=document.getElementById("file").files;if(null==t||0===t.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"));if(e=t[0],t[0].size>524288e3)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("maxFileSize"))}null!=this.password&&""===this.password.trim()&&(this.password=null),this.formPromise=this.encryptSend(e).then((e=>i(this,void 0,void 0,(function*(){const t=this.sendService.saveWithServer(e);if(yield t,null==this.send.id&&(this.send.id=e[0].id),null==this.send.accessId&&(this.send.accessId=e[0].accessId),this.onSavedSend.emit(this.send),this.copyLink&&null!=this.link){const e=yield this.copyLinkToClipboard(this.link);null==e||e?this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedSend":"createdSend")):(yield this.platformUtilsService.showDialog(this.i18nService.t(this.editMode?"editedSend":"createdSend"),null,this.i18nService.t("ok"),null,"success",null),yield this.copyLinkToClipboard(this.link))}}))));try{return yield this.formPromise,!0}catch(t){this.logService.error(t)}return!1}))}copyLinkToClipboard(e){return i(this,void 0,void 0,(function*(){return Promise.resolve(this.platformUtilsService.copyToClipboard(e))}))}delete(){return i(this,void 0,void 0,(function*(){if(null!=this.deletePromise)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteSendConfirmation"),this.i18nService.t("deleteSend"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{return this.deletePromise=this.sendService.deleteWithServer(this.send.id),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedSend")),yield this.load(),this.onDeletedSend.emit(this.send),!0}catch(e){this.logService.error(e)}return!1}))}typeChanged(){this.send.type!==a.SendType.File||this.alertShown||(this.canAccessPremium?this.emailVerified||(this.alertShown=!0,this.messagingService.send("emailVerificationRequired")):(this.alertShown=!0,this.messagingService.send("premiumRequired")))}toggleOptions(){this.showOptions=!this.showOptions}loadSend(){return i(this,void 0,void 0,(function*(){return this.sendService.get(this.sendId)}))}encryptSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.sendService.encrypt(this.send,e,this.password,null);try{t[0].deletionDate=null==this.deletionDate?null:new Date(this.deletionDate)}catch(n){t[0].deletionDate=null}try{t[0].expirationDate=null==this.expirationDate?null:new Date(this.expirationDate)}catch(i){t[0].expirationDate=null}return t}))}togglePasswordVisible(){this.showPassword=!this.showPassword,document.getElementById("password").focus()}}t.AddEditComponent=S,S.ɵfac=function(e){return new(e||S)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.PlatformUtilsService),d.ɵɵdirectiveInject(m.EnvironmentService),d.ɵɵdirectiveInject(h.DatePipe),d.ɵɵdirectiveInject(v.SendService),d.ɵɵdirectiveInject(g.MessagingService),d.ɵɵdirectiveInject(f.PolicyService),d.ɵɵdirectiveInject(y.LogService),d.ɵɵdirectiveInject(x.StateService))},S.ɵdir=d.ɵɵdefineDirective({type:S,inputs:{sendId:"sendId",type:"type"},outputs:{onSavedSend:"onSavedSend",onDeletedSend:"onDeletedSend",onCancelled:"onCancelled"}})},95546:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EffluxDatesComponent=void 0;n(57490);const i=n(32621),r=n(96832),o=(n(51554),n(73828),n(32621)),a=n(51554),s=n(73828),l=n(57490);var c,d,p;!function(e){e.Default="default",e.Firefox="firefox",e.Safari="safari"}(c||(c={})),function(e){e.DeletionDate="deletion",e.ExpriationDate="expiration"}(d||(d={})),function(e){e[e.OneHour=1]="OneHour",e[e.OneDay=24]="OneDay",e[e.TwoDays=48]="TwoDays",e[e.ThreeDays=72]="ThreeDays",e[e.SevenDays=168]="SevenDays",e[e.ThirtyDays=720]="ThirtyDays",e[e.Custom=0]="Custom",e[e.Never=null]="Never"}(p||(p={}));class u{constructor(e,t,n){this.i18nService=e,this.platformUtilsService=t,this.datePipe=n,this.datesChanged=new i.EventEmitter,this.datesForm=new r.FormGroup({selectedDeletionDatePreset:new r.FormControl,selectedExpirationDatePreset:new r.FormControl,defaultDeletionDateTime:new r.FormControl,defaultExpirationDateTime:new r.FormControl,fallbackDeletionDate:new r.FormControl,fallbackDeletionTime:new r.FormControl,fallbackExpirationDate:new r.FormControl,fallbackExpirationTime:new r.FormControl}),this.deletionDatePresets=[{name:this.i18nService.t("oneHour"),value:p.OneHour},{name:this.i18nService.t("oneDay"),value:p.OneDay},{name:this.i18nService.t("days","2"),value:p.TwoDays},{name:this.i18nService.t("days","3"),value:p.ThreeDays},{name:this.i18nService.t("days","7"),value:p.SevenDays},{name:this.i18nService.t("days","30"),value:p.ThirtyDays},{name:this.i18nService.t("custom"),value:p.Custom}],this.expirationDatePresets=[{name:this.i18nService.t("never"),value:p.Never}].concat([...this.deletionDatePresets])}get browserPath(){return this.platformUtilsService.isFirefox()?c.Firefox:this.platformUtilsService.isSafari()?c.Safari:c.Default}get selectedDeletionDatePreset(){return this.datesForm.get("selectedDeletionDatePreset")}get selectedExpirationDatePreset(){return this.datesForm.get("selectedExpirationDatePreset")}get defaultDeletionDateTime(){return this.datesForm.get("defaultDeletionDateTime")}get defaultExpirationDateTime(){return this.datesForm.get("defaultExpirationDateTime")}get fallbackDeletionDate(){return this.datesForm.get("fallbackDeletionDate")}get fallbackDeletionTime(){return this.datesForm.get("fallbackDeletionTime")}get fallbackExpirationDate(){return this.datesForm.get("fallbackExpirationDate")}get fallbackExpirationTime(){return this.datesForm.get("fallbackExpirationTime")}get formattedDeletionDate(){switch(this.selectedDeletionDatePreset.value){case p.Never:return this.selectedDeletionDatePreset.setValue(p.SevenDays),this.formattedDeletionDate;case p.Custom:switch(this.browserPath){case c.Safari:case c.Firefox:return this.fallbackDeletionDate.value+"T"+this.fallbackDeletionTime.value;default:return this.defaultDeletionDateTime.value}default:{const e=new Date,t=e.setTime(e.getTime()+60*this.selectedDeletionDatePreset.value*60*1e3);return new Date(t).toString()}}}get formattedExpirationDate(){switch(this.selectedExpirationDatePreset.value){case p.Never:return null;case p.Custom:switch(this.browserPath){case c.Safari:case c.Firefox:return this.fallbackExpirationDate.value&&this.fallbackExpirationTime.value||!this.editMode?this.fallbackExpirationDate.value+"T"+this.fallbackExpirationTime.value:null;default:return this.defaultExpirationDateTime.value?this.defaultExpirationDateTime.value:null}default:{const e=new Date,t=e.setTime(e.getTime()+60*this.selectedExpirationDatePreset.value*60*1e3);return new Date(t).toString()}}}get safariDeletionTimePresetOptions(){return this.safariTimePresetOptions(d.DeletionDate)}get safariExpirationTimePresetOptions(){return this.safariTimePresetOptions(d.ExpriationDate)}get nextWeek(){const e=new Date;return e.setDate(e.getDate()+7),e}ngOnInit(){this.setInitialFormValues(),this.emitDates(),this.datesForm.valueChanges.subscribe((()=>{this.emitDates()}))}onDeletionDatePresetSelect(e){this.selectedDeletionDatePreset.setValue(e)}clearExpiration(){switch(this.browserPath){case c.Safari:case c.Firefox:this.fallbackExpirationDate.setValue(null),this.fallbackExpirationTime.setValue(null);break;case c.Default:this.defaultExpirationDateTime.setValue(null)}}emitDates(){this.datesChanged.emit({deletionDate:this.formattedDeletionDate,expirationDate:this.formattedExpirationDate})}setInitialFormValues(){if(this.editMode)switch(this.selectedDeletionDatePreset.setValue(p.Custom),this.selectedExpirationDatePreset.setValue(p.Custom),this.browserPath){case c.Safari:case c.Firefox:this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0,10)),this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0,5)),null!=this.initialExpirationDate&&(this.fallbackExpirationDate.setValue(this.initialExpirationDate.toISOString().slice(0,10)),this.fallbackExpirationTime.setValue(this.initialExpirationDate.toTimeString().slice(0,5)));break;case c.Default:this.initialExpirationDate&&this.defaultExpirationDateTime.setValue(this.datePipe.transform(new Date(this.initialExpirationDate),"yyyy-MM-ddTHH:mm")),this.defaultDeletionDateTime.setValue(this.datePipe.transform(new Date(this.initialDeletionDate),"yyyy-MM-ddTHH:mm"))}else if(this.selectedDeletionDatePreset.setValue(p.SevenDays),this.selectedExpirationDatePreset.setValue(p.Never),this.browserPath===c.Safari)this.fallbackDeletionDate.setValue(this.nextWeek.toISOString().slice(0,10)),this.fallbackDeletionTime.setValue(this.safariTimePresetOptions(d.DeletionDate)[1].twentyFourHour)}safariTimePresetOptions(e){const t=[],n=[],i=[],r=[];for(let a=1;a<=12;a++)for(let e=0;e<60;e+=15){let o=a.toString(),s=e.toString();if(a<10&&(o="0"+o),e<10&&(s="0"+s),12===a){const e={twelveHour:`${o}:${s} AM`,twentyFourHour:`00:${s}`};n.push(e);const i={twelveHour:`${o}:${s} PM`,twentyFourHour:`${o}:${s}`};t.push(i)}else{const e={twelveHour:`${o}:${s} AM`,twentyFourHour:`${o}:${s}`};i.push(e);const t={twelveHour:`${o}:${s} PM`,twentyFourHour:`${a+12}:${s}`};r.push(t)}}const o=[...n,...i,...t,...r];if(e===d.ExpriationDate&&null!=this.initialExpirationDate&&this.editMode){return[{twelveHour:this.datePipe.transform(this.initialExpirationDate,"hh:mm a"),twentyFourHour:this.datePipe.transform(this.initialExpirationDate,"HH:mm")},{twelveHour:null,twentyFourHour:null},...o]}if(e===d.DeletionDate&&null!=this.initialDeletionDate&&this.editMode){return[{twelveHour:this.datePipe.transform(this.initialDeletionDate,"hh:mm a"),twentyFourHour:this.datePipe.transform(this.initialDeletionDate,"HH:mm")},...o]}return[{twelveHour:null,twentyFourHour:null},...o]}}t.EffluxDatesComponent=u,u.ɵfac=function(e){return new(e||u)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.DatePipe))},u.ɵdir=o.ɵɵdefineDirective({type:u,inputs:{initialDeletionDate:"initialDeletionDate",initialExpirationDate:"initialExpirationDate",editMode:"editMode",disabled:"disabled"},outputs:{datesChanged:"datesChanged"}})},23446:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendComponent=void 0;n(32621),n(56071),n(51554),n(36631),n(73828),n(62166),n(60421),n(76532);const r=n(49906),o=n(70149),a=n(32621),s=n(76532),l=n(51554),c=n(73828),d=n(56071),p=n(60421),u=n(62166),m=n(36631);class h{constructor(e,t,n,i,r,a,s,l){this.sendService=e,this.i18nService=t,this.platformUtilsService=n,this.environmentService=i,this.ngZone=r,this.searchService=a,this.policyService=s,this.logService=l,this.disableSend=!1,this.sendType=o.SendType,this.loaded=!1,this.loading=!0,this.refreshing=!1,this.expired=!1,this.type=null,this.sends=[],this.filteredSends=[],this.searchPending=!1,this.hasSearched=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.disableSend=yield this.policyService.policyAppliesToUser(r.PolicyType.DisableSend)}))}load(e=null){return i(this,void 0,void 0,(function*(){this.loading=!0;const e=yield this.sendService.getAllDecrypted();this.sends=e,null!=this.onSuccessfulLoad?yield this.onSuccessfulLoad():this.selectAll(),this.loading=!1,this.loaded=!0}))}reload(e=null){return i(this,void 0,void 0,(function*(){this.loaded=!1,this.sends=[],yield this.load(e)}))}refresh(){return i(this,void 0,void 0,(function*(){try{this.refreshing=!0,yield this.reload(this.filter)}finally{this.refreshing=!1}}))}applyFilter(e=null){return i(this,void 0,void 0,(function*(){this.filter=e,yield this.search(null)}))}search(e=null){return i(this,void 0,void 0,(function*(){if(this.searchPending=!1,null!=this.searchTimeout&&clearTimeout(this.searchTimeout),null==e)return this.hasSearched=this.searchService.isSearchable(this.searchText),this.filteredSends=this.sends.filter((e=>null==this.filter||this.filter(e))),void this.applyTextSearch();this.searchPending=!0,this.searchTimeout=setTimeout((()=>i(this,void 0,void 0,(function*(){this.hasSearched=this.searchService.isSearchable(this.searchText),this.filteredSends=this.sends.filter((e=>null==this.filter||this.filter(e))),this.applyTextSearch(),this.searchPending=!1}))),e)}))}removePassword(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise||null==e.password)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removePasswordConfirmation"),this.i18nService.t("removePassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.sendService.removePasswordWithServer(e.id),yield this.actionPromise,null!=this.onSuccessfulRemovePassword?this.onSuccessfulRemovePassword():(this.platformUtilsService.showToast("success",null,this.i18nService.t("removedPassword")),yield this.load())}catch(t){this.logService.error(t)}this.actionPromise=null}))}delete(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteSendConfirmation"),this.i18nService.t("deleteSend"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.sendService.deleteWithServer(e.id),yield this.actionPromise,null!=this.onSuccessfulDelete?this.onSuccessfulDelete():(this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedSend")),yield this.refresh())}catch(t){this.logService.error(t)}return this.actionPromise=null,!0}))}copy(e){const t=this.environmentService.getSendUrl()+e.accessId+"/"+e.urlB64Key;this.platformUtilsService.copyToClipboard(t),this.platformUtilsService.showToast("success",null,this.i18nService.t("valueCopied",this.i18nService.t("sendLink")))}searchTextChanged(){this.search(200)}selectAll(){this.clearSelections(),this.selectedAll=!0,this.applyFilter(null)}selectType(e){this.clearSelections(),this.selectedType=e,this.applyFilter((t=>t.type===e))}clearSelections(){this.selectedAll=!1,this.selectedType=null}applyTextSearch(){null!=this.searchText&&(this.filteredSends=this.searchService.searchSends(this.filteredSends,this.searchText))}}t.SendComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.SendService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.EnvironmentService),a.ɵɵdirectiveInject(a.NgZone),a.ɵɵdirectiveInject(p.SearchService),a.ɵɵdirectiveInject(u.PolicyService),a.ɵɵdirectiveInject(m.LogService))},h.ɵdir=a.ɵɵdefineDirective({type:h})},24656:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(43578)),a=n(20971),s=n(82769),l=n(74284),c=n(27784),d=n(57751),p=n(16545),u=n(32621),m=n(51554),h=n(85714),v=n(45552),g=n(84275),f=n(73828),y=n(62166),x=n(68012),S=n(91674),b=n(9724),w=n(73569);class C extends p.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,d),this.router=a,this.apiService=s,this.syncService=l,this.route=c,this.syncLoading=!0,this.showPassword=!1,this.hint="",this.identifier=null,this.resetPasswordAutoEnroll=!1,this.successRoute="vault"}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){if(yield this.syncService.fullSync(!0),this.syncLoading=!1,this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){null!=e.identifier&&(this.identifier=e.identifier)})))),null!=this.identifier)try{const e=yield this.apiService.getOrganizationAutoEnrollStatus(this.identifier);this.orgId=e.id,this.resetPasswordAutoEnroll=e.resetPasswordEnabled,this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPoliciesForInvitedUsers(this.orgId)}catch(t){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}e.ngOnInit.call(this)}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return this.kdf=a.DEFAULT_KDF_TYPE,this.kdfIterations=a.DEFAULT_KDF_ITERATIONS,!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){const r=yield this.cryptoService.makeKeyPair(n[0]),o=new d.SetPasswordRequest(e,n[1].encryptedString,this.hint,this.kdf,this.kdfIterations,this.identifier,new l.KeysRequest(r[0],r[1].encryptedString));try{this.resetPasswordAutoEnroll?this.formPromise=this.apiService.setPassword(o).then((()=>i(this,void 0,void 0,(function*(){return yield this.onSetPasswordSuccess(t,n,r),this.apiService.getOrganizationKeys(this.orgId)})))).then((e=>i(this,void 0,void 0,(function*(){if(null==e)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const t=yield this.stateService.getUserId(),n=s.Utils.fromB64ToArray(e.publicKey),i=yield this.cryptoService.getEncKey(),r=yield this.cryptoService.rsaEncrypt(i.key,n.buffer),o=new c.OrganizationUserResetPasswordEnrollmentRequest;return o.resetPasswordKey=r.encryptedString,this.apiService.putOrganizationUserResetPasswordEnrollment(this.orgId,t,o)})))):this.formPromise=this.apiService.setPassword(o).then((()=>i(this,void 0,void 0,(function*(){yield this.onSetPasswordSuccess(t,n,r)})))),yield this.formPromise,null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.router.navigate([this.successRoute])}catch(a){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}onSetPasswordSuccess(e,t,n){return i(this,void 0,void 0,(function*(){yield this.stateService.setKdfType(this.kdf),yield this.stateService.setKdfIterations(this.kdfIterations),yield this.cryptoService.setKey(e),yield this.cryptoService.setEncKey(t[1].encryptedString),yield this.cryptoService.setEncPrivateKey(n[1].encryptedString);const i=yield this.cryptoService.hashPassword(this.masterPassword,e,o.HashPurpose.LocalAuthorization);yield this.cryptoService.setKeyHash(i)}))}}t.SetPasswordComponent=C,C.ɵfac=function(e){return new(e||C)(u.ɵɵdirectiveInject(m.I18nService),u.ɵɵdirectiveInject(h.CryptoService),u.ɵɵdirectiveInject(v.MessagingService),u.ɵɵdirectiveInject(g.PasswordGenerationService),u.ɵɵdirectiveInject(f.PlatformUtilsService),u.ɵɵdirectiveInject(y.PolicyService),u.ɵɵdirectiveInject(x.Router),u.ɵɵdirectiveInject(S.ApiService),u.ɵɵdirectiveInject(b.SyncService),u.ɵɵdirectiveInject(x.ActivatedRoute),u.ɵɵdirectiveInject(w.StateService))},C.ɵdir=u.ɵɵdefineDirective({type:C,features:[u.ɵɵInheritDefinitionFeature]})},96853:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutInputComponent=void 0;n(96832),n(51554),n(62166);const r=n(49906),o=n(32621),a=n(96832),s=n(62166),l=n(51554);class c{constructor(e,t,n){this.formBuilder=e,this.policyService=t,this.i18nService=n,this.form=this.formBuilder.group({vaultTimeout:[null],custom:this.formBuilder.group({hours:[null],minutes:[null]})})}get showCustom(){return this.form.get("vaultTimeout").value===c.CUSTOM_VALUE}ngOnInit(){return i(this,void 0,void 0,(function*(){if(yield this.policyService.policyAppliesToUser(r.PolicyType.MaximumVaultTimeout)){const e=yield this.policyService.getAll(r.PolicyType.MaximumVaultTimeout);this.vaultTimeoutPolicy=e[0],this.vaultTimeoutPolicyHours=Math.floor(this.vaultTimeoutPolicy.data.minutes/60),this.vaultTimeoutPolicyMinutes=this.vaultTimeoutPolicy.data.minutes%60,this.vaultTimeouts=this.vaultTimeouts.filter((e=>e.value<=this.vaultTimeoutPolicy.data.minutes&&(e.value>0||e.value===c.CUSTOM_VALUE)&&null!=e.value)),this.validatorChange()}this.form.valueChanges.subscribe((e=>i(this,void 0,void 0,(function*(){this.onChange(this.getVaultTimeout(e))})))),this.form.get("vaultTimeout").valueChanges.subscribe((e=>{if(e!==c.CUSTOM_VALUE)return;const t=Math.max(this.form.value.vaultTimeout,0);this.form.patchValue({custom:{hours:Math.floor(t/60),minutes:t%60}})}))}))}ngOnChanges(){this.vaultTimeouts.push({name:this.i18nService.t("custom"),value:c.CUSTOM_VALUE})}getVaultTimeout(e){return e.vaultTimeout!==c.CUSTOM_VALUE?e.vaultTimeout:60*e.custom.hours+e.custom.minutes}writeValue(e){null!=e&&(this.vaultTimeouts.every((t=>t.value!==e))?this.form.setValue({vaultTimeout:c.CUSTOM_VALUE,custom:{hours:Math.floor(e/60),minutes:e%60}}):this.form.patchValue({vaultTimeout:e}))}registerOnChange(e){this.onChange=e}registerOnTouched(e){}setDisabledState(e){}validate(e){var t,n;return this.vaultTimeoutPolicy&&(null===(n=null===(t=this.vaultTimeoutPolicy)||void 0===t?void 0:t.data)||void 0===n?void 0:n.minutes)e)).filter((e=>!e.readOnly));const t=yield this.organizationService.getAll();this.organizations=t.sort(a.Utils.getSortFunction(this.i18nService,"name")).filter((e=>e.enabled&&e.status===o.OrganizationUserStatusType.Confirmed));const n=yield this.cipherService.get(this.cipherId);this.cipher=yield n.decrypt(),null==this.organizationId&&this.organizations.length>0&&(this.organizationId=this.organizations[0].id),this.filterCollections()}))}filterCollections(){this.writeableCollections.forEach((e=>e.checked=!1)),null==this.organizationId||0===this.writeableCollections.length?this.collections=[]:this.collections=this.writeableCollections.filter((e=>e.organizationId===this.organizationId))}submit(){var e,t;return i(this,void 0,void 0,(function*(){const n=this.collections.filter((e=>!!e.checked)).map((e=>e.id));if(0===n.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectOneCollection"));const r=yield this.cipherService.get(this.cipherId),o=yield r.decrypt(),a=null!==(t=null===(e=this.organizations.find((e=>e.id===this.organizationId)))||void 0===e?void 0:e.name)&&void 0!==t?t:this.i18nService.t("organization");try{return this.formPromise=this.cipherService.shareWithServer(o,this.organizationId,n).then((()=>i(this,void 0,void 0,(function*(){this.onSharedCipher.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItemToOrg",o.name,a))})))),yield this.formPromise,!0}catch(s){this.logService.error(s)}return!1}))}get canSave(){if(null!=this.collections)for(let e=0;ei(this,void 0,void 0,(function*(){if(null!=e.code&&null!=e.state){const t=yield this.stateService.getSsoCodeVerifier(),n=yield this.stateService.getSsoState();yield this.stateService.setSsoCodeVerifier(null),yield this.stateService.setSsoState(null),null!=e.code&&null!=t&&null!=n&&this.checkState(n,e.state)&&(yield this.logIn(e.code,t,this.getOrgIdentifierFromState(e.state)))}else null!=e.clientId&&null!=e.redirectUri&&null!=e.state&&null!=e.codeChallenge&&(this.redirectUri=e.redirectUri,this.state=e.state,this.codeChallenge=e.codeChallenge,this.clientId=e.clientId)}))))}))}submit(e,t){return i(this,void 0,void 0,(function*(){if(this.initiateSsoFormPromise=this.preValidate(),yield this.initiateSsoFormPromise){const n=yield this.buildAuthorizeUrl(e,t);this.platformUtilsService.launchUri(n,{sameWindow:!0})}}))}preValidate(){return i(this,void 0,void 0,(function*(){return null==this.identifier||""===this.identifier?(this.platformUtilsService.showToast("error",this.i18nService.t("ssoValidationFailed"),this.i18nService.t("ssoIdentifierRequired")),!1):yield this.apiService.preValidateSso(this.identifier)}))}buildAuthorizeUrl(e,t){return i(this,void 0,void 0,(function*(){let n=this.codeChallenge,i=this.state;const r={type:"password",length:64,uppercase:!0,lowercase:!0,numbers:!0,special:!1};if(null==n){const e=yield this.passwordGenerationService.generatePassword(r),t=yield this.cryptoFunctionService.hash(e,"sha256");n=o.Utils.fromBufferToUrlB64(t),yield this.stateService.setSsoCodeVerifier(e)}null==i&&(i=yield this.passwordGenerationService.generatePassword(r),e&&(i+=`_returnUri='${e}'`)),i+=`_identifier=${this.identifier}`,yield this.stateService.setSsoState(i);let a=this.environmentService.getIdentityUrl()+"/connect/authorize?client_id="+this.clientId+"&redirect_uri="+encodeURIComponent(this.redirectUri)+"&response_type=code&scope=api offline_access&state="+i+"&code_challenge="+n+"&code_challenge_method=S256&response_mode=query&domain_hint="+encodeURIComponent(this.identifier);if(t){const e=yield this.apiService.getSsoUserIdentifier();a+=`&user_identifier=${encodeURIComponent(e)}`}return a}))}logIn(e,t,n){return i(this,void 0,void 0,(function*(){this.loggingIn=!0;try{const i=new a.SsoLogInCredentials(e,t,this.redirectUri,n);this.formPromise=this.authService.logIn(i);const r=yield this.formPromise;if(r.requiresTwoFactor)null!=this.onSuccessfulLoginTwoFactorNavigate?this.onSuccessfulLoginTwoFactorNavigate():this.router.navigate([this.twoFactorRoute],{queryParams:{identifier:n,sso:"true"}});else if(r.resetMasterPassword)null!=this.onSuccessfulLoginChangePasswordNavigate?this.onSuccessfulLoginChangePasswordNavigate():this.router.navigate([this.changePasswordRoute],{queryParams:{identifier:n}});else if(r.forcePasswordReset)null!=this.onSuccessfulLoginForceResetNavigate?this.onSuccessfulLoginForceResetNavigate():this.router.navigate([this.forcePasswordResetRoute]);else{const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute])}}catch(i){this.logService.error(i),"Key Connector error"===i.message&&this.platformUtilsService.showToast("error",null,this.i18nService.t("ssoKeyConnectorError"))}this.loggingIn=!1}))}getOrgIdentifierFromState(e){if(null==e)return null;const t=e.split("_identifier=");return t.length>1?t[1]:null}checkState(e,t){if(null==e)return!1;if(null==t)return!1;const n=e.split("_identifier="),i=t.split("_identifier=");return n[0]===i[0]}}t.SsoComponent=y,y.ɵfac=function(e){return new(e||y)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.ApiService),s.ɵɵdirectiveInject(h.CryptoFunctionService),s.ɵɵdirectiveInject(v.EnvironmentService),s.ɵɵdirectiveInject(g.PasswordGenerationService),s.ɵɵdirectiveInject(f.LogService))},y.ɵdir=s.ɵɵdefineDirective({type:y})},59703:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenToastModule=t.BitwardenToastGlobalConfig=t.BitwardenToast=void 0;const i=n(98212),r=n(57490),o=(n(32621),n(68290)),a=n(32621),s=n(68290),l=n(57490);function c(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",6),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().remove()})),a.ɵɵelementStart(1,"span",7),a.ɵɵtext(2,"×"),a.ɵɵelementEnd(),a.ɵɵelementEnd()}}function d(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("[",e.duplicatesCount+1,"]")}}function p(e,t){if(1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1),a.ɵɵtemplate(2,d,2,1,"ng-container",5),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.titleClass),a.ɵɵattribute("aria-label",e.title),a.ɵɵadvance(1),a.ɵɵtextInterpolate1(" ",e.title," "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.duplicatesCount)}}function u(e,t){if(1&e&&a.ɵɵelement(0,"div",8),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.messageClass),a.ɵɵproperty("innerHTML",e.message,a.ɵɵsanitizeHtml)}}function m(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",9),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.messageClass),a.ɵɵattribute("aria-label",e.message),a.ɵɵadvance(1),a.ɵɵtextInterpolate1(" ",e.message," ")}}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵelement(1,"div",10),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵstyleProp("width",e.width+"%")}}class v extends o.Toast{constructor(e,t){super(e,t),this.toastrService=e,this.toastPackage=t}}t.BitwardenToast=v,v.ɵfac=function(e){return new(e||v)(a.ɵɵdirectiveInject(s.ToastrService),a.ɵɵdirectiveInject(s.ToastPackage))},v.ɵcmp=a.ɵɵdefineComponent({type:v,selectors:[["","toast-component2",""]],features:[a.ɵɵInheritDefinitionFeature],attrs:["toast-component2",""],decls:8,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[1,"icon"],[3,"class",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alertdialog","aria-live","polite",3,"innerHTML"],["role","alertdialog","aria-live","polite"],[1,"toast-progress"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,c,3,0,"button",0),a.ɵɵelementStart(1,"div",1),a.ɵɵelement(2,"i"),a.ɵɵelementEnd(),a.ɵɵelementStart(3,"div"),a.ɵɵtemplate(4,p,3,5,"div",2),a.ɵɵtemplate(5,u,1,3,"div",3),a.ɵɵtemplate(6,m,2,4,"div",4),a.ɵɵelementEnd(),a.ɵɵtemplate(7,h,2,2,"div",5)),2&e&&(a.ɵɵproperty("ngIf",t.options.closeButton),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.title),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.message&&t.options.enableHtml),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.message&&!t.options.enableHtml),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.options.progressBar))},directives:[l.NgIf],encapsulation:2,data:{animation:[i.trigger("flyInOut",[i.state("inactive",i.style({opacity:0})),i.state("active",i.style({opacity:1})),i.state("removed",i.style({opacity:0})),i.transition("inactive => active",i.animate("{{ easeTime }}ms {{ easing }}")),i.transition("active => removed",i.animate("{{ easeTime }}ms {{ easing }}"))])]}}),t.BitwardenToastGlobalConfig=Object.assign(Object.assign({},o.DefaultNoComponentGlobalConfig),{toastComponent:v});class g{static forRoot(e={}){return{ngModule:g,providers:[{provide:o.TOAST_CONFIG,useValue:{default:t.BitwardenToastGlobalConfig,config:e}}]}}}t.BitwardenToastModule=g,g.ɵfac=function(e){return new(e||g)},g.ɵmod=a.ɵɵdefineNgModule({type:g}),g.ɵinj=a.ɵɵdefineInjector({imports:[[r.CommonModule]]})},63736:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorOptionsComponent=void 0;const i=n(32621),r=(n(68012),n(51554),n(73828),n(27458),n(32621)),o=n(27458),a=n(68012),s=n(51554),l=n(73828);class c{constructor(e,t,n,r,o){this.twoFactorService=e,this.router=t,this.i18nService=n,this.platformUtilsService=r,this.win=o,this.onProviderSelected=new i.EventEmitter,this.onRecoverSelected=new i.EventEmitter,this.providers=[]}ngOnInit(){this.providers=this.twoFactorService.getSupportedProviders(this.win)}choose(e){this.onProviderSelected.emit(e.type)}recover(){this.platformUtilsService.launchUri("https://bitwarden.com/help/lost-two-step-device/"),this.onRecoverSelected.emit()}}t.TwoFactorOptionsComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.TwoFactorService),r.ɵɵdirectiveInject(a.Router),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(Window))},c.ɵdir=r.ɵɵdefineDirective({type:c,outputs:{onProviderSelected:"onProviderSelected",onRecoverSelected:"onRecoverSelected"}})},71116:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorComponent=void 0;n(68012);const r=n(51597),o=n(14857),a=(n(91674),n(5576),n(62694),n(56071),n(51554),n(36631),n(73828),n(73569),n(27458),n(97374)),s=n(28705),l=n(74598),c=n(88307),d=n(96837),p=n(60765),u=n(32621),m=n(62694),h=n(68012),v=n(51554),g=n(91674),f=n(73828),y=n(56071),x=n(73569),S=n(36631),b=n(27458),w=n(5576);class C extends p.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,s,l,c,p,u,m){super(s,n,r),this.authService=e,this.router=t,this.i18nService=n,this.apiService=i,this.platformUtilsService=r,this.win=o,this.environmentService=s,this.stateService=l,this.route=c,this.logService=p,this.twoFactorService=u,this.appIdService=m,this.token="",this.remember=!1,this.webAuthnReady=!1,this.webAuthnNewTab=!1,this.providers=d.TwoFactorProviders,this.providerType=a.TwoFactorProviderType,this.selectedProviderType=a.TwoFactorProviderType.Authenticator,this.webAuthnSupported=!1,this.webAuthn=null,this.title="",this.twoFactorEmail=null,this.identifier=null,this.loginRoute="login",this.successRoute="vault",this.webAuthnSupported=this.platformUtilsService.supportsWebAuthn(o)}get webAuthnAllow(){return`publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.authing&&null!=this.twoFactorService.getProviders()){if(this.route.queryParams.pipe(o.first()).subscribe((e=>{null!=e.identifier&&(this.identifier=e.identifier)})),this.needsLock&&(this.successRoute="lock"),null!=this.win&&this.webAuthnSupported){const e=this.environmentService.getWebVaultUrl();this.webAuthn=new s.WebAuthnIFrame(this.win,e,this.webAuthnNewTab,this.platformUtilsService,this.i18nService,(e=>{this.token=e,this.submit()}),(e=>{this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}),(e=>{"ready"===e&&(this.webAuthnReady=!0)}))}this.selectedProviderType=this.twoFactorService.getDefaultProvider(this.webAuthnSupported),yield this.init()}else this.router.navigate([this.loginRoute])}))}ngOnDestroy(){this.cleanupWebAuthn(),this.webAuthn=null}init(){return i(this,void 0,void 0,(function*(){if(null==this.selectedProviderType)return void(this.title=this.i18nService.t("loginUnavailable"));this.cleanupWebAuthn(),this.title=d.TwoFactorProviders[this.selectedProviderType].name;const e=this.twoFactorService.getProviders().get(this.selectedProviderType);switch(this.selectedProviderType){case a.TwoFactorProviderType.WebAuthn:this.webAuthnNewTab||setTimeout((()=>{this.authWebAuthn()}),500);break;case a.TwoFactorProviderType.Duo:case a.TwoFactorProviderType.OrganizationDuo:setTimeout((()=>{r.init({iframe:void 0,host:e.Host,sig_request:e.Signature,submit_callback:e=>i(this,void 0,void 0,(function*(){const t=e.querySelector('input[name="sig_response"]');null!=t&&(this.token=t.value,yield this.submit())}))})}),0);break;case a.TwoFactorProviderType.Email:this.twoFactorEmail=e.Email,this.twoFactorService.getProviders().size>1&&(yield this.sendEmail(!1))}}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.setupCaptcha(),null!=this.token&&""!==this.token){if(this.selectedProviderType===a.TwoFactorProviderType.WebAuthn){if(null==this.webAuthn)return;this.webAuthn.stop()}else this.selectedProviderType!==a.TwoFactorProviderType.Email&&this.selectedProviderType!==a.TwoFactorProviderType.Authenticator||(this.token=this.token.replace(" ","").trim());try{yield this.doSubmit()}catch(e){this.selectedProviderType===a.TwoFactorProviderType.WebAuthn&&null!=this.webAuthn&&this.webAuthn.start()}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("verificationCodeRequired"))}))}doSubmit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.authService.logInTwoFactor(new l.TokenRequestTwoFactor(this.selectedProviderType,this.token,this.remember),this.captchaToken);const e=yield this.formPromise,t=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!t),this.handleCaptchaRequired(e)||(null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),e.resetMasterPassword&&(this.successRoute="set-password"),e.forcePasswordReset&&(this.successRoute="update-temp-password"),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute],{queryParams:{identifier:this.identifier}}))}))}sendEmail(e){return i(this,void 0,void 0,(function*(){if(this.selectedProviderType===a.TwoFactorProviderType.Email&&null==this.emailPromise){try{const t=new c.TwoFactorEmailRequest;t.email=this.authService.email,t.masterPasswordHash=this.authService.masterPasswordHash,t.deviceIdentifier=yield this.appIdService.getAppId(),this.emailPromise=this.apiService.postTwoFactorEmail(t),yield this.emailPromise,e&&this.platformUtilsService.showToast("success",null,this.i18nService.t("verificationCodeEmailSent",this.twoFactorEmail))}catch(t){this.logService.error(t)}this.emailPromise=null}}))}authWebAuthn(){const e=this.twoFactorService.getProviders().get(this.selectedProviderType);this.webAuthnSupported&&null!=this.webAuthn&&this.webAuthn.init(e)}cleanupWebAuthn(){null!=this.webAuthn&&(this.webAuthn.stop(),this.webAuthn.cleanup())}get authing(){return this.authService.authingWithPassword()||this.authService.authingWithSso()||this.authService.authingWithApiKey()}get needsLock(){return this.authService.authingWithSso()||this.authService.authingWithApiKey()}}t.TwoFactorComponent=C,C.ɵfac=function(e){return new(e||C)(u.ɵɵdirectiveInject(m.AuthService),u.ɵɵdirectiveInject(h.Router),u.ɵɵdirectiveInject(v.I18nService),u.ɵɵdirectiveInject(g.ApiService),u.ɵɵdirectiveInject(f.PlatformUtilsService),u.ɵɵdirectiveInject(Window),u.ɵɵdirectiveInject(y.EnvironmentService),u.ɵɵdirectiveInject(x.StateService),u.ɵɵdirectiveInject(h.ActivatedRoute),u.ɵɵdirectiveInject(S.LogService),u.ɵɵdirectiveInject(b.TwoFactorService),u.ɵɵdirectiveInject(w.AppIdService))},C.ɵdir=u.ɵɵdefineDirective({type:C,features:[u.ɵɵInheritDefinitionFeature]})},56117:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UpdatePasswordComponent=void 0;n(68012),n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(57055);const r=n(44254),o=n(49472),a=n(16545),s=n(32621),l=n(68012),c=n(51554),d=n(73828),p=n(84275),u=n(62166),m=n(85714),h=n(45552),v=n(91674),g=n(73569),f=n(57055),y=n(36631);class x extends a.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(t,o,a,i,n,r,l),this.router=e,this.apiService=s,this.userVerificationService=c,this.logService=d,this.showPassword=!1}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}cancel(){return i(this,void 0,void 0,(function*(){yield this.stateService.setOrganizationInvitation(null),this.router.navigate(["/vault"])}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){if(null==this.currentMasterPassword||""===this.currentMasterPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;const e={type:r.VerificationType.MasterPassword,secret:this.currentMasterPassword};try{yield this.userVerificationService.verifyUser(e)}catch(t){return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),!1}return this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations(),!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){try{const t=new o.PasswordRequest;t.masterPasswordHash=yield this.cryptoService.hashPassword(this.currentMasterPassword,null),t.newMasterPasswordHash=e,t.key=n[1].encryptedString,this.apiService.postPassword(t),this.platformUtilsService.showToast("success",this.i18nService.t("masterPasswordChanged"),this.i18nService.t("logBackIn")),null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.messagingService.send("logout")}catch(t){this.logService.error(t)}}))}}t.UpdatePasswordComponent=x,x.ɵfac=function(e){return new(e||x)(s.ɵɵdirectiveInject(l.Router),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.PasswordGenerationService),s.ɵɵdirectiveInject(u.PolicyService),s.ɵɵdirectiveInject(m.CryptoService),s.ɵɵdirectiveInject(h.MessagingService),s.ɵɵdirectiveInject(v.ApiService),s.ɵɵdirectiveInject(g.StateService),s.ɵɵdirectiveInject(f.UserVerificationService),s.ɵɵdirectiveInject(y.LogService))},x.ɵdir=s.ɵɵdefineDirective({type:x,features:[s.ɵɵInheritDefinitionFeature]})},73295:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724);const r=n(55931),o=n(16545),a=n(32621),s=n(51554),l=n(73828),c=n(84275),d=n(62166),p=n(85714),u=n(45552),m=n(91674),h=n(73569),v=n(9724),g=n(36631);class f extends o.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,r,o,n,t,i,s),this.apiService=a,this.syncService=l,this.logService=c,this.showPassword=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield this.syncService.fullSync(!0),e.ngOnInit.call(this)}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(),this.email=yield this.stateService.getEmail(),this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations(),!0}))}submit(){return i(this,void 0,void 0,(function*(){if((yield this.strongPassword())&&(yield this.setupSubmitActions()))try{const e=yield this.cryptoService.makeKey(this.masterPassword,this.email.trim().toLowerCase(),this.kdf,this.kdfIterations),t=yield this.cryptoService.hashPassword(this.masterPassword,e),n=yield this.cryptoService.getEncKey(),i=yield this.cryptoService.remakeEncKey(e,n);yield this.performSubmitActions(t,e,i)}catch(e){this.logService.error(e)}}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){try{const t=new r.UpdateTempPasswordRequest;t.key=n[1].encryptedString,t.newMasterPasswordHash=e,t.masterPasswordHint=this.hint,this.formPromise=this.apiService.putUpdateTempPassword(t),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedMasterPassword")),null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.messagingService.send("logout")}catch(t){this.logService.error(t)}}))}}t.UpdateTempPasswordComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.I18nService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.PasswordGenerationService),a.ɵɵdirectiveInject(d.PolicyService),a.ɵɵdirectiveInject(p.CryptoService),a.ɵɵdirectiveInject(u.MessagingService),a.ɵɵdirectiveInject(m.ApiService),a.ɵɵdirectiveInject(h.StateService),a.ɵɵdirectiveInject(v.SyncService),a.ɵɵdirectiveInject(g.LogService))},f.ɵdir=a.ɵɵdefineDirective({type:f,features:[a.ɵɵInheritDefinitionFeature]})},4158:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationComponent=void 0;const r=n(98212),o=n(96832),a=(n(72277),n(57055),n(44254)),s=n(32621),l=n(72277),c=n(57055),d=n(57490),p=n(96832),u=n(45728),m=n(48198),h=n(99729);function v(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",1),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"input",2),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"small",3),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"masterPass")),s.ɵɵadvance(3),s.ɵɵproperty("formControl",e.secret),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,"confirmIdentity"))}}function g(e,t){1&e&&(s.ɵɵelementStart(0,"span",10),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",11),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵproperty("@sent",void 0),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,2,"codeSent"),"\n "))}function f(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",4),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",5),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"button",6),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().requestOTP()})),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,g,5,4,"span",7),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n\n "),s.ɵɵelementStart(15,"div",4),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"label",8),s.ɵɵtext(18),s.ɵɵpipe(19,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelement(21,"input",9),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"small",3),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,7,"sendVerificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.disableRequestOTP),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,9,"sendCode"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.sentCode),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(19,11,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("formControl",e.secret),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,13,"confirmIdentity"))}}class y{constructor(e,t){this.keyConnectorService=e,this.userVerificationService=t,this.usesKeyConnector=!1,this.disableRequestOTP=!1,this.sentCode=!1,this.secret=new o.FormControl("")}ngOnInit(){return i(this,void 0,void 0,(function*(){this.usesKeyConnector=yield this.keyConnectorService.getUsesKeyConnector(),this.processChanges(this.secret.value),this.secret.valueChanges.subscribe((e=>this.processChanges(e)))}))}requestOTP(){return i(this,void 0,void 0,(function*(){if(this.usesKeyConnector){this.disableRequestOTP=!0;try{yield this.userVerificationService.requestOTP(),this.sentCode=!0}finally{this.disableRequestOTP=!1}}}))}writeValue(e){this.secret.setValue(e)}registerOnChange(e){this.onChange=e}registerOnTouched(e){}setDisabledState(e){this.disableRequestOTP=e,e?this.secret.disable():this.secret.enable()}processChanges(e){null!=this.onChange&&this.onChange({type:this.usesKeyConnector?a.VerificationType.OTP:a.VerificationType.MasterPassword,secret:e})}}t.UserVerificationComponent=y,y.ɵfac=function(e){return new(e||y)(s.ɵɵdirectiveInject(l.KeyConnectorService),s.ɵɵdirectiveInject(c.UserVerificationService))},y.ɵcmp=s.ɵɵdefineComponent({type:y,selectors:[["app-user-verification"]],features:[s.ɵɵProvidersFeature([{provide:o.NG_VALUE_ACCESSOR,multi:!0,useExisting:y}])],decls:4,vars:2,consts:[[4,"ngIf"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPasswordHash","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"formControl"],[1,"form-text","text-muted"],[1,"form-group"],[1,"d-block"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],["class","ml-2 text-success","role","alert",4,"ngIf"],["for","verificationCode"],["id","verificationCode","type","input","name","verificationCode","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"formControl"],["role","alert",1,"ml-2","text-success"],["aria-hidden","true",1,"bwi","bwi-check-circle"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,v,12,7,"ng-container",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,f,28,15,"ng-container",0),s.ɵɵtext(3,"\n")),2&e&&(s.ɵɵproperty("ngIf",!t.usesKeyConnector),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.usesKeyConnector))},directives:[d.NgIf,p.DefaultValueAccessor,p.RequiredValidator,u.AutofocusDirective,m.InputVerbatimDirective,p.NgControlStatus,p.FormControlDirective],pipes:[h.I18nPipe],encapsulation:2,data:{animation:[r.trigger("sent",[r.transition(":enter",[r.style({opacity:0}),r.animate("100ms",r.style({opacity:1}))])])]}})},24006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.A11yInvalidDirective=void 0;n(32621),n(96832);const i=n(32621),r=n(96832);class o{constructor(e,t){this.el=e,this.formControlDirective=t}ngOnInit(){this.sub=this.formControlDirective.control.statusChanges.subscribe((e=>{"INVALID"===e?this.el.nativeElement.setAttribute("aria-invalid","true"):"VALID"===e&&this.el.nativeElement.setAttribute("aria-invalid","false")}))}ngOnDestroy(){var e;null===(e=this.sub)||void 0===e||e.unsubscribe()}}t.A11yInvalidDirective=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.NgControl))},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["","appA11yInvalid",""]]})},8863:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.A11yTitleDirective=void 0;n(32621);const i=n(32621);class r{constructor(e,t){this.el=e,this.renderer=t}set appA11yTitle(e){this.title=e}ngOnInit(){this.el.nativeElement.hasAttribute("title")||this.renderer.setAttribute(this.el.nativeElement,"title",this.title),this.el.nativeElement.hasAttribute("aria-label")||this.renderer.setAttribute(this.el.nativeElement,"aria-label",this.title)}}t.A11yTitleDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(i.Renderer2))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appA11yTitle",""]],inputs:{appA11yTitle:"appA11yTitle"}})},56820:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiActionDirective=void 0;n(32621),n(36631),n(47594);const i=n(32621),r=n(47594),o=n(36631);class a{constructor(e,t,n){this.el=e,this.validationService=t,this.logService=n}ngOnChanges(e){null!=this.appApiAction&&null!=this.appApiAction.then&&(this.el.nativeElement.loading=!0,this.appApiAction.then((e=>{this.el.nativeElement.loading=!1}),(e=>{var t;this.el.nativeElement.loading=!1,e.captchaRequired?this.logService.error("Captcha required error response: "+e.getSingleMessage()):(null===(t=this.logService)||void 0===t||t.error(`Received API exception: ${e}`),this.validationService.showError(e))})))}}t.ApiActionDirective=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.ValidationService),i.ɵɵdirectiveInject(o.LogService))},a.ɵdir=i.ɵɵdefineDirective({type:a,selectors:[["","appApiAction",""]],inputs:{appApiAction:"appApiAction"},features:[i.ɵɵNgOnChangesFeature]})},45728:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutofocusDirective=void 0;n(32621);const i=n(14857),r=n(82769),o=n(32621);class a{constructor(e,t){this.el=e,this.ngZone=t}set appAutofocus(e){this.autofocus=""===e||!0===e}ngOnInit(){!r.Utils.isMobileBrowser&&this.autofocus&&(this.ngZone.isStable?this.el.nativeElement.focus():this.ngZone.onStable.pipe(i.take(1)).subscribe((()=>this.el.nativeElement.focus())))}}t.AutofocusDirective=a,a.ɵfac=function(e){return new(e||a)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.NgZone))},a.ɵdir=o.ɵɵdefineDirective({type:a,selectors:[["","appAutofocus",""]],inputs:{appAutofocus:"appAutofocus"}})},53142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurClickDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onClick(){this.el.nativeElement.blur()}}t.BlurClickDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appBlurClick",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(){return t.onClick()}))}})},23042:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FallbackSrcDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onError(){this.el.nativeElement.src=this.appFallbackSrc}}t.FallbackSrcDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appFallbackSrc",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("error",(function(){return t.onError()}))},inputs:{appFallbackSrc:"appFallbackSrc"}})},5495:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputStripSpacesDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onInput(){this.el.nativeElement.value=this.el.nativeElement.value.replace(/ /g,"")}}t.InputStripSpacesDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["input","appInputStripSpaces",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("input",(function(){return t.onInput()}))}})},48198:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputVerbatimDirective=void 0;n(32621);const i=n(32621);class r{constructor(e,t){this.el=e,this.renderer=t}set appInputVerbatim(e){this.disableComplete=""===e||!0===e}ngOnInit(){this.disableComplete&&!this.el.nativeElement.hasAttribute("autocomplete")&&this.renderer.setAttribute(this.el.nativeElement,"autocomplete","off"),this.el.nativeElement.hasAttribute("autocapitalize")||this.renderer.setAttribute(this.el.nativeElement,"autocapitalize","none"),this.el.nativeElement.hasAttribute("autocorrect")||this.renderer.setAttribute(this.el.nativeElement,"autocorrect","none"),this.el.nativeElement.hasAttribute("spellcheck")||this.renderer.setAttribute(this.el.nativeElement,"spellcheck","false"),this.el.nativeElement.hasAttribute("inputmode")||this.renderer.setAttribute(this.el.nativeElement,"inputmode","verbatim")}}t.InputVerbatimDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(i.Renderer2))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appInputVerbatim",""]],inputs:{appInputVerbatim:"appInputVerbatim"}})},25243:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NotPremiumDirective=void 0;n(32621),n(73569);const r=n(32621),o=n(73569);class a{constructor(e,t,n){this.templateRef=e,this.viewContainer=t,this.stateService=n}ngOnInit(){return i(this,void 0,void 0,(function*(){(yield this.stateService.getCanAccessPremium())?this.viewContainer.clear():this.viewContainer.createEmbeddedView(this.templateRef)}))}}t.NotPremiumDirective=a,a.ɵfac=function(e){return new(e||a)(r.ɵɵdirectiveInject(r.TemplateRef),r.ɵɵdirectiveInject(r.ViewContainerRef),r.ɵɵdirectiveInject(o.StateService))},a.ɵdir=r.ɵɵdefineDirective({type:a,selectors:[["","appNotPremium",""]]})},31161:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectCopyDirective=void 0;n(32621),n(73828);const i=n(32621),r=n(73828);class o{constructor(e,t){this.el=e,this.platformUtilsService=t}onCopy(){if(null==window)return;let e="";const t=window.getSelection();for(let n=0;n-1){""===i.substr(o).trim()&&(r=o)}e+=i.substring(0,r)}this.platformUtilsService.copyToClipboard(e,{window})}}t.SelectCopyDirective=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.PlatformUtilsService))},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["","appSelectCopy",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("copy",(function(){return t.onCopy()}))}})},1142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StopClickDirective=void 0;const i=n(32621);class r{onClick(e){e.preventDefault()}}t.StopClickDirective=r,r.ɵfac=function(e){return new(e||r)},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appStopClick",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(e){return t.onClick(e)}))}})},39159:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StopPropDirective=void 0;const i=n(32621);class r{onClick(e){e.stopPropagation()}}t.StopPropDirective=r,r.ɵfac=function(e){return new(e||r)},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appStopProp",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(e){return t.onClick(e)}))}})},13803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseValueDirective=void 0;const i=n(32621),r=n(96832),o=n(32621);class a{constructor(e,t){this.elementRef=e,this.renderer=t,this.trueValue=!0,this.falseValue=!1,this.propagateChange=e=>{}}onHostChange(e){this.propagateChange(e.target.checked?this.trueValue:this.falseValue)}writeValue(e){e===this.trueValue?this.renderer.setProperty(this.elementRef.nativeElement,"checked",!0):this.renderer.setProperty(this.elementRef.nativeElement,"checked",!1)}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){}setDisabledState(e){}}t.TrueFalseValueDirective=a,a.ɵfac=function(e){return new(e||a)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.Renderer2))},a.ɵdir=o.ɵɵdefineDirective({type:a,selectors:[["input","type","checkbox","appTrueFalseValue",""]],hostBindings:function(e,t){1&e&&o.ɵɵlistener("change",(function(e){return t.onHostChange(e)}))},inputs:{trueValue:"trueValue",falseValue:"falseValue"},features:[o.ɵɵProvidersFeature([{provide:r.NG_VALUE_ACCESSOR,useExisting:i.forwardRef((()=>a)),multi:!0}])]})},76299:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuthGuard=void 0;n(68012),n(62694),n(72277),n(45552);const r=n(72440),o=n(32621),a=n(62694),s=n(68012),l=n(45552),c=n(72277);class d{constructor(e,t,n,i){this.authService=e,this.router=t,this.messagingService=n,this.keyConnectorService=i}canActivate(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();return e===r.AuthenticationStatus.LoggedOut?(this.messagingService.send("authBlocked",{url:t.url}),!1):e===r.AuthenticationStatus.Locked?(null!=t&&this.messagingService.send("lockedUrl",{url:t.url}),this.router.createUrlTree(["lock"],{queryParams:{promptBiometric:!0}})):!(!t.url.includes("remove-password")&&(yield this.keyConnectorService.getConvertAccountRequired()))||this.router.createUrlTree(["/remove-password"])}))}}t.AuthGuard=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router),o.ɵɵinject(l.MessagingService),o.ɵɵinject(c.KeyConnectorService))},d.ɵprov=o.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},10517:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(62694),s=n(68012);class l{constructor(e,t){this.authService=e,this.router=t,this.homepage="vault",this.loginpage="login"}canActivate(){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();if(e===r.AuthenticationStatus.Locked)return!0;const t=e===r.AuthenticationStatus.LoggedOut?this.loginpage:this.homepage;return this.router.createUrlTree([t])}))}}t.LockGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},2821:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnauthGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(62694),s=n(68012);class l{constructor(e,t){this.authService=e,this.router=t,this.homepage="vault"}canActivate(){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();return e===r.AuthenticationStatus.LoggedOut||(e===r.AuthenticationStatus.Locked?this.router.createUrlTree(["lock"]):this.router.createUrlTree([this.homepage]))}))}}t.UnauthGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},44926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JslibModule=void 0;const i=n(57490),r=n(96832),o=n(59703),a=n(83612),s=n(99729),l=n(50154),c=n(52080),d=n(32621);n(59703);class p{}t.JslibModule=p,p.ɵfac=function(e){return new(e||p)},p.ɵmod=d.ɵɵdefineNgModule({type:p}),p.ɵinj=d.ɵɵdefineInjector({providers:[a.CreditCardNumberPipe,i.DatePipe,s.I18nPipe,l.SearchPipe,c.UserNamePipe],imports:[[o.BitwardenToastModule.forRoot({maxOpened:5,autoDismiss:!0,closeButton:!0}),i.CommonModule,r.FormsModule,r.ReactiveFormsModule],o.BitwardenToastModule]})},57563:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionFilterComponent=void 0;const r=n(32621),o=(n(93370),n(94735),n(32621));class a{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.collectionsGrouping={id:"collections",name:"collections"}}get collections(){var e;return null===(e=this.collectionNodes)||void 0===e?void 0:e.fullList}get nestedCollections(){var e;return null===(e=this.collectionNodes)||void 0===e?void 0:e.nestedList}get show(){return!this.hide&&null!=this.collections&&this.collections.length>0}isCollapsed(e){return this.collapsedFilterNodes.has(e.id)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.selectedCollectionId=e.id,this.onFilterChange.emit(this.activeFilter)}toggleCollapse(e){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(e)}))}}t.CollectionFilterComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",collectionNodes:"collectionNodes",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},73821:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderFilterComponent=void 0;const r=n(32621),o=(n(93370),n(94735),n(32621));class a{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.onAddFolder=new r.EventEmitter,this.onEditFolder=new r.EventEmitter,this.foldersGrouping={id:"folders",name:"folders"}}get folders(){var e;return null===(e=this.folderNodes)||void 0===e?void 0:e.fullList}get nestedFolders(){var e;return null===(e=this.folderNodes)||void 0===e?void 0:e.nestedList}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.selectedFolder=!0,this.activeFilter.selectedFolderId=e.id,this.onFilterChange.emit(this.activeFilter)}addFolder(){this.onAddFolder.emit()}editFolder(e){this.onEditFolder.emit(e)}isCollapsed(e){return this.collapsedFilterNodes.has(e.id)}toggleCollapse(e){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(e)}))}}t.FolderFilterComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",folderNodes:"folderNodes",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange",onAddFolder:"onAddFolder",onEditFolder:"onEditFolder"}})},9177:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationFilterComponent=void 0;const r=n(32621),o=n(94735),a=n(32621);class s{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.organizationGrouping={id:"vaults",name:"allVaults"}}get displayMode(){let e="organizationMember";return null==this.organizations||this.organizations.length<1?e="noOrganizations":this.activePersonalOwnershipPolicy&&!this.activeSingleOrganizationPolicy?e="personalOwnershipPolicy":!this.activePersonalOwnershipPolicy&&this.activeSingleOrganizationPolicy?e="singleOrganizationPolicy":this.activePersonalOwnershipPolicy&&this.activeSingleOrganizationPolicy&&(e="singleOrganizationAndPersonalOwnershipPolicies"),e}get hasActiveFilter(){return this.activeFilter.myVaultOnly||null!=this.activeFilter.selectedOrganizationId}applyOrganizationFilter(e){return i(this,void 0,void 0,(function*(){this.activeFilter.selectedOrganizationId=e.id,this.activeFilter.myVaultOnly=!1,this.activeFilter.refreshCollectionsAndFolders=!0,this.applyFilter(this.activeFilter)}))}applyMyVaultFilter(){return i(this,void 0,void 0,(function*(){this.activeFilter.selectedOrganizationId=null,this.activeFilter.myVaultOnly=!0,this.activeFilter.refreshCollectionsAndFolders=!0,this.applyFilter(this.activeFilter)}))}clearFilter(){this.activeFilter.myVaultOnly=!1,this.activeFilter.selectedOrganizationId=null,this.applyFilter(new o.VaultFilter(this.activeFilter))}applyFilter(e){this.onFilterChange.emit(e)}toggleCollapse(){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(this.organizationGrouping)}))}get isCollapsed(){return this.collapsedFilterNodes.has(this.organizationGrouping.id)}}t.OrganizationFilterComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵdir=a.ɵɵdefineDirective({type:s,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",organizations:"organizations",activeFilter:"activeFilter",activePersonalOwnershipPolicy:"activePersonalOwnershipPolicy",activeSingleOrganizationPolicy:"activeSingleOrganizationPolicy"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},80617:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StatusFilterComponent=void 0;const i=n(32621),r=(n(94735),n(32621));class o{constructor(){this.hideFavorites=!1,this.hideTrash=!1,this.onFilterChange=new i.EventEmitter}get show(){return!(this.hideFavorites&&this.hideTrash)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.status=e,this.onFilterChange.emit(this.activeFilter)}}t.StatusFilterComponent=o,o.ɵfac=function(e){return new(e||o)},o.ɵdir=r.ɵɵdefineDirective({type:o,inputs:{hideFavorites:"hideFavorites",hideTrash:"hideTrash",activeFilter:"activeFilter"},outputs:{onFilterChange:"onFilterChange"}})},74951:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFilterComponent=void 0;const r=n(32621),o=n(32773),a=(n(94735),n(32621));class s{constructor(){this.hide=!1,this.selectedCipherType=null,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.typesNode={id:"types",name:"types"},this.cipherTypeEnum=o.CipherType}get isCollapsed(){return this.collapsedFilterNodes.has(this.typesNode.id)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.cipherType=e,this.onFilterChange.emit(this.activeFilter)}toggleCollapse(){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(this.typesNode)}))}}t.TypeFilterComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵdir=a.ɵɵdefineDirective({type:s,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",selectedCipherType:"selectedCipherType",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},93370:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DynamicTreeNode=void 0;t.DynamicTreeNode=class{constructor(e){Object.assign(this,e)}hasId(e){return null!=this.fullList&&this.fullList.filter((t=>t.id===e)).length>0}}},94735:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilter=void 0;t.VaultFilter=class{constructor(e){this.selectedFolder=!1,this.myVaultOnly=!1,this.refreshCollectionsAndFolders=!1,Object.assign(this,e)}resetFilter(){this.cipherType=null,this.status=null,this.selectedCollectionId=null,this.selectedFolder=!1,this.selectedFolderId=null}resetOrganization(){this.myVaultOnly=!1,this.selectedOrganizationId=null,this.resetFilter()}}},48237:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterComponent=void 0;const r=n(32621),o=n(94735),a=(n(27113),n(32621)),s=n(27113);class l{constructor(e){this.vaultFilterService=e,this.activeFilter=new o.VaultFilter,this.hideFolders=!1,this.hideCollections=!1,this.hideFavorites=!1,this.hideTrash=!1,this.hideOrganizations=!1,this.onFilterChange=new r.EventEmitter,this.onAddFolder=new r.EventEmitter,this.onEditFolder=new r.EventEmitter,this.isLoaded=!1}get displayCollections(){var e;return null!=(null===(e=this.collections)||void 0===e?void 0:e.fullList)&&this.collections.fullList.length>0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.collapsedFilterNodes=yield this.vaultFilterService.buildCollapsedFilterNodes(),this.organizations=yield this.vaultFilterService.buildOrganizations(),null!=this.organizations&&this.organizations.length>0&&(this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()),this.folders=yield this.vaultFilterService.buildFolders(),this.collections=yield this.initCollections(),this.isLoaded=!0}))}initCollections(){return i(this,void 0,void 0,(function*(){return yield this.vaultFilterService.buildCollections()}))}toggleFilterNodeCollapseState(e){return i(this,void 0,void 0,(function*(){this.collapsedFilterNodes.has(e.id)?this.collapsedFilterNodes.delete(e.id):this.collapsedFilterNodes.add(e.id),yield this.vaultFilterService.storeCollapsedFilterNodes(this.collapsedFilterNodes)}))}applyFilter(e){return i(this,void 0,void 0,(function*(){e.refreshCollectionsAndFolders&&(yield this.reloadCollectionsAndFolders(e),e=this.pruneInvalidatedFilterSelections(e)),this.onFilterChange.emit(e)}))}reloadCollectionsAndFolders(e){return i(this,void 0,void 0,(function*(){this.folders=yield this.vaultFilterService.buildFolders(e.selectedOrganizationId),this.collections=e.myVaultOnly?null:yield this.vaultFilterService.buildCollections(e.selectedOrganizationId)}))}reloadOrganizations(){return i(this,void 0,void 0,(function*(){this.organizations=yield this.vaultFilterService.buildOrganizations(),this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()}))}addFolder(){this.onAddFolder.emit()}editFolder(e){this.onEditFolder.emit(e)}pruneInvalidatedFilterSelections(e){return e=this.pruneInvalidFolderSelection(e),e=this.pruneInvalidCollectionSelection(e)}pruneInvalidFolderSelection(e){var t;return e.selectedFolder&&!(null===(t=this.folders)||void 0===t?void 0:t.hasId(e.selectedFolderId))&&(e.selectedFolder=!1,e.selectedFolderId=null),e}pruneInvalidCollectionSelection(e){var t;return null==e.selectedCollectionId||(null===(t=this.collections)||void 0===t?void 0:t.hasId(e.selectedCollectionId))||(e.selectedCollectionId=null),e}}t.VaultFilterComponent=l,l.ɵfac=function(e){return new(e||l)(a.ɵɵdirectiveInject(s.VaultFilterService))},l.ɵdir=a.ɵɵdefineDirective({type:l,inputs:{activeFilter:"activeFilter",hideFolders:"hideFolders",hideCollections:"hideCollections",hideFavorites:"hideFavorites",hideTrash:"hideTrash",hideOrganizations:"hideOrganizations"},outputs:{onFilterChange:"onFilterChange",onAddFolder:"onAddFolder",onEditFolder:"onEditFolder"}})},27113:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterService=void 0;n(45330),n(3174),n(88308),n(63513),n(62166),n(73569);const r=n(49906),o=n(93370),a=n(32621),s=n(73569),l=n(63513),c=n(88308),d=n(45330),p=n(3174),u=n(62166);class m{constructor(e,t,n,i,r,o){this.stateService=e,this.organizationService=t,this.folderService=n,this.cipherService=i,this.collectionService=r,this.policyService=o}storeCollapsedFilterNodes(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setCollapsedGroupings(Array.from(e))}))}buildCollapsedFilterNodes(){return i(this,void 0,void 0,(function*(){return new Set(yield this.stateService.getCollapsedGroupings())}))}buildOrganizations(){return i(this,void 0,void 0,(function*(){return yield this.organizationService.getAll()}))}buildFolders(e){return i(this,void 0,void 0,(function*(){const t=yield this.folderService.getAllDecrypted();let n;if(null!=e){const i=yield this.cipherService.getAllDecrypted(),r=i.filter((t=>t.organizationId==e));n=t.filter((e=>r.filter((t=>t.folderId==e.id)).length>0||i.filter((t=>t.folderId==e.id)).length<1))}else n=t;const i=yield this.folderService.getAllNested(n);return new o.DynamicTreeNode({fullList:n,nestedList:i})}))}buildCollections(e){return i(this,void 0,void 0,(function*(){const t=yield this.collectionService.getAllDecrypted();let n;n=null!=e?t.filter((t=>t.organizationId===e)):t;const i=yield this.collectionService.getAllNested(n);return new o.DynamicTreeNode({fullList:n,nestedList:i})}))}checkForSingleOrganizationPolicy(){return i(this,void 0,void 0,(function*(){return yield this.policyService.policyAppliesToUser(r.PolicyType.SingleOrg)}))}checkForPersonalOwnershipPolicy(){return i(this,void 0,void 0,(function*(){return yield this.policyService.policyAppliesToUser(r.PolicyType.PersonalOwnership)}))}}t.VaultFilterService=m,m.ɵfac=function(e){return new(e||m)(a.ɵɵinject(s.StateService),a.ɵɵinject(l.OrganizationService),a.ɵɵinject(c.FolderService),a.ɵɵinject(d.CipherService),a.ɵɵinject(p.CollectionService),a.ɵɵinject(u.PolicyService))},m.ɵprov=a.ɵɵdefineInjectable({token:m,factory:m.ɵfac})},86758:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ColorPasswordPipe=void 0;const i=n(82769),r=n(32621);class o{transform(e){return this.generateTemplate(e,((e,t)=>`${e}`))}generateTemplate(e,t){const n=Array.from(e);let r="";for(let o=0;o":e=">",a=!0;break;case" ":e=" ",a=!0}let s="letter";e.match(i.Utils.regexpEmojiPresentation)?s="emoji":a||e.match(/[^\w ]/)?s="special":e.match(/\d/)&&(s="number"),r+=t(e,s,o)}return r}}t.ColorPasswordPipe=o,o.ɵfac=function(e){return new(e||o)},o.ɵpipe=r.ɵɵdefinePipe({name:"colorPassword",type:o,pure:!0})},83612:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CreditCardNumberPipe=void 0;const i=n(32621),r={Visa:[{cardLength:16,blocks:[4,4,4,4]}],Mastercard:[{cardLength:16,blocks:[4,4,4,4]}],Maestro:[{cardLength:16,blocks:[4,4,4,4]},{cardLength:13,blocks:[4,4,5]},{cardLength:15,blocks:[4,6,5]},{cardLength:19,blocks:[4,4,4,4,3]}],Discover:[{cardLength:16,blocks:[4,4,4,4]}],"Diners Club":[{cardLength:14,blocks:[4,6,4]}],JCB:[{cardLength:16,blocks:[4,4,4,4]}],UnionPay:[{cardLength:16,blocks:[4,4,4,4]},{cardLength:19,blocks:[6,13]}],Amex:[{cardLength:15,blocks:[4,6,5]}],Other:[{cardLength:16,blocks:[4,4,4,4]}]};class o{transform(e,t){let n=r[t];null==n&&(n=r.Other);const i=e.length;let o=n.find((e=>e.cardLength==i));null==o&&(o=n[0]);const a=o.blocks,s=[];let l=0;return a.forEach((t=>{s.push(e.slice(l,l+t)),l+=t})),i>l&&s.push(e.slice(l)),s.join(" ")}}t.CreditCardNumberPipe=o,o.ɵfac=function(e){return new(e||o)},o.ɵpipe=i.ɵɵdefinePipe({name:"creditCardNumber",type:o,pure:!0})},91131:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EllipsisPipe=void 0;const i=n(32621);class r{transform(e,t=25,n=!1,i="..."){return e.length<=t?e:(t-=i.length,n&&e.length>t&&e.indexOf(" ")>0&&(t=e.substring(0,t).lastIndexOf(" ")),e.substring(0,t)+i)}}t.EllipsisPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"ellipsis",type:r,pure:!0})},99729:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.I18nPipe=void 0;n(51554);const i=n(32621),r=n(51554);class o{constructor(e){this.i18nService=e}transform(e,t,n,i){return this.i18nService.t(e,t,n,i)}}t.I18nPipe=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(r.I18nService,16))},o.ɵpipe=i.ɵɵdefinePipe({name:"i18n",type:o,pure:!0})},50154:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchPipe=void 0;const i=n(32621);class r{transform(e,t,n,i,r){return null==e||0===e.length?[]:null==t||t.length<2?e:(t=t.trim().toLowerCase(),e.filter((e=>null!=n&&null!=e[n]&&e[n].toString().toLowerCase().indexOf(t)>-1||(null!=i&&null!=e[i]&&e[i].toString().toLowerCase().indexOf(t)>-1||null!=r&&null!=e[r]&&e[r].toString().toLowerCase().indexOf(t)>-1))))}}t.SearchPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"search",type:r,pure:!0})},52080:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserNamePipe=void 0;const i=n(32621);class r{transform(e){return null==e?null:null==e.name||""===e.name.trim()?e.email:e.name}}t.UserNamePipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"userName",type:r,pure:!0})},23050:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;const i=n(45921),r=n(32621);class o extends i.BroadcasterService{}t.BroadcasterService=o,o.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(o)))(t||o)}}(),o.ɵprov=r.ɵɵdefineInjectable({token:o,factory:o.ɵfac})},41058:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JslibServicesModule=t.SYSTEM_LANGUAGE=t.LOCALES_DIRECTORY=t.CLIENT_TYPE=t.LOCKED_CALLBACK=t.LOGOUT_CALLBACK=t.STATE_SERVICE_USE_CACHE=t.STATE_FACTORY=t.SECURE_STORAGE=t.WINDOW=void 0;const i=n(32621),r=n(91674),o=n(5576),a=n(42982),s=n(62694),l=n(8470),c=n(45330),d=n(3174),p=n(85714),u=n(1659),m=n(56071),h=n(32034),v=n(97445),g=n(83594),f=n(88308),y=n(51554),x=n(72277),S=n(36631),b=n(45552),w=n(38249),C=n(63513),I=n(84275),E=n(44809),P=n(73828),O=n(62166),k=n(68291),A=n(60421),T=n(76532),M=n(2810),B=n(73569),D=n(6924),R=n(39566),F=n(9724),U=n(30694),V=n(52344),N=n(27458),_=n(57055),j=n(13444),z=n(82656),H=n(35266),L=n(31445),K=n(99010),q=n(48475),G=n(97979),W=n(36472),$=n(47262),Y=n(36833),Q=n(94778),J=n(27944),Z=n(47165),X=n(86683),ee=n(14215),te=n(48698),ne=n(1803),ie=n(66369),re=n(32840),oe=n(63231),ae=n(59135),se=n(50142),le=n(55969),ce=n(59695),de=n(32471),pe=n(23566),ue=n(94822),me=n(13998),he=n(8357),ve=n(86257),ge=n(7790),fe=n(87703),ye=n(96837),xe=n(26981),Se=n(42133),be=n(44988),we=n(75408),Ce=n(76299),Ie=n(10517),Ee=n(2821),Pe=n(23050),Oe=n(64684),ke=n(91603),Ae=n(47594),Te=n(32621);t.WINDOW=new i.InjectionToken("WINDOW"),t.SECURE_STORAGE=new i.InjectionToken("SECURE_STORAGE"),t.STATE_FACTORY=new i.InjectionToken("STATE_FACTORY"),t.STATE_SERVICE_USE_CACHE=new i.InjectionToken("STATE_SERVICE_USE_CACHE"),t.LOGOUT_CALLBACK=new i.InjectionToken("LOGOUT_CALLBACK"),t.LOCKED_CALLBACK=new i.InjectionToken("LOCKED_CALLBACK"),t.CLIENT_TYPE=new i.InjectionToken("CLIENT_TYPE"),t.LOCALES_DIRECTORY=new i.InjectionToken("LOCALES_DIRECTORY"),t.SYSTEM_LANGUAGE=new i.InjectionToken("SYSTEM_LANGUAGE");class Me{}t.JslibServicesModule=Me,Me.ɵfac=function(e){return new(e||Me)},Me.ɵmod=Te.ɵɵdefineNgModule({type:Me}),Me.ɵinj=Te.ɵɵdefineInjector({providers:[Ae.ValidationService,Ce.AuthGuard,Ee.UnauthGuard,Ie.LockGuard,Oe.ModalService,{provide:t.WINDOW,useValue:window},{provide:i.LOCALE_ID,useFactory:e=>e.translationLocale,deps:[y.I18nService]},{provide:t.LOCALES_DIRECTORY,useValue:"./locales"},{provide:t.SYSTEM_LANGUAGE,useFactory:e=>e.navigator.language,deps:[t.WINDOW]},{provide:t.STATE_FACTORY,useValue:new H.StateFactory(K.GlobalState,L.Account)},{provide:t.STATE_SERVICE_USE_CACHE,useValue:!0},{provide:t.LOGOUT_CALLBACK,useFactory:e=>(t,n)=>e.send("logout",{expired:t,userId:n}),deps:[b.MessagingService]},{provide:t.LOCKED_CALLBACK,useValue:null},{provide:o.AppIdService,useClass:G.AppIdService,deps:[R.StorageService]},{provide:a.AuditService,useClass:W.AuditService,deps:[u.CryptoFunctionService,r.ApiService]},{provide:s.AuthService,useClass:$.AuthService,deps:[p.CryptoService,r.ApiService,U.TokenService,o.AppIdService,P.PlatformUtilsService,b.MessagingService,S.LogService,x.KeyConnectorService,m.EnvironmentService,B.StateService,N.TwoFactorService,y.I18nService]},{provide:c.CipherService,useFactory:(e,t,n,i,r,o,a,s)=>new Y.CipherService(e,t,n,i,r,(()=>o.get(A.SearchService)),a,s),deps:[p.CryptoService,M.SettingsService,r.ApiService,g.FileUploadService,y.I18nService,i.Injector,S.LogService,B.StateService]},{provide:f.FolderService,useClass:ie.FolderService,deps:[p.CryptoService,r.ApiService,y.I18nService,c.CipherService,B.StateService]},{provide:S.LogService,useFactory:()=>new J.ConsoleLogService(!1)},{provide:d.CollectionService,useClass:Q.CollectionService,deps:[p.CryptoService,y.I18nService,B.StateService]},{provide:m.EnvironmentService,useClass:X.EnvironmentService,deps:[B.StateService]},{provide:V.TotpService,useClass:fe.TotpService,deps:[u.CryptoFunctionService,S.LogService,B.StateService]},{provide:U.TokenService,useClass:ge.TokenService,deps:[B.StateService]},{provide:p.CryptoService,useClass:Z.CryptoService,deps:[u.CryptoFunctionService,P.PlatformUtilsService,S.LogService,B.StateService]},{provide:I.PasswordGenerationService,useClass:se.PasswordGenerationService,deps:[p.CryptoService,O.PolicyService,B.StateService]},{provide:j.UsernameGenerationService,useClass:Se.UsernameGenerationService,deps:[p.CryptoService,B.StateService,r.ApiService]},{provide:r.ApiService,useClass:q.ApiService,deps:[U.TokenService,P.PlatformUtilsService,m.EnvironmentService,o.AppIdService,t.LOGOUT_CALLBACK]},{provide:g.FileUploadService,useClass:ne.FileUploadService,deps:[S.LogService,r.ApiService]},{provide:F.SyncService,useClass:ve.SyncService,deps:[r.ApiService,M.SettingsService,f.FolderService,c.CipherService,p.CryptoService,d.CollectionService,b.MessagingService,O.PolicyService,T.SendService,S.LogService,x.KeyConnectorService,B.StateService,C.OrganizationService,k.ProviderService,t.LOGOUT_CALLBACK]},{provide:l.BroadcasterService,useClass:Pe.BroadcasterService},{provide:M.SettingsService,useClass:ue.SettingsService,deps:[B.StateService]},{provide:z.VaultTimeoutService,useClass:be.VaultTimeoutService,deps:[c.CipherService,f.FolderService,d.CollectionService,p.CryptoService,P.PlatformUtilsService,b.MessagingService,A.SearchService,U.TokenService,O.PolicyService,x.KeyConnectorService,B.StateService,s.AuthService,t.LOCKED_CALLBACK,t.LOGOUT_CALLBACK]},{provide:B.StateService,useClass:me.StateService,deps:[R.StorageService,t.SECURE_STORAGE,S.LogService,D.StateMigrationService,t.STATE_FACTORY,t.STATE_SERVICE_USE_CACHE]},{provide:D.StateMigrationService,useClass:he.StateMigrationService,deps:[R.StorageService,t.SECURE_STORAGE,t.STATE_FACTORY]},{provide:v.ExportService,useClass:te.ExportService,deps:[f.FolderService,c.CipherService,r.ApiService,p.CryptoService]},{provide:A.SearchService,useClass:de.SearchService,deps:[c.CipherService,S.LogService,y.I18nService]},{provide:w.NotificationsService,useClass:oe.NotificationsService,deps:[F.SyncService,o.AppIdService,r.ApiService,m.EnvironmentService,t.LOGOUT_CALLBACK,S.LogService,B.StateService,s.AuthService]},{provide:u.CryptoFunctionService,useClass:we.WebCryptoFunctionService,deps:[t.WINDOW]},{provide:h.EventService,useClass:ee.EventService,deps:[r.ApiService,c.CipherService,B.StateService,S.LogService,C.OrganizationService]},{provide:O.PolicyService,useClass:le.PolicyService,deps:[B.StateService,C.OrganizationService,r.ApiService]},{provide:T.SendService,useClass:pe.SendService,deps:[p.CryptoService,r.ApiService,g.FileUploadService,y.I18nService,u.CryptoFunctionService,B.StateService]},{provide:x.KeyConnectorService,useClass:re.KeyConnectorService,deps:[B.StateService,p.CryptoService,r.ApiService,U.TokenService,S.LogService,C.OrganizationService,u.CryptoFunctionService,t.LOGOUT_CALLBACK]},{provide:_.UserVerificationService,useClass:xe.UserVerificationService,deps:[p.CryptoService,y.I18nService,r.ApiService]},{provide:E.PasswordRepromptService,useClass:ke.PasswordRepromptService},{provide:C.OrganizationService,useClass:ae.OrganizationService,deps:[B.StateService]},{provide:k.ProviderService,useClass:ce.ProviderService,deps:[B.StateService]},{provide:N.TwoFactorService,useClass:ye.TwoFactorService,deps:[y.I18nService,P.PlatformUtilsService]}]})},64684:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ModalService=t.ModalConfig=void 0;n(32621);const r=n(14857),o=n(83249),a=n(64050),s=n(38387),l=n(32621);class c{constructor(){this.allowMultipleModals=!1}}t.ModalConfig=c;class d{constructor(e,t,n){this.componentFactoryResolver=e,this.applicationRef=t,this.injector=n,this.modalList=[],this.factoryResolvers=new Map,document.addEventListener("keyup",(e=>{"Escape"===e.key&&this.modalCount>0&&this.topModal.instance.close()}))}get modalCount(){return this.modalList.length}get topModal(){return this.modalList[this.modalCount-1]}openViewRef(e,t,n=null){return i(this,void 0,void 0,(function*(){const[i,o]=this.openInternal(e,null,!1);return o.instance.setComponentParameters=n,t.insert(o.hostView),yield i.onCreated.pipe(r.first()).toPromise(),[i,o.instance.componentRef.instance]}))}open(e,t){var n;if((null===(n=null==t?void 0:t.allowMultipleModals)||void 0===n||!n)&&this.modalCount>0)return;const[i,r]=this.openInternal(e,t,!0);return i}registerComponentFactoryResolver(e,t){this.factoryResolvers.set(e,t)}resolveComponentFactory(e){return this.factoryResolvers.has(e)?this.factoryResolvers.get(e).resolveComponentFactory(e):this.componentFactoryResolver.resolveComponentFactory(e)}openInternal(e,t,n){const[i,o]=this.createModalComponent(t);if(o.instance.childComponentType=e,n){this.applicationRef.attachView(o.hostView);const e=o.hostView.rootNodes[0];document.body.appendChild(e)}return i.onClosed.pipe(r.first()).subscribe((()=>{n&&this.applicationRef.detachView(o.hostView),o.destroy(),this.modalList.pop(),this.modalCount>0&&this.topModal.instance.getFocus()})),this.setupHandlers(i),this.modalList.push(o),[i,o]}setupHandlers(e){let t=null;e.onCreated.pipe(r.first()).subscribe((n=>{document.body.classList.add("modal-open");const i=n.querySelector(".modal"),r=i.querySelector(".modal-dialog");t=document.createElement("div"),t.className="modal-backdrop fade",t.style.zIndex=`${this.modalCount}040`,i.prepend(t),r.addEventListener("click",(e=>{e.stopPropagation()})),r.style.zIndex=`${this.modalCount}050`;const o=Array.from(n.querySelectorAll('.modal-backdrop, .modal *[data-dismiss="modal"]'));for(const t of o)t.addEventListener("click",(()=>{e.close()}))})),e.onClose.pipe(r.first()).subscribe((()=>{e.closed(),0===this.modalCount&&document.body.classList.remove("modal-open")}))}createModalComponent(e){const t=new s.ModalRef,n=new WeakMap;n.set(c,e),n.set(s.ModalRef,t);return[t,this.componentFactoryResolver.resolveComponentFactory(o.DynamicModalComponent).create(new a.ModalInjector(this.injector,n))]}}t.ModalService=d,d.ɵfac=function(e){return new(e||d)(l.ɵɵinject(l.ComponentFactoryResolver),l.ɵɵinject(l.ApplicationRef),l.ɵɵinject(l.Injector))},d.ɵprov=l.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},91603:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;n(72277);const r=n(38991),o=(n(64684),n(32621)),a=n(64684),s=n(72277);class l{constructor(e,t){this.modalService=e,this.keyConnectorService=t,this.component=r.PasswordRepromptComponent}protectedFields(){return["TOTP","Password","H_Field","Card Number","Security Code"]}showPasswordPrompt(){return i(this,void 0,void 0,(function*(){if(!(yield this.enabled()))return!0;const e=this.modalService.open(this.component,{allowMultipleModals:!0});if(null==e)return!1;return!0===(yield e.onClosedPromise())}))}enabled(){return i(this,void 0,void 0,(function*(){return!(yield this.keyConnectorService.getUsesKeyConnector())}))}}t.PasswordRepromptService=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.ModalService),o.ɵɵinject(s.KeyConnectorService))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},47594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationService=void 0;n(51554),n(73828);const i=n(32621),r=n(51554),o=n(73828);class a{constructor(e,t){this.i18nService=e,this.platformUtilsService=t}showError(e){const t=this.i18nService.t("unexpectedError");let n=[];return null!=e&&"string"==typeof e?n.push(e):null==e||"object"!=typeof e?n.push(t):null!=e.validationErrors?n=n.concat(e.getAllMessages()):n.push(e.message?e.message:t),1===n.length?this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),n[0]):n.length>1&&this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),n,{timeout:5e3*n.length}),n}}t.ValidationService=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵinject(r.I18nService),i.ɵɵinject(o.PlatformUtilsService))},a.ɵprov=i.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},89924:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dirtyRequired=void 0;const i=n(96832);t.dirtyRequired=function(e){return e.dirty?i.Validators.required(e):null}},55939:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.notAllowedValueAsync=void 0,t.notAllowedValueAsync=function(e,t=!1){return i=>n(this,void 0,void 0,(function*(){let n=yield e(),r=i.value;if(t&&(n=n.toLowerCase(),r=r.toLowerCase()),r===n)return{notAllowedValue:!0}}))}},91674:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiService=void 0;t.ApiService=class{}},5576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppIdService=void 0;t.AppIdService=class{}},42982:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuditService=void 0;t.AuditService=class{}},62694:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthService=void 0;t.AuthService=class{}},8470:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;t.BroadcasterService=class{}},45330:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherService=void 0;t.CipherService=class{}},3174:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionService=void 0;t.CollectionService=class{}},85714:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoService=void 0;t.CryptoService=class{}},1659:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoFunctionService=void 0;t.CryptoFunctionService=class{}},56071:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentService=void 0;t.EnvironmentService=class{}},32034:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventService=void 0;t.EventService=class{}},97445:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExportService=void 0;t.ExportService=class{}},83594:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadService=void 0;t.FileUploadService=class{}},88308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderService=void 0;t.FolderService=class{}},51554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;t.I18nService=class{}},11223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportService=void 0;t.ImportService=class{}},72277:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorService=void 0;t.KeyConnectorService=class{}},36631:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogService=void 0;t.LogService=class{}},45552:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MessagingService=void 0;t.MessagingService=class{}},38249:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationsService=void 0;t.NotificationsService=class{}},63513:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationService=void 0;t.OrganizationService=class{}},84275:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGenerationService=void 0;t.PasswordGenerationService=class{}},44809:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;t.PasswordRepromptService=class{}},73828:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlatformUtilsService=void 0;t.PlatformUtilsService=class{}},62166:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyService=void 0;t.PolicyService=class{}},68291:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderService=void 0;t.ProviderService=class{}},60421:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchService=void 0;t.SearchService=class{constructor(){this.indexedEntityId=null}}},76532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendService=void 0;t.SendService=class{}},2810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsService=void 0;t.SettingsService=class{}},73569:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;t.StateService=class{}},6924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;t.StateMigrationService=class{}},39566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageService=void 0;t.StorageService=class{}},9724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncService=void 0;t.SyncService=class{}},30694:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenService=void 0;t.TokenService=class{}},52344:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TotpService=void 0;t.TotpService=class{}},27458:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorService=void 0;t.TwoFactorService=class{}},57055:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationService=void 0;t.UserVerificationService=class{}},13444:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UsernameGenerationService=void 0;t.UsernameGenerationService=class{}},82656:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutService=void 0;t.VaultTimeoutService=class{}},72440:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthenticationStatus=void 0,function(e){e[e.LoggedOut=0]="LoggedOut",e[e.Locked=1]="Locked",e[e.Unlocked=2]="Unlocked"}(t.AuthenticationStatus||(t.AuthenticationStatus={}))},2231:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthenticationType=void 0,function(e){e[e.Password=0]="Password",e[e.Sso=1]="Sso",e[e.Api=2]="Api"}(t.AuthenticationType||(t.AuthenticationType={}))},34453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherRepromptType=void 0,function(e){e[e.None=0]="None",e[e.Password=1]="Password"}(t.CipherRepromptType||(t.CipherRepromptType={}))},32773:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherType=void 0,function(e){e[e.Login=1]="Login",e[e.SecureNote=2]="SecureNote",e[e.Card=3]="Card",e[e.Identity=4]="Identity"}(t.CipherType||(t.CipherType={}))},69434:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClientType=void 0,function(e){e.Web="web",e.Browser="browser",e.Desktop="desktop",e.Mobile="mobile",e.Cli="cli",e.DirectoryConnector="connector"}(t.ClientType||(t.ClientType={}))},2779:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceType=void 0,function(e){e[e.Android=0]="Android",e[e.iOS=1]="iOS",e[e.ChromeExtension=2]="ChromeExtension",e[e.FirefoxExtension=3]="FirefoxExtension",e[e.OperaExtension=4]="OperaExtension",e[e.EdgeExtension=5]="EdgeExtension",e[e.WindowsDesktop=6]="WindowsDesktop",e[e.MacOsDesktop=7]="MacOsDesktop",e[e.LinuxDesktop=8]="LinuxDesktop",e[e.ChromeBrowser=9]="ChromeBrowser",e[e.FirefoxBrowser=10]="FirefoxBrowser",e[e.OperaBrowser=11]="OperaBrowser",e[e.EdgeBrowser=12]="EdgeBrowser",e[e.IEBrowser=13]="IEBrowser",e[e.UnknownBrowser=14]="UnknownBrowser",e[e.AndroidAmazon=15]="AndroidAmazon",e[e.UWP=16]="UWP",e[e.SafariBrowser=17]="SafariBrowser",e[e.VivaldiBrowser=18]="VivaldiBrowser",e[e.VivaldiExtension=19]="VivaldiExtension",e[e.SafariExtension=20]="SafariExtension"}(t.DeviceType||(t.DeviceType={}))},47200:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed",e[e.RecoveryInitiated=3]="RecoveryInitiated",e[e.RecoveryApproved=4]="RecoveryApproved"}(t.EmergencyAccessStatusType||(t.EmergencyAccessStatusType={}))},82838:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessType=void 0,function(e){e[e.View=0]="View",e[e.Takeover=1]="Takeover"}(t.EmergencyAccessType||(t.EmergencyAccessType={}))},28588:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptionType=void 0,function(e){e[e.AesCbc256_B64=0]="AesCbc256_B64",e[e.AesCbc128_HmacSha256_B64=1]="AesCbc128_HmacSha256_B64",e[e.AesCbc256_HmacSha256_B64=2]="AesCbc256_HmacSha256_B64",e[e.Rsa2048_OaepSha256_B64=3]="Rsa2048_OaepSha256_B64",e[e.Rsa2048_OaepSha1_B64=4]="Rsa2048_OaepSha1_B64",e[e.Rsa2048_OaepSha256_HmacSha256_B64=5]="Rsa2048_OaepSha256_HmacSha256_B64",e[e.Rsa2048_OaepSha1_HmacSha256_B64=6]="Rsa2048_OaepSha1_HmacSha256_B64"}(t.EncryptionType||(t.EncryptionType={}))},80253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventType=void 0,function(e){e[e.User_LoggedIn=1e3]="User_LoggedIn",e[e.User_ChangedPassword=1001]="User_ChangedPassword",e[e.User_Updated2fa=1002]="User_Updated2fa",e[e.User_Disabled2fa=1003]="User_Disabled2fa",e[e.User_Recovered2fa=1004]="User_Recovered2fa",e[e.User_FailedLogIn=1005]="User_FailedLogIn",e[e.User_FailedLogIn2fa=1006]="User_FailedLogIn2fa",e[e.User_ClientExportedVault=1007]="User_ClientExportedVault",e[e.User_UpdatedTempPassword=1008]="User_UpdatedTempPassword",e[e.User_MigratedKeyToKeyConnector=1009]="User_MigratedKeyToKeyConnector",e[e.Cipher_Created=1100]="Cipher_Created",e[e.Cipher_Updated=1101]="Cipher_Updated",e[e.Cipher_Deleted=1102]="Cipher_Deleted",e[e.Cipher_AttachmentCreated=1103]="Cipher_AttachmentCreated",e[e.Cipher_AttachmentDeleted=1104]="Cipher_AttachmentDeleted",e[e.Cipher_Shared=1105]="Cipher_Shared",e[e.Cipher_UpdatedCollections=1106]="Cipher_UpdatedCollections",e[e.Cipher_ClientViewed=1107]="Cipher_ClientViewed",e[e.Cipher_ClientToggledPasswordVisible=1108]="Cipher_ClientToggledPasswordVisible",e[e.Cipher_ClientToggledHiddenFieldVisible=1109]="Cipher_ClientToggledHiddenFieldVisible",e[e.Cipher_ClientToggledCardCodeVisible=1110]="Cipher_ClientToggledCardCodeVisible",e[e.Cipher_ClientCopiedPassword=1111]="Cipher_ClientCopiedPassword",e[e.Cipher_ClientCopiedHiddenField=1112]="Cipher_ClientCopiedHiddenField",e[e.Cipher_ClientCopiedCardCode=1113]="Cipher_ClientCopiedCardCode",e[e.Cipher_ClientAutofilled=1114]="Cipher_ClientAutofilled",e[e.Cipher_SoftDeleted=1115]="Cipher_SoftDeleted",e[e.Cipher_Restored=1116]="Cipher_Restored",e[e.Cipher_ClientToggledCardNumberVisible=1117]="Cipher_ClientToggledCardNumberVisible",e[e.Collection_Created=1300]="Collection_Created",e[e.Collection_Updated=1301]="Collection_Updated",e[e.Collection_Deleted=1302]="Collection_Deleted",e[e.Group_Created=1400]="Group_Created",e[e.Group_Updated=1401]="Group_Updated",e[e.Group_Deleted=1402]="Group_Deleted",e[e.OrganizationUser_Invited=1500]="OrganizationUser_Invited",e[e.OrganizationUser_Confirmed=1501]="OrganizationUser_Confirmed",e[e.OrganizationUser_Updated=1502]="OrganizationUser_Updated",e[e.OrganizationUser_Removed=1503]="OrganizationUser_Removed",e[e.OrganizationUser_UpdatedGroups=1504]="OrganizationUser_UpdatedGroups",e[e.OrganizationUser_UnlinkedSso=1505]="OrganizationUser_UnlinkedSso",e[e.OrganizationUser_ResetPassword_Enroll=1506]="OrganizationUser_ResetPassword_Enroll",e[e.OrganizationUser_ResetPassword_Withdraw=1507]="OrganizationUser_ResetPassword_Withdraw",e[e.OrganizationUser_AdminResetPassword=1508]="OrganizationUser_AdminResetPassword",e[e.OrganizationUser_ResetSsoLink=1509]="OrganizationUser_ResetSsoLink",e[e.OrganizationUser_FirstSsoLogin=1510]="OrganizationUser_FirstSsoLogin",e[e.Organization_Updated=1600]="Organization_Updated",e[e.Organization_PurgedVault=1601]="Organization_PurgedVault",e[e.Organization_VaultAccessed=1603]="Organization_VaultAccessed",e[e.Organization_EnabledSso=1604]="Organization_EnabledSso",e[e.Organization_DisabledSso=1605]="Organization_DisabledSso",e[e.Organization_EnabledKeyConnector=1606]="Organization_EnabledKeyConnector",e[e.Organization_DisabledKeyConnector=1607]="Organization_DisabledKeyConnector",e[e.Organization_SponsorshipsSynced=1608]="Organization_SponsorshipsSynced",e[e.Policy_Updated=1700]="Policy_Updated",e[e.ProviderUser_Invited=1800]="ProviderUser_Invited",e[e.ProviderUser_Confirmed=1801]="ProviderUser_Confirmed",e[e.ProviderUser_Updated=1802]="ProviderUser_Updated",e[e.ProviderUser_Removed=1803]="ProviderUser_Removed",e[e.ProviderOrganization_Created=1900]="ProviderOrganization_Created",e[e.ProviderOrganization_Added=1901]="ProviderOrganization_Added",e[e.ProviderOrganization_Removed=1902]="ProviderOrganization_Removed",e[e.ProviderOrganization_VaultAccessed=1903]="ProviderOrganization_VaultAccessed"}(t.EventType||(t.EventType={}))},67577:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldType=void 0,function(e){e[e.Text=0]="Text",e[e.Hidden=1]="Hidden",e[e.Boolean=2]="Boolean",e[e.Linked=3]="Linked"}(t.FieldType||(t.FieldType={}))},25423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadType=void 0,function(e){e[e.Direct=0]="Direct",e[e.Azure=1]="Azure"}(t.FileUploadType||(t.FileUploadType={}))},43578:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HashPurpose=void 0,function(e){e[e.ServerAuthorization=1]="ServerAuthorization",e[e.LocalAuthorization=2]="LocalAuthorization"}(t.HashPurpose||(t.HashPurpose={}))},46632:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlStorageLocation=void 0,function(e){e.Local="local",e.Memory="memory",e.Session="session"}(t.HtmlStorageLocation||(t.HtmlStorageLocation={}))},55766:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regularImportOptions=t.featuredImportOptions=void 0,t.featuredImportOptions=[{id:"bitwardenjson",name:"Bitwarden (json)"},{id:"bitwardencsv",name:"Bitwarden (csv)"},{id:"chromecsv",name:"Chrome (csv)"},{id:"dashlanecsv",name:"Dashlane (csv)"},{id:"firefoxcsv",name:"Firefox (csv)"},{id:"keepass2xml",name:"KeePass 2 (xml)"},{id:"lastpasscsv",name:"LastPass (csv)"},{id:"safaricsv",name:"Safari and macOS (csv)"},{id:"1password1pux",name:"1Password (1pux)"}],t.regularImportOptions=[{id:"keepassxcsv",name:"KeePassX (csv)"},{id:"1password1pif",name:"1Password (1pif)"},{id:"1passwordwincsv",name:"1Password 6 and 7 Windows (csv)"},{id:"1passwordmaccsv",name:"1Password 6 and 7 Mac (csv)"},{id:"dashlanejson",name:"Dashlane (json)"},{id:"roboformcsv",name:"RoboForm (csv)"},{id:"keepercsv",name:"Keeper (csv)"},{id:"enpasscsv",name:"Enpass (csv)"},{id:"enpassjson",name:"Enpass (json)"},{id:"safeincloudxml",name:"SafeInCloud (xml)"},{id:"pwsafexml",name:"Password Safe (xml)"},{id:"stickypasswordxml",name:"Sticky Password (xml)"},{id:"msecurecsv",name:"mSecure (csv)"},{id:"truekeycsv",name:"True Key (csv)"},{id:"passwordbossjson",name:"Password Boss (json)"},{id:"zohovaultcsv",name:"Zoho Vault (csv)"},{id:"splashidcsv",name:"SplashID (csv)"},{id:"passworddragonxml",name:"Password Dragon (xml)"},{id:"padlockcsv",name:"Padlock (csv)"},{id:"passboltcsv",name:"Passbolt (csv)"},{id:"clipperzhtml",name:"Clipperz (html)"},{id:"aviracsv",name:"Avira (csv)"},{id:"saferpasscsv",name:"SaferPass (csv)"},{id:"upmcsv",name:"Universal Password Manager (csv)"},{id:"ascendocsv",name:"Ascendo DataVault (csv)"},{id:"meldiumcsv",name:"Meldium (csv)"},{id:"passkeepcsv",name:"PassKeep (csv)"},{id:"operacsv",name:"Opera (csv)"},{id:"vivaldicsv",name:"Vivaldi (csv)"},{id:"gnomejson",name:"GNOME Passwords and Keys/Seahorse (json)"},{id:"blurcsv",name:"Blur (csv)"},{id:"passwordagentcsv",name:"Password Agent (csv)"},{id:"passpackcsv",name:"Passpack (csv)"},{id:"passmanjson",name:"Passman (json)"},{id:"avastcsv",name:"Avast Passwords (csv)"},{id:"avastjson",name:"Avast Passwords (json)"},{id:"fsecurefsk",name:"F-Secure KEY (fsk)"},{id:"kasperskytxt",name:"Kaspersky Password Manager (txt)"},{id:"remembearcsv",name:"RememBear (csv)"},{id:"passwordwallettxt",name:"PasswordWallet (txt)"},{id:"mykicsv",name:"Myki (csv)"},{id:"securesafecsv",name:"SecureSafe (csv)"},{id:"logmeoncecsv",name:"LogMeOnce (csv)"},{id:"blackberrycsv",name:"BlackBerry Password Keeper (csv)"},{id:"buttercupcsv",name:"Buttercup (csv)"},{id:"codebookcsv",name:"Codebook (csv)"},{id:"encryptrcsv",name:"Encryptr (csv)"},{id:"yoticsv",name:"Yoti (csv)"},{id:"nordpasscsv",name:"Nordpass (csv)"}]},20971:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SEND_KDF_ITERATIONS=t.DEFAULT_KDF_ITERATIONS=t.DEFAULT_KDF_TYPE=t.KdfType=void 0,function(e){e[e.PBKDF2_SHA256=0]="PBKDF2_SHA256"}(n=t.KdfType||(t.KdfType={})),t.DEFAULT_KDF_TYPE=n.PBKDF2_SHA256,t.DEFAULT_KDF_ITERATIONS=1e5,t.SEND_KDF_ITERATIONS=1e5},7980:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeySuffixOptions=void 0,function(e){e.Auto="auto",e.Biometric="biometric"}(t.KeySuffixOptions||(t.KeySuffixOptions={}))},31909:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityLinkedId=t.CardLinkedId=t.LoginLinkedId=void 0,function(e){e[e.Username=100]="Username",e[e.Password=101]="Password"}(t.LoginLinkedId||(t.LoginLinkedId={})),function(e){e[e.CardholderName=300]="CardholderName",e[e.ExpMonth=301]="ExpMonth",e[e.ExpYear=302]="ExpYear",e[e.Code=303]="Code",e[e.Brand=304]="Brand",e[e.Number=305]="Number"}(t.CardLinkedId||(t.CardLinkedId={})),function(e){e[e.Title=400]="Title",e[e.MiddleName=401]="MiddleName",e[e.Address1=402]="Address1",e[e.Address2=403]="Address2",e[e.Address3=404]="Address3",e[e.City=405]="City",e[e.State=406]="State",e[e.PostalCode=407]="PostalCode",e[e.Country=408]="Country",e[e.Company=409]="Company",e[e.Email=410]="Email",e[e.Phone=411]="Phone",e[e.Ssn=412]="Ssn",e[e.Username=413]="Username",e[e.PassportNumber=414]="PassportNumber",e[e.LicenseNumber=415]="LicenseNumber",e[e.FirstName=416]="FirstName",e[e.LastName=417]="LastName",e[e.FullName=418]="FullName"}(t.IdentityLinkedId||(t.IdentityLinkedId={}))},71518:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevelType=void 0,function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(t.LogLevelType||(t.LogLevelType={}))},7837:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationType=void 0,function(e){e[e.SyncCipherUpdate=0]="SyncCipherUpdate",e[e.SyncCipherCreate=1]="SyncCipherCreate",e[e.SyncLoginDelete=2]="SyncLoginDelete",e[e.SyncFolderDelete=3]="SyncFolderDelete",e[e.SyncCiphers=4]="SyncCiphers",e[e.SyncVault=5]="SyncVault",e[e.SyncOrgKeys=6]="SyncOrgKeys",e[e.SyncFolderCreate=7]="SyncFolderCreate",e[e.SyncFolderUpdate=8]="SyncFolderUpdate",e[e.SyncCipherDelete=9]="SyncCipherDelete",e[e.SyncSettings=10]="SyncSettings",e[e.LogOut=11]="LogOut",e[e.SyncSendCreate=12]="SyncSendCreate",e[e.SyncSendUpdate=13]="SyncSendUpdate",e[e.SyncSendDelete=14]="SyncSendDelete"}(t.NotificationType||(t.NotificationType={}))},43497:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyType=void 0,function(e){e[e.Default=0]="Default",e[e.BillingSync=1]="BillingSync"}(t.OrganizationApiKeyType||(t.OrganizationApiKeyType={}))},24643:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionType=void 0,function(e){e[e.CloudBillingSync=1]="CloudBillingSync"}(t.OrganizationConnectionType||(t.OrganizationConnectionType={}))},7368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed"}(t.OrganizationUserStatusType||(t.OrganizationUserStatusType={}))},33712:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserType=void 0,function(e){e[e.Owner=0]="Owner",e[e.Admin=1]="Admin",e[e.User=2]="User",e[e.Manager=3]="Manager",e[e.Custom=4]="Custom"}(t.OrganizationUserType||(t.OrganizationUserType={}))},98523:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentMethodType=void 0,function(e){e[e.Card=0]="Card",e[e.BankAccount=1]="BankAccount",e[e.PayPal=2]="PayPal",e[e.BitPay=3]="BitPay",e[e.Credit=4]="Credit",e[e.WireTransfer=5]="WireTransfer",e[e.AppleInApp=6]="AppleInApp",e[e.GoogleInApp=7]="GoogleInApp",e[e.Check=8]="Check"}(t.PaymentMethodType||(t.PaymentMethodType={}))},47880:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Permissions=void 0,function(e){e[e.AccessEventLogs=0]="AccessEventLogs",e[e.AccessImportExport=1]="AccessImportExport",e[e.AccessReports=2]="AccessReports",e[e.ManageAllCollections=3]="ManageAllCollections",e[e.ManageAssignedCollections=4]="ManageAssignedCollections",e[e.ManageGroups=5]="ManageGroups",e[e.ManageOrganization=6]="ManageOrganization",e[e.ManagePolicies=7]="ManagePolicies",e[e.ManageProvider=8]="ManageProvider",e[e.ManageUsers=9]="ManageUsers",e[e.ManageUsersPassword=10]="ManageUsersPassword",e[e.CreateNewCollections=11]="CreateNewCollections",e[e.EditAnyCollection=12]="EditAnyCollection",e[e.DeleteAnyCollection=13]="DeleteAnyCollection",e[e.EditAssignedCollections=14]="EditAssignedCollections",e[e.DeleteAssignedCollections=15]="DeleteAssignedCollections",e[e.ManageSso=16]="ManageSso",e[e.ManageBilling=17]="ManageBilling"}(t.Permissions||(t.Permissions={}))},22931:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanSponsorshipType=void 0,function(e){e[e.FamiliesForEnterprise=0]="FamiliesForEnterprise"}(t.PlanSponsorshipType||(t.PlanSponsorshipType={}))},47937:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanType=void 0,function(e){e[e.Free=0]="Free",e[e.FamiliesAnnually2019=1]="FamiliesAnnually2019",e[e.TeamsMonthly2019=2]="TeamsMonthly2019",e[e.TeamsAnnually2019=3]="TeamsAnnually2019",e[e.EnterpriseMonthly2019=4]="EnterpriseMonthly2019",e[e.EnterpriseAnnually2019=5]="EnterpriseAnnually2019",e[e.Custom=6]="Custom",e[e.FamiliesAnnually=7]="FamiliesAnnually",e[e.TeamsMonthly=8]="TeamsMonthly",e[e.TeamsAnnually=9]="TeamsAnnually",e[e.EnterpriseMonthly=10]="EnterpriseMonthly",e[e.EnterpriseAnnually=11]="EnterpriseAnnually"}(t.PlanType||(t.PlanType={}))},49906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyType=void 0,function(e){e[e.TwoFactorAuthentication=0]="TwoFactorAuthentication",e[e.MasterPassword=1]="MasterPassword",e[e.PasswordGenerator=2]="PasswordGenerator",e[e.SingleOrg=3]="SingleOrg",e[e.RequireSso=4]="RequireSso",e[e.PersonalOwnership=5]="PersonalOwnership",e[e.DisableSend=6]="DisableSend",e[e.SendOptions=7]="SendOptions",e[e.ResetPassword=8]="ResetPassword",e[e.MaximumVaultTimeout=9]="MaximumVaultTimeout",e[e.DisablePersonalVaultExport=10]="DisablePersonalVaultExport"}(t.PolicyType||(t.PolicyType={}))},96066:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProductType=void 0,function(e){e[e.Free=0]="Free",e[e.Families=1]="Families",e[e.Teams=2]="Teams",e[e.Enterprise=3]="Enterprise"}(t.ProductType||(t.ProductType={}))},72418:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed"}(t.ProviderUserStatusType||(t.ProviderUserStatusType={}))},30185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserType=void 0,function(e){e[e.ProviderAdmin=0]="ProviderAdmin",e[e.ServiceUser=1]="ServiceUser"}(t.ProviderUserType||(t.ProviderUserType={}))},76716:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteType=void 0,function(e){e[e.Generic=0]="Generic"}(t.SecureNoteType||(t.SecureNoteType={}))},70149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendType=void 0,function(e){e[e.Text=0]="Text",e[e.File=1]="File"}(t.SendType||(t.SendType={}))},37084:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Saml2SigningBehavior=t.Saml2NameIdFormat=t.Saml2BindingType=t.OpenIdConnectRedirectBehavior=t.SsoType=void 0,function(e){e[e.None=0]="None",e[e.OpenIdConnect=1]="OpenIdConnect",e[e.Saml2=2]="Saml2"}(t.SsoType||(t.SsoType={})),function(e){e[e.RedirectGet=0]="RedirectGet",e[e.FormPost=1]="FormPost"}(t.OpenIdConnectRedirectBehavior||(t.OpenIdConnectRedirectBehavior={})),function(e){e[e.HttpRedirect=1]="HttpRedirect",e[e.HttpPost=2]="HttpPost"}(t.Saml2BindingType||(t.Saml2BindingType={})),function(e){e[e.NotConfigured=0]="NotConfigured",e[e.Unspecified=1]="Unspecified",e[e.EmailAddress=2]="EmailAddress",e[e.X509SubjectName=3]="X509SubjectName",e[e.WindowsDomainQualifiedName=4]="WindowsDomainQualifiedName",e[e.KerberosPrincipalName=5]="KerberosPrincipalName",e[e.EntityIdentifier=6]="EntityIdentifier",e[e.Persistent=7]="Persistent",e[e.Transient=8]="Transient"}(t.Saml2NameIdFormat||(t.Saml2NameIdFormat={})),function(e){e[e.IfIdpWantAuthnRequestsSigned=0]="IfIdpWantAuthnRequestsSigned",e[e.Always=1]="Always",e[e.Never=3]="Never"}(t.Saml2SigningBehavior||(t.Saml2SigningBehavior={}))},40898:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateVersion=void 0,function(e){e[e.One=1]="One",e[e.Two=2]="Two",e[e.Three=3]="Three",e[e.Four=4]="Four",e[e.Latest=4]="Latest"}(t.StateVersion||(t.StateVersion={}))},67223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageLocation=void 0,function(e){e.Both="both",e.Disk="disk",e.Memory="memory"}(t.StorageLocation||(t.StorageLocation={}))},14538:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeType=void 0,function(e){e.System="system",e.Light="light",e.Dark="dark",e.Nord="nord",e.SolarizedDark="solarizedDark"}(t.ThemeType||(t.ThemeType={}))},94285:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransactionType=void 0,function(e){e[e.Charge=0]="Charge",e[e.Credit=1]="Credit",e[e.PromotionalCredit=2]="PromotionalCredit",e[e.ReferralCredit=3]="ReferralCredit",e[e.Refund=4]="Refund"}(t.TransactionType||(t.TransactionType={}))},97374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderType=void 0,function(e){e[e.Authenticator=0]="Authenticator",e[e.Email=1]="Email",e[e.Duo=2]="Duo",e[e.Yubikey=3]="Yubikey",e[e.U2f=4]="U2f",e[e.Remember=5]="Remember",e[e.OrganizationDuo=6]="OrganizationDuo",e[e.WebAuthn=7]="WebAuthn"}(t.TwoFactorProviderType||(t.TwoFactorProviderType={}))},71703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UriMatchType=void 0,function(e){e[e.Domain=0]="Domain",e[e.Host=1]="Host",e[e.StartsWith=2]="StartsWith",e[e.Exact=3]="Exact",e[e.RegularExpression=4]="RegularExpression",e[e.Never=5]="Never"}(t.UriMatchType||(t.UriMatchType={}))},44254:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerificationType=void 0,function(e){e[e.MasterPassword=0]="MasterPassword",e[e.OTP=1]="OTP"}(t.VerificationType||(t.VerificationType={}))},45428:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AccountFactory=void 0;t.AccountFactory=class{constructor(e){this.accountConstructor=e}create(e){return new this.accountConstructor(e)}}},22855:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalStateFactory=void 0;t.GlobalStateFactory=class{constructor(e){this.globalStateConstructor=e}create(e){return new this.globalStateConstructor(e)}}},35266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateFactory=void 0;const i=n(45428),r=n(22855);t.StateFactory=class{constructor(e,t){this.globalStateFactory=new r.GlobalStateFactory(e),this.accountFactory=new i.AccountFactory(t)}createGlobal(e){return this.globalStateFactory.create(e)}createAccount(e){return this.accountFactory.create(e)}}},51214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AscendoCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<2)return;const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[e.length-1]),n.name=this.getValueOrDefault(e[0],"--"),e.length>2&&e.length%2==0)for(let t=0;t-1?n.login.password=this.getValueOrDefault(i):null==n.login.username&&this.usernameFieldNames.indexOf(o)>-1?n.login.username=this.getValueOrDefault(i):(null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(o)>-1?n.login.uris=this.makeUriArray(i):this.processKvp(n,r,i)}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AscendoCsvImporter=o},60006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AvastCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name),n.login.uris=this.makeUriArray(e.web),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.login),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AvastCsvImporter=o},14494:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AvastJsonImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new o.ImportResult,n=JSON.parse(e);return null==n?(t.success=!1,Promise.resolve(t)):(null!=n.logins&&n.logins.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.custName),n.notes=this.getValueOrDefault(e.note),n.login.uris=this.makeUriArray(e.url),n.login.password=this.getValueOrDefault(e.pwd),n.login.username=this.getValueOrDefault(e.loginName),this.cleanupCipher(n),t.ciphers.push(n)})),null!=n.notes&&n.notes.forEach((e=>{const n=this.initLoginCipher();n.type=i.CipherType.SecureNote,n.secureNote.type=r.SecureNoteType.Generic,n.name=this.getValueOrDefault(e.label),n.notes=this.getValueOrDefault(e.text),this.cleanupCipher(n),t.ciphers.push(n)})),null!=n.cards&&n.cards.forEach((e=>{const n=this.initLoginCipher();n.type=i.CipherType.Card,n.name=this.getValueOrDefault(e.custName),n.notes=this.getValueOrDefault(e.note),n.card.cardholderName=this.getValueOrDefault(e.holderName),n.card.number=this.getValueOrDefault(e.cardNumber),n.card.code=this.getValueOrDefault(e.cvv),n.card.brand=this.getCardBrand(n.card.number),null!=e.expirationDate&&(null!=e.expirationDate.month&&(n.card.expMonth=e.expirationDate.month+""),null!=e.expirationDate.year&&(n.card.expYear=e.expirationDate.year+"")),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AvastJsonImporter=s},51272:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AviraCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name,this.getValueOrDefault(this.nameFromUrl(e.website),"--")),n.login.uris=this.makeUriArray(e.website),n.login.password=this.getValueOrDefault(e.password),this.isNullOrWhitespace(e.username)&&!this.isNullOrWhitespace(e.secondary_username)?n.login.username=e.secondary_username:(n.login.username=this.getValueOrDefault(e.username),n.notes=this.getValueOrDefault(e.secondary_username)),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AviraCsvImporter=o},5957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseImporter=void 0;const i=n(57460),r=n(32773),o=n(67577),a=n(76716),s=n(82769),l=n(97144),c=n(86001),d=n(58545),p=n(36914),u=n(16506),m=n(28331),h=n(99364),v=n(27944);t.BaseImporter=class{constructor(){this.organizationId=null,this.logService=new v.ConsoleLogService(!1),this.newLineRegex=/(?:\r\n|\r|\n)/,this.passwordFieldNames=["password","pass word","passphrase","pass phrase","pass","code","code word","codeword","secret","secret word","personpwd","key","keyword","key word","keyphrase","key phrase","form_pw","wppassword","pin","pwd","pw","pword","passwd","p","serial","serial#","license key","reg #","passwort"],this.usernameFieldNames=["user","name","user name","username","login name","email","e-mail","id","userid","user id","login","form_loginname","wpname","mail","loginid","login id","log","personlogin","first name","last name","card#","account #","member","member #","nom","benutzername"],this.notesFieldNames=["note","notes","comment","comments","memo","description","free form","freeform","free text","freetext","free","kommentar"],this.uriFieldNames=["url","hyper link","hyperlink","link","host","hostname","host name","server","address","hyper ref","href","web","website","web site","site","web-site","uri","ort","adresse"],this.parseCsvOptions={encoding:"UTF-8",skipEmptyLines:!1}}get organization(){return null!=this.organizationId}parseXml(e){const t=(new DOMParser).parseFromString(e,"application/xml");return null!=t&&null==t.querySelector("parsererror")?t:null}parseCsv(e,t,n={}){const r=Object.assign({header:t},this.parseCsvOptions,n);e=this.splitNewLine(e).join("\n").trim();const o=i.parse(e,r);return null!=o.errors&&o.errors.length>0&&o.errors.forEach((e=>{null!=e.row&&this.logService.warning("Error parsing row "+e.row+": "+e.message)})),o.data&&o.data.length>0?o.data:null}parseSingleRowCsv(e){if(this.isNullOrWhitespace(e))return null;const t=this.parseCsv(e,!1);return null!=t&&t.length>0&&t[0].length>0?t[0]:null}makeUriArray(e){if(null==e)return null;if("string"==typeof e){const t=new u.LoginUriView;return t.uri=this.fixUri(e),this.isNullOrWhitespace(t.uri)?null:(t.match=null,[t])}if(e.length>0){const t=[];return e.forEach((e=>{const n=new u.LoginUriView;n.uri=this.fixUri(e),this.isNullOrWhitespace(n.uri)||(n.match=null,t.push(n))})),0===t.length?null:t}return null}fixUri(e){return null==e?null:(-1===(e=e.trim()).indexOf("://")&&e.indexOf(".")>=0&&(e="http://"+e),e.length>1e3?e.substring(0,1e3):e)}nameFromUrl(e){const t=s.Utils.getHostname(e);return this.isNullOrWhitespace(t)?null:t.startsWith("www.")?t.replace("www.",""):t}isNullOrWhitespace(e){return s.Utils.isNullOrWhitespace(e)}getValueOrDefault(e,t=null){return this.isNullOrWhitespace(e)?t:e}splitNewLine(e){return e.split(this.newLineRegex)}getCardBrand(e){if(this.isNullOrWhitespace(e))return null;let t=new RegExp("^4");return null!=e.match(t)?"Visa":/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(e)?"Mastercard":(t=new RegExp("^3[47]"),null!=e.match(t)?"Amex":(t=new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)"),null!=e.match(t)?"Discover":(t=new RegExp("^36"),null!=e.match(t)?"Diners Club":(t=new RegExp("^30[0-5]"),null!=e.match(t)?"Diners Club":(t=new RegExp("^35(2[89]|[3-8][0-9])"),null!=e.match(t)?"JCB":(t=new RegExp("^(4026|417500|4508|4844|491(3|7))"),null!=e.match(t)?"Visa":null))))))}setCardExpiration(e,t){if(!this.isNullOrWhitespace(t)){const n=(t=t.replace(/\s/g,"")).split("/");if(2===n.length){let t=null,i=null;if(1!==n[0].length&&2!==n[0].length||(t=n[0],2===t.length&&"0"===t[0]&&(t=t.substr(1,1))),2!==n[1].length&&4!==n[1].length||(i=2===t.length?"20"+n[1]:n[1]),null!=t&&null!=i)return e.card.expMonth=t,e.card.expYear=i,!0}}return!1}moveFoldersToCollections(e){e.folderRelationships.forEach((t=>e.collectionRelationships.push(t))),e.collections=e.folders.map((e=>{const t=new c.CollectionView;return t.name=e.name,t})),e.folderRelationships=[],e.folders=[]}querySelectorDirectChild(e,t){const n=this.querySelectorAllDirectChild(e,t);return 0===n.length?null:n[0]}querySelectorAllDirectChild(e,t){return Array.from(e.querySelectorAll(t)).filter((t=>t.parentNode===e))}initLoginCipher(){const e=new l.CipherView;return e.favorite=!1,e.notes="",e.fields=[],e.login=new m.LoginView,e.type=r.CipherType.Login,e}cleanupCipher(e){null!=e&&(e.type!==r.CipherType.Login&&(e.login=null),this.isNullOrWhitespace(e.name)&&(e.name="--"),this.isNullOrWhitespace(e.notes)?e.notes=null:e.notes=e.notes.trim(),null!=e.fields&&0===e.fields.length&&(e.fields=null))}processKvp(e,t,n,i=o.FieldType.Text){if(!this.isNullOrWhitespace(n))if(this.isNullOrWhitespace(t)&&(t=""),n.length>200||n.trim().search(this.newLineRegex)>-1)null==e.notes&&(e.notes=""),e.notes+=t+": "+this.splitNewLine(n).join("\n")+"\n";else{null==e.fields&&(e.fields=[]);const r=new d.FieldView;r.type=i,r.name=t,r.value=n,e.fields.push(r)}}processFolder(e,t){let n=e.folders.length;const i=!this.isNullOrWhitespace(t);let r=i;if(i)for(let o=0;o0&&(e.identity.firstName=this.getValueOrDefault(n[0])),2===n.length?e.identity.lastName=this.getValueOrDefault(n[1]):n.length>=3&&(e.identity.middleName=this.getValueOrDefault(n[1]),e.identity.lastName=n.slice(2,n.length).join(" "))}}},25690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenCsvImporter=void 0;const i=n(34453),r=n(32773),o=n(67577),a=n(76716),s=n(2859),l=n(97144),c=n(86001),d=n(58545),p=n(28331),u=n(99364),m=n(5957);class h extends m.BaseImporter{parse(e){const t=new s.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.organization&&!this.isNullOrWhitespace(e.collections)){e.collections.split(",").forEach((e=>{let n=!0,i=t.collections.length;for(let r=0;ri+2&&(r.value=t[e].substr(i+2)),n.fields.push(r)}}switch(null!=e.type?e.type.toLowerCase():null){case"note":n.type=r.CipherType.SecureNote,n.secureNote=new u.SecureNoteView,n.secureNote.type=a.SecureNoteType.Generic;break;default:{n.type=r.CipherType.Login,n.login=new p.LoginView,n.login.totp=this.getValueOrDefault(e.login_totp||e.totp),n.login.username=this.getValueOrDefault(e.login_username||e.username),n.login.password=this.getValueOrDefault(e.login_password||e.password);const t=this.parseSingleRowCsv(e.login_uri||e.uri);n.login.uris=this.makeUriArray(t);break}}t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BitwardenCsvImporter=h},10614:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenJsonImporter=void 0;const r=n(22205),o=n(2859),a=n(83460),s=n(5136),l=n(31087),c=n(5957);class d extends c.BaseImporter{constructor(e,t){super(),this.cryptoService=e,this.i18nService=t}parse(e){var t;return i(this,void 0,void 0,(function*(){return this.result=new o.ImportResult,this.results=JSON.parse(e),null==this.results||null==this.results.items?(null===(t=this.results)||void 0===t?void 0:t.passwordProtected)?(this.result.success=!1,this.result.missingPassword=!0,this.result.errorMessage=this.i18nService.t("importPasswordRequired"),this.result):(this.result.success=!1,this.result):(this.results.encrypted?yield this.parseEncrypted():this.parseDecrypted(),this.result)}))}parseEncrypted(){return i(this,void 0,void 0,(function*(){if(null!=this.results.encKeyValidation_DO_NOT_EDIT){const e=yield this.cryptoService.getOrgKey(this.organizationId),t=new r.EncString(this.results.encKeyValidation_DO_NOT_EDIT);if(null===(yield this.cryptoService.decryptToUtf8(t,e)))return this.result.success=!1,void(this.result.errorMessage=this.i18nService.t("importEncKeyError"))}const e=new Map;if(this.organization&&null!=this.results.collections)for(const t of this.results.collections){const n=s.CollectionWithIdExport.toDomain(t);if(null!=n){n.id=null,n.organizationId=this.organizationId;const i=yield n.decrypt();e.set(t.id,this.result.collections.length),this.result.collections.push(i)}}else if(!this.organization&&null!=this.results.folders)for(const t of this.results.folders){const n=l.FolderWithIdExport.toDomain(t);if(null!=n){n.id=null;const i=yield n.decrypt();e.set(t.id,this.result.folders.length),this.result.folders.push(i)}}for(const t of this.results.items){const n=a.CipherWithIdExport.toDomain(t);n.id=null,n.folderId=null,n.organizationId=this.organizationId,n.collectionIds=null,null!=n.passwordHistory&&n.passwordHistory.length>5&&(n.passwordHistory=n.passwordHistory.slice(0,5)),!this.organization&&null!=t.folderId&&e.has(t.folderId)?this.result.folderRelationships.push([this.result.ciphers.length,e.get(t.folderId)]):this.organization&&null!=t.collectionIds&&t.collectionIds.forEach((t=>{e.has(t)&&this.result.collectionRelationships.push([this.result.ciphers.length,e.get(t)])}));const i=yield n.decrypt();this.cleanupCipher(i),this.result.ciphers.push(i)}this.result.success=!0}))}parseDecrypted(){const e=new Map;this.organization&&null!=this.results.collections?this.results.collections.forEach((t=>{const n=s.CollectionWithIdExport.toView(t);null!=n&&(n.id=null,n.organizationId=null,e.set(t.id,this.result.collections.length),this.result.collections.push(n))})):this.organization||null==this.results.folders||this.results.folders.forEach((t=>{const n=l.FolderWithIdExport.toView(t);null!=n&&(n.id=null,e.set(t.id,this.result.folders.length),this.result.folders.push(n))})),this.results.items.forEach((t=>{const n=a.CipherWithIdExport.toView(t);n.id=null,n.folderId=null,n.organizationId=null,n.collectionIds=null,null!=n.passwordHistory&&n.passwordHistory.length>5&&(n.passwordHistory=n.passwordHistory.slice(0,5)),!this.organization&&null!=t.folderId&&e.has(t.folderId)?this.result.folderRelationships.push([this.result.ciphers.length,e.get(t.folderId)]):this.organization&&null!=t.collectionIds&&t.collectionIds.forEach((t=>{e.has(t)&&this.result.collectionRelationships.push([this.result.ciphers.length,e.get(t)])})),this.cleanupCipher(n),this.result.ciphers.push(n)})),this.result.success=!0}}t.BitwardenJsonImporter=d},20312:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenPasswordProtectedImporter=void 0;const r=n(20971),o=n(22205),a=n(2859),s=n(10614);class l extends s.BitwardenJsonImporter{constructor(e,t,n){super(e,t),this.password=n}parse(e){const t=Object.create(null,{parse:{get:()=>super.parse}});return i(this,void 0,void 0,(function*(){const n=new a.ImportResult,i=JSON.parse(e);if(this.cannotParseFile(i))return n.success=!1,n;if(!(yield this.checkPassword(i)))return n.success=!1,n.errorMessage=this.i18nService.t("importEncKeyError"),n;const r=new o.EncString(i.data),s=yield this.cryptoService.decryptToUtf8(r,this.key);return yield t.parse.call(this,s)}))}checkPassword(e){return i(this,void 0,void 0,(function*(){this.key=yield this.cryptoService.makePinKey(this.password,e.salt,r.KdfType.PBKDF2_SHA256,e.kdfIterations);const t=new o.EncString(e.encKeyValidation_DO_NOT_EDIT);return null!==(yield this.cryptoService.decryptToUtf8(t,this.key))}))}cannotParseFile(e){return!(e&&e.encrypted&&e.passwordProtected&&e.salt&&e.kdfIterations&&"number"==typeof e.kdfIterations&&null!=e.kdfType&&null!=r.KdfType[e.kdfType]&&e.encKeyValidation_DO_NOT_EDIT&&e.data)}}t.BitwardenPasswordProtectedImporter=l},19326:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlackBerryCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if("list"===e.grouping)return;const n=this.initLoginCipher();n.favorite="1"===e.fav,n.name=this.getValueOrDefault(e.name),n.notes=this.getValueOrDefault(e.extra),"note"!==e.grouping&&(n.login.uris=this.makeUriArray(e.url),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.username)),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BlackBerryCsvImporter=o},68360:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{"null"===e.label&&(e.label=null);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.label,this.getValueOrDefault(this.nameFromUrl(e.domain),"--")),n.login.uris=this.makeUriArray(e.domain),n.login.password=this.getValueOrDefault(e.password),this.isNullOrWhitespace(e.email)&&!this.isNullOrWhitespace(e.username)?n.login.username=e.username:(n.login.username=this.getValueOrDefault(e.email),n.notes=this.getValueOrDefault(e.username)),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BlurCsvImporter=o},33268:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtercupCsvImporter=void 0;const i=n(2859),r=n(5957),o=["!group_id","!group_name","title","username","password","URL","id"];class a extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValueOrDefault(e["!group_name"]));const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.title,"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.URL);let i=!1;for(const t in e)e.hasOwnProperty(t)&&(i||-1!==o.indexOf(t)||(i=!0),i&&this.processKvp(n,t,e[t]));this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.ButtercupCsvImporter=a},58141:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChromeCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name,"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.ChromeCsvImporter=o},86025:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClipperzHtmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelector("textarea");if(null==r||this.isNullOrWhitespace(r.textContent))return t.errorMessage="Missing textarea.",t.success=!1,Promise.resolve(t);return JSON.parse(r.textContent).forEach((e=>{const n=this.initLoginCipher();if(this.isNullOrWhitespace(e.label)||(n.name=e.label.split(" ")[0]),null==e.data||this.isNullOrWhitespace(e.data.notes)||(n.notes=e.data.notes.split("\\n").join("\n")),null!=e.currentVersion&&null!=e.currentVersion.fields)for(const t in e.currentVersion.fields){if(!e.currentVersion.fields.hasOwnProperty(t))continue;const i=e.currentVersion.fields[t];switch(null!=i.actionType?i.actionType.toLowerCase():null){case"password":n.login.password=this.getValueOrDefault(i.value);break;case"email":case"username":case"user":case"name":n.login.username=this.getValueOrDefault(i.value);break;case"url":n.login.uris=this.makeUriArray(i.value);break;default:{const e=null!=i.label?i.label.toLowerCase():null;null==n.login.password&&this.passwordFieldNames.indexOf(e)>-1?n.login.password=this.getValueOrDefault(i.value):null==n.login.username&&this.usernameFieldNames.indexOf(e)>-1?n.login.username=this.getValueOrDefault(i.value):(null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(e)>-1?n.login.uris=this.makeUriArray(i.value):this.processKvp(n,i.label,i.value);break}}}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}}t.ClipperzHtmlImporter=o},42752:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodebookCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValueOrDefault(e.Category));const n=this.initLoginCipher();n.favorite="True"===this.getValueOrDefault(e.Favorite),n.name=this.getValueOrDefault(e.Entry,"--"),n.notes=this.getValueOrDefault(e.Note),n.login.username=this.getValueOrDefault(e.Username,e.Email),n.login.password=this.getValueOrDefault(e.Password),n.login.totp=this.getValueOrDefault(e.TOTP),n.login.uris=this.makeUriArray(e.Website),this.isNullOrWhitespace(e.Username)||this.processKvp(n,"Email",e.Email),this.processKvp(n,"Phone",e.Phone),this.processKvp(n,"PIN",e.PIN),this.processKvp(n,"Account",e.Account),this.processKvp(n,"Date",e.Date),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.CodebookCsvImporter=o},99552:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DashlaneCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(48830),l=n(28331),c=n(5957),d=new Set(["title","note","username","password","url","otpSecret","category"]),p=new Set(["type","title","first_name","middle_name","last_name","login","email","phone_number","address","country","state","city","zip","item_name"]),u=new Set(["title","note"]);class m extends c.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);if(null==n)return t.success=!1,Promise.resolve(t);if(null!=n[0].type&&null!=n[0].title){if(1===n.filter((e=>"name"===e.type)).length){const e=this.initLoginCipher();return e.type=i.CipherType.Identity,e.identity=new s.IdentityView,n.forEach((t=>{this.parsePersonalInformationRecordAsIdentity(e,t)})),this.cleanupCipher(e),t.ciphers.push(e),t.success=!0,Promise.resolve(t)}}return n.forEach((e=>{const n=this.initLoginCipher(),i=Object.keys(e);"username"===i[0]&&(this.processFolder(t,e.category),this.parseCredentialsRecord(n,e)),"type"===i[0]&&"account_name"===i[1]&&this.parsePaymentRecord(n,e),"type"===i[0]&&"number"===i[1]&&this.parseIdRecord(n,e),"type"===i[0]!=null&&"title"===i[1]&&this.parsePersonalInformationRecord(n,e),"title"===i[0]&&"note"===i[1]&&this.parseSecureNoteRecords(n,e),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}parseCredentialsRecord(e,t){e.type=i.CipherType.Login,e.login=new l.LoginView,e.name=t.title,e.notes=t.note,e.login.username=t.username,e.login.password=t.password,e.login.totp=t.otpSecret,e.login.uris=this.makeUriArray(t.url),this.importUnmappedFields(e,t,d)}parsePaymentRecord(e,t){e.type=i.CipherType.Card,e.card=new a.CardView,e.name=t.account_name;let n=[];switch(t.type){case"credit_card":e.card.cardholderName=t.account_name,e.card.number=t.cc_number,e.card.brand=this.getCardBrand(e.card.number),e.card.code=t.code,e.card.expMonth=t.expiration_month,e.card.expYear=t.expiration_year.substring(2,4),n=["account_name","account_holder","cc_number","code","expiration_month","expiration_year"];break;case"bank":e.card.cardholderName=t.account_holder,e.card.number=t.account_number,n=["account_name","account_holder","account_number"]}this.importUnmappedFields(e,t,new Set(n))}parseIdRecord(e,t){e.type=i.CipherType.Identity,e.identity=new s.IdentityView;const n=["name","number"];switch(t.type){case"card":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.licenseNumber=t.number;break;case"passport":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.passportNumber=t.number;break;case"license":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.licenseNumber=t.number,e.identity.state=t.state,n.push("state");break;case"social_security":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.ssn=t.number;break;case"tax_number":e.name=t.type,e.identity.licenseNumber=t.number}this.importUnmappedFields(e,t,new Set(n))}parsePersonalInformationRecord(e,t){e.type=i.CipherType.SecureNote,e.secureNote.type=r.SecureNoteType.Generic,"name"===t.type?e.name=`${t.title} ${t.first_name} ${t.middle_name} ${t.last_name}`.replace(" "," ").trim():e.name=t.item_name;const n=t;Object.keys(t).forEach((t=>{this.processKvp(e,t,n[t])}))}parsePersonalInformationRecordAsIdentity(e,t){switch(t.type){case"name":this.processFullName(e,`${t.first_name} ${t.middle_name} ${t.last_name}`),e.identity.title=t.title,e.name=e.identity.fullName,e.identity.username=t.login;break;case"email":e.identity.email=t.email;break;case"number":e.identity.phone=t.phone_number;break;case"address":e.identity.address1=t.address,e.identity.city=t.city,e.identity.postalCode=t.zip,e.identity.state=t.state,e.identity.country=t.country}this.importUnmappedFields(e,t,p)}parseSecureNoteRecords(e,t){e.type=i.CipherType.SecureNote,e.secureNote.type=r.SecureNoteType.Generic,e.name=t.title,e.notes=t.note,this.importUnmappedFields(e,t,u)}importUnmappedFields(e,t,n){Object.keys(t).filter((e=>!n.has(e))).forEach((n=>{const i=t;this.processKvp(e,n,i[n])}))}}t.DashlaneCsvImporter=m},31188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DashlaneJsonImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(97144),l=n(48830),c=n(99364),d=n(5957),p=new Set(["ADDRESS","AUTHENTIFIANT","BANKSTATEMENT","IDCARD","IDENTITY","PAYMENTMEANS_CREDITCARD","PAYMENTMEAN_PAYPAL","EMAIL"]);class u extends d.BaseImporter{parse(e){this.result=new o.ImportResult;const t=JSON.parse(e);if(null==t||0===t.length)return this.result.success=!1,Promise.resolve(this.result);null!=t.ADDRESS&&this.processAddress(t.ADDRESS),null!=t.AUTHENTIFIANT&&this.processAuth(t.AUTHENTIFIANT),null!=t.BANKSTATEMENT&&this.processNote(t.BANKSTATEMENT,"BankAccountName"),null!=t.IDCARD&&this.processNote(t.IDCARD,"Fullname"),null!=t.PAYMENTMEANS_CREDITCARD&&this.processCard(t.PAYMENTMEANS_CREDITCARD),null!=t.IDENTITY&&this.processIdentity(t.IDENTITY);for(const n in t)t.hasOwnProperty(n)&&!p.has(n)&&this.processNote(t[n],null,"Generic Note");return this.result.success=!0,Promise.resolve(this.result)}processAuth(e){e.forEach((e=>{const t=this.initLoginCipher();t.name=this.getValueOrDefault(e.title),t.login.username=this.getValueOrDefault(e.login,this.getValueOrDefault(e.secondaryLogin)),this.isNullOrWhitespace(t.login.username)?t.login.username=this.getValueOrDefault(e.email):this.isNullOrWhitespace(e.email)||(t.notes="Email: "+e.email+"\n"),t.login.password=this.getValueOrDefault(e.password),t.login.uris=this.makeUriArray(e.domain),t.notes+=this.getValueOrDefault(e.note,""),this.convertToNoteIfNeeded(t),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processIdentity(e){e.forEach((e=>{const t=new s.CipherView;t.identity=new l.IdentityView,t.type=i.CipherType.Identity,t.name=this.getValueOrDefault(e.fullName,"");const n=t.name.split(" ");n.length>0&&(t.identity.firstName=this.getValueOrDefault(n[0])),2===n.length?t.identity.lastName=this.getValueOrDefault(n[1]):3===n.length&&(t.identity.middleName=this.getValueOrDefault(n[1]),t.identity.lastName=this.getValueOrDefault(n[2])),t.identity.username=this.getValueOrDefault(e.pseudo),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processAddress(e){e.forEach((e=>{const t=new s.CipherView;t.identity=new l.IdentityView,t.type=i.CipherType.Identity,t.name=this.getValueOrDefault(e.addressName),t.identity.address1=this.getValueOrDefault(e.addressFull),t.identity.city=this.getValueOrDefault(e.city),t.identity.state=this.getValueOrDefault(e.state),t.identity.postalCode=this.getValueOrDefault(e.zipcode),t.identity.country=this.getValueOrDefault(e.country),null!=t.identity.country&&(t.identity.country=t.identity.country.toUpperCase()),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processCard(e){e.forEach((e=>{const t=new s.CipherView;t.card=new a.CardView,t.type=i.CipherType.Card,t.name=this.getValueOrDefault(e.bank),t.card.number=this.getValueOrDefault(e.cardNumber),t.card.brand=this.getCardBrand(t.card.number),t.card.cardholderName=this.getValueOrDefault(e.owner),this.isNullOrWhitespace(t.card.brand)||(this.isNullOrWhitespace(t.name)?t.name=t.card.brand:t.name+=" - "+t.card.brand),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processNote(e,t,n=null){e.forEach((e=>{const o=new s.CipherView;o.secureNote=new c.SecureNoteView,o.type=i.CipherType.SecureNote,o.secureNote.type=r.SecureNoteType.Generic,o.name=null!=n?n:this.getValueOrDefault(e[t]);for(const n in e)e.hasOwnProperty(n)&&n!==t&&this.processKvp(o,n,e[n].toString());this.cleanupCipher(o),this.result.ciphers.push(o)}))}}t.DashlaneJsonImporter=u},42578:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptrCsvImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Label,"--"),n.notes=this.getValueOrDefault(e.Notes);const r=this.getValueOrDefault(e.Text);this.isNullOrWhitespace(r)||(this.isNullOrWhitespace(n.notes)?n.notes=r:n.notes+="\n\n"+r);const a=e["Entry Type"];if("Password"===a)n.login.username=this.getValueOrDefault(e.Username),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e["Site URL"]);else if("Credit Card"===a){n.type=i.CipherType.Card,n.card=new o.CardView,n.card.cardholderName=this.getValueOrDefault(e["Name on card"]),n.card.number=this.getValueOrDefault(e["Card Number"]),n.card.brand=this.getCardBrand(n.card.number),n.card.code=this.getValueOrDefault(e.CVV);const t=this.getValueOrDefault(e.Expiry);if(!this.isNullOrWhitespace(t)){const e=t.split("/");e.length>1&&(n.card.expMonth=parseInt(e[0],null).toString(),n.card.expYear=(2e3+parseInt(e[1],null)).toString())}}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.EncryptrCsvImporter=s},41933:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnpassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(99364),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let l=!0;return n.forEach((e=>{if(e.length<2||l&&("Title"===e[0]||"title"===e[0]))return void(l=!1);const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[e.length-1]),n.name=this.getValueOrDefault(e[0],"--"),2!==e.length&&(this.containsField(e,"username")||this.containsField(e,"password")||this.containsField(e,"email")||this.containsField(e,"url"))||(n.type=i.CipherType.SecureNote,n.secureNote=new s.SecureNoteView,n.secureNote.type=r.SecureNoteType.Generic),this.containsField(e,"cardholder")&&this.containsField(e,"number")&&this.containsField(e,"expiry date")&&(n.type=i.CipherType.Card,n.card=new a.CardView),e.length>2&&e.length%2==0)for(let t=0;t!this.isNullOrWhitespace(e)&&e.toLowerCase()===t.toLowerCase())).length>0}}t.EnpassCsvImporter=c},84783:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnpassJsonImporter=void 0;const i=n(32773),r=n(67577),o=n(2859),a=n(91766),s=n(36914),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=JSON.parse(e);if(null==n||null==n.items||0===n.items.length)return t.success=!1,Promise.resolve(t);const i=new Map,r=new Map,a=this.buildFolderTree(n.folders);return this.flattenFolderTree(null,a,i),i.forEach(((e,n)=>{r.set(n,t.folders.length);const i=new s.FolderView;i.name=e,t.folders.push(i)})),n.items.forEach((e=>{null!=e.folders&&e.folders.length>0&&r.has(e.folders[0])&&t.folderRelationships.push([t.ciphers.length,r.get(e.folders[0])]);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.title),n.favorite=e.favorite>0,null!=e.template_type&&null!=e.fields&&e.fields.length>0&&(0===e.template_type.indexOf("login.")||0===e.template_type.indexOf("password.")?this.processLogin(n,e.fields):0===e.template_type.indexOf("creditcard.")?this.processCard(n,e.fields):e.template_type.indexOf("identity.")<0&&e.fields.some((e=>"password"===e.type&&!this.isNullOrWhitespace(e.value)))?this.processLogin(n,e.fields):this.processNote(n,e.fields)),n.notes+="\n"+this.getValueOrDefault(e.note,""),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}processLogin(e,t){const n=[];t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||("username"!==t.type&&"email"!==t.type||!this.isNullOrWhitespace(e.login.username)?"password"===t.type&&this.isNullOrWhitespace(e.login.password)?e.login.password=t.value:"totp"===t.type&&this.isNullOrWhitespace(e.login.totp)?e.login.totp=t.value:"url"===t.type?n.push(t.value):this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text):e.login.username=t.value)})),e.login.uris=this.makeUriArray(n)}processCard(e,t){e.card=new a.CardView,e.type=i.CipherType.Card,t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||"ccType"===t.type||("ccName"===t.type&&this.isNullOrWhitespace(e.card.cardholderName)?e.card.cardholderName=t.value:"ccNumber"===t.type&&this.isNullOrWhitespace(e.card.number)?(e.card.number=t.value,e.card.brand=this.getCardBrand(e.card.number)):"ccCvc"===t.type&&this.isNullOrWhitespace(e.card.code)?e.card.code=t.value:"ccExpiry"===t.type&&this.isNullOrWhitespace(e.card.expYear)&&this.setCardExpiration(e,t.value)||this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text))}))}processNote(e,t){t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text)}))}buildFolderTree(e){if(null==e)return[];const t=[],n=new Map([]);return e.forEach((e=>{n.set(e.uuid,e),e.children=[]})),e.forEach((e=>{null!=e.parent_uuid&&""!==e.parent_uuid&&n.has(e.parent_uuid)?n.get(e.parent_uuid).children.push(e):t.push(e)})),t}flattenFolderTree(e,t,n){null!=t&&t.forEach((t=>{if(null!=t.title&&""!==t.title.trim()){let i=t.title.trim();null!=e&&""!==e.trim()&&(i=e+"/"+i),n.set(t.uuid,i),null!=t.children&&0!==t.children.length&&this.flattenFolderTree(i,t.children,n)}}))}}t.EnpassJsonImporter=c},62709:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FirefoxCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.filter((e=>"chrome://FirefoxAccounts"!==e.url)).forEach((e=>{const n=this.initLoginCipher(),i=this.getValueOrDefault(e.url,this.getValueOrDefault(e.hostname));n.name=this.getValueOrDefault(this.nameFromUrl(i),"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(i),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.FirefoxCsvImporter=o},47340:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FSecureFskImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=JSON.parse(e);if(null==n||null==n.data)return t.success=!1,Promise.resolve(t);for(const r in n.data){if(!n.data.hasOwnProperty(r))continue;const e=n.data[r],a=this.initLoginCipher();if(a.name=this.getValueOrDefault(e.service),a.notes=this.getValueOrDefault(e.notes),"website"===e.style||"globe"===e.style)a.login.username=this.getValueOrDefault(e.username),a.login.password=this.getValueOrDefault(e.password),a.login.uris=this.makeUriArray(e.url);else{if("creditcard"!==e.style)continue;a.type=i.CipherType.Card,a.card=new o.CardView,a.card.cardholderName=this.getValueOrDefault(e.username),a.card.number=this.getValueOrDefault(e.creditNumber),a.card.brand=this.getCardBrand(a.card.number),a.card.code=this.getValueOrDefault(e.creditCvv),this.isNullOrWhitespace(e.creditExpiry)||this.setCardExpiration(a,e.creditExpiry)||this.processKvp(a,"Expiration",e.creditExpiry),this.isNullOrWhitespace(e.password)||this.processKvp(a,"PIN",e.password)}this.convertToNoteIfNeeded(a),this.cleanupCipher(a),t.ciphers.push(a)}return t.success=!0,Promise.resolve(t)}}t.FSecureFskImporter=s},72378:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GnomeJsonImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=JSON.parse(e);if(null==n||0===Object.keys(n).length)return t.success=!1,Promise.resolve(t);for(const i in n)n.hasOwnProperty(i)&&!this.isNullOrWhitespace(i)&&0!==n[i].length&&n[i].forEach((e=>{if(this.isNullOrWhitespace(e.display_name)||0!==e.display_name.indexOf("http"))return;this.processFolder(t,i);const n=this.initLoginCipher();if(n.name=e.display_name.replace("http://","").replace("https://",""),n.name.length>30&&(n.name=n.name.substring(0,30)),n.login.password=this.getValueOrDefault(e.secret),n.login.uris=this.makeUriArray(e.display_name),null!=e.attributes){n.login.username=null!=e.attributes?this.getValueOrDefault(e.attributes.username_value):null;for(const t in e.attributes)e.attributes.hasOwnProperty(t)&&"username_value"!==t&&"xdg:schema"!==t&&this.processKvp(n,t,e.attributes[t])}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)}));return this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.GnomeJsonImporter=o},89696:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportError=void 0;class n extends Error{constructor(e,t=!1){super(e),this.passwordRequired=t}}t.ImportError=n},16164:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KasperskyTxtImporter=void 0;const i=n(2859),r=n(5957),o="Notes\n\n",a="Applications\n\n",s="Websites\n\n",l="\n---\n";class c extends r.BaseImporter{parse(e){const t=new i.ImportResult;let n,r,l,c=this.splitNewLine(e).join("\n");if(-1!==c.indexOf(o)){const e=c.split(o);e.length>1&&(c=e[0],n=e[1])}if(-1!==c.indexOf(a)){const e=c.split(a);e.length>1&&(c=e[0],r=e[1])}if(0===c.indexOf(s)){const e=c.split(s);e.length>1&&(c=e[0],l=e[1])}const d=this.parseDataCategory(n),p=this.parseDataCategory(r),u=this.parseDataCategory(l);return d.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.get("Name")),n.notes=this.getValueOrDefault(e.get("Text")),this.cleanupCipher(n),t.ciphers.push(n)})),u.concat(p).forEach((e=>{const n=this.initLoginCipher(),i=e.has("Website name")?"Website name":"Application";n.name=this.getValueOrDefault(e.get(i),""),this.isNullOrWhitespace(e.get("Login name"))||(this.isNullOrWhitespace(n.name)||(n.name+=": "),n.name+=e.get("Login name")),n.notes=this.getValueOrDefault(e.get("Comment")),e.has("Website URL")&&(n.login.uris=this.makeUriArray(e.get("Website URL"))),n.login.username=this.getValueOrDefault(e.get("Login")),n.login.password=this.getValueOrDefault(e.get("Password")),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}parseDataCategory(e){if(this.isNullOrWhitespace(e)||-1===e.indexOf(l))return[];const t=[];return e.split(l).forEach((e=>{if(-1===e.indexOf("\n"))return;const n=new Map;let i,r;e.split("\n").forEach((e=>{if(null!=i)return void(i+="\n"+e);const t=e.indexOf(":");let o,a;-1!==t&&(o=e.substring(0,t),e.length>t+1&&(a=e.substring(t+2)),null!=o&&n.set(o,a),"Comment"!==o&&"Text"!==o||(i=a,r=o))})),null!=i&&null!=r&&n.set(r,i),0!==n.size&&t.push(n)})),t}}t.KasperskyTxtImporter=c},86419:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeePass2XmlImporter=void 0;const i=n(67577),r=n(2859),o=n(36914),a=n(5957);class s extends a.BaseImporter{constructor(){super(...arguments),this.result=new r.ImportResult}parse(e){const t=this.parseXml(e);if(null==t)return this.result.success=!1,Promise.resolve(this.result);const n=t.querySelector("KeePassFile > Root > Group");return null==n?(this.result.errorMessage="Missing `KeePassFile > Root > Group` node.",this.result.success=!1,Promise.resolve(this.result)):(this.traverse(n,!0,""),this.organization&&this.moveFoldersToCollections(this.result),this.result.success=!0,Promise.resolve(this.result))}traverse(e,t,n){const r=this.result.folders.length;let a=n;if(!t){""!==a&&(a+="/");const t=this.querySelectorDirectChild(e,"Name");a+=null==t?"-":t.textContent;const n=new o.FolderView;n.name=a,this.result.folders.push(n)}this.querySelectorAllDirectChild(e,"Entry").forEach((e=>{const n=this.result.ciphers.length,o=this.initLoginCipher();this.querySelectorAllDirectChild(e,"String").forEach((e=>{const t=this.querySelectorDirectChild(e,"Value"),n=null!=t?t.textContent:null;if(this.isNullOrWhitespace(n))return;const r=this.querySelectorDirectChild(e,"Key"),a=null!=r?r.textContent:null;if("URL"===a)o.login.uris=this.makeUriArray(n);else if("UserName"===a)o.login.username=n;else if("Password"===a)o.login.password=n;else if("otp"===a)o.login.totp=n.replace("key=","");else if("Title"===a)o.name=n;else if("Notes"===a)o.notes+=n+"\n";else{let e=i.FieldType.Text;const r=t.attributes;r.length>0&&null!=r.ProtectInMemory&&"True"===r.ProtectInMemory.value&&(e=i.FieldType.Hidden),this.processKvp(o,a,n,e)}})),this.cleanupCipher(o),this.result.ciphers.push(o),t||this.result.folderRelationships.push([n,r])})),this.querySelectorAllDirectChild(e,"Group").forEach((e=>{this.traverse(e,!1,a)}))}}t.KeePass2XmlImporter=s},68781:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeePassXCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(e.Title))return;e.Group=!this.isNullOrWhitespace(e.Group)&&e.Group.startsWith("Root/")?e.Group.replace("Root/",""):e.Group;const n=this.isNullOrWhitespace(e.Group)?null:e.Group;this.processFolder(t,n);const i=this.initLoginCipher();i.notes=this.getValueOrDefault(e.Notes),i.name=this.getValueOrDefault(e.Title,"--"),i.login.username=this.getValueOrDefault(e.Username),i.login.password=this.getValueOrDefault(e.Password),i.login.uris=this.makeUriArray(e.URL),this.cleanupCipher(i),t.ciphers.push(i)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.KeePassXCsvImporter=o},64521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeeperCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<6)return;this.processFolder(t,e[0]);const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[5])+"\n",n.name=this.getValueOrDefault(e[1],"--"),n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[4]),e.length>7)for(let t=7;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LastPassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(97144),l=n(36914),c=n(48830),d=n(28331),p=n(99364),u=n(5957);class m extends u.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=t.ciphers.length;let r=t.folders.length,o=e.grouping;null!=o&&(o=o.replace(/\\/g,"/").replace(/[\x00-\x1F\x7F-\x9F]/g,""));const a="(none)"!==this.getValueOrDefault(o,"(none)");let s=a;if(a)for(let i=0;i-1){const n=e.ccexp.split("-");n.length>1&&(t.expYear=n[0],t.expMonth=n[1],2===t.expMonth.length&&"0"===t.expMonth[0]&&(t.expMonth=t.expMonth[1]))}return t}parseIdentity(e){const t=new c.IdentityView;return t.title=this.getValueOrDefault(e.title),t.firstName=this.getValueOrDefault(e.firstname),t.middleName=this.getValueOrDefault(e.middlename),t.lastName=this.getValueOrDefault(e.lastname),t.username=this.getValueOrDefault(e.username),t.company=this.getValueOrDefault(e.company),t.ssn=this.getValueOrDefault(e.ssn),t.address1=this.getValueOrDefault(e.address1),t.address2=this.getValueOrDefault(e.address2),t.address3=this.getValueOrDefault(e.address3),t.city=this.getValueOrDefault(e.city),t.state=this.getValueOrDefault(e.state),t.postalCode=this.getValueOrDefault(e.zip),t.country=this.getValueOrDefault(e.country),t.email=this.getValueOrDefault(e.email),t.phone=this.getValueOrDefault(e.phone),this.isNullOrWhitespace(t.title)||(t.title=t.title.charAt(0).toUpperCase()+t.title.slice(1)),t}parseSecureNote(e,t){const n=this.splitNewLine(e.extra);let o=!1;if(n.length){const e=n[0].split(":");if(e.length>1&&"NoteType"===e[0]&&("Credit Card"===e[1]||"Address"===e[1])){if("Credit Card"===e[1]){const e=this.parseSecureNoteMapping(t,n,{Number:"number","Name on Card":"cardholderName","Security Code":"code","Expiration Date":"expMonth"});if(this.isNullOrWhitespace(e.expMonth)||","===e.expMonth)e.expMonth=void 0;else{const[t,n]=e.expMonth.split(",");if(this.isNullOrWhitespace(t))e.expMonth=void 0;else{const n=new Date(Date.parse(t.trim()+" 1, 2012")).getMonth()+1;isNaN(n)?e.expMonth=void 0:e.expMonth=n.toString()}this.isNullOrWhitespace(n)||(e.expYear=n)}t.type=i.CipherType.Card,t.card=e}else if("Address"===e[1]){const e=this.parseSecureNoteMapping(t,n,{Title:"title","First Name":"firstName","Last Name":"lastName","Middle Name":"middleName",Company:"company","Address 1":"address1","Address 2":"address2","Address 3":"address3","City / Town":"city",State:"state","Zip / Postal Code":"postalCode",Country:"country","Email Address":"email",Username:"username"});t.type=i.CipherType.Identity,t.identity=e}o=!0}}o||(t.secureNote=new p.SecureNoteView,t.secureNote.type=r.SecureNoteType.Generic,t.notes=this.getValueOrDefault(e.extra))}parseSecureNoteMapping(e,t,n){const i={};let r=!1;return t.forEach((t=>{let o=null,a=null;if(!r){if(this.isNullOrWhitespace(t))return;const e=t.indexOf(":");if(-1===e?o=t:(o=t.substring(0,e),t.length>e&&(a=t.substring(e+1))),this.isNullOrWhitespace(o)||this.isNullOrWhitespace(a)||"NoteType"===o)return}r?e.notes+="\n"+t:"Notes"===o?(this.isNullOrWhitespace(e.notes)?e.notes=a:e.notes+="\n"+a,r=!0):n.hasOwnProperty(o)?i[n[o]]=a:this.processKvp(e,o,a)})),i}}t.LastPassCsvImporter=m},78103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogMeOnceCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<4)return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[1]),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.LogMeOnceCsvImporter=o},52580:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MeldiumCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.DisplayName,"--"),n.notes=this.getValueOrDefault(e.Notes),n.login.username=this.getValueOrDefault(e.UserName),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e.Url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.MeldiumCsvImporter=o},39510:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MSecureCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(99364),s=n(5957);class l extends s.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<3)return;const n="Unassigned"!==this.getValueOrDefault(e[0],"Unassigned")?e[0]:null;this.processFolder(t,n);const o=this.initLoginCipher();if(o.name=this.getValueOrDefault(e[2],"--"),"Web Logins"===e[1]||"Login"===e[1])o.login.uris=this.makeUriArray(e[4]),o.login.username=this.getValueOrDefault(e[5]),o.login.password=this.getValueOrDefault(e[6]),o.notes=this.isNullOrWhitespace(e[3])?null:e[3].split("\\n").join("\n");else if(e.length>3){o.type=i.CipherType.SecureNote,o.secureNote=new a.SecureNoteView,o.secureNote.type=r.SecureNoteType.Generic;for(let t=3;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MykiCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(48830),l=n(99364),c=n(5957),d=["nickname","additionalInfo"],p=new Set(d.concat(["url","username","password","twofaSecret"])),u=new Set(d.concat(["cardNumber","cardName","exp_month","exp_year","cvv"])),m=new Set(d.concat(["title","firstName","middleName","lastName","email","firstAddressLine","secondAddressLine","city","country","zipCode"])),h=new Set(d.concat(["idName","idNumber","idCountry"])),v=new Set(d.concat(["authToken"])),g=new Set(d.concat(["content"]));class f extends c.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.nickname,"--"),n.notes=this.getValueOrDefault(e.additionalInfo),void 0!==e.url)n.login.uris=this.makeUriArray(e.url),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.totp=this.getValueOrDefault(e.twofaSecret),this.importUnmappedFields(n,e,p);else if(void 0!==e.authToken)n.login.totp=this.getValueOrDefault(e.authToken),this.importUnmappedFields(n,e,v);else if(void 0!==e.cardNumber)n.card=new a.CardView,n.type=i.CipherType.Card,n.card.cardholderName=this.getValueOrDefault(e.cardName),n.card.number=this.getValueOrDefault(e.cardNumber),n.card.brand=this.getCardBrand(n.card.number),n.card.expMonth=this.getValueOrDefault(e.exp_month),n.card.expYear=this.getValueOrDefault(e.exp_year),n.card.code=this.getValueOrDefault(e.cvv),this.importUnmappedFields(n,e,u);else if(void 0!==e.firstName)n.identity=new s.IdentityView,n.type=i.CipherType.Identity,n.identity.title=this.getValueOrDefault(e.title),n.identity.firstName=this.getValueOrDefault(e.firstName),n.identity.middleName=this.getValueOrDefault(e.middleName),n.identity.lastName=this.getValueOrDefault(e.lastName),n.identity.phone=this.getValueOrDefault(e.number),n.identity.email=this.getValueOrDefault(e.email),n.identity.address1=this.getValueOrDefault(e.firstAddressLine),n.identity.address2=this.getValueOrDefault(e.secondAddressLine),n.identity.city=this.getValueOrDefault(e.city),n.identity.country=this.getValueOrDefault(e.country),n.identity.postalCode=this.getValueOrDefault(e.zipCode),this.importUnmappedFields(n,e,m);else if(void 0!==e.idType){switch(n.identity=new s.IdentityView,n.type=i.CipherType.Identity,this.processFullName(n,e.idName),n.identity.country=this.getValueOrDefault(e.idCountry),e.idType){case"Passport":n.identity.passportNumber=e.idNumber;break;case"Social Security":n.identity.ssn=e.idNumber;break;default:n.identity.licenseNumber=e.idNumber}this.importUnmappedFields(n,e,h)}else{if(void 0===e.content)return;n.secureNote=new l.SecureNoteView,n.type=i.CipherType.SecureNote,n.secureNote.type=r.SecureNoteType.Generic,n.notes=this.getValueOrDefault(e.content),this.importUnmappedFields(n,e,g)}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}importUnmappedFields(e,t,n){Object.keys(t).filter((e=>!n.has(e))).forEach((n=>{const i=t;this.processKvp(e,n,i[n])}))}}t.MykiCsvImporter=f},82530:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NordPassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(97144),s=n(28331),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.evaluateType(e);if(void 0===n)return;this.organization||this.processFolder(t,e.folder);const o=new a.CipherView;switch(o.name=this.getValueOrDefault(e.name,"--"),o.notes=this.getValueOrDefault(e.note),n){case i.CipherType.Login:o.type=i.CipherType.Login,o.login=new s.LoginView,o.login.username=this.getValueOrDefault(e.username),o.login.password=this.getValueOrDefault(e.password),o.login.uris=this.makeUriArray(e.url);break;case i.CipherType.Card:o.type=i.CipherType.Card,o.card.cardholderName=this.getValueOrDefault(e.cardholdername),o.card.number=this.getValueOrDefault(e.cardnumber),o.card.code=this.getValueOrDefault(e.cvc),o.card.brand=this.getCardBrand(o.card.number),this.setCardExpiration(o,e.expirydate);break;case i.CipherType.Identity:o.type=i.CipherType.Identity,this.processFullName(o,this.getValueOrDefault(e.full_name)),o.identity.address1=this.getValueOrDefault(e.address1),o.identity.address2=this.getValueOrDefault(e.address2),o.identity.city=this.getValueOrDefault(e.city),o.identity.state=this.getValueOrDefault(e.state),o.identity.postalCode=this.getValueOrDefault(e.zipcode),o.identity.country=this.getValueOrDefault(e.country),null!=o.identity.country&&(o.identity.country=o.identity.country.toUpperCase()),o.identity.email=this.getValueOrDefault(e.email),o.identity.phone=this.getValueOrDefault(e.phone_number);break;case i.CipherType.SecureNote:o.type=i.CipherType.SecureNote,o.secureNote.type=r.SecureNoteType.Generic}this.cleanupCipher(o),t.ciphers.push(o)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}evaluateType(e){return this.isNullOrWhitespace(e.username)?this.isNullOrWhitespace(e.cardnumber)?this.isNullOrWhitespace(e.full_name)?this.isNullOrWhitespace(e.note)?void 0:i.CipherType.SecureNote:i.CipherType.Identity:i.CipherType.Card:i.CipherType.Login}}t.NordPassCsvImporter=c},66402:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherImportContext=void 0;t.CipherImportContext=class{constructor(e,t,n){this.importRecord=e,this.property=t,this.cipher=n,this.lowerProperty=t.toLowerCase()}}},80414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePassword1PifImporter=void 0;const i=n(32773),r=n(67577),o=n(76716),a=n(2859),s=n(91766),l=n(48830),c=n(40170),d=n(99364),p=n(5957);class u extends p.BaseImporter{constructor(){super(...arguments),this.result=new a.ImportResult}parse(e){return e.split(this.newLineRegex).forEach((e=>{if(this.isNullOrWhitespace(e)||"{"!==e[0])return;const t=JSON.parse(e);if(!0===t.trashed)return;const n=this.initLoginCipher();this.isNullOrWhitespace(t.hmac)?this.processStandardItem(t,n):this.processWinOpVaultItem(t,n),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),this.result.ciphers.push(n)})),this.result.success=!0,Promise.resolve(this.result)}processWinOpVaultItem(e,t){if(null!=e.overview&&(t.name=this.getValueOrDefault(e.overview.title),null!=e.overview.URLs)){const n=[];e.overview.URLs.forEach((e=>{this.isNullOrWhitespace(e.u)||n.push(e.u)})),t.login.uris=this.makeUriArray(n)}null!=e.details&&(null!=e.details.passwordHistory&&this.parsePasswordHistory(e.details.passwordHistory,t),this.isNullOrWhitespace(e.details.ccnum)&&this.isNullOrWhitespace(e.details.cvv)?this.isNullOrWhitespace(e.details.firstname)&&this.isNullOrWhitespace(e.details.address1)||(t.type=i.CipherType.Identity,t.identity=new l.IdentityView):(t.type=i.CipherType.Card,t.card=new s.CardView),t.type!==i.CipherType.Login||this.isNullOrWhitespace(e.details.password)||(t.login.password=e.details.password),this.isNullOrWhitespace(e.details.notesPlain)||(t.notes=e.details.notesPlain.split(this.newLineRegex).join("\n")+"\n"),null!=e.details.fields&&this.parseFields(e.details.fields,t,"designation","value","name"),null!=e.details.sections&&e.details.sections.forEach((e=>{null!=e.fields&&this.parseFields(e.fields,t,"n","v","t")})))}processStandardItem(e,t){if(t.favorite=!(!e.openContents||!e.openContents.faveIndex),t.name=this.getValueOrDefault(e.title),"securenotes.SecureNote"===e.typeName?(t.type=i.CipherType.SecureNote,t.secureNote=new d.SecureNoteView,t.secureNote.type=o.SecureNoteType.Generic):"wallet.financial.CreditCard"===e.typeName?(t.type=i.CipherType.Card,t.card=new s.CardView):"identities.Identity"===e.typeName?(t.type=i.CipherType.Identity,t.identity=new l.IdentityView):t.login.uris=this.makeUriArray(e.location),null!=e.secureContents){if(null!=e.secureContents.passwordHistory&&this.parsePasswordHistory(e.secureContents.passwordHistory,t),this.isNullOrWhitespace(e.secureContents.notesPlain)||(t.notes=e.secureContents.notesPlain.split(this.newLineRegex).join("\n")+"\n"),t.type===i.CipherType.Login&&(this.isNullOrWhitespace(e.secureContents.password)||(t.login.password=e.secureContents.password),null!=e.secureContents.URLs)){const n=[];e.secureContents.URLs.forEach((e=>{this.isNullOrWhitespace(e.url)||n.push(e.url)})),n.length>0&&(t.login.uris=this.makeUriArray(n))}null!=e.secureContents.fields&&this.parseFields(e.secureContents.fields,t,"designation","value","name"),null!=e.secureContents.sections&&e.secureContents.sections.forEach((e=>{null!=e.fields&&this.parseFields(e.fields,t,"n","v","t")}))}}parsePasswordHistory(e,t){const n=e.length>5?5:e.length;t.passwordHistory=e.filter((e=>!this.isNullOrWhitespace(e.value)&&null!=e.time)).sort(((e,t)=>t.time-e.time)).slice(0,n).map((e=>{const t=new c.PasswordHistoryView;return t.password=e.value,t.lastUsedDate=new Date((""+e.time).length>=13?e.time:1e3*e.time),t}))}parseFields(e,t,n,o,a){e.forEach((e=>{if(null==e[o]||""===e[o].toString().trim())return;const s="date"===e.k?new Date(1e3*e[o]).toUTCString():e[o].toString(),l=null!=e[n]?e[n].toString():null;if(t.type===i.CipherType.Login){if(this.isNullOrWhitespace(t.login.username)&&"username"===l)return void(t.login.username=s);if(this.isNullOrWhitespace(t.login.password)&&"password"===l)return void(t.login.password=s);if(this.isNullOrWhitespace(t.login.totp)&&null!=l&&l.startsWith("TOTP_"))return void(t.login.totp=s)}else if(t.type===i.CipherType.Card){if(this.isNullOrWhitespace(t.card.number)&&"ccnum"===l)return t.card.number=s,void(t.card.brand=this.getCardBrand(s));if(this.isNullOrWhitespace(t.card.code)&&"cvv"===l)return void(t.card.code=s);if(this.isNullOrWhitespace(t.card.cardholderName)&&"cardholder"===l)return void(t.card.cardholderName=s);if(this.isNullOrWhitespace(t.card.expiration)&&"expiry"===l&&6===s.length)return t.card.expMonth=s.substr(4,2),"0"===t.card.expMonth[0]&&(t.card.expMonth=t.card.expMonth.substr(1,1)),void(t.card.expYear=s.substr(0,4));if("type"===l)return}else if(t.type===i.CipherType.Identity){const n=t.identity;if(this.isNullOrWhitespace(n.firstName)&&"firstname"===l)return void(n.firstName=s);if(this.isNullOrWhitespace(n.lastName)&&"lastname"===l)return void(n.lastName=s);if(this.isNullOrWhitespace(n.middleName)&&"initial"===l)return void(n.middleName=s);if(this.isNullOrWhitespace(n.phone)&&"defphone"===l)return void(n.phone=s);if(this.isNullOrWhitespace(n.company)&&"company"===l)return void(n.company=s);if(this.isNullOrWhitespace(n.email)&&"email"===l)return void(n.email=s);if(this.isNullOrWhitespace(n.username)&&"username"===l)return void(n.username=s);if("address"===l){const{street:t,city:i,country:r,zip:a}=e[o];return n.address1=this.getValueOrDefault(t),n.city=this.getValueOrDefault(i),this.isNullOrWhitespace(r)||(n.country=r.toUpperCase()),void(n.postalCode=this.getValueOrDefault(a))}}const c=this.isNullOrWhitespace(e[a])?"no_name":e[a];if("password"===c&&null!=t.passwordHistory&&t.passwordHistory.some((e=>e.password===s)))return;const d="concealed"===e.k?r.FieldType.Hidden:r.FieldType.Text;this.processKvp(t,c,s,d)}))}}t.OnePassword1PifImporter=u},42584:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePassword1PuxImporter=void 0;const i=n(34453),r=n(32773),o=n(67577),a=n(76716),s=n(2859),l=n(91766),c=n(48830),d=n(28331),p=n(40170),u=n(99364),m=n(5957),h=n(53776);class v extends m.BaseImporter{constructor(){super(...arguments),this.result=new s.ImportResult}parse(e){return JSON.parse(e).accounts[0].vaults.forEach((e=>{e.items.forEach((e=>{if(!0===e.trashed)return;const t=this.initLoginCipher(),n=e.categoryUuid;switch(n){case h.CategoryEnum.Login:case h.CategoryEnum.Database:case h.CategoryEnum.Password:case h.CategoryEnum.WirelessRouter:case h.CategoryEnum.Server:case h.CategoryEnum.API_Credential:t.type=r.CipherType.Login,t.login=new d.LoginView;break;case h.CategoryEnum.CreditCard:case h.CategoryEnum.BankAccount:t.type=r.CipherType.Card,t.card=new l.CardView;break;case h.CategoryEnum.SecureNote:case h.CategoryEnum.SoftwareLicense:case h.CategoryEnum.EmailAccount:case h.CategoryEnum.MedicalRecord:t.type=r.CipherType.SecureNote,t.secureNote=new u.SecureNoteView,t.secureNote.type=a.SecureNoteType.Generic;break;case h.CategoryEnum.Identity:case h.CategoryEnum.DriversLicense:case h.CategoryEnum.OutdoorLicense:case h.CategoryEnum.Membership:case h.CategoryEnum.Passport:case h.CategoryEnum.RewardsProgram:case h.CategoryEnum.SocialSecurityNumber:t.type=r.CipherType.Identity,t.identity=new c.IdentityView}t.favorite=1===e.favIndex,this.processOverview(e.overview,t),this.processLoginFields(e,t),this.processDetails(n,e.details,t),this.parsePasswordHistory(e.details.passwordHistory,t),this.processSections(n,e.details.sections,t),this.isNullOrWhitespace(e.details.notesPlain)||(t.notes=e.details.notesPlain.split(this.newLineRegex).join("\n")+"\n"),this.convertToNoteIfNeeded(t),this.cleanupCipher(t),this.result.ciphers.push(t)}))})),this.organization&&this.moveFoldersToCollections(this.result),this.result.success=!0,Promise.resolve(this.result)}processOverview(e,t){if(null!=e){if(t.name=this.getValueOrDefault(e.title),null!=e.urls){const n=[];e.urls.forEach((e=>{this.isNullOrWhitespace(e.url)||n.push(e.url)})),t.login.uris=this.makeUriArray(n)}if(null!=e.tags&&e.tags.length>0){const t=this.capitalize(e.tags[0]);this.processFolder(this.result,t)}}}capitalize(e){return e.trim().replace(/\w\S*/g,(e=>e.replace(/^\w/,(e=>e.toUpperCase()))))}processLoginFields(e,t){null!=e.details&&null!=e.details.loginFields&&0!==e.details.loginFields.length&&e.details.loginFields.forEach((e=>{if("username"===e.designation&&""!==e.value)return t.type=r.CipherType.Login,void(t.login.username=e.value);if("password"===e.designation&&""!==e.value)return t.type=r.CipherType.Login,void(t.login.password=e.value);let n=e.value,i=o.FieldType.Text;switch(e.fieldType){case h.LoginFieldTypeEnum.Password:i=o.FieldType.Hidden;break;case h.LoginFieldTypeEnum.CheckBox:n=""!==e.value?"true":"false",i=o.FieldType.Boolean}this.processKvp(t,e.name,n,i)}))}processDetails(e,t,n){e===h.CategoryEnum.Password&&null!=t&&(n.login.password=t.password)}processSections(e,t,n){null!=t&&0!==t.length&&t.forEach((t=>{null!=t.fields&&this.parseSectionFields(e,t.fields,n)}))}parseSectionFields(e,t,n){t.forEach((t=>{const a=Object.keys(t.value)[0],s=t;if(null==s.value||null==s.value[a]||""===s.value[a])return;const l=this.getFieldName(t.id,t.title),c=this.extractValue(t.value,a);if(n.type===r.CipherType.Login){if(this.fillLogin(t,c,n))return;switch(e){case h.CategoryEnum.Login:case h.CategoryEnum.Database:case h.CategoryEnum.EmailAccount:case h.CategoryEnum.WirelessRouter:break;case h.CategoryEnum.Server:if(this.isNullOrWhitespace(n.login.uri)&&"url"===t.id)return void(n.login.uris=this.makeUriArray(c));break;case h.CategoryEnum.API_Credential:if(this.fillApiCredentials(t,c,n))return}}else if(n.type===r.CipherType.Card){if(this.fillCreditCard(t,c,n))return;if(e===h.CategoryEnum.BankAccount&&this.fillBankAccount(t,c,n))return}else if(n.type===r.CipherType.Identity){if(this.fillIdentity(t,c,n,a))return;if("address"===a){const{street:e,city:i,country:r,zip:o,state:a}=t.value.address;return n.identity.address1=this.getValueOrDefault(e),n.identity.city=this.getValueOrDefault(i),this.isNullOrWhitespace(r)||(n.identity.country=r.toUpperCase()),n.identity.postalCode=this.getValueOrDefault(o),void(n.identity.state=this.getValueOrDefault(a))}switch(e){case h.CategoryEnum.Identity:break;case h.CategoryEnum.DriversLicense:if(this.fillDriversLicense(t,c,n))return;break;case h.CategoryEnum.OutdoorLicense:if(this.fillOutdoorLicense(t,c,n))return;break;case h.CategoryEnum.Membership:if(this.fillMembership(t,c,n))return;break;case h.CategoryEnum.Passport:if(this.fillPassport(t,c,n))return;break;case h.CategoryEnum.RewardsProgram:if(this.fillRewardsProgram(t,c,n))return;break;case h.CategoryEnum.SocialSecurityNumber:if(this.fillSSN(t,c,n))return}}if("email"===a){const{email_address:e,provider:i}=t.value.email;return this.processKvp(n,l,e,o.FieldType.Text),void this.processKvp(n,"provider",i,o.FieldType.Text)}if("password"===t.title&&null!=n.passwordHistory&&n.passwordHistory.some((e=>e.password===c)))return;t.guarded&&n.reprompt===i.CipherRepromptType.None&&(n.reprompt=i.CipherRepromptType.Password);const d="concealed"===a?o.FieldType.Hidden:o.FieldType.Text;this.processKvp(n,l,c,d)}))}getFieldName(e,t){return this.isNullOrWhitespace(t)?e:e.length>25&&RegExp(/[0-9]{2}[A-Z]{2}/,"i").test(e)?t:e}extractValue(e,t){return"date"===t?new Date(1e3*e.date).toUTCString():"monthYear"===t?e.monthYear.toString():e[t]}fillLogin(e,t,n){const i=this.getFieldName(e.id,e.title);return this.isNullOrWhitespace(n.login.username)&&"username"===i?(n.login.username=t,!0):this.isNullOrWhitespace(n.login.password)&&"password"===i?(n.login.password=t,!0):!(!this.isNullOrWhitespace(n.login.totp)||null==e.id||!e.id.startsWith("TOTP_"))&&(n.login.totp=t,!0)}fillApiCredentials(e,t,n){const i=this.getFieldName(e.id,e.title);return this.isNullOrWhitespace(n.login.password)&&"credential"===i?(n.login.password=t,!0):!(!this.isNullOrWhitespace(n.login.uri)||"hostname"!==i)&&(n.login.uris=this.makeUriArray(t),!0)}fillCreditCard(e,t,n){if(this.isNullOrWhitespace(n.card.number)&&"ccnum"===e.id)return n.card.number=t,n.card.brand=this.getCardBrand(t),!0;if(this.isNullOrWhitespace(n.card.code)&&"cvv"===e.id)return n.card.code=t,!0;if(this.isNullOrWhitespace(n.card.cardholderName)&&"cardholder"===e.id)return n.card.cardholderName=t,!0;if(this.isNullOrWhitespace(n.card.expiration)&&"expiry"===e.id){const e=t.toString().trim();return n.card.expMonth=e.substring(4,6),"0"===n.card.expMonth[0]&&(n.card.expMonth=n.card.expMonth.substring(1,2)),n.card.expYear=e.substring(0,4),!0}return"type"===e.id}fillBankAccount(e,t,n){return!(!this.isNullOrWhitespace(n.card.cardholderName)||"owner"!==e.id)&&(n.card.cardholderName=t,!0)}fillIdentity(e,t,n,i){if(this.isNullOrWhitespace(n.identity.firstName)&&"firstname"===e.id)return n.identity.firstName=t,!0;if(this.isNullOrWhitespace(n.identity.lastName)&&"lastname"===e.id)return n.identity.lastName=t,!0;if(this.isNullOrWhitespace(n.identity.middleName)&&"initial"===e.id)return n.identity.middleName=t,!0;if(this.isNullOrWhitespace(n.identity.phone)&&"defphone"===e.id)return n.identity.phone=t,!0;if(this.isNullOrWhitespace(n.identity.company)&&"company"===e.id)return n.identity.company=t,!0;if(this.isNullOrWhitespace(n.identity.email)){if("email"===i){const{email_address:t,provider:i}=e.value.email;return n.identity.email=this.getValueOrDefault(t),this.processKvp(n,"provider",i,o.FieldType.Text),!0}if("email"===e.id)return n.identity.email=t,!0}return!(!this.isNullOrWhitespace(n.identity.username)||"username"!==e.id)&&(n.identity.username=t,!0)}fillDriversLicense(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"fullname"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.address1)&&"address"===e.id?(n.identity.address1=t,!0):this.isNullOrWhitespace(n.identity.country)&&"country"===e.id?(n.identity.country=t,!0):this.isNullOrWhitespace(n.identity.state)&&"state"===e.id?(n.identity.state=t,!0):!(!this.isNullOrWhitespace(n.identity.licenseNumber)||"number"!==e.id)&&(n.identity.licenseNumber=t,!0)}fillOutdoorLicense(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"name"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.country)&&"country"===e.id?(n.identity.country=t,!0):!(!this.isNullOrWhitespace(n.identity.state)||"state"!==e.id)&&(n.identity.state=t,!0)}fillMembership(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"member_name"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.company)&&"org_name"===e.id?(n.identity.company=t,!0):!(!this.isNullOrWhitespace(n.identity.phone)||"phone"!==e.id)&&(n.identity.phone=t,!0)}fillPassport(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"fullname"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.country)&&"issuing_country"===e.id?(n.identity.country=t,!0):!(!this.isNullOrWhitespace(n.identity.passportNumber)||"number"!==e.id)&&(n.identity.passportNumber=t,!0)}fillRewardsProgram(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"member_name"===e.id?(this.processFullName(n,t),!0):!(!this.isNullOrWhitespace(n.identity.company)||"company_name"!==e.id)&&(n.identity.company=t,!0)}fillSSN(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"name"===e.id?(this.processFullName(n,t),!0):!(!this.isNullOrWhitespace(n.identity.ssn)||"number"!==e.id)&&(n.identity.ssn=t,!0)}parsePasswordHistory(e,t){if(null==e||0===e.length)return;const n=e.length>5?5:e.length;t.passwordHistory=e.filter((e=>!this.isNullOrWhitespace(e.value)&&null!=e.time)).sort(((e,t)=>t.time-e.time)).slice(0,n).map((e=>{const t=new p.PasswordHistoryView;return t.password=e.value,t.lastUsedDate=new Date((""+e.time).length>=13?e.time:1e3*e.time),t}))}}t.OnePassword1PuxImporter=v},77674:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordCsvImporter=t.IgnoredProperties=void 0;const i=n(32773),r=n(67577),o=n(2859),a=n(5957),s=n(66402);t.IgnoredProperties=["ainfo","autosubmit","notesplain","ps","scope","tags","title","uuid","notes"];class l extends a.BaseImporter{constructor(){super(...arguments),this.loginPropertyParsers=[this.setLoginUsername,this.setLoginPassword,this.setLoginUris],this.creditCardPropertyParsers=[this.setCreditCardNumber,this.setCreditCardVerification,this.setCreditCardCardholderName,this.setCreditCardExpiry],this.identityPropertyParsers=[this.setIdentityFirstName,this.setIdentityInitial,this.setIdentityLastName,this.setIdentityUserName,this.setIdentityEmail,this.setIdentityPhone,this.setIdentityCompany]}parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0,{quoteChar:'"',escapeChar:"\\"});return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(this.getProp(e,"title")))return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(this.getProp(e,"title"),"--"),this.setNotes(e,n),this.setCipherType(e,n);let r=null;for(const t in e){if(!e.hasOwnProperty(t)||this.isNullOrWhitespace(e[t]))continue;const o=new s.CipherImportContext(e,t,n);n.type===i.CipherType.Login&&this.setKnownLoginValue(o)||(n.type===i.CipherType.Card&&this.setKnownCreditCardValue(o)||n.type===i.CipherType.Identity&&this.setKnownIdentityValue(o)||(r=this.setUnknownValue(o,r)))}n.type===i.CipherType.Login&&!this.isNullOrWhitespace(r)&&this.isNullOrWhitespace(n.login.username)&&-1===r.indexOf("://")&&(n.login.username=r),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}getProp(e,t){return Object.entries(e).reduce(((e,t)=>(e[t[0].toLowerCase()]=t[1],e)),{})[t.toLowerCase()]}getPropByRegexp(e,t){const n=Object.keys(e).reduce(((e,n)=>(n.match(t)&&e.push(n),e)),[]);return 0===n.length?null:e[n[0]]}getPropIncluding(e,t){const n=Object.keys(e).reduce(((e,n)=>(n.toLowerCase().includes(t.toLowerCase())&&e.push(n),e)),[]);return 0===n.length?null:e[n[0]]}setNotes(e,t){t.notes=this.getValueOrDefault(this.getProp(e,"notesPlain"),"")+"\n"+this.getValueOrDefault(this.getProp(e,"notes"),"")+"\n",t.notes.trim()}setKnownLoginValue(e){return this.loginPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setKnownCreditCardValue(e){return this.creditCardPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setKnownIdentityValue(e){return this.identityPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setUnknownValue(e,n){if(-1===t.IgnoredProperties.indexOf(e.lowerProperty)&&!e.lowerProperty.startsWith("section:")&&!e.lowerProperty.startsWith("section ")){if(null==n&&"email"===e.lowerProperty)return e.importRecord[e.property];if("created date"===e.lowerProperty||"modified date"===e.lowerProperty){const t=new Date(1e3*parseInt(e.importRecord[e.property],10)).toUTCString();return this.processKvp(e.cipher,"1Password "+e.property,t),null}e.lowerProperty.includes("password")||e.lowerProperty.includes("key")||e.lowerProperty.includes("secret")?this.processKvp(e.cipher,e.property,e.importRecord[e.property],r.FieldType.Hidden):this.processKvp(e.cipher,e.property,e.importRecord[e.property])}return null}setIdentityFirstName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.firstName)||!e.lowerProperty.includes("first name"))&&(e.cipher.identity.firstName=e.importRecord[e.property],!0)}setIdentityInitial(e){return!(!this.isNullOrWhitespace(e.cipher.identity.middleName)||!e.lowerProperty.includes("initial"))&&(e.cipher.identity.middleName=e.importRecord[e.property],!0)}setIdentityLastName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.lastName)||!e.lowerProperty.includes("last name"))&&(e.cipher.identity.lastName=e.importRecord[e.property],!0)}setIdentityUserName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.username)||!e.lowerProperty.includes("username"))&&(e.cipher.identity.username=e.importRecord[e.property],!0)}setIdentityCompany(e){return!(!this.isNullOrWhitespace(e.cipher.identity.company)||!e.lowerProperty.includes("company"))&&(e.cipher.identity.company=e.importRecord[e.property],!0)}setIdentityPhone(e){return!(!this.isNullOrWhitespace(e.cipher.identity.phone)||!e.lowerProperty.includes("default phone"))&&(e.cipher.identity.phone=e.importRecord[e.property],!0)}setIdentityEmail(e){return!(!this.isNullOrWhitespace(e.cipher.identity.email)||!e.lowerProperty.includes("email"))&&(e.cipher.identity.email=e.importRecord[e.property],!0)}setCreditCardNumber(e){return!(!this.isNullOrWhitespace(e.cipher.card.number)||!e.lowerProperty.includes("number"))&&(e.cipher.card.number=e.importRecord[e.property],e.cipher.card.brand=this.getCardBrand(e.cipher.card.number),!0)}setCreditCardVerification(e){return!(!this.isNullOrWhitespace(e.cipher.card.code)||!e.lowerProperty.includes("verification number"))&&(e.cipher.card.code=e.importRecord[e.property],!0)}setCreditCardCardholderName(e){return!(!this.isNullOrWhitespace(e.cipher.card.cardholderName)||!e.lowerProperty.includes("cardholder name"))&&(e.cipher.card.cardholderName=e.importRecord[e.property],!0)}setCreditCardExpiry(e){return!(!this.isNullOrWhitespace(e.cipher.card.expiration)||!e.lowerProperty.includes("expiry date")||7!==e.importRecord[e.property].length)&&(e.cipher.card.expMonth=e.importRecord[e.property].substr(0,2),"0"===e.cipher.card.expMonth[0]&&(e.cipher.card.expMonth=e.cipher.card.expMonth.substr(1,1)),e.cipher.card.expYear=e.importRecord[e.property].substr(3,4),!0)}setLoginPassword(e){return!(!this.isNullOrWhitespace(e.cipher.login.password)||"password"!==e.lowerProperty)&&(e.cipher.login.password=e.importRecord[e.property],!0)}setLoginUsername(e){return!(!this.isNullOrWhitespace(e.cipher.login.username)||"username"!==e.lowerProperty)&&(e.cipher.login.username=e.importRecord[e.property],!0)}setLoginUris(e){if((null==e.cipher.login.uris||0===e.cipher.login.uris.length)&&"urls"===e.lowerProperty){const t=e.importRecord[e.property].split(this.newLineRegex);return e.cipher.login.uris=this.makeUriArray(t),!0}return"url"===e.lowerProperty&&(null==e.cipher.login.uris&&(e.cipher.login.uris=[]),e.cipher.login.uris.concat(this.makeUriArray(e.importRecord[e.property])),!0)}}t.OnePasswordCsvImporter=l},55529:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordMacCsvImporter=void 0;const i=n(32773),r=n(91766),o=n(48830),a=n(77674);class s extends a.OnePasswordCsvImporter{setCipherType(e,t){switch(this.getValueOrDefault(this.getProp(e,"type"),"Login")){case"Credit Card":t.type=i.CipherType.Card,t.card=new r.CardView,a.IgnoredProperties.push("type");break;case"Identity":t.type=i.CipherType.Identity,t.identity=new o.IdentityView,a.IgnoredProperties.push("type");break;case"Login":case"Secure Note":a.IgnoredProperties.push("type")}}}t.OnePasswordMacCsvImporter=s},88755:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordWinCsvImporter=void 0;const i=n(32773),r=n(91766),o=n(48830),a=n(28331),s=n(77674);class l extends s.OnePasswordCsvImporter{constructor(){super(),this.identityPropertyParsers.push(this.setIdentityAddress)}setCipherType(e,t){t.type=i.CipherType.Login,t.login=new a.LoginView,this.isNullOrWhitespace(this.getPropByRegexp(e,/\d+: number/i))||this.isNullOrWhitespace(this.getPropByRegexp(e,/\d+: expiry date/i))||(t.type=i.CipherType.Card,t.card=new r.CardView),this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: first name/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: initial/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: last name/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/internet \d+: email/i))||(t.type=i.CipherType.Identity,t.identity=new o.IdentityView)}setIdentityAddress(e){return!!e.lowerProperty.match(/address \d+: address/i)&&(this.processKvp(e.cipher,"address",e.importRecord[e.property]),!0)}setCreditCardExpiry(e){if(this.isNullOrWhitespace(e.cipher.card.expiration)&&e.lowerProperty.includes("expiry date")){const t=e.importRecord[e.property].split("/");return e.cipher.card.expMonth=t[0],"0"===e.cipher.card.expMonth[0]&&2===e.cipher.card.expMonth.length&&(e.cipher.card.expMonth=e.cipher.card.expMonth.substr(1,1)),e.cipher.card.expYear=t[2].length>4?t[2].substr(0,4):t[2],!0}return!1}}t.OnePasswordWinCsvImporter=l},53776:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginFieldTypeEnum=t.CategoryEnum=void 0,function(e){e.Login="001",e.CreditCard="002",e.SecureNote="003",e.Identity="004",e.Password="005",e.Document="006",e.SoftwareLicense="100",e.BankAccount="101",e.Database="102",e.DriversLicense="103",e.OutdoorLicense="104",e.Membership="105",e.Passport="106",e.RewardsProgram="107",e.SocialSecurityNumber="108",e.WirelessRouter="109",e.Server="110",e.EmailAccount="111",e.API_Credential="112",e.MedicalRecord="113"}(t.CategoryEnum||(t.CategoryEnum={})),function(e){e.TextOrHtml="T",e.EmailAddress="E",e.URL="U",e.Number="N",e.Password="P",e.TextArea="A",e.PhoneNumber="T",e.CheckBox="C"}(t.LoginFieldTypeEnum||(t.LoginFieldTypeEnum={}))},60784:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PadlockCsvImporter=void 0;const i=n(2859),r=n(86001),o=n(5957);class a extends o.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let o=null;return n.forEach((e=>{if(null==o)return void(o=e.map((e=>e)));if(e.length<2||e.length!==o.length)return;if(!this.isNullOrWhitespace(e[1]))if(this.organization){e[1].split(",").forEach((e=>{e=e.trim();let n=!0,i=t.collections.length;for(let r=0;r0?n[0].trim():null;this.processFolder(t,i)}const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--");for(let t=2;t-1?n.login.username=e[t]:this.passwordFieldNames.indexOf(i)>-1?n.login.password=e[t]:this.uriFieldNames.indexOf(i)>-1?n.login.uris=this.makeUriArray(e[t]):this.processKvp(n,o[t],e[t]))}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}}t.PadlockCsvImporter=a},477:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PassKeepCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValue("category",e));const n=this.initLoginCipher();n.notes=this.getValue("description",e),n.name=this.getValueOrDefault(this.getValue("title",e),"--"),n.login.username=this.getValue("username",e),n.login.password=this.getValue("password",e),n.login.uris=this.makeUriArray(this.getValue("site",e)),this.processKvp(n,"Password 2",this.getValue("password2",e)),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}getValue(e,t){return this.getValueOrDefault(t[e],this.getValueOrDefault(t[" "+e]))}}t.PassKeepCsvImporter=o},91350:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PassmanJsonImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=JSON.parse(e);return null==n||0===n.length?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(null!=e.tags&&e.tags.length>0){const n=e.tags[0].text;this.processFolder(t,n)}const n=this.initLoginCipher();n.name=e.label,n.login.username=this.getValueOrDefault(e.username),this.isNullOrWhitespace(n.login.username)?n.login.username=this.getValueOrDefault(e.email):this.isNullOrWhitespace(e.email)||(n.notes="Email: "+e.email+"\n"),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),n.notes+=this.getValueOrDefault(e.description,""),null!=e.otp&&(n.login.totp=this.getValueOrDefault(e.otp.secret)),null!=e.custom_fields&&e.custom_fields.forEach((e=>{switch(e.field_type){case"text":case"password":this.processKvp(n,e.label,e.value)}})),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.PassmanJsonImporter=o},79506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasspackCsvImporter=void 0;const i=n(2859),r=n(86001),o=n(5957);class a extends o.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.isNullOrWhitespace(e.Tags)?null:JSON.parse(e.Tags),i=null!=n&&null!=n.tags&&n.tags.length>0?n.tags.map((e=>{try{const t=JSON.parse(e);return this.getValueOrDefault(t.tag)}catch(t){}return null})).filter((e=>!this.isNullOrWhitespace(e))):null;this.organization&&null!=i&&i.length>0?i.forEach((e=>{let n=!0,i=t.collections.length;for(let r=0;r0&&this.processFolder(t,i[0]);const o=this.initLoginCipher();o.notes=this.getValueOrDefault(e.Notes,""),o.notes+="\n\n"+this.getValueOrDefault(e["Shared Notes"],"")+"\n",o.name=this.getValueOrDefault(e["Entry Name"],"--"),o.login.username=this.getValueOrDefault(e["User ID"]),o.login.password=this.getValueOrDefault(e.Password),o.login.uris=this.makeUriArray(e.URL),null!=e.__parsed_extra&&e.__parsed_extra.length>0&&e.__parsed_extra.forEach((e=>{this.isNullOrWhitespace(e)||(o.notes+="\n"+e)}));const a=this.isNullOrWhitespace(e["Extra Fields"])?null:JSON.parse(e["Extra Fields"]),s=null!=a&&null!=a.extraFields&&a.extraFields.length>0?a.extraFields.map((e=>{try{return JSON.parse(e)}catch(t){}return null})):null;null!=s&&s.forEach((e=>{null!=e&&this.processKvp(o,e.name,e.data)})),this.cleanupCipher(o),t.ciphers.push(o)})),t.success=!0,Promise.resolve(t))}}t.PasspackCsvImporter=a},29990:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordAgentCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let r=!0;return n.forEach((e=>{if(5!==e.length&&e.length<9)return;const n=10===e.length&&"0"===e[0],i=this.initLoginCipher();if(i.name=this.getValueOrDefault(e[n?1:0],"--"),i.login.username=this.getValueOrDefault(e[n?2:1]),i.login.password=this.getValueOrDefault(e[n?3:2]),5===e.length)r=!1,i.notes=this.getValueOrDefault(e[4]),i.login.uris=this.makeUriArray(e[3]);else{const r=this.getValueOrDefault(e[n?9:8],"(None)");let o="(None)"!==r?r.split("\\").join("/"):null;null!=o&&(o=r.split(" > ").join("/"),o=r.split(">").join("/")),this.processFolder(t,o),i.notes=this.getValueOrDefault(e[n?5:3]),i.login.uris=this.makeUriArray(e[4])}this.convertToNoteIfNeeded(i),this.cleanupCipher(i),t.ciphers.push(i)})),r&&this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordAgentCsvImporter=o},84972:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordBossJsonImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(36914),s=n(5957);class l extends s.BaseImporter{parse(e){const t=new r.ImportResult,n=JSON.parse(e);if(null==n||null==n.items)return t.success=!1,Promise.resolve(t);const s=new Map;n.folders.forEach((e=>{s.set(e.id,e.name)}));const l=new Map;return s.forEach(((e,n)=>{l.set(n,t.folders.length);const i=new a.FolderView;i.name=e,t.folders.push(i)})),n.items.forEach((e=>{const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.name,"--"),n.login.uris=this.makeUriArray(e.login_url),null!=e.folder&&l.has(e.folder)&&t.folderRelationships.push([t.ciphers.length,l.get(e.folder)]),null!=e.identifiers){this.isNullOrWhitespace(e.identifiers.notes)||(n.notes=e.identifiers.notes.split("\\r\\n").join("\n").split("\\n").join("\n")),"CreditCard"===e.type&&(n.card=new o.CardView,n.type=i.CipherType.Card);for(const t in e.identifiers){if(!e.identifiers.hasOwnProperty(t))continue;const o=e.identifiers[t],a=null!=o?o.toString():null;if(!this.isNullOrWhitespace(a)&&"notes"!==t&&"ignoreItemInSecurityScore"!==t)if("custom_fields"!==t){if(n.type===i.CipherType.Card){if("cardNumber"===t){n.card.number=a,n.card.brand=this.getCardBrand(a);continue}if("nameOnCard"===t){n.card.cardholderName=a;continue}if("security_code"===t){n.card.code=a;continue}if("expires"===t){try{const e=new Date(a);n.card.expYear=e.getFullYear().toString(),n.card.expMonth=(e.getMonth()+1).toString()}catch(r){}continue}if("cardType"===t)continue}else{if(("username"===t||"email"===t)&&this.isNullOrWhitespace(n.login.username)){n.login.username=a;continue}if("password"===t){n.login.password=a;continue}if("totp"===t){n.login.totp=a;continue}if((null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(t)>-1){n.login.uris=this.makeUriArray(a);continue}}this.processKvp(n,t,a)}else o.forEach((e=>{this.processKvp(n,e.name,e.value)}))}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)}})),t.success=!0,Promise.resolve(t)}}t.PasswordBossJsonImporter=l},65588:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordDragonXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelectorAll("PasswordManager > record");return Array.from(r).forEach((e=>{const n=this.querySelectorDirectChild(e,"Category"),i=null==n||this.isNullOrWhitespace(n.textContent)||"Unfiled"===n.textContent?null:n.textContent;this.processFolder(t,i);const r=this.querySelectorDirectChild(e,"Account-Name"),o=this.querySelectorDirectChild(e,"User-Id"),a=this.querySelectorDirectChild(e,"Password"),s=this.querySelectorDirectChild(e,"URL"),l=this.querySelectorDirectChild(e,"Notes"),c=this.initLoginCipher();c.name=null!=r?this.getValueOrDefault(r.textContent,"--"):"--",c.notes=null!=l?this.getValueOrDefault(l.textContent):"",c.login.username=null!=o?this.getValueOrDefault(o.textContent):null,c.login.password=null!=a?this.getValueOrDefault(a.textContent):null,c.login.uris=null!=s?this.makeUriArray(s.textContent):null;const d=[];for(let t=1;t<=10;t++)d.push("Attribute-"+t);this.querySelectorAllDirectChild(e,d.join(",")).forEach((e=>{this.isNullOrWhitespace(e.textContent)||"null"===e.textContent||this.processKvp(c,e.tagName,e.textContent)})),this.cleanupCipher(c),t.ciphers.push(c)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordDragonXmlImporter=o},45970:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordSafeXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelector("passwordsafe");if(null==r)return t.errorMessage="Missing `passwordsafe` node.",t.success=!1,Promise.resolve(t);const o=r.getAttribute("delimiter"),a=n.querySelectorAll("passwordsafe > entry");return Array.from(a).forEach((e=>{const n=this.querySelectorDirectChild(e,"group"),i=null==n||this.isNullOrWhitespace(n.textContent)?null:n.textContent.split(".").join("/");this.processFolder(t,i);const r=this.querySelectorDirectChild(e,"title"),a=this.querySelectorDirectChild(e,"username"),s=this.querySelectorDirectChild(e,"email"),l=this.querySelectorDirectChild(e,"password"),c=this.querySelectorDirectChild(e,"url"),d=this.querySelectorDirectChild(e,"notes"),p=this.initLoginCipher();p.name=null!=r?this.getValueOrDefault(r.textContent,"--"):"--",p.notes=null!=d?this.getValueOrDefault(d.textContent,"").split(o).join("\n"):null,p.login.username=null!=a?this.getValueOrDefault(a.textContent):null,p.login.password=null!=l?this.getValueOrDefault(l.textContent):null,p.login.uris=null!=c?this.makeUriArray(c.textContent):null,this.isNullOrWhitespace(p.login.username)&&null!=s?p.login.username=this.getValueOrDefault(s.textContent):null==s||this.isNullOrWhitespace(s.textContent)||(p.notes=this.isNullOrWhitespace(p.notes)?"Email: "+s.textContent:p.notes+"\nEmail: "+s.textContent),this.cleanupCipher(p),t.ciphers.push(p)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordSafeXmlImporter=o},54706:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordWalletTxtImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<1)return;e.length>5&&this.processFolder(t,e[5]);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),e.length>4&&(n.notes=this.getValueOrDefault(e[4],"").split("¬").join("\n")),e.length>2&&(n.login.username=this.getValueOrDefault(e[2])),e.length>3&&(n.login.password=this.getValueOrDefault(e[3])),e.length>1&&(n.login.uris=this.makeUriArray(e[1])),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.PasswordWalletTxtImporter=o},43897:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RememBearCsvImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if("true"===e.trash)return;const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.name),n.notes=this.getValueOrDefault(e.notes),"LoginItem"===e.type)n.login.uris=this.makeUriArray(e.website),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.username);else if("CreditCardItem"===e.type){n.type=i.CipherType.Card,n.card=new o.CardView,n.card.cardholderName=this.getValueOrDefault(e.cardholder),n.card.number=this.getValueOrDefault(e.number),n.card.brand=this.getCardBrand(n.card.number),n.card.code=this.getValueOrDefault(e.verification);try{const t=this.getValueOrDefault(e.expiryMonth);if(null!=t){const e=parseInt(t,null);null!=e&&e>=1&&e<=12&&(n.card.expMonth=e.toString())}}catch(r){}try{const t=this.getValueOrDefault(e.expiryYear);if(null!=t){const e=parseInt(t,null);null!=e&&(n.card.expYear=e.toString())}}catch(a){}const t=this.getValueOrDefault(e.pin);null!=t&&this.processKvp(n,"PIN",t);const s=this.getValueOrDefault(e.zipCode);null!=s&&this.processKvp(n,"Zip Code",s)}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.RememBearCsvImporter=s},91645:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RoboFormCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);if(null==n)return t.success=!1,Promise.resolve(t);let r=1;return n.forEach((e=>{const i=!this.isNullOrWhitespace(e.Folder)&&e.Folder.startsWith("/")?e.Folder.replace("/",""):e.Folder,o=this.isNullOrWhitespace(i)?null:i;this.processFolder(t,o);const a=this.initLoginCipher();if(a.notes=this.getValueOrDefault(e.Note),a.name=this.getValueOrDefault(e.Name,"--"),a.login.username=this.getValueOrDefault(e.Login),a.login.password=this.getValueOrDefault(e.Pwd),a.login.uris=this.makeUriArray(e.Url),!this.isNullOrWhitespace(e.Rf_fields)){let t=[e.Rf_fields];null!=e.__parsed_extra&&e.__parsed_extra.length>0&&(t=t.concat(e.__parsed_extra)),t.forEach((e=>{const t=e.split(":");if(t.length<3)return;const n="-no-name-"===t[0]?null:t[0],i=4===t.length&&"rck"===t[2]?t[1]:t[2];this.processKvp(a,n,i)}))}this.convertToNoteIfNeeded(a),this.cleanupCipher(a),r===n.length&&"--"===a.name&&this.isNullOrWhitespace(a.login.password)||(t.ciphers.push(a),r++)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.RoboFormCsvImporter=o},72739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SafariCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{var n;const i=this.initLoginCipher();i.name=this.getValueOrDefault(e.Title,"--"),i.login.username=this.getValueOrDefault(e.Username),i.login.password=this.getValueOrDefault(e.Password),i.login.uris=this.makeUriArray(null!==(n=e.Url)&&void 0!==n?n:e.URL),i.login.totp=this.getValueOrDefault(e.OTPAuth),i.notes=this.getValueOrDefault(e.Notes),this.cleanupCipher(i),t.ciphers.push(i)})),t.success=!0,Promise.resolve(t))}}t.SafariCsvImporter=o},29406:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SafeInCloudXmlImporter=void 0;const i=n(32773),r=n(67577),o=n(76716),a=n(2859),s=n(36914),l=n(99364),c=n(5957);class d extends c.BaseImporter{parse(e){const t=new a.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);if(null==n.querySelector("database"))return t.errorMessage="Missing `database` node.",t.success=!1,Promise.resolve(t);const c=new Map;return Array.from(n.querySelectorAll("database > label")).forEach((e=>{const n=e.getAttribute("name"),i=e.getAttribute("id");if(!this.isNullOrWhitespace(n)&&!this.isNullOrWhitespace(i)){c.set(i,t.folders.length);const e=new s.FolderView;e.name=n,t.folders.push(e)}})),Array.from(n.querySelectorAll("database > card")).forEach((e=>{if("true"===e.getAttribute("template")||"true"===e.getAttribute("deleted"))return;const n=this.querySelectorDirectChild(e,"label_id");if(null!=n){const e=n.textContent;!this.isNullOrWhitespace(e)&&c.has(e)&&t.folderRelationships.push([t.ciphers.length,c.get(e)])}const a=this.initLoginCipher();a.name=this.getValueOrDefault(e.getAttribute("title"),"--"),"true"===e.getAttribute("star")&&(a.favorite=!0);"note"===e.getAttribute("type")?(a.type=i.CipherType.SecureNote,a.secureNote=new l.SecureNoteView,a.secureNote.type=o.SecureNoteType.Generic):Array.from(this.querySelectorAllDirectChild(e,"field")).forEach((e=>{const t=e.textContent;if(this.isNullOrWhitespace(t))return;const n=e.getAttribute("name"),i=this.getValueOrDefault(e.getAttribute("type"),"").toLowerCase();"login"===i?a.login.username=t:"password"===i||"secret"===i?this.processKvp(a,n,t,r.FieldType.Hidden):"one_time_password"===i?a.login.totp=t:"notes"===i?a.notes+=t+"\n":"weblogin"===i||"website"===i?a.login.uris=this.makeUriArray(t):this.processKvp(a,n,t)})),Array.from(this.querySelectorAllDirectChild(e,"notes")).forEach((e=>{a.notes+=e.textContent+"\n"})),this.setPassword(a),this.cleanupCipher(a),t.ciphers.push(a)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}setPassword(e){const t=e.fields.filter((e=>e.type===r.FieldType.Hidden));if(!t.length)return;let n;for(const i of t)if(this.passwordFieldNames.includes(i.name.toLowerCase())){n=i,e.fields=e.fields.filter((e=>e!==n));break}n||(n=t[0]),e.login.password=n.value}}t.SafeInCloudXmlImporter=d},64817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SaferPassCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(this.nameFromUrl(e.url),"--"),n.notes=this.getValueOrDefault(e.notes),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.SaferPassCsvImporter=o},70402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureSafeCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Title),n.notes=this.getValueOrDefault(e.Comment),n.login.uris=this.makeUriArray(e.Url),n.login.password=this.getValueOrDefault(e.Password),n.login.username=this.getValueOrDefault(e.Username),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.SecureSafeCsvImporter=o},89757:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SplashIdCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<3)return;this.processFolder(t,this.getValueOrDefault(e[e.length-1]));const n=this.initLoginCipher();n.notes=this.getValueOrDefault(e[e.length-2],""),n.name=this.getValueOrDefault(e[1],"--"),"Web Logins"===e[0]||"Servers"===e[0]||"Email Accounts"===e[0]?(n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[4]),this.parseFieldsToNotes(n,5,e)):this.parseFieldsToNotes(n,2,e),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}parseFieldsToNotes(e,t,n){for(let i=t;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StickyPasswordXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelectorAll("root > Database > Logins > Login");return Array.from(r).forEach((e=>{const i=e.getAttribute("ID");if(this.isNullOrWhitespace(i))return;const r=e.getAttribute("Name"),o=e.getAttribute("Password");let a=null,s=null,l=null,c=null,d=null;const p=n.querySelector('root > Database > Accounts > Account > LoginLinks > Login[SourceLoginID="'+i+'"]');if(null!=p){const e=p.parentElement.parentElement;null!=e&&(a=e.getAttribute("Name"),s=e.getAttribute("Link"),c=e.getAttribute("ParentID"),l=e.getAttribute("Comments"),this.isNullOrWhitespace(l)||(l=l.split("/n").join("\n")))}this.isNullOrWhitespace(c)||(d=this.buildGroupText(n,c,""),this.processFolder(t,d));const u=this.initLoginCipher();u.name=this.getValueOrDefault(a,"--"),u.notes=this.getValueOrDefault(l),u.login.username=this.getValueOrDefault(r),u.login.password=this.getValueOrDefault(o),u.login.uris=this.makeUriArray(s),this.cleanupCipher(u),t.ciphers.push(u)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}buildGroupText(e,t,n){const i=e.querySelector('root > Database > Groups > Group[ID="'+t+'"]');return null==i?n:(this.isNullOrWhitespace(n)||(n="/"+n),n=i.getAttribute("Name")+n,this.buildGroupText(e,i.getAttribute("ParentID"),n))}}t.StickyPasswordXmlImporter=o},74962:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TrueKeyCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(99364),l=n(5957),c=["kind","autologin","favorite","hexcolor","protectedwithpassword","subdomainonly","type","tk_export_version","note","title","document_content"];class d extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();if(n.favorite="true"===this.getValueOrDefault(e.favorite,"").toLowerCase(),n.name=this.getValueOrDefault(e.name,"--"),n.notes=this.getValueOrDefault(e.memo,""),n.login.username=this.getValueOrDefault(e.login),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),"login"!==e.kind&&(n.name=this.getValueOrDefault(e.title,"--"),n.notes=this.getValueOrDefault(e.note,"")),"cc"===e.kind){if(n.type=i.CipherType.Card,n.card=new a.CardView,n.card.cardholderName=this.getValueOrDefault(e.cardholder),n.card.number=this.getValueOrDefault(e.number),n.card.brand=this.getCardBrand(n.card.number),!this.isNullOrWhitespace(e.expiryDate))try{const t=new Date(e.expiryDate);n.card.expYear=t.getFullYear().toString(),n.card.expMonth=(t.getMonth()+1).toString()}catch(o){}}else if("login"!==e.kind){n.type=i.CipherType.SecureNote,n.secureNote=new s.SecureNoteView,n.secureNote.type=r.SecureNoteType.Generic,this.isNullOrWhitespace(n.notes)||(n.notes=this.getValueOrDefault(e.document_content,""));for(const t in e)e.hasOwnProperty(t)&&c.indexOf(t.toLowerCase())<0&&!this.isNullOrWhitespace(e[t])&&this.processKvp(n,t,e[t])}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.TrueKeyCsvImporter=d},86220:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpmCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(5!==e.length)return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),n.notes=this.getValueOrDefault(e[4]),n.login.username=this.getValueOrDefault(e[1]),n.login.password=this.getValueOrDefault(e[2]),n.login.uris=this.makeUriArray(e[3]),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.UpmCsvImporter=o},6884:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.YotiCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Name,"--"),n.login.username=this.getValueOrDefault(e["User name"]),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e.URL),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.YotiCsvImporter=o},8170:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ZohoVaultCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(e["Password Name"])&&this.isNullOrWhitespace(e["Secret Name"]))return;this.processFolder(t,this.getValueOrDefault(e.ChamberName));const n=this.initLoginCipher();n.favorite="1"===this.getValueOrDefault(e.Favorite,"0"),n.notes=this.getValueOrDefault(e.Notes),n.name=this.getValueOrDefault(e["Password Name"],this.getValueOrDefault(e["Secret Name"],"--")),n.login.uris=this.makeUriArray(this.getValueOrDefault(e["Password URL"],this.getValueOrDefault(e["Secret URL"]))),this.parseData(n,e.SecretData),this.parseData(n,e.CustomData),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}parseData(e,t){if(this.isNullOrWhitespace(t))return;this.splitNewLine(t).forEach((t=>{const n=t.indexOf(":");if(n<0)return;const i=t.substring(0,n),r=t.length>n?t.substring(n+1):null;if(this.isNullOrWhitespace(i)||this.isNullOrWhitespace(r)||"SecretType"===i)return;const o=i.toLowerCase();null==e.login.username&&this.usernameFieldNames.indexOf(o)>-1?e.login.username=r:null==e.login.password&&this.passwordFieldNames.indexOf(o)>-1?e.login.password=r:this.processKvp(e,i,r)}))}}t.ZohoVaultCsvImporter=o},94700:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CaptchaIFrame=void 0;const i=n(85549);class r extends i.IFrameComponent{constructor(e,t,n,i,r,o){super(e,t,"captcha-connector.html","hcaptcha_iframe",i,r,(e=>{const t=JSON.parse(e);"string"!=typeof t?(this.iframe.height=t.height.toString(),this.iframe.width=t.width.toString()):o(t)})),this.i18nService=n}init(e){super.initComponent(this.createParams({siteKey:e,locale:this.i18nService.translationLocale},1))}}t.CaptchaIFrame=r},85549:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IFrameComponent=void 0;t.IFrameComponent=class{constructor(e,t,n,i,r,o,a){this.win=e,this.webVaultUrl=t,this.path=n,this.iframeId=i,this.successCallback=r,this.errorCallback=o,this.infoCallback=a,this.parseFunction=this.parseMessage.bind(this),this.connectorLink=e.document.createElement("a")}stop(){this.sendMessage("stop")}start(){this.sendMessage("start")}sendMessage(e){this.iframe&&this.iframe.src&&this.iframe.contentWindow&&this.iframe.contentWindow.postMessage(e,this.iframe.src)}base64Encode(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode("0x"+t))))}cleanup(){this.win.removeEventListener("message",this.parseFunction,!1)}createParams(e,t){return new URLSearchParams({data:this.base64Encode(JSON.stringify(e)),parent:encodeURIComponent(this.win.document.location.href),v:t.toString()})}initComponent(e){this.connectorLink.href=`${this.webVaultUrl}/${this.path}?${e}`,this.iframe=this.win.document.getElementById(this.iframeId),this.iframe.src=this.connectorLink.href,this.win.addEventListener("message",this.parseFunction,!1)}parseMessage(e){if(!this.validMessage(e))return;const t=e.data.split("|");"success"===t[0]&&this.successCallback?this.successCallback(t[1]):"error"===t[0]&&this.errorCallback?this.errorCallback(t[1]):"info"===t[0]&&this.infoCallback&&this.infoCallback(t[1])}validMessage(e){return null!=e.origin&&""!==e.origin&&e.origin===this.connectorLink.origin&&null!=e.data&&"string"==typeof e.data&&(0===e.data.indexOf("success|")||0===e.data.indexOf("error|")||0===e.data.indexOf("info|"))}}},60628:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.linkedFieldOption=t.LinkedMetadata=void 0;class n{constructor(e,t){this.propertyKey=e,this._i18nKey=t}get i18nKey(){var e;return null!==(e=this._i18nKey)&&void 0!==e?e:this.propertyKey}}t.LinkedMetadata=n,t.linkedFieldOption=function(e,t){return(i,r)=>{null==i.linkedFieldOptions&&(i.linkedFieldOptions=new Map),i.linkedFieldOptions.set(e,new n(r,t))}}},83825:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLogInStrategy=void 0;const r=n(81047),o=n(27657);class a extends o.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,l),this.environmentService=c,this.keyConnectorService=d}onSuccessfulLogin(e){return i(this,void 0,void 0,(function*(){if(e.apiUseKeyConnector){const e=this.environmentService.getKeyConnectorUrl();yield this.keyConnectorService.getAndSetKey(e)}}))}logIn(e){return i(this,void 0,void 0,(function*(){return this.tokenRequest=new r.ApiTokenRequest(e.clientId,e.clientSecret,yield this.buildTwoFactor(),yield this.buildDeviceRequest()),this.startLogIn()}))}saveAccountInformation(e){const t=Object.create(null,{saveAccountInformation:{get:()=>super.saveAccountInformation}});return i(this,void 0,void 0,(function*(){yield t.saveAccountInformation.call(this,e),yield this.stateService.setApiKeyClientId(this.tokenRequest.clientId),yield this.stateService.setApiKeyClientSecret(this.tokenRequest.clientSecret)}))}}t.ApiLogInStrategy=a},27657:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LogInStrategy=void 0;const r=n(97374),o=n(31445),a=n(20584),s=n(92829),l=n(74598),c=n(74284),d=n(56659),p=n(7269),u=n(38326);t.LogInStrategy=class{constructor(e,t,n,i,r,o,a,s,l){this.cryptoService=e,this.apiService=t,this.tokenService=n,this.appIdService=i,this.platformUtilsService=r,this.messagingService=o,this.logService=a,this.stateService=s,this.twoFactorService=l,this.captchaBypassToken=null}logInTwoFactor(e,t=null){return i(this,void 0,void 0,(function*(){return this.tokenRequest.setTwoFactor(e),this.startLogIn()}))}startLogIn(){return i(this,void 0,void 0,(function*(){this.twoFactorService.clearSelectedProvider();const e=yield this.apiService.postIdentityToken(this.tokenRequest);if(e instanceof u.IdentityTwoFactorResponse)return this.processTwoFactorResponse(e);if(e instanceof d.IdentityCaptchaResponse)return this.processCaptchaResponse(e);if(e instanceof p.IdentityTokenResponse)return this.processTokenResponse(e);throw new Error("Invalid response object.")}))}onSuccessfulLogin(e){return null}buildDeviceRequest(){return i(this,void 0,void 0,(function*(){const e=yield this.appIdService.getAppId();return new s.DeviceRequest(e,this.platformUtilsService)}))}buildTwoFactor(e){return i(this,void 0,void 0,(function*(){if(null!=e)return e;const t=yield this.tokenService.getTwoFactorToken();return null!=t?new l.TokenRequestTwoFactor(r.TwoFactorProviderType.Remember,t,!1):new l.TokenRequestTwoFactor}))}saveAccountInformation(e){return i(this,void 0,void 0,(function*(){const t=yield this.tokenService.decodeToken(e.accessToken);yield this.stateService.addAccount(new o.Account({profile:Object.assign(Object.assign({},new o.AccountProfile),{userId:t.sub,email:t.email,hasPremiumPersonally:t.premium,kdfIterations:e.kdfIterations,kdfType:e.kdf}),tokens:Object.assign(Object.assign({},new o.AccountTokens),{accessToken:e.accessToken,refreshToken:e.refreshToken})}))}))}processTokenResponse(e){var t;return i(this,void 0,void 0,(function*(){const n=new a.AuthResult;n.resetMasterPassword=e.resetMasterPassword,n.forcePasswordReset=e.forcePasswordReset,yield this.saveAccountInformation(e),null!=e.twoFactorToken&&(yield this.tokenService.setTwoFactorToken(e));return null==e.key||(yield this.cryptoService.setEncKey(e.key),yield this.cryptoService.setEncPrivateKey(null!==(t=e.privateKey)&&void 0!==t?t:yield this.createKeyPairForOldAccount())),yield this.onSuccessfulLogin(e),yield this.stateService.setBiometricLocked(!1),this.messagingService.send("loggedIn"),n}))}processTwoFactorResponse(e){var t;return i(this,void 0,void 0,(function*(){const n=new a.AuthResult;return n.twoFactorProviders=e.twoFactorProviders2,this.twoFactorService.setProviders(e),this.captchaBypassToken=null!==(t=e.captchaToken)&&void 0!==t?t:null,n}))}processCaptchaResponse(e){return i(this,void 0,void 0,(function*(){const t=new a.AuthResult;return t.captchaSiteKey=e.siteKey,t}))}createKeyPairForOldAccount(){return i(this,void 0,void 0,(function*(){try{const[e,t]=yield this.cryptoService.makeKeyPair();return yield this.apiService.postAccountKeys(new c.KeysRequest(e,t.encryptedString)),t.encryptedString}catch(e){this.logService.error(e)}}))}}},74044:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordLogInStrategy=void 0;const r=n(43578),o=n(10037),a=n(27657);class s extends a.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,s,l),this.authService=c}get email(){return this.tokenRequest.email}get masterPasswordHash(){return this.tokenRequest.masterPasswordHash}onSuccessfulLogin(){return i(this,void 0,void 0,(function*(){yield this.cryptoService.setKey(this.key),yield this.cryptoService.setKeyHash(this.localHashedPassword)}))}logInTwoFactor(e,t){const n=Object.create(null,{logInTwoFactor:{get:()=>super.logInTwoFactor}});return i(this,void 0,void 0,(function*(){return this.tokenRequest.captchaResponse=null!=t?t:this.captchaBypassToken,n.logInTwoFactor.call(this,e)}))}logIn(e){return i(this,void 0,void 0,(function*(){const{email:t,masterPassword:n,captchaToken:i,twoFactor:a}=e;this.key=yield this.authService.makePreloginKey(n,t),this.localHashedPassword=yield this.cryptoService.hashPassword(n,this.key,r.HashPurpose.LocalAuthorization);const s=yield this.cryptoService.hashPassword(n,this.key);return this.tokenRequest=new o.PasswordTokenRequest(t,s,i,yield this.buildTwoFactor(a),yield this.buildDeviceRequest()),this.startLogIn()}))}}t.PasswordLogInStrategy=s},41956:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoLogInStrategy=void 0;const r=n(11685),o=n(27657);class a extends o.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,s,l),this.keyConnectorService=c}onSuccessfulLogin(e){return i(this,void 0,void 0,(function*(){const t=null==e.key;null!=e.keyConnectorUrl&&(t?yield this.keyConnectorService.convertNewSsoUserToKeyConnector(e,this.orgId):yield this.keyConnectorService.getAndSetKey(e.keyConnectorUrl))}))}logIn(e){return i(this,void 0,void 0,(function*(){return this.orgId=e.orgId,this.tokenRequest=new r.SsoTokenRequest(e.code,e.codeVerifier,e.redirectUrl,yield this.buildTwoFactor(e.twoFactor),yield this.buildDeviceRequest()),this.startLogIn()}))}}t.SsoLogInStrategy=a},27605:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sequentialize=void 0,t.sequentialize=function(e){return(t,n,i)=>{const r=i.value,o=new Map;return{value:function(...t){const n=(e=>{let t=o.get(e);return null!=t||(t=new Map,o.set(e,t)),t})(this),i=e(t);let a=n.get(i);if(null!=a)return a;const s=()=>{n.delete(i),0===n.size&&o.delete(this)};return a=r.apply(this,t).then((e=>(s(),e))).catch((e=>{throw s(),e})),n.set(i,a),a}}}}},39814:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ServiceUtils=void 0;const i=n(51301);class r{static nestedTraverse(e,t,n,o,a,s){if(n.length<=t)return;const l=t===n.length-1,c=n[t];for(let d=0;de.node.name===c)).length){if(l)return void e.push(new i.TreeNode(o,c,a));const d=n[t]+s+n[t+1];r.nestedTraverse(e,0,[d,...n.slice(t+2)],o,a,s)}}static getTreeNodeObject(e,t){for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throttle=void 0,t.throttle=function(e,t){return(n,i,r)=>{const o=r.value,a=new Map;return{value:function(...n){const i=(e=>{let t=a.get(e);return null!=t||(t=new Map,a.set(e,t)),t})(this),r=t(n);let s=i.get(r);return null==s&&(s=[],i.set(r,s)),new Promise(((t,l)=>{const c=()=>{const d=()=>{s.splice(s.indexOf(c),1),s.length>=e?s[e-1]():0===s.length&&(i.delete(r),0===i.size&&a.delete(this))};o.apply(this,n).then((e=>(d(),e))).catch((e=>{throw d(),e})).then(t,l)};s.push(c),s.length<=e&&c()}))}}}}},43400:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isValid=t.getDomain=void 0,t.getDomain=function(e){return null},t.isValid=function(e){return!0}},82769:(e,t,n)=>{"use strict";var i=n(34155);Object.defineProperty(t,"__esModule",{value:!0}),t.Utils=void 0;const r=n(43400),o="undefined"==typeof window?n(4958):null;class a{static init(){a.inited||(a.inited=!0,a.isNode=void 0!==i&&null!=i.release&&"node"===i.release.name,a.isBrowser="undefined"!=typeof window,a.isMobileBrowser=a.isBrowser&&this.isMobile(window),a.isAppleMobileBrowser=a.isBrowser&&this.isAppleMobile(window),a.global=a.isNode&&!a.isBrowser?n.g:window)}static fromB64ToArray(e){if(a.isNode)return new Uint8Array(Buffer.from(e,"base64"));{const t=window.atob(e),n=new Uint8Array(t.length);for(let e=0;e("00"+e.toString(16)).slice(-2))).join("")}}static fromUrlB64ToB64(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("Illegal base64url string!")}return t}static fromUrlB64ToUtf8(e){return a.fromB64ToUtf8(a.fromUrlB64ToB64(e))}static fromUtf8ToB64(e){return a.isNode?Buffer.from(e,"utf8").toString("base64"):decodeURIComponent(escape(window.btoa(e)))}static fromUtf8ToUrlB64(e){return a.fromBufferToUrlB64(a.fromUtf8ToArray(e))}static fromB64ToUtf8(e){return a.isNode?Buffer.from(e,"base64").toString("utf8"):decodeURIComponent(escape(window.atob(e)))}static newGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}static isGuid(e){return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,"i").test(e)}static getHostname(e){const t=a.getUrl(e);try{return null!=t&&""!==t.hostname?t.hostname:null}catch(n){return null}}static getHost(e){const t=a.getUrl(e);try{return null!=t&&""!==t.host?t.host:null}catch(n){return null}}static getDomain(e){if(null==e)return null;if(""===(e=e.trim()))return null;if(e.startsWith("data:"))return null;let t=e.startsWith("http://")||e.startsWith("https://");if(!t&&e.indexOf("://")<0&&a.tldEndingRegex.test(e)&&e.indexOf("@")<0&&(e="http://"+e,t=!0),t)try{const t=a.getUrlObject(e);if(!(null==(null==r?void 0:r.isValid)||r.isValid(t.hostname)))return null;if("localhost"===t.hostname||a.validIpAddress(t.hostname))return t.hostname;const n=null!=r&&null!=r.getDomain?r.getDomain(t.hostname):null;return null!=n?n:t.hostname}catch(n){}try{const t=null!=r&&null!=r.getDomain?r.getDomain(e):null;if(null!=t)return t}catch(i){return null}return null}static getQueryParams(e){const t=a.getUrl(e);if(null==t||null==t.search||""===t.search)return null;const n=new Map;return("?"===t.search[0]?t.search.substr(1):t.search).split("&").forEach((e=>{const t=e.split("=");t.length<1||n.set(decodeURIComponent(t[0]).toLowerCase(),null==t[1]?"":decodeURIComponent(t[1]))})),n}static getSortFunction(e,t){return(n,i)=>null==n[t]&&null!=i[t]?-1:null!=n[t]&&null==i[t]?1:null==n[t]&&null==i[t]?0:e.collator?e.collator.compare(n[t],i[t]):n[t].localeCompare(i[t])}static isNullOrWhitespace(e){return null==e||"string"!=typeof e||""===e.trim()}static isNullOrEmpty(e){return null==e||"string"!=typeof e||""==e}static nameOf(e){return e}static assign(e,t){return Object.assign(e,t)}static iterateEnum(e){return Object.keys(e).filter((e=>Number.isNaN(+e))).map((t=>e[t]))}static getUrl(e){if(null==e)return null;if(""===(e=e.trim()))return null;let t=a.getUrlObject(e);if(null==t){!(0===e.indexOf("http://")||0===e.indexOf("https://"))&&e.indexOf(".")>-1&&(t=a.getUrlObject("http://"+e))}return t}static camelToPascalCase(e){return e.charAt(0).toUpperCase()+e.slice(1)}static validIpAddress(e){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e)}static isMobile(e){let t=!1;var n;return n=e.navigator.userAgent||e.navigator.vendor||e.opera,(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(n.substr(0,4)))&&(t=!0),t||null!=e.navigator.userAgent.match(/iPad/i)}static isAppleMobile(e){return null!=e.navigator.userAgent.match(/iPhone/i)||null!=e.navigator.userAgent.match(/iPad/i)}static getUrlObject(e){try{if(null!=o)return new o.URL(e);if("function"==typeof URL)return new URL(e);if(null!=window){const t=e.indexOf("://")>-1;if(!t&&e.indexOf(".")>-1)e="http://"+e;else if(!t)return null;const n=window.document.createElement("a");return n.href=e,n}}catch(t){}return null}}t.Utils=a,a.inited=!1,a.isNode=!1,a.isBrowser=!0,a.isMobileBrowser=!1,a.isAppleMobileBrowser=!1,a.global=null,a.tldEndingRegex=/.*\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/,a.regexpEmojiPresentation=/(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])/g,a.init()},28705:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebAuthnIFrame=void 0;t.WebAuthnIFrame=class{constructor(e,t,n,i,r,o,a,s){this.win=e,this.webVaultUrl=t,this.webAuthnNewTab=n,this.platformUtilsService=i,this.i18nService=r,this.successCallback=o,this.errorCallback=a,this.infoCallback=s,this.iframe=null,this.parseFunction=this.parseMessage.bind(this),this.connectorLink=e.document.createElement("a")}init(e){const t=new URLSearchParams({data:this.base64Encode(JSON.stringify(e)),parent:encodeURIComponent(this.win.document.location.href),btnText:encodeURIComponent(this.i18nService.t("webAuthnAuthenticate")),v:"1"});this.webAuthnNewTab?(t.append("locale",this.i18nService.translationLocale),this.platformUtilsService.launchUri(`${this.webVaultUrl}/webauthn-fallback-connector.html?${t}`)):(this.connectorLink.href=`${this.webVaultUrl}/webauthn-connector.html?${t}`,this.iframe=this.win.document.getElementById("webauthn_iframe"),this.iframe.allow="publickey-credentials-get "+new URL(this.webVaultUrl).origin,this.iframe.src=this.connectorLink.href,this.win.addEventListener("message",this.parseFunction,!1))}stop(){this.sendMessage("stop")}start(){this.sendMessage("start")}sendMessage(e){this.iframe&&this.iframe.src&&this.iframe.contentWindow&&this.iframe.contentWindow.postMessage(e,this.iframe.src)}base64Encode(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode("0x"+t))))}cleanup(){this.win.removeEventListener("message",this.parseFunction,!1)}parseMessage(e){if(!this.validMessage(e))return;const t=e.data.split("|");"success"===t[0]&&this.successCallback?this.successCallback(t[1]):"error"===t[0]&&this.errorCallback?this.errorCallback(t[1]):"info"===t[0]&&this.infoCallback&&this.infoCallback(t[1])}validMessage(e){return null!=e.origin&&""!==e.origin&&e.origin===this.connectorLink.origin&&null!=e.data&&"string"==typeof e.data&&(0===e.data.indexOf("success|")||0===e.data.indexOf("error|")||0===e.data.indexOf("info|"))}}},40596:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EEFLongWordList=void 0,t.EEFLongWordList=["abacus","abdomen","abdominal","abide","abiding","ability","ablaze","able","abnormal","abrasion","abrasive","abreast","abridge","abroad","abruptly","absence","absentee","absently","absinthe","absolute","absolve","abstain","abstract","absurd","accent","acclaim","acclimate","accompany","account","accuracy","accurate","accustom","acetone","achiness","aching","acid","acorn","acquaint","acquire","acre","acrobat","acronym","acting","action","activate","activator","active","activism","activist","activity","actress","acts","acutely","acuteness","aeration","aerobics","aerosol","aerospace","afar","affair","affected","affecting","affection","affidavit","affiliate","affirm","affix","afflicted","affluent","afford","affront","aflame","afloat","aflutter","afoot","afraid","afterglow","afterlife","aftermath","aftermost","afternoon","aged","ageless","agency","agenda","agent","aggregate","aghast","agile","agility","aging","agnostic","agonize","agonizing","agony","agreeable","agreeably","agreed","agreeing","agreement","aground","ahead","ahoy","aide","aids","aim","ajar","alabaster","alarm","albatross","album","alfalfa","algebra","algorithm","alias","alibi","alienable","alienate","aliens","alike","alive","alkaline","alkalize","almanac","almighty","almost","aloe","aloft","aloha","alone","alongside","aloof","alphabet","alright","although","altitude","alto","aluminum","alumni","always","amaretto","amaze","amazingly","amber","ambiance","ambiguity","ambiguous","ambition","ambitious","ambulance","ambush","amendable","amendment","amends","amenity","amiable","amicably","amid","amigo","amino","amiss","ammonia","ammonium","amnesty","amniotic","among","amount","amperage","ample","amplifier","amplify","amply","amuck","amulet","amusable","amused","amusement","amuser","amusing","anaconda","anaerobic","anagram","anatomist","anatomy","anchor","anchovy","ancient","android","anemia","anemic","aneurism","anew","angelfish","angelic","anger","angled","angler","angles","angling","angrily","angriness","anguished","angular","animal","animate","animating","animation","animator","anime","animosity","ankle","annex","annotate","announcer","annoying","annually","annuity","anointer","another","answering","antacid","antarctic","anteater","antelope","antennae","anthem","anthill","anthology","antibody","antics","antidote","antihero","antiquely","antiques","antiquity","antirust","antitoxic","antitrust","antiviral","antivirus","antler","antonym","antsy","anvil","anybody","anyhow","anymore","anyone","anyplace","anything","anytime","anyway","anywhere","aorta","apache","apostle","appealing","appear","appease","appeasing","appendage","appendix","appetite","appetizer","applaud","applause","apple","appliance","applicant","applied","apply","appointee","appraisal","appraiser","apprehend","approach","approval","approve","apricot","april","apron","aptitude","aptly","aqua","aqueduct","arbitrary","arbitrate","ardently","area","arena","arguable","arguably","argue","arise","armadillo","armband","armchair","armed","armful","armhole","arming","armless","armoire","armored","armory","armrest","army","aroma","arose","around","arousal","arrange","array","arrest","arrival","arrive","arrogance","arrogant","arson","art","ascend","ascension","ascent","ascertain","ashamed","ashen","ashes","ashy","aside","askew","asleep","asparagus","aspect","aspirate","aspire","aspirin","astonish","astound","astride","astrology","astronaut","astronomy","astute","atlantic","atlas","atom","atonable","atop","atrium","atrocious","atrophy","attach","attain","attempt","attendant","attendee","attention","attentive","attest","attic","attire","attitude","attractor","attribute","atypical","auction","audacious","audacity","audible","audibly","audience","audio","audition","augmented","august","authentic","author","autism","autistic","autograph","automaker","automated","automatic","autopilot","available","avalanche","avatar","avenge","avenging","avenue","average","aversion","avert","aviation","aviator","avid","avoid","await","awaken","award","aware","awhile","awkward","awning","awoke","awry","axis","babble","babbling","babied","baboon","backache","backboard","backboned","backdrop","backed","backer","backfield","backfire","backhand","backing","backlands","backlash","backless","backlight","backlit","backlog","backpack","backpedal","backrest","backroom","backshift","backside","backslid","backspace","backspin","backstab","backstage","backtalk","backtrack","backup","backward","backwash","backwater","backyard","bacon","bacteria","bacterium","badass","badge","badland","badly","badness","baffle","baffling","bagel","bagful","baggage","bagged","baggie","bagginess","bagging","baggy","bagpipe","baguette","baked","bakery","bakeshop","baking","balance","balancing","balcony","balmy","balsamic","bamboo","banana","banish","banister","banjo","bankable","bankbook","banked","banker","banking","banknote","bankroll","banner","bannister","banshee","banter","barbecue","barbed","barbell","barber","barcode","barge","bargraph","barista","baritone","barley","barmaid","barman","barn","barometer","barrack","barracuda","barrel","barrette","barricade","barrier","barstool","bartender","barterer","bash","basically","basics","basil","basin","basis","basket","batboy","batch","bath","baton","bats","battalion","battered","battering","battery","batting","battle","bauble","bazooka","blabber","bladder","blade","blah","blame","blaming","blanching","blandness","blank","blaspheme","blasphemy","blast","blatancy","blatantly","blazer","blazing","bleach","bleak","bleep","blemish","blend","bless","blighted","blimp","bling","blinked","blinker","blinking","blinks","blip","blissful","blitz","blizzard","bloated","bloating","blob","blog","bloomers","blooming","blooper","blot","blouse","blubber","bluff","bluish","blunderer","blunt","blurb","blurred","blurry","blurt","blush","blustery","boaster","boastful","boasting","boat","bobbed","bobbing","bobble","bobcat","bobsled","bobtail","bodacious","body","bogged","boggle","bogus","boil","bok","bolster","bolt","bonanza","bonded","bonding","bondless","boned","bonehead","boneless","bonelike","boney","bonfire","bonnet","bonsai","bonus","bony","boogeyman","boogieman","book","boondocks","booted","booth","bootie","booting","bootlace","bootleg","boots","boozy","borax","boring","borough","borrower","borrowing","boss","botanical","botanist","botany","botch","both","bottle","bottling","bottom","bounce","bouncing","bouncy","bounding","boundless","bountiful","bovine","boxcar","boxer","boxing","boxlike","boxy","breach","breath","breeches","breeching","breeder","breeding","breeze","breezy","brethren","brewery","brewing","briar","bribe","brick","bride","bridged","brigade","bright","brilliant","brim","bring","brink","brisket","briskly","briskness","bristle","brittle","broadband","broadcast","broaden","broadly","broadness","broadside","broadways","broiler","broiling","broken","broker","bronchial","bronco","bronze","bronzing","brook","broom","brought","browbeat","brownnose","browse","browsing","bruising","brunch","brunette","brunt","brush","brussels","brute","brutishly","bubble","bubbling","bubbly","buccaneer","bucked","bucket","buckle","buckshot","buckskin","bucktooth","buckwheat","buddhism","buddhist","budding","buddy","budget","buffalo","buffed","buffer","buffing","buffoon","buggy","bulb","bulge","bulginess","bulgur","bulk","bulldog","bulldozer","bullfight","bullfrog","bullhorn","bullion","bullish","bullpen","bullring","bullseye","bullwhip","bully","bunch","bundle","bungee","bunion","bunkbed","bunkhouse","bunkmate","bunny","bunt","busboy","bush","busily","busload","bust","busybody","buzz","cabana","cabbage","cabbie","cabdriver","cable","caboose","cache","cackle","cacti","cactus","caddie","caddy","cadet","cadillac","cadmium","cage","cahoots","cake","calamari","calamity","calcium","calculate","calculus","caliber","calibrate","calm","caloric","calorie","calzone","camcorder","cameo","camera","camisole","camper","campfire","camping","campsite","campus","canal","canary","cancel","candied","candle","candy","cane","canine","canister","cannabis","canned","canning","cannon","cannot","canola","canon","canopener","canopy","canteen","canyon","capable","capably","capacity","cape","capillary","capital","capitol","capped","capricorn","capsize","capsule","caption","captivate","captive","captivity","capture","caramel","carat","caravan","carbon","cardboard","carded","cardiac","cardigan","cardinal","cardstock","carefully","caregiver","careless","caress","caretaker","cargo","caring","carless","carload","carmaker","carnage","carnation","carnival","carnivore","carol","carpenter","carpentry","carpool","carport","carried","carrot","carrousel","carry","cartel","cartload","carton","cartoon","cartridge","cartwheel","carve","carving","carwash","cascade","case","cash","casing","casino","casket","cassette","casually","casualty","catacomb","catalog","catalyst","catalyze","catapult","cataract","catatonic","catcall","catchable","catcher","catching","catchy","caterer","catering","catfight","catfish","cathedral","cathouse","catlike","catnap","catnip","catsup","cattail","cattishly","cattle","catty","catwalk","caucasian","caucus","causal","causation","cause","causing","cauterize","caution","cautious","cavalier","cavalry","caviar","cavity","cedar","celery","celestial","celibacy","celibate","celtic","cement","census","ceramics","ceremony","certainly","certainty","certified","certify","cesarean","cesspool","chafe","chaffing","chain","chair","chalice","challenge","chamber","chamomile","champion","chance","change","channel","chant","chaos","chaperone","chaplain","chapped","chaps","chapter","character","charbroil","charcoal","charger","charging","chariot","charity","charm","charred","charter","charting","chase","chasing","chaste","chastise","chastity","chatroom","chatter","chatting","chatty","cheating","cheddar","cheek","cheer","cheese","cheesy","chef","chemicals","chemist","chemo","cherisher","cherub","chess","chest","chevron","chevy","chewable","chewer","chewing","chewy","chief","chihuahua","childcare","childhood","childish","childless","childlike","chili","chill","chimp","chip","chirping","chirpy","chitchat","chivalry","chive","chloride","chlorine","choice","chokehold","choking","chomp","chooser","choosing","choosy","chop","chosen","chowder","chowtime","chrome","chubby","chuck","chug","chummy","chump","chunk","churn","chute","cider","cilantro","cinch","cinema","cinnamon","circle","circling","circular","circulate","circus","citable","citadel","citation","citizen","citric","citrus","city","civic","civil","clad","claim","clambake","clammy","clamor","clamp","clamshell","clang","clanking","clapped","clapper","clapping","clarify","clarinet","clarity","clash","clasp","class","clatter","clause","clavicle","claw","clay","clean","clear","cleat","cleaver","cleft","clench","clergyman","clerical","clerk","clever","clicker","client","climate","climatic","cling","clinic","clinking","clip","clique","cloak","clobber","clock","clone","cloning","closable","closure","clothes","clothing","cloud","clover","clubbed","clubbing","clubhouse","clump","clumsily","clumsy","clunky","clustered","clutch","clutter","coach","coagulant","coastal","coaster","coasting","coastland","coastline","coat","coauthor","cobalt","cobbler","cobweb","cocoa","coconut","cod","coeditor","coerce","coexist","coffee","cofounder","cognition","cognitive","cogwheel","coherence","coherent","cohesive","coil","coke","cola","cold","coleslaw","coliseum","collage","collapse","collar","collected","collector","collide","collie","collision","colonial","colonist","colonize","colony","colossal","colt","coma","come","comfort","comfy","comic","coming","comma","commence","commend","comment","commerce","commode","commodity","commodore","common","commotion","commute","commuting","compacted","compacter","compactly","compactor","companion","company","compare","compel","compile","comply","component","composed","composer","composite","compost","composure","compound","compress","comprised","computer","computing","comrade","concave","conceal","conceded","concept","concerned","concert","conch","concierge","concise","conclude","concrete","concur","condense","condiment","condition","condone","conducive","conductor","conduit","cone","confess","confetti","confidant","confident","confider","confiding","configure","confined","confining","confirm","conflict","conform","confound","confront","confused","confusing","confusion","congenial","congested","congrats","congress","conical","conjoined","conjure","conjuror","connected","connector","consensus","consent","console","consoling","consonant","constable","constant","constrain","constrict","construct","consult","consumer","consuming","contact","container","contempt","contend","contented","contently","contents","contest","context","contort","contour","contrite","control","contusion","convene","convent","copartner","cope","copied","copier","copilot","coping","copious","copper","copy","coral","cork","cornball","cornbread","corncob","cornea","corned","corner","cornfield","cornflake","cornhusk","cornmeal","cornstalk","corny","coronary","coroner","corporal","corporate","corral","correct","corridor","corrode","corroding","corrosive","corsage","corset","cortex","cosigner","cosmetics","cosmic","cosmos","cosponsor","cost","cottage","cotton","couch","cough","could","countable","countdown","counting","countless","country","county","courier","covenant","cover","coveted","coveting","coyness","cozily","coziness","cozy","crabbing","crabgrass","crablike","crabmeat","cradle","cradling","crafter","craftily","craftsman","craftwork","crafty","cramp","cranberry","crane","cranial","cranium","crank","crate","crave","craving","crawfish","crawlers","crawling","crayfish","crayon","crazed","crazily","craziness","crazy","creamed","creamer","creamlike","crease","creasing","creatable","create","creation","creative","creature","credible","credibly","credit","creed","creme","creole","crepe","crept","crescent","crested","cresting","crestless","crevice","crewless","crewman","crewmate","crib","cricket","cried","crier","crimp","crimson","cringe","cringing","crinkle","crinkly","crisped","crisping","crisply","crispness","crispy","criteria","critter","croak","crock","crook","croon","crop","cross","crouch","crouton","crowbar","crowd","crown","crucial","crudely","crudeness","cruelly","cruelness","cruelty","crumb","crummiest","crummy","crumpet","crumpled","cruncher","crunching","crunchy","crusader","crushable","crushed","crusher","crushing","crust","crux","crying","cryptic","crystal","cubbyhole","cube","cubical","cubicle","cucumber","cuddle","cuddly","cufflink","culinary","culminate","culpable","culprit","cultivate","cultural","culture","cupbearer","cupcake","cupid","cupped","cupping","curable","curator","curdle","cure","curfew","curing","curled","curler","curliness","curling","curly","curry","curse","cursive","cursor","curtain","curtly","curtsy","curvature","curve","curvy","cushy","cusp","cussed","custard","custodian","custody","customary","customer","customize","customs","cut","cycle","cyclic","cycling","cyclist","cylinder","cymbal","cytoplasm","cytoplast","dab","dad","daffodil","dagger","daily","daintily","dainty","dairy","daisy","dallying","dance","dancing","dandelion","dander","dandruff","dandy","danger","dangle","dangling","daredevil","dares","daringly","darkened","darkening","darkish","darkness","darkroom","darling","darn","dart","darwinism","dash","dastardly","data","datebook","dating","daughter","daunting","dawdler","dawn","daybed","daybreak","daycare","daydream","daylight","daylong","dayroom","daytime","dazzler","dazzling","deacon","deafening","deafness","dealer","dealing","dealmaker","dealt","dean","debatable","debate","debating","debit","debrief","debtless","debtor","debug","debunk","decade","decaf","decal","decathlon","decay","deceased","deceit","deceiver","deceiving","december","decency","decent","deception","deceptive","decibel","decidable","decimal","decimeter","decipher","deck","declared","decline","decode","decompose","decorated","decorator","decoy","decrease","decree","dedicate","dedicator","deduce","deduct","deed","deem","deepen","deeply","deepness","deface","defacing","defame","default","defeat","defection","defective","defendant","defender","defense","defensive","deferral","deferred","defiance","defiant","defile","defiling","define","definite","deflate","deflation","deflator","deflected","deflector","defog","deforest","defraud","defrost","deftly","defuse","defy","degraded","degrading","degrease","degree","dehydrate","deity","dejected","delay","delegate","delegator","delete","deletion","delicacy","delicate","delicious","delighted","delirious","delirium","deliverer","delivery","delouse","delta","deluge","delusion","deluxe","demanding","demeaning","demeanor","demise","democracy","democrat","demote","demotion","demystify","denatured","deniable","denial","denim","denote","dense","density","dental","dentist","denture","deny","deodorant","deodorize","departed","departure","depict","deplete","depletion","deplored","deploy","deport","depose","depraved","depravity","deprecate","depress","deprive","depth","deputize","deputy","derail","deranged","derby","derived","desecrate","deserve","deserving","designate","designed","designer","designing","deskbound","desktop","deskwork","desolate","despair","despise","despite","destiny","destitute","destruct","detached","detail","detection","detective","detector","detention","detergent","detest","detonate","detonator","detoxify","detract","deuce","devalue","deviancy","deviant","deviate","deviation","deviator","device","devious","devotedly","devotee","devotion","devourer","devouring","devoutly","dexterity","dexterous","diabetes","diabetic","diabolic","diagnoses","diagnosis","diagram","dial","diameter","diaper","diaphragm","diary","dice","dicing","dictate","dictation","dictator","difficult","diffused","diffuser","diffusion","diffusive","dig","dilation","diligence","diligent","dill","dilute","dime","diminish","dimly","dimmed","dimmer","dimness","dimple","diner","dingbat","dinghy","dinginess","dingo","dingy","dining","dinner","diocese","dioxide","diploma","dipped","dipper","dipping","directed","direction","directive","directly","directory","direness","dirtiness","disabled","disagree","disallow","disarm","disarray","disaster","disband","disbelief","disburse","discard","discern","discharge","disclose","discolor","discount","discourse","discover","discuss","disdain","disengage","disfigure","disgrace","dish","disinfect","disjoin","disk","dislike","disliking","dislocate","dislodge","disloyal","dismantle","dismay","dismiss","dismount","disobey","disorder","disown","disparate","disparity","dispatch","dispense","dispersal","dispersed","disperser","displace","display","displease","disposal","dispose","disprove","dispute","disregard","disrupt","dissuade","distance","distant","distaste","distill","distinct","distort","distract","distress","district","distrust","ditch","ditto","ditzy","dividable","divided","dividend","dividers","dividing","divinely","diving","divinity","divisible","divisibly","division","divisive","divorcee","dizziness","dizzy","doable","docile","dock","doctrine","document","dodge","dodgy","doily","doing","dole","dollar","dollhouse","dollop","dolly","dolphin","domain","domelike","domestic","dominion","dominoes","donated","donation","donator","donor","donut","doodle","doorbell","doorframe","doorknob","doorman","doormat","doornail","doorpost","doorstep","doorstop","doorway","doozy","dork","dormitory","dorsal","dosage","dose","dotted","doubling","douche","dove","down","dowry","doze","drab","dragging","dragonfly","dragonish","dragster","drainable","drainage","drained","drainer","drainpipe","dramatic","dramatize","drank","drapery","drastic","draw","dreaded","dreadful","dreadlock","dreamboat","dreamily","dreamland","dreamless","dreamlike","dreamt","dreamy","drearily","dreary","drench","dress","drew","dribble","dried","drier","drift","driller","drilling","drinkable","drinking","dripping","drippy","drivable","driven","driver","driveway","driving","drizzle","drizzly","drone","drool","droop","drop-down","dropbox","dropkick","droplet","dropout","dropper","drove","drown","drowsily","drudge","drum","dry","dubbed","dubiously","duchess","duckbill","ducking","duckling","ducktail","ducky","duct","dude","duffel","dugout","duh","duke","duller","dullness","duly","dumping","dumpling","dumpster","duo","dupe","duplex","duplicate","duplicity","durable","durably","duration","duress","during","dusk","dust","dutiful","duty","duvet","dwarf","dweeb","dwelled","dweller","dwelling","dwindle","dwindling","dynamic","dynamite","dynasty","dyslexia","dyslexic","each","eagle","earache","eardrum","earflap","earful","earlobe","early","earmark","earmuff","earphone","earpiece","earplugs","earring","earshot","earthen","earthlike","earthling","earthly","earthworm","earthy","earwig","easeful","easel","easiest","easily","easiness","easing","eastbound","eastcoast","easter","eastward","eatable","eaten","eatery","eating","eats","ebay","ebony","ebook","ecard","eccentric","echo","eclair","eclipse","ecologist","ecology","economic","economist","economy","ecosphere","ecosystem","edge","edginess","edging","edgy","edition","editor","educated","education","educator","eel","effective","effects","efficient","effort","eggbeater","egging","eggnog","eggplant","eggshell","egomaniac","egotism","egotistic","either","eject","elaborate","elastic","elated","elbow","eldercare","elderly","eldest","electable","election","elective","elephant","elevate","elevating","elevation","elevator","eleven","elf","eligible","eligibly","eliminate","elite","elitism","elixir","elk","ellipse","elliptic","elm","elongated","elope","eloquence","eloquent","elsewhere","elude","elusive","elves","email","embargo","embark","embassy","embattled","embellish","ember","embezzle","emblaze","emblem","embody","embolism","emboss","embroider","emcee","emerald","emergency","emission","emit","emote","emoticon","emotion","empathic","empathy","emperor","emphases","emphasis","emphasize","emphatic","empirical","employed","employee","employer","emporium","empower","emptier","emptiness","empty","emu","enable","enactment","enamel","enchanted","enchilada","encircle","enclose","enclosure","encode","encore","encounter","encourage","encroach","encrust","encrypt","endanger","endeared","endearing","ended","ending","endless","endnote","endocrine","endorphin","endorse","endowment","endpoint","endurable","endurance","enduring","energetic","energize","energy","enforced","enforcer","engaged","engaging","engine","engorge","engraved","engraver","engraving","engross","engulf","enhance","enigmatic","enjoyable","enjoyably","enjoyer","enjoying","enjoyment","enlarged","enlarging","enlighten","enlisted","enquirer","enrage","enrich","enroll","enslave","ensnare","ensure","entail","entangled","entering","entertain","enticing","entire","entitle","entity","entomb","entourage","entrap","entree","entrench","entrust","entryway","entwine","enunciate","envelope","enviable","enviably","envious","envision","envoy","envy","enzyme","epic","epidemic","epidermal","epidermis","epidural","epilepsy","epileptic","epilogue","epiphany","episode","equal","equate","equation","equator","equinox","equipment","equity","equivocal","eradicate","erasable","erased","eraser","erasure","ergonomic","errand","errant","erratic","error","erupt","escalate","escalator","escapable","escapade","escapist","escargot","eskimo","esophagus","espionage","espresso","esquire","essay","essence","essential","establish","estate","esteemed","estimate","estimator","estranged","estrogen","etching","eternal","eternity","ethanol","ether","ethically","ethics","euphemism","evacuate","evacuee","evade","evaluate","evaluator","evaporate","evasion","evasive","even","everglade","evergreen","everybody","everyday","everyone","evict","evidence","evident","evil","evoke","evolution","evolve","exact","exalted","example","excavate","excavator","exceeding","exception","excess","exchange","excitable","exciting","exclaim","exclude","excluding","exclusion","exclusive","excretion","excretory","excursion","excusable","excusably","excuse","exemplary","exemplify","exemption","exerciser","exert","exes","exfoliate","exhale","exhaust","exhume","exile","existing","exit","exodus","exonerate","exorcism","exorcist","expand","expanse","expansion","expansive","expectant","expedited","expediter","expel","expend","expenses","expensive","expert","expire","expiring","explain","expletive","explicit","explode","exploit","explore","exploring","exponent","exporter","exposable","expose","exposure","express","expulsion","exquisite","extended","extending","extent","extenuate","exterior","external","extinct","extortion","extradite","extras","extrovert","extrude","extruding","exuberant","fable","fabric","fabulous","facebook","facecloth","facedown","faceless","facelift","faceplate","faceted","facial","facility","facing","facsimile","faction","factoid","factor","factsheet","factual","faculty","fade","fading","failing","falcon","fall","false","falsify","fame","familiar","family","famine","famished","fanatic","fancied","fanciness","fancy","fanfare","fang","fanning","fantasize","fantastic","fantasy","fascism","fastball","faster","fasting","fastness","faucet","favorable","favorably","favored","favoring","favorite","fax","feast","federal","fedora","feeble","feed","feel","feisty","feline","felt-tip","feminine","feminism","feminist","feminize","femur","fence","fencing","fender","ferment","fernlike","ferocious","ferocity","ferret","ferris","ferry","fervor","fester","festival","festive","festivity","fetal","fetch","fever","fiber","fiction","fiddle","fiddling","fidelity","fidgeting","fidgety","fifteen","fifth","fiftieth","fifty","figment","figure","figurine","filing","filled","filler","filling","film","filter","filth","filtrate","finale","finalist","finalize","finally","finance","financial","finch","fineness","finer","finicky","finished","finisher","finishing","finite","finless","finlike","fiscally","fit","five","flaccid","flagman","flagpole","flagship","flagstick","flagstone","flail","flakily","flaky","flame","flammable","flanked","flanking","flannels","flap","flaring","flashback","flashbulb","flashcard","flashily","flashing","flashy","flask","flatbed","flatfoot","flatly","flatness","flatten","flattered","flatterer","flattery","flattop","flatware","flatworm","flavored","flavorful","flavoring","flaxseed","fled","fleshed","fleshy","flick","flier","flight","flinch","fling","flint","flip","flirt","float","flock","flogging","flop","floral","florist","floss","flounder","flyable","flyaway","flyer","flying","flyover","flypaper","foam","foe","fog","foil","folic","folk","follicle","follow","fondling","fondly","fondness","fondue","font","food","fool","footage","football","footbath","footboard","footer","footgear","foothill","foothold","footing","footless","footman","footnote","footpad","footpath","footprint","footrest","footsie","footsore","footwear","footwork","fossil","foster","founder","founding","fountain","fox","foyer","fraction","fracture","fragile","fragility","fragment","fragrance","fragrant","frail","frame","framing","frantic","fraternal","frayed","fraying","frays","freckled","freckles","freebase","freebee","freebie","freedom","freefall","freehand","freeing","freeload","freely","freemason","freeness","freestyle","freeware","freeway","freewill","freezable","freezing","freight","french","frenzied","frenzy","frequency","frequent","fresh","fretful","fretted","friction","friday","fridge","fried","friend","frighten","frightful","frigidity","frigidly","frill","fringe","frisbee","frisk","fritter","frivolous","frolic","from","front","frostbite","frosted","frostily","frosting","frostlike","frosty","froth","frown","frozen","fructose","frugality","frugally","fruit","frustrate","frying","gab","gaffe","gag","gainfully","gaining","gains","gala","gallantly","galleria","gallery","galley","gallon","gallows","gallstone","galore","galvanize","gambling","game","gaming","gamma","gander","gangly","gangrene","gangway","gap","garage","garbage","garden","gargle","garland","garlic","garment","garnet","garnish","garter","gas","gatherer","gathering","gating","gauging","gauntlet","gauze","gave","gawk","gazing","gear","gecko","geek","geiger","gem","gender","generic","generous","genetics","genre","gentile","gentleman","gently","gents","geography","geologic","geologist","geology","geometric","geometry","geranium","gerbil","geriatric","germicide","germinate","germless","germproof","gestate","gestation","gesture","getaway","getting","getup","giant","gibberish","giblet","giddily","giddiness","giddy","gift","gigabyte","gigahertz","gigantic","giggle","giggling","giggly","gigolo","gilled","gills","gimmick","girdle","giveaway","given","giver","giving","gizmo","gizzard","glacial","glacier","glade","gladiator","gladly","glamorous","glamour","glance","glancing","glandular","glare","glaring","glass","glaucoma","glazing","gleaming","gleeful","glider","gliding","glimmer","glimpse","glisten","glitch","glitter","glitzy","gloater","gloating","gloomily","gloomy","glorified","glorifier","glorify","glorious","glory","gloss","glove","glowing","glowworm","glucose","glue","gluten","glutinous","glutton","gnarly","gnat","goal","goatskin","goes","goggles","going","goldfish","goldmine","goldsmith","golf","goliath","gonad","gondola","gone","gong","good","gooey","goofball","goofiness","goofy","google","goon","gopher","gore","gorged","gorgeous","gory","gosling","gossip","gothic","gotten","gout","gown","grab","graceful","graceless","gracious","gradation","graded","grader","gradient","grading","gradually","graduate","graffiti","grafted","grafting","grain","granddad","grandkid","grandly","grandma","grandpa","grandson","granite","granny","granola","grant","granular","grape","graph","grapple","grappling","grasp","grass","gratified","gratify","grating","gratitude","gratuity","gravel","graveness","graves","graveyard","gravitate","gravity","gravy","gray","grazing","greasily","greedily","greedless","greedy","green","greeter","greeting","grew","greyhound","grid","grief","grievance","grieving","grievous","grill","grimace","grimacing","grime","griminess","grimy","grinch","grinning","grip","gristle","grit","groggily","groggy","groin","groom","groove","grooving","groovy","grope","ground","grouped","grout","grove","grower","growing","growl","grub","grudge","grudging","grueling","gruffly","grumble","grumbling","grumbly","grumpily","grunge","grunt","guacamole","guidable","guidance","guide","guiding","guileless","guise","gulf","gullible","gully","gulp","gumball","gumdrop","gumminess","gumming","gummy","gurgle","gurgling","guru","gush","gusto","gusty","gutless","guts","gutter","guy","guzzler","gyration","habitable","habitant","habitat","habitual","hacked","hacker","hacking","hacksaw","had","haggler","haiku","half","halogen","halt","halved","halves","hamburger","hamlet","hammock","hamper","hamster","hamstring","handbag","handball","handbook","handbrake","handcart","handclap","handclasp","handcraft","handcuff","handed","handful","handgrip","handgun","handheld","handiness","handiwork","handlebar","handled","handler","handling","handmade","handoff","handpick","handprint","handrail","handsaw","handset","handsfree","handshake","handstand","handwash","handwork","handwoven","handwrite","handyman","hangnail","hangout","hangover","hangup","hankering","hankie","hanky","haphazard","happening","happier","happiest","happily","happiness","happy","harbor","hardcopy","hardcore","hardcover","harddisk","hardened","hardener","hardening","hardhat","hardhead","hardiness","hardly","hardness","hardship","hardware","hardwired","hardwood","hardy","harmful","harmless","harmonica","harmonics","harmonize","harmony","harness","harpist","harsh","harvest","hash","hassle","haste","hastily","hastiness","hasty","hatbox","hatchback","hatchery","hatchet","hatching","hatchling","hate","hatless","hatred","haunt","haven","hazard","hazelnut","hazily","haziness","hazing","hazy","headache","headband","headboard","headcount","headdress","headed","header","headfirst","headgear","heading","headlamp","headless","headlock","headphone","headpiece","headrest","headroom","headscarf","headset","headsman","headstand","headstone","headway","headwear","heap","heat","heave","heavily","heaviness","heaving","hedge","hedging","heftiness","hefty","helium","helmet","helper","helpful","helping","helpless","helpline","hemlock","hemstitch","hence","henchman","henna","herald","herbal","herbicide","herbs","heritage","hermit","heroics","heroism","herring","herself","hertz","hesitancy","hesitant","hesitate","hexagon","hexagram","hubcap","huddle","huddling","huff","hug","hula","hulk","hull","human","humble","humbling","humbly","humid","humiliate","humility","humming","hummus","humongous","humorist","humorless","humorous","humpback","humped","humvee","hunchback","hundredth","hunger","hungrily","hungry","hunk","hunter","hunting","huntress","huntsman","hurdle","hurled","hurler","hurling","hurray","hurricane","hurried","hurry","hurt","husband","hush","husked","huskiness","hut","hybrid","hydrant","hydrated","hydration","hydrogen","hydroxide","hyperlink","hypertext","hyphen","hypnoses","hypnosis","hypnotic","hypnotism","hypnotist","hypnotize","hypocrisy","hypocrite","ibuprofen","ice","iciness","icing","icky","icon","icy","idealism","idealist","idealize","ideally","idealness","identical","identify","identity","ideology","idiocy","idiom","idly","igloo","ignition","ignore","iguana","illicitly","illusion","illusive","image","imaginary","imagines","imaging","imbecile","imitate","imitation","immature","immerse","immersion","imminent","immobile","immodest","immorally","immortal","immovable","immovably","immunity","immunize","impaired","impale","impart","impatient","impeach","impeding","impending","imperfect","imperial","impish","implant","implement","implicate","implicit","implode","implosion","implosive","imply","impolite","important","importer","impose","imposing","impotence","impotency","impotent","impound","imprecise","imprint","imprison","impromptu","improper","improve","improving","improvise","imprudent","impulse","impulsive","impure","impurity","iodine","iodize","ion","ipad","iphone","ipod","irate","irk","iron","irregular","irrigate","irritable","irritably","irritant","irritate","islamic","islamist","isolated","isolating","isolation","isotope","issue","issuing","italicize","italics","item","itinerary","itunes","ivory","ivy","jab","jackal","jacket","jackknife","jackpot","jailbird","jailbreak","jailer","jailhouse","jalapeno","jam","janitor","january","jargon","jarring","jasmine","jaundice","jaunt","java","jawed","jawless","jawline","jaws","jaybird","jaywalker","jazz","jeep","jeeringly","jellied","jelly","jersey","jester","jet","jiffy","jigsaw","jimmy","jingle","jingling","jinx","jitters","jittery","job","jockey","jockstrap","jogger","jogging","john","joining","jokester","jokingly","jolliness","jolly","jolt","jot","jovial","joyfully","joylessly","joyous","joyride","joystick","jubilance","jubilant","judge","judgingly","judicial","judiciary","judo","juggle","juggling","jugular","juice","juiciness","juicy","jujitsu","jukebox","july","jumble","jumbo","jump","junction","juncture","june","junior","juniper","junkie","junkman","junkyard","jurist","juror","jury","justice","justifier","justify","justly","justness","juvenile","kabob","kangaroo","karaoke","karate","karma","kebab","keenly","keenness","keep","keg","kelp","kennel","kept","kerchief","kerosene","kettle","kick","kiln","kilobyte","kilogram","kilometer","kilowatt","kilt","kimono","kindle","kindling","kindly","kindness","kindred","kinetic","kinfolk","king","kinship","kinsman","kinswoman","kissable","kisser","kissing","kitchen","kite","kitten","kitty","kiwi","kleenex","knapsack","knee","knelt","knickers","knoll","koala","kooky","kosher","krypton","kudos","kung","labored","laborer","laboring","laborious","labrador","ladder","ladies","ladle","ladybug","ladylike","lagged","lagging","lagoon","lair","lake","lance","landed","landfall","landfill","landing","landlady","landless","landline","landlord","landmark","landmass","landmine","landowner","landscape","landside","landslide","language","lankiness","lanky","lantern","lapdog","lapel","lapped","lapping","laptop","lard","large","lark","lash","lasso","last","latch","late","lather","latitude","latrine","latter","latticed","launch","launder","laundry","laurel","lavender","lavish","laxative","lazily","laziness","lazy","lecturer","left","legacy","legal","legend","legged","leggings","legible","legibly","legislate","lego","legroom","legume","legwarmer","legwork","lemon","lend","length","lens","lent","leotard","lesser","letdown","lethargic","lethargy","letter","lettuce","level","leverage","levers","levitate","levitator","liability","liable","liberty","librarian","library","licking","licorice","lid","life","lifter","lifting","liftoff","ligament","likely","likeness","likewise","liking","lilac","lilly","lily","limb","limeade","limelight","limes","limit","limping","limpness","line","lingo","linguini","linguist","lining","linked","linoleum","linseed","lint","lion","lip","liquefy","liqueur","liquid","lisp","list","litigate","litigator","litmus","litter","little","livable","lived","lively","liver","livestock","lividly","living","lizard","lubricant","lubricate","lucid","luckily","luckiness","luckless","lucrative","ludicrous","lugged","lukewarm","lullaby","lumber","luminance","luminous","lumpiness","lumping","lumpish","lunacy","lunar","lunchbox","luncheon","lunchroom","lunchtime","lung","lurch","lure","luridness","lurk","lushly","lushness","luster","lustfully","lustily","lustiness","lustrous","lusty","luxurious","luxury","lying","lyrically","lyricism","lyricist","lyrics","macarena","macaroni","macaw","mace","machine","machinist","magazine","magenta","maggot","magical","magician","magma","magnesium","magnetic","magnetism","magnetize","magnifier","magnify","magnitude","magnolia","mahogany","maimed","majestic","majesty","majorette","majority","makeover","maker","makeshift","making","malformed","malt","mama","mammal","mammary","mammogram","manager","managing","manatee","mandarin","mandate","mandatory","mandolin","manger","mangle","mango","mangy","manhandle","manhole","manhood","manhunt","manicotti","manicure","manifesto","manila","mankind","manlike","manliness","manly","manmade","manned","mannish","manor","manpower","mantis","mantra","manual","many","map","marathon","marauding","marbled","marbles","marbling","march","mardi","margarine","margarita","margin","marigold","marina","marine","marital","maritime","marlin","marmalade","maroon","married","marrow","marry","marshland","marshy","marsupial","marvelous","marxism","mascot","masculine","mashed","mashing","massager","masses","massive","mastiff","matador","matchbook","matchbox","matcher","matching","matchless","material","maternal","maternity","math","mating","matriarch","matrimony","matrix","matron","matted","matter","maturely","maturing","maturity","mauve","maverick","maximize","maximum","maybe","mayday","mayflower","moaner","moaning","mobile","mobility","mobilize","mobster","mocha","mocker","mockup","modified","modify","modular","modulator","module","moisten","moistness","moisture","molar","molasses","mold","molecular","molecule","molehill","mollusk","mom","monastery","monday","monetary","monetize","moneybags","moneyless","moneywise","mongoose","mongrel","monitor","monkhood","monogamy","monogram","monologue","monopoly","monorail","monotone","monotype","monoxide","monsieur","monsoon","monstrous","monthly","monument","moocher","moodiness","moody","mooing","moonbeam","mooned","moonlight","moonlike","moonlit","moonrise","moonscape","moonshine","moonstone","moonwalk","mop","morale","morality","morally","morbidity","morbidly","morphine","morphing","morse","mortality","mortally","mortician","mortified","mortify","mortuary","mosaic","mossy","most","mothball","mothproof","motion","motivate","motivator","motive","motocross","motor","motto","mountable","mountain","mounted","mounting","mourner","mournful","mouse","mousiness","moustache","mousy","mouth","movable","move","movie","moving","mower","mowing","much","muck","mud","mug","mulberry","mulch","mule","mulled","mullets","multiple","multiply","multitask","multitude","mumble","mumbling","mumbo","mummified","mummify","mummy","mumps","munchkin","mundane","municipal","muppet","mural","murkiness","murky","murmuring","muscular","museum","mushily","mushiness","mushroom","mushy","music","musket","muskiness","musky","mustang","mustard","muster","mustiness","musty","mutable","mutate","mutation","mute","mutilated","mutilator","mutiny","mutt","mutual","muzzle","myself","myspace","mystified","mystify","myth","nacho","nag","nail","name","naming","nanny","nanometer","nape","napkin","napped","napping","nappy","narrow","nastily","nastiness","national","native","nativity","natural","nature","naturist","nautical","navigate","navigator","navy","nearby","nearest","nearly","nearness","neatly","neatness","nebula","nebulizer","nectar","negate","negation","negative","neglector","negligee","negligent","negotiate","nemeses","nemesis","neon","nephew","nerd","nervous","nervy","nest","net","neurology","neuron","neurosis","neurotic","neuter","neutron","never","next","nibble","nickname","nicotine","niece","nifty","nimble","nimbly","nineteen","ninetieth","ninja","nintendo","ninth","nuclear","nuclei","nucleus","nugget","nullify","number","numbing","numbly","numbness","numeral","numerate","numerator","numeric","numerous","nuptials","nursery","nursing","nurture","nutcase","nutlike","nutmeg","nutrient","nutshell","nuttiness","nutty","nuzzle","nylon","oaf","oak","oasis","oat","obedience","obedient","obituary","object","obligate","obliged","oblivion","oblivious","oblong","obnoxious","oboe","obscure","obscurity","observant","observer","observing","obsessed","obsession","obsessive","obsolete","obstacle","obstinate","obstruct","obtain","obtrusive","obtuse","obvious","occultist","occupancy","occupant","occupier","occupy","ocean","ocelot","octagon","octane","october","octopus","ogle","oil","oink","ointment","okay","old","olive","olympics","omega","omen","ominous","omission","omit","omnivore","onboard","oncoming","ongoing","onion","online","onlooker","only","onscreen","onset","onshore","onslaught","onstage","onto","onward","onyx","oops","ooze","oozy","opacity","opal","open","operable","operate","operating","operation","operative","operator","opium","opossum","opponent","oppose","opposing","opposite","oppressed","oppressor","opt","opulently","osmosis","other","otter","ouch","ought","ounce","outage","outback","outbid","outboard","outbound","outbreak","outburst","outcast","outclass","outcome","outdated","outdoors","outer","outfield","outfit","outflank","outgoing","outgrow","outhouse","outing","outlast","outlet","outline","outlook","outlying","outmatch","outmost","outnumber","outplayed","outpost","outpour","output","outrage","outrank","outreach","outright","outscore","outsell","outshine","outshoot","outsider","outskirts","outsmart","outsource","outspoken","outtakes","outthink","outward","outweigh","outwit","oval","ovary","oven","overact","overall","overarch","overbid","overbill","overbite","overblown","overboard","overbook","overbuilt","overcast","overcoat","overcome","overcook","overcrowd","overdraft","overdrawn","overdress","overdrive","overdue","overeager","overeater","overexert","overfed","overfeed","overfill","overflow","overfull","overgrown","overhand","overhang","overhaul","overhead","overhear","overheat","overhung","overjoyed","overkill","overlabor","overlaid","overlap","overlay","overload","overlook","overlord","overlying","overnight","overpass","overpay","overplant","overplay","overpower","overprice","overrate","overreach","overreact","override","overripe","overrule","overrun","overshoot","overshot","oversight","oversized","oversleep","oversold","overspend","overstate","overstay","overstep","overstock","overstuff","oversweet","overtake","overthrow","overtime","overtly","overtone","overture","overturn","overuse","overvalue","overview","overwrite","owl","oxford","oxidant","oxidation","oxidize","oxidizing","oxygen","oxymoron","oyster","ozone","paced","pacemaker","pacific","pacifier","pacifism","pacifist","pacify","padded","padding","paddle","paddling","padlock","pagan","pager","paging","pajamas","palace","palatable","palm","palpable","palpitate","paltry","pampered","pamperer","pampers","pamphlet","panama","pancake","pancreas","panda","pandemic","pang","panhandle","panic","panning","panorama","panoramic","panther","pantomime","pantry","pants","pantyhose","paparazzi","papaya","paper","paprika","papyrus","parabola","parachute","parade","paradox","paragraph","parakeet","paralegal","paralyses","paralysis","paralyze","paramedic","parameter","paramount","parasail","parasite","parasitic","parcel","parched","parchment","pardon","parish","parka","parking","parkway","parlor","parmesan","parole","parrot","parsley","parsnip","partake","parted","parting","partition","partly","partner","partridge","party","passable","passably","passage","passcode","passenger","passerby","passing","passion","passive","passivism","passover","passport","password","pasta","pasted","pastel","pastime","pastor","pastrami","pasture","pasty","patchwork","patchy","paternal","paternity","path","patience","patient","patio","patriarch","patriot","patrol","patronage","patronize","pauper","pavement","paver","pavestone","pavilion","paving","pawing","payable","payback","paycheck","payday","payee","payer","paying","payment","payphone","payroll","pebble","pebbly","pecan","pectin","peculiar","peddling","pediatric","pedicure","pedigree","pedometer","pegboard","pelican","pellet","pelt","pelvis","penalize","penalty","pencil","pendant","pending","penholder","penknife","pennant","penniless","penny","penpal","pension","pentagon","pentagram","pep","perceive","percent","perch","percolate","perennial","perfected","perfectly","perfume","periscope","perish","perjurer","perjury","perkiness","perky","perm","peroxide","perpetual","perplexed","persecute","persevere","persuaded","persuader","pesky","peso","pessimism","pessimist","pester","pesticide","petal","petite","petition","petri","petroleum","petted","petticoat","pettiness","petty","petunia","phantom","phobia","phoenix","phonebook","phoney","phonics","phoniness","phony","phosphate","photo","phrase","phrasing","placard","placate","placidly","plank","planner","plant","plasma","plaster","plastic","plated","platform","plating","platinum","platonic","platter","platypus","plausible","plausibly","playable","playback","player","playful","playgroup","playhouse","playing","playlist","playmaker","playmate","playoff","playpen","playroom","playset","plaything","playtime","plaza","pleading","pleat","pledge","plentiful","plenty","plethora","plexiglas","pliable","plod","plop","plot","plow","ploy","pluck","plug","plunder","plunging","plural","plus","plutonium","plywood","poach","pod","poem","poet","pogo","pointed","pointer","pointing","pointless","pointy","poise","poison","poker","poking","polar","police","policy","polio","polish","politely","polka","polo","polyester","polygon","polygraph","polymer","poncho","pond","pony","popcorn","pope","poplar","popper","poppy","popsicle","populace","popular","populate","porcupine","pork","porous","porridge","portable","portal","portfolio","porthole","portion","portly","portside","poser","posh","posing","possible","possibly","possum","postage","postal","postbox","postcard","posted","poster","posting","postnasal","posture","postwar","pouch","pounce","pouncing","pound","pouring","pout","powdered","powdering","powdery","power","powwow","pox","praising","prance","prancing","pranker","prankish","prankster","prayer","praying","preacher","preaching","preachy","preamble","precinct","precise","precision","precook","precut","predator","predefine","predict","preface","prefix","preflight","preformed","pregame","pregnancy","pregnant","preheated","prelaunch","prelaw","prelude","premiere","premises","premium","prenatal","preoccupy","preorder","prepaid","prepay","preplan","preppy","preschool","prescribe","preseason","preset","preshow","president","presoak","press","presume","presuming","preteen","pretended","pretender","pretense","pretext","pretty","pretzel","prevail","prevalent","prevent","preview","previous","prewar","prewashed","prideful","pried","primal","primarily","primary","primate","primer","primp","princess","print","prior","prism","prison","prissy","pristine","privacy","private","privatize","prize","proactive","probable","probably","probation","probe","probing","probiotic","problem","procedure","process","proclaim","procreate","procurer","prodigal","prodigy","produce","product","profane","profanity","professed","professor","profile","profound","profusely","progeny","prognosis","program","progress","projector","prologue","prolonged","promenade","prominent","promoter","promotion","prompter","promptly","prone","prong","pronounce","pronto","proofing","proofread","proofs","propeller","properly","property","proponent","proposal","propose","props","prorate","protector","protegee","proton","prototype","protozoan","protract","protrude","proud","provable","proved","proven","provided","provider","providing","province","proving","provoke","provoking","provolone","prowess","prowler","prowling","proximity","proxy","prozac","prude","prudishly","prune","pruning","pry","psychic","public","publisher","pucker","pueblo","pug","pull","pulmonary","pulp","pulsate","pulse","pulverize","puma","pumice","pummel","punch","punctual","punctuate","punctured","pungent","punisher","punk","pupil","puppet","puppy","purchase","pureblood","purebred","purely","pureness","purgatory","purge","purging","purifier","purify","purist","puritan","purity","purple","purplish","purposely","purr","purse","pursuable","pursuant","pursuit","purveyor","pushcart","pushchair","pusher","pushiness","pushing","pushover","pushpin","pushup","pushy","putdown","putt","puzzle","puzzling","pyramid","pyromania","python","quack","quadrant","quail","quaintly","quake","quaking","qualified","qualifier","qualify","quality","qualm","quantum","quarrel","quarry","quartered","quarterly","quarters","quartet","quench","query","quicken","quickly","quickness","quicksand","quickstep","quiet","quill","quilt","quintet","quintuple","quirk","quit","quiver","quizzical","quotable","quotation","quote","rabid","race","racing","racism","rack","racoon","radar","radial","radiance","radiantly","radiated","radiation","radiator","radio","radish","raffle","raft","rage","ragged","raging","ragweed","raider","railcar","railing","railroad","railway","raisin","rake","raking","rally","ramble","rambling","ramp","ramrod","ranch","rancidity","random","ranged","ranger","ranging","ranked","ranking","ransack","ranting","rants","rare","rarity","rascal","rash","rasping","ravage","raven","ravine","raving","ravioli","ravishing","reabsorb","reach","reacquire","reaction","reactive","reactor","reaffirm","ream","reanalyze","reappear","reapply","reappoint","reapprove","rearrange","rearview","reason","reassign","reassure","reattach","reawake","rebalance","rebate","rebel","rebirth","reboot","reborn","rebound","rebuff","rebuild","rebuilt","reburial","rebuttal","recall","recant","recapture","recast","recede","recent","recess","recharger","recipient","recital","recite","reckless","reclaim","recliner","reclining","recluse","reclusive","recognize","recoil","recollect","recolor","reconcile","reconfirm","reconvene","recopy","record","recount","recoup","recovery","recreate","rectal","rectangle","rectified","rectify","recycled","recycler","recycling","reemerge","reenact","reenter","reentry","reexamine","referable","referee","reference","refill","refinance","refined","refinery","refining","refinish","reflected","reflector","reflex","reflux","refocus","refold","reforest","reformat","reformed","reformer","reformist","refract","refrain","refreeze","refresh","refried","refueling","refund","refurbish","refurnish","refusal","refuse","refusing","refutable","refute","regain","regalia","regally","reggae","regime","region","register","registrar","registry","regress","regretful","regroup","regular","regulate","regulator","rehab","reheat","rehire","rehydrate","reimburse","reissue","reiterate","rejoice","rejoicing","rejoin","rekindle","relapse","relapsing","relatable","related","relation","relative","relax","relay","relearn","release","relenting","reliable","reliably","reliance","reliant","relic","relieve","relieving","relight","relish","relive","reload","relocate","relock","reluctant","rely","remake","remark","remarry","rematch","remedial","remedy","remember","reminder","remindful","remission","remix","remnant","remodeler","remold","remorse","remote","removable","removal","removed","remover","removing","rename","renderer","rendering","rendition","renegade","renewable","renewably","renewal","renewed","renounce","renovate","renovator","rentable","rental","rented","renter","reoccupy","reoccur","reopen","reorder","repackage","repacking","repaint","repair","repave","repaying","repayment","repeal","repeated","repeater","repent","rephrase","replace","replay","replica","reply","reporter","repose","repossess","repost","repressed","reprimand","reprint","reprise","reproach","reprocess","reproduce","reprogram","reps","reptile","reptilian","repugnant","repulsion","repulsive","repurpose","reputable","reputably","request","require","requisite","reroute","rerun","resale","resample","rescuer","reseal","research","reselect","reseller","resemble","resend","resent","reset","reshape","reshoot","reshuffle","residence","residency","resident","residual","residue","resigned","resilient","resistant","resisting","resize","resolute","resolved","resonant","resonate","resort","resource","respect","resubmit","result","resume","resupply","resurface","resurrect","retail","retainer","retaining","retake","retaliate","retention","rethink","retinal","retired","retiree","retiring","retold","retool","retorted","retouch","retrace","retract","retrain","retread","retreat","retrial","retrieval","retriever","retry","return","retying","retype","reunion","reunite","reusable","reuse","reveal","reveler","revenge","revenue","reverb","revered","reverence","reverend","reversal","reverse","reversing","reversion","revert","revisable","revise","revision","revisit","revivable","revival","reviver","reviving","revocable","revoke","revolt","revolver","revolving","reward","rewash","rewind","rewire","reword","rework","rewrap","rewrite","rhyme","ribbon","ribcage","rice","riches","richly","richness","rickety","ricotta","riddance","ridden","ride","riding","rifling","rift","rigging","rigid","rigor","rimless","rimmed","rind","rink","rinse","rinsing","riot","ripcord","ripeness","ripening","ripping","ripple","rippling","riptide","rise","rising","risk","risotto","ritalin","ritzy","rival","riverbank","riverbed","riverboat","riverside","riveter","riveting","roamer","roaming","roast","robbing","robe","robin","robotics","robust","rockband","rocker","rocket","rockfish","rockiness","rocking","rocklike","rockslide","rockstar","rocky","rogue","roman","romp","rope","roping","roster","rosy","rotten","rotting","rotunda","roulette","rounding","roundish","roundness","roundup","roundworm","routine","routing","rover","roving","royal","rubbed","rubber","rubbing","rubble","rubdown","ruby","ruckus","rudder","rug","ruined","rule","rumble","rumbling","rummage","rumor","runaround","rundown","runner","running","runny","runt","runway","rupture","rural","ruse","rush","rust","rut","sabbath","sabotage","sacrament","sacred","sacrifice","sadden","saddlebag","saddled","saddling","sadly","sadness","safari","safeguard","safehouse","safely","safeness","saffron","saga","sage","sagging","saggy","said","saint","sake","salad","salami","salaried","salary","saline","salon","saloon","salsa","salt","salutary","salute","salvage","salvaging","salvation","same","sample","sampling","sanction","sanctity","sanctuary","sandal","sandbag","sandbank","sandbar","sandblast","sandbox","sanded","sandfish","sanding","sandlot","sandpaper","sandpit","sandstone","sandstorm","sandworm","sandy","sanitary","sanitizer","sank","santa","sapling","sappiness","sappy","sarcasm","sarcastic","sardine","sash","sasquatch","sassy","satchel","satiable","satin","satirical","satisfied","satisfy","saturate","saturday","sauciness","saucy","sauna","savage","savanna","saved","savings","savior","savor","saxophone","say","scabbed","scabby","scalded","scalding","scale","scaling","scallion","scallop","scalping","scam","scandal","scanner","scanning","scant","scapegoat","scarce","scarcity","scarecrow","scared","scarf","scarily","scariness","scarring","scary","scavenger","scenic","schedule","schematic","scheme","scheming","schilling","schnapps","scholar","science","scientist","scion","scoff","scolding","scone","scoop","scooter","scope","scorch","scorebook","scorecard","scored","scoreless","scorer","scoring","scorn","scorpion","scotch","scoundrel","scoured","scouring","scouting","scouts","scowling","scrabble","scraggly","scrambled","scrambler","scrap","scratch","scrawny","screen","scribble","scribe","scribing","scrimmage","script","scroll","scrooge","scrounger","scrubbed","scrubber","scruffy","scrunch","scrutiny","scuba","scuff","sculptor","sculpture","scurvy","scuttle","secluded","secluding","seclusion","second","secrecy","secret","sectional","sector","secular","securely","security","sedan","sedate","sedation","sedative","sediment","seduce","seducing","segment","seismic","seizing","seldom","selected","selection","selective","selector","self","seltzer","semantic","semester","semicolon","semifinal","seminar","semisoft","semisweet","senate","senator","send","senior","senorita","sensation","sensitive","sensitize","sensually","sensuous","sepia","september","septic","septum","sequel","sequence","sequester","series","sermon","serotonin","serpent","serrated","serve","service","serving","sesame","sessions","setback","setting","settle","settling","setup","sevenfold","seventeen","seventh","seventy","severity","shabby","shack","shaded","shadily","shadiness","shading","shadow","shady","shaft","shakable","shakily","shakiness","shaking","shaky","shale","shallot","shallow","shame","shampoo","shamrock","shank","shanty","shape","shaping","share","sharpener","sharper","sharpie","sharply","sharpness","shawl","sheath","shed","sheep","sheet","shelf","shell","shelter","shelve","shelving","sherry","shield","shifter","shifting","shiftless","shifty","shimmer","shimmy","shindig","shine","shingle","shininess","shining","shiny","ship","shirt","shivering","shock","shone","shoplift","shopper","shopping","shoptalk","shore","shortage","shortcake","shortcut","shorten","shorter","shorthand","shortlist","shortly","shortness","shorts","shortwave","shorty","shout","shove","showbiz","showcase","showdown","shower","showgirl","showing","showman","shown","showoff","showpiece","showplace","showroom","showy","shrank","shrapnel","shredder","shredding","shrewdly","shriek","shrill","shrimp","shrine","shrink","shrivel","shrouded","shrubbery","shrubs","shrug","shrunk","shucking","shudder","shuffle","shuffling","shun","shush","shut","shy","siamese","siberian","sibling","siding","sierra","siesta","sift","sighing","silenced","silencer","silent","silica","silicon","silk","silliness","silly","silo","silt","silver","similarly","simile","simmering","simple","simplify","simply","sincere","sincerity","singer","singing","single","singular","sinister","sinless","sinner","sinuous","sip","siren","sister","sitcom","sitter","sitting","situated","situation","sixfold","sixteen","sixth","sixties","sixtieth","sixtyfold","sizable","sizably","size","sizing","sizzle","sizzling","skater","skating","skedaddle","skeletal","skeleton","skeptic","sketch","skewed","skewer","skid","skied","skier","skies","skiing","skilled","skillet","skillful","skimmed","skimmer","skimming","skimpily","skincare","skinhead","skinless","skinning","skinny","skintight","skipper","skipping","skirmish","skirt","skittle","skydiver","skylight","skyline","skype","skyrocket","skyward","slab","slacked","slacker","slacking","slackness","slacks","slain","slam","slander","slang","slapping","slapstick","slashed","slashing","slate","slather","slaw","sled","sleek","sleep","sleet","sleeve","slept","sliceable","sliced","slicer","slicing","slick","slider","slideshow","sliding","slighted","slighting","slightly","slimness","slimy","slinging","slingshot","slinky","slip","slit","sliver","slobbery","slogan","sloped","sloping","sloppily","sloppy","slot","slouching","slouchy","sludge","slug","slum","slurp","slush","sly","small","smartly","smartness","smasher","smashing","smashup","smell","smelting","smile","smilingly","smirk","smite","smith","smitten","smock","smog","smoked","smokeless","smokiness","smoking","smoky","smolder","smooth","smother","smudge","smudgy","smuggler","smuggling","smugly","smugness","snack","snagged","snaking","snap","snare","snarl","snazzy","sneak","sneer","sneeze","sneezing","snide","sniff","snippet","snipping","snitch","snooper","snooze","snore","snoring","snorkel","snort","snout","snowbird","snowboard","snowbound","snowcap","snowdrift","snowdrop","snowfall","snowfield","snowflake","snowiness","snowless","snowman","snowplow","snowshoe","snowstorm","snowsuit","snowy","snub","snuff","snuggle","snugly","snugness","speak","spearfish","spearhead","spearman","spearmint","species","specimen","specked","speckled","specks","spectacle","spectator","spectrum","speculate","speech","speed","spellbind","speller","spelling","spendable","spender","spending","spent","spew","sphere","spherical","sphinx","spider","spied","spiffy","spill","spilt","spinach","spinal","spindle","spinner","spinning","spinout","spinster","spiny","spiral","spirited","spiritism","spirits","spiritual","splashed","splashing","splashy","splatter","spleen","splendid","splendor","splice","splicing","splinter","splotchy","splurge","spoilage","spoiled","spoiler","spoiling","spoils","spoken","spokesman","sponge","spongy","sponsor","spoof","spookily","spooky","spool","spoon","spore","sporting","sports","sporty","spotless","spotlight","spotted","spotter","spotting","spotty","spousal","spouse","spout","sprain","sprang","sprawl","spray","spree","sprig","spring","sprinkled","sprinkler","sprint","sprite","sprout","spruce","sprung","spry","spud","spur","sputter","spyglass","squabble","squad","squall","squander","squash","squatted","squatter","squatting","squeak","squealer","squealing","squeamish","squeegee","squeeze","squeezing","squid","squiggle","squiggly","squint","squire","squirt","squishier","squishy","stability","stabilize","stable","stack","stadium","staff","stage","staging","stagnant","stagnate","stainable","stained","staining","stainless","stalemate","staleness","stalling","stallion","stamina","stammer","stamp","stand","stank","staple","stapling","starboard","starch","stardom","stardust","starfish","stargazer","staring","stark","starless","starlet","starlight","starlit","starring","starry","starship","starter","starting","startle","startling","startup","starved","starving","stash","state","static","statistic","statue","stature","status","statute","statutory","staunch","stays","steadfast","steadier","steadily","steadying","steam","steed","steep","steerable","steering","steersman","stegosaur","stellar","stem","stench","stencil","step","stereo","sterile","sterility","sterilize","sterling","sternness","sternum","stew","stick","stiffen","stiffly","stiffness","stifle","stifling","stillness","stilt","stimulant","stimulate","stimuli","stimulus","stinger","stingily","stinging","stingray","stingy","stinking","stinky","stipend","stipulate","stir","stitch","stock","stoic","stoke","stole","stomp","stonewall","stoneware","stonework","stoning","stony","stood","stooge","stool","stoop","stoplight","stoppable","stoppage","stopped","stopper","stopping","stopwatch","storable","storage","storeroom","storewide","storm","stout","stove","stowaway","stowing","straddle","straggler","strained","strainer","straining","strangely","stranger","strangle","strategic","strategy","stratus","straw","stray","streak","stream","street","strength","strenuous","strep","stress","stretch","strewn","stricken","strict","stride","strife","strike","striking","strive","striving","strobe","strode","stroller","strongbox","strongly","strongman","struck","structure","strudel","struggle","strum","strung","strut","stubbed","stubble","stubbly","stubborn","stucco","stuck","student","studied","studio","study","stuffed","stuffing","stuffy","stumble","stumbling","stump","stung","stunned","stunner","stunning","stunt","stupor","sturdily","sturdy","styling","stylishly","stylist","stylized","stylus","suave","subarctic","subatomic","subdivide","subdued","subduing","subfloor","subgroup","subheader","subject","sublease","sublet","sublevel","sublime","submarine","submerge","submersed","submitter","subpanel","subpar","subplot","subprime","subscribe","subscript","subsector","subside","subsiding","subsidize","subsidy","subsoil","subsonic","substance","subsystem","subtext","subtitle","subtly","subtotal","subtract","subtype","suburb","subway","subwoofer","subzero","succulent","such","suction","sudden","sudoku","suds","sufferer","suffering","suffice","suffix","suffocate","suffrage","sugar","suggest","suing","suitable","suitably","suitcase","suitor","sulfate","sulfide","sulfite","sulfur","sulk","sullen","sulphate","sulphuric","sultry","superbowl","superglue","superhero","superior","superjet","superman","supermom","supernova","supervise","supper","supplier","supply","support","supremacy","supreme","surcharge","surely","sureness","surface","surfacing","surfboard","surfer","surgery","surgical","surging","surname","surpass","surplus","surprise","surreal","surrender","surrogate","surround","survey","survival","survive","surviving","survivor","sushi","suspect","suspend","suspense","sustained","sustainer","swab","swaddling","swagger","swampland","swan","swapping","swarm","sway","swear","sweat","sweep","swell","swept","swerve","swifter","swiftly","swiftness","swimmable","swimmer","swimming","swimsuit","swimwear","swinger","swinging","swipe","swirl","switch","swivel","swizzle","swooned","swoop","swoosh","swore","sworn","swung","sycamore","sympathy","symphonic","symphony","symptom","synapse","syndrome","synergy","synopses","synopsis","synthesis","synthetic","syrup","system","t-shirt","tabasco","tabby","tableful","tables","tablet","tableware","tabloid","tackiness","tacking","tackle","tackling","tacky","taco","tactful","tactical","tactics","tactile","tactless","tadpole","taekwondo","tag","tainted","take","taking","talcum","talisman","tall","talon","tamale","tameness","tamer","tamper","tank","tanned","tannery","tanning","tantrum","tapeless","tapered","tapering","tapestry","tapioca","tapping","taps","tarantula","target","tarmac","tarnish","tarot","tartar","tartly","tartness","task","tassel","taste","tastiness","tasting","tasty","tattered","tattle","tattling","tattoo","taunt","tavern","thank","that","thaw","theater","theatrics","thee","theft","theme","theology","theorize","thermal","thermos","thesaurus","these","thesis","thespian","thicken","thicket","thickness","thieving","thievish","thigh","thimble","thing","think","thinly","thinner","thinness","thinning","thirstily","thirsting","thirsty","thirteen","thirty","thong","thorn","those","thousand","thrash","thread","threaten","threefold","thrift","thrill","thrive","thriving","throat","throbbing","throng","throttle","throwaway","throwback","thrower","throwing","thud","thumb","thumping","thursday","thus","thwarting","thyself","tiara","tibia","tidal","tidbit","tidiness","tidings","tidy","tiger","tighten","tightly","tightness","tightrope","tightwad","tigress","tile","tiling","till","tilt","timid","timing","timothy","tinderbox","tinfoil","tingle","tingling","tingly","tinker","tinkling","tinsel","tinsmith","tint","tinwork","tiny","tipoff","tipped","tipper","tipping","tiptoeing","tiptop","tiring","tissue","trace","tracing","track","traction","tractor","trade","trading","tradition","traffic","tragedy","trailing","trailside","train","traitor","trance","tranquil","transfer","transform","translate","transpire","transport","transpose","trapdoor","trapeze","trapezoid","trapped","trapper","trapping","traps","trash","travel","traverse","travesty","tray","treachery","treading","treadmill","treason","treat","treble","tree","trekker","tremble","trembling","tremor","trench","trend","trespass","triage","trial","triangle","tribesman","tribunal","tribune","tributary","tribute","triceps","trickery","trickily","tricking","trickle","trickster","tricky","tricolor","tricycle","trident","tried","trifle","trifocals","trillion","trilogy","trimester","trimmer","trimming","trimness","trinity","trio","tripod","tripping","triumph","trivial","trodden","trolling","trombone","trophy","tropical","tropics","trouble","troubling","trough","trousers","trout","trowel","truce","truck","truffle","trump","trunks","trustable","trustee","trustful","trusting","trustless","truth","try","tubby","tubeless","tubular","tucking","tuesday","tug","tuition","tulip","tumble","tumbling","tummy","turban","turbine","turbofan","turbojet","turbulent","turf","turkey","turmoil","turret","turtle","tusk","tutor","tutu","tux","tweak","tweed","tweet","tweezers","twelve","twentieth","twenty","twerp","twice","twiddle","twiddling","twig","twilight","twine","twins","twirl","twistable","twisted","twister","twisting","twisty","twitch","twitter","tycoon","tying","tyke","udder","ultimate","ultimatum","ultra","umbilical","umbrella","umpire","unabashed","unable","unadorned","unadvised","unafraid","unaired","unaligned","unaltered","unarmored","unashamed","unaudited","unawake","unaware","unbaked","unbalance","unbeaten","unbend","unbent","unbiased","unbitten","unblended","unblessed","unblock","unbolted","unbounded","unboxed","unbraided","unbridle","unbroken","unbuckled","unbundle","unburned","unbutton","uncanny","uncapped","uncaring","uncertain","unchain","unchanged","uncharted","uncheck","uncivil","unclad","unclaimed","unclamped","unclasp","uncle","unclip","uncloak","unclog","unclothed","uncoated","uncoiled","uncolored","uncombed","uncommon","uncooked","uncork","uncorrupt","uncounted","uncouple","uncouth","uncover","uncross","uncrown","uncrushed","uncured","uncurious","uncurled","uncut","undamaged","undated","undaunted","undead","undecided","undefined","underage","underarm","undercoat","undercook","undercut","underdog","underdone","underfed","underfeed","underfoot","undergo","undergrad","underhand","underline","underling","undermine","undermost","underpaid","underpass","underpay","underrate","undertake","undertone","undertook","undertow","underuse","underwear","underwent","underwire","undesired","undiluted","undivided","undocked","undoing","undone","undrafted","undress","undrilled","undusted","undying","unearned","unearth","unease","uneasily","uneasy","uneatable","uneaten","unedited","unelected","unending","unengaged","unenvied","unequal","unethical","uneven","unexpired","unexposed","unfailing","unfair","unfasten","unfazed","unfeeling","unfiled","unfilled","unfitted","unfitting","unfixable","unfixed","unflawed","unfocused","unfold","unfounded","unframed","unfreeze","unfrosted","unfrozen","unfunded","unglazed","ungloved","unglue","ungodly","ungraded","ungreased","unguarded","unguided","unhappily","unhappy","unharmed","unhealthy","unheard","unhearing","unheated","unhelpful","unhidden","unhinge","unhitched","unholy","unhook","unicorn","unicycle","unified","unifier","uniformed","uniformly","unify","unimpeded","uninjured","uninstall","uninsured","uninvited","union","uniquely","unisexual","unison","unissued","unit","universal","universe","unjustly","unkempt","unkind","unknotted","unknowing","unknown","unlaced","unlatch","unlawful","unleaded","unlearned","unleash","unless","unleveled","unlighted","unlikable","unlimited","unlined","unlinked","unlisted","unlit","unlivable","unloaded","unloader","unlocked","unlocking","unlovable","unloved","unlovely","unloving","unluckily","unlucky","unmade","unmanaged","unmanned","unmapped","unmarked","unmasked","unmasking","unmatched","unmindful","unmixable","unmixed","unmolded","unmoral","unmovable","unmoved","unmoving","unnamable","unnamed","unnatural","unneeded","unnerve","unnerving","unnoticed","unopened","unopposed","unpack","unpadded","unpaid","unpainted","unpaired","unpaved","unpeeled","unpicked","unpiloted","unpinned","unplanned","unplanted","unpleased","unpledged","unplowed","unplug","unpopular","unproven","unquote","unranked","unrated","unraveled","unreached","unread","unreal","unreeling","unrefined","unrelated","unrented","unrest","unretired","unrevised","unrigged","unripe","unrivaled","unroasted","unrobed","unroll","unruffled","unruly","unrushed","unsaddle","unsafe","unsaid","unsalted","unsaved","unsavory","unscathed","unscented","unscrew","unsealed","unseated","unsecured","unseeing","unseemly","unseen","unselect","unselfish","unsent","unsettled","unshackle","unshaken","unshaved","unshaven","unsheathe","unshipped","unsightly","unsigned","unskilled","unsliced","unsmooth","unsnap","unsocial","unsoiled","unsold","unsolved","unsorted","unspoiled","unspoken","unstable","unstaffed","unstamped","unsteady","unsterile","unstirred","unstitch","unstopped","unstuck","unstuffed","unstylish","unsubtle","unsubtly","unsuited","unsure","unsworn","untagged","untainted","untaken","untamed","untangled","untapped","untaxed","unthawed","unthread","untidy","untie","until","untimed","untimely","untitled","untoasted","untold","untouched","untracked","untrained","untreated","untried","untrimmed","untrue","untruth","unturned","untwist","untying","unusable","unused","unusual","unvalued","unvaried","unvarying","unveiled","unveiling","unvented","unviable","unvisited","unvocal","unwanted","unwarlike","unwary","unwashed","unwatched","unweave","unwed","unwelcome","unwell","unwieldy","unwilling","unwind","unwired","unwitting","unwomanly","unworldly","unworn","unworried","unworthy","unwound","unwoven","unwrapped","unwritten","unzip","upbeat","upchuck","upcoming","upcountry","update","upfront","upgrade","upheaval","upheld","uphill","uphold","uplifted","uplifting","upload","upon","upper","upright","uprising","upriver","uproar","uproot","upscale","upside","upstage","upstairs","upstart","upstate","upstream","upstroke","upswing","uptake","uptight","uptown","upturned","upward","upwind","uranium","urban","urchin","urethane","urgency","urgent","urging","urologist","urology","usable","usage","useable","used","uselessly","user","usher","usual","utensil","utility","utilize","utmost","utopia","utter","vacancy","vacant","vacate","vacation","vagabond","vagrancy","vagrantly","vaguely","vagueness","valiant","valid","valium","valley","valuables","value","vanilla","vanish","vanity","vanquish","vantage","vaporizer","variable","variably","varied","variety","various","varmint","varnish","varsity","varying","vascular","vaseline","vastly","vastness","veal","vegan","veggie","vehicular","velcro","velocity","velvet","vendetta","vending","vendor","veneering","vengeful","venomous","ventricle","venture","venue","venus","verbalize","verbally","verbose","verdict","verify","verse","version","versus","vertebrae","vertical","vertigo","very","vessel","vest","veteran","veto","vexingly","viability","viable","vibes","vice","vicinity","victory","video","viewable","viewer","viewing","viewless","viewpoint","vigorous","village","villain","vindicate","vineyard","vintage","violate","violation","violator","violet","violin","viper","viral","virtual","virtuous","virus","visa","viscosity","viscous","viselike","visible","visibly","vision","visiting","visitor","visor","vista","vitality","vitalize","vitally","vitamins","vivacious","vividly","vividness","vixen","vocalist","vocalize","vocally","vocation","voice","voicing","void","volatile","volley","voltage","volumes","voter","voting","voucher","vowed","vowel","voyage","wackiness","wad","wafer","waffle","waged","wager","wages","waggle","wagon","wake","waking","walk","walmart","walnut","walrus","waltz","wand","wannabe","wanted","wanting","wasabi","washable","washbasin","washboard","washbowl","washcloth","washday","washed","washer","washhouse","washing","washout","washroom","washstand","washtub","wasp","wasting","watch","water","waviness","waving","wavy","whacking","whacky","wham","wharf","wheat","whenever","whiff","whimsical","whinny","whiny","whisking","whoever","whole","whomever","whoopee","whooping","whoops","why","wick","widely","widen","widget","widow","width","wieldable","wielder","wife","wifi","wikipedia","wildcard","wildcat","wilder","wildfire","wildfowl","wildland","wildlife","wildly","wildness","willed","willfully","willing","willow","willpower","wilt","wimp","wince","wincing","wind","wing","winking","winner","winnings","winter","wipe","wired","wireless","wiring","wiry","wisdom","wise","wish","wisplike","wispy","wistful","wizard","wobble","wobbling","wobbly","wok","wolf","wolverine","womanhood","womankind","womanless","womanlike","womanly","womb","woof","wooing","wool","woozy","word","work","worried","worrier","worrisome","worry","worsening","worshiper","worst","wound","woven","wow","wrangle","wrath","wreath","wreckage","wrecker","wrecking","wrench","wriggle","wriggly","wrinkle","wrinkly","wrist","writing","written","wrongdoer","wronged","wrongful","wrongly","wrongness","wrought","xbox","xerox","yahoo","yam","yanking","yapping","yard","yarn","yeah","yearbook","yearling","yearly","yearning","yeast","yelling","yelp","yen","yesterday","yiddish","yield","yin","yippee","yo-yo","yodel","yoga","yogurt","yonder","yoyo","yummy","zap","zealous","zebra","zen","zeppelin","zero","zestfully","zesty","zigzagged","zipfile","zipping","zippy","zips","zit","zodiac","zombie","zone","zoning","zookeeper","zoologist","zoology","zoom"]},79977:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncConfigApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),null!=e&&(this.billingSyncKey=this.getResponseProperty("BillingSyncKey"))}}t.BillingSyncConfigApi=r},59773:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.cardholderName=this.getResponseProperty("CardholderName"),this.brand=this.getResponseProperty("Brand"),this.number=this.getResponseProperty("Number"),this.expMonth=this.getResponseProperty("ExpMonth"),this.expYear=this.getResponseProperty("ExpYear"),this.code=this.getResponseProperty("Code"))}}t.CardApi=r},9592:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.value=this.getResponseProperty("Value"),this.linkedId=this.getResponseProperty("linkedId"))}}t.FieldApi=r},25327:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.title=this.getResponseProperty("Title"),this.firstName=this.getResponseProperty("FirstName"),this.middleName=this.getResponseProperty("MiddleName"),this.lastName=this.getResponseProperty("LastName"),this.address1=this.getResponseProperty("Address1"),this.address2=this.getResponseProperty("Address2"),this.address3=this.getResponseProperty("Address3"),this.city=this.getResponseProperty("City"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.country=this.getResponseProperty("Country"),this.company=this.getResponseProperty("Company"),this.email=this.getResponseProperty("Email"),this.phone=this.getResponseProperty("Phone"),this.ssn=this.getResponseProperty("SSN"),this.username=this.getResponseProperty("Username"),this.passportNumber=this.getResponseProperty("PassportNumber"),this.licenseNumber=this.getResponseProperty("LicenseNumber"))}}t.IdentityApi=r},89387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginApi=void 0;const i=n(17273),r=n(32357);class o extends i.BaseResponse{constructor(e=null){if(super(e),null==e)return;this.username=this.getResponseProperty("Username"),this.password=this.getResponseProperty("Password"),this.passwordRevisionDate=this.getResponseProperty("PasswordRevisionDate"),this.totp=this.getResponseProperty("Totp"),this.autofillOnPageLoad=this.getResponseProperty("AutofillOnPageLoad");const t=this.getResponseProperty("Uris");null!=t&&(this.uris=t.map((e=>new r.LoginUriApi(e))))}}t.LoginApi=o},32357:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){if(super(e),this.match=null,null==e)return;this.uri=this.getResponseProperty("Uri");const t=this.getResponseProperty("Match");this.match=null!=t?t:null}}t.LoginUriApi=r},96926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){if(super(e),null==e)return this;this.accessEventLogs=this.getResponseProperty("AccessEventLogs"),this.accessImportExport=this.getResponseProperty("AccessImportExport"),this.accessReports=this.getResponseProperty("AccessReports"),this.manageAllCollections=this.getResponseProperty("ManageAllCollections"),this.manageAssignedCollections=this.getResponseProperty("ManageAssignedCollections"),this.createNewCollections=this.getResponseProperty("CreateNewCollections"),this.editAnyCollection=this.getResponseProperty("EditAnyCollection"),this.deleteAnyCollection=this.getResponseProperty("DeleteAnyCollection"),this.editAssignedCollections=this.getResponseProperty("EditAssignedCollections"),this.deleteAssignedCollections=this.getResponseProperty("DeleteAssignedCollections"),this.manageCiphers=this.getResponseProperty("ManageCiphers"),this.manageGroups=this.getResponseProperty("ManageGroups"),this.manageSso=this.getResponseProperty("ManageSso"),this.managePolicies=this.getResponseProperty("ManagePolicies"),this.manageUsers=this.getResponseProperty("ManageUsers"),this.manageResetPassword=this.getResponseProperty("ManageResetPassword")}}t.PermissionsApi=r},3865:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.type=this.getResponseProperty("Type"))}}t.SecureNoteApi=r},39255:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.id=this.getResponseProperty("Id"),this.fileName=this.getResponseProperty("FileName"),this.size=this.getResponseProperty("Size"),this.sizeName=this.getResponseProperty("SizeName"))}}t.SendFileApi=r},8057:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.text=this.getResponseProperty("Text"),this.hidden=this.getResponseProperty("Hidden")||!1)}}t.SendTextApi=r},21021:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoConfigApi=void 0;const i=n(37084),r=n(17273);class o extends r.BaseResponse{constructor(e=null){super(e),null!=e&&(this.configType=this.getResponseProperty("ConfigType"),this.keyConnectorEnabled=this.getResponseProperty("KeyConnectorEnabled"),this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl"),this.authority=this.getResponseProperty("Authority"),this.clientId=this.getResponseProperty("ClientId"),this.clientSecret=this.getResponseProperty("ClientSecret"),this.metadataAddress=this.getResponseProperty("MetadataAddress"),this.redirectBehavior=this.getResponseProperty("RedirectBehavior"),this.getClaimsFromUserInfoEndpoint=this.getResponseProperty("GetClaimsFromUserInfoEndpoint"),this.additionalScopes=this.getResponseProperty("AdditionalScopes"),this.additionalUserIdClaimTypes=this.getResponseProperty("AdditionalUserIdClaimTypes"),this.additionalEmailClaimTypes=this.getResponseProperty("AdditionalEmailClaimTypes"),this.additionalNameClaimTypes=this.getResponseProperty("AdditionalNameClaimTypes"),this.acrValues=this.getResponseProperty("AcrValues"),this.expectedReturnAcrValue=this.getResponseProperty("ExpectedReturnAcrValue"),this.spNameIdFormat=this.getResponseProperty("SpNameIdFormat"),this.spOutboundSigningAlgorithm=this.getResponseProperty("SpOutboundSigningAlgorithm"),this.spSigningBehavior=this.getResponseProperty("SpSigningBehavior"),this.spMinIncomingSigningAlgorithm=this.getResponseProperty("SpMinIncomingSigningAlgorithm"),this.spWantAssertionsSigned=this.getResponseProperty("SpWantAssertionsSigned"),this.spValidateCertificates=this.getResponseProperty("SpValidateCertificates"),this.idpEntityId=this.getResponseProperty("IdpEntityId"),this.idpBindingType=this.getResponseProperty("IdpBindingType"),this.idpSingleSignOnServiceUrl=this.getResponseProperty("IdpSingleSignOnServiceUrl"),this.idpSingleLogoutServiceUrl=this.getResponseProperty("IdpSingleLogoutServiceUrl"),this.idpX509PublicCert=this.getResponseProperty("IdpX509PublicCert"),this.idpOutboundSigningAlgorithm=this.getResponseProperty("IdpOutboundSigningAlgorithm"),this.idpAllowUnsolicitedAuthnResponse=this.getResponseProperty("IdpAllowUnsolicitedAuthnResponse"),this.idpDisableOutboundLogoutRequests=this.getResponseProperty("IdpDisableOutboundLogoutRequests"),this.idpWantAuthnRequestsSigned=this.getResponseProperty("IdpWantAuthnRequestsSigned"))}static fromView(e,t=new o){return t.configType=e.configType,t.keyConnectorEnabled=e.keyConnectorEnabled,t.keyConnectorUrl=e.keyConnectorUrl,t.configType===i.SsoType.OpenIdConnect?(t.authority=e.openId.authority,t.clientId=e.openId.clientId,t.clientSecret=e.openId.clientSecret,t.metadataAddress=e.openId.metadataAddress,t.redirectBehavior=e.openId.redirectBehavior,t.getClaimsFromUserInfoEndpoint=e.openId.getClaimsFromUserInfoEndpoint,t.additionalScopes=e.openId.additionalScopes,t.additionalUserIdClaimTypes=e.openId.additionalUserIdClaimTypes,t.additionalEmailClaimTypes=e.openId.additionalEmailClaimTypes,t.additionalNameClaimTypes=e.openId.additionalNameClaimTypes,t.acrValues=e.openId.acrValues,t.expectedReturnAcrValue=e.openId.expectedReturnAcrValue):t.configType===i.SsoType.Saml2&&(t.spNameIdFormat=e.saml.spNameIdFormat,t.spOutboundSigningAlgorithm=e.saml.spOutboundSigningAlgorithm,t.spSigningBehavior=e.saml.spSigningBehavior,t.spMinIncomingSigningAlgorithm=e.saml.spMinIncomingSigningAlgorithm,t.spWantAssertionsSigned=e.saml.spWantAssertionsSigned,t.spValidateCertificates=e.saml.spValidateCertificates,t.idpEntityId=e.saml.idpEntityId,t.idpBindingType=e.saml.idpBindingType,t.idpSingleSignOnServiceUrl=e.saml.idpSingleSignOnServiceUrl,t.idpSingleLogoutServiceUrl=e.saml.idpSingleLogoutServiceUrl,t.idpX509PublicCert=e.saml.idpX509PublicCert,t.idpOutboundSigningAlgorithm=e.saml.idpOutboundSigningAlgorithm,t.idpAllowUnsolicitedAuthnResponse=e.saml.idpAllowUnsolicitedAuthnResponse,t.idpWantAuthnRequestsSigned=e.saml.idpWantAuthnRequestsSigned,t.idpDisableOutboundLogoutRequests=!e.saml.idpAllowOutboundLogoutRequests),t}}t.SsoConfigApi=o},82999:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentData=void 0;t.AttachmentData=class{constructor(e){null!=e&&(this.id=e.id,this.url=e.url,this.fileName=e.fileName,this.key=e.key,this.size=e.size,this.sizeName=e.sizeName)}}},23607:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardData=void 0;t.CardData=class{constructor(e){null!=e&&(this.cardholderName=e.cardholderName,this.brand=e.brand,this.number=e.number,this.expMonth=e.expMonth,this.expYear=e.expYear,this.code=e.code)}}},82789:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherData=void 0;const i=n(32773),r=n(82999),o=n(23607),a=n(93001),s=n(64218),l=n(33396),c=n(67783),d=n(85201);t.CipherData=class{constructor(e,t){if(null!=e){switch(this.id=e.id,this.organizationId=e.organizationId,this.folderId=e.folderId,this.edit=e.edit,this.viewPassword=e.viewPassword,this.organizationUseTotp=e.organizationUseTotp,this.favorite=e.favorite,this.revisionDate=e.revisionDate,this.type=e.type,this.name=e.name,this.notes=e.notes,this.collectionIds=null!=t?t:e.collectionIds,this.deletedDate=e.deletedDate,this.reprompt=e.reprompt,this.type){case i.CipherType.Login:this.login=new l.LoginData(e.login);break;case i.CipherType.SecureNote:this.secureNote=new d.SecureNoteData(e.secureNote);break;case i.CipherType.Card:this.card=new o.CardData(e.card);break;case i.CipherType.Identity:this.identity=new s.IdentityData(e.identity)}null!=e.fields&&(this.fields=e.fields.map((e=>new a.FieldData(e)))),null!=e.attachments&&(this.attachments=e.attachments.map((e=>new r.AttachmentData(e)))),null!=e.passwordHistory&&(this.passwordHistory=e.passwordHistory.map((e=>new c.PasswordHistoryData(e))))}}}},34917:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionData=void 0;t.CollectionData=class{constructor(e){this.id=e.id,this.organizationId=e.organizationId,this.name=e.name,this.externalId=e.externalId,this.readOnly=e.readOnly}}},93053:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventData=void 0;t.EventData=class{}},93001:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldData=void 0;t.FieldData=class{constructor(e){null!=e&&(this.type=e.type,this.name=e.name,this.value=e.value,this.linkedId=e.linkedId)}}},12835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderData=void 0;t.FolderData=class{constructor(e){this.name=e.name,this.id=e.id,this.revisionDate=e.revisionDate}}},64218:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityData=void 0;t.IdentityData=class{constructor(e){null!=e&&(this.title=e.title,this.firstName=e.firstName,this.middleName=e.middleName,this.lastName=e.lastName,this.address1=e.address1,this.address2=e.address2,this.address3=e.address3,this.city=e.city,this.state=e.state,this.postalCode=e.postalCode,this.country=e.country,this.company=e.company,this.email=e.email,this.phone=e.phone,this.ssn=e.ssn,this.username=e.username,this.passportNumber=e.passportNumber,this.licenseNumber=e.licenseNumber)}}},33396:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginData=void 0;const i=n(20968);t.LoginData=class{constructor(e){null!=e&&(this.username=e.username,this.password=e.password,this.passwordRevisionDate=e.passwordRevisionDate,this.totp=e.totp,this.autofillOnPageLoad=e.autofillOnPageLoad,e.uris&&(this.uris=e.uris.map((e=>new i.LoginUriData(e)))))}}},20968:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriData=void 0;t.LoginUriData=class{constructor(e){this.match=null,null!=e&&(this.uri=e.uri,this.match=e.match)}}},8681:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationData=void 0;t.OrganizationData=class{constructor(e){this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.usePolicies=e.usePolicies,this.useGroups=e.useGroups,this.useDirectory=e.useDirectory,this.useEvents=e.useEvents,this.useTotp=e.useTotp,this.use2fa=e.use2fa,this.useApi=e.useApi,this.useSso=e.useSso,this.useKeyConnector=e.useKeyConnector,this.useResetPassword=e.useResetPassword,this.selfHost=e.selfHost,this.usersGetPremium=e.usersGetPremium,this.seats=e.seats,this.maxCollections=e.maxCollections,this.maxStorageGb=e.maxStorageGb,this.ssoBound=e.ssoBound,this.identifier=e.identifier,this.permissions=e.permissions,this.resetPasswordEnrolled=e.resetPasswordEnrolled,this.userId=e.userId,this.hasPublicAndPrivateKeys=e.hasPublicAndPrivateKeys,this.providerId=e.providerId,this.providerName=e.providerName,this.familySponsorshipFriendlyName=e.familySponsorshipFriendlyName,this.familySponsorshipAvailable=e.familySponsorshipAvailable,this.planProductType=e.planProductType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.familySponsorshipLastSyncDate=e.familySponsorshipLastSyncDate,this.familySponsorshipValidUntil=e.familySponsorshipValidUntil,this.familySponsorshipToDelete=e.familySponsorshipToDelete}}},67783:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryData=void 0;t.PasswordHistoryData=class{constructor(e){null!=e&&(this.password=e.password,this.lastUsedDate=e.lastUsedDate)}}},34144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyData=void 0;t.PolicyData=class{constructor(e){this.id=e.id,this.organizationId=e.organizationId,this.type=e.type,this.data=e.data,this.enabled=e.enabled}}},17835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderData=void 0;t.ProviderData=class{constructor(e){this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.userId=e.userId,this.useEvents=e.useEvents}}},85201:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteData=void 0;t.SecureNoteData=class{constructor(e){null!=e&&(this.type=e.type)}}},10425:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendData=void 0;const i=n(70149),r=n(57662),o=n(35861);t.SendData=class{constructor(e){if(null!=e)switch(this.id=e.id,this.accessId=e.accessId,this.type=e.type,this.name=e.name,this.notes=e.notes,this.key=e.key,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.revisionDate=e.revisionDate,this.expirationDate=e.expirationDate,this.deletionDate=e.deletionDate,this.password=e.password,this.disabled=e.disable,this.hideEmail=e.hideEmail,this.type){case i.SendType.Text:this.text=new o.SendTextData(e.text);break;case i.SendType.File:this.file=new r.SendFileData(e.file)}}}},57662:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileData=void 0;t.SendFileData=class{constructor(e){null!=e&&(this.id=e.id,this.fileName=e.fileName,this.size=e.size,this.sizeName=e.sizeName)}}},35861:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextData=void 0;t.SendTextData=class{constructor(e){null!=e&&(this.text=e.text,this.hidden=e.hidden)}}},31445:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Account=t.AccountTokens=t.AccountSettings=t.AccountProfile=t.AccountKeys=t.AccountData=t.DataEncryptionPair=t.EncryptionPair=void 0;const i=n(91185);class r{}t.EncryptionPair=r;class o{}t.DataEncryptionPair=o;class a{constructor(){this.ciphers=new o,this.folders=new o,this.sends=new o,this.collections=new o,this.policies=new o,this.passwordGenerationHistory=new r}}t.AccountData=a;class s{constructor(){this.cryptoSymmetricKey=new r,this.organizationKeys=new r,this.providerKeys=new r,this.privateKey=new r}}t.AccountKeys=s;class l{}t.AccountProfile=l;class c{constructor(){this.environmentUrls=new i.EnvironmentUrls,this.pinProtected=new r,this.vaultTimeoutAction="lock"}}t.AccountSettings=c;class d{}t.AccountTokens=d;t.Account=class{constructor(e){this.data=new a,this.keys=new s,this.profile=new l,this.settings=new c,this.tokens=new d,Object.assign(this,{data:Object.assign(Object.assign({},new a),null==e?void 0:e.data),keys:Object.assign(Object.assign({},new s),null==e?void 0:e.keys),profile:Object.assign(Object.assign({},new l),null==e?void 0:e.profile),settings:Object.assign(Object.assign({},new c),null==e?void 0:e.settings),tokens:Object.assign(Object.assign({},new d),null==e?void 0:e.tokens)})}}},73024:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Attachment=void 0;const r=n(82769),o=n(82999),a=n(57759),s=n(6183),l=n(69731);class c extends s.default{constructor(e){super(),null!=e&&(this.size=e.size,this.buildDomainModel(this,e,{id:null,url:null,sizeName:null,fileName:null,key:null},["id","url","sizeName"]))}decrypt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.decryptObj(new a.AttachmentView(this),{fileName:null},e,t);if(null!=this.key){let o;const a=r.Utils.global.bitwardenContainerService;if(!a)throw new Error("global bitwardenContainerService not initialized.");o=a.getCryptoService();try{const i=yield o.getOrgKey(e),r=yield o.decryptToBytes(this.key,null!=i?i:t);n.key=new l.SymmetricCryptoKey(r)}catch(i){}}return n}))}toAttachmentData(){const e=new o.AttachmentData;return e.size=this.size,this.buildDataModel(this,e,{id:null,url:null,sizeName:null,fileName:null,key:null},["id","url","sizeName"]),e}}t.Attachment=c},20584:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthResult=void 0;const i=n(82769);t.AuthResult=class{constructor(){this.captchaSiteKey="",this.resetMasterPassword=!1,this.forcePasswordReset=!1,this.twoFactorProviders=null}get requiresCaptcha(){return!i.Utils.isNullOrWhitespace(this.captchaSiteKey)}get requiresTwoFactor(){return null!=this.twoFactorProviders}}},53763:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;const i=n(23607),r=n(91766),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null},[])}decrypt(e,t){return this.decryptObj(new r.CardView,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null},e,t)}toCardData(){const e=new i.CardData;return this.buildDataModel(this,e,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null}),e}}t.Card=a},49624:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Cipher=void 0;const r=n(32773),o=n(82789),a=n(97144),s=n(73024),l=n(53763),c=n(6183),d=n(84379),p=n(809),u=n(89642),m=n(20929),h=n(7012);class v extends c.default{constructor(e,t=null){if(super(),null!=e){switch(this.buildDomainModel(this,e,{id:null,organizationId:null,folderId:null,name:null,notes:null},["id","organizationId","folderId"]),this.type=e.type,this.favorite=e.favorite,this.organizationUseTotp=e.organizationUseTotp,this.edit=e.edit,null!=e.viewPassword?this.viewPassword=e.viewPassword:this.viewPassword=!0,this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null,this.collectionIds=e.collectionIds,this.localData=t,this.deletedDate=null!=e.deletedDate?new Date(e.deletedDate):null,this.reprompt=e.reprompt,this.type){case r.CipherType.Login:this.login=new u.Login(e.login);break;case r.CipherType.SecureNote:this.secureNote=new h.SecureNote(e.secureNote);break;case r.CipherType.Card:this.card=new l.Card(e.card);break;case r.CipherType.Identity:this.identity=new p.Identity(e.identity)}null!=e.attachments?this.attachments=e.attachments.map((e=>new s.Attachment(e))):this.attachments=null,null!=e.fields?this.fields=e.fields.map((e=>new d.Field(e))):this.fields=null,null!=e.passwordHistory?this.passwordHistory=e.passwordHistory.map((e=>new m.Password(e))):this.passwordHistory=null}}decrypt(e){return i(this,void 0,void 0,(function*(){const t=new a.CipherView(this);switch(yield this.decryptObj(t,{name:null,notes:null},this.organizationId,e),this.type){case r.CipherType.Login:t.login=yield this.login.decrypt(this.organizationId,e);break;case r.CipherType.SecureNote:t.secureNote=yield this.secureNote.decrypt(this.organizationId,e);break;case r.CipherType.Card:t.card=yield this.card.decrypt(this.organizationId,e);break;case r.CipherType.Identity:t.identity=yield this.identity.decrypt(this.organizationId,e)}const n=this.organizationId;if(null!=this.attachments&&this.attachments.length>0){const i=[];yield this.attachments.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.attachments=i}if(null!=this.fields&&this.fields.length>0){const i=[];yield this.fields.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.fields=i}if(null!=this.passwordHistory&&this.passwordHistory.length>0){const i=[];yield this.passwordHistory.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.passwordHistory=i}return t}))}toCipherData(){const e=new o.CipherData;switch(e.id=this.id,e.organizationId=this.organizationId,e.folderId=this.folderId,e.edit=this.edit,e.viewPassword=this.viewPassword,e.organizationUseTotp=this.organizationUseTotp,e.favorite=this.favorite,e.revisionDate=null!=this.revisionDate?this.revisionDate.toISOString():null,e.type=this.type,e.collectionIds=this.collectionIds,e.deletedDate=null!=this.deletedDate?this.deletedDate.toISOString():null,e.reprompt=this.reprompt,this.buildDataModel(this,e,{name:null,notes:null}),e.type){case r.CipherType.Login:e.login=this.login.toLoginData();break;case r.CipherType.SecureNote:e.secureNote=this.secureNote.toSecureNoteData();break;case r.CipherType.Card:e.card=this.card.toCardData();break;case r.CipherType.Identity:e.identity=this.identity.toIdentityData()}return null!=this.fields&&(e.fields=this.fields.map((e=>e.toFieldData()))),null!=this.attachments&&(e.attachments=this.attachments.map((e=>e.toAttachmentData()))),null!=this.passwordHistory&&(e.passwordHistory=this.passwordHistory.map((e=>e.toPasswordHistoryData()))),e}}t.Cipher=v},65642:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Collection=void 0;const i=n(86001),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{id:null,organizationId:null,name:null,externalId:null,readOnly:null,hidePasswords:null},["id","organizationId","externalId","readOnly","hidePasswords"])}decrypt(){return this.decryptObj(new i.CollectionView(this),{name:null},this.organizationId)}}t.Collection=o},15755:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DecryptParameters=void 0;t.DecryptParameters=class{}},6183:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(22205);t.default=class{buildDomainModel(e,t,n,i=[]){for(const o in n){if(!n.hasOwnProperty(o))continue;const a=t[n[o]||o];i.indexOf(o)>-1?e[o]=a||null:e[o]=a?new r.EncString(a):null}}buildDataModel(e,t,n,i=[]){for(const r in n){if(!n.hasOwnProperty(r))continue;const o=e[n[r]||r];i.indexOf(r)>-1?t[r]=null!=o?o:null:t[r]=null!=o?o.encryptedString:null}}decryptObj(e,t,n,r=null){return i(this,void 0,void 0,(function*(){const i=[],o=this;for(const a in t)t.hasOwnProperty(a)&&function(a){const s=Promise.resolve().then((()=>{const e=t[a]||a;return o[e]?o[e].decrypt(n,r):null})).then((t=>{e[a]=t}));i.push(s)}(a);return yield Promise.all(i),e}))}}},16131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncArrayBuffer=void 0;t.EncArrayBuffer=class{constructor(e){this.buffer=e}}},22205:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EncString=void 0;const r=n(28588),o=n(82769);t.EncString=class{constructor(e,t,n,i){if(null!=t){const r=e;return this.encryptedString=null!=n?r+"."+n+"|"+t:r+"."+t,null!=i&&(this.encryptedString+="|"+i),this.encryptionType=r,this.data=t,this.iv=n,void(this.mac=i)}if(this.encryptedString=e,!this.encryptedString)return;const o=this.encryptedString.split(".");let a=null;if(2===o.length)try{this.encryptionType=parseInt(o[0],null),a=o[1].split("|")}catch(s){return}else a=this.encryptedString.split("|"),this.encryptionType=3===a.length?r.EncryptionType.AesCbc128_HmacSha256_B64:r.EncryptionType.AesCbc256_B64;switch(this.encryptionType){case r.EncryptionType.AesCbc128_HmacSha256_B64:case r.EncryptionType.AesCbc256_HmacSha256_B64:if(3!==a.length)return;this.iv=a[0],this.data=a[1],this.mac=a[2];break;case r.EncryptionType.AesCbc256_B64:if(2!==a.length)return;this.iv=a[0],this.data=a[1];break;case r.EncryptionType.Rsa2048_OaepSha256_B64:case r.EncryptionType.Rsa2048_OaepSha1_B64:if(1!==a.length)return;this.data=a[0];break;default:return}}decrypt(e,t=null){return i(this,void 0,void 0,(function*(){if(null!=this.decryptedValue)return this.decryptedValue;let n;const i=o.Utils.global.bitwardenContainerService;if(!i)throw new Error("global bitwardenContainerService not initialized.");n=i.getCryptoService();try{null==t&&(t=yield n.getOrgKey(e)),this.decryptedValue=yield n.decryptToUtf8(this,t)}catch(r){this.decryptedValue="[error: cannot decrypt]"}return this.decryptedValue}))}}},6394:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptedObject=void 0;t.EncryptedObject=class{}},91185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentUrls=void 0;t.EnvironmentUrls=class{constructor(){this.base=null,this.api=null,this.identity=null,this.icons=null,this.notifications=null,this.events=null,this.webVault=null,this.keyConnector=null}}},84379:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Field=void 0;const i=n(93001),r=n(58545),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.type=e.type,this.linkedId=e.linkedId,this.buildDomainModel(this,e,{name:null,value:null},[]))}decrypt(e,t){return this.decryptObj(new r.FieldView(this),{name:null,value:null},e,t)}toFieldData(){const e=new i.FieldData;return this.buildDataModel(this,e,{name:null,value:null,type:null,linkedId:null},["type","linkedId"]),e}}t.Field=a},59738:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Folder=void 0;const i=n(36914),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&(this.buildDomainModel(this,e,{id:null,name:null},["id"]),this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null)}decrypt(){return this.decryptObj(new i.FolderView(this),{name:null},null)}}t.Folder=o},77665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratedPasswordHistory=void 0;t.GeneratedPasswordHistory=class{constructor(e,t){this.password=e,this.date=t}}},99010:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalState=void 0;const i=n(40898),r=n(14538),o=n(91185),a=n(95672);t.GlobalState=class{constructor(){this.theme=r.ThemeType.System,this.window=new a.WindowState,this.stateVersion=i.StateVersion.One,this.environmentUrls=new o.EnvironmentUrls}}},809:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Identity=void 0;const i=n(64218),r=n(48830),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null},[])}decrypt(e,t){return this.decryptObj(new r.IdentityView,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null},e,t)}toIdentityData(){const e=new i.IdentityData;return this.buildDataModel(this,e,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null}),e}}t.Identity=a},2859:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportResult=void 0;t.ImportResult=class{constructor(){this.success=!1,this.missingPassword=!1,this.ciphers=[],this.folders=[],this.folderRelationships=[],this.collections=[],this.collectionRelationships=[]}}},70045:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLogInCredentials=t.SsoLogInCredentials=t.PasswordLogInCredentials=void 0;const i=n(2231);t.PasswordLogInCredentials=class{constructor(e,t,n,r){this.email=e,this.masterPassword=t,this.captchaToken=n,this.twoFactor=r,this.type=i.AuthenticationType.Password}};t.SsoLogInCredentials=class{constructor(e,t,n,r,o){this.code=e,this.codeVerifier=t,this.redirectUrl=n,this.orgId=r,this.twoFactor=o,this.type=i.AuthenticationType.Sso}};t.ApiLogInCredentials=class{constructor(e,t){this.clientId=e,this.clientSecret=t,this.type=i.AuthenticationType.Api}}},89642:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Login=void 0;const r=n(33396),o=n(28331),a=n(6183),s=n(28947);class l extends a.default{constructor(e){super(),null!=e&&(this.passwordRevisionDate=null!=e.passwordRevisionDate?new Date(e.passwordRevisionDate):null,this.autofillOnPageLoad=e.autofillOnPageLoad,this.buildDomainModel(this,e,{username:null,password:null,totp:null},[]),e.uris&&(this.uris=[],e.uris.forEach((e=>{this.uris.push(new s.LoginUri(e))}))))}decrypt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.decryptObj(new o.LoginView(this),{username:null,password:null,totp:null},e,t);if(null!=this.uris){n.uris=[];for(let i=0;i0&&(e.uris=[],this.uris.forEach((t=>{e.uris.push(t.toLoginUriData())}))),e}}t.Login=l},28947:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUri=void 0;const i=n(20968),r=n(16506),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.match=e.match,this.buildDomainModel(this,e,{uri:null},[]))}decrypt(e,t){return this.decryptObj(new r.LoginUriView(this),{uri:null},e,t)}toLoginUriData(){const e=new i.LoginUriData;return this.buildDataModel(this,e,{uri:null,match:null},["match"]),e}}t.LoginUri=a},27053:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MasterPasswordPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.minComplexity=0,this.minLength=0,this.requireUpper=!1,this.requireLower=!1,this.requireNumbers=!1,this.requireSpecial=!1}}t.MasterPasswordPolicyOptions=r},27957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Organization=void 0;const i=n(7368),r=n(33712),o=n(47880);t.Organization=class{constructor(e){null!=e&&(this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.usePolicies=e.usePolicies,this.useGroups=e.useGroups,this.useDirectory=e.useDirectory,this.useEvents=e.useEvents,this.useTotp=e.useTotp,this.use2fa=e.use2fa,this.useApi=e.useApi,this.useSso=e.useSso,this.useKeyConnector=e.useKeyConnector,this.useResetPassword=e.useResetPassword,this.selfHost=e.selfHost,this.usersGetPremium=e.usersGetPremium,this.seats=e.seats,this.maxCollections=e.maxCollections,this.maxStorageGb=e.maxStorageGb,this.ssoBound=e.ssoBound,this.identifier=e.identifier,this.permissions=e.permissions,this.resetPasswordEnrolled=e.resetPasswordEnrolled,this.userId=e.userId,this.hasPublicAndPrivateKeys=e.hasPublicAndPrivateKeys,this.providerId=e.providerId,this.providerName=e.providerName,this.isProviderUser=e.isProviderUser,this.familySponsorshipFriendlyName=e.familySponsorshipFriendlyName,this.familySponsorshipAvailable=e.familySponsorshipAvailable,this.planProductType=e.planProductType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.familySponsorshipLastSyncDate=e.familySponsorshipLastSyncDate,this.familySponsorshipValidUntil=e.familySponsorshipValidUntil,this.familySponsorshipToDelete=e.familySponsorshipToDelete)}get canAccess(){return this.type===r.OrganizationUserType.Owner||this.enabled&&this.status===i.OrganizationUserStatusType.Confirmed}get isManager(){return this.type===r.OrganizationUserType.Manager||this.type===r.OrganizationUserType.Owner||this.type===r.OrganizationUserType.Admin}get isAdmin(){return this.type===r.OrganizationUserType.Owner||this.type===r.OrganizationUserType.Admin}get isOwner(){return this.type===r.OrganizationUserType.Owner||this.isProviderUser}get canAccessEventLogs(){return this.isAdmin||this.permissions.accessEventLogs}get canAccessImportExport(){return this.isAdmin||this.permissions.accessImportExport}get canAccessReports(){return this.isAdmin||this.permissions.accessReports}get canCreateNewCollections(){var e;return this.isManager||(null!==(e=this.permissions.createNewCollections)&&void 0!==e?e:this.permissions.manageAllCollections)}get canEditAnyCollection(){var e;return this.isAdmin||(null!==(e=this.permissions.editAnyCollection)&&void 0!==e?e:this.permissions.manageAllCollections)}get canDeleteAnyCollection(){var e;return this.isAdmin||(null!==(e=this.permissions.deleteAnyCollection)&&void 0!==e?e:this.permissions.manageAllCollections)}get canViewAllCollections(){return this.canCreateNewCollections||this.canEditAnyCollection||this.canDeleteAnyCollection}get canEditAssignedCollections(){var e;return this.isManager||(null!==(e=this.permissions.editAssignedCollections)&&void 0!==e?e:this.permissions.manageAssignedCollections)}get canDeleteAssignedCollections(){var e;return this.isManager||(null!==(e=this.permissions.deleteAssignedCollections)&&void 0!==e?e:this.permissions.manageAssignedCollections)}get canViewAssignedCollections(){return this.canDeleteAssignedCollections||this.canEditAssignedCollections}get canManageGroups(){return this.isAdmin||this.permissions.manageGroups}get canManageSso(){return this.isAdmin||this.permissions.manageSso}get canManagePolicies(){return this.isAdmin||this.permissions.managePolicies}get canManageUsers(){return this.isAdmin||this.permissions.manageUsers}get canManageUsersPassword(){return this.isAdmin||this.permissions.manageResetPassword}get isExemptFromPolicies(){return this.canManagePolicies}hasAnyPermission(e){return(e.includes(o.Permissions.AccessEventLogs)&&this.canAccessEventLogs||e.includes(o.Permissions.AccessImportExport)&&this.canAccessImportExport||e.includes(o.Permissions.AccessReports)&&this.canAccessReports||e.includes(o.Permissions.CreateNewCollections)&&this.canCreateNewCollections||e.includes(o.Permissions.EditAnyCollection)&&this.canEditAnyCollection||e.includes(o.Permissions.DeleteAnyCollection)&&this.canDeleteAnyCollection||e.includes(o.Permissions.EditAssignedCollections)&&this.canEditAssignedCollections||e.includes(o.Permissions.DeleteAssignedCollections)&&this.canDeleteAssignedCollections||e.includes(o.Permissions.ManageGroups)&&this.canManageGroups||e.includes(o.Permissions.ManageOrganization)&&this.isOwner||e.includes(o.Permissions.ManagePolicies)&&this.canManagePolicies||e.includes(o.Permissions.ManageUsers)&&this.canManageUsers||e.includes(o.Permissions.ManageUsersPassword)&&this.canManageUsersPassword||e.includes(o.Permissions.ManageSso)&&this.canManageSso||e.includes(o.Permissions.ManageBilling)&&this.canManageBilling)&&(this.enabled||this.isOwner)}get canManageBilling(){return this.isOwner&&(this.isProviderUser||!this.hasProvider)}get hasProvider(){return null!=this.providerId||null!=this.providerName}}},20929:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Password=void 0;const i=n(67783),r=n(40170),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.buildDomainModel(this,e,{password:null}),this.lastUsedDate=new Date(e.lastUsedDate))}decrypt(e,t){return this.decryptObj(new r.PasswordHistoryView(this),{password:null},e,t)}toPasswordHistoryData(){const e=new i.PasswordHistoryData;return e.lastUsedDate=this.lastUsedDate.toISOString(),this.buildDataModel(this,e,{password:null}),e}}t.Password=a},49471:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.defaultType="",this.minLength=0,this.useUppercase=!1,this.useLowercase=!1,this.useNumbers=!1,this.numberCount=0,this.useSpecial=!1,this.specialCount=0,this.minNumberWords=0,this.capitalize=!1,this.includeNumber=!1}inEffect(){return""!==this.defaultType||this.minLength>0||this.numberCount>0||this.specialCount>0||this.useUppercase||this.useLowercase||this.useNumbers||this.useSpecial||this.minNumberWords>0||this.capitalize||this.includeNumber}}t.PasswordGeneratorPolicyOptions=r},41317:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Policy=void 0;const i=n(6183);class r extends i.default{constructor(e){super(),null!=e&&(this.id=e.id,this.organizationId=e.organizationId,this.type=e.type,this.data=e.data,this.enabled=e.enabled)}}t.Policy=r},61453:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Provider=void 0;const i=n(72418),r=n(30185);t.Provider=class{constructor(e){null!=e&&(this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.userId=e.userId,this.useEvents=e.useEvents)}get canAccess(){return!!this.isProviderAdmin||this.enabled&&this.status===i.ProviderUserStatusType.Confirmed}get canCreateOrganizations(){return this.enabled&&this.isProviderAdmin}get canManageUsers(){return this.isProviderAdmin}get canAccessEventLogs(){return this.isProviderAdmin}get isProviderAdmin(){return this.type===r.ProviderUserType.ProviderAdmin}}},41389:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.autoEnrollEnabled=!1}}t.ResetPasswordPolicyOptions=r},7012:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNote=void 0;const i=n(85201),r=n(99364),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.type=e.type)}decrypt(e,t){return Promise.resolve(new r.SecureNoteView(this))}toSecureNoteData(){const e=new i.SecureNoteData;return e.type=this.type,e}}t.SecureNote=a},38265:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Send=void 0;const r=n(70149),o=n(82769),a=n(1725),s=n(6183),l=n(32924),c=n(22785);class d extends s.default{constructor(e){if(super(),null!=e)switch(this.buildDomainModel(this,e,{id:null,accessId:null,name:null,notes:null,key:null},["id","accessId"]),this.type=e.type,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.password=e.password,this.disabled=e.disabled,this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null,this.deletionDate=null!=e.deletionDate?new Date(e.deletionDate):null,this.expirationDate=null!=e.expirationDate?new Date(e.expirationDate):null,this.hideEmail=e.hideEmail,this.type){case r.SendType.Text:this.text=new c.SendText(e.text);break;case r.SendType.File:this.file=new l.SendFile(e.file)}}decrypt(){return i(this,void 0,void 0,(function*(){const e=new a.SendView(this);let t;const n=o.Utils.global.bitwardenContainerService;if(!n)throw new Error("global bitwardenContainerService not initialized.");t=n.getCryptoService();try{e.key=yield t.decryptToBytes(this.key,null),e.cryptoKey=yield t.makeSendKey(e.key)}catch(i){}switch(yield this.decryptObj(e,{name:null,notes:null},null,e.cryptoKey),this.type){case r.SendType.File:e.file=yield this.file.decrypt(e.cryptoKey);break;case r.SendType.Text:e.text=yield this.text.decrypt(e.cryptoKey)}return e}))}}t.Send=d},95708:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccess=void 0;const r=n(70149),o=n(46984),a=n(6183),s=n(32924),l=n(22785);class c extends a.default{constructor(e){if(super(),null!=e)switch(this.buildDomainModel(this,e,{id:null,name:null,expirationDate:null,creatorIdentifier:null},["id","expirationDate","creatorIdentifier"]),this.type=e.type,this.type){case r.SendType.Text:this.text=new l.SendText(e.text);break;case r.SendType.File:this.file=new s.SendFile(e.file)}}decrypt(e){return i(this,void 0,void 0,(function*(){const t=new o.SendAccessView(this);switch(yield this.decryptObj(t,{name:null},null,e),this.type){case r.SendType.File:t.file=yield this.file.decrypt(e);break;case r.SendType.Text:t.text=yield this.text.decrypt(e)}return t}))}}t.SendAccess=c},32924:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendFile=void 0;const r=n(22620),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.size=e.size,this.buildDomainModel(this,e,{id:null,sizeName:null,fileName:null},["id","sizeName"]))}decrypt(e){return i(this,void 0,void 0,(function*(){return yield this.decryptObj(new r.SendFileView(this),{fileName:null},null,e)}))}}t.SendFile=a},22785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendText=void 0;const i=n(59884),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&(this.hidden=e.hidden,this.buildDomainModel(this,e,{text:null},[]))}decrypt(e){return this.decryptObj(new i.SendTextView(this),{text:null},null,e)}}t.SendText=o},20126:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SortedCiphersCache=void 0;t.SortedCiphersCache=class{constructor(e){this.comparator=e,this.sortedCiphersByUrl=new Map,this.timeouts=new Map}isCached(e){return this.sortedCiphersByUrl.has(e)}addCiphers(e,t){t.sort(this.comparator),this.sortedCiphersByUrl.set(e,new n(t)),this.resetTimer(e)}getLastUsed(e){return this.resetTimer(e),this.isCached(e)?this.sortedCiphersByUrl.get(e).getLastUsed():null}getLastLaunched(e){return this.isCached(e)?this.sortedCiphersByUrl.get(e).getLastLaunched():null}getNext(e){return this.resetTimer(e),this.isCached(e)?this.sortedCiphersByUrl.get(e).getNext():null}updateLastUsedIndex(e){this.isCached(e)&&this.sortedCiphersByUrl.get(e).updateLastUsedIndex()}clear(){this.sortedCiphersByUrl.clear(),this.timeouts.clear()}resetTimer(e){clearTimeout(this.timeouts.get(e)),this.timeouts.set(e,setTimeout((()=>{this.sortedCiphersByUrl.delete(e),this.timeouts.delete(e)}),3e3))}};class n{constructor(e){this.ciphers=e,this.lastUsedIndex=-1}getLastUsed(){return this.lastUsedIndex=Math.max(this.lastUsedIndex,0),this.ciphers[this.lastUsedIndex]}getLastLaunched(){return this.ciphers.filter((e=>{var t;return null===(t=e.localData)||void 0===t?void 0:t.lastLaunched})).sort(((e,t)=>t.localData.lastLaunched.valueOf()-e.localData.lastLaunched.valueOf()))[0]}getNextIndex(){return(this.lastUsedIndex+1)%this.ciphers.length}getNext(){return this.ciphers[this.getNextIndex()]}updateLastUsedIndex(){this.lastUsedIndex=this.getNextIndex()}}},43208:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.State=void 0;t.State=class{constructor(e){this.accounts={},this.authenticatedAccounts=[],this.accountActivity={},this.globals=e}}},69731:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SymmetricCryptoKey=void 0;const i=n(28588),r=n(82769);t.SymmetricCryptoKey=class{constructor(e,t){if(null==e)throw new Error("Must provide key");if(null==t)if(32===e.byteLength)t=i.EncryptionType.AesCbc256_B64;else{if(64!==e.byteLength)throw new Error("Unable to determine encType.");t=i.EncryptionType.AesCbc256_HmacSha256_B64}if(this.key=e,this.encType=t,t===i.EncryptionType.AesCbc256_B64&&32===e.byteLength)this.encKey=e,this.macKey=null;else if(t===i.EncryptionType.AesCbc128_HmacSha256_B64&&32===e.byteLength)this.encKey=e.slice(0,16),this.macKey=e.slice(16,32);else{if(t!==i.EncryptionType.AesCbc256_HmacSha256_B64||64!==e.byteLength)throw new Error("Unsupported encType/key length.");this.encKey=e.slice(0,32),this.macKey=e.slice(32,64)}null!=this.key&&(this.keyB64=r.Utils.fromBufferToB64(this.key)),null!=this.encKey&&(this.encKeyB64=r.Utils.fromBufferToB64(this.encKey)),null!=this.macKey&&(this.macKeyB64=r.Utils.fromBufferToB64(this.macKey))}}},51301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TreeNode=void 0;t.TreeNode=class{constructor(e,t,n){this.children=[],this.parent=n,this.node=e,this.node.name=t}}},95672:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WindowState=void 0;t.WindowState=class{}},24030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardExport=void 0;const i=n(53763),r=n(22205),o=n(91766);class a{constructor(e){var t,n,i,r,a,s;null!=e&&(e instanceof o.CardView?(this.cardholderName=e.cardholderName,this.brand=e.brand,this.number=e.number,this.expMonth=e.expMonth,this.expYear=e.expYear,this.code=e.code):(this.cardholderName=null===(t=e.cardholderName)||void 0===t?void 0:t.encryptedString,this.brand=null===(n=e.brand)||void 0===n?void 0:n.encryptedString,this.number=null===(i=e.number)||void 0===i?void 0:i.encryptedString,this.expMonth=null===(r=e.expMonth)||void 0===r?void 0:r.encryptedString,this.expYear=null===(a=e.expYear)||void 0===a?void 0:a.encryptedString,this.code=null===(s=e.code)||void 0===s?void 0:s.encryptedString))}static template(){const e=new a;return e.cardholderName="John Doe",e.brand="visa",e.number="4242424242424242",e.expMonth="04",e.expYear="2023",e.code="123",e}static toView(e,t=new o.CardView){return t.cardholderName=e.cardholderName,t.brand=e.brand,t.number=e.number,t.expMonth=e.expMonth,t.expYear=e.expYear,t.code=e.code,t}static toDomain(e,t=new i.Card){return t.cardholderName=null!=e.cardholderName?new r.EncString(e.cardholderName):null,t.brand=null!=e.brand?new r.EncString(e.brand):null,t.number=null!=e.number?new r.EncString(e.number):null,t.expMonth=null!=e.expMonth?new r.EncString(e.expMonth):null,t.expYear=null!=e.expYear?new r.EncString(e.expYear):null,t.code=null!=e.code?new r.EncString(e.code):null,t}}t.CardExport=a},54655:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherExport=void 0;const i=n(34453),r=n(32773),o=n(49624),a=n(22205),s=n(97144),l=n(24030),c=n(85890),d=n(90397),p=n(35473),u=n(46187);class m{static template(){const e=new m;return e.organizationId=null,e.collectionIds=null,e.folderId=null,e.type=r.CipherType.Login,e.name="Item name",e.notes="Some notes about this item.",e.favorite=!1,e.fields=[],e.login=null,e.secureNote=null,e.card=null,e.identity=null,e.reprompt=i.CipherRepromptType.None,e}static toView(e,t=new s.CipherView){var n,o,a;if(t.type=e.type,t.folderId=e.folderId,null==t.organizationId&&(t.organizationId=e.organizationId),t.collectionIds||e.collectionIds){const i=new Set((null!==(n=t.collectionIds)&&void 0!==n?n:[]).concat(null!==(o=e.collectionIds)&&void 0!==o?o:[]));t.collectionIds=Array.from(i.values())}switch(t.name=e.name,t.notes=e.notes,t.favorite=e.favorite,t.reprompt=null!==(a=e.reprompt)&&void 0!==a?a:i.CipherRepromptType.None,null!=e.fields&&(t.fields=e.fields.map((e=>c.FieldExport.toView(e)))),e.type){case r.CipherType.Login:t.login=p.LoginExport.toView(e.login);break;case r.CipherType.SecureNote:t.secureNote=u.SecureNoteExport.toView(e.secureNote);break;case r.CipherType.Card:t.card=l.CardExport.toView(e.card);break;case r.CipherType.Identity:t.identity=d.IdentityExport.toView(e.identity)}return t}static toDomain(e,t=new o.Cipher){var n;switch(t.type=e.type,t.folderId=e.folderId,null==t.organizationId&&(t.organizationId=e.organizationId),t.name=null!=e.name?new a.EncString(e.name):null,t.notes=null!=e.notes?new a.EncString(e.notes):null,t.favorite=e.favorite,t.reprompt=null!==(n=e.reprompt)&&void 0!==n?n:i.CipherRepromptType.None,null!=e.fields&&(t.fields=e.fields.map((e=>c.FieldExport.toDomain(e)))),e.type){case r.CipherType.Login:t.login=p.LoginExport.toDomain(e.login);break;case r.CipherType.SecureNote:t.secureNote=u.SecureNoteExport.toDomain(e.secureNote);break;case r.CipherType.Card:t.card=l.CardExport.toDomain(e.card);break;case r.CipherType.Identity:t.identity=d.IdentityExport.toDomain(e.identity)}return t}build(e){var t,n;switch(this.organizationId=e.organizationId,this.folderId=e.folderId,this.type=e.type,this.reprompt=e.reprompt,e instanceof s.CipherView?(this.name=e.name,this.notes=e.notes):(this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.notes=null===(n=e.notes)||void 0===n?void 0:n.encryptedString),this.favorite=e.favorite,null!=e.fields&&(s.CipherView,this.fields=e.fields.map((e=>new c.FieldExport(e)))),e.type){case r.CipherType.Login:this.login=new p.LoginExport(e.login);break;case r.CipherType.SecureNote:this.secureNote=new u.SecureNoteExport(e.secureNote);break;case r.CipherType.Card:this.card=new l.CardExport(e.card);break;case r.CipherType.Identity:this.identity=new d.IdentityExport(e.identity)}}}t.CipherExport=m},83460:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherWithIdExport=void 0;const i=n(54655);class r extends i.CipherExport{build(e){this.id=e.id,super.build(e),this.collectionIds=e.collectionIds}}t.CipherWithIdExport=r},21923:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionExport=void 0;const i=n(65642),r=n(22205),o=n(86001);class a{static template(){const e=new a;return e.organizationId="00000000-0000-0000-0000-000000000000",e.name="Collection name",e.externalId=null,e}static toView(e,t=new o.CollectionView){return t.name=e.name,t.externalId=e.externalId,null==t.organizationId&&(t.organizationId=e.organizationId),t}static toDomain(e,t=new i.Collection){return t.name=null!=e.name?new r.EncString(e.name):null,t.externalId=e.externalId,null==t.organizationId&&(t.organizationId=e.organizationId),t}build(e){var t;this.organizationId=e.organizationId,e instanceof o.CollectionView?this.name=e.name:this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.externalId=e.externalId}}t.CollectionExport=a},5136:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionWithIdExport=void 0;const i=n(21923);class r extends i.CollectionExport{build(e){this.id=e.id,super.build(e)}}t.CollectionWithIdExport=r},42587:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventExport=void 0;const i=n(80253);t.EventExport=class{constructor(e){this.message=e.humanReadableMessage,this.appIcon=e.appIcon,this.appName=e.appName,this.userId=e.userId,this.userName=e.userName,this.userEmail=e.userEmail,this.date=e.date,this.ip=e.ip,this.type=i.EventType[e.type],this.installationId=e.installationId}}},85890:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldExport=void 0;const i=n(67577),r=n(22205),o=n(84379),a=n(58545);class s{constructor(e){var t,n;null!=e&&(e instanceof a.FieldView?(this.name=e.name,this.value=e.value):(this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.value=null===(n=e.value)||void 0===n?void 0:n.encryptedString),this.type=e.type,this.linkedId=e.linkedId)}static template(){const e=new s;return e.name="Field name",e.value="Some value",e.type=i.FieldType.Text,e}static toView(e,t=new a.FieldView){return t.type=e.type,t.value=e.value,t.name=e.name,t.linkedId=e.linkedId,t}static toDomain(e,t=new o.Field){return t.type=e.type,t.value=null!=e.value?new r.EncString(e.value):null,t.name=null!=e.name?new r.EncString(e.name):null,t.linkedId=e.linkedId,t}}t.FieldExport=s},8787:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderExport=void 0;const i=n(22205),r=n(59738),o=n(36914);class a{static template(){const e=new a;return e.name="Folder name",e}static toView(e,t=new o.FolderView){return t.name=e.name,t}static toDomain(e,t=new r.Folder){return t.name=null!=e.name?new i.EncString(e.name):null,t}build(e){var t;e instanceof o.FolderView?this.name=e.name:this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString}}t.FolderExport=a},31087:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderWithIdExport=void 0;const i=n(8787);class r extends i.FolderExport{build(e){this.id=e.id,super.build(e)}}t.FolderWithIdExport=r},90397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityExport=void 0;const i=n(22205),r=n(809),o=n(48830);class a{constructor(e){var t,n,i,r,a,s,l,c,d,p,u,m,h,v,g,f,y,x;null!=e&&(e instanceof o.IdentityView?(this.title=e.title,this.firstName=e.firstName,this.middleName=e.middleName,this.lastName=e.lastName,this.address1=e.address1,this.address2=e.address2,this.address3=e.address3,this.city=e.city,this.state=e.state,this.postalCode=e.postalCode,this.country=e.country,this.company=e.company,this.email=e.email,this.phone=e.phone,this.ssn=e.ssn,this.username=e.username,this.passportNumber=e.passportNumber,this.licenseNumber=e.licenseNumber):(this.title=null===(t=e.title)||void 0===t?void 0:t.encryptedString,this.firstName=null===(n=e.firstName)||void 0===n?void 0:n.encryptedString,this.middleName=null===(i=e.middleName)||void 0===i?void 0:i.encryptedString,this.lastName=null===(r=e.lastName)||void 0===r?void 0:r.encryptedString,this.address1=null===(a=e.address1)||void 0===a?void 0:a.encryptedString,this.address2=null===(s=e.address2)||void 0===s?void 0:s.encryptedString,this.address3=null===(l=e.address3)||void 0===l?void 0:l.encryptedString,this.city=null===(c=e.city)||void 0===c?void 0:c.encryptedString,this.state=null===(d=e.state)||void 0===d?void 0:d.encryptedString,this.postalCode=null===(p=e.postalCode)||void 0===p?void 0:p.encryptedString,this.country=null===(u=e.country)||void 0===u?void 0:u.encryptedString,this.company=null===(m=e.company)||void 0===m?void 0:m.encryptedString,this.email=null===(h=e.email)||void 0===h?void 0:h.encryptedString,this.phone=null===(v=e.phone)||void 0===v?void 0:v.encryptedString,this.ssn=null===(g=e.ssn)||void 0===g?void 0:g.encryptedString,this.username=null===(f=e.username)||void 0===f?void 0:f.encryptedString,this.passportNumber=null===(y=e.passportNumber)||void 0===y?void 0:y.encryptedString,this.licenseNumber=null===(x=e.licenseNumber)||void 0===x?void 0:x.encryptedString))}static template(){const e=new a;return e.title="Mr",e.firstName="John",e.middleName="William",e.lastName="Doe",e.address1="123 Any St",e.address2="Apt #123",e.address3=null,e.city="New York",e.state="NY",e.postalCode="10001",e.country="US",e.company="Acme Inc.",e.email="john@company.com",e.phone="5555551234",e.ssn="000-123-4567",e.username="jdoe",e.passportNumber="US-123456789",e.licenseNumber="D123-12-123-12333",e}static toView(e,t=new o.IdentityView){return t.title=e.title,t.firstName=e.firstName,t.middleName=e.middleName,t.lastName=e.lastName,t.address1=e.address1,t.address2=e.address2,t.address3=e.address3,t.city=e.city,t.state=e.state,t.postalCode=e.postalCode,t.country=e.country,t.company=e.company,t.email=e.email,t.phone=e.phone,t.ssn=e.ssn,t.username=e.username,t.passportNumber=e.passportNumber,t.licenseNumber=e.licenseNumber,t}static toDomain(e,t=new r.Identity){return t.title=null!=e.title?new i.EncString(e.title):null,t.firstName=null!=e.firstName?new i.EncString(e.firstName):null,t.middleName=null!=e.middleName?new i.EncString(e.middleName):null,t.lastName=null!=e.lastName?new i.EncString(e.lastName):null,t.address1=null!=e.address1?new i.EncString(e.address1):null,t.address2=null!=e.address2?new i.EncString(e.address2):null,t.address3=null!=e.address3?new i.EncString(e.address3):null,t.city=null!=e.city?new i.EncString(e.city):null,t.state=null!=e.state?new i.EncString(e.state):null,t.postalCode=null!=e.postalCode?new i.EncString(e.postalCode):null,t.country=null!=e.country?new i.EncString(e.country):null,t.company=null!=e.company?new i.EncString(e.company):null,t.email=null!=e.email?new i.EncString(e.email):null,t.phone=null!=e.phone?new i.EncString(e.phone):null,t.ssn=null!=e.ssn?new i.EncString(e.ssn):null,t.username=null!=e.username?new i.EncString(e.username):null,t.passportNumber=null!=e.passportNumber?new i.EncString(e.passportNumber):null,t.licenseNumber=null!=e.licenseNumber?new i.EncString(e.licenseNumber):null,t}}t.IdentityExport=a},35473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginExport=void 0;const i=n(22205),r=n(89642),o=n(28331),a=n(34931);class s{constructor(e){var t,n,i;null!=e&&(null!=e.uris&&(o.LoginView,this.uris=e.uris.map((e=>new a.LoginUriExport(e)))),e instanceof o.LoginView?(this.username=e.username,this.password=e.password,this.totp=e.totp):(this.username=null===(t=e.username)||void 0===t?void 0:t.encryptedString,this.password=null===(n=e.password)||void 0===n?void 0:n.encryptedString,this.totp=null===(i=e.totp)||void 0===i?void 0:i.encryptedString))}static template(){const e=new s;return e.uris=[],e.username="jdoe",e.password="myp@ssword123",e.totp="JBSWY3DPEHPK3PXP",e}static toView(e,t=new o.LoginView){return null!=e.uris&&(t.uris=e.uris.map((e=>a.LoginUriExport.toView(e)))),t.username=e.username,t.password=e.password,t.totp=e.totp,t}static toDomain(e,t=new r.Login){return null!=e.uris&&(t.uris=e.uris.map((e=>a.LoginUriExport.toDomain(e)))),t.username=null!=e.username?new i.EncString(e.username):null,t.password=null!=e.password?new i.EncString(e.password):null,t.totp=null!=e.totp?new i.EncString(e.totp):null,t}}t.LoginExport=s},34931:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriExport=void 0;const i=n(22205),r=n(28947),o=n(16506);class a{constructor(e){var t;this.match=null,null!=e&&(e instanceof o.LoginUriView?this.uri=e.uri:this.uri=null===(t=e.uri)||void 0===t?void 0:t.encryptedString,this.match=e.match)}static template(){const e=new a;return e.uri="https://google.com",e.match=null,e}static toView(e,t=new o.LoginUriView){return t.uri=e.uri,t.match=e.match,t}static toDomain(e,t=new r.LoginUri){return t.uri=null!=e.uri?new i.EncString(e.uri):null,t.match=e.match,t}}t.LoginUriExport=a},46187:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteExport=void 0;const i=n(76716),r=n(7012),o=n(99364);class a{constructor(e){null!=e&&(this.type=e.type)}static template(){const e=new a;return e.type=i.SecureNoteType.Generic,e}static toView(e,t=new o.SecureNoteView){return t.type=e.type,t}static toDomain(e,t=new r.SecureNote){return t.type=e.type,t}}t.SecureNoteExport=a},50738:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetKeyConnectorKeyRequest=void 0;t.SetKeyConnectorKeyRequest=class{constructor(e,t,n,i,r){this.key=e,this.kdf=t,this.kdfIterations=n,this.orgIdentifier=i,this.keys=r}}},12680:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyOTPRequest=void 0;t.VerifyOTPRequest=class{constructor(e){this.OTP=e}}},84054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentRequest=void 0;t.AttachmentRequest=class{}},29602:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncConfigRequest=void 0;t.BillingSyncConfigRequest=class{constructor(e){this.billingSyncKey=e}}},34191:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitPayInvoiceRequest=void 0;t.BitPayInvoiceRequest=class{}},82890:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkDeleteRequest=void 0;t.CipherBulkDeleteRequest=class{constructor(e,t){this.ids=null==e?[]:e,this.organizationId=t}}},34392:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkMoveRequest=void 0;t.CipherBulkMoveRequest=class{constructor(e,t){this.ids=null==e?[]:e,this.folderId=t}}},8488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkRestoreRequest=void 0;t.CipherBulkRestoreRequest=class{constructor(e){this.ids=null==e?[]:e}}},61418:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkShareRequest=void 0;const i=n(24906);t.CipherBulkShareRequest=class{constructor(e,t){null!=e&&(this.ciphers=[],e.forEach((e=>{this.ciphers.push(new i.CipherWithIdRequest(e))}))),this.collectionIds=t}}},53994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherCollectionsRequest=void 0;t.CipherCollectionsRequest=class{constructor(e){this.collectionIds=null==e?[]:e}}},62415:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherCreateRequest=void 0;const i=n(16391);t.CipherCreateRequest=class{constructor(e){this.cipher=new i.CipherRequest(e),this.collectionIds=e.collectionIds}}},16391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherRequest=void 0;const i=n(32773),r=n(59773),o=n(9592),a=n(25327),s=n(89387),l=n(32357),c=n(3865),d=n(84054);t.CipherRequest=class{constructor(e){switch(this.type=e.type,this.folderId=e.folderId,this.organizationId=e.organizationId,this.name=e.name?e.name.encryptedString:null,this.notes=e.notes?e.notes.encryptedString:null,this.favorite=e.favorite,this.lastKnownRevisionDate=e.revisionDate,this.reprompt=e.reprompt,this.type){case i.CipherType.Login:this.login=new s.LoginApi,this.login.uris=null,this.login.username=e.login.username?e.login.username.encryptedString:null,this.login.password=e.login.password?e.login.password.encryptedString:null,this.login.passwordRevisionDate=null!=e.login.passwordRevisionDate?e.login.passwordRevisionDate.toISOString():null,this.login.totp=e.login.totp?e.login.totp.encryptedString:null,this.login.autofillOnPageLoad=e.login.autofillOnPageLoad,null!=e.login.uris&&(this.login.uris=e.login.uris.map((e=>{const t=new l.LoginUriApi;return t.uri=null!=e.uri?e.uri.encryptedString:null,t.match=null!=e.match?e.match:null,t})));break;case i.CipherType.SecureNote:this.secureNote=new c.SecureNoteApi,this.secureNote.type=e.secureNote.type;break;case i.CipherType.Card:this.card=new r.CardApi,this.card.cardholderName=null!=e.card.cardholderName?e.card.cardholderName.encryptedString:null,this.card.brand=null!=e.card.brand?e.card.brand.encryptedString:null,this.card.number=null!=e.card.number?e.card.number.encryptedString:null,this.card.expMonth=null!=e.card.expMonth?e.card.expMonth.encryptedString:null,this.card.expYear=null!=e.card.expYear?e.card.expYear.encryptedString:null,this.card.code=null!=e.card.code?e.card.code.encryptedString:null;break;case i.CipherType.Identity:this.identity=new a.IdentityApi,this.identity.title=null!=e.identity.title?e.identity.title.encryptedString:null,this.identity.firstName=null!=e.identity.firstName?e.identity.firstName.encryptedString:null,this.identity.middleName=null!=e.identity.middleName?e.identity.middleName.encryptedString:null,this.identity.lastName=null!=e.identity.lastName?e.identity.lastName.encryptedString:null,this.identity.address1=null!=e.identity.address1?e.identity.address1.encryptedString:null,this.identity.address2=null!=e.identity.address2?e.identity.address2.encryptedString:null,this.identity.address3=null!=e.identity.address3?e.identity.address3.encryptedString:null,this.identity.city=null!=e.identity.city?e.identity.city.encryptedString:null,this.identity.state=null!=e.identity.state?e.identity.state.encryptedString:null,this.identity.postalCode=null!=e.identity.postalCode?e.identity.postalCode.encryptedString:null,this.identity.country=null!=e.identity.country?e.identity.country.encryptedString:null,this.identity.company=null!=e.identity.company?e.identity.company.encryptedString:null,this.identity.email=null!=e.identity.email?e.identity.email.encryptedString:null,this.identity.phone=null!=e.identity.phone?e.identity.phone.encryptedString:null,this.identity.ssn=null!=e.identity.ssn?e.identity.ssn.encryptedString:null,this.identity.username=null!=e.identity.username?e.identity.username.encryptedString:null,this.identity.passportNumber=null!=e.identity.passportNumber?e.identity.passportNumber.encryptedString:null,this.identity.licenseNumber=null!=e.identity.licenseNumber?e.identity.licenseNumber.encryptedString:null}null!=e.fields&&(this.fields=e.fields.map((e=>{const t=new o.FieldApi;return t.type=e.type,t.name=e.name?e.name.encryptedString:null,t.value=e.value?e.value.encryptedString:null,t.linkedId=e.linkedId,t}))),null!=e.passwordHistory&&(this.passwordHistory=[],e.passwordHistory.forEach((e=>{this.passwordHistory.push({lastUsedDate:e.lastUsedDate,password:e.password?e.password.encryptedString:null})}))),null!=e.attachments&&(this.attachments={},this.attachments2={},e.attachments.forEach((e=>{const t=e.fileName?e.fileName.encryptedString:null;this.attachments[e.id]=t;const n=new d.AttachmentRequest;n.fileName=t,null!=e.key&&(n.key=e.key.encryptedString),this.attachments2[e.id]=n})))}}},3467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherShareRequest=void 0;const i=n(16391);t.CipherShareRequest=class{constructor(e){this.cipher=new i.CipherRequest(e),this.collectionIds=e.collectionIds}}},24906:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherWithIdRequest=void 0;const i=n(16391);class r extends i.CipherRequest{constructor(e){super(e),this.id=e.id}}t.CipherWithIdRequest=r},54554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionRequest=void 0;t.CollectionRequest=class{constructor(e){this.groups=[],null!=e&&(this.name=e.name?e.name.encryptedString:null,this.externalId=e.externalId)}}},12666:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteRecoverRequest=void 0;t.DeleteRecoverRequest=class{}},92829:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceRequest=void 0;t.DeviceRequest=class{constructor(e,t){this.type=t.getDevice(),this.name=t.getDeviceString(),this.identifier=e,this.pushToken=null}}},79669:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmailRequest=void 0;const i=n(8283);class r extends i.EmailTokenRequest{}t.EmailRequest=r},8283:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmailTokenRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.EmailTokenRequest=r},51128:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAcceptRequest=void 0;t.EmergencyAccessAcceptRequest=class{}},16657:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessConfirmRequest=void 0;t.EmergencyAccessConfirmRequest=class{}},85985:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessInviteRequest=void 0;t.EmergencyAccessInviteRequest=class{}},64288:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessPasswordRequest=void 0;t.EmergencyAccessPasswordRequest=class{}},8468:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessUpdateRequest=void 0;t.EmergencyAccessUpdateRequest=class{}},20604:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventRequest=void 0;t.EventRequest=class{}},16466:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderRequest=void 0;t.FolderRequest=class{constructor(e){this.name=e.name?e.name.encryptedString:null}}},49586:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderWithIdRequest=void 0;const i=n(16466);class r extends i.FolderRequest{constructor(e){super(e),this.id=e.id}}t.FolderWithIdRequest=r},13234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupRequest=void 0;t.GroupRequest=class{constructor(){this.collections=[]}}},81047:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiTokenRequest=void 0;const i=n(77886);class r extends i.TokenRequest{constructor(e,t,n,i){super(n,i),this.clientId=e,this.clientSecret=t,this.twoFactor=n}toIdentityToken(){const e=super.toIdentityToken(this.clientId);return e.scope=this.clientId.startsWith("organization")?"api.organization":"api",e.grant_type="client_credentials",e.client_secret=this.clientSecret,e}}t.ApiTokenRequest=r},10037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordTokenRequest=void 0;const i=n(82769),r=n(77886);class o extends r.TokenRequest{constructor(e,t,n,i,r){super(i,r),this.email=e,this.masterPasswordHash=t,this.captchaResponse=n,this.twoFactor=i}toIdentityToken(e){const t=super.toIdentityToken(e);return t.grant_type="password",t.username=this.email,t.password=this.masterPasswordHash,null!=this.captchaResponse&&(t.captchaResponse=this.captchaResponse),t}alterIdentityTokenHeaders(e){e.set("Auth-Email",i.Utils.fromUtf8ToUrlB64(this.email))}}t.PasswordTokenRequest=o},11685:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoTokenRequest=void 0;const i=n(77886);class r extends i.TokenRequest{constructor(e,t,n,i,r){super(i,r),this.code=e,this.codeVerifier=t,this.redirectUri=n,this.twoFactor=i}toIdentityToken(e){const t=super.toIdentityToken(e);return t.grant_type="authorization_code",t.code=this.code,t.code_verifier=this.codeVerifier,t.redirect_uri=this.redirectUri,t}}t.SsoTokenRequest=r},77886:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenRequest=void 0;t.TokenRequest=class{constructor(e,t){this.twoFactor=e,this.device=null!=t?t:null}alterIdentityTokenHeaders(e){}setTwoFactor(e){this.twoFactor=e}toIdentityToken(e){const t={scope:"api offline_access",client_id:e};return this.device&&(t.deviceType=this.device.type,t.deviceIdentifier=this.device.identifier,t.deviceName=this.device.name),this.twoFactor.token&&null!=this.twoFactor.provider&&(t.twoFactorToken=this.twoFactor.token,t.twoFactorProvider=this.twoFactor.provider,t.twoFactorRemember=this.twoFactor.remember?"1":"0"),t}}},74598:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenRequestTwoFactor=void 0;t.TokenRequestTwoFactor=class{constructor(e=null,t=null,n=!1){this.provider=e,this.token=t,this.remember=n}}},89537:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportCiphersRequest=void 0;t.ImportCiphersRequest=class{constructor(){this.ciphers=[],this.folders=[],this.folderRelationships=[]}}},85644:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportOrganizationCiphersRequest=void 0;t.ImportOrganizationCiphersRequest=class{constructor(){this.ciphers=[],this.collections=[],this.collectionRelationships=[]}}},17287:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KdfRequest=void 0;const i=n(49472);class r extends i.PasswordRequest{}t.KdfRequest=r},35711:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorUserKeyRequest=void 0;t.KeyConnectorUserKeyRequest=class{constructor(e){this.key=e}}},74284:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysRequest=void 0;t.KeysRequest=class{constructor(e,t){this.publicKey=e,this.encryptedPrivateKey=t}}},58795:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KvpRequest=void 0;t.KvpRequest=class{constructor(e,t){this.key=e,this.value=t}}},75118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSponsorshipRedeemRequest=void 0;t.OrganizationSponsorshipRedeemRequest=class{}},20577:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSsoRequest=void 0;t.OrganizationSsoRequest=class{constructor(){this.enabled=!1}}},32137:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyRequest=void 0;const i=n(43497),r=n(36119);class o extends r.SecretVerificationRequest{constructor(){super(...arguments),this.type=i.OrganizationApiKeyType.Default}}t.OrganizationApiKeyRequest=o},19036:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionRequest=void 0;t.OrganizationConnectionRequest=class{constructor(e,t,n,i){this.organizationId=e,this.type=t,this.enabled=n,this.config=i}}},7017:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationCreateRequest=void 0;t.OrganizationCreateRequest=class{}},39950:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationKeysRequest=void 0;const i=n(74284);class r extends i.KeysRequest{constructor(e,t){super(e,t)}}t.OrganizationKeysRequest=r},83828:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionUpdateRequest=void 0;t.OrganizationSubscriptionUpdateRequest=class{constructor(e,t){this.seatAdjustment=e,this.maxAutoscaleSeats=t}}},91260:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationTaxInfoUpdateRequest=void 0;const i=n(26374);class r extends i.TaxInfoUpdateRequest{}t.OrganizationTaxInfoUpdateRequest=r},20086:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUpdateRequest=void 0;t.OrganizationUpdateRequest=class{}},80006:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUpgradeRequest=void 0;t.OrganizationUpgradeRequest=class{}},1992:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserAcceptRequest=void 0;t.OrganizationUserAcceptRequest=class{}},23405:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkConfirmRequest=void 0;t.OrganizationUserBulkConfirmRequest=class{constructor(e){this.keys=e}}},91247:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkRequest=void 0;t.OrganizationUserBulkRequest=class{constructor(e){this.ids=null==e?[]:e}}},87169:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserConfirmRequest=void 0;t.OrganizationUserConfirmRequest=class{}},3714:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserInviteRequest=void 0;t.OrganizationUserInviteRequest=class{constructor(){this.emails=[],this.collections=[]}}},27784:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordEnrollmentRequest=void 0;t.OrganizationUserResetPasswordEnrollmentRequest=class{}},32593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordRequest=void 0;t.OrganizationUserResetPasswordRequest=class{}},50533:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserUpdateGroupsRequest=void 0;t.OrganizationUserUpdateGroupsRequest=class{constructor(){this.groupIds=[]}}},57981:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserUpdateRequest=void 0;t.OrganizationUserUpdateRequest=class{constructor(){this.collections=[]}}},77992:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHintRequest=void 0;t.PasswordHintRequest=class{constructor(e){this.email=e}}},49472:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.PasswordRequest=r},84707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentRequest=void 0;const i=n(91260);class r extends i.OrganizationTaxInfoUpdateRequest{}t.PaymentRequest=r},17200:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyRequest=void 0;t.PolicyRequest=class{}},59791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreloginRequest=void 0;t.PreloginRequest=class{constructor(e){this.email=e}}},47298:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderAddOrganizationRequest=void 0;t.ProviderAddOrganizationRequest=class{}},16567:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderOrganizationCreateRequest=void 0;t.ProviderOrganizationCreateRequest=class{constructor(e,t){this.clientOwnerEmail=e,this.organizationCreateRequest=t}}},22748:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderSetupRequest=void 0;t.ProviderSetupRequest=class{}},23839:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUpdateRequest=void 0;t.ProviderUpdateRequest=class{}},82900:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserAcceptRequest=void 0;t.ProviderUserAcceptRequest=class{}},64279:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkConfirmRequest=void 0;t.ProviderUserBulkConfirmRequest=class{constructor(e){this.keys=e}}},69316:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkRequest=void 0;t.ProviderUserBulkRequest=class{constructor(e){this.ids=null==e?[]:e}}},98407:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserConfirmRequest=void 0;t.ProviderUserConfirmRequest=class{}},7896:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserInviteRequest=void 0;t.ProviderUserInviteRequest=class{constructor(){this.emails=[]}}},731:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserUpdateRequest=void 0;t.ProviderUserUpdateRequest=class{}},90185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReferenceEventRequest=void 0;t.ReferenceEventRequest=class{}},6556:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterRequest=void 0;t.RegisterRequest=class{constructor(e,t,n,i,r,o,a,s,l){this.email=e,this.name=t,this.masterPasswordHash=n,this.key=r,this.kdf=o,this.kdfIterations=a,this.referenceData=s,this.captchaResponse=l,this.masterPasswordHint=i||null}}},36119:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecretVerificationRequest=void 0;t.SecretVerificationRequest=class{}},11342:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionReadOnlyRequest=void 0;t.SelectionReadOnlyRequest=class{constructor(e,t,n){this.id=e,this.readOnly=t,this.hidePasswords=n}}},74012:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessRequest=void 0;t.SendAccessRequest=class{}},34386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendRequest=void 0;const i=n(70149),r=n(39255),o=n(8057);t.SendRequest=class{constructor(e,t){switch(this.type=e.type,this.fileLength=t,this.name=e.name?e.name.encryptedString:null,this.notes=e.notes?e.notes.encryptedString:null,this.maxAccessCount=e.maxAccessCount,this.expirationDate=null!=e.expirationDate?e.expirationDate.toISOString():null,this.deletionDate=null!=e.deletionDate?e.deletionDate.toISOString():null,this.key=null!=e.key?e.key.encryptedString:null,this.password=e.password,this.disabled=e.disabled,this.hideEmail=e.hideEmail,this.type){case i.SendType.Text:this.text=new o.SendTextApi,this.text.text=null!=e.text.text?e.text.text.encryptedString:null,this.text.hidden=e.text.hidden;break;case i.SendType.File:this.file=new r.SendFileApi,this.file.fileName=null!=e.file.fileName?e.file.fileName.encryptedString:null}}}},12909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendWithIdRequest=void 0;const i=n(34386);class r extends i.SendRequest{constructor(e){super(e),this.id=e.id}}t.SendWithIdRequest=r},57751:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordRequest=void 0;t.SetPasswordRequest=class{constructor(e,t,n,i,r,o,a){this.masterPasswordHash=e,this.key=t,this.masterPasswordHint=n,this.kdf=i,this.kdfIterations=r,this.orgIdentifier=o,this.keys=a}}},78703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageRequest=void 0;t.StorageRequest=class{}},26374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoUpdateRequest=void 0;t.TaxInfoUpdateRequest=class{}},88307:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorEmailRequest=r},40205:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorProviderRequest=r},6188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoveryRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorRecoveryRequest=r},55785:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateDomainsRequest=void 0;t.UpdateDomainsRequest=class{}},93357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateKeyRequest=void 0;t.UpdateKeyRequest=class{constructor(){this.ciphers=[],this.folders=[],this.sends=[]}}},82567:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateProfileRequest=void 0;t.UpdateProfileRequest=class{constructor(e,t){this.culture="en-US",this.name=e,this.masterPasswordHint=t||null}}},55931:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordRequest=void 0;const i=n(32593);class r extends i.OrganizationUserResetPasswordRequest{}t.UpdateTempPasswordRequest=r},57952:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorAuthenticatorRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorAuthenticatorRequest=r},37682:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorDuoRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorDuoRequest=r},3191:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorEmailRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorEmailRequest=r},40088:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorWebAuthnDeleteRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorWebAuthnDeleteRequest=r},72842:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorWebAuthnRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorWebAuthnRequest=r},17128:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorYubioOtpRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorYubioOtpRequest=r},85314:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyBankRequest=void 0;t.VerifyBankRequest=class{}},25086:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyDeleteRecoverRequest=void 0;t.VerifyDeleteRecoverRequest=class{constructor(e,t){this.userId=e,this.token=t}}},81106:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailRequest=void 0;t.VerifyEmailRequest=class{constructor(e,t){this.userId=e,this.token=t}}},92666:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.apiKey=this.getResponseProperty("ApiKey"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.ApiKeyResponse=r},33146:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.url=this.getResponseProperty("Url"),this.fileName=this.getResponseProperty("FileName"),this.key=this.getResponseProperty("Key"),this.size=this.getResponseProperty("Size"),this.sizeName=this.getResponseProperty("SizeName")}}t.AttachmentResponse=r},15487:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentUploadDataResponse=void 0;const i=n(17273),r=n(31238);class o extends i.BaseResponse{constructor(e){super(e),this.url=null,this.attachmentId=this.getResponseProperty("AttachmentId"),this.fileUploadType=this.getResponseProperty("FileUploadType");const t=this.getResponseProperty("CipherResponse"),n=this.getResponseProperty("CipherMiniResponse");this.cipherResponse=null==t?null:new r.CipherResponse(t),this.cipherMiniResponse=null==n?null:new r.CipherResponse(n),this.url=this.getResponseProperty("Url")}}t.AttachmentUploadDataResponse=o},17273:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResponse=void 0;t.BaseResponse=class{constructor(e){this.response=e}getResponseProperty(e,t=null,n=!1){if(null==e||""===e)throw new Error("propertyName must not be null/empty.");if(null==t&&null!=this.response&&(t=this.response),null==t)return null;if(!n&&void 0===t[e]){let n=null;n=e.charAt(0)===e.charAt(0).toUpperCase()?e.charAt(0).toLowerCase():e.charAt(0).toUpperCase(),e.length>1&&(n+=e.slice(1)),void 0===t[e=n]&&(e=e.toLowerCase()),void 0===t[e]&&(e=e.toUpperCase())}return t[e]}}},56215:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingHistoryResponse=void 0;const i=n(17273),r=n(61700);class o extends i.BaseResponse{constructor(e){super(e),this.invoices=[],this.transactions=[];const t=this.getResponseProperty("Transactions"),n=this.getResponseProperty("Invoices");null!=t&&(this.transactions=t.map((e=>new r.BillingTransactionResponse(e)))),null!=n&&(this.invoices=n.map((e=>new r.BillingInvoiceResponse(e))))}get hasNoHistory(){return 0==this.invoices.length&&0==this.transactions.length}}t.BillingHistoryResponse=o},90070:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingPaymentResponse=void 0;const i=n(17273),r=n(61700);class o extends i.BaseResponse{constructor(e){super(e),this.balance=this.getResponseProperty("Balance");const t=this.getResponseProperty("PaymentSource");this.paymentSource=null==t?null:new r.BillingSourceResponse(t)}}t.BillingPaymentResponse=o},61700:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingTransactionResponse=t.BillingInvoiceResponse=t.BillingSourceResponse=t.BillingResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.invoices=[],this.transactions=[],this.balance=this.getResponseProperty("Balance");const t=this.getResponseProperty("PaymentSource"),n=this.getResponseProperty("Transactions"),i=this.getResponseProperty("Invoices");this.paymentSource=null==t?null:new o(t),null!=n&&(this.transactions=n.map((e=>new s(e)))),null!=i&&(this.invoices=i.map((e=>new a(e))))}}t.BillingResponse=r;class o extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.cardBrand=this.getResponseProperty("CardBrand"),this.description=this.getResponseProperty("Description"),this.needsVerification=this.getResponseProperty("NeedsVerification")}}t.BillingSourceResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.url=this.getResponseProperty("Url"),this.pdfUrl=this.getResponseProperty("PdfUrl"),this.number=this.getResponseProperty("Number"),this.paid=this.getResponseProperty("Paid"),this.date=this.getResponseProperty("Date"),this.amount=this.getResponseProperty("Amount")}}t.BillingInvoiceResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.createdDate=this.getResponseProperty("CreatedDate"),this.amount=this.getResponseProperty("Amount"),this.refunded=this.getResponseProperty("Refunded"),this.partiallyRefunded=this.getResponseProperty("PartiallyRefunded"),this.refundedAmount=this.getResponseProperty("RefundedAmount"),this.type=this.getResponseProperty("Type"),this.paymentMethodType=this.getResponseProperty("PaymentMethodType"),this.details=this.getResponseProperty("Details")}}t.BillingTransactionResponse=s},15461:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BreachAccountResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.addedDate=this.getResponseProperty("AddedDate"),this.breachDate=this.getResponseProperty("BreachDate"),this.dataClasses=this.getResponseProperty("DataClasses"),this.description=this.getResponseProperty("Description"),this.domain=this.getResponseProperty("Domain"),this.isActive=this.getResponseProperty("IsActive"),this.isVerified=this.getResponseProperty("IsVerified"),this.logoPath=this.getResponseProperty("LogoPath"),this.modifiedDate=this.getResponseProperty("ModifiedDate"),this.name=this.getResponseProperty("Name"),this.pwnCount=this.getResponseProperty("PwnCount"),this.title=this.getResponseProperty("Title")}}t.BreachAccountResponse=r},31238:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherResponse=void 0;const i=n(34453),r=n(59773),o=n(9592),a=n(25327),s=n(89387),l=n(3865),c=n(33146),d=n(17273),p=n(43567);class u extends d.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.folderId=this.getResponseProperty("FolderId")||null,this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.notes=this.getResponseProperty("Notes"),this.favorite=this.getResponseProperty("Favorite")||!1,this.edit=!!this.getResponseProperty("Edit"),null==this.getResponseProperty("ViewPassword")?this.viewPassword=!0:this.viewPassword=this.getResponseProperty("ViewPassword"),this.organizationUseTotp=this.getResponseProperty("OrganizationUseTotp"),this.revisionDate=this.getResponseProperty("RevisionDate"),this.collectionIds=this.getResponseProperty("CollectionIds"),this.deletedDate=this.getResponseProperty("DeletedDate");const t=this.getResponseProperty("Login");null!=t&&(this.login=new s.LoginApi(t));const n=this.getResponseProperty("Card");null!=n&&(this.card=new r.CardApi(n));const d=this.getResponseProperty("Identity");null!=d&&(this.identity=new a.IdentityApi(d));const u=this.getResponseProperty("SecureNote");null!=u&&(this.secureNote=new l.SecureNoteApi(u));const m=this.getResponseProperty("Fields");null!=m&&(this.fields=m.map((e=>new o.FieldApi(e))));const h=this.getResponseProperty("Attachments");null!=h&&(this.attachments=h.map((e=>new c.AttachmentResponse(e))));const v=this.getResponseProperty("PasswordHistory");null!=v&&(this.passwordHistory=v.map((e=>new p.PasswordHistoryResponse(e)))),this.reprompt=this.getResponseProperty("Reprompt")||i.CipherRepromptType.None}}t.CipherResponse=u},11228:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionGroupDetailsResponse=t.CollectionDetailsResponse=t.CollectionResponse=void 0;const i=n(17273),r=n(61747);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.name=this.getResponseProperty("Name"),this.externalId=this.getResponseProperty("ExternalId")}}t.CollectionResponse=o;t.CollectionDetailsResponse=class extends o{constructor(e){super(e),this.readOnly=this.getResponseProperty("ReadOnly")||!1}};t.CollectionGroupDetailsResponse=class extends o{constructor(e){super(e),this.groups=[];const t=this.getResponseProperty("Groups");null!=t&&(this.groups=t.map((e=>new r.SelectionReadOnlyResponse(e))))}}},91266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainsResponse=void 0;const i=n(17273),r=n(89457);class o extends i.BaseResponse{constructor(e){super(e),this.globalEquivalentDomains=[],this.equivalentDomains=this.getResponseProperty("EquivalentDomains");const t=this.getResponseProperty("GlobalEquivalentDomains");this.globalEquivalentDomains=null!=t?t.map((e=>new r.GlobalDomainResponse(e))):[]}}t.DomainsResponse=o},50881:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessViewResponse=t.EmergencyAccessTakeoverResponse=t.EmergencyAccessGrantorDetailsResponse=t.EmergencyAccessGranteeDetailsResponse=void 0;const i=n(17273),r=n(31238);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.granteeId=this.getResponseProperty("GranteeId"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.waitTimeDays=this.getResponseProperty("WaitTimeDays"),this.creationDate=this.getResponseProperty("CreationDate")}}t.EmergencyAccessGranteeDetailsResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.grantorId=this.getResponseProperty("GrantorId"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.waitTimeDays=this.getResponseProperty("WaitTimeDays"),this.creationDate=this.getResponseProperty("CreationDate")}}t.EmergencyAccessGrantorDetailsResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.keyEncrypted=this.getResponseProperty("KeyEncrypted"),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations")}}t.EmergencyAccessTakeoverResponse=s;class l extends i.BaseResponse{constructor(e){super(e),this.ciphers=[],this.keyEncrypted=this.getResponseProperty("KeyEncrypted");const t=this.getResponseProperty("Ciphers");null!=t&&(this.ciphers=t.map((e=>new r.CipherResponse(e))))}}t.EmergencyAccessViewResponse=l},33018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorResponse=void 0;const i=n(82769),r=n(17273);class o extends r.BaseResponse{constructor(e,t,n){var r,o;super(e);let a=null;if(null!=e){const t=this.getResponseProperty("ErrorModel");a=t&&n?t:e}a?(this.message=this.getResponseProperty("Message",a),this.validationErrors=this.getResponseProperty("ValidationErrors",a),this.captchaSiteKey=null===(o=null===(r=this.validationErrors)||void 0===r?void 0:r.HCaptcha_SiteKey)||void 0===o?void 0:o[0],this.captchaRequired=!i.Utils.isNullOrWhitespace(this.captchaSiteKey)):429===t&&(this.message="Rate limit exceeded. Try again later."),this.statusCode=t}getSingleMessage(){if(null==this.validationErrors)return this.message;for(const e in this.validationErrors)if(this.validationErrors.hasOwnProperty(e)&&this.validationErrors[e].length)return this.validationErrors[e][0];return this.message}getAllMessages(){const e=[];if(null==this.validationErrors)return e;for(const t in this.validationErrors)this.validationErrors.hasOwnProperty(t)&&this.validationErrors[t].forEach((n=>{let i="";if(t.indexOf("[")>-1&&t.indexOf("]")>-1){const e=t.lastIndexOf(".");i=t.substr(0,e>-1?e:t.length)+": "}e.push(i+n)}));return e}}t.ErrorResponse=o},88850:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.userId=this.getResponseProperty("UserId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.providerId=this.getResponseProperty("ProviderId"),this.cipherId=this.getResponseProperty("CipherId"),this.collectionId=this.getResponseProperty("CollectionId"),this.groupId=this.getResponseProperty("GroupId"),this.policyId=this.getResponseProperty("PolicyId"),this.organizationUserId=this.getResponseProperty("OrganizationUserId"),this.providerUserId=this.getResponseProperty("ProviderUserId"),this.providerOrganizationId=this.getResponseProperty("ProviderOrganizationId"),this.actingUserId=this.getResponseProperty("ActingUserId"),this.date=this.getResponseProperty("Date"),this.deviceType=this.getResponseProperty("DeviceType"),this.ipAddress=this.getResponseProperty("IpAddress"),this.installationId=this.getResponseProperty("InstallationId")}}t.EventResponse=r},8823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.revisionDate=this.getResponseProperty("RevisionDate")}}t.FolderResponse=r},89457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalDomainResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.domains=this.getResponseProperty("Domains"),this.excluded=this.getResponseProperty("Excluded")}}t.GlobalDomainResponse=r},70529:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupDetailsResponse=t.GroupResponse=void 0;const i=n(17273),r=n(61747);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.name=this.getResponseProperty("Name"),this.accessAll=this.getResponseProperty("AccessAll"),this.externalId=this.getResponseProperty("ExternalId")}}t.GroupResponse=o;t.GroupDetailsResponse=class extends o{constructor(e){super(e),this.collections=[];const t=this.getResponseProperty("Collections");null!=t&&(this.collections=t.map((e=>new r.SelectionReadOnlyResponse(e))))}}},56659:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityCaptchaResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.siteKey=this.getResponseProperty("HCaptcha_SiteKey")}}t.IdentityCaptchaResponse=r},7269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityTokenResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.accessToken=e.access_token,this.expiresIn=e.expires_in,this.refreshToken=e.refresh_token,this.tokenType=e.token_type,this.resetMasterPassword=this.getResponseProperty("ResetMasterPassword"),this.privateKey=this.getResponseProperty("PrivateKey"),this.key=this.getResponseProperty("Key"),this.twoFactorToken=this.getResponseProperty("TwoFactorToken"),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations"),this.forcePasswordReset=this.getResponseProperty("ForcePasswordReset"),this.apiUseKeyConnector=this.getResponseProperty("ApiUseKeyConnector"),this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl")}}t.IdentityTokenResponse=r},38326:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityTwoFactorResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.twoFactorProviders2=new Map,this.captchaToken=this.getResponseProperty("CaptchaBypassToken"),this.twoFactorProviders=this.getResponseProperty("TwoFactorProviders");const t=this.getResponseProperty("TwoFactorProviders2");if(null!=t)for(const n in t)t.hasOwnProperty(n)&&this.twoFactorProviders2.set(parseInt(n,null),t[n])}}t.IdentityTwoFactorResponse=r},93140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorUserKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.key=this.getResponseProperty("Key")}}t.KeyConnectorUserKeyResponse=r},14325:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.privateKey=this.getResponseProperty("PrivateKey"),this.publicKey=this.getResponseProperty("PublicKey")}}t.KeysResponse=r},7865:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e,t){super(e);const n=this.getResponseProperty("Data");this.data=null==n?[]:n.map((e=>new t(e))),this.continuationToken=this.getResponseProperty("ContinuationToken")}}t.ListResponse=r},16178:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncSendNotification=t.UserNotification=t.SyncFolderNotification=t.SyncCipherNotification=t.NotificationResponse=void 0;const i=n(7837),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.contextId=this.getResponseProperty("ContextId"),this.type=this.getResponseProperty("Type");const t=this.getResponseProperty("Payload");switch(this.type){case i.NotificationType.SyncCipherCreate:case i.NotificationType.SyncCipherDelete:case i.NotificationType.SyncCipherUpdate:case i.NotificationType.SyncLoginDelete:this.payload=new a(t);break;case i.NotificationType.SyncFolderCreate:case i.NotificationType.SyncFolderDelete:case i.NotificationType.SyncFolderUpdate:this.payload=new s(t);break;case i.NotificationType.SyncVault:case i.NotificationType.SyncCiphers:case i.NotificationType.SyncOrgKeys:case i.NotificationType.SyncSettings:case i.NotificationType.LogOut:this.payload=new l(t);break;case i.NotificationType.SyncSendCreate:case i.NotificationType.SyncSendUpdate:case i.NotificationType.SyncSendDelete:this.payload=new c(t)}}}t.NotificationResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.collectionIds=this.getResponseProperty("CollectionIds"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncCipherNotification=a;class s extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncFolderNotification=s;class l extends r.BaseResponse{constructor(e){super(e),this.userId=this.getResponseProperty("UserId"),this.date=new Date(this.getResponseProperty("Date"))}}t.UserNotification=l;class c extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncSendNotification=c},57344:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSsoResponse=void 0;const i=n(21021),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.data=null!=this.getResponseProperty("Data")?new i.SsoConfigApi(this.getResponseProperty("Data")):null,this.urls=new a(this.getResponseProperty("Urls"))}}t.OrganizationSsoResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.callbackPath=this.getResponseProperty("CallbackPath"),this.signedOutCallbackPath=this.getResponseProperty("SignedOutCallbackPath"),this.spEntityId=this.getResponseProperty("SpEntityId"),this.spMetadataUrl=this.getResponseProperty("SpMetadataUrl"),this.spAcsUrl=this.getResponseProperty("SpAcsUrl")}}},53661:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyInformationResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.keyType=this.getResponseProperty("KeyType")}}t.OrganizationApiKeyInformationResponse=r},12386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationAutoEnrollStatusResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.resetPasswordEnabled=this.getResponseProperty("ResetPasswordEnabled")}}t.OrganizationAutoEnrollStatusResponse=r},27847:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e,t){super(e),this.id=this.getResponseProperty("Id"),this.type=this.getResponseProperty("Type"),this.organizationId=this.getResponseProperty("OrganizationId"),this.enabled=this.getResponseProperty("Enabled");const n=this.getResponseProperty("Config");this.config=null==n?null:new t(n)}}t.OrganizationConnectionResponse=r},37595:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationKeysResponse=void 0;const i=n(14325);class r extends i.KeysResponse{constructor(e){super(e)}}t.OrganizationKeysResponse=r},68673:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationResponse=void 0;const i=n(17273),r=n(88290);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.identifier=this.getResponseProperty("Identifier"),this.name=this.getResponseProperty("Name"),this.businessName=this.getResponseProperty("BusinessName"),this.businessAddress1=this.getResponseProperty("BusinessAddress1"),this.businessAddress2=this.getResponseProperty("BusinessAddress2"),this.businessAddress3=this.getResponseProperty("BusinessAddress3"),this.businessCountry=this.getResponseProperty("BusinessCountry"),this.businessTaxNumber=this.getResponseProperty("BusinessTaxNumber"),this.billingEmail=this.getResponseProperty("BillingEmail");const t=this.getResponseProperty("Plan");this.plan=null==t?null:new r.PlanResponse(t),this.planType=this.getResponseProperty("PlanType"),this.seats=this.getResponseProperty("Seats"),this.maxAutoscaleSeats=this.getResponseProperty("MaxAutoscaleSeats"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.useGroups=this.getResponseProperty("UseGroups"),this.useDirectory=this.getResponseProperty("UseDirectory"),this.useEvents=this.getResponseProperty("UseEvents"),this.useTotp=this.getResponseProperty("UseTotp"),this.use2fa=this.getResponseProperty("Use2fa"),this.useApi=this.getResponseProperty("UseApi"),this.useResetPassword=this.getResponseProperty("UseResetPassword"),this.hasPublicAndPrivateKeys=this.getResponseProperty("HasPublicAndPrivateKeys")}}t.OrganizationResponse=o},62560:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSponsorshipSyncStatusResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e);const t=this.getResponseProperty("LastSyncDate");t&&(this.lastSyncDate=new Date(t))}}t.OrganizationSponsorshipSyncStatusResponse=r},71098:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionResponse=void 0;const i=n(68673),r=n(71892);class o extends i.OrganizationResponse{constructor(e){super(e),this.storageName=this.getResponseProperty("StorageName"),this.storageGb=this.getResponseProperty("StorageGb");const t=this.getResponseProperty("Subscription");this.subscription=null==t?null:new r.BillingSubscriptionResponse(t);const n=this.getResponseProperty("UpcomingInvoice");this.upcomingInvoice=null==n?null:new r.BillingSubscriptionUpcomingInvoiceResponse(n),this.expiration=this.getResponseProperty("Expiration")}}t.OrganizationSubscriptionResponse=o},89072:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkPublicKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.key=this.getResponseProperty("Key")}}t.OrganizationUserBulkPublicKeyResponse=r},55022:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.error=this.getResponseProperty("Error")}}t.OrganizationUserBulkResponse=r},68749:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordDetailsReponse=t.OrganizationUserDetailsResponse=t.OrganizationUserUserDetailsResponse=t.OrganizationUserResponse=void 0;const i=n(96926),r=n(17273),o=n(61747);class a extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.permissions=new i.PermissionsApi(this.getResponseProperty("Permissions")),this.accessAll=this.getResponseProperty("AccessAll"),this.resetPasswordEnrolled=this.getResponseProperty("ResetPasswordEnrolled")}}t.OrganizationUserResponse=a;t.OrganizationUserUserDetailsResponse=class extends a{constructor(e){var t;super(e),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.twoFactorEnabled=this.getResponseProperty("TwoFactorEnabled"),this.usesKeyConnector=null!==(t=this.getResponseProperty("UsesKeyConnector"))&&void 0!==t&&t}};t.OrganizationUserDetailsResponse=class extends a{constructor(e){super(e),this.collections=[];const t=this.getResponseProperty("Collections");null!=t&&(this.collections=t.map((e=>new o.SelectionReadOnlyResponse(e))))}};class s extends r.BaseResponse{constructor(e){super(e),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations"),this.resetPasswordKey=this.getResponseProperty("ResetPasswordKey"),this.encryptedPrivateKey=this.getResponseProperty("EncryptedPrivateKey")}}t.OrganizationUserResetPasswordDetailsReponse=s},43567:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.password=this.getResponseProperty("Password"),this.lastUsedDate=this.getResponseProperty("LastUsedDate")}}t.PasswordHistoryResponse=r},38402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentResponse=void 0;const i=n(17273),r=n(59665);class o extends i.BaseResponse{constructor(e){super(e);const t=this.getResponseProperty("UserProfile");null!=t&&(this.userProfile=new r.ProfileResponse(t)),this.paymentIntentClientSecret=this.getResponseProperty("PaymentIntentClientSecret"),this.success=this.getResponseProperty("Success")}}t.PaymentResponse=o},88290:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.product=this.getResponseProperty("Product"),this.name=this.getResponseProperty("Name"),this.isAnnual=this.getResponseProperty("IsAnnual"),this.nameLocalizationKey=this.getResponseProperty("NameLocalizationKey"),this.descriptionLocalizationKey=this.getResponseProperty("DescriptionLocalizationKey"),this.canBeUsedByBusiness=this.getResponseProperty("CanBeUsedByBusiness"),this.baseSeats=this.getResponseProperty("BaseSeats"),this.baseStorageGb=this.getResponseProperty("BaseStorageGb"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxUsers=this.getResponseProperty("MaxUsers"),this.hasAdditionalSeatsOption=this.getResponseProperty("HasAdditionalSeatsOption"),this.maxAdditionalSeats=this.getResponseProperty("MaxAdditionalSeats"),this.hasAdditionalStorageOption=this.getResponseProperty("HasAdditionalStorageOption"),this.maxAdditionalStorage=this.getResponseProperty("MaxAdditionalStorage"),this.hasPremiumAccessOption=this.getResponseProperty("HasPremiumAccessOption"),this.trialPeriodDays=this.getResponseProperty("TrialPeriodDays"),this.hasSelfHost=this.getResponseProperty("HasSelfHost"),this.hasPolicies=this.getResponseProperty("HasPolicies"),this.hasGroups=this.getResponseProperty("HasGroups"),this.hasDirectory=this.getResponseProperty("HasDirectory"),this.hasEvents=this.getResponseProperty("HasEvents"),this.hasTotp=this.getResponseProperty("HasTotp"),this.has2fa=this.getResponseProperty("Has2fa"),this.hasApi=this.getResponseProperty("HasApi"),this.hasSso=this.getResponseProperty("HasSso"),this.hasResetPassword=this.getResponseProperty("HasResetPassword"),this.usersGetPremium=this.getResponseProperty("UsersGetPremium"),this.upgradeSortOrder=this.getResponseProperty("UpgradeSortOrder"),this.displaySortOrder=this.getResponseProperty("SortOrder"),this.legacyYear=this.getResponseProperty("LegacyYear"),this.disabled=this.getResponseProperty("Disabled"),this.stripePlanId=this.getResponseProperty("StripePlanId"),this.stripeSeatPlanId=this.getResponseProperty("StripeSeatPlanId"),this.stripeStoragePlanId=this.getResponseProperty("StripeStoragePlanId"),this.stripePremiumAccessPlanId=this.getResponseProperty("StripePremiumAccessPlanId"),this.basePrice=this.getResponseProperty("BasePrice"),this.seatPrice=this.getResponseProperty("SeatPrice"),this.additionalStoragePricePerGb=this.getResponseProperty("AdditionalStoragePricePerGb"),this.premiumAccessOptionPrice=this.getResponseProperty("PremiumAccessOptionPrice")}}t.PlanResponse=r},64030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.type=this.getResponseProperty("Type"),this.data=this.getResponseProperty("Data"),this.enabled=this.getResponseProperty("Enabled")}}t.PolicyResponse=r},52196:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreloginResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations")}}t.PreloginResponse=r},68475:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileOrganizationResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){var t,n;super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.usePolicies=this.getResponseProperty("UsePolicies"),this.useGroups=this.getResponseProperty("UseGroups"),this.useDirectory=this.getResponseProperty("UseDirectory"),this.useEvents=this.getResponseProperty("UseEvents"),this.useTotp=this.getResponseProperty("UseTotp"),this.use2fa=this.getResponseProperty("Use2fa"),this.useApi=this.getResponseProperty("UseApi"),this.useSso=this.getResponseProperty("UseSso"),this.useKeyConnector=null!==(t=this.getResponseProperty("UseKeyConnector"))&&void 0!==t&&t,this.useResetPassword=this.getResponseProperty("UseResetPassword"),this.selfHost=this.getResponseProperty("SelfHost"),this.usersGetPremium=this.getResponseProperty("UsersGetPremium"),this.seats=this.getResponseProperty("Seats"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.key=this.getResponseProperty("Key"),this.hasPublicAndPrivateKeys=this.getResponseProperty("HasPublicAndPrivateKeys"),this.status=this.getResponseProperty("Status"),this.type=this.getResponseProperty("Type"),this.enabled=this.getResponseProperty("Enabled"),this.ssoBound=this.getResponseProperty("SsoBound"),this.identifier=this.getResponseProperty("Identifier"),this.permissions=new i.PermissionsApi(this.getResponseProperty("permissions")),this.resetPasswordEnrolled=this.getResponseProperty("ResetPasswordEnrolled"),this.userId=this.getResponseProperty("UserId"),this.providerId=this.getResponseProperty("ProviderId"),this.providerName=this.getResponseProperty("ProviderName"),this.familySponsorshipFriendlyName=this.getResponseProperty("FamilySponsorshipFriendlyName"),this.familySponsorshipAvailable=this.getResponseProperty("FamilySponsorshipAvailable"),this.planProductType=this.getResponseProperty("PlanProductType"),this.keyConnectorEnabled=null!==(n=this.getResponseProperty("KeyConnectorEnabled"))&&void 0!==n&&n,this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl");const r=this.getResponseProperty("FamilySponsorshipLastSyncDate");r&&(this.familySponsorshipLastSyncDate=new Date(r));const o=this.getResponseProperty("FamilySponsorshipValidUntil");o&&(this.familySponsorshipValidUntil=new Date(o)),this.familySponsorshipToDelete=this.getResponseProperty("FamilySponsorshipToDelete")}}t.ProfileOrganizationResponse=o},13949:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileProviderOrganizationResponse=void 0;const i=n(68475);class r extends i.ProfileOrganizationResponse{constructor(e){super(e),this.keyConnectorEnabled=!1}}t.ProfileProviderOrganizationResponse=r},65116:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileProviderResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.key=this.getResponseProperty("Key"),this.status=this.getResponseProperty("Status"),this.type=this.getResponseProperty("Type"),this.enabled=this.getResponseProperty("Enabled"),this.permissions=new i.PermissionsApi(this.getResponseProperty("permissions")),this.userId=this.getResponseProperty("UserId"),this.useEvents=this.getResponseProperty("UseEvents")}}t.ProfileProviderResponse=o},59665:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileResponse=void 0;const i=n(17273),r=n(68475),o=n(13949),a=n(65116);class s extends i.BaseResponse{constructor(e){var t,n;super(e),this.organizations=[],this.providers=[],this.providerOrganizations=[],this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.emailVerified=this.getResponseProperty("EmailVerified"),this.masterPasswordHint=this.getResponseProperty("MasterPasswordHint"),this.premium=this.getResponseProperty("Premium"),this.culture=this.getResponseProperty("Culture"),this.twoFactorEnabled=this.getResponseProperty("TwoFactorEnabled"),this.key=this.getResponseProperty("Key"),this.privateKey=this.getResponseProperty("PrivateKey"),this.securityStamp=this.getResponseProperty("SecurityStamp"),this.forcePasswordReset=null!==(t=this.getResponseProperty("ForcePasswordReset"))&&void 0!==t&&t,this.usesKeyConnector=null!==(n=this.getResponseProperty("UsesKeyConnector"))&&void 0!==n&&n;const i=this.getResponseProperty("Organizations");null!=i&&(this.organizations=i.map((e=>new r.ProfileOrganizationResponse(e))));const s=this.getResponseProperty("Providers");null!=s&&(this.providers=s.map((e=>new a.ProfileProviderResponse(e))));const l=this.getResponseProperty("ProviderOrganizations");null!=l&&(this.providerOrganizations=l.map((e=>new o.ProfileProviderOrganizationResponse(e))))}}t.ProfileResponse=s},89001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderOrganizationOrganizationDetailsResponse=t.ProviderOrganizationResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.providerId=this.getResponseProperty("ProviderId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.key=this.getResponseProperty("Key"),this.settings=this.getResponseProperty("Settings"),this.creationDate=this.getResponseProperty("CreationDate"),this.revisionDate=this.getResponseProperty("RevisionDate")}}t.ProviderOrganizationResponse=r;t.ProviderOrganizationOrganizationDetailsResponse=class extends r{constructor(e){super(e),this.organizationName=this.getResponseProperty("OrganizationName")}}},98073:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.businessName=this.getResponseProperty("BusinessName"),this.billingEmail=this.getResponseProperty("BillingEmail")}}t.ProviderResponse=r},82842:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkPublicKeyResponse=void 0;const i=n(89072);class r extends i.OrganizationUserBulkPublicKeyResponse{}t.ProviderUserBulkPublicKeyResponse=r},62161:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.error=this.getResponseProperty("Error")}}t.ProviderUserBulkResponse=r},67177:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserUserDetailsResponse=t.ProviderUserResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.permissions=new i.PermissionsApi(this.getResponseProperty("Permissions"))}}t.ProviderUserResponse=o;t.ProviderUserUserDetailsResponse=class extends o{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email")}}},61747:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionReadOnlyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.readOnly=this.getResponseProperty("ReadOnly"),this.hidePasswords=this.getResponseProperty("HidePasswords")}}t.SelectionReadOnlyResponse=r},3882:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessResponse=void 0;const i=n(39255),r=n(8057),o=n(17273);class a extends o.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name");const t=this.getResponseProperty("Text");null!=t&&(this.text=new r.SendTextApi(t));const n=this.getResponseProperty("File");null!=n&&(this.file=new i.SendFileApi(n)),this.expirationDate=this.getResponseProperty("ExpirationDate"),this.creatorIdentifier=this.getResponseProperty("CreatorIdentifier")}}t.SendAccessResponse=a},56247:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileDownloadDataResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=null,this.url=null,this.id=this.getResponseProperty("Id"),this.url=this.getResponseProperty("Url")}}t.SendFileDownloadDataResponse=r},69654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileUploadDataResponse=void 0;const i=n(17273),r=n(22391);class o extends i.BaseResponse{constructor(e){super(e),this.url=null,this.fileUploadType=this.getResponseProperty("FileUploadType");const t=this.getResponseProperty("SendResponse");this.sendResponse=null==t?null:new r.SendResponse(t),this.url=this.getResponseProperty("Url")}}t.SendFileUploadDataResponse=o},22391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendResponse=void 0;const i=n(39255),r=n(8057),o=n(17273);class a extends o.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.accessId=this.getResponseProperty("AccessId"),this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.notes=this.getResponseProperty("Notes"),this.key=this.getResponseProperty("Key"),this.maxAccessCount=this.getResponseProperty("MaxAccessCount"),this.accessCount=this.getResponseProperty("AccessCount"),this.revisionDate=this.getResponseProperty("RevisionDate"),this.expirationDate=this.getResponseProperty("ExpirationDate"),this.deletionDate=this.getResponseProperty("DeletionDate"),this.password=this.getResponseProperty("Password"),this.disable=this.getResponseProperty("Disabled")||!1,this.hideEmail=this.getResponseProperty("HideEmail")||!1;const t=this.getResponseProperty("Text");null!=t&&(this.text=new r.SendTextApi(t));const n=this.getResponseProperty("File");null!=n&&(this.file=new i.SendFileApi(n))}}t.SendResponse=a},71892:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSubscriptionUpcomingInvoiceResponse=t.BillingSubscriptionItemResponse=t.BillingSubscriptionResponse=t.SubscriptionResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.storageName=this.getResponseProperty("StorageName"),this.storageGb=this.getResponseProperty("StorageGb"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.license=this.getResponseProperty("License"),this.expiration=this.getResponseProperty("Expiration"),this.usingInAppPurchase=this.getResponseProperty("UsingInAppPurchase");const t=this.getResponseProperty("Subscription"),n=this.getResponseProperty("UpcomingInvoice");this.subscription=null==t?null:new o(t),this.upcomingInvoice=null==n?null:new s(n)}}t.SubscriptionResponse=r;class o extends i.BaseResponse{constructor(e){super(e),this.items=[],this.trialEndDate=this.getResponseProperty("TrialStartDate"),this.trialEndDate=this.getResponseProperty("TrialEndDate"),this.periodStartDate=this.getResponseProperty("PeriodStartDate"),this.periodEndDate=this.getResponseProperty("PeriodEndDate"),this.cancelledDate=this.getResponseProperty("CancelledDate"),this.cancelAtEndDate=this.getResponseProperty("CancelAtEndDate"),this.status=this.getResponseProperty("Status"),this.cancelled=this.getResponseProperty("Cancelled");const t=this.getResponseProperty("Items");null!=t&&(this.items=t.map((e=>new a(e))))}}t.BillingSubscriptionResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.amount=this.getResponseProperty("Amount"),this.quantity=this.getResponseProperty("Quantity"),this.interval=this.getResponseProperty("Interval"),this.sponsoredSubscriptionItem=this.getResponseProperty("SponsoredSubscriptionItem")}}t.BillingSubscriptionItemResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.date=this.getResponseProperty("Date"),this.amount=this.getResponseProperty("Amount")}}t.BillingSubscriptionUpcomingInvoiceResponse=s},79230:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncResponse=void 0;const i=n(17273),r=n(31238),o=n(11228),a=n(91266),s=n(8823),l=n(64030),c=n(59665),d=n(22391);class p extends i.BaseResponse{constructor(e){super(e),this.folders=[],this.collections=[],this.ciphers=[],this.policies=[],this.sends=[];const t=this.getResponseProperty("Profile");null!=t&&(this.profile=new c.ProfileResponse(t));const n=this.getResponseProperty("Folders");null!=n&&(this.folders=n.map((e=>new s.FolderResponse(e))));const i=this.getResponseProperty("Collections");null!=i&&(this.collections=i.map((e=>new o.CollectionDetailsResponse(e))));const p=this.getResponseProperty("Ciphers");null!=p&&(this.ciphers=p.map((e=>new r.CipherResponse(e))));const u=this.getResponseProperty("Domains");null!=u&&(this.domains=new a.DomainsResponse(u));const m=this.getResponseProperty("Policies");null!=m&&(this.policies=m.map((e=>new l.PolicyResponse(e))));const h=this.getResponseProperty("Sends");null!=h&&(this.sends=h.map((e=>new d.SendResponse(e))))}}t.SyncResponse=p},10273:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.taxId=this.getResponseProperty("TaxIdNumber"),this.taxIdType=this.getResponseProperty("TaxIdType"),this.line1=this.getResponseProperty("Line1"),this.line2=this.getResponseProperty("Line2"),this.city=this.getResponseProperty("City"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.country=this.getResponseProperty("Country")}}t.TaxInfoResponse=r},67955:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxRateResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.country=this.getResponseProperty("Country"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.rate=this.getResponseProperty("Rate")}}t.TaxRateResponse=r},1244:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticatorResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.key=this.getResponseProperty("Key")}}t.TwoFactorAuthenticatorResponse=r},33111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorDuoResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.host=this.getResponseProperty("Host"),this.secretKey=this.getResponseProperty("SecretKey"),this.integrationKey=this.getResponseProperty("IntegrationKey")}}t.TwoFactorDuoResponse=r},88540:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.email=this.getResponseProperty("Email")}}t.TwoFactorEmailResponse=r},50891:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.type=this.getResponseProperty("Type")}}t.TwoFactorProviderResponse=r},40387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoverResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.code=this.getResponseProperty("Code")}}t.TwoFactorRecoverResponse=r},61329:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChallengeResponse=t.KeyResponse=t.TwoFactorWebAuthnResponse=void 0;const i=n(82769),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled");const t=this.getResponseProperty("Keys");this.keys=null==t?null:t.map((e=>new a(e)))}}t.TwoFactorWebAuthnResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.id=this.getResponseProperty("Id"),this.migrated=this.getResponseProperty("Migrated")}}t.KeyResponse=a;class s extends r.BaseResponse{constructor(e){super(e),this.attestation=this.getResponseProperty("attestation"),this.authenticatorSelection=this.getResponseProperty("authenticatorSelection"),this.challenge=i.Utils.fromUrlB64ToArray(this.getResponseProperty("challenge")),this.excludeCredentials=this.getResponseProperty("excludeCredentials").map((e=>(e.id=i.Utils.fromUrlB64ToArray(e.id).buffer,e))),this.extensions=this.getResponseProperty("extensions"),this.pubKeyCredParams=this.getResponseProperty("pubKeyCredParams"),this.rp=this.getResponseProperty("rp"),this.timeout=this.getResponseProperty("timeout");const t=this.getResponseProperty("user");t.id=i.Utils.fromUrlB64ToArray(t.id),this.user=t}}t.ChallengeResponse=s},78086:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorYubiKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.key1=this.getResponseProperty("Key1"),this.key2=this.getResponseProperty("Key2"),this.key3=this.getResponseProperty("Key3"),this.key4=this.getResponseProperty("Key4"),this.key5=this.getResponseProperty("Key5"),this.nfc=this.getResponseProperty("Nfc")}}t.TwoFactorYubiKeyResponse=r},86457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.userId=this.getResponseProperty("UserId"),this.publicKey=this.getResponseProperty("PublicKey")}}t.UserKeyResponse=r},57759:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentView=void 0;t.AttachmentView=class{constructor(e){this.id=null,this.url=null,this.size=null,this.sizeName=null,this.fileName=null,this.key=null,e&&(this.id=e.id,this.url=e.url,this.size=e.size,this.sizeName=e.sizeName)}get fileSize(){try{if(null!=this.size)return parseInt(this.size,null)}catch(e){}return 0}}},91766:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CardView=void 0;const o=n(31909),a=n(60628),s=n(63262);class l extends s.ItemView{constructor(){super(),this.cardholderName=null,this.expMonth=null,this.expYear=null,this.code=null,this._brand=null,this._number=null,this._subTitle=null}get maskedCode(){return null!=this.code?"•".repeat(this.code.length):null}get maskedNumber(){return null!=this.number?"•".repeat(this.number.length):null}get brand(){return this._brand}set brand(e){this._brand=e,this._subTitle=null}get number(){return this._number}set number(e){this._number=e,this._subTitle=null}get subTitle(){if(null==this._subTitle&&(this._subTitle=this.brand,null!=this.number&&this.number.length>=4)){null!=this._subTitle&&""!==this._subTitle?this._subTitle+=", ":this._subTitle="";const e=this.number.length>=5&&null!=this.number.match(new RegExp("^3[47]"))?5:4;this._subTitle+="*"+this.number.substr(this.number.length-e)}return this._subTitle}get expiration(){if(!this.expMonth&&!this.expYear)return null;let e=null!=this.expMonth?("0"+this.expMonth).slice(-2):"__";return e+=" / "+(null!=this.expYear?this.formatYear(this.expYear):"____"),e}formatYear(e){return 2===e.length?"20"+e:e}}i([a.linkedFieldOption(o.CardLinkedId.CardholderName),r("design:type",String)],l.prototype,"cardholderName",void 0),i([a.linkedFieldOption(o.CardLinkedId.ExpMonth,"expirationMonth"),r("design:type",String)],l.prototype,"expMonth",void 0),i([a.linkedFieldOption(o.CardLinkedId.ExpYear,"expirationYear"),r("design:type",String)],l.prototype,"expYear",void 0),i([a.linkedFieldOption(o.CardLinkedId.Code,"securityCode"),r("design:type",String)],l.prototype,"code",void 0),i([a.linkedFieldOption(o.CardLinkedId.Brand),r("design:type",String),r("design:paramtypes",[String])],l.prototype,"brand",null),i([a.linkedFieldOption(o.CardLinkedId.Number),r("design:type",String),r("design:paramtypes",[String])],l.prototype,"number",null),t.CardView=l},97144:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherView=void 0;const i=n(34453),r=n(32773),o=n(91766),a=n(48830),s=n(28331),l=n(99364);t.CipherView=class{constructor(e){var t;this.id=null,this.organizationId=null,this.folderId=null,this.name=null,this.notes=null,this.type=null,this.favorite=!1,this.organizationUseTotp=!1,this.edit=!1,this.viewPassword=!0,this.login=new s.LoginView,this.identity=new a.IdentityView,this.card=new o.CardView,this.secureNote=new l.SecureNoteView,this.attachments=null,this.fields=null,this.passwordHistory=null,this.collectionIds=null,this.revisionDate=null,this.deletedDate=null,this.reprompt=i.CipherRepromptType.None,e&&(this.id=e.id,this.organizationId=e.organizationId,this.folderId=e.folderId,this.favorite=e.favorite,this.organizationUseTotp=e.organizationUseTotp,this.edit=e.edit,this.viewPassword=e.viewPassword,this.type=e.type,this.localData=e.localData,this.collectionIds=e.collectionIds,this.revisionDate=e.revisionDate,this.deletedDate=e.deletedDate,this.reprompt=null!==(t=e.reprompt)&&void 0!==t?t:i.CipherRepromptType.None)}get item(){switch(this.type){case r.CipherType.Login:return this.login;case r.CipherType.SecureNote:return this.secureNote;case r.CipherType.Card:return this.card;case r.CipherType.Identity:return this.identity}return null}get subTitle(){return this.item.subTitle}get hasPasswordHistory(){return this.passwordHistory&&this.passwordHistory.length>0}get hasAttachments(){return this.attachments&&this.attachments.length>0}get hasOldAttachments(){if(this.hasAttachments)for(let e=0;e0}get passwordRevisionDisplayDate(){return this.type!==r.CipherType.Login||null==this.login||null==this.login.password||""===this.login.password?null:this.login.passwordRevisionDate}get isDeleted(){return null!=this.deletedDate}get linkedFieldOptions(){return this.item.linkedFieldOptions}linkedFieldValue(e){var t;const n=null===(t=this.linkedFieldOptions)||void 0===t?void 0:t.get(e);if(null==n)return null;this.item;return this.item[n.propertyKey]}linkedFieldI18nKey(e){var t;return null===(t=this.linkedFieldOptions.get(e))||void 0===t?void 0:t.i18nKey}}},86001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionView=void 0;const i=n(65642);t.CollectionView=class{constructor(e){this.id=null,this.organizationId=null,this.name=null,this.externalId=null,this.readOnly=null,this.hidePasswords=null,e&&(this.id=e.id,this.organizationId=e.organizationId,this.externalId=e.externalId,e instanceof i.Collection&&(this.readOnly=e.readOnly,this.hidePasswords=e.hidePasswords))}}},63412:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventView=void 0;t.EventView=class{constructor(e){this.message=e.message,this.humanReadableMessage=e.humanReadableMessage,this.appIcon=e.appIcon,this.appName=e.appName,this.userId=e.userId,this.userName=e.userName,this.userEmail=e.userEmail,this.date=e.date,this.ip=e.ip,this.type=e.type,this.installationId=e.installationId}}},58545:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldView=void 0;t.FieldView=class{constructor(e){this.name=null,this.value=null,this.type=null,this.newField=!1,this.showValue=!1,this.showCount=!1,this.linkedId=null,e&&(this.type=e.type,this.linkedId=e.linkedId)}get maskedValue(){return null!=this.value?"••••••••":null}}},36914:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderView=void 0;t.FolderView=class{constructor(e){this.id=null,this.name=null,this.revisionDate=null,e&&(this.id=e.id,this.revisionDate=e.revisionDate)}}},48830:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityView=void 0;const o=n(31909),a=n(60628),s=n(82769),l=n(63262);class c extends l.ItemView{constructor(){super(),this.title=null,this.middleName=null,this.address1=null,this.address2=null,this.address3=null,this.city=null,this.state=null,this.postalCode=null,this.country=null,this.company=null,this.email=null,this.phone=null,this.ssn=null,this.username=null,this.passportNumber=null,this.licenseNumber=null,this._firstName=null,this._lastName=null,this._subTitle=null}get firstName(){return this._firstName}set firstName(e){this._firstName=e,this._subTitle=null}get lastName(){return this._lastName}set lastName(e){this._lastName=e,this._subTitle=null}get subTitle(){return null!=this._subTitle||null==this.firstName&&null==this.lastName||(this._subTitle="",null!=this.firstName&&(this._subTitle=this.firstName),null!=this.lastName&&(""!==this._subTitle&&(this._subTitle+=" "),this._subTitle+=this.lastName)),this._subTitle}get fullName(){if(null!=this.title||null!=this.firstName||null!=this.middleName||null!=this.lastName){let e="";return null!=this.title&&(e+=this.title+" "),null!=this.firstName&&(e+=this.firstName+" "),null!=this.middleName&&(e+=this.middleName+" "),null!=this.lastName&&(e+=this.lastName),e.trim()}return null}get fullAddress(){let e=this.address1;return s.Utils.isNullOrWhitespace(this.address2)||(s.Utils.isNullOrWhitespace(e)||(e+=", "),e+=this.address2),s.Utils.isNullOrWhitespace(this.address3)||(s.Utils.isNullOrWhitespace(e)||(e+=", "),e+=this.address3),e}get fullAddressPart2(){if(null==this.city&&null==this.state&&null==this.postalCode)return null;const e=this.city||"-",t=this.state,n=this.postalCode||"-";let i=e;return s.Utils.isNullOrWhitespace(t)||(i+=", "+t),i+=", "+n,i}}i([a.linkedFieldOption(o.IdentityLinkedId.Title),r("design:type",String)],c.prototype,"title",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.MiddleName),r("design:type",String)],c.prototype,"middleName",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address1),r("design:type",String)],c.prototype,"address1",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address2),r("design:type",String)],c.prototype,"address2",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address3),r("design:type",String)],c.prototype,"address3",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.City,"cityTown"),r("design:type",String)],c.prototype,"city",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.State,"stateProvince"),r("design:type",String)],c.prototype,"state",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.PostalCode,"zipPostalCode"),r("design:type",String)],c.prototype,"postalCode",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Country),r("design:type",String)],c.prototype,"country",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Company),r("design:type",String)],c.prototype,"company",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Email),r("design:type",String)],c.prototype,"email",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Phone),r("design:type",String)],c.prototype,"phone",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Ssn),r("design:type",String)],c.prototype,"ssn",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Username),r("design:type",String)],c.prototype,"username",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.PassportNumber),r("design:type",String)],c.prototype,"passportNumber",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.LicenseNumber),r("design:type",String)],c.prototype,"licenseNumber",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.FirstName),r("design:type",String),r("design:paramtypes",[String])],c.prototype,"firstName",null),i([a.linkedFieldOption(o.IdentityLinkedId.LastName),r("design:type",String),r("design:paramtypes",[String])],c.prototype,"lastName",null),i([a.linkedFieldOption(o.IdentityLinkedId.FullName),r("design:type",String),r("design:paramtypes",[])],c.prototype,"fullName",null),t.IdentityView=c},63262:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemView=void 0;t.ItemView=class{}},16506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriView=void 0;const i=n(71703),r=n(82769),o=["https://","http://","ssh://","ftp://","sftp://","irc://","vnc://","rdp://","ms-rd:","chrome://","iosapp://","androidapp://"];t.LoginUriView=class{constructor(e){this.match=null,this._uri=null,this._domain=null,this._hostname=null,this._host=null,this._canLaunch=null,e&&(this.match=e.match)}get uri(){return this._uri}set uri(e){this._uri=e,this._domain=null,this._canLaunch=null}get domain(){return null==this._domain&&null!=this.uri&&(this._domain=r.Utils.getDomain(this.uri),""===this._domain&&(this._domain=null)),this._domain}get hostname(){return this.match===i.UriMatchType.RegularExpression?null:(null==this._hostname&&null!=this.uri&&(this._hostname=r.Utils.getHostname(this.uri),""===this._hostname&&(this._hostname=null)),this._hostname)}get host(){return this.match===i.UriMatchType.RegularExpression?null:(null==this._host&&null!=this.uri&&(this._host=r.Utils.getHost(this.uri),""===this._host&&(this._host=null)),this._host)}get hostnameOrUri(){return null!=this.hostname?this.hostname:this.uri}get hostOrUri(){return null!=this.host?this.host:this.uri}get isWebsite(){return null!=this.uri&&(0===this.uri.indexOf("http://")||0===this.uri.indexOf("https://")||this.uri.indexOf("://")<0&&r.Utils.tldEndingRegex.test(this.uri))}get canLaunch(){if(null!=this._canLaunch)return this._canLaunch;if(null!=this.uri&&this.match!==i.UriMatchType.RegularExpression){const e=this.launchUri;for(let t=0;t=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginView=void 0;const o=n(31909),a=n(60628),s=n(82769),l=n(63262);class c extends l.ItemView{constructor(e){super(),this.username=null,this.password=null,this.passwordRevisionDate=null,this.totp=null,this.uris=null,this.autofillOnPageLoad=null,e&&(this.passwordRevisionDate=e.passwordRevisionDate,this.autofillOnPageLoad=e.autofillOnPageLoad)}get uri(){return this.hasUris?this.uris[0].uri:null}get maskedPassword(){return null!=this.password?"••••••••":null}get subTitle(){return this.username}get canLaunch(){return this.hasUris&&this.uris.some((e=>e.canLaunch))}get hasTotp(){return!s.Utils.isNullOrWhitespace(this.totp)}get launchUri(){if(this.hasUris){const e=this.uris.find((e=>e.canLaunch));if(null!=e)return e.launchUri}return null}get hasUris(){return null!=this.uris&&this.uris.length>0}}i([a.linkedFieldOption(o.LoginLinkedId.Username),r("design:type",String)],c.prototype,"username",void 0),i([a.linkedFieldOption(o.LoginLinkedId.Password),r("design:type",String)],c.prototype,"password",void 0),t.LoginView=c},40170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryView=void 0;t.PasswordHistoryView=class{constructor(e){this.password=null,this.lastUsedDate=null,e&&(this.lastUsedDate=e.lastUsedDate)}}},99364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteView=void 0;const i=n(63262);class r extends i.ItemView{constructor(e){super(),this.type=null,e&&(this.type=e.type)}get subTitle(){return null}}t.SecureNoteView=r},46984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessView=void 0;const i=n(22620),r=n(59884);t.SendAccessView=class{constructor(e){this.id=null,this.name=null,this.type=null,this.text=new r.SendTextView,this.file=new i.SendFileView,this.expirationDate=null,this.creatorIdentifier=null,e&&(this.id=e.id,this.type=e.type,this.expirationDate=e.expirationDate,this.creatorIdentifier=e.creatorIdentifier)}}},22620:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileView=void 0;t.SendFileView=class{constructor(e){this.id=null,this.size=null,this.sizeName=null,this.fileName=null,e&&(this.id=e.id,this.size=e.size,this.sizeName=e.sizeName)}get fileSize(){try{if(null!=this.size)return parseInt(this.size,null)}catch(e){}return 0}}},59884:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextView=void 0;t.SendTextView=class{constructor(e){this.text=null,e&&(this.hidden=e.hidden)}get maskedText(){return null!=this.text?"••••••••":null}}},1725:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendView=void 0;const i=n(82769),r=n(22620),o=n(59884);t.SendView=class{constructor(e){this.id=null,this.accessId=null,this.name=null,this.notes=null,this.type=null,this.text=new o.SendTextView,this.file=new r.SendFileView,this.maxAccessCount=null,this.accessCount=0,this.revisionDate=null,this.deletionDate=null,this.expirationDate=null,this.password=null,this.disabled=!1,this.hideEmail=!1,e&&(this.id=e.id,this.accessId=e.accessId,this.type=e.type,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.revisionDate=e.revisionDate,this.deletionDate=e.deletionDate,this.expirationDate=e.expirationDate,this.disabled=e.disabled,this.password=e.password,this.hideEmail=e.hideEmail)}get urlB64Key(){return i.Utils.fromBufferToUrlB64(this.key)}get maxAccessCountReached(){return null!=this.maxAccessCount&&this.accessCount>=this.maxAccessCount}get expired(){return null!=this.expirationDate&&this.expirationDate<=new Date}get pendingDelete(){return this.deletionDate<=new Date}}},56259:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoConfigView=void 0;const i=n(37084),r=n(41943);class o extends r.View{constructor(e){super(),null!=e&&(this.configType=e.configType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.configType===i.SsoType.OpenIdConnect?this.openId={authority:e.authority,clientId:e.clientId,clientSecret:e.clientSecret,metadataAddress:e.metadataAddress,redirectBehavior:e.redirectBehavior,getClaimsFromUserInfoEndpoint:e.getClaimsFromUserInfoEndpoint,additionalScopes:e.additionalScopes,additionalUserIdClaimTypes:e.additionalUserIdClaimTypes,additionalEmailClaimTypes:e.additionalEmailClaimTypes,additionalNameClaimTypes:e.additionalNameClaimTypes,acrValues:e.acrValues,expectedReturnAcrValue:e.expectedReturnAcrValue}:this.configType===i.SsoType.Saml2&&(this.saml={spNameIdFormat:e.spNameIdFormat,spOutboundSigningAlgorithm:e.spOutboundSigningAlgorithm,spSigningBehavior:e.spSigningBehavior,spMinIncomingSigningAlgorithm:e.spMinIncomingSigningAlgorithm,spWantAssertionsSigned:e.spWantAssertionsSigned,spValidateCertificates:e.spValidateCertificates,idpEntityId:e.idpEntityId,idpBindingType:e.idpBindingType,idpSingleSignOnServiceUrl:e.idpSingleSignOnServiceUrl,idpSingleLogoutServiceUrl:e.idpSingleLogoutServiceUrl,idpX509PublicCert:e.idpX509PublicCert,idpOutboundSigningAlgorithm:e.idpOutboundSigningAlgorithm,idpAllowUnsolicitedAuthnResponse:e.idpAllowUnsolicitedAuthnResponse,idpWantAuthnRequestsSigned:e.idpWantAuthnRequestsSigned,idpAllowOutboundLogoutRequests:null==e.idpDisableOutboundLogoutRequests?null:!e.idpDisableOutboundLogoutRequests}))}}t.SsoConfigView=o},41943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.View=void 0;t.View=class{}},48475:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiService=void 0;const r=n(92829),o=n(74598),a=n(56215),s=n(90070),l=n(27847),c=n(2779),d=n(82769),p=n(81047),u=n(92666),m=n(33146),h=n(15487),v=n(61700),g=n(15461),f=n(31238),y=n(11228),x=n(91266),S=n(50881),b=n(33018),w=n(88850),C=n(8823),I=n(70529),E=n(56659),P=n(7269),O=n(38326),k=n(93140),A=n(7865),T=n(57344),M=n(53661),B=n(12386),D=n(37595),R=n(68673),F=n(62560),U=n(71098),V=n(89072),N=n(55022),_=n(68749),j=n(38402),z=n(88290),H=n(64030),L=n(52196),K=n(59665),q=n(89001),G=n(98073),W=n(82842),$=n(62161),Y=n(67177),Q=n(61747),J=n(3882),Z=n(56247),X=n(69654),ee=n(22391),te=n(71892),ne=n(79230),ie=n(10273),re=n(67955),oe=n(1244),ae=n(33111),se=n(88540),le=n(50891),ce=n(40387),de=n(61329),pe=n(78086),ue=n(86457);t.ApiService=class{constructor(e,t,n,i,r,o=null){this.tokenService=e,this.platformUtilsService=t,this.environmentService=n,this.appIdService=i,this.logoutCallback=r,this.customUserAgent=o,this.isWebClient=!1,this.isDesktopClient=!1,this.device=t.getDevice(),this.deviceType=this.device.toString(),this.isWebClient=this.device===c.DeviceType.IEBrowser||this.device===c.DeviceType.ChromeBrowser||this.device===c.DeviceType.EdgeBrowser||this.device===c.DeviceType.FirefoxBrowser||this.device===c.DeviceType.OperaBrowser||this.device===c.DeviceType.SafariBrowser||this.device===c.DeviceType.UnknownBrowser||this.device===c.DeviceType.VivaldiBrowser,this.isDesktopClient=this.device===c.DeviceType.WindowsDesktop||this.device===c.DeviceType.MacOsDesktop||this.device===c.DeviceType.LinuxDesktop}postIdentityToken(e){return i(this,void 0,void 0,(function*(){const t=new Headers({"Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent),e.alterIdentityTokenHeaders(t);const n=e instanceof p.ApiTokenRequest?e.toIdentityToken():e.toIdentityToken(this.platformUtilsService.getClientType()),i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+"/connect/token",{body:this.qsStringify(n),credentials:this.getCredentials(),cache:"no-store",headers:t,method:"POST"}));let r=null;if(this.isJsonResponse(i)&&(r=yield i.json()),null!=r){if(200===i.status)return new P.IdentityTokenResponse(r);if(400===i.status&&r.TwoFactorProviders2&&Object.keys(r.TwoFactorProviders2).length)return yield this.tokenService.clearTwoFactorToken(),new O.IdentityTwoFactorResponse(r);if(400===i.status&&r.HCaptcha_SiteKey&&Object.keys(r.HCaptcha_SiteKey).length)return new E.IdentityCaptchaResponse(r)}return Promise.reject(new b.ErrorResponse(r,i.status,!0))}))}refreshIdentityToken(){return i(this,void 0,void 0,(function*(){try{yield this.doAuthRefresh()}catch(e){return Promise.reject(null)}}))}getProfile(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/profile",null,!0,!0);return new K.ProfileResponse(e)}))}getUserSubscription(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/subscription",null,!0,!0);return new te.SubscriptionResponse(e)}))}getTaxInfo(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/tax",null,!0,!0);return new ie.TaxInfoResponse(e)}))}putProfile(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/accounts/profile",e,!0,!0);return new K.ProfileResponse(t)}))}putTaxInfo(e){return this.send("PUT","/accounts/tax",e,!0,!1)}postPrelogin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/prelogin",e,!1,!0,this.platformUtilsService.isDev()?this.environmentService.getIdentityUrl():this.environmentService.getApiUrl());return new L.PreloginResponse(t)}))}postEmailToken(e){return this.send("POST","/accounts/email-token",e,!0,!1)}postEmail(e){return this.send("POST","/accounts/email",e,!0,!1)}postPassword(e){return this.send("POST","/accounts/password",e,!0,!1)}setPassword(e){return this.send("POST","/accounts/set-password",e,!0,!1)}postSetKeyConnectorKey(e){return this.send("POST","/accounts/set-key-connector-key",e,!0,!1)}postSecurityStamp(e){return this.send("POST","/accounts/security-stamp",e,!0,!1)}deleteAccount(e){return this.send("DELETE","/accounts",e,!0,!1)}getAccountRevisionDate(){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/accounts/revision-date",null,!0,!0)}))}postPasswordHint(e){return this.send("POST","/accounts/password-hint",e,!1,!1)}postRegister(e){return this.send("POST","/accounts/register",e,!1,!1,this.platformUtilsService.isDev()?this.environmentService.getIdentityUrl():this.environmentService.getApiUrl())}postPremium(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/premium",e,!0,!0);return new j.PaymentResponse(t)}))}postIapCheck(e){return i(this,void 0,void 0,(function*(){return this.send("POST","/accounts/iap-check",e,!0,!1)}))}postReinstatePremium(){return this.send("POST","/accounts/reinstate-premium",null,!0,!1)}postCancelPremium(){return this.send("POST","/accounts/cancel-premium",null,!0,!1)}postAccountStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/storage",e,!0,!0);return new j.PaymentResponse(t)}))}postAccountPayment(e){return this.send("POST","/accounts/payment",e,!0,!1)}postAccountLicense(e){return this.send("POST","/accounts/license",e,!0,!1)}postAccountKeys(e){return this.send("POST","/accounts/keys",e,!0,!1)}postAccountKey(e){return this.send("POST","/accounts/key",e,!0,!1)}postAccountVerifyEmail(){return this.send("POST","/accounts/verify-email",null,!0,!1)}postAccountVerifyEmailToken(e){return this.send("POST","/accounts/verify-email-token",e,!1,!1)}postAccountVerifyPassword(e){return this.send("POST","/accounts/verify-password",e,!0,!1)}postAccountRecoverDelete(e){return this.send("POST","/accounts/delete-recover",e,!1,!1)}postAccountRecoverDeleteToken(e){return this.send("POST","/accounts/delete-recover-token",e,!1,!1)}postAccountKdf(e){return this.send("POST","/accounts/kdf",e,!0,!1)}deleteSsoUser(e){return i(this,void 0,void 0,(function*(){return this.send("DELETE","/accounts/sso/"+e,null,!0,!1)}))}getSsoUserIdentifier(){return i(this,void 0,void 0,(function*(){return this.send("GET","/accounts/sso/user-identifier",null,!0,!0)}))}postUserApiKey(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.send("POST","/accounts/api-key",t,!0,!0);return new u.ApiKeyResponse(e)}))}postUserRotateApiKey(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.send("POST","/accounts/rotate-api-key",t,!0,!0);return new u.ApiKeyResponse(e)}))}putUpdateTempPassword(e){return this.send("PUT","/accounts/update-temp-password",e,!0,!1)}postAccountRequestOTP(){return this.send("POST","/accounts/request-otp",null,!0,!1)}postAccountVerifyOTP(e){return this.send("POST","/accounts/verify-otp",e,!0,!1)}postConvertToKeyConnector(){return this.send("POST","/accounts/convert-to-key-connector",null,!0,!1)}getUserBillingHistory(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/billing/history",null,!0,!0);return new a.BillingHistoryResponse(e)}))}getUserBillingPayment(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/billing/payment-method",null,!0,!0);return new s.BillingPaymentResponse(e)}))}getFolder(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/folders/"+e,null,!0,!0);return new C.FolderResponse(t)}))}postFolder(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/folders",e,!0,!0);return new C.FolderResponse(t)}))}putFolder(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/folders/"+e,t,!0,!0);return new C.FolderResponse(n)}))}deleteFolder(e){return this.send("DELETE","/folders/"+e,null,!0,!1)}getSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/sends/"+e,null,!0,!0);return new ee.SendResponse(t)}))}postSendAccess(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("POST","/sends/access/"+e,t,!1,!0,n,(t=>{t.set("Send-Id",e)}));return new J.SendAccessResponse(i)}))}getSendFileDownloadData(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("POST","/sends/"+e.id+"/access/file/"+e.file.id,t,!1,!0,n,(t=>{t.set("Send-Id",e.id)}));return new Z.SendFileDownloadDataResponse(i)}))}getSends(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/sends",null,!0,!0);return new A.ListResponse(e,ee.SendResponse)}))}postSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends",e,!0,!0);return new ee.SendResponse(t)}))}postFileTypeSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends/file/v2",e,!0,!0);return new X.SendFileUploadDataResponse(t)}))}renewSendFileUploadUrl(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/sends/"+e+"/file/"+t,null,!0,!0);return new X.SendFileUploadDataResponse(n)}))}postSendFile(e,t,n){return this.send("POST","/sends/"+e+"/file/"+t,n,!0,!1)}postSendFileLegacy(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends/file",e,!0,!0);return new ee.SendResponse(t)}))}putSend(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/sends/"+e,t,!0,!0);return new ee.SendResponse(n)}))}putSendRemovePassword(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/sends/"+e+"/remove-password",null,!0,!0);return new ee.SendResponse(t)}))}deleteSend(e){return this.send("DELETE","/sends/"+e,null,!0,!1)}getCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/"+e,null,!0,!0);return new f.CipherResponse(t)}))}getCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/"+e+"/admin",null,!0,!0);return new f.CipherResponse(t)}))}getCiphersOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/organization-details?organizationId="+e,null,!0,!0);return new A.ListResponse(t,f.CipherResponse)}))}postCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers",e,!0,!0);return new f.CipherResponse(t)}))}postCipherCreate(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers/create",e,!0,!0);return new f.CipherResponse(t)}))}postCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers/admin",e,!0,!0);return new f.CipherResponse(t)}))}putCipher(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e,t,!0,!0);return new f.CipherResponse(n)}))}putCipherAdmin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e+"/admin",t,!0,!0);return new f.CipherResponse(n)}))}deleteCipher(e){return this.send("DELETE","/ciphers/"+e,null,!0,!1)}deleteCipherAdmin(e){return this.send("DELETE","/ciphers/"+e+"/admin",null,!0,!1)}deleteManyCiphers(e){return this.send("DELETE","/ciphers",e,!0,!1)}deleteManyCiphersAdmin(e){return this.send("DELETE","/ciphers/admin",e,!0,!1)}putMoveCiphers(e){return this.send("PUT","/ciphers/move",e,!0,!1)}putShareCipher(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e+"/share",t,!0,!0);return new f.CipherResponse(n)}))}putShareCiphers(e){return this.send("PUT","/ciphers/share",e,!0,!1)}putCipherCollections(e,t){return this.send("PUT","/ciphers/"+e+"/collections",t,!0,!1)}putCipherCollectionsAdmin(e,t){return this.send("PUT","/ciphers/"+e+"/collections-admin",t,!0,!1)}postPurgeCiphers(e,t=null){let n="/ciphers/purge";return null!=t&&(n+="?organizationId="+t),this.send("POST",n,e,!0,!1)}postImportCiphers(e){return this.send("POST","/ciphers/import",e,!0,!1)}postImportOrganizationCiphers(e,t){return this.send("POST","/ciphers/import-organization?organizationId="+e,t,!0,!1)}putDeleteCipher(e){return this.send("PUT","/ciphers/"+e+"/delete",null,!0,!1)}putDeleteCipherAdmin(e){return this.send("PUT","/ciphers/"+e+"/delete-admin",null,!0,!1)}putDeleteManyCiphers(e){return this.send("PUT","/ciphers/delete",e,!0,!1)}putDeleteManyCiphersAdmin(e){return this.send("PUT","/ciphers/delete-admin",e,!0,!1)}putRestoreCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/"+e+"/restore",null,!0,!0);return new f.CipherResponse(t)}))}putRestoreCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/"+e+"/restore-admin",null,!0,!0);return new f.CipherResponse(t)}))}putRestoreManyCiphers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/restore",e,!0,!0);return new A.ListResponse(t,f.CipherResponse)}))}getAttachmentData(e,t,n){return i(this,void 0,void 0,(function*(){const i=(null!=n?"/emergency-access/"+n+"/":"/ciphers/")+e+"/attachment/"+t,r=yield this.send("GET",i,null,!0,!0);return new m.AttachmentResponse(r)}))}postCipherAttachment(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment/v2",t,!0,!0);return new h.AttachmentUploadDataResponse(n)}))}postCipherAttachmentLegacy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment",t,!0,!0);return new f.CipherResponse(n)}))}postCipherAttachmentAdminLegacy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment-admin",t,!0,!0);return new f.CipherResponse(n)}))}deleteCipherAttachment(e,t){return this.send("DELETE","/ciphers/"+e+"/attachment/"+t,null,!0,!1)}deleteCipherAttachmentAdmin(e,t){return this.send("DELETE","/ciphers/"+e+"/attachment/"+t+"/admin",null,!0,!1)}postShareCipherAttachment(e,t,n,i){return this.send("POST","/ciphers/"+e+"/attachment/"+t+"/share?organizationId="+i,n,!0,!1)}renewAttachmentUploadUrl(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/ciphers/"+e+"/attachment/"+t+"/renew",null,!0,!0);return new h.AttachmentUploadDataResponse(n)}))}postAttachmentFile(e,t,n){return this.send("POST","/ciphers/"+e+"/attachment/"+t,n,!0,!1)}getCollectionDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/collections/"+t+"/details",null,!0,!0);return new y.CollectionGroupDetailsResponse(n)}))}getUserCollections(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/collections",null,!0,!0);return new A.ListResponse(e,y.CollectionResponse)}))}getCollections(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/collections",null,!0,!0);return new A.ListResponse(t,y.CollectionResponse)}))}getCollectionUsers(e,t){return i(this,void 0,void 0,(function*(){return(yield this.send("GET","/organizations/"+e+"/collections/"+t+"/users",null,!0,!0)).map((e=>new Q.SelectionReadOnlyResponse(e)))}))}postCollection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/collections",t,!0,!0);return new y.CollectionResponse(n)}))}putCollection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/collections/"+t,n,!0,!0);return new y.CollectionResponse(i)}))}putCollectionUsers(e,t,n){return i(this,void 0,void 0,(function*(){yield this.send("PUT","/organizations/"+e+"/collections/"+t+"/users",n,!0,!1)}))}deleteCollection(e,t){return this.send("DELETE","/organizations/"+e+"/collections/"+t,null,!0,!1)}deleteCollectionUser(e,t,n){return this.send("DELETE","/organizations/"+e+"/collections/"+t+"/user/"+n,null,!0,!1)}getGroupDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/groups/"+t+"/details",null,!0,!0);return new I.GroupDetailsResponse(n)}))}getGroups(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/groups",null,!0,!0);return new A.ListResponse(t,I.GroupResponse)}))}getGroupUsers(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/"+e+"/groups/"+t+"/users",null,!0,!0)}))}postGroup(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/groups",t,!0,!0);return new I.GroupResponse(n)}))}putGroup(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/groups/"+t,n,!0,!0);return new I.GroupResponse(i)}))}putGroupUsers(e,t,n){return i(this,void 0,void 0,(function*(){yield this.send("PUT","/organizations/"+e+"/groups/"+t+"/users",n,!0,!1)}))}deleteGroup(e,t){return this.send("DELETE","/organizations/"+e+"/groups/"+t,null,!0,!1)}deleteGroupUser(e,t,n){return this.send("DELETE","/organizations/"+e+"/groups/"+t+"/user/"+n,null,!0,!1)}getPolicy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/policies/"+t,null,!0,!0);return new H.PolicyResponse(n)}))}getPolicies(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/policies",null,!0,!0);return new A.ListResponse(t,H.PolicyResponse)}))}getPoliciesByToken(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET","/organizations/"+e+"/policies/token?token="+encodeURIComponent(t)+"&email="+encodeURIComponent(n)+"&organizationUserId="+r,null,!1,!0);return new A.ListResponse(i,H.PolicyResponse)}))}getPoliciesByInvitedUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/policies/invited-user?userId="+t,null,!1,!0);return new A.ListResponse(n,H.PolicyResponse)}))}putPolicy(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/policies/"+t,n,!0,!0);return new H.PolicyResponse(i)}))}getOrganizationUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/users/"+t,null,!0,!0);return new _.OrganizationUserDetailsResponse(n)}))}getOrganizationUserGroups(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/"+e+"/users/"+t+"/groups",null,!0,!0)}))}getOrganizationUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/users",null,!0,!0);return new A.ListResponse(t,_.OrganizationUserUserDetailsResponse)}))}getOrganizationUserResetPasswordDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/users/"+t+"/reset-password-details",null,!0,!0);return new _.OrganizationUserResetPasswordDetailsReponse(n)}))}getOrganizationAutoEnrollStatus(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/auto-enroll-status",null,!0,!0);return new B.OrganizationAutoEnrollStatusResponse(t)}))}postOrganizationUserInvite(e,t){return this.send("POST","/organizations/"+e+"/users/invite",t,!0,!1)}postOrganizationUserReinvite(e,t){return this.send("POST","/organizations/"+e+"/users/"+t+"/reinvite",null,!0,!1)}postManyOrganizationUserReinvite(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/reinvite",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}postOrganizationUserAccept(e,t,n){return this.send("POST","/organizations/"+e+"/users/"+t+"/accept",n,!0,!1)}postOrganizationUserConfirm(e,t,n){return this.send("POST","/organizations/"+e+"/users/"+t+"/confirm",n,!0,!1)}postOrganizationUsersPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/public-keys",t,!0,!0);return new A.ListResponse(n,V.OrganizationUserBulkPublicKeyResponse)}))}postOrganizationUserBulkConfirm(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/confirm",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}putOrganizationUser(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t,n,!0,!1)}putOrganizationUserGroups(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/groups",n,!0,!1)}putOrganizationUserResetPasswordEnrollment(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/reset-password-enrollment",n,!0,!1)}putOrganizationUserResetPassword(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/reset-password",n,!0,!1)}deleteOrganizationUser(e,t){return this.send("DELETE","/organizations/"+e+"/users/"+t,null,!0,!1)}deleteManyOrganizationUsers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("DELETE","/organizations/"+e+"/users",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}getPlans(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/plans/",null,!0,!0);return new A.ListResponse(e,z.PlanResponse)}))}postImportDirectory(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/import",t,!0,!1)}))}postPublicImportDirectory(e){return i(this,void 0,void 0,(function*(){return this.send("POST","/public/organization/import",e,!0,!1)}))}getTaxRates(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/plans/sales-tax-rates/",null,!0,!0);return new A.ListResponse(e,re.TaxRateResponse)}))}getSettingsDomains(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/settings/domains",null,!0,!0);return new x.DomainsResponse(e)}))}putSettingsDomains(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/settings/domains",e,!0,!0);return new x.DomainsResponse(t)}))}getSync(){return i(this,void 0,void 0,(function*(){const e=this.isDesktopClient||this.isWebClient?"/sync?excludeDomains=true":"/sync",t=yield this.send("GET",e,null,!0,!0);return new ne.SyncResponse(t)}))}getTwoFactorProviders(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/two-factor",null,!0,!0);return new A.ListResponse(e,le.TwoFactorProviderResponse)}))}getTwoFactorOrganizationProviders(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/two-factor",null,!0,!0);return new A.ListResponse(t,le.TwoFactorProviderResponse)}))}getTwoFactorAuthenticator(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-authenticator",e,!0,!0);return new oe.TwoFactorAuthenticatorResponse(t)}))}getTwoFactorEmail(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-email",e,!0,!0);return new se.TwoFactorEmailResponse(t)}))}getTwoFactorDuo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-duo",e,!0,!0);return new ae.TwoFactorDuoResponse(t)}))}getTwoFactorOrganizationDuo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/two-factor/get-duo",t,!0,!0);return new ae.TwoFactorDuoResponse(n)}))}getTwoFactorYubiKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-yubikey",e,!0,!0);return new pe.TwoFactorYubiKeyResponse(t)}))}getTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-webauthn",e,!0,!0);return new de.TwoFactorWebAuthnResponse(t)}))}getTwoFactorWebAuthnChallenge(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-webauthn-challenge",e,!0,!0);return new de.ChallengeResponse(t)}))}getTwoFactorRecover(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-recover",e,!0,!0);return new ce.TwoFactorRecoverResponse(t)}))}putTwoFactorAuthenticator(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/authenticator",e,!0,!0);return new oe.TwoFactorAuthenticatorResponse(t)}))}putTwoFactorEmail(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/email",e,!0,!0);return new se.TwoFactorEmailResponse(t)}))}putTwoFactorDuo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/duo",e,!0,!0);return new ae.TwoFactorDuoResponse(t)}))}putTwoFactorOrganizationDuo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e+"/two-factor/duo",t,!0,!0);return new ae.TwoFactorDuoResponse(n)}))}putTwoFactorYubiKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/yubikey",e,!0,!0);return new pe.TwoFactorYubiKeyResponse(t)}))}putTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=e.deviceResponse.response,n=Object.assign({},e);n.deviceResponse={id:e.deviceResponse.id,rawId:btoa(e.deviceResponse.id),type:e.deviceResponse.type,extensions:e.deviceResponse.getClientExtensionResults(),response:{AttestationObject:d.Utils.fromBufferToB64(t.attestationObject),clientDataJson:d.Utils.fromBufferToB64(t.clientDataJSON)}};const i=yield this.send("PUT","/two-factor/webauthn",n,!0,!0);return new de.TwoFactorWebAuthnResponse(i)}))}deleteTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("DELETE","/two-factor/webauthn",e,!0,!0);return new de.TwoFactorWebAuthnResponse(t)}))}putTwoFactorDisable(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/disable",e,!0,!0);return new le.TwoFactorProviderResponse(t)}))}putTwoFactorOrganizationDisable(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e+"/two-factor/disable",t,!0,!0);return new le.TwoFactorProviderResponse(n)}))}postTwoFactorRecover(e){return this.send("POST","/two-factor/recover",e,!1,!1)}postTwoFactorEmailSetup(e){return this.send("POST","/two-factor/send-email",e,!0,!1)}postTwoFactorEmail(e){return this.send("POST","/two-factor/send-email-login",e,!1,!1)}getEmergencyAccessTrusted(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/emergency-access/trusted",null,!0,!0);return new A.ListResponse(e,S.EmergencyAccessGranteeDetailsResponse)}))}getEmergencyAccessGranted(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/emergency-access/granted",null,!0,!0);return new A.ListResponse(e,S.EmergencyAccessGrantorDetailsResponse)}))}getEmergencyAccess(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/emergency-access/"+e,null,!0,!0);return new S.EmergencyAccessGranteeDetailsResponse(t)}))}getEmergencyGrantorPolicies(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/emergency-access/"+e+"/policies",null,!0,!0);return new A.ListResponse(t,H.PolicyResponse)}))}putEmergencyAccess(e,t){return this.send("PUT","/emergency-access/"+e,t,!0,!1)}deleteEmergencyAccess(e){return this.send("DELETE","/emergency-access/"+e,null,!0,!1)}postEmergencyAccessInvite(e){return this.send("POST","/emergency-access/invite",e,!0,!1)}postEmergencyAccessReinvite(e){return this.send("POST","/emergency-access/"+e+"/reinvite",null,!0,!1)}postEmergencyAccessAccept(e,t){return this.send("POST","/emergency-access/"+e+"/accept",t,!0,!1)}postEmergencyAccessConfirm(e,t){return this.send("POST","/emergency-access/"+e+"/confirm",t,!0,!1)}postEmergencyAccessInitiate(e){return this.send("POST","/emergency-access/"+e+"/initiate",null,!0,!1)}postEmergencyAccessApprove(e){return this.send("POST","/emergency-access/"+e+"/approve",null,!0,!1)}postEmergencyAccessReject(e){return this.send("POST","/emergency-access/"+e+"/reject",null,!0,!1)}postEmergencyAccessTakeover(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/emergency-access/"+e+"/takeover",null,!0,!0);return new S.EmergencyAccessTakeoverResponse(t)}))}postEmergencyAccessPassword(e,t){return i(this,void 0,void 0,(function*(){yield this.send("POST","/emergency-access/"+e+"/password",t,!0,!0)}))}postEmergencyAccessView(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/emergency-access/"+e+"/view",null,!0,!0);return new S.EmergencyAccessViewResponse(t)}))}getOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e,null,!0,!0);return new R.OrganizationResponse(t)}))}getOrganizationBilling(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/billing",null,!0,!0);return new v.BillingResponse(t)}))}getOrganizationSubscription(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/subscription",null,!0,!0);return new U.OrganizationSubscriptionResponse(t)}))}getCloudCommunicationsEnabled(){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/connections/enabled",null,!0,!0)}))}getOrganizationConnection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",`/organizations/connections/${e}/${t}`,null,!0,!0);return new l.OrganizationConnectionResponse(i,n)}))}createOrganizationConnection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/connections/",e,!0,!0);return new l.OrganizationConnectionResponse(n,t)}))}updateOrganizationConnection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/connections/"+n,e,!0,!0);return new l.OrganizationConnectionResponse(i,t)}))}deleteOrganizationConnection(e){return i(this,void 0,void 0,(function*(){return this.send("DELETE","/organizations/connections/"+e,null,!0,!1)}))}getOrganizationLicense(e,t){return i(this,void 0,void 0,(function*(){return this.send("GET","/organizations/"+e+"/license?installationId="+t,null,!0,!0)}))}getOrganizationTaxInfo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/tax",null,!0,!0);return new ie.TaxInfoResponse(t)}))}getOrganizationSso(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/sso",null,!0,!0);return new T.OrganizationSsoResponse(t)}))}postOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/organizations",e,!0,!0);return new R.OrganizationResponse(t)}))}putOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e,t,!0,!0);return new R.OrganizationResponse(n)}))}putOrganizationTaxInfo(e,t){return i(this,void 0,void 0,(function*(){return this.send("PUT","/organizations/"+e+"/tax",t,!0,!1)}))}postLeaveOrganization(e){return this.send("POST","/organizations/"+e+"/leave",null,!0,!1)}postOrganizationLicense(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/organizations/license",e,!0,!0);return new R.OrganizationResponse(t)}))}postOrganizationLicenseUpdate(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/license",t,!0,!1)}))}postOrganizationApiKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/api-key",t,!0,!0);return new u.ApiKeyResponse(n)}))}getOrganizationApiKeyInformation(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/api-key-information",null,!0,!0);return new A.ListResponse(t,M.OrganizationApiKeyInformationResponse)}))}postOrganizationRotateApiKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/rotate-api-key",t,!0,!0);return new u.ApiKeyResponse(n)}))}postOrganizationSso(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/sso",t,!0,!0);return new T.OrganizationSsoResponse(n)}))}postOrganizationUpgrade(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/upgrade",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationUpdateSubscription(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/subscription",t,!0,!1)}))}postOrganizationSeat(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/seat",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationStorage(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/storage",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationPayment(e,t){return this.send("POST","/organizations/"+e+"/payment",t,!0,!1)}postOrganizationVerifyBank(e,t){return this.send("POST","/organizations/"+e+"/verify-bank",t,!0,!1)}postOrganizationCancel(e){return this.send("POST","/organizations/"+e+"/cancel",null,!0,!1)}postOrganizationReinstate(e){return this.send("POST","/organizations/"+e+"/reinstate",null,!0,!1)}deleteOrganization(e,t){return this.send("DELETE","/organizations/"+e,t,!0,!1)}getOrganizationKeys(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/keys",null,!0,!0);return new D.OrganizationKeysResponse(t)}))}postOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/keys",t,!0,!0);return new D.OrganizationKeysResponse(n)}))}postProviderSetup(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/setup",t,!0,!0);return new G.ProviderResponse(n)}))}getProvider(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e,null,!0,!0);return new G.ProviderResponse(t)}))}putProvider(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/providers/"+e,t,!0,!0);return new G.ProviderResponse(n)}))}getProviderUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e+"/users",null,!0,!0);return new A.ListResponse(t,Y.ProviderUserUserDetailsResponse)}))}getProviderUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/providers/"+e+"/users/"+t,null,!0,!0);return new Y.ProviderUserResponse(n)}))}postProviderUserInvite(e,t){return this.send("POST","/providers/"+e+"/users/invite",t,!0,!1)}postProviderUserReinvite(e,t){return this.send("POST","/providers/"+e+"/users/"+t+"/reinvite",null,!0,!1)}postManyProviderUserReinvite(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/reinvite",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}postProviderUserBulkConfirm(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/confirm",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}deleteManyProviderUsers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("DELETE","/providers/"+e+"/users",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}postProviderUserAccept(e,t,n){return this.send("POST","/providers/"+e+"/users/"+t+"/accept",n,!0,!1)}postProviderUserConfirm(e,t,n){return this.send("POST","/providers/"+e+"/users/"+t+"/confirm",n,!0,!1)}postProviderUsersPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/public-keys",t,!0,!0);return new A.ListResponse(n,W.ProviderUserBulkPublicKeyResponse)}))}putProviderUser(e,t,n){return this.send("PUT","/providers/"+e+"/users/"+t,n,!0,!1)}deleteProviderUser(e,t){return this.send("DELETE","/providers/"+e+"/users/"+t,null,!0,!1)}getProviderClients(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e+"/organizations",null,!0,!0);return new A.ListResponse(t,q.ProviderOrganizationOrganizationDetailsResponse)}))}postProviderAddOrganization(e,t){return this.send("POST","/providers/"+e+"/organizations/add",t,!0,!1)}postProviderCreateOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/organizations",t,!0,!0);return new q.ProviderOrganizationResponse(n)}))}deleteProviderOrganization(e,t){return this.send("DELETE","/providers/"+e+"/organizations/"+t,null,!0,!1)}getEvents(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/events",e,t,n),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsCipher(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/ciphers/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsOrganization(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/organizations/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsOrganizationUser(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/organizations/"+e+"/users/"+t+"/events",n,r,o),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsProvider(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/providers/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsProviderUser(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/providers/"+e+"/users/"+t+"/events",n,r,o),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}postEventsCollect(e){return i(this,void 0,void 0,(function*(){const t=yield this.getActiveBearerToken(),n=new Headers({"Device-Type":this.deviceType,Authorization:"Bearer "+t,"Content-Type":"application/json; charset=utf-8"});null!=this.customUserAgent&&n.set("User-Agent",this.customUserAgent);if(200!==(yield this.fetch(new Request(this.environmentService.getEventsUrl()+"/collect",{cache:"no-store",credentials:this.getCredentials(),method:"POST",body:JSON.stringify(e),headers:n}))).status)return Promise.reject("Event post failed.")}))}getUserPublicKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/users/"+e+"/public-key",null,!0,!0);return new ue.UserKeyResponse(t)}))}getHibpBreach(e){return i(this,void 0,void 0,(function*(){return(yield this.send("GET","/hibp/breach?username="+e,null,!0,!0)).map((e=>new g.BreachAccountResponse(e)))}))}postBitPayInvoice(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/bitpay-invoice",e,!0,!0)}))}postSetupPayment(){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/setup-payment",null,!0,!0)}))}getUserKeyFromKeyConnector(e){return i(this,void 0,void 0,(function*(){const t=yield this.getActiveBearerToken(),n=yield this.fetch(new Request(e+"/user-keys",{cache:"no-store",method:"GET",headers:new Headers({Accept:"application/json",Authorization:"Bearer "+t})}));if(200!==n.status){const e=yield this.handleError(n,!1,!0);return Promise.reject(e)}return new k.KeyConnectorUserKeyResponse(yield n.json())}))}postUserKeyToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getActiveBearerToken(),i=yield this.fetch(new Request(e+"/user-keys",{cache:"no-store",method:"POST",headers:new Headers({Accept:"application/json",Authorization:"Bearer "+n,"Content-Type":"application/json; charset=utf-8"}),body:JSON.stringify(t)}));if(200!==i.status){const e=yield this.handleError(i,!1,!0);return Promise.reject(e)}}))}getKeyConnectorAlive(e){return i(this,void 0,void 0,(function*(){const t=yield this.fetch(new Request(e+"/alive",{cache:"no-store",method:"GET",headers:new Headers({Accept:"application/json","Content-Type":"application/json; charset=utf-8"})}));if(200!==t.status){const e=yield this.handleError(t,!1,!0);return Promise.reject(e)}}))}getActiveBearerToken(){return i(this,void 0,void 0,(function*(){let e=yield this.tokenService.getToken();return(yield this.tokenService.tokenNeedsRefresh())&&(yield this.doAuthRefresh(),e=yield this.tokenService.getToken()),e}))}fetch(e){return i(this,void 0,void 0,(function*(){return"GET"===e.method&&(e.headers.set("Cache-Control","no-store"),e.headers.set("Pragma","no-cache")),e.headers.set("Bitwarden-Client-Name",this.platformUtilsService.getClientType()),e.headers.set("Bitwarden-Client-Version",yield this.platformUtilsService.getApplicationVersion()),this.nativeFetch(e)}))}nativeFetch(e){return fetch(e)}preValidateSso(e){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw new Error("Organization Identifier was not provided.");const t=new Headers({Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent);const n=`/account/prevalidate?domainHint=${encodeURIComponent(e)}`,i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+n,{cache:"no-store",credentials:this.getCredentials(),headers:t,method:"GET"}));if(200===i.status)return!0;{const e=yield this.handleError(i,!1,!0);return Promise.reject(e)}}))}postCreateSponsorship(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/"+(this.platformUtilsService.isSelfHost()?"self-hosted/":"")+e+"/families-for-enterprise",t,!0,!1)}))}getSponsorshipSyncStatus(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organization/sponsorship/"+e+"/sync-status",null,!0,!0);return new F.OrganizationSponsorshipSyncStatusResponse(t)}))}deleteRevokeSponsorship(e){return i(this,void 0,void 0,(function*(){return yield this.send("DELETE","/organization/sponsorship/"+(this.platformUtilsService.isSelfHost()?"self-hosted/":"")+e,null,!0,!1)}))}deleteRemoveSponsorship(e){return i(this,void 0,void 0,(function*(){return yield this.send("DELETE","/organization/sponsorship/sponsored/"+e,null,!0,!1)}))}postPreValidateSponsorshipToken(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/validate-token?sponsorshipToken="+encodeURIComponent(e),null,!0,!0)}))}postRedeemSponsorship(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/redeem?sponsorshipToken="+encodeURIComponent(e),t,!0,!1)}))}postResendSponsorshipOffer(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/"+e+"/families-for-enterprise/resend",null,!0,!1)}))}doAuthRefresh(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getRefreshToken();if(null!=e&&""!==e)return this.doRefreshToken();const t=yield this.tokenService.getClientId(),n=yield this.tokenService.getClientSecret();if(!d.Utils.isNullOrWhitespace(t)&&!d.Utils.isNullOrWhitespace(n))return this.doApiTokenRefresh();throw new Error("Cannot refresh token, no refresh token or api keys are stored")}))}doRefreshToken(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getRefreshToken();if(null==e||""===e)throw new Error;const t=new Headers({"Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent);const n=yield this.tokenService.decodeToken(),i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+"/connect/token",{body:this.qsStringify({grant_type:"refresh_token",client_id:n.client_id,refresh_token:e}),cache:"no-store",credentials:this.getCredentials(),headers:t,method:"POST"}));if(200!==i.status){const e=yield this.handleError(i,!0,!0);return Promise.reject(e)}{const e=yield i.json(),t=new P.IdentityTokenResponse(e);yield this.tokenService.setTokens(t.accessToken,t.refreshToken,null)}}))}doApiTokenRefresh(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getClientId(),t=yield this.tokenService.getClientSecret(),n=yield this.appIdService.getAppId(),i=new r.DeviceRequest(n,this.platformUtilsService),a=new p.ApiTokenRequest(e,t,new o.TokenRequestTwoFactor,i),s=yield this.postIdentityToken(a);if(!(s instanceof P.IdentityTokenResponse))throw new Error("Invalid response received when refreshing api token");yield this.tokenService.setToken(s.accessToken)}))}send(e,t,n,r,o,a,s){return i(this,void 0,void 0,(function*(){const i=(a=d.Utils.isNullOrWhitespace(a)?this.environmentService.getApiUrl():a)+t;if(new URL(i).href!==i)return Promise.reject("Invalid request url path.");const l=new Headers({"Device-Type":this.deviceType});null!=this.customUserAgent&&l.set("User-Agent",this.customUserAgent);const c={cache:"no-store",credentials:this.getCredentials(),method:e};if(r){const e=yield this.getActiveBearerToken();l.set("Authorization","Bearer "+e)}null!=n&&("string"==typeof n?(c.body=n,l.set("Content-Type","application/x-www-form-urlencoded; charset=utf-8")):"object"==typeof n&&(n instanceof FormData?c.body=n:(l.set("Content-Type","application/json; charset=utf-8"),c.body=JSON.stringify(n)))),o&&l.set("Accept","application/json"),null!=s&&s(l),c.headers=l;const p=yield this.fetch(new Request(i,c));if(o&&200===p.status){return yield p.json()}if(200!==p.status){const e=yield this.handleError(p,!1,r);return Promise.reject(e)}}))}handleError(e,t,n){return i(this,void 0,void 0,(function*(){if(n&&(t&&400===e.status||401===e.status||403===e.status))return yield this.logoutCallback(!0),null;let i=null;return this.isJsonResponse(e)?i=yield e.json():this.isTextResponse(e)&&(i={Message:yield e.text()}),new b.ErrorResponse(i,e.status,t)}))}qsStringify(e){return Object.keys(e).map((t=>encodeURIComponent(t)+"="+encodeURIComponent(e[t]))).join("&")}getCredentials(){if(!this.isWebClient||this.environmentService.hasBaseUrl())return"include"}addEventParameters(e,t,n,i){return null!=t&&(e+="?start="+t),null!=n&&(e+=e.indexOf("?")>-1?"&":"?",e+="end="+n),null!=i&&(e+=e.indexOf("?")>-1?"&":"?",e+="continuationToken="+i),e}isJsonResponse(e){const t=e.headers.get("content-type");return null!=t&&t.indexOf("application/json")>-1}isTextResponse(e){const t=e.headers.get("content-type");return null!=t&&t.indexOf("text")>-1}}},97979:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppIdService=void 0;const r=n(46632),o=n(82769);t.AppIdService=class{constructor(e){this.storageService=e}getAppId(){return this.makeAndGetAppId("appId")}getAnonymousAppId(){return this.makeAndGetAppId("anonymousAppId")}makeAndGetAppId(e){return i(this,void 0,void 0,(function*(){const t=yield this.storageService.get(e,{htmlStorageLocation:r.HtmlStorageLocation.Local});if(null!=t)return t;const n=o.Utils.newGuid();return yield this.storageService.save(e,n,{htmlStorageLocation:r.HtmlStorageLocation.Local}),n}))}}},36472:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuditService=void 0;const a=n(80699),s=n(82769);class l{constructor(e,t){this.cryptoFunctionService=e,this.apiService=t}passwordLeaked(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.hash(e,"sha1"),n=s.Utils.fromBufferToHex(t).toUpperCase(),i=n.substr(0,5),r=n.substr(5),o=yield this.apiService.nativeFetch(new Request("https://api.pwnedpasswords.com/range/"+i)),a=(yield o.text()).split(/\r?\n/).find((e=>e.split(":")[0]===r));return null!=a?parseInt(a.split(":")[1],10):0}))}breachedAccounts(e){return o(this,void 0,void 0,(function*(){try{return yield this.apiService.getHibpBreach(e)}catch(t){if(404===t.statusCode)return[];throw new Error}}))}}i([a.throttle(100,(()=>"passwordLeaked")),r("design:type",Function),r("design:paramtypes",[String]),r("design:returntype",Promise)],l.prototype,"passwordLeaked",null),t.AuditService=l},47262:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuthService=void 0;const r=n(72440),o=n(2231),a=n(7980),s=n(83825),l=n(74044),c=n(41956),d=n(59791),p=n(33018);t.AuthService=class{constructor(e,t,n,i,r,o,a,s,l,c,d,p){this.cryptoService=e,this.apiService=t,this.tokenService=n,this.appIdService=i,this.platformUtilsService=r,this.messagingService=o,this.logService=a,this.keyConnectorService=s,this.environmentService=l,this.stateService=c,this.twoFactorService=d,this.i18nService=p}get email(){return this.logInStrategy instanceof l.PasswordLogInStrategy?this.logInStrategy.email:null}get masterPasswordHash(){return this.logInStrategy instanceof l.PasswordLogInStrategy?this.logInStrategy.masterPasswordHash:null}logIn(e){return i(this,void 0,void 0,(function*(){let t;this.clearState(),e.type===o.AuthenticationType.Password?t=new l.PasswordLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this):e.type===o.AuthenticationType.Sso?t=new c.SsoLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this.keyConnectorService):e.type===o.AuthenticationType.Api&&(t=new s.ApiLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this.environmentService,this.keyConnectorService));const n=yield t.logIn(e);return(null==n?void 0:n.requiresTwoFactor)&&this.saveState(t),n}))}logInTwoFactor(e,t){return i(this,void 0,void 0,(function*(){if(null==this.logInStrategy)throw new Error(this.i18nService.t("sessionTimeout"));try{const n=yield this.logInStrategy.logInTwoFactor(e,t);return n.requiresTwoFactor||n.requiresCaptcha||this.clearState(),n}catch(n){throw n instanceof p.ErrorResponse||this.clearState(),n}}))}logOut(e){e(),this.messagingService.send("loggedOut")}authingWithApiKey(){return this.logInStrategy instanceof s.ApiLogInStrategy}authingWithSso(){return this.logInStrategy instanceof c.SsoLogInStrategy}authingWithPassword(){return this.logInStrategy instanceof l.PasswordLogInStrategy}getAuthStatus(e){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated({userId:e})))return r.AuthenticationStatus.LoggedOut;(yield this.cryptoService.hasKeyStored(a.KeySuffixOptions.Auto,e))&&!(yield this.stateService.getEverBeenUnlocked({userId:e}))&&(yield this.cryptoService.getKey(a.KeySuffixOptions.Auto,e));return(yield this.cryptoService.hasKeyInMemory(e))?r.AuthenticationStatus.Unlocked:r.AuthenticationStatus.Locked}))}makePreloginKey(e,t){return i(this,void 0,void 0,(function*(){t=t.trim().toLowerCase();let n=null,i=null;try{const e=yield this.apiService.postPrelogin(new d.PreloginRequest(t));null!=e&&(n=e.kdf,i=e.kdfIterations)}catch(r){if(null==r||404!==r.statusCode)throw r}return this.cryptoService.makeKey(e,t,n,i)}))}saveState(e){this.logInStrategy=e,this.startSessionTimeout()}clearState(){this.logInStrategy=null,this.clearSessionTimeout()}startSessionTimeout(){this.clearSessionTimeout(),this.sessionTimeout=setTimeout((()=>this.clearState()),12e4)}clearSessionTimeout(){null!=this.sessionTimeout&&clearTimeout(this.sessionTimeout)}}},71545:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AzureFileUploadService=void 0;const r=n(82769);t.AzureFileUploadService=class{constructor(e){this.logService=e}upload(e,t,n){return i(this,void 0,void 0,(function*(){return t.buffer.byteLength<=268435456?yield this.azureUploadBlob(e,t):yield this.azureUploadBlocks(e,t,n)}))}azureUploadBlob(e,t){return i(this,void 0,void 0,(function*(){const n=r.Utils.getUrl(e),i=new Headers({"x-ms-date":(new Date).toUTCString(),"x-ms-version":n.searchParams.get("sv"),"Content-Length":t.buffer.byteLength.toString(),"x-ms-blob-type":"BlockBlob"}),o=new Request(e,{body:t.buffer,cache:"no-store",method:"PUT",headers:i}),a=yield fetch(o);if(201!==a.status)throw new Error(`Failed to create Azure blob: ${a.status}`)}))}azureUploadBlocks(e,t,n){return i(this,void 0,void 0,(function*(){const i=r.Utils.getUrl(e),o=this.getMaxBlockSize(i.searchParams.get("sv"));let a=0;const s=Math.ceil(t.buffer.byteLength/o),l=[];if(s>5e4)throw new Error("Cannot upload file, exceeds maximum size of "+5e4*o);try{for(;a{t+=`${e}`})),t+="",t}getMaxBlockSize(e){return o.compare(e,"2019-12-12")>=0?4194304e3:o.compare(e,"2016-05-31")>=0?104857600:4194304}};class o{constructor(e){this.year=0,this.month=0,this.day=0;try{const t=e.split("-").map((e=>Number.parseInt(e,10)));this.year=t[0],this.month=t[1],this.day=t[2]}catch(t){}}static compare(e,t){return"string"==typeof e&&(e=new o(e)),"string"==typeof t&&(t=new o(t)),e.year!==t.year?e.year-t.year:e.month!==t.month?e.month-t.month:e.day!==t.day?e.day-t.day:0}compare(e){return o.compare(this,e)}}},29911:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenFileUploadService=void 0;const r=n(82769);t.BitwardenFileUploadService=class{constructor(e){this.apiService=e}upload(e,t,n){return i(this,void 0,void 0,(function*(){const i=new FormData;try{const n=new Blob([t.buffer],{type:"application/octet-stream"});i.append("data",n,e)}catch(o){if(!r.Utils.isNode||r.Utils.isBrowser)throw o;i.append("data",Buffer.from(t.buffer),{filepath:e,contentType:"application/octet-stream"})}yield n(i)}))}}},45921:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;t.BroadcasterService=class{constructor(){this.subscribers=new Map}send(e,t){null==t?this.subscribers.forEach((t=>{t(e)})):this.subscribers.has(t)&&this.subscribers.get(t)(e)}subscribe(e,t){this.subscribers.set(e,t)}unsubscribe(e){this.subscribers.has(e)&&this.subscribers.delete(e)}}},36833:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CipherService=void 0;const a=n(32773),s=n(67577),l=n(71703),c=n(27605),d=n(82769),p=n(82789),u=n(73024),m=n(53763),h=n(49624),v=n(84379),g=n(809),f=n(89642),y=n(28947),x=n(20929),S=n(7012),b=n(20126),w=n(82890),C=n(34392),I=n(8488),E=n(61418),P=n(53994),O=n(62415),k=n(16391),A=n(3467),T=n(33018),M=n(40170),B=new Map([["google.com",new Set(["script.google.com"])]]);class D{constructor(e,t,n,i,r,o,a,s){this.cryptoService=e,this.settingsService=t,this.apiService=n,this.fileUploadService=i,this.i18nService=r,this.searchService=o,this.logService=a,this.stateService=s,this.sortedCiphersCache=new b.SortedCiphersCache(this.sortCiphersByLastUsed)}getDecryptedCipherCache(){return o(this,void 0,void 0,(function*(){return yield this.stateService.getDecryptedCiphers()}))}setDecryptedCipherCache(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCiphers(e),null!=this.searchService&&(null==e?this.searchService().clearIndex():this.searchService().indexCiphers())}))}clearCache(e){return o(this,void 0,void 0,(function*(){yield this.clearDecryptedCiphersState(e)}))}encrypt(e,t,n=null){return o(this,void 0,void 0,(function*(){if(null!=e.id){if(null==n&&(n=yield this.get(e.id)),null!=n){const t=yield n.decrypt();if(e.passwordHistory=t.passwordHistory||[],e.type===a.CipherType.Login&&t.type===a.CipherType.Login)if(null!=t.login.password&&""!==t.login.password&&t.login.password!==e.login.password){const n=new M.PasswordHistoryView;n.password=t.login.password,n.lastUsedDate=e.login.passwordRevisionDate=new Date,e.passwordHistory.splice(0,0,n)}else e.login.passwordRevisionDate=t.login.passwordRevisionDate;if(t.hasFields){const n=t.fields.filter((e=>e.type===s.FieldType.Hidden&&null!=e.name&&""!==e.name&&null!=e.value&&""!==e.value)),i=null==e.fields?[]:e.fields.filter((e=>e.type===s.FieldType.Hidden&&null!=e.name&&""!==e.name));n.forEach((t=>{const n=i.find((e=>e.name===t.name));if(null==n||n.value!==t.value){const n=new M.PasswordHistoryView;n.password=t.name+": "+t.value,n.lastUsedDate=new Date,e.passwordHistory.splice(0,0,n)}}))}}null!=e.passwordHistory&&0===e.passwordHistory.length?e.passwordHistory=null:null!=e.passwordHistory&&e.passwordHistory.length>5&&(e.passwordHistory=e.passwordHistory.slice(0,5))}const i=new h.Cipher;if(i.id=e.id,i.folderId=e.folderId,i.favorite=e.favorite,i.organizationId=e.organizationId,i.type=e.type,i.collectionIds=e.collectionIds,i.revisionDate=e.revisionDate,i.reprompt=e.reprompt,null==t&&null!=i.organizationId&&null==(t=yield this.cryptoService.getOrgKey(i.organizationId)))throw new Error("Cannot encrypt cipher for organization. No key.");return yield Promise.all([this.encryptObjProperty(e,i,{name:null,notes:null},t),this.encryptCipherData(i,e,t),this.encryptFields(e.fields,t).then((e=>{i.fields=e})),this.encryptPasswordHistories(e.passwordHistory,t).then((e=>{i.passwordHistory=e})),this.encryptAttachments(e.attachments,t).then((e=>{i.attachments=e}))]),i}))}encryptAttachments(e,t){return o(this,void 0,void 0,(function*(){if(null==e||0===e.length)return null;const n=[],i=[];return e.forEach((e=>o(this,void 0,void 0,(function*(){const r=new u.Attachment;r.id=e.id,r.size=e.size,r.sizeName=e.sizeName,r.url=e.url;const a=this.encryptObjProperty(e,r,{fileName:null},t).then((()=>o(this,void 0,void 0,(function*(){null!=e.key&&(r.key=yield this.cryptoService.encrypt(e.key.key,t)),i.push(r)}))));n.push(a)})))),yield Promise.all(n),i}))}encryptFields(e,t){return o(this,void 0,void 0,(function*(){if(!e||!e.length)return null;const n=this,i=[];return yield e.reduce(((e,r)=>o(this,void 0,void 0,(function*(){yield e;const o=yield n.encryptField(r,t);i.push(o)}))),Promise.resolve()),i}))}encryptField(e,t){return o(this,void 0,void 0,(function*(){const n=new v.Field;return n.type=e.type,n.linkedId=e.linkedId,e.type===s.FieldType.Boolean&&"true"!==e.value&&(e.value="false"),yield this.encryptObjProperty(e,n,{name:null,value:null},t),n}))}encryptPasswordHistories(e,t){return o(this,void 0,void 0,(function*(){if(!e||!e.length)return null;const n=this,i=[];return yield e.reduce(((e,r)=>o(this,void 0,void 0,(function*(){yield e;const o=yield n.encryptPasswordHistory(r,t);i.push(o)}))),Promise.resolve()),i}))}encryptPasswordHistory(e,t){return o(this,void 0,void 0,(function*(){const n=new x.Password;return n.lastUsedDate=e.lastUsedDate,yield this.encryptObjProperty(e,n,{password:null},t),n}))}get(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t||!t.hasOwnProperty(e))return null;const n=yield this.stateService.getLocalData();return new h.Cipher(t[e],n?n[e]:null)}))}getAll(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getLocalData(),t=yield this.stateService.getEncryptedCiphers(),n=[];for(const i in t)t.hasOwnProperty(i)&&n.push(new h.Cipher(t[i],e?e[i]:null));return n}))}getAllDecrypted(){var e;return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getUserId();if(null!=(yield this.getDecryptedCipherCache()))return null!=this.searchService&&(null!==(e=this.searchService().indexedEntityId)&&void 0!==e?e:t)!==t&&(yield this.searchService().indexCiphers(t,yield this.getDecryptedCipherCache())),yield this.getDecryptedCipherCache();const n=[];if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const i=[];return(yield this.getAll()).forEach((e=>o(this,void 0,void 0,(function*(){i.push(e.decrypt().then((e=>n.push(e))))})))),yield Promise.all(i),n.sort(this.getLocaleSortingFunction()),yield this.setDecryptedCipherCache(n),n}))}getAllDecryptedForGrouping(e,t=!0){return o(this,void 0,void 0,(function*(){return(yield this.getAllDecrypted()).filter((n=>!n.isDeleted&&(!(!t||n.folderId!==e)||!t&&null!=n.collectionIds&&n.collectionIds.indexOf(e)>-1)))}))}getAllDecryptedForUrl(e,t,n=null){return o(this,void 0,void 0,(function*(){if(null==e&&null==t)return Promise.resolve([]);const i=d.Utils.getDomain(e),r=null==i?Promise.resolve([]):this.settingsService.getEquivalentDomains().then((e=>{let t=[];return e.forEach((e=>{e.length&&e.indexOf(i)>=0&&(t=t.concat(e))})),t.length||t.push(i),t})),o=yield Promise.all([r,this.getAllDecrypted()]),s=o[0],c=o[1];return null==n&&null==(n=yield this.stateService.getDefaultUriMatch())&&(n=l.UriMatchType.Domain),c.filter((r=>{if(null!=r.deletedDate)return!1;if(null!=t&&t.indexOf(r.type)>-1)return!0;if(null!=e&&r.type===a.CipherType.Login&&null!=r.login.uris)for(let t=0;t-1){if(!B.has(a.domain))return!0;{const t=d.Utils.getHost(e);if(!B.get(a.domain).has(t))return!0}}break;case l.UriMatchType.Host:{const t=d.Utils.getHost(e);if(null!=t&&t===d.Utils.getHost(a.uri))return!0;break}case l.UriMatchType.Exact:if(e===a.uri)return!0;break;case l.UriMatchType.StartsWith:if(e.startsWith(a.uri))return!0;break;case l.UriMatchType.RegularExpression:try{if(new RegExp(a.uri,"i").test(e))return!0}catch(o){this.logService.error(o)}case l.UriMatchType.Never:}}return!1}))}))}getAllFromApiForOrganization(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.getCiphersOrganization(e);if(null!=t&&null!=t.data&&t.data.length){const e=[],n=[];return t.data.forEach((t=>{const i=new p.CipherData(t),r=new h.Cipher(i);n.push(r.decrypt().then((t=>e.push(t))))})),yield Promise.all(n),e.sort(this.getLocaleSortingFunction()),e}return[]}))}getLastUsedForUrl(e,t=!1){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!0,!1,t)}))}getLastLaunchedForUrl(e,t=!1){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!1,!0,t)}))}getNextCipherForUrl(e){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!1,!1,!1)}))}updateLastUsedIndexForUrl(e){this.sortedCiphersCache.updateLastUsedIndex(e)}updateLastUsedDate(e){return o(this,void 0,void 0,(function*(){let t=yield this.stateService.getLocalData();t||(t={}),t[e]?t[e].lastUsedDate=(new Date).getTime():t[e]={lastUsedDate:(new Date).getTime()},yield this.stateService.setLocalData(t);const n=yield this.stateService.getDecryptedCiphers();if(n){for(let i=0;i{null==n.key&&i.push(this.shareAttachmentWithServer(n,e.id,t))})),yield Promise.all(i),e.organizationId=t,e.collectionIds=n;const r=yield this.encrypt(e),o=new A.CipherShareRequest(r),a=yield this.apiService.putShareCipher(e.id,o),s=new p.CipherData(a,n);yield this.upsert(s)}))}shareManyWithServer(e,t,n){return o(this,void 0,void 0,(function*(){const i=[],r=[];for(const s of e)s.organizationId=t,s.collectionIds=n,i.push(this.encrypt(s).then((e=>{r.push(e)})));yield Promise.all(i);const o=new E.CipherBulkShareRequest(r,n);try{yield this.apiService.putShareCiphers(o)}catch(a){for(const t of e)t.organizationId=null,t.collectionIds=null;throw a}yield this.upsert(r.map((e=>e.toCipherData())))}))}saveAttachmentWithServer(e,t,n=!1){return new Promise(((i,r)=>{const a=new FileReader;a.readAsArrayBuffer(t),a.onload=a=>o(this,void 0,void 0,(function*(){try{const r=yield this.saveAttachmentRawWithServer(e,t.name,a.target.result,n);i(r)}catch(o){r(o)}})),a.onerror=()=>{r("Error reading file.")}}))}saveAttachmentRawWithServer(e,t,n,i=!1){return o(this,void 0,void 0,(function*(){const r=yield this.cryptoService.getOrgKey(e.organizationId),o=yield this.cryptoService.encrypt(t,r),a=yield this.cryptoService.makeEncKey(r),s=yield this.cryptoService.encryptToBytes(n,a[0]),l={key:a[1].encryptedString,fileName:o.encryptedString,fileSize:s.buffer.byteLength,adminRequest:i};let c;try{const t=yield this.apiService.postCipherAttachment(e.id,l);c=i?t.cipherMiniResponse:t.cipherResponse,yield this.fileUploadService.uploadCipherAttachment(i,t,o,s)}catch(u){if(!(u instanceof T.ErrorResponse&&404===u.statusCode||405===u.statusCode))throw u instanceof T.ErrorResponse?new Error(u.getSingleMessage()):u;c=yield this.legacyServerAttachmentFileUpload(i,e.id,o,s,a[1])}const d=new p.CipherData(c,e.collectionIds);return i||(yield this.upsert(d)),new h.Cipher(d)}))}legacyServerAttachmentFileUpload(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=new FormData;try{const e=new Blob([i.buffer],{type:"application/octet-stream"});o.append("key",r.encryptedString),o.append("data",e,n.encryptedString)}catch(s){if(!d.Utils.isNode||d.Utils.isBrowser)throw s;o.append("key",r.encryptedString),o.append("data",Buffer.from(i.buffer),{filepath:n.encryptedString,contentType:"application/octet-stream"})}let a;try{a=e?yield this.apiService.postCipherAttachmentAdminLegacy(t,o):yield this.apiService.postCipherAttachmentLegacy(t,o)}catch(s){throw new Error(s.getSingleMessage())}return a}))}saveCollectionsWithServer(e){return o(this,void 0,void 0,(function*(){const t=new P.CipherCollectionsRequest(e.collectionIds);yield this.apiService.putCipherCollections(e.id,t);const n=e.toCipherData();yield this.upsert(n)}))}upsert(e){return o(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedCiphers();if(null==t&&(t={}),e instanceof p.CipherData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return o(this,void 0,void 0,(function*(){yield this.clearDecryptedCiphersState(),yield this.stateService.setEncryptedCiphers(e)}))}clear(e){return o(this,void 0,void 0,(function*(){yield this.clearEncryptedCiphersState(e),yield this.clearCache(e)}))}moveManyWithServer(e,t){return o(this,void 0,void 0,(function*(){yield this.apiService.putMoveCiphers(new C.CipherBulkMoveRequest(e,t));let n=yield this.stateService.getEncryptedCiphers();null==n&&(n={}),e.forEach((e=>{n.hasOwnProperty(e)&&(n[e].folderId=t)})),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(n)}))}delete(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null!=t){if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}}))}deleteWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.deleteCipher(e),yield this.delete(e)}))}deleteManyWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.deleteManyCiphers(new w.CipherBulkDeleteRequest(e)),yield this.delete(e)}))}deleteAttachment(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.stateService.getEncryptedCiphers();if(null!=n&&n.hasOwnProperty(e)&&null!=n[e].attachments){for(let i=0;ii?-1:null!=i&&null==n?1:0}sortCiphersByLastUsedThenName(e,t){const n=this.sortCiphersByLastUsed(e,t);return 0!==n?n:this.getLocaleSortingFunction()(e,t)}getLocaleSortingFunction(){return(e,t)=>{let n=e.name,i=t.name;if(null==n&&null!=i)return-1;if(null!=n&&null==i)return 1;if(null==n&&null==i)return 0;const r=this.i18nService.collator?this.i18nService.collator.compare(n,i):n.localeCompare(i);return 0!==r||e.type!==a.CipherType.Login||t.type!==a.CipherType.Login?r:(null!=e.login.username&&(n+=e.login.username),null!=t.login.username&&(i+=t.login.username),this.i18nService.collator?this.i18nService.collator.compare(n,i):n.localeCompare(i))}}softDelete(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t)return;const n=e=>{null!=t[e]&&(t[e].deletedDate=(new Date).toISOString())};"string"==typeof e?n(e):e.forEach(n),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}))}softDeleteWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.putDeleteCipher(e),yield this.softDelete(e)}))}softDeleteManyWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.putDeleteManyCiphers(new w.CipherBulkDeleteRequest(e)),yield this.softDelete(e)}))}restore(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t)return;const n=e=>{null!=t[e.id]&&(t[e.id].deletedDate=null,t[e.id].revisionDate=e.revisionDate)};e.constructor.name===Array.name?e.forEach(n):n(e),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}))}restoreWithServer(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.putRestoreCipher(e);yield this.restore({id:e,revisionDate:t.revisionDate})}))}restoreManyWithServer(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.putRestoreManyCiphers(new I.CipherBulkRestoreRequest(e)),n=[];for(const e of t.data)n.push({id:e.id,revisionDate:e.revisionDate});yield this.restore(n)}))}shareAttachmentWithServer(e,t,n){return o(this,void 0,void 0,(function*(){const i=yield this.apiService.nativeFetch(new Request(e.url,{cache:"no-store"}));if(200!==i.status)throw Error("Failed to download attachment: "+i.status.toString());const r=yield i.arrayBuffer(),o=yield this.cryptoService.decryptFromBytes(r,null),a=yield this.cryptoService.getOrgKey(n),s=yield this.cryptoService.encrypt(e.fileName,a),l=yield this.cryptoService.makeEncKey(a),c=yield this.cryptoService.encryptToBytes(o,l[0]),p=new FormData;try{const e=new Blob([c.buffer],{type:"application/octet-stream"});p.append("key",l[1].encryptedString),p.append("data",e,s.encryptedString)}catch(u){if(!d.Utils.isNode||d.Utils.isBrowser)throw u;p.append("key",l[1].encryptedString),p.append("data",Buffer.from(c.buffer),{filepath:s.encryptedString,contentType:"application/octet-stream"})}try{yield this.apiService.postShareCipherAttachment(t,e.id,p,n)}catch(u){throw new Error(u.getSingleMessage())}}))}encryptObjProperty(e,t,n,i){return o(this,void 0,void 0,(function*(){const r=[],o=this;for(const a in n)n.hasOwnProperty(a)&&function(t,a){const s=Promise.resolve().then((()=>{const r=e[n[t]||t];return r&&""!==r?o.cryptoService.encrypt(r,i):null})).then((e=>{a[t]=e}));r.push(s)}(a,t);yield Promise.all(r)}))}encryptCipherData(e,t,n){return o(this,void 0,void 0,(function*(){switch(e.type){case a.CipherType.Login:if(e.login=new f.Login,e.login.passwordRevisionDate=t.login.passwordRevisionDate,e.login.autofillOnPageLoad=t.login.autofillOnPageLoad,yield this.encryptObjProperty(t.login,e.login,{username:null,password:null,totp:null},n),null!=t.login.uris){e.login.uris=[];for(let i=0;it.login.autofillOnPageLoad||null==t.login.autofillOnPageLoad&&!1!==e)),0===t.length)return null}this.sortedCiphersCache.addCiphers(r,t)}return n?this.sortedCiphersCache.getLastLaunched(r):t?this.sortedCiphersCache.getLastUsed(r):this.sortedCiphersCache.getNext(r)}))}clearEncryptedCiphersState(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setEncryptedCiphers(null,{userId:e})}))}clearDecryptedCiphersState(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCiphers(null,{userId:e}),this.clearSortedCiphers()}))}clearSortedCiphers(){this.sortedCiphersCache.clear()}}i([c.sequentialize((()=>"getAllDecrypted")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],D.prototype,"getAllDecrypted",null),t.CipherService=D},94778:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionService=void 0;const r=n(39814),o=n(82769),a=n(34917),s=n(65642),l=n(86001);t.CollectionService=class{constructor(e,t,n){this.cryptoService=e,this.i18nService=t,this.stateService=n}clearCache(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCollections(null,{userId:e})}))}encrypt(e){return i(this,void 0,void 0,(function*(){if(null==e.organizationId)throw new Error("Collection has no organization id.");const t=yield this.cryptoService.getOrgKey(e.organizationId);if(null==t)throw new Error("No key for this collection's organization.");const n=new s.Collection;return n.id=e.id,n.organizationId=e.organizationId,n.readOnly=e.readOnly,n.name=yield this.cryptoService.encrypt(e.name,t),n}))}decryptMany(e){return i(this,void 0,void 0,(function*(){if(null==e)return[];const t=[],n=[];return e.forEach((e=>{n.push(e.decrypt().then((e=>t.push(e))))})),yield Promise.all(n),t.sort(o.Utils.getSortFunction(this.i18nService,"name"))}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCollections();return null!=t&&t.hasOwnProperty(e)?new s.Collection(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedCollections(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new s.Collection(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getDecryptedCollections();if(null!=e)return e;if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=yield this.getAll();return e=yield this.decryptMany(t),yield this.stateService.setDecryptedCollections(e),e}))}getAllNested(e=null){return i(this,void 0,void 0,(function*(){null==e&&(e=yield this.getAllDecrypted());const t=[];return e.forEach((e=>{const n=new l.CollectionView;n.id=e.id,n.organizationId=e.organizationId;const i=null!=e.name?e.name.replace(/^\/+|\/+$/g,"").split("/"):[];r.ServiceUtils.nestedTraverse(t,0,i,n,null,"/")})),t}))}getNested(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAllNested();return r.ServiceUtils.getTreeNodeObject(t,e)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedCollections();if(null==t&&(t={}),e instanceof a.CollectionData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.clearCache(),yield this.stateService.setEncryptedCollections(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.clearCache(e),yield this.stateService.setEncryptedCollections(null,{userId:e})}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCollections();null!=t&&("string"==typeof e?delete t[e]:e.forEach((e=>{delete t[e]})),yield this.replace(t))}))}}},27944:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConsoleLogService=void 0;const i=n(40827),r=n(71518);t.ConsoleLogService=class{constructor(e,t=null){this.isDev=e,this.filter=t,this.timersMap=new Map}debug(e){this.isDev&&this.write(r.LogLevelType.Debug,e)}info(e){this.write(r.LogLevelType.Info,e)}warning(e){this.write(r.LogLevelType.Warning,e)}error(e){this.write(r.LogLevelType.Error,e)}write(e,t){if(null==this.filter||!this.filter(e))switch(e){case r.LogLevelType.Debug:case r.LogLevelType.Info:console.log(t);break;case r.LogLevelType.Warning:console.warn(t);break;case r.LogLevelType.Error:console.error(t)}}time(e="default"){this.timersMap.has(e)||this.timersMap.set(e,i())}timeEnd(e="default"){const t=i(this.timersMap.get(e));return this.timersMap.delete(e),this.write(r.LogLevelType.Info,`${e}: ${1e3*t[0]+t[1]/1e7}ms`),t}}},74901:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerService=void 0;t.ContainerService=class{constructor(e){this.cryptoService=e}attachToWindow(e){this.attachToGlobal(e)}attachToGlobal(e){e.bitwardenContainerService||(e.bitwardenContainerService=this)}getCryptoService(){return this.cryptoService}}},47165:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoService=void 0;const a=n(24736),s=n(28588),l=n(43578),c=n(20971),d=n(7980),p=n(27605),u=n(82769),m=n(40596),h=n(16131),v=n(22205),g=n(6394),f=n(69731);class y{constructor(e,t,n,i){this.cryptoFunctionService=e,this.platformUtilService=t,this.logService=n,this.stateService=i}setKey(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKey(e,{userId:t}),yield this.storeKey(e,t)}))}setKeyHash(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setKeyHash(e)}))}setEncKey(e){return o(this,void 0,void 0,(function*(){null!=e&&(yield this.stateService.setDecryptedCryptoSymmetricKey(null),yield this.stateService.setEncryptedCryptoSymmetricKey(e))}))}setEncPrivateKey(e){return o(this,void 0,void 0,(function*(){null!=e&&(yield this.stateService.setDecryptedPrivateKey(null),yield this.stateService.setEncryptedPrivateKey(e))}))}setOrgKeys(e,t){return o(this,void 0,void 0,(function*(){const n={};e.forEach((e=>{n[e.id]=e.key}));for(const e of t){const t=yield this.getProviderKey(e.providerId),i=yield this.decryptToBytes(new v.EncString(e.key),t);n[e.id]=(yield this.rsaEncrypt(i)).encryptedString}return yield this.stateService.setDecryptedOrganizationKeys(null),yield this.stateService.setEncryptedOrganizationKeys(n)}))}setProviderKeys(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=e.key})),yield this.stateService.setDecryptedProviderKeys(null),yield this.stateService.setEncryptedProviderKeys(t)}))}getKey(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.stateService.getCryptoMasterKey({userId:t});if(null!=n)return n;e||(e=d.KeySuffixOptions.Auto);const i=yield this.getKeyFromStorage(e,t);return null!=i&&this.setKey(i,t),i}))}getKeyFromStorage(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.retrieveKeyFromStorage(e,t);if(null!=n){const e=new f.SymmetricCryptoKey(u.Utils.fromB64ToArray(n).buffer);return(yield this.validateKey(e))?e:(this.logService.warning("Wrong key, throwing away stored key"),yield this.clearSecretKeyStore(t),null)}return null}))}getKeyHash(){return o(this,void 0,void 0,(function*(){return yield this.stateService.getKeyHash()}))}compareAndUpdateKeyHash(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.getKeyHash();if(null!=e&&null!=n){const i=yield this.hashPassword(e,t,l.HashPurpose.LocalAuthorization);if(null!=i&&n===i)return!0;const r=yield this.hashPassword(e,t,l.HashPurpose.ServerAuthorization);if(null!=r&&n===r)return yield this.setKeyHash(i),!0}return!1}))}getEncKey(e=null){return this.getEncKeyHelper(e)}getPublicKey(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getPublicKey();if(null!=e)return e;const t=yield this.getPrivateKey();if(null==t)return null;const n=yield this.cryptoFunctionService.rsaExtractPublicKey(t);return yield this.stateService.setPublicKey(n),n}))}getPrivateKey(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getDecryptedPrivateKey();if(null!=e)return e;const t=yield this.stateService.getEncryptedPrivateKey();if(null==t)return null;const n=yield this.decryptToBytes(new v.EncString(t),null);return yield this.stateService.setDecryptedPrivateKey(n),n}))}getFingerprint(e,t){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getPublicKey()),null===t)throw new Error("No public key available.");const n=yield this.cryptoFunctionService.hash(t,"sha256"),i=yield this.cryptoFunctionService.hkdfExpand(n,e,32,"sha256");return this.hashPhrase(i)}))}getOrgKeys(){return o(this,void 0,void 0,(function*(){const e=new Map,t=yield this.stateService.getDecryptedOrganizationKeys();if(null!=t&&t.size>0)return t;const n=yield this.stateService.getEncryptedOrganizationKeys();if(null==n)return null;let i=!1;for(const r in n){if(!n.hasOwnProperty(r))continue;const t=yield this.rsaDecrypt(n[r]);e.set(r,new f.SymmetricCryptoKey(t)),i=!0}return i&&(yield this.stateService.setDecryptedOrganizationKeys(e)),e}))}getOrgKey(e){return o(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.getOrgKeys();return null!=t&&t.has(e)?t.get(e):null}))}getProviderKeys(){return o(this,void 0,void 0,(function*(){const e=new Map,t=yield this.stateService.getDecryptedProviderKeys();if(null!=t&&t.size>0)return t;const n=yield this.stateService.getEncryptedProviderKeys();if(null==n)return null;let i=!1;for(const r in n){if(!n.hasOwnProperty(r))continue;const t=yield this.rsaDecrypt(n[r]);e.set(r,new f.SymmetricCryptoKey(t)),i=!0}return i&&(yield this.stateService.setDecryptedProviderKeys(e)),e}))}getProviderKey(e){return o(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.getProviderKeys();return null!=t&&t.has(e)?t.get(e):null}))}hasKey(){return o(this,void 0,void 0,(function*(){return(yield this.hasKeyInMemory())||(yield this.hasKeyStored(d.KeySuffixOptions.Auto))||(yield this.hasKeyStored(d.KeySuffixOptions.Biometric))}))}hasKeyInMemory(e){return o(this,void 0,void 0,(function*(){return null!=(yield this.stateService.getCryptoMasterKey({userId:e}))}))}hasKeyStored(e,t){return o(this,void 0,void 0,(function*(){switch(e){case d.KeySuffixOptions.Auto:return null!=(yield this.stateService.getCryptoMasterKeyAuto({userId:t}));case d.KeySuffixOptions.Biometric:return!0===(yield this.stateService.hasCryptoMasterKeyBiometric({userId:t}));default:return!1}}))}hasEncKey(){return o(this,void 0,void 0,(function*(){return null!=(yield this.stateService.getEncryptedCryptoSymmetricKey())}))}clearKey(e=!0,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKey(null,{userId:t}),yield this.stateService.setLegacyEtmKey(null,{userId:t}),e&&(yield this.clearSecretKeyStore(t))}))}clearStoredKey(e){return o(this,void 0,void 0,(function*(){e===d.KeySuffixOptions.Auto?yield this.stateService.setCryptoMasterKeyAuto(null):yield this.stateService.setCryptoMasterKeyBiometric(null)}))}clearKeyHash(e){return o(this,void 0,void 0,(function*(){return yield this.stateService.setKeyHash(null,{userId:e})}))}clearEncKey(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCryptoSymmetricKey(null,{userId:t}),e||(yield this.stateService.setEncryptedCryptoSymmetricKey(null,{userId:t}))}))}clearKeyPair(e,t){return o(this,void 0,void 0,(function*(){const n=[this.stateService.setDecryptedPrivateKey(null,{userId:t}),this.stateService.setPublicKey(null,{userId:t})];return e||n.push(this.stateService.setEncryptedPrivateKey(null,{userId:t})),Promise.all(n)}))}clearOrgKeys(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedOrganizationKeys(null,{userId:t}),e||(yield this.stateService.setEncryptedOrganizationKeys(null,{userId:t}))}))}clearProviderKeys(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedProviderKeys(null,{userId:t}),e||(yield this.stateService.setEncryptedProviderKeys(null,{userId:t}))}))}clearPinProtectedKey(e){return o(this,void 0,void 0,(function*(){return yield this.stateService.setEncryptedPinProtected(null,{userId:e})}))}clearKeys(e){return o(this,void 0,void 0,(function*(){yield this.clearKey(!0,e),yield this.clearKeyHash(e),yield this.clearOrgKeys(!1,e),yield this.clearProviderKeys(!1,e),yield this.clearEncKey(!1,e),yield this.clearKeyPair(!1,e),yield this.clearPinProtectedKey(e)}))}toggleKey(){return o(this,void 0,void 0,(function*(){const e=yield this.getKey();yield this.setKey(e)}))}makeKey(e,t,n,i){return o(this,void 0,void 0,(function*(){let r=null;if(null!=n&&n!==c.KdfType.PBKDF2_SHA256)throw new Error("Unknown Kdf.");if(null==i)i=5e3;else if(i<5e3)throw new Error("PBKDF2 iteration minimum is 5000.");return r=yield this.cryptoFunctionService.pbkdf2(e,t,"sha256",i),new f.SymmetricCryptoKey(r)}))}makeKeyFromPin(e,t,n,i,r=null){return o(this,void 0,void 0,(function*(){if(null==r){const e=yield this.stateService.getEncryptedPinProtected();if(null==e)throw new Error("No PIN protected key found.");r=new v.EncString(e)}const o=yield this.makePinKey(e,t,n,i),a=yield this.decryptToBytes(r,o);return new f.SymmetricCryptoKey(a)}))}makeShareKey(){return o(this,void 0,void 0,(function*(){const e=yield this.cryptoFunctionService.randomBytes(64),t=yield this.getPublicKey();return[yield this.rsaEncrypt(e,t),new f.SymmetricCryptoKey(e)]}))}makeKeyPair(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.rsaGenerateKeyPair(2048);return[u.Utils.fromBufferToB64(t[0]),yield this.encrypt(t[1],e)]}))}makePinKey(e,t,n,i){return o(this,void 0,void 0,(function*(){const r=yield this.makeKey(e,t,n,i);return yield this.stretchKey(r)}))}makeSendKey(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.hkdf(e,"bitwarden-send","send",64,"sha256");return new f.SymmetricCryptoKey(t)}))}hashPassword(e,t,n){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getKey()),null==e||null==t)throw new Error("Invalid parameters.");const i=n===l.HashPurpose.LocalAuthorization?2:1,r=yield this.cryptoFunctionService.pbkdf2(t.key,e,"sha256",i);return u.Utils.fromBufferToB64(r)}))}makeEncKey(e){return o(this,void 0,void 0,(function*(){const t=yield this.getKeyForEncryption(e),n=yield this.cryptoFunctionService.randomBytes(64);return this.buildEncKey(t,n)}))}remakeEncKey(e,t){return o(this,void 0,void 0,(function*(){return null==t&&(t=yield this.getEncKey()),this.buildEncKey(e,t.key)}))}encrypt(e,t){return o(this,void 0,void 0,(function*(){if(null==e)return Promise.resolve(null);let n;n="string"==typeof e?u.Utils.fromUtf8ToArray(e).buffer:e;const i=yield this.aesEncrypt(n,t),r=u.Utils.fromBufferToB64(i.iv),o=u.Utils.fromBufferToB64(i.data),a=null!=i.mac?u.Utils.fromBufferToB64(i.mac):null;return new v.EncString(i.key.encType,o,r,a)}))}encryptToBytes(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.aesEncrypt(e,t);let i=0;null!=n.mac&&(i=n.mac.byteLength);const r=new Uint8Array(1+n.iv.byteLength+i+n.data.byteLength);return r.set([n.key.encType]),r.set(new Uint8Array(n.iv),1),null!=n.mac&&r.set(new Uint8Array(n.mac),1+n.iv.byteLength),r.set(new Uint8Array(n.data),1+n.iv.byteLength+i),new h.EncArrayBuffer(r.buffer)}))}rsaEncrypt(e,t){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getPublicKey()),null==t)throw new Error("Public key unavailable.");const n=yield this.cryptoFunctionService.rsaEncrypt(e,t,"sha1");return new v.EncString(s.EncryptionType.Rsa2048_OaepSha1_B64,u.Utils.fromBufferToB64(n))}))}rsaDecrypt(e,t){return o(this,void 0,void 0,(function*(){const n=e.split(".");let i,r=null;if(1===n.length)r=s.EncryptionType.Rsa2048_OaepSha256_B64,i=[n[0]];else if(2===n.length)try{r=parseInt(n[0],null),i=n[1].split("|")}catch(c){this.logService.error(c)}switch(r){case s.EncryptionType.Rsa2048_OaepSha256_B64:case s.EncryptionType.Rsa2048_OaepSha1_B64:case s.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:case s.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:break;default:throw new Error("encType unavailable.")}if(null==i||i.length<=0)throw new Error("encPieces unavailable.");const o=u.Utils.fromB64ToArray(i[0]).buffer,a=null!=t?t:yield this.getPrivateKey();if(null==a)throw new Error("No private key.");let l="sha1";switch(r){case s.EncryptionType.Rsa2048_OaepSha256_B64:case s.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:l="sha256";break;case s.EncryptionType.Rsa2048_OaepSha1_B64:case s.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:break;default:throw new Error("encType unavailable.")}return this.cryptoFunctionService.rsaDecrypt(o,a,l)}))}decryptToBytes(e,t){return o(this,void 0,void 0,(function*(){const n=u.Utils.fromB64ToArray(e.iv).buffer,i=u.Utils.fromB64ToArray(e.data).buffer,r=e.mac?u.Utils.fromB64ToArray(e.mac).buffer:null,o=yield this.aesDecryptToBytes(e.encryptionType,i,n,r,t);return null==o?null:o}))}decryptToUtf8(e,t){return o(this,void 0,void 0,(function*(){return yield this.aesDecryptToUtf8(e.encryptionType,e.data,e.iv,e.mac,t)}))}decryptFromBytes(e,t){return o(this,void 0,void 0,(function*(){if(null==e)throw new Error("no encBuf.");const n=new Uint8Array(e),i=n[0];let r=null,o=null,a=null;switch(i){case s.EncryptionType.AesCbc128_HmacSha256_B64:case s.EncryptionType.AesCbc256_HmacSha256_B64:if(n.length<=49)return null;o=n.slice(1,17),a=n.slice(17,49),r=n.slice(49);break;case s.EncryptionType.AesCbc256_B64:if(n.length<=17)return null;o=n.slice(1,17),r=n.slice(17);break;default:return null}return yield this.aesDecryptToBytes(i,r.buffer,o.buffer,null!=a?a.buffer:null,t)}))}randomNumber(e,t){return o(this,void 0,void 0,(function*(){let n=0;const i=t-e+1,r=Math.ceil(Math.log2(i));if(r>53)throw new Error("We cannot generate numbers larger than 53 bits.");const o=Math.ceil(r/8),a=Math.pow(2,r)-1,s=new Uint8Array(yield this.cryptoFunctionService.randomBytes(o));let l=8*(o-1);for(let e=0;e=i?this.randomNumber(e,t):e+n}))}validateKey(e){return o(this,void 0,void 0,(function*(){try{const t=yield this.stateService.getEncryptedPrivateKey(),n=yield this.getEncKeyHelper(e);if(null==t||null==n)return!1;const i=yield this.decryptToBytes(new v.EncString(t),n);yield this.cryptoFunctionService.rsaExtractPublicKey(i)}catch(t){return!1}return!0}))}storeKey(e,t){return o(this,void 0,void 0,(function*(){(yield this.shouldStoreKey(d.KeySuffixOptions.Auto,t))?yield this.stateService.setCryptoMasterKeyAuto(e.keyB64,{userId:t}):(yield this.shouldStoreKey(d.KeySuffixOptions.Biometric,t))?yield this.stateService.setCryptoMasterKeyBiometric(e.keyB64,{userId:t}):(yield this.stateService.setCryptoMasterKeyAuto(null,{userId:t}),yield this.stateService.setCryptoMasterKeyBiometric(null,{userId:t}))}))}shouldStoreKey(e,t){return o(this,void 0,void 0,(function*(){let n=!1;if(e===d.KeySuffixOptions.Auto){n=null==(yield this.stateService.getVaultTimeout({userId:t}))}else if(e===d.KeySuffixOptions.Biometric){n=(yield this.stateService.getBiometricUnlock({userId:t}))&&this.platformUtilService.supportsSecureStorage()}return n}))}retrieveKeyFromStorage(e,t){return o(this,void 0,void 0,(function*(){return e===d.KeySuffixOptions.Auto?yield this.stateService.getCryptoMasterKeyAuto({userId:t}):yield this.stateService.getCryptoMasterKeyBiometric({userId:t})}))}aesEncrypt(e,t){return o(this,void 0,void 0,(function*(){const n=new g.EncryptedObject;if(n.key=yield this.getKeyForEncryption(t),n.iv=yield this.cryptoFunctionService.randomBytes(16),n.data=yield this.cryptoFunctionService.aesEncrypt(e,n.iv,n.key.encKey),null!=n.key.macKey){const e=new Uint8Array(n.iv.byteLength+n.data.byteLength);e.set(new Uint8Array(n.iv),0),e.set(new Uint8Array(n.data),n.iv.byteLength),n.mac=yield this.cryptoFunctionService.hmac(e.buffer,n.key.macKey,"sha256")}return n}))}aesDecryptToUtf8(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=yield this.getKeyForEncryption(r),a=yield this.resolveLegacyKey(e,o);if(null!=a.macKey&&null==i)return this.logService.error("mac required."),null;if(a.encType!==e)return this.logService.error("encType unavailable."),null;const s=this.cryptoFunctionService.aesDecryptFastParameters(t,n,i,a);if(null!=s.macKey&&null!=s.mac){const e=yield this.cryptoFunctionService.hmacFast(s.macData,s.macKey,"sha256");if(!(yield this.cryptoFunctionService.compareFast(s.mac,e)))return this.logService.error("mac failed."),null}return this.cryptoFunctionService.aesDecryptFast(s)}))}aesDecryptToBytes(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=yield this.getKeyForEncryption(r),a=yield this.resolveLegacyKey(e,o);if(null!=a.macKey&&null==i)return null;if(a.encType!==e)return null;if(null!=a.macKey&&null!=i){const e=new Uint8Array(n.byteLength+t.byteLength);e.set(new Uint8Array(n),0),e.set(new Uint8Array(t),n.byteLength);const r=yield this.cryptoFunctionService.hmac(e.buffer,a.macKey,"sha256");if(null===r)return null;if(!(yield this.cryptoFunctionService.compare(i,r)))return this.logService.error("mac failed."),null}return yield this.cryptoFunctionService.aesDecrypt(t,n,a.encKey)}))}getKeyForEncryption(e){return o(this,void 0,void 0,(function*(){if(null!=e)return e;const t=yield this.getEncKey();return null!=t?t:yield this.getKey()}))}resolveLegacyKey(e,t){return o(this,void 0,void 0,(function*(){if(e===s.EncryptionType.AesCbc128_HmacSha256_B64&&t.encType===s.EncryptionType.AesCbc256_B64){let e=yield this.stateService.getLegacyEtmKey();return null==e&&(e=new f.SymmetricCryptoKey(t.key,s.EncryptionType.AesCbc128_HmacSha256_B64),yield this.stateService.setLegacyEtmKey(e)),e}return t}))}stretchKey(e){return o(this,void 0,void 0,(function*(){const t=new Uint8Array(64),n=yield this.cryptoFunctionService.hkdfExpand(e.key,"enc",32,"sha256"),i=yield this.cryptoFunctionService.hkdfExpand(e.key,"mac",32,"sha256");return t.set(new Uint8Array(n)),t.set(new Uint8Array(i),32),new f.SymmetricCryptoKey(t.buffer)}))}hashPhrase(e,t=64){return o(this,void 0,void 0,(function*(){const n=Math.log(m.EEFLongWordList.length)/Math.log(2);let i=Math.ceil(t/n);const r=Array.from(new Uint8Array(e));if(i*n>4*r.length)throw new Error("Output entropy of hash function is too small");const o=[];let s=a.fromArray(r,256);for(;i--;){const e=s.mod(m.EEFLongWordList.length);s=s.divide(m.EEFLongWordList.length),o.push(m.EEFLongWordList[e])}return o}))}buildEncKey(e,t){return o(this,void 0,void 0,(function*(){let n=null;if(32===e.key.byteLength){const i=yield this.stretchKey(e);n=yield this.encrypt(t,i)}else{if(64!==e.key.byteLength)throw new Error("Invalid key size.");n=yield this.encrypt(t,e)}return[new f.SymmetricCryptoKey(t),n]}))}clearSecretKeyStore(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKeyAuto(null,{userId:e}),yield this.stateService.setCryptoMasterKeyBiometric(null,{userId:e})}))}getEncKeyHelper(e=null){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getDecryptedCryptoSymmetricKey();if(null!=t)return t;const n=yield this.stateService.getEncryptedCryptoSymmetricKey();if(null==n)return null;if(null==e&&(e=yield this.getKey()),null==e)return null;let i;const r=new v.EncString(n);if(r.encryptionType===s.EncryptionType.AesCbc256_B64)i=yield this.decryptToBytes(r,e);else{if(r.encryptionType!==s.EncryptionType.AesCbc256_HmacSha256_B64)throw new Error("Unsupported encKey type.");{const t=yield this.stretchKey(e);i=yield this.decryptToBytes(r,t)}}if(null==i)return null;const o=new f.SymmetricCryptoKey(i);return yield this.stateService.setDecryptedCryptoSymmetricKey(o),o}))}}i([p.sequentialize((()=>"getEncKey")),r("design:type",Function),r("design:paramtypes",[f.SymmetricCryptoKey]),r("design:returntype",Promise)],y.prototype,"getEncKey",null),i([p.sequentialize((()=>"getOrgKeys")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],y.prototype,"getOrgKeys",null),i([p.sequentialize((()=>"getProviderKeys")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],y.prototype,"getProviderKeys",null),t.CryptoService=y},86683:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentService=void 0;const r=n(72872),o=n(91185);t.EnvironmentService=class{constructor(e){this.stateService=e,this.urlsSubject=new r.Subject,this.urls=this.urlsSubject,this.stateService.activeAccount.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.setUrlsFromStorage()}))))}hasBaseUrl(){return null!=this.baseUrl}getNotificationsUrl(){return null!=this.notificationsUrl?this.notificationsUrl:null!=this.baseUrl?this.baseUrl+"/notifications":"https://notifications.bitwarden.com"}getWebVaultUrl(){return null!=this.webVaultUrl?this.webVaultUrl:this.baseUrl?this.baseUrl:"https://vault.bitwarden.com"}getSendUrl(){return"https://vault.bitwarden.com"===this.getWebVaultUrl()?"https://send.bitwarden.com/#":this.getWebVaultUrl()+"/#/send/"}getIconsUrl(){return null!=this.iconsUrl?this.iconsUrl:this.baseUrl?this.baseUrl+"/icons":"https://icons.bitwarden.net"}getApiUrl(){return null!=this.apiUrl?this.apiUrl:this.baseUrl?this.baseUrl+"/api":"https://api.bitwarden.com"}getIdentityUrl(){return null!=this.identityUrl?this.identityUrl:this.baseUrl?this.baseUrl+"/identity":"https://identity.bitwarden.com"}getEventsUrl(){return null!=this.eventsUrl?this.eventsUrl:this.baseUrl?this.baseUrl+"/events":"https://events.bitwarden.com"}getKeyConnectorUrl(){return this.keyConnectorUrl}setUrlsFromStorage(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEnvironmentUrls(),t=new o.EnvironmentUrls;this.baseUrl=t.base=e.base,this.webVaultUrl=e.webVault,this.apiUrl=t.api=e.api,this.identityUrl=t.identity=e.identity,this.iconsUrl=e.icons,this.notificationsUrl=e.notifications,this.eventsUrl=t.events=e.events,this.keyConnectorUrl=e.keyConnector}))}setUrls(e){return i(this,void 0,void 0,(function*(){return e.base=this.formatUrl(e.base),e.webVault=this.formatUrl(e.webVault),e.api=this.formatUrl(e.api),e.identity=this.formatUrl(e.identity),e.icons=this.formatUrl(e.icons),e.notifications=this.formatUrl(e.notifications),e.events=this.formatUrl(e.events),e.keyConnector=this.formatUrl(e.keyConnector),yield this.stateService.setEnvironmentUrls({base:e.base,api:e.api,identity:e.identity,webVault:e.webVault,icons:e.icons,notifications:e.notifications,events:e.events,keyConnector:e.keyConnector}),this.baseUrl=e.base,this.webVaultUrl=e.webVault,this.apiUrl=e.api,this.identityUrl=e.identity,this.iconsUrl=e.icons,this.notificationsUrl=e.notifications,this.eventsUrl=e.events,this.keyConnectorUrl=e.keyConnector,this.urlsSubject.next(e),e}))}getUrls(){return{base:this.baseUrl,webVault:this.webVaultUrl,api:this.apiUrl,identity:this.identityUrl,icons:this.iconsUrl,notifications:this.notificationsUrl,events:this.eventsUrl,keyConnector:this.keyConnectorUrl}}formatUrl(e){return null==e||""===e?null:((e=e.replace(/\/+$/g,"")).startsWith("http://")||e.startsWith("https://")||(e="https://"+e),e.trim())}}},14215:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventService=void 0;const r=n(93053),o=n(20604);t.EventService=class{constructor(e,t,n,i,r){this.apiService=e,this.cipherService=t,this.stateService=n,this.logService=i,this.organizationService=r,this.inited=!1}init(e){this.inited||(this.inited=!0,e&&(this.uploadEvents(),setInterval((()=>this.uploadEvents()),6e4)))}collect(e,t=null,n=!1){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated()))return;const i=yield this.organizationService.getAll();if(null==i)return;const o=new Set(i.filter((e=>e.useEvents)).map((e=>e.id)));if(0===o.size)return;if(null!=t){const e=yield this.cipherService.get(t);if(null==e||null==e.organizationId||!o.has(e.organizationId))return}let a=yield this.stateService.getEventCollection();null==a&&(a=[]);const s=new r.EventData;s.type=e,s.cipherId=t,s.date=(new Date).toISOString(),a.push(s),yield this.stateService.setEventCollection(a),n&&(yield this.uploadEvents())}))}uploadEvents(e){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated({userId:e})))return;const t=yield this.stateService.getEventCollection({userId:e});if(null==t||0===t.length)return;const n=t.map((e=>{const t=new o.EventRequest;return t.type=e.type,t.cipherId=e.cipherId,t.date=e.date,t}));try{yield this.apiService.postEventsCollect(n),this.clearEvents(e)}catch(i){this.logService.error(i)}}))}clearEvents(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEventCollection(null,{userId:e})}))}}},48698:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportService=void 0;const r=n(57460),o=n(32773),a=n(20971),s=n(82769),l=n(82789),c=n(34917),d=n(49624),p=n(65642),u=n(83460),m=n(5136),h=n(42587),v=n(31087);t.ExportService=class{constructor(e,t,n,i,r){this.folderService=e,this.cipherService=t,this.apiService=n,this.cryptoService=i,this.cryptoFunctionService=r}getExport(e="csv",t){return i(this,void 0,void 0,(function*(){return t?yield this.getOrganizationExport(t,e):"encrypted_json"===e?this.getEncryptedExport():this.getDecryptedExport(e)}))}getPasswordProtectedExport(e,t){return i(this,void 0,void 0,(function*(){const n=t?yield this.getOrganizationExport(t,"json"):yield this.getExport("json"),i=s.Utils.fromBufferToB64(yield this.cryptoFunctionService.randomBytes(16)),r=a.DEFAULT_KDF_ITERATIONS,o=yield this.cryptoService.makePinKey(e,i,a.KdfType.PBKDF2_SHA256,r),l=yield this.cryptoService.encrypt(s.Utils.newGuid(),o),c=yield this.cryptoService.encrypt(n,o),d={encrypted:!0,passwordProtected:!0,salt:i,kdfIterations:r,kdfType:a.KdfType.PBKDF2_SHA256,encKeyValidation_DO_NOT_EDIT:l.encryptedString,data:c.encryptedString};return JSON.stringify(d,null," ")}))}getOrganizationExport(e,t="csv"){return i(this,void 0,void 0,(function*(){return"encrypted_json"===t?this.getOrganizationEncryptedExport(e):this.getOrganizationDecryptedExport(e,t)}))}getEventExport(e){return i(this,void 0,void 0,(function*(){return r.unparse(e.map((e=>new h.EventExport(e))))}))}getFileName(e=null,t="csv"){const n=new Date;return"bitwarden"+(e?"_"+e:"")+"_export_"+(n.getFullYear()+""+this.padNumber(n.getMonth()+1,2)+this.padNumber(n.getDate(),2)+this.padNumber(n.getHours(),2)+this.padNumber(n.getMinutes(),2)+this.padNumber(n.getSeconds(),2))+"."+t}getDecryptedExport(e){return i(this,void 0,void 0,(function*(){let t=[],n=[];const i=[];if(i.push(this.folderService.getAllDecrypted().then((e=>{t=e}))),i.push(this.cipherService.getAllDecrypted().then((e=>{n=e.filter((e=>null==e.deletedDate))}))),yield Promise.all(i),"csv"===e){const e=new Map;t.forEach((t=>{null!=t.id&&e.set(t.id,t)}));const i=[];return n.forEach((t=>{if(t.type!==o.CipherType.Login&&t.type!==o.CipherType.SecureNote)return;if(null!=t.organizationId)return;const n={};n.folder=null!=t.folderId&&e.has(t.folderId)?e.get(t.folderId).name:null,n.favorite=t.favorite?1:null,this.buildCommonCipher(n,t),i.push(n)})),r.unparse(i)}{const e={encrypted:!1,folders:[],items:[]};return t.forEach((t=>{if(null==t.id)return;const n=new v.FolderWithIdExport;n.build(t),e.folders.push(n)})),n.forEach((t=>{if(null!=t.organizationId)return;const n=new u.CipherWithIdExport;n.build(t),n.collectionIds=null,e.items.push(n)})),JSON.stringify(e,null," ")}}))}getEncryptedExport(){return i(this,void 0,void 0,(function*(){let e=[],t=[];const n=[];n.push(this.folderService.getAll().then((t=>{e=t}))),n.push(this.cipherService.getAll().then((e=>{t=e.filter((e=>null==e.deletedDate))}))),yield Promise.all(n);const i={encrypted:!0,encKeyValidation_DO_NOT_EDIT:(yield this.cryptoService.encrypt(s.Utils.newGuid())).encryptedString,folders:[],items:[]};return e.forEach((e=>{if(null==e.id)return;const t=new v.FolderWithIdExport;t.build(e),i.folders.push(t)})),t.forEach((e=>{if(null!=e.organizationId)return;const t=new u.CipherWithIdExport;t.build(e),t.collectionIds=null,i.items.push(t)})),JSON.stringify(i,null," ")}))}getOrganizationDecryptedExport(e,t){return i(this,void 0,void 0,(function*(){const n=[],i=[],a=[];if(a.push(this.apiService.getCollections(e).then((e=>{const t=[];return null!=e&&null!=e.data&&e.data.length>0&&e.data.forEach((e=>{const i=new p.Collection(new c.CollectionData(e));t.push(i.decrypt().then((e=>{n.push(e)})))})),Promise.all(t)}))),a.push(this.apiService.getCiphersOrganization(e).then((e=>{const t=[];return null!=e&&null!=e.data&&e.data.length>0&&e.data.filter((e=>null===e.deletedDate)).forEach((e=>{const n=new d.Cipher(new l.CipherData(e));t.push(n.decrypt().then((e=>{i.push(e)})))})),Promise.all(t)}))),yield Promise.all(a),"csv"===t){const e=new Map;n.forEach((t=>{e.set(t.id,t)}));const t=[];return i.forEach((n=>{if(n.type!==o.CipherType.Login&&n.type!==o.CipherType.SecureNote)return;const i={collections:[]};null!=n.collectionIds&&(i.collections=n.collectionIds.filter((t=>e.has(t))).map((t=>e.get(t).name))),this.buildCommonCipher(i,n),t.push(i)})),r.unparse(t)}{const e={encrypted:!1,collections:[],items:[]};return n.forEach((t=>{const n=new m.CollectionWithIdExport;n.build(t),e.collections.push(n)})),i.forEach((t=>{const n=new u.CipherWithIdExport;n.build(t),e.items.push(n)})),JSON.stringify(e,null," ")}}))}getOrganizationEncryptedExport(e){return i(this,void 0,void 0,(function*(){const t=[],n=[],i=[];i.push(this.apiService.getCollections(e).then((e=>(null!=e&&null!=e.data&&e.data.length>0&&e.data.forEach((e=>{const n=new p.Collection(new c.CollectionData(e));t.push(n)})),Promise.all([]))))),i.push(this.apiService.getCiphersOrganization(e).then((e=>(null!=e&&null!=e.data&&e.data.length>0&&e.data.filter((e=>null===e.deletedDate)).forEach((e=>{const t=new d.Cipher(new l.CipherData(e));n.push(t)})),Promise.all([]))))),yield Promise.all(i);const r=yield this.cryptoService.getOrgKey(e),o={encrypted:!0,encKeyValidation_DO_NOT_EDIT:(yield this.cryptoService.encrypt(s.Utils.newGuid(),r)).encryptedString,collections:[],items:[]};return t.forEach((e=>{const t=new m.CollectionWithIdExport;t.build(e),o.collections.push(t)})),n.forEach((e=>{const t=new u.CipherWithIdExport;t.build(e),o.items.push(t)})),JSON.stringify(o,null," ")}))}padNumber(e,t,n="0"){const i=e.toString();return i.length>=t?i:new Array(t-i.length+1).join(n)+i}buildCommonCipher(e,t){switch(e.type=null,e.name=t.name,e.notes=t.notes,e.fields=null,e.reprompt=t.reprompt,e.login_uri=null,e.login_username=null,e.login_password=null,e.login_totp=null,t.fields&&t.fields.forEach((t=>{e.fields?e.fields+="\n":e.fields="",e.fields+=(t.name||"")+": "+t.value})),t.type){case o.CipherType.Login:e.type="login",e.login_username=t.login.username,e.login_password=t.login.password,e.login_totp=t.login.totp,t.login.uris&&(e.login_uri=[],t.login.uris.forEach((t=>{e.login_uri.push(t.uri)})));break;case o.CipherType.SecureNote:e.type="note";break;default:return}return e}}},1803:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadService=void 0;const r=n(25423),o=n(71545),a=n(29911);t.FileUploadService=class{constructor(e,t){this.logService=e,this.apiService=t,this.azureFileUploadService=new o.AzureFileUploadService(e),this.bitwardenFileUploadService=new a.BitwardenFileUploadService(t)}uploadSendFile(e,t,n){return i(this,void 0,void 0,(function*(){try{switch(e.fileUploadType){case r.FileUploadType.Direct:yield this.bitwardenFileUploadService.upload(t.encryptedString,n,(t=>this.apiService.postSendFile(e.sendResponse.id,e.sendResponse.file.id,t)));break;case r.FileUploadType.Azure:{const t=()=>i(this,void 0,void 0,(function*(){return(yield this.apiService.renewSendFileUploadUrl(e.sendResponse.id,e.sendResponse.file.id)).url}));yield this.azureFileUploadService.upload(e.url,n,t);break}default:throw new Error("Unknown file upload type")}}catch(o){throw yield this.apiService.deleteSend(e.sendResponse.id),o}}))}uploadCipherAttachment(e,t,n,o){return i(this,void 0,void 0,(function*(){const a=e?t.cipherMiniResponse:t.cipherResponse;try{switch(t.fileUploadType){case r.FileUploadType.Direct:yield this.bitwardenFileUploadService.upload(n.encryptedString,o,(e=>this.apiService.postAttachmentFile(a.id,t.attachmentId,e)));break;case r.FileUploadType.Azure:{const e=()=>i(this,void 0,void 0,(function*(){return(yield this.apiService.renewAttachmentUploadUrl(a.id,t.attachmentId)).url}));yield this.azureFileUploadService.upload(t.url,o,e);break}default:throw new Error("Unknown file upload type.")}}catch(s){throw e?yield this.apiService.deleteCipherAttachmentAdmin(a.id,t.attachmentId):yield this.apiService.deleteCipherAttachment(a.id,t.attachmentId),s}}))}}},66369:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderService=void 0;const r=n(39814),o=n(82769),a=n(12835),s=n(59738),l=n(16466),c=n(36914);t.FolderService=class{constructor(e,t,n,i,r){this.cryptoService=e,this.apiService=t,this.i18nService=n,this.cipherService=i,this.stateService=r}clearCache(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null,{userId:e})}))}encrypt(e,t){return i(this,void 0,void 0,(function*(){const n=new s.Folder;return n.id=e.id,n.name=yield this.cryptoService.encrypt(e.name,t),n}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedFolders();return null!=t&&t.hasOwnProperty(e)?new s.Folder(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedFolders(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new s.Folder(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getDecryptedFolders();if(null!=e)return e;if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=[],n=[];(yield this.getAll()).forEach((e=>{n.push(e.decrypt().then((e=>t.push(e))))})),yield Promise.all(n),t.sort(o.Utils.getSortFunction(this.i18nService,"name"));const i=new c.FolderView;return i.name=this.i18nService.t("noneFolder"),t.push(i),yield this.stateService.setDecryptedFolders(t),t}))}getAllNested(e){return i(this,void 0,void 0,(function*(){e=null!=e?e:yield this.getAllDecrypted();const t=[];return e.forEach((e=>{const n=new c.FolderView;n.id=e.id,n.revisionDate=e.revisionDate;const i=null!=e.name?e.name.replace(/^\/+|\/+$/g,"").split("/"):[];r.ServiceUtils.nestedTraverse(t,0,i,n,null,"/")})),t}))}getNested(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAllNested();return r.ServiceUtils.getTreeNodeObject(t,e)}))}saveWithServer(e){return i(this,void 0,void 0,(function*(){const t=new l.FolderRequest(e);let n;null==e.id?(n=yield this.apiService.postFolder(t),e.id=n.id):n=yield this.apiService.putFolder(e.id,t);const i=new a.FolderData(n);yield this.upsert(i)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedFolders();if(null==t&&(t={}),e instanceof a.FolderData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null,{userId:e}),yield this.stateService.setEncryptedFolders(null,{userId:e})}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedFolders();if(null==t)return;if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(t);const n=yield this.stateService.getEncryptedCiphers();if(null!=n){const t=[];for(const i in n)n[i].folderId===e&&(n[i].folderId=null,t.push(n[i]));t.length>0&&this.cipherService.upsert(t)}}))}deleteWithServer(e){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteFolder(e),yield this.delete(e)}))}}},17578:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;t.I18nService=class{constructor(e,t,n){this.systemLanguage=e,this.localesDirectory=t,this.getLocalesJson=n,this.supportedTranslationLocales=["en"],this.localeNames=new Map([["af","Afrikaans"],["az","Azərbaycanca"],["be","Беларуская"],["bg","български"],["bn","বাংলা"],["bs","bosanski jezik"],["ca","català"],["cs","čeština"],["da","dansk"],["de","Deutsch"],["el","Ελληνικά"],["en","English"],["en-GB","English (British)"],["en-IN","English (India)"],["eo","Esperanto"],["es","español"],["et","eesti"],["fa","فارسی"],["fi","suomi"],["fil","Wikang Filipino"],["fr","français"],["he","עברית"],["hi","हिन्दी"],["hr","hrvatski"],["hu","magyar"],["id","Bahasa Indonesia"],["it","italiano"],["ja","日本語"],["ka","ქართული"],["km","ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ"],["kn","ಕನ್ನಡ"],["ko","한국어"],["lt","lietuvių kalba"],["lv","Latvietis"],["me","црногорски"],["ml","മലയാളം"],["nb","norsk (bokmål)"],["nl","Nederlands"],["nn","Norsk Nynorsk"],["pl","polski"],["pt-BR","português do Brasil"],["pt-PT","português"],["ro","română"],["ru","русский"],["si","සිංහල"],["sk","slovenčina"],["sl","Slovenski jezik, Slovenščina"],["sr","Српски"],["sv","svenska"],["th","ไทย"],["tr","Türkçe"],["uk","українська"],["vi","Tiếng Việt"],["zh-CN","中文(中国大陆)"],["zh-TW","中文(台灣)"]]),this.defaultMessages={},this.localeMessages={},this.systemLanguage=e.replace("_","-")}init(e){return n(this,void 0,void 0,(function*(){if(this.inited)throw new Error("i18n already initialized.");if(null==this.supportedTranslationLocales||0===this.supportedTranslationLocales.length)throw new Error("supportedTranslationLocales not set.");this.inited=!0,this.locale=this.translationLocale=null!=e?e:this.systemLanguage;try{this.collator=new Intl.Collator(this.locale,{numeric:!0,sensitivity:"base"})}catch(t){this.collator=null}-1===this.supportedTranslationLocales.indexOf(this.translationLocale)&&(this.translationLocale=this.translationLocale.slice(0,2),-1===this.supportedTranslationLocales.indexOf(this.translationLocale)&&(this.translationLocale=this.supportedTranslationLocales[0])),null!=this.localesDirectory&&(yield this.loadMessages(this.translationLocale,this.localeMessages),this.translationLocale!==this.supportedTranslationLocales[0]&&(yield this.loadMessages(this.supportedTranslationLocales[0],this.defaultMessages)))}))}t(e,t,n,i){return this.translate(e,t,n,i)}translate(e,t,n,i){let r;return r=this.localeMessages.hasOwnProperty(e)&&this.localeMessages[e]?this.localeMessages[e]:this.defaultMessages.hasOwnProperty(e)&&this.defaultMessages[e]?this.defaultMessages[e]:"",""!==r&&(null!=t&&(r=r.split("__$1__").join(t)),null!=n&&(r=r.split("__$2__").join(n)),null!=i&&(r=r.split("__$3__").join(i))),r}loadMessages(e,t){return n(this,void 0,void 0,(function*(){const n=e.replace("-","_"),i=yield this.getLocalesJson(n);for(const e in i)if(i.hasOwnProperty(e)&&(t[e]=i[e].message,i[e].placeholders))for(const n in i[e].placeholders){if(!i[e].placeholders.hasOwnProperty(n)||!i[e].placeholders[n].content)continue;const r="\\$"+n.toUpperCase()+"\\$";let o=i[e].placeholders[n].content;"$1"!==o&&"$2"!==o&&"$3"!==o||(o="__$"+o+"__"),t[e]=t[e].replace(new RegExp(r,"g"),o)}}))}}},12514:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportService=void 0;const r=n(32773),o=n(55766),a=n(51214),s=n(60006),l=n(14494),c=n(51272),d=n(25690),p=n(10614),u=n(20312),m=n(19326),h=n(68360),v=n(33268),g=n(58141),f=n(86025),y=n(42752),x=n(99552),S=n(31188),b=n(42578),w=n(41933),C=n(84783),I=n(62709),E=n(47340),P=n(72378),O=n(89696),k=n(16164),A=n(86419),T=n(68781),M=n(64521),B=n(57763),D=n(78103),R=n(52580),F=n(39510),U=n(64101),V=n(82530),N=n(80414),_=n(42584),j=n(55529),z=n(88755),H=n(60784),L=n(477),K=n(91350),q=n(79506),G=n(29990),W=n(84972),$=n(65588),Y=n(45970),Q=n(54706),J=n(43897),Z=n(91645),X=n(72739),ee=n(29406),te=n(64817),ne=n(70402),ie=n(89757),re=n(1254),oe=n(74962),ae=n(86220),se=n(6884),le=n(8170),ce=n(82769),de=n(16391),pe=n(54554),ue=n(16466),me=n(89537),he=n(85644),ve=n(58795),ge=n(33018);t.ImportService=class{constructor(e,t,n,i,r,a,s){this.cipherService=e,this.folderService=t,this.apiService=n,this.i18nService=i,this.collectionService=r,this.platformUtilsService=a,this.cryptoService=s,this.featuredImportOptions=o.featuredImportOptions,this.regularImportOptions=o.regularImportOptions}getImportOptions(){return this.featuredImportOptions.concat(this.regularImportOptions)}import(e,t,n=null){return i(this,void 0,void 0,(function*(){const i=yield e.parse(t);if(i.success){if(0===i.folders.length&&0===i.ciphers.length)return new O.ImportError(this.i18nService.t("importNothingError"));if(i.ciphers.length>0){const e=Math.floor(i.ciphers.length/2),t=i.ciphers.length-1;if(this.badData(i.ciphers[0])&&this.badData(i.ciphers[e])&&this.badData(i.ciphers[t]))return new O.ImportError(this.i18nService.t("importFormatError"))}try{yield this.postImport(i,n)}catch(r){const e=new ge.ErrorResponse(r,400);return this.handleServerError(e,i)}return null}return ce.Utils.isNullOrWhitespace(i.errorMessage)?new O.ImportError(this.i18nService.t("importFormatError"),i.missingPassword):new O.ImportError(i.errorMessage,i.missingPassword)}))}getImporter(e,t=null,n=null){const i=this.getImporterInstance(e,n);return null==i?null:(i.organizationId=t,i)}getImporterInstance(e,t){if(null==e)return null;switch(e){case"bitwardencsv":return new d.BitwardenCsvImporter;case"bitwardenjson":return new p.BitwardenJsonImporter(this.cryptoService,this.i18nService);case"bitwardenpasswordprotected":return new u.BitwardenPasswordProtectedImporter(this.cryptoService,this.i18nService,t);case"lastpasscsv":case"passboltcsv":return new B.LastPassCsvImporter;case"keepassxcsv":return new T.KeePassXCsvImporter;case"aviracsv":return new c.AviraCsvImporter;case"blurcsv":return new h.BlurCsvImporter;case"safeincloudxml":return new ee.SafeInCloudXmlImporter;case"padlockcsv":return new H.PadlockCsvImporter;case"keepass2xml":return new A.KeePass2XmlImporter;case"chromecsv":case"operacsv":case"vivaldicsv":return new g.ChromeCsvImporter;case"firefoxcsv":return new I.FirefoxCsvImporter;case"upmcsv":return new ae.UpmCsvImporter;case"saferpasscsv":return new te.SaferPassCsvImporter;case"safaricsv":return new X.SafariCsvImporter;case"meldiumcsv":return new R.MeldiumCsvImporter;case"1password1pif":return new N.OnePassword1PifImporter;case"1password1pux":return new _.OnePassword1PuxImporter;case"1passwordwincsv":return new z.OnePasswordWinCsvImporter;case"1passwordmaccsv":return new j.OnePasswordMacCsvImporter;case"keepercsv":return new M.KeeperCsvImporter;case"passworddragonxml":return new $.PasswordDragonXmlImporter;case"enpasscsv":return new w.EnpassCsvImporter;case"enpassjson":return new C.EnpassJsonImporter;case"pwsafexml":return new Y.PasswordSafeXmlImporter;case"dashlanecsv":return new x.DashlaneCsvImporter;case"dashlanejson":return new S.DashlaneJsonImporter;case"msecurecsv":return new F.MSecureCsvImporter;case"stickypasswordxml":return new re.StickyPasswordXmlImporter;case"truekeycsv":return new oe.TrueKeyCsvImporter;case"clipperzhtml":return new f.ClipperzHtmlImporter;case"roboformcsv":return new Z.RoboFormCsvImporter;case"ascendocsv":return new a.AscendoCsvImporter;case"passwordbossjson":return new W.PasswordBossJsonImporter;case"zohovaultcsv":return new le.ZohoVaultCsvImporter;case"splashidcsv":return new ie.SplashIdCsvImporter;case"passkeepcsv":return new L.PassKeepCsvImporter;case"gnomejson":return new P.GnomeJsonImporter;case"passwordagentcsv":return new G.PasswordAgentCsvImporter;case"passpackcsv":return new q.PasspackCsvImporter;case"passmanjson":return new K.PassmanJsonImporter;case"avastcsv":return new s.AvastCsvImporter;case"avastjson":return new l.AvastJsonImporter;case"fsecurefsk":return new E.FSecureFskImporter;case"kasperskytxt":return new k.KasperskyTxtImporter;case"remembearcsv":return new J.RememBearCsvImporter;case"passwordwallettxt":return new Q.PasswordWalletTxtImporter;case"mykicsv":return new U.MykiCsvImporter;case"securesafecsv":return new ne.SecureSafeCsvImporter;case"logmeoncecsv":return new D.LogMeOnceCsvImporter;case"blackberrycsv":return new m.BlackBerryCsvImporter;case"buttercupcsv":return new v.ButtercupCsvImporter;case"codebookcsv":return new y.CodebookCsvImporter;case"encryptrcsv":return new b.EncryptrCsvImporter;case"yoticsv":return new se.YotiCsvImporter;case"nordpasscsv":return new V.NordPassCsvImporter;default:return null}}postImport(e,t=null){return i(this,void 0,void 0,(function*(){if(null==t){const t=new me.ImportCiphersRequest;for(let n=0;nt.folderRelationships.push(new ve.KvpRequest(e[0],e[1])))),yield this.apiService.postImportCiphers(t)}{const n=new he.ImportOrganizationCiphersRequest;for(let i=0;in.collectionRelationships.push(new ve.KvpRequest(e[0],e[1])))),yield this.apiService.postImportOrganizationCiphers(t,n)}}))}badData(e){return(null==e.name||"--"===e.name)&&e.type===r.CipherType.Login&&null!=e.login&&ce.Utils.isNullOrWhitespace(e.login.password)}handleServerError(e,t){if(null==e.validationErrors)return new O.ImportError(e.message);let n="";return Object.entries(e.validationErrors).forEach((([e,i],o)=>{let a,s;const l=Number(e.match(/[0-9]+/)[0]);switch(e.match(/^\w+/)[0]){case"Ciphers":a=t.ciphers[l],s=r.CipherType[a.type];break;case"Folders":a=t.folders[l],s="Folder";break;case"Collections":a=t.collections[l],s="Collection";break;default:return}o>0&&(n+="\n\n"),"Folder"!==s&&"Collection"!==s&&(n+="["+(l+1)+"] "),n+="["+s+'] "'+a.name+'": '+i})),new O.ImportError(n)}}},32840:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorService=void 0;const r=n(33712),o=n(82769),a=n(69731),s=n(50738),l=n(35711),c=n(74284);t.KeyConnectorService=class{constructor(e,t,n,i,r,o,a,s){this.stateService=e,this.cryptoService=t,this.apiService=n,this.tokenService=i,this.logService=r,this.organizationService=o,this.cryptoFunctionService=a,this.logoutCallback=s}setUsesKeyConnector(e){return this.stateService.setUsesKeyConnector(e)}getUsesKeyConnector(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getUsesKeyConnector()}))}userNeedsMigration(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getIsExternal(),t=null!=(yield this.getManagingOrganization()),n=!(yield this.getUsesKeyConnector());return e&&t&&n}))}migrateUser(){return i(this,void 0,void 0,(function*(){const e=yield this.getManagingOrganization(),t=yield this.cryptoService.getKey(),n=new l.KeyConnectorUserKeyRequest(t.encKeyB64);try{yield this.apiService.postUserKeyToKeyConnector(e.keyConnectorUrl,n)}catch(i){this.handleKeyConnectorError(i)}yield this.apiService.postConvertToKeyConnector()}))}getAndSetKey(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.apiService.getUserKeyFromKeyConnector(e),n=o.Utils.fromB64ToArray(t.key),i=new a.SymmetricCryptoKey(n);yield this.cryptoService.setKey(i)}catch(t){this.handleKeyConnectorError(t)}}))}getManagingOrganization(){return i(this,void 0,void 0,(function*(){return(yield this.organizationService.getAll()).find((e=>e.keyConnectorEnabled&&e.type!==r.OrganizationUserType.Admin&&e.type!==r.OrganizationUserType.Owner&&!e.isProviderUser))}))}convertNewSsoUserToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const{kdf:n,kdfIterations:i,keyConnectorUrl:r}=e,a=yield this.cryptoFunctionService.randomBytes(64),d=yield this.cryptoService.makeKey(o.Utils.fromBufferToB64(a),yield this.tokenService.getEmail(),n,i),p=new l.KeyConnectorUserKeyRequest(d.encKeyB64);yield this.cryptoService.setKey(d);const u=yield this.cryptoService.makeEncKey(d);yield this.cryptoService.setEncKey(u[1].encryptedString);const[m,h]=yield this.cryptoService.makeKeyPair();try{yield this.apiService.postUserKeyToKeyConnector(r,p)}catch(f){this.handleKeyConnectorError(f)}const v=new c.KeysRequest(m,h.encryptedString),g=new s.SetKeyConnectorKeyRequest(u[1].encryptedString,n,i,t,v);yield this.apiService.postSetKeyConnectorKey(g)}))}setConvertAccountRequired(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setConvertAccountToKeyConnector(e)}))}getConvertAccountRequired(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getConvertAccountToKeyConnector()}))}removeConvertAccountRequired(){return i(this,void 0,void 0,(function*(){yield this.stateService.setConvertAccountToKeyConnector(null)}))}clear(){return i(this,void 0,void 0,(function*(){yield this.removeConvertAccountRequired()}))}handleKeyConnectorError(e){throw this.logService.error(e),null!=this.logoutCallback&&this.logoutCallback(!1),new Error("Key Connector error")}}},63231:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationsService=void 0;const r=n(27749),o=n(31683),a=n(72440),s=n(7837),l=n(16178);t.NotificationsService=class{constructor(e,t,n,i,r,o,a,s){this.syncService=e,this.appIdService=t,this.apiService=n,this.environmentService=i,this.logoutCallback=r,this.logService=o,this.stateService=a,this.authService=s,this.connected=!1,this.inited=!1,this.inactive=!1,this.reconnectTimer=null,this.environmentService.urls.subscribe((()=>{this.inited&&this.init()}))}init(){return i(this,void 0,void 0,(function*(){this.inited=!1,this.url=this.environmentService.getNotificationsUrl(),"https://-"!==this.url&&(null!=this.signalrConnection&&(this.signalrConnection.off("ReceiveMessage"),this.signalrConnection.off("Heartbeat"),yield this.signalrConnection.stop(),this.connected=!1,this.signalrConnection=null),this.signalrConnection=(new r.HubConnectionBuilder).withUrl(this.url+"/hub",{accessTokenFactory:()=>this.apiService.getActiveBearerToken(),skipNegotiation:!0,transport:r.HttpTransportType.WebSockets}).withHubProtocol(new o.MessagePackHubProtocol).build(),this.signalrConnection.on("ReceiveMessage",(e=>this.processNotification(new l.NotificationResponse(e)))),this.signalrConnection.on("Heartbeat",(e=>{})),this.signalrConnection.onclose((()=>{this.connected=!1,this.reconnect(!0)})),this.inited=!0,(yield this.isAuthedAndUnlocked())&&(yield this.reconnect(!1)))}))}updateConnection(e=!1){return i(this,void 0,void 0,(function*(){if(this.inited)try{(yield this.isAuthedAndUnlocked())?yield this.reconnect(e):yield this.signalrConnection.stop()}catch(t){this.logService.error(t.toString())}}))}reconnectFromActivity(){return i(this,void 0,void 0,(function*(){this.inactive=!1,this.inited&&!this.connected&&(yield this.reconnect(!0))}))}disconnectFromInactivity(){return i(this,void 0,void 0,(function*(){this.inactive=!0,this.inited&&this.connected&&(yield this.signalrConnection.stop())}))}processNotification(e){return i(this,void 0,void 0,(function*(){const t=yield this.appIdService.getAppId();if(null==e||e.contextId===t)return;const n=yield this.stateService.getIsAuthenticated(),i=e.payload.userId||e.payload.UserId,r=yield this.stateService.getUserId();if(!n||null==i||i===r)switch(e.type){case s.NotificationType.SyncCipherCreate:case s.NotificationType.SyncCipherUpdate:yield this.syncService.syncUpsertCipher(e.payload,e.type===s.NotificationType.SyncCipherUpdate);break;case s.NotificationType.SyncCipherDelete:case s.NotificationType.SyncLoginDelete:yield this.syncService.syncDeleteCipher(e.payload);break;case s.NotificationType.SyncFolderCreate:case s.NotificationType.SyncFolderUpdate:yield this.syncService.syncUpsertFolder(e.payload,e.type===s.NotificationType.SyncFolderUpdate);break;case s.NotificationType.SyncFolderDelete:yield this.syncService.syncDeleteFolder(e.payload);break;case s.NotificationType.SyncVault:case s.NotificationType.SyncCiphers:case s.NotificationType.SyncSettings:n&&(yield this.syncService.fullSync(!1));break;case s.NotificationType.SyncOrgKeys:n&&(yield this.syncService.fullSync(!0),yield this.signalrConnection.stop());break;case s.NotificationType.LogOut:n&&this.logoutCallback(!0);break;case s.NotificationType.SyncSendCreate:case s.NotificationType.SyncSendUpdate:yield this.syncService.syncUpsertSend(e.payload,e.type===s.NotificationType.SyncSendUpdate);break;case s.NotificationType.SyncSendDelete:yield this.syncService.syncDeleteSend(e.payload)}}))}reconnect(e){return i(this,void 0,void 0,(function*(){if(null!=this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.connected||!this.inited||this.inactive)return;if(yield this.isAuthedAndUnlocked()){try{yield this.signalrConnection.start(),this.connected=!0,e&&(yield this.syncService.fullSync(!1))}catch(t){this.logService.error(t)}this.connected||(this.reconnectTimer=setTimeout((()=>this.reconnect(e)),this.random(12e4,3e5)))}}))}isAuthedAndUnlocked(){return i(this,void 0,void 0,(function*(){return(yield this.authService.getAuthStatus())>=a.AuthenticationStatus.Unlocked}))}random(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}}},59135:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationService=void 0;const r=n(27957);t.OrganizationService=class{constructor(e){this.stateService=e}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getOrganizations();return null!=t&&t.hasOwnProperty(e)?new r.Organization(t[e]):null}))}getByIdentifier(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAll();return null==t||0===t.length?null:t.find((t=>t.identifier===e))}))}getAll(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getOrganizations({userId:e}),n=[];for(const e in t)t.hasOwnProperty(e)&&!t[e].isProviderUser&&n.push(new r.Organization(t[e]));return n}))}save(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setOrganizations(e)}))}canManageSponsorships(){return i(this,void 0,void 0,(function*(){return(yield this.getAll()).some((e=>e.familySponsorshipAvailable||null!==e.familySponsorshipFriendlyName))}))}hasOrganizations(e){return i(this,void 0,void 0,(function*(){return(yield this.getAll(e)).length>0}))}}},50142:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGenerationService=void 0;const r=n(21322),o=n(49906),a=n(40596),s=n(22205),l=n(77665),c=n(49471),d={length:14,ambiguous:!1,number:!0,minNumber:1,uppercase:!0,minUppercase:0,lowercase:!0,minLowercase:0,special:!1,minSpecial:1,type:"password",numWords:3,wordSeparator:"-",capitalize:!1,includeNumber:!1};t.PasswordGenerationService=class{constructor(e,t,n){this.cryptoService=e,this.policyService=t,this.stateService=n}generatePassword(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},d,e);if("passphrase"===t.type)return this.generatePassphrase(e);this.sanitizePasswordLength(t,!0);const n=t.minUppercase+t.minLowercase+t.minNumber+t.minSpecial;t.length0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e1)&&(t.wordSeparator=" "),null==t.capitalize&&(t.capitalize=!1),null==t.includeNumber&&(t.includeNumber=!1);const n=a.EEFLongWordList.length-1,i=new Array(t.numWords);for(let e=0;ee.length&&(e.minSpecial=e.length-e.minNumber),e.numWords{e.enabled&&null!=e.data&&(null==t&&(t=new c.PasswordGeneratorPolicyOptions),null!=e.data.defaultType&&"password"!==t.defaultType&&(t.defaultType=e.data.defaultType),null!=e.data.minLength&&e.data.minLength>t.minLength&&(t.minLength=e.data.minLength),e.data.useUpper&&(t.useUppercase=!0),e.data.useLower&&(t.useLowercase=!0),e.data.useNumbers&&(t.useNumbers=!0),null!=e.data.minNumbers&&e.data.minNumbers>t.numberCount&&(t.numberCount=e.data.minNumbers),e.data.useSpecial&&(t.useSpecial=!0),null!=e.data.minSpecial&&e.data.minSpecial>t.specialCount&&(t.specialCount=e.data.minSpecial),null!=e.data.minNumberWords&&e.data.minNumberWords>t.minNumberWords&&(t.minNumberWords=e.data.minNumberWords),e.data.capitalize&&(t.capitalize=!0),e.data.includeNumber&&(t.includeNumber=!0))})),t}))}saveOptions(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setPasswordGenerationOptions(e)}))}getHistory(){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasKey()))return new Array;if(null==(yield this.stateService.getDecryptedPasswordGenerationHistory())){const e=yield this.stateService.getEncryptedPasswordGenerationHistory(),t=yield this.decryptHistory(e);yield this.stateService.setDecryptedPasswordGenerationHistory(t)}const e=yield this.stateService.getDecryptedPasswordGenerationHistory();return null!=e?e:new Array}))}addHistory(e){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasKey()))return;const t=yield this.getHistory();if(this.matchesPrevious(e,t))return;t.unshift(new l.GeneratedPasswordHistory(e,Date.now())),t.length>100&&t.pop();const n=yield this.encryptHistory(t);return yield this.stateService.setEncryptedPasswordGenerationHistory(n)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEncryptedPasswordGenerationHistory(null,{userId:e}),yield this.stateService.setDecryptedPasswordGenerationHistory(null,{userId:e})}))}passwordStrength(e,t=null){if(null==e||0===e.length)return null;let n=["bitwarden","bit","warden"];null!=t&&t.length>0&&(n=n.concat(t));const i=Array.from(new Set(n));return r(e,i)}normalizeOptions(e,t){e.minLowercase=0,e.minUppercase=0,!e.length||e.length<5?e.length=5:e.length>128&&(e.length=128),e.lengthe.length?e.minNumber=e.length:e.minNumber>9&&(e.minNumber=9):e.minNumber=0,e.minNumbere.length?e.minSpecial=e.length:e.minSpecial>9&&(e.minSpecial=9):e.minSpecial=0,e.minSpeciale.length&&(e.minSpecial=e.length-e.minNumber),null==e.numWords||e.length<3?e.numWords=3:e.numWords>20&&(e.numWords=20),e.numWords1&&(e.wordSeparator=e.wordSeparator[0]),this.sanitizePasswordLength(e,!1)}capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}appendRandomNumberToRandomWord(e){return i(this,void 0,void 0,(function*(){if(null==e||e.length<=0)return;const t=yield this.cryptoService.randomNumber(0,e.length-1),n=yield this.cryptoService.randomNumber(0,9);e[t]=e[t]+n}))}encryptHistory(e){return i(this,void 0,void 0,(function*(){if(null==e||0===e.length)return Promise.resolve([]);const t=e.map((e=>i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.encrypt(e.password);return new l.GeneratedPasswordHistory(t.encryptedString,e.date)}))));return yield Promise.all(t)}))}decryptHistory(e){return i(this,void 0,void 0,(function*(){if(null==e||0===e.length)return Promise.resolve([]);const t=e.map((e=>i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.decryptToUtf8(new s.EncString(e.password));return new l.GeneratedPasswordHistory(t,e.date)}))));return yield Promise.all(t)}))}matchesPrevious(e,t){return null!=t&&0!==t.length&&t[t.length-1].password===e}shuffleArray(e){return i(this,void 0,void 0,(function*(){for(let t=e.length-1;t>0;t--){const n=yield this.cryptoService.randomNumber(0,t);[e[t],e[n]]=[e[n],e[t]]}}))}sanitizePasswordLength(e,t){let n=0,i=0,r=e.minNumber,o=e.minSpecial;e.uppercase&&e.minUppercase<=0?n=1:e.uppercase||(n=0),e.lowercase&&e.minLowercase<=0?i=1:e.lowercase||(i=0),e.number&&e.minNumber<=0?r=1:e.number||(r=0),e.special&&e.minSpecial<=0?o=1:e.special||(o=0),(!e.length||e.length<1)&&(e.length=10);const a=n+i+r+o;e.lengtht.type===e)):n}))}getPolicyForOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.organizationService.get(t);if(null==n?void 0:n.isProviderUser){const e=(yield this.apiService.getPolicies(t)).data.find((e=>e.organizationId===t));return null==e?null:new c.Policy(new s.PolicyData(e))}return(yield this.getAll(e)).find((e=>e.organizationId===t))}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedPolicies(null),yield this.stateService.setEncryptedPolicies(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedPolicies(null,{userId:e}),yield this.stateService.setEncryptedPolicies(null,{userId:e})}))}getMasterPasswordPoliciesForInvitedUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getUserId(),n=yield this.apiService.getPoliciesByInvitedUser(e,t),i=yield this.mapPoliciesFromToken(n);return this.getMasterPasswordPolicyOptions(i)}))}getMasterPasswordPolicyOptions(e){return i(this,void 0,void 0,(function*(){let t=null;return null==(e=null==e?yield this.getAll(a.PolicyType.MasterPassword):e.filter((e=>e.type===a.PolicyType.MasterPassword)))||0===e.length||e.forEach((e=>{e.enabled&&null!=e.data&&(null==t&&(t=new l.MasterPasswordPolicyOptions),null!=e.data.minComplexity&&e.data.minComplexity>t.minComplexity&&(t.minComplexity=e.data.minComplexity),null!=e.data.minLength&&e.data.minLength>t.minLength&&(t.minLength=e.data.minLength),e.data.requireUpper&&(t.requireUpper=!0),e.data.requireLower&&(t.requireLower=!0),e.data.requireNumbers&&(t.requireNumbers=!0),e.data.requireSpecial&&(t.requireSpecial=!0))})),t}))}evaluateMasterPassword(e,t,n){return null==n||!(n.minComplexity>0&&n.minComplexity>e)&&(!(n.minLength>0&&n.minLength>t.length)&&((!n.requireUpper||t.toLocaleLowerCase()!==t)&&((!n.requireLower||t.toLocaleUpperCase()!==t)&&(!(n.requireNumbers&&!/[0-9]/.test(t))&&!(n.requireSpecial&&!/[!@#$%\^&*]/g.test(t))))))}getResetPasswordPolicyOptions(e,t){var n,i,r;const o=new d.ResetPasswordPolicyOptions;if(null==e||null==t)return[o,!1];const s=e.find((e=>e.organizationId===t&&e.type===a.PolicyType.ResetPassword&&e.enabled));return o.autoEnrollEnabled=null!==(i=null===(n=null==s?void 0:s.data)||void 0===n?void 0:n.autoEnrollEnabled)&&void 0!==i&&i,[o,null!==(r=null==s?void 0:s.enabled)&&void 0!==r&&r]}mapPoliciesFromToken(e){if(null==e||null==e.data)return null;return e.data.map((e=>new s.PolicyData(e))).map((e=>new c.Policy(e)))}policyAppliesToUser(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.getAll(e,n),o=yield this.organizationService.getAll(n);let a;a=null!=t?i.filter((e=>e.enabled&&t(e))):i.filter((e=>e.enabled));const s=new Set(a.map((e=>e.organizationId)));return o.some((t=>t.enabled&&t.status>=r.OrganizationUserStatusType.Accepted&&t.usePolicies&&!this.isExcemptFromPolicies(t,e)&&s.has(t.id)))}))}isExcemptFromPolicies(e,t){return t===a.PolicyType.MaximumVaultTimeout?e.type===o.OrganizationUserType.Owner:e.isExemptFromPolicies}}},59695:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderService=void 0;const r=n(61453);t.ProviderService=class{constructor(e){this.stateService=e}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getProviders();return null!=t&&t.hasOwnProperty(e)?new r.Provider(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getProviders(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new r.Provider(e[n]));return t}))}save(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setProviders(e)}))}}},32471:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SearchService=void 0;const r=n(31336),o=n(32773),a=n(67577),s=n(71703);t.SearchService=class{constructor(e,t,n){this.cipherService=e,this.logService=t,this.i18nService=n,this.indexedEntityId=null,this.indexing=!1,this.index=null,this.searchableMinLength=2,-1!==["zh-CN","zh-TW"].indexOf(n.locale)&&(this.searchableMinLength=1)}clearIndex(){this.indexedEntityId=null,this.index=null}isSearchable(e){return!(null==e||null==this.index&&e.length"))}indexCiphers(e,t){return i(this,void 0,void 0,(function*(){if(this.indexing)return;this.logService.time("search indexing"),this.indexing=!0,this.indexedEntityId=e,this.index=null;const n=new r.Builder;n.ref("id"),n.field("shortid",{boost:100,extractor:e=>e.id.substr(0,8)}),n.field("name",{boost:10}),n.field("subtitle",{boost:5,extractor:e=>null!=e.subTitle&&e.type===o.CipherType.Card?e.subTitle.replace(/\*/g,""):e.subTitle}),n.field("notes"),n.field("login.username",{extractor:e=>e.type===o.CipherType.Login&&null!=e.login?e.login.username:null}),n.field("login.uris",{boost:2,extractor:e=>this.uriExtractor(e)}),n.field("fields",{extractor:e=>this.fieldExtractor(e,!1)}),n.field("fields_joined",{extractor:e=>this.fieldExtractor(e,!0)}),n.field("attachments",{extractor:e=>this.attachmentExtractor(e,!1)}),n.field("attachments_joined",{extractor:e=>this.attachmentExtractor(e,!0)}),n.field("organizationid",{extractor:e=>e.organizationId}),(t=t||(yield this.cipherService.getAllDecrypted())).forEach((e=>n.add(e))),this.index=n.build(),this.indexing=!1,this.logService.timeEnd("search indexing")}))}searchCiphers(e,t=null,n=null){return i(this,void 0,void 0,(function*(){const i=[];if(null!=e&&(e=e.trim().toLowerCase()),""===e&&(e=null),null==n&&(n=yield this.cipherService.getAllDecrypted()),null!=t&&Array.isArray(t)&&t.length>0?n=n.filter((e=>t.every((t=>null==t||t(e))))):null!=t&&(n=n.filter(t)),!this.isSearchable(e))return n;this.indexing&&(yield new Promise((e=>setTimeout(e,250))),this.indexing&&(yield new Promise((e=>setTimeout(e,500)))));const o=this.getIndexForSearch();if(null==o)return this.searchCiphersBasic(n,e);const a=new Map;n.forEach((e=>a.set(e.id,e)));let s=null;if(null!=e&&e.length>1&&0===e.indexOf(">"))try{s=o.search(e.substr(1).trim())}catch(l){this.logService.error(l)}else{const t=r.Query.wildcard.LEADING|r.Query.wildcard.TRAILING;s=o.query((n=>{r.tokenizer(e).forEach((e=>{const i=e.toString();n.term(i,{fields:["name"],wildcard:t}),n.term(i,{fields:["subtitle"],wildcard:t}),n.term(i,{fields:["login.uris"],wildcard:t}),n.term(i,{})}))}))}return null!=s&&s.forEach((e=>{a.has(e.ref)&&i.push(a.get(e.ref))})),i}))}searchCiphersBasic(e,t,n=!1){return t=t.trim().toLowerCase(),e.filter((e=>n===e.isDeleted&&(null!=e.name&&e.name.toLowerCase().indexOf(t)>-1||(!!(t.length>=8&&e.id.startsWith(t))||(null!=e.subTitle&&e.subTitle.toLowerCase().indexOf(t)>-1||!!(e.login&&null!=e.login.uri&&e.login.uri.toLowerCase().indexOf(t)>-1))))))}searchSends(e,t){return t=t.trim().toLocaleLowerCase(),e.filter((e=>{var n,i,r;return null!=e.name&&e.name.toLowerCase().indexOf(t)>-1||(!!(t.length>=8&&(e.id.startsWith(t)||e.accessId.toLocaleLowerCase().startsWith(t)||null!=(null===(n=e.file)||void 0===n?void 0:n.id)&&e.file.id.startsWith(t)))||(null!=e.notes&&e.notes.toLowerCase().indexOf(t)>-1||(null!=(null===(i=e.text)||void 0===i?void 0:i.text)&&e.text.text.toLowerCase().indexOf(t)>-1||(null!=(null===(r=e.file)||void 0===r?void 0:r.fileName)&&e.file.fileName.toLowerCase().indexOf(t)>-1||void 0))))}))}getIndexForSearch(){return this.index}fieldExtractor(e,t){if(!e.hasFields)return null;let n=[];return e.fields.forEach((e=>{null!=e.name&&n.push(e.name),e.type===a.FieldType.Text&&null!=e.value&&n.push(e.value)})),n=n.filter((e=>""!==e.trim())),0===n.length?null:t?n.join(" "):n}attachmentExtractor(e,t){if(!e.hasAttachments)return null;let n=[];return e.attachments.forEach((e=>{null!=e&&null!=e.fileName&&(t&&e.fileName.indexOf(".")>-1?n.push(e.fileName.substr(0,e.fileName.lastIndexOf("."))):n.push(e.fileName))})),n=n.filter((e=>""!==e.trim())),0===n.length?null:t?n.join(" "):n}uriExtractor(e){if(e.type!==o.CipherType.Login||null==e.login||!e.login.hasUris)return null;const t=[];return e.login.uris.forEach((e=>{if(null==e.uri||""===e.uri)return;if(null!=e.hostname)return void t.push(e.hostname);let n=e.uri;if(e.match!==s.UriMatchType.RegularExpression){const e=n.indexOf("://");e>-1&&(n=n.substr(e+3));const t=n.search(/\?|&|#/);t>-1&&(n=n.substring(0,t))}t.push(n)})),t.length>0?t:null}}},23566:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendService=void 0;const r=n(20971),o=n(70149),a=n(82769),s=n(10425),l=n(38265),c=n(32924),d=n(22785),p=n(34386),u=n(33018);t.SendService=class{constructor(e,t,n,i,r,o){this.cryptoService=e,this.apiService=t,this.fileUploadService=n,this.i18nService=i,this.cryptoFunctionService=r,this.stateService=o}clearCache(){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null)}))}encrypt(e,t,n,s){return i(this,void 0,void 0,(function*(){let i=null;const p=new l.Send;if(p.id=e.id,p.type=e.type,p.disabled=e.disabled,p.hideEmail=e.hideEmail,p.maxAccessCount=e.maxAccessCount,null==e.key&&(e.key=yield this.cryptoFunctionService.randomBytes(16),e.cryptoKey=yield this.cryptoService.makeSendKey(e.key)),null!=n){const t=yield this.cryptoFunctionService.pbkdf2(n,e.key,"sha256",r.SEND_KDF_ITERATIONS);p.password=a.Utils.fromBufferToB64(t)}if(p.key=yield this.cryptoService.encrypt(e.key,s),p.name=yield this.cryptoService.encrypt(e.name,e.cryptoKey),p.notes=yield this.cryptoService.encrypt(e.notes,e.cryptoKey),p.type===o.SendType.Text)p.text=new d.SendText,p.text.text=yield this.cryptoService.encrypt(e.text.text,e.cryptoKey),p.text.hidden=e.text.hidden;else if(p.type===o.SendType.File&&(p.file=new c.SendFile,null!=t))if(t instanceof ArrayBuffer){const[n,r]=yield this.encryptFileData(e.file.fileName,t,e.cryptoKey);p.file.fileName=n,i=r}else i=yield this.parseFile(p,t,e.cryptoKey);return[p,i]}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedSends();return null!=t&&t.hasOwnProperty(e)?new l.Send(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedSends(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new l.Send(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getDecryptedSends();if(null!=e)return e;e=[];if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=[];return(yield this.getAll()).forEach((n=>{t.push(n.decrypt().then((t=>e.push(t))))})),yield Promise.all(t),e.sort(a.Utils.getSortFunction(this.i18nService,"name")),yield this.stateService.setDecryptedSends(e),e}))}saveWithServer(e){var t;return i(this,void 0,void 0,(function*(){const n=new p.SendRequest(e[0],null===(t=e[1])||void 0===t?void 0:t.buffer.byteLength);let i;if(null==e[0].id){if(e[0].type===o.SendType.Text)i=yield this.apiService.postSend(n);else try{const t=yield this.apiService.postFileTypeSend(n);i=t.sendResponse,yield this.fileUploadService.uploadSendFile(t,e[0].file.fileName,e[1])}catch(a){if(!(a instanceof u.ErrorResponse&&404===a.statusCode))throw a instanceof u.ErrorResponse?new Error(a.getSingleMessage()):a;i=yield this.legacyServerSendFileUpload(e,n)}e[0].id=i.id,e[0].accessId=i.accessId}else i=yield this.apiService.putSend(e[0].id,n);const r=new s.SendData(i);yield this.upsert(r)}))}legacyServerSendFileUpload(e,t){return i(this,void 0,void 0,(function*(){const n=new FormData;try{const i=new Blob([e[1].buffer],{type:"application/octet-stream"});n.append("model",JSON.stringify(t)),n.append("data",i,e[0].file.fileName.encryptedString)}catch(i){if(!a.Utils.isNode||a.Utils.isBrowser)throw i;n.append("model",JSON.stringify(t)),n.append("data",Buffer.from(e[1].buffer),{filepath:e[0].file.fileName.encryptedString,contentType:"application/octet-stream"})}return yield this.apiService.postSendFileLegacy(n)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedSends();if(null==t&&(t={}),e instanceof s.SendData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null),yield this.stateService.setEncryptedSends(e)}))}clear(){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null),yield this.stateService.setEncryptedSends(null)}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedSends();if(null!=t){if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.replace(t)}}))}deleteWithServer(e){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteSend(e),yield this.delete(e)}))}removePasswordWithServer(e){return i(this,void 0,void 0,(function*(){const t=yield this.apiService.putSendRemovePassword(e),n=new s.SendData(t);yield this.upsert(n)}))}parseFile(e,t,n){return new Promise(((r,o)=>{const a=new FileReader;a.readAsArrayBuffer(t),a.onload=a=>i(this,void 0,void 0,(function*(){try{const[i,o]=yield this.encryptFileData(t.name,a.target.result,n);e.file.fileName=i,r(o)}catch(i){o(i)}})),a.onerror=()=>{o("Error reading file.")}}))}encryptFileData(e,t,n){return i(this,void 0,void 0,(function*(){return[yield this.cryptoService.encrypt(e,n),yield this.cryptoService.encryptToBytes(t,n)]}))}}},94822:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsService=void 0;const i="equivalentDomains";t.SettingsService=class{constructor(e){this.stateService=e}clearCache(){return n(this,void 0,void 0,(function*(){yield this.stateService.setSettings(null)}))}getEquivalentDomains(){return this.getSettingsKey(i)}setEquivalentDomains(e){return n(this,void 0,void 0,(function*(){yield this.setSettingsKey(i,e)}))}clear(e){return n(this,void 0,void 0,(function*(){yield this.stateService.setSettings(null,{userId:e})}))}getSettings(){return n(this,void 0,void 0,(function*(){const e=yield this.stateService.getSettings();if(null==e){yield this.stateService.getUserId()}return e}))}getSettingsKey(e){return n(this,void 0,void 0,(function*(){const t=yield this.getSettings();return null!=t&&t[e]?t[e]:null}))}setSettingsKey(e,t){return n(this,void 0,void 0,(function*(){let n=yield this.getSettings();n||(n={}),n[e]=t,yield this.stateService.setSettings(n)}))}}},13998:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const r=n(72872),o=n(46632),a=n(67223),s=n(31445),l=n(91185),c=n(43208),d=n(95672),p="global",u="authenticatedAccounts",m="activeUserId",h="tempAccountSettings",v="accountActivity",g="_masterkey_auto",f="_masterkey_biometric",y="_masterkey";t.StateService=class{constructor(e,t,n,i,o,a=!0){this.storageService=e,this.secureStorageService=t,this.logService=n,this.stateMigrationService=i,this.stateFactory=o,this.useAccountCache=a,this.accounts=new r.BehaviorSubject({}),this.activeAccount=new r.BehaviorSubject(null),this.state=new c.State(this.createGlobals()),this.hasBeenInited=!1,this.accountDiskCache=new Map}init(){return i(this,void 0,void 0,(function*(){this.hasBeenInited||((yield this.stateMigrationService.needsMigration())&&(yield this.stateMigrationService.migrate()),yield this.initAccountState(),this.hasBeenInited=!0)}))}initAccountState(){var e;return i(this,void 0,void 0,(function*(){this.state.authenticatedAccounts=null!==(e=yield this.storageService.get(u))&&void 0!==e?e:[];for(const e in this.state.authenticatedAccounts)null!=e&&(yield this.syncAccountFromDisk(this.state.authenticatedAccounts[e]));const t=yield this.storageService.get(m);null!=t&&(this.state.activeUserId=t),yield this.pushAccounts(),this.activeAccount.next(this.state.activeUserId)}))}syncAccountFromDisk(e){return i(this,void 0,void 0,(function*(){if(null==e)return;this.state.accounts[e]=this.createAccount();const t=yield this.getAccountFromDisk({userId:e});this.state.accounts[e].profile=t.profile}))}addAccount(e){return i(this,void 0,void 0,(function*(){e=yield this.setAccountEnvironmentUrls(e),this.state.authenticatedAccounts.push(e.profile.userId),yield this.storageService.save(u,this.state.authenticatedAccounts),this.state.accounts[e.profile.userId]=e,yield this.scaffoldNewAccountStorage(e),yield this.setLastActive((new Date).getTime(),{userId:e.profile.userId}),yield this.setActiveUser(e.profile.userId),this.activeAccount.next(e.profile.userId)}))}setActiveUser(e){return i(this,void 0,void 0,(function*(){this.clearDecryptedDataForActiveUser(),this.state.activeUserId=e,yield this.storageService.save(m,e),this.activeAccount.next(this.state.activeUserId),yield this.pushAccounts()}))}clean(e){return i(this,void 0,void 0,(function*(){e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield this.deAuthenticateAccount(e.userId),e.userId===this.state.activeUserId&&(yield this.dynamicallySetActiveUser()),yield this.removeAccountFromDisk(null==e?void 0:e.userId),this.removeAccountFromMemory(null==e?void 0:e.userId),yield this.pushAccounts()}))}getAccessToken(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.accessToken}))}setAccessToken(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.tokens.accessToken=e,yield this.saveAccount(n,t)}))}getAddEditCipherInfo(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.addEditCipherInfo}))}setAddEditCipherInfo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.addEditCipherInfo=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getAlwaysShowDock(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.alwaysShowDock)&&void 0!==n&&n}))}setAlwaysShowDock(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.alwaysShowDock=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getApiKeyClientId(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.apiKeyClientId}))}setApiKeyClientId(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.profile.apiKeyClientId=e,yield this.saveAccount(n,t)}))}getApiKeyClientSecret(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.apiKeyClientSecret}))}setApiKeyClientSecret(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.keys.apiKeyClientSecret=e,yield this.saveAccount(n,t)}))}getAutoConfirmFingerPrints(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.autoConfirmFingerPrints)&&void 0!==r&&r}))}setAutoConfirmFingerprints(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.autoConfirmFingerPrints=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getAutoFillOnPageLoadDefault(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.autoFillOnPageLoadDefault)||void 0===r||r}))}setAutoFillOnPageLoadDefault(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.autoFillOnPageLoadDefault=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricAwaitingAcceptance(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricAwaitingAcceptance)&&void 0!==n&&n}))}setBiometricAwaitingAcceptance(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricAwaitingAcceptance=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricFingerprintValidated(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricFingerprintValidated)&&void 0!==n&&n}))}setBiometricFingerprintValidated(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricFingerprintValidated=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricLocked(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.biometricLocked)&&void 0!==r&&r}))}setBiometricLocked(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.settings.biometricLocked=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getBiometricText(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricText}))}setBiometricText(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricText=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricUnlock(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.biometricUnlock)&&void 0!==r&&r}))}setBiometricUnlock(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.biometricUnlock=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getCanAccessPremium(e){return i(this,void 0,void 0,(function*(){if(!(yield this.getIsAuthenticated(e)))return!1;if((yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions()))).profile.hasPremiumPersonally)return!0;const t=yield this.getOrganizations(e);if(null==t)return!1;for(const e of Object.keys(t)){const n=t[e];if(n.enabled&&n.usersGetPremium&&!n.isProviderUser)return!0}return!1}))}getClearClipboard(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.clearClipboard)&&void 0!==r?r:null}))}setClearClipboard(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.clearClipboard=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getCollapsedGroupings(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.collapsedGroupings}))}setCollapsedGroupings(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.collapsedGroupings=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getConvertAccountToKeyConnector(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.convertAccountToKeyConnector}))}setConvertAccountToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.convertAccountToKeyConnector=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getCryptoMasterKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.cryptoMasterKey}))}setCryptoMasterKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.cryptoMasterKey=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getCryptoMasterKeyAuto(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"auto"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${e.userId}${g}`,e)}))}setCryptoMasterKeyAuto(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(this.reconcileOptions(t,{keySuffix:"auto"}),yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(g,e,t))}))}getCryptoMasterKeyB64(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(e,yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${null==e?void 0:e.userId}${y}`,e)}))}setCryptoMasterKeyB64(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(t,yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(y,e,t))}))}getCryptoMasterKeyBiometric(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${e.userId}${f}`,e)}))}hasCryptoMasterKeyBiometric(e){return i(this,void 0,void 0,(function*(){return null!=(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)&&(yield this.secureStorageService.has(`${e.userId}${f}`,e))}))}setCryptoMasterKeyBiometric(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(this.reconcileOptions(t,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(f,e,t))}))}getDecodedToken(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.decodedToken}))}setDecodedToken(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.tokens.decodedToken=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCiphers(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.ciphers)||void 0===r?void 0:r.decrypted}))}setDecryptedCiphers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.ciphers.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCollections(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.collections)||void 0===r?void 0:r.decrypted}))}setDecryptedCollections(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.collections.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCryptoSymmetricKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.cryptoSymmetricKey)||void 0===r?void 0:r.decrypted}))}setDecryptedCryptoSymmetricKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.cryptoSymmetricKey.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedFolders(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.folders)||void 0===r?void 0:r.decrypted}))}setDecryptedFolders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.folders.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedOrganizationKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.organizationKeys)||void 0===r?void 0:r.decrypted}))}setDecryptedOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.organizationKeys.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPasswordGenerationHistory(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.passwordGenerationHistory)||void 0===r?void 0:r.decrypted}))}setDecryptedPasswordGenerationHistory(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.passwordGenerationHistory.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPinProtected(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.pinProtected)||void 0===r?void 0:r.decrypted}))}setDecryptedPinProtected(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.settings.pinProtected.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPolicies(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.policies)||void 0===r?void 0:r.decrypted}))}setDecryptedPolicies(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.policies.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPrivateKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.privateKey)||void 0===r?void 0:r.decrypted}))}setDecryptedPrivateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.privateKey.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedProviderKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.providerKeys)||void 0===r?void 0:r.decrypted}))}setDecryptedProviderKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.providerKeys.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedSends(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.sends)||void 0===r?void 0:r.decrypted}))}setDecryptedSends(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.sends.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDefaultUriMatch(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.defaultUriMatch}))}setDefaultUriMatch(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.defaultUriMatch=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAddLoginNotification(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAddLoginNotification)&&void 0!==r&&r}))}setDisableAddLoginNotification(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAddLoginNotification=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAutoBiometricsPrompt(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAutoBiometricsPrompt)&&void 0!==r&&r}))}setDisableAutoBiometricsPrompt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAutoBiometricsPrompt=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAutoTotpCopy(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAutoTotpCopy)&&void 0!==r&&r}))}setDisableAutoTotpCopy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAutoTotpCopy=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableBadgeCounter(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableBadgeCounter)&&void 0!==r&&r}))}setDisableBadgeCounter(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableBadgeCounter=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableChangedPasswordNotification(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableChangedPasswordNotification)&&void 0!==r&&r}))}setDisableChangedPasswordNotification(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableChangedPasswordNotification=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableContextMenuItem(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableContextMenuItem)&&void 0!==r&&r}))}setDisableContextMenuItem(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableContextMenuItem=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableFavicon(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.disableFavicon)&&void 0!==n&&n}))}setDisableFavicon(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.disableFavicon=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getDisableGa(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableGa)&&void 0!==r&&r}))}setDisableGa(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableGa=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDontShowCardsCurrentTab(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.dontShowCardsCurrentTab)&&void 0!==r&&r}))}setDontShowCardsCurrentTab(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.dontShowCardsCurrentTab=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDontShowIdentitiesCurrentTab(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.dontShowIdentitiesCurrentTab)&&void 0!==r&&r}))}setDontShowIdentitiesCurrentTab(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.dontShowIdentitiesCurrentTab=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEmail(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.email}))}setEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.email=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getEmailVerified(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile.emailVerified)&&void 0!==n&&n}))}setEmailVerified(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.emailVerified=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableAlwaysOnTop(e){var t,n,r,o;return i(this,void 0,void 0,(function*(){const i=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableAlwaysOnTop,a=null===(r=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===r?void 0:r.enableAlwaysOnTop;return null!==(o=null!=i?i:a)&&void 0!==o&&o}))}setEnableAlwaysOnTop(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.enableAlwaysOnTop=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()));const i=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));i.enableAlwaysOnTop=e,yield this.saveGlobals(i,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableAutoFillOnPageLoad(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableAutoFillOnPageLoad)&&void 0!==r&&r}))}setEnableAutoFillOnPageLoad(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.enableAutoFillOnPageLoad=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBiometric(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBiometrics)&&void 0!==n&&n}))}setEnableBiometric(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBiometrics=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBrowserIntegration(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBrowserIntegration)&&void 0!==n&&n}))}setEnableBrowserIntegration(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBrowserIntegration=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBrowserIntegrationFingerprint(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBrowserIntegrationFingerprint)&&void 0!==n&&n}))}setEnableBrowserIntegrationFingerprint(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBrowserIntegrationFingerprint=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableCloseToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableCloseToTray)&&void 0!==n&&n}))}setEnableCloseToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableCloseToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableFullWidth(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableFullWidth)&&void 0!==r&&r}))}setEnableFullWidth(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.enableFullWidth=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnableGravitars(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableGravitars)&&void 0!==r&&r}))}setEnableGravitars(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.enableGravitars=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnableMinimizeToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableMinimizeToTray)&&void 0!==n&&n}))}setEnableMinimizeToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableMinimizeToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableStartToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableStartToTray)&&void 0!==n&&n}))}setEnableStartToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableStartToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableTray)&&void 0!==n&&n}))}setEnableTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedCiphers(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.ciphers)||void 0===r?void 0:r.encrypted}))}setEncryptedCiphers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.ciphers.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedCollections(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.collections)||void 0===r?void 0:r.encrypted}))}setEncryptedCollections(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.collections.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedCryptoSymmetricKey(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys.cryptoSymmetricKey.encrypted}))}setEncryptedCryptoSymmetricKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.cryptoSymmetricKey.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedFolders(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.folders)||void 0===r?void 0:r.encrypted}))}setEncryptedFolders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.folders.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedOrganizationKeys(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.organizationKeys.encrypted}))}setEncryptedOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.organizationKeys.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPasswordGenerationHistory(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.passwordGenerationHistory)||void 0===r?void 0:r.encrypted}))}setEncryptedPasswordGenerationHistory(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.passwordGenerationHistory.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPinProtected(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.pinProtected)||void 0===r?void 0:r.encrypted}))}setEncryptedPinProtected(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.pinProtected.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPolicies(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.policies)||void 0===r?void 0:r.encrypted}))}setEncryptedPolicies(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.policies.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPrivateKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.privateKey)||void 0===r?void 0:r.encrypted}))}setEncryptedPrivateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.privateKey.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedProviderKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.providerKeys)||void 0===r?void 0:r.encrypted}))}setEncryptedProviderKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.providerKeys.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedSends(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.sends.encrypted}))}setEncryptedSends(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.sends.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEntityId(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.entityId}))}setEntityId(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.profile.entityId=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEntityType(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.entityType}))}setEntityType(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.profile.entityType=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnvironmentUrls(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null==this.state.activeUserId?yield this.getGlobalEnvironmentUrls(e):(e=this.reconcileOptions(e,yield this.defaultOnDiskOptions()),null!==(r=null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.environmentUrls)&&void 0!==r?r:new l.EnvironmentUrls)}))}setEnvironmentUrls(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.environmentUrls=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEquivalentDomains(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.equivalentDomains}))}setEquivalentDomains(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.equivalentDomains=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEventCollection(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.eventCollection}))}setEventCollection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.eventCollection=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEverBeenUnlocked(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.everBeenUnlocked)&&void 0!==r&&r}))}setEverBeenUnlocked(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.everBeenUnlocked=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getForcePasswordReset(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.forcePasswordReset)&&void 0!==r&&r}))}setForcePasswordReset(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.forcePasswordReset=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getInstalledVersion(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.installedVersion}))}setInstalledVersion(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.installedVersion=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getIsAuthenticated(e){return i(this,void 0,void 0,(function*(){return null!=(yield this.getAccessToken(e))&&null!=(yield this.getUserId(e))}))}getKdfIterations(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.kdfIterations}))}setKdfIterations(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.kdfIterations=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getKdfType(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.kdfType}))}setKdfType(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.kdfType=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getKeyHash(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.keyHash}))}setKeyHash(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.keyHash=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getLastActive(e){return i(this,void 0,void 0,(function*(){e=this.reconcileOptions(e,yield this.defaultOnDiskOptions());const t=yield this.storageService.get(v,e);return null==t||Object.keys(t).length<1?null:t[e.userId]}))}setLastActive(e,t){var n;return i(this,void 0,void 0,(function*(){if(null==(t=this.reconcileOptions(t,yield this.defaultOnDiskOptions())).userId)return;const i=null!==(n=yield this.storageService.get(v,t))&&void 0!==n?n:{};i[t.userId]=e,yield this.storageService.save(v,i,t)}))}getLastSync(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.lastSync}))}setLastSync(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.profile.lastSync=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getLegacyEtmKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.legacyEtmKey}))}setLegacyEtmKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.legacyEtmKey=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getLocalData(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.localData}))}setLocalData(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.data.localData=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getLocale(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.locale}))}setLocale(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.locale=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getMainWindowSize(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.mainWindowSize}))}setMainWindowSize(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,this.defaultInMemoryOptions));n.mainWindowSize=e,yield this.saveGlobals(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getMinimizeOnCopyToClipboard(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.minimizeOnCopyToClipboard)&&void 0!==r&&r}))}setMinimizeOnCopyToClipboard(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.minimizeOnCopyToClipboard=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNeverDomains(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.neverDomains}))}setNeverDomains(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.neverDomains=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNoAutoPromptBiometrics(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.noAutoPromptBiometrics)&&void 0!==n&&n}))}setNoAutoPromptBiometrics(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.noAutoPromptBiometrics=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNoAutoPromptBiometricsText(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.noAutoPromptBiometricsText}))}setNoAutoPromptBiometricsText(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.noAutoPromptBiometricsText=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getOpenAtLogin(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.openAtLogin)&&void 0!==n&&n}))}setOpenAtLogin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.openAtLogin=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getOrganizationInvitation(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.organizationInvitation}))}setOrganizationInvitation(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,this.defaultInMemoryOptions));n.organizationInvitation=e,yield this.saveGlobals(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getOrganizations(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.organizations}))}setOrganizations(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.organizations=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getPasswordGenerationOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.passwordGenerationOptions}))}setPasswordGenerationOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.passwordGenerationOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getUsernameGenerationOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.usernameGenerationOptions}))}setUsernameGenerationOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.usernameGenerationOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getGeneratorOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.generatorOptions}))}setGeneratorOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.generatorOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getProtectedPin(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.protectedPin}))}setProtectedPin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.protectedPin=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getProviders(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.providers}))}setProviders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.providers=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getPublicKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.publicKey}))}setPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.publicKey=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getRefreshToken(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.refreshToken}))}setRefreshToken(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.tokens.refreshToken=e,yield this.saveAccount(n,t)}))}getRememberedEmail(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.rememberedEmail}))}setRememberedEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.rememberedEmail=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getSecurityStamp(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.securityStamp}))}setSecurityStamp(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.tokens.securityStamp=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getSettings(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.settings}))}setSettings(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.settings.settings=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getSsoCodeVerifier(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.ssoCodeVerifier}))}setSsoCodeVerifier(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.ssoCodeVerifier=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getSsoOrgIdentifier(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.ssoOrganizationIdentifier}))}setSsoOrganizationIdentifier(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.ssoOrganizationIdentifier=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getSsoState(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.ssoState}))}setSsoState(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.ssoState=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getTheme(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.theme}))}setTheme(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.theme=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getTwoFactorToken(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.twoFactorToken}))}setTwoFactorToken(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.twoFactorToken=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getUserId(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.userId}))}getUsesKeyConnector(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.usesKeyConnector}))}setUsesKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.usesKeyConnector=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getVaultTimeout(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.vaultTimeout}))}setVaultTimeout(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.vaultTimeout=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getVaultTimeoutAction(e){var t,n,r;return i(this,void 0,void 0,(function*(){const i=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.vaultTimeoutAction,o=null===(r=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===r?void 0:r.vaultTimeoutAction;return null!=i?i:o}))}setVaultTimeoutAction(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.vaultTimeoutAction=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getStateVersion(){var e;return i(this,void 0,void 0,(function*(){return null!==(e=(yield this.getGlobals(yield this.defaultOnDiskLocalOptions())).stateVersion)&&void 0!==e?e:1}))}setStateVersion(e){return i(this,void 0,void 0,(function*(){const t=yield this.getGlobals(yield this.defaultOnDiskOptions());t.stateVersion=e,yield this.saveGlobals(t,yield this.defaultOnDiskOptions())}))}getWindow(){return i(this,void 0,void 0,(function*(){const e=yield this.getGlobals(yield this.defaultOnDiskOptions());return null!=(null==e?void 0:e.window)&&Object.keys(e.window).length>0?e.window:new d.WindowState}))}setWindow(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));return n.window=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getGlobals(e){return i(this,void 0,void 0,(function*(){let t;return this.useMemory(e.storageLocation)&&(t=this.getGlobalsFromMemory()),this.useDisk&&null==t&&(t=yield this.getGlobalsFromDisk(e)),null!=t?t:this.createGlobals()}))}saveGlobals(e,t){return i(this,void 0,void 0,(function*(){return this.useMemory(t.storageLocation)?this.saveGlobalsToMemory(e):yield this.saveGlobalsToDisk(e,t)}))}getGlobalsFromMemory(){return this.state.globals}getGlobalsFromDisk(e){return i(this,void 0,void 0,(function*(){return yield this.storageService.get(p,e)}))}saveGlobalsToMemory(e){this.state.globals=e}saveGlobalsToDisk(e,t){return i(this,void 0,void 0,(function*(){t.useSecureStorage?yield this.secureStorageService.save(p,e,t):yield this.storageService.save(p,e,t)}))}getAccount(e){return i(this,void 0,void 0,(function*(){try{let t;return this.useMemory(e.storageLocation)&&(t=this.getAccountFromMemory(e)),this.useDisk(e.storageLocation)&&null==t&&(t=yield this.getAccountFromDisk(e)),t}catch(t){this.logService.error(t)}}))}getAccountFromMemory(e){return null==this.state.accounts?null:this.state.accounts[this.getUserIdFromMemory(e)]}getUserIdFromMemory(e){var t,n;return null!=(null==e?void 0:e.userId)?null===(n=null===(t=this.state.accounts[e.userId])||void 0===t?void 0:t.profile)||void 0===n?void 0:n.userId:this.state.activeUserId}getAccountFromDisk(e){var t;return i(this,void 0,void 0,(function*(){if(null==(null==e?void 0:e.userId)&&null==this.state.activeUserId)return null;if(this.useAccountCache){const t=this.accountDiskCache.get(e.userId);if(null!=t)return t}const n=(null==e?void 0:e.useSecureStorage)?null!==(t=yield this.secureStorageService.get(e.userId,e))&&void 0!==t?t:yield this.storageService.get(e.userId,this.reconcileOptions(e,{htmlStorageLocation:o.HtmlStorageLocation.Local})):yield this.storageService.get(e.userId,e);return this.useAccountCache&&this.accountDiskCache.set(e.userId,n),n}))}useMemory(e){return e===a.StorageLocation.Memory||e===a.StorageLocation.Both}useDisk(e){return e===a.StorageLocation.Disk||e===a.StorageLocation.Both}saveAccount(e,t={storageLocation:a.StorageLocation.Both,useSecureStorage:!1}){return i(this,void 0,void 0,(function*(){return this.useMemory(t.storageLocation)?yield this.saveAccountToMemory(e):yield this.saveAccountToDisk(e,t)}))}saveAccountToDisk(e,t){return i(this,void 0,void 0,(function*(){const n=t.useSecureStorage?this.secureStorageService:this.storageService;yield n.save(`${t.userId}`,e,t),this.useAccountCache&&this.accountDiskCache.delete(t.userId)}))}saveAccountToMemory(e){return i(this,void 0,void 0,(function*(){null!==this.getAccountFromMemory({userId:e.profile.userId})&&(this.state.accounts[e.profile.userId]=e),yield this.pushAccounts()}))}scaffoldNewAccountStorage(e){return i(this,void 0,void 0,(function*(){const t=JSON.parse(JSON.stringify(e));yield this.scaffoldNewAccountLocalStorage(t),yield this.scaffoldNewAccountSessionStorage(t),yield this.scaffoldNewAccountMemoryStorage(t)}))}scaffoldNewAccountLocalStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskLocalOptions())),n=e.settings.environmentUrls;null!=(null==t?void 0:t.settings)?e.settings=t.settings:(yield this.storageService.has(h))&&(e.settings=yield this.storageService.get(h),yield this.storageService.remove(h)),e.settings.environmentUrls=n,"logOut"===e.settings.vaultTimeoutAction&&null!=e.settings.vaultTimeout&&(e.tokens.accessToken=null,e.tokens.refreshToken=null,e.profile.apiKeyClientId=null,e.keys.apiKeyClientSecret=null),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskLocalOptions()))}))}scaffoldNewAccountMemoryStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskMemoryOptions()));null!=(null==t?void 0:t.settings)&&(t.settings.environmentUrls=e.settings.environmentUrls,e.settings=t.settings),yield this.storageService.save(e.profile.userId,e,yield this.defaultOnDiskMemoryOptions()),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskMemoryOptions()))}))}scaffoldNewAccountSessionStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskOptions()));null!=(null==t?void 0:t.settings)&&(t.settings.environmentUrls=e.settings.environmentUrls,e.settings=t.settings),yield this.storageService.save(e.profile.userId,e,yield this.defaultOnDiskMemoryOptions()),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskOptions()))}))}pushAccounts(){var e;return i(this,void 0,void 0,(function*(){yield this.pruneInMemoryAccounts(),null==(null===(e=this.state)||void 0===e?void 0:e.accounts)||Object.keys(this.state.accounts).length<1?this.accounts.next(null):this.accounts.next(this.state.accounts)}))}reconcileOptions(e,t){var n,i,r,o,a;return null==e?t:(e.userId=null!==(n=null==e?void 0:e.userId)&&void 0!==n?n:t.userId,e.storageLocation=null!==(i=null==e?void 0:e.storageLocation)&&void 0!==i?i:t.storageLocation,e.useSecureStorage=null!==(r=null==e?void 0:e.useSecureStorage)&&void 0!==r?r:t.useSecureStorage,e.htmlStorageLocation=null!==(o=null==e?void 0:e.htmlStorageLocation)&&void 0!==o?o:t.htmlStorageLocation,e.keySuffix=null!==(a=null==e?void 0:e.keySuffix)&&void 0!==a?a:t.keySuffix,e)}get defaultInMemoryOptions(){return{storageLocation:a.StorageLocation.Memory,userId:this.state.activeUserId}}defaultOnDiskOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Session,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage(),useSecureStorage:!1}}))}defaultOnDiskLocalOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Local,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage(),useSecureStorage:!1}}))}defaultOnDiskMemoryOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Memory,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getUserId(),useSecureStorage:!1}}))}defaultSecureStorageOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,useSecureStorage:!0,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage()}}))}getActiveUserIdFromStorage(){return i(this,void 0,void 0,(function*(){return yield this.storageService.get(m)}))}removeAccountFromLocalStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e},yield this.defaultOnDiskLocalOptions()));yield this.saveAccount(this.resetAccount(t),this.reconcileOptions({userId:e},yield this.defaultOnDiskLocalOptions()))}))}removeAccountFromSessionStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e},yield this.defaultOnDiskOptions()));yield this.saveAccount(this.resetAccount(t),this.reconcileOptions({userId:e},yield this.defaultOnDiskOptions()))}))}removeAccountFromSecureStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){yield this.setCryptoMasterKeyAuto(null,{userId:e}),yield this.setCryptoMasterKeyBiometric(null,{userId:e}),yield this.setCryptoMasterKeyB64(null,{userId:e})}))}removeAccountFromMemory(e=this.state.activeUserId){delete this.state.accounts[e],this.useAccountCache&&this.accountDiskCache.delete(e)}pruneInMemoryAccounts(){return i(this,void 0,void 0,(function*(){for(const e in this.state.accounts)(yield this.getIsAuthenticated({userId:e}))||this.removeAccountFromMemory(e)}))}resetAccount(e){const t={settings:e.settings};return Object.assign(this.createAccount(),t)}setAccountEnvironmentUrls(e){return i(this,void 0,void 0,(function*(){return e.settings.environmentUrls=yield this.getGlobalEnvironmentUrls(),e}))}getGlobalEnvironmentUrls(e){var t;return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,yield this.defaultOnDiskOptions()),null!==(t=(yield this.getGlobals(e)).environmentUrls)&&void 0!==t?t:new l.EnvironmentUrls}))}clearDecryptedDataForActiveUser(){var e,t;const n=this.state.activeUserId;null!=n&&null!=(null===(t=null===(e=this.state)||void 0===e?void 0:e.accounts[n])||void 0===t?void 0:t.data)&&(this.state.accounts[n].data=new s.AccountData)}createAccount(e=null){return this.stateFactory.createAccount(e)}createGlobals(e=null){return this.stateFactory.createGlobal(e)}deAuthenticateAccount(e){return i(this,void 0,void 0,(function*(){yield this.setAccessToken(null,{userId:e}),yield this.setLastActive(null,{userId:e}),this.state.authenticatedAccounts=this.state.authenticatedAccounts.filter((t=>t!==e)),yield this.storageService.save(u,this.state.authenticatedAccounts)}))}removeAccountFromDisk(e){return i(this,void 0,void 0,(function*(){yield this.removeAccountFromSessionStorage(e),yield this.removeAccountFromLocalStorage(e),yield this.removeAccountFromSecureStorage(e)}))}dynamicallySetActiveUser(){return i(this,void 0,void 0,(function*(){if(null==this.state.accounts||Object.keys(this.state.accounts).length<1)yield this.setActiveUser(null);else for(const e in this.state.accounts)if(null!=e){if(yield this.getIsAuthenticated({userId:e})){yield this.setActiveUser(e);break}yield this.setActiveUser(null)}}))}getTimeoutBasedStorageOptions(e){return i(this,void 0,void 0,(function*(){const t=yield this.getVaultTimeoutAction({userId:null==e?void 0:e.userId}),n=yield this.getVaultTimeout({userId:null==e?void 0:e.userId}),i="logOut"===t&&null!=n?this.defaultInMemoryOptions:yield this.defaultOnDiskOptions();return this.reconcileOptions(e,i)}))}saveSecureStorageKey(e,t,n){return i(this,void 0,void 0,(function*(){return null==t?yield this.secureStorageService.remove(`${n.userId}${e}`,n):yield this.secureStorageService.save(`${n.userId}${e}`,t,n)}))}}},8357:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;const r=n(46632),o=n(40898),a=n(7790),s={accessToken:"accessToken",alwaysShowDock:"alwaysShowDock",autoConfirmFingerprints:"autoConfirmFingerprints",autoFillOnPageLoadDefault:"autoFillOnPageLoadDefault",biometricAwaitingAcceptance:"biometricAwaitingAcceptance",biometricFingerprintValidated:"biometricFingerprintValidated",biometricText:"biometricText",biometricUnlock:"biometric",clearClipboard:"clearClipboardKey",clientId:"apikey_clientId",clientSecret:"apikey_clientSecret",collapsedGroupings:"collapsedGroupings",convertAccountToKeyConnector:"convertAccountToKeyConnector",defaultUriMatch:"defaultUriMatch",disableAddLoginNotification:"disableAddLoginNotification",disableAutoBiometricsPrompt:"noAutoPromptBiometrics",disableAutoTotpCopy:"disableAutoTotpCopy",disableBadgeCounter:"disableBadgeCounter",disableChangedPasswordNotification:"disableChangedPasswordNotification",disableContextMenuItem:"disableContextMenuItem",disableFavicon:"disableFavicon",disableGa:"disableGa",dontShowCardsCurrentTab:"dontShowCardsCurrentTab",dontShowIdentitiesCurrentTab:"dontShowIdentitiesCurrentTab",emailVerified:"emailVerified",enableAlwaysOnTop:"enableAlwaysOnTopKey",enableAutoFillOnPageLoad:"enableAutoFillOnPageLoad",enableBiometric:"enabledBiometric",enableBrowserIntegration:"enableBrowserIntegration",enableBrowserIntegrationFingerprint:"enableBrowserIntegrationFingerprint",enableCloseToTray:"enableCloseToTray",enableFullWidth:"enableFullWidth",enableGravatars:"enableGravatars",enableMinimizeToTray:"enableMinimizeToTray",enableStartToTray:"enableStartToTrayKey",enableTray:"enableTray",encKey:"encKey",encOrgKeys:"encOrgKeys",encPrivate:"encPrivateKey",encProviderKeys:"encProviderKeys",entityId:"entityId",entityType:"entityType",environmentUrls:"environmentUrls",equivalentDomains:"equivalentDomains",eventCollection:"eventCollection",forcePasswordReset:"forcePasswordReset",history:"generatedPasswordHistory",installedVersion:"installedVersion",kdf:"kdf",kdfIterations:"kdfIterations",key:"key",keyHash:"keyHash",lastActive:"lastActive",localData:"sitesLocalData",locale:"locale",mainWindowSize:"mainWindowSize",minimizeOnCopyToClipboard:"minimizeOnCopyToClipboardKey",neverDomains:"neverDomains",noAutoPromptBiometricsText:"noAutoPromptBiometricsText",openAtLogin:"openAtLogin",passwordGenerationOptions:"passwordGenerationOptions",pinProtected:"pinProtectedKey",protectedPin:"protectedPin",refreshToken:"refreshToken",ssoCodeVerifier:"ssoCodeVerifier",ssoIdentifier:"ssoOrgIdentifier",ssoState:"ssoState",stamp:"securityStamp",theme:"theme",userEmail:"userEmail",userId:"userId",usesConnector:"usesKeyConnector",vaultTimeoutAction:"vaultTimeoutAction",vaultTimeout:"lockOption",rememberedEmail:"rememberedEmail"},l={ciphers:"ciphers_",collections:"collections_",folders:"folders_",lastSync:"lastSync_",policies:"policies_",twoFactorToken:"twoFactorToken_",organizations:"organizations_",providers:"providers_",sends:"sends_",settings:"settings_"},c="global",d="authenticatedAccounts",p="activeUserId",u="tempAccountSettings",m="accountActivity",h="_masterkey_auto",v="_masterkey_biometric",g="_masterkey";t.StateMigrationService=class{constructor(e,t,n){this.storageService=e,this.secureStorageService=t,this.stateFactory=n}needsMigration(){return i(this,void 0,void 0,(function*(){const e=yield this.getCurrentStateVersion();return null==e||ei(this,void 0,void 0,(function*(){for(const e in s)null!=e&&(yield this.set(s[e],null));if(null!=e)for(const e in l)null!=e&&(yield this.set(l[e]+le,null))})),se=null!==(e=yield this.get(c))&&void 0!==e?e:this.stateFactory.createGlobal(null);se.stateVersion=o.StateVersion.Two,se.environmentUrls=null!==(t=yield this.get(s.environmentUrls))&&void 0!==t?t:se.environmentUrls,se.locale=null!==(n=yield this.get(s.locale))&&void 0!==n?n:se.locale,se.noAutoPromptBiometrics=null!==(r=yield this.get(s.disableAutoBiometricsPrompt))&&void 0!==r?r:se.noAutoPromptBiometrics,se.noAutoPromptBiometricsText=null!==(a=yield this.get(s.noAutoPromptBiometricsText))&&void 0!==a?a:se.noAutoPromptBiometricsText,se.ssoCodeVerifier=null!==(f=yield this.get(s.ssoCodeVerifier))&&void 0!==f?f:se.ssoCodeVerifier,se.ssoOrganizationIdentifier=null!==(y=yield this.get(s.ssoIdentifier))&&void 0!==y?y:se.ssoOrganizationIdentifier,se.ssoState=null!==(x=yield this.get(s.ssoState))&&void 0!==x?x:se.ssoState,se.rememberedEmail=null!==(S=yield this.get(s.rememberedEmail))&&void 0!==S?S:se.rememberedEmail,se.theme=null!==(b=yield this.get(s.theme))&&void 0!==b?b:se.theme,se.vaultTimeout=null!==(w=yield this.get(s.vaultTimeout))&&void 0!==w?w:se.vaultTimeout,se.vaultTimeoutAction=null!==(C=yield this.get(s.vaultTimeoutAction))&&void 0!==C?C:se.vaultTimeoutAction,se.window=null!==(I=yield this.get(s.mainWindowSize))&&void 0!==I?I:se.window,se.enableTray=null!==(E=yield this.get(s.enableTray))&&void 0!==E?E:se.enableTray,se.enableMinimizeToTray=null!==(P=yield this.get(s.enableMinimizeToTray))&&void 0!==P?P:se.enableMinimizeToTray,se.enableCloseToTray=null!==(O=yield this.get(s.enableCloseToTray))&&void 0!==O?O:se.enableCloseToTray,se.enableStartToTray=null!==(k=yield this.get(s.enableStartToTray))&&void 0!==k?k:se.enableStartToTray,se.openAtLogin=null!==(A=yield this.get(s.openAtLogin))&&void 0!==A?A:se.openAtLogin,se.alwaysShowDock=null!==(T=yield this.get(s.alwaysShowDock))&&void 0!==T?T:se.alwaysShowDock,se.enableBrowserIntegration=null!==(M=yield this.get(s.enableBrowserIntegration))&&void 0!==M?M:se.enableBrowserIntegration,se.enableBrowserIntegrationFingerprint=null!==(B=yield this.get(s.enableBrowserIntegrationFingerprint))&&void 0!==B?B:se.enableBrowserIntegrationFingerprint;const le=null!==(D=yield this.get(s.userId))&&void 0!==D?D:yield this.get(s.entityId),ce=this.stateFactory.createAccount(null),de={autoConfirmFingerPrints:null!==(R=yield this.get(s.autoConfirmFingerprints))&&void 0!==R?R:ce.settings.autoConfirmFingerPrints,autoFillOnPageLoadDefault:null!==(F=yield this.get(s.autoFillOnPageLoadDefault))&&void 0!==F?F:ce.settings.autoFillOnPageLoadDefault,biometricLocked:null,biometricUnlock:null!==(U=yield this.get(s.biometricUnlock))&&void 0!==U?U:ce.settings.biometricUnlock,clearClipboard:null!==(V=yield this.get(s.clearClipboard))&&void 0!==V?V:ce.settings.clearClipboard,defaultUriMatch:null!==(N=yield this.get(s.defaultUriMatch))&&void 0!==N?N:ce.settings.defaultUriMatch,disableAddLoginNotification:null!==(_=yield this.get(s.disableAddLoginNotification))&&void 0!==_?_:ce.settings.disableAddLoginNotification,disableAutoBiometricsPrompt:null!==(j=yield this.get(s.disableAutoBiometricsPrompt))&&void 0!==j?j:ce.settings.disableAutoBiometricsPrompt,disableAutoTotpCopy:null!==(z=yield this.get(s.disableAutoTotpCopy))&&void 0!==z?z:ce.settings.disableAutoTotpCopy,disableBadgeCounter:null!==(H=yield this.get(s.disableBadgeCounter))&&void 0!==H?H:ce.settings.disableBadgeCounter,disableChangedPasswordNotification:null!==(L=yield this.get(s.disableChangedPasswordNotification))&&void 0!==L?L:ce.settings.disableChangedPasswordNotification,disableContextMenuItem:null!==(K=yield this.get(s.disableContextMenuItem))&&void 0!==K?K:ce.settings.disableContextMenuItem,disableGa:null!==(q=yield this.get(s.disableGa))&&void 0!==q?q:ce.settings.disableGa,dontShowCardsCurrentTab:null!==(G=yield this.get(s.dontShowCardsCurrentTab))&&void 0!==G?G:ce.settings.dontShowCardsCurrentTab,dontShowIdentitiesCurrentTab:null!==(W=yield this.get(s.dontShowIdentitiesCurrentTab))&&void 0!==W?W:ce.settings.dontShowIdentitiesCurrentTab,enableAlwaysOnTop:null!==($=yield this.get(s.enableAlwaysOnTop))&&void 0!==$?$:ce.settings.enableAlwaysOnTop,enableAutoFillOnPageLoad:null!==(Y=yield this.get(s.enableAutoFillOnPageLoad))&&void 0!==Y?Y:ce.settings.enableAutoFillOnPageLoad,enableBiometric:null!==(Q=yield this.get(s.enableBiometric))&&void 0!==Q?Q:ce.settings.enableBiometric,enableFullWidth:null!==(J=yield this.get(s.enableFullWidth))&&void 0!==J?J:ce.settings.enableFullWidth,enableGravitars:null!==(Z=yield this.get(s.enableGravatars))&&void 0!==Z?Z:ce.settings.enableGravitars,environmentUrls:null!==(X=se.environmentUrls)&&void 0!==X?X:ce.settings.environmentUrls,equivalentDomains:null!==(ee=yield this.get(s.equivalentDomains))&&void 0!==ee?ee:ce.settings.equivalentDomains,minimizeOnCopyToClipboard:null!==(te=yield this.get(s.minimizeOnCopyToClipboard))&&void 0!==te?te:ce.settings.minimizeOnCopyToClipboard,neverDomains:null!==(ne=yield this.get(s.neverDomains))&&void 0!==ne?ne:ce.settings.neverDomains,passwordGenerationOptions:null!==(ie=yield this.get(s.passwordGenerationOptions))&&void 0!==ie?ie:ce.settings.passwordGenerationOptions,pinProtected:{decrypted:null,encrypted:yield this.get(s.pinProtected)},protectedPin:yield this.get(s.protectedPin),settings:null==le?null:yield this.get(l.settings+le),vaultTimeout:null!==(re=yield this.get(s.vaultTimeout))&&void 0!==re?re:ce.settings.vaultTimeout,vaultTimeoutAction:null!==(oe=yield this.get(s.vaultTimeoutAction))&&void 0!==oe?oe:ce.settings.vaultTimeoutAction};if(null==le)return yield this.set(u,de),yield this.set(c,se),yield this.set(d,[]),yield this.set(p,null),void(yield ae());se.twoFactorToken=yield this.get(l.twoFactorToken+le),yield this.set(c,se),yield this.set(le,{data:{addEditCipherInfo:null,ciphers:{decrypted:null,encrypted:yield this.get(l.ciphers+le)},collapsedGroupings:null,collections:{decrypted:null,encrypted:yield this.get(l.collections+le)},eventCollection:yield this.get(s.eventCollection),folders:{decrypted:null,encrypted:yield this.get(l.folders+le)},localData:null,organizations:yield this.get(l.organizations+le),passwordGenerationHistory:{decrypted:null,encrypted:yield this.get(s.history)},policies:{decrypted:null,encrypted:yield this.get(l.policies+le)},providers:yield this.get(l.providers+le),sends:{decrypted:null,encrypted:yield this.get(l.sends+le)}},keys:{apiKeyClientSecret:yield this.get(s.clientSecret),cryptoMasterKey:null,cryptoMasterKeyAuto:null,cryptoMasterKeyB64:null,cryptoMasterKeyBiometric:null,cryptoSymmetricKey:{encrypted:yield this.get(s.encKey),decrypted:null},legacyEtmKey:null,organizationKeys:{decrypted:null,encrypted:yield this.get(s.encOrgKeys)},privateKey:{decrypted:null,encrypted:yield this.get(s.encPrivate)},providerKeys:{decrypted:null,encrypted:yield this.get(s.encProviderKeys)},publicKey:null},profile:{apiKeyClientId:yield this.get(s.clientId),authenticationStatus:null,convertAccountToKeyConnector:yield this.get(s.convertAccountToKeyConnector),email:yield this.get(s.userEmail),emailVerified:yield this.get(s.emailVerified),entityId:null,entityType:null,everBeenUnlocked:null,forcePasswordReset:null,hasPremiumPersonally:null,kdfIterations:yield this.get(s.kdfIterations),kdfType:yield this.get(s.kdf),keyHash:yield this.get(s.keyHash),lastSync:null,userId:le,usesKeyConnector:null},settings:de,tokens:{accessToken:yield this.get(s.accessToken),decodedToken:null,refreshToken:yield this.get(s.refreshToken),securityStamp:null}}),yield this.set(d,[le]),yield this.set(p,le);const pe={[le]:yield this.get(s.lastActive)};pe[le]=yield this.get(s.lastActive),yield this.set(m,pe),yield ae(le),(yield this.secureStorageService.has(s.key,{keySuffix:"biometric"}))&&(yield this.secureStorageService.save(`${le}${v}`,yield this.secureStorageService.get(s.key,{keySuffix:"biometric"}),{keySuffix:"biometric"}),yield this.secureStorageService.remove(s.key,{keySuffix:"biometric"})),(yield this.secureStorageService.has(s.key,{keySuffix:"auto"}))&&(yield this.secureStorageService.save(`${le}${h}`,yield this.secureStorageService.get(s.key,{keySuffix:"auto"}),{keySuffix:"auto"}),yield this.secureStorageService.remove(s.key,{keySuffix:"auto"})),(yield this.secureStorageService.has(s.key))&&(yield this.secureStorageService.save(`${le}${g}`,yield this.secureStorageService.get(s.key)),yield this.secureStorageService.remove(s.key))}))}migrateStateFrom2To3(){return i(this,void 0,void 0,(function*(){const e=yield this.get(d);yield Promise.all(e.map((e=>i(this,void 0,void 0,(function*(){var t,n;const i=yield this.get(e);if(null===(null===(t=null==i?void 0:i.profile)||void 0===t?void 0:t.hasPremiumPersonally)&&null!=(null===(n=i.tokens)||void 0===n?void 0:n.accessToken)){const t=yield a.TokenService.decodeToken(i.tokens.accessToken);i.profile.hasPremiumPersonally=t.premium,yield this.set(e,i)}})))));const t=yield this.getGlobals();t.stateVersion=o.StateVersion.Three,yield this.set(c,t)}))}migrateStateFrom3To4(){return i(this,void 0,void 0,(function*(){const e=yield this.get(d);yield Promise.all(e.map((e=>i(this,void 0,void 0,(function*(){var t;const n=yield this.get(e);if(null!=(null===(t=null==n?void 0:n.profile)||void 0===t?void 0:t.everBeenUnlocked))return delete n.profile.everBeenUnlocked,this.set(e,n)})))));const t=yield this.getGlobals();t.stateVersion=o.StateVersion.Four,yield this.set(c,t)}))}get options(){return{htmlStorageLocation:r.HtmlStorageLocation.Local}}get(e){return this.storageService.get(e,this.options)}set(e,t){return null==t?this.storageService.remove(e,this.options):this.storageService.save(e,t,this.options)}getGlobals(){return i(this,void 0,void 0,(function*(){return yield this.get(c)}))}getCurrentStateVersion(){var e,t;return i(this,void 0,void 0,(function*(){return null!==(t=null===(e=yield this.getGlobals())||void 0===e?void 0:e.stateVersion)&&void 0!==t?t:o.StateVersion.One}))}}},86257:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SyncService=void 0;const a=n(27605),s=n(82789),l=n(34917),c=n(12835),d=n(8681),p=n(34144),u=n(17835),m=n(10425);class h{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){this.apiService=e,this.settingsService=t,this.folderService=n,this.cipherService=i,this.cryptoService=r,this.collectionService=o,this.messagingService=a,this.policyService=s,this.sendService=l,this.logService=c,this.keyConnectorService=d,this.stateService=p,this.organizationService=u,this.providerService=m,this.logoutCallback=h,this.syncInProgress=!1}getLastSync(){return o(this,void 0,void 0,(function*(){if(null==(yield this.stateService.getUserId()))return null;const e=yield this.stateService.getLastSync();return e?new Date(e):null}))}setLastSync(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setLastSync(e.toJSON(),{userId:t})}))}fullSync(e,t=!1){return o(this,void 0,void 0,(function*(){this.syncStarted();if(!(yield this.stateService.getIsAuthenticated()))return this.syncCompleted(!1);const n=new Date;let i=!1;try{i=yield this.needsSyncing(e)}catch(r){if(t)throw r}if(!i)return yield this.setLastSync(n),this.syncCompleted(!1);try{yield this.apiService.refreshIdentityToken();const e=yield this.apiService.getSync();return yield this.syncProfile(e.profile),yield this.syncFolders(e.folders),yield this.syncCollections(e.collections),yield this.syncCiphers(e.ciphers),yield this.syncSends(e.sends),yield this.syncSettings(e.domains),yield this.syncPolicies(e.policies),yield this.setLastSync(n),this.syncCompleted(!0)}catch(r){if(t)throw r;return this.syncCompleted(!1)}}))}syncUpsertFolder(e,t){return o(this,void 0,void 0,(function*(){if(this.syncStarted(),yield this.stateService.getIsAuthenticated())try{const n=yield this.folderService.get(e.id);if(!t&&null==n||t&&null!=n&&n.revisionDate=e.revisionDate&&(n=!1);let r=!1;if(n&&(t?(n=null!=i,r=!0):null==e.collectionIds||null==e.organizationId?n=null==i:(n=!1,r=!0)),!n&&r&&null!=e.organizationId&&null!=e.collectionIds&&e.collectionIds.length>0){const t=yield this.collectionService.getAll();if(null!=t)for(let i=0;i-1){n=!0;break}}if(n){const t=yield this.apiService.getCipher(e.id);if(null!=t)return yield this.cipherService.upsert(new s.CipherData(t)),this.messagingService.send("syncedUpsertedCipher",{cipherId:e.id}),this.syncCompleted(!0)}}catch(n){if(null!=n&&404===n.statusCode&&t)return yield this.cipherService.delete(e.id),this.messagingService.send("syncedDeletedCipher",{cipherId:e.id}),this.syncCompleted(!0)}return this.syncCompleted(!1)}))}syncDeleteCipher(e){return o(this,void 0,void 0,(function*(){return this.syncStarted(),(yield this.stateService.getIsAuthenticated())?(yield this.cipherService.delete(e.id),this.messagingService.send("syncedDeletedCipher",{cipherId:e.id}),this.syncCompleted(!0)):this.syncCompleted(!1)}))}syncUpsertSend(e,t){return o(this,void 0,void 0,(function*(){if(this.syncStarted(),yield this.stateService.getIsAuthenticated())try{const n=yield this.sendService.get(e.id);if(!t&&null==n||t&&null!=n&&n.revisionDate{n[e.id]=new d.OrganizationData(e)}));const i={};e.providers.forEach((e=>{i[e.id]=new u.ProviderData(e)})),e.providerOrganizations.forEach((e=>{null==n[e.id]&&(n[e.id]=new d.OrganizationData(e),n[e.id].isProviderUser=!0)})),yield this.organizationService.save(n),yield this.providerService.save(i),(yield this.keyConnectorService.userNeedsMigration())?(yield this.keyConnectorService.setConvertAccountRequired(!0),this.messagingService.send("convertAccountToKeyConnector")):this.keyConnectorService.removeConvertAccountRequired()}))}syncFolders(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new c.FolderData(e)})),yield this.folderService.replace(t)}))}syncCollections(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new l.CollectionData(e)})),yield this.collectionService.replace(t)}))}syncCiphers(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new s.CipherData(e)})),yield this.cipherService.replace(t)}))}syncSends(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new m.SendData(e)})),yield this.sendService.replace(t)}))}syncSettings(e){return o(this,void 0,void 0,(function*(){let t=[];return null!=e&&null!=e.equivalentDomains&&(t=t.concat(e.equivalentDomains)),null!=e&&null!=e.globalEquivalentDomains&&e.globalEquivalentDomains.forEach((e=>{e.domains.length>0&&t.push(e.domains)})),this.settingsService.setEquivalentDomains(t)}))}syncPolicies(e){return o(this,void 0,void 0,(function*(){const t={};return null!=e&&e.forEach((e=>{t[e.id]=new p.PolicyData(e)})),yield this.policyService.replace(t)}))}}i([a.sequentialize((()=>"fullSync")),r("design:type",Function),r("design:paramtypes",[Boolean,Object]),r("design:returntype",Promise)],h.prototype,"fullSync",null),t.SyncService=h},7790:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TokenService=void 0;const r=n(82769);class o{constructor(e){this.stateService=e}static decodeToken(e){if(null==e)throw new Error("Token not provided.");const t=e.split(".");if(3!==t.length)throw new Error("JWT must have 3 parts");const n=r.Utils.fromUrlB64ToUtf8(t[1]);if(null==n)throw new Error("Cannot decode the token");return JSON.parse(n)}setTokens(e,t,n){return i(this,void 0,void 0,(function*(){yield this.setToken(e),yield this.setRefreshToken(t),null!=n&&(yield this.setClientId(n[0]),yield this.setClientSecret(n[1]))}))}setClientId(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setApiKeyClientId(e)}))}getClientId(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getApiKeyClientId()}))}setClientSecret(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setApiKeyClientSecret(e)}))}getClientSecret(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getApiKeyClientSecret()}))}setToken(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setAccessToken(e)}))}getToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getAccessToken()}))}setRefreshToken(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setRefreshToken(e)}))}getRefreshToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getRefreshToken()}))}setTwoFactorToken(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setTwoFactorToken(e.twoFactorToken)}))}getTwoFactorToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getTwoFactorToken()}))}clearTwoFactorToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.setTwoFactorToken(null)}))}clearToken(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setAccessToken(null,{userId:e}),yield this.stateService.setRefreshToken(null,{userId:e}),yield this.stateService.setApiKeyClientId(null,{userId:e}),yield this.stateService.setApiKeyClientSecret(null,{userId:e})}))}decodeToken(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getDecodedToken();if(null===e&&null!=t)return t;if(null==(e=null!=e?e:yield this.stateService.getAccessToken()))throw new Error("Token not found.");return o.decodeToken(e)}))}getTokenExpirationDate(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.exp)return null;const t=new Date(0);return t.setUTCSeconds(e.exp),t}))}tokenSecondsRemaining(e=0){return i(this,void 0,void 0,(function*(){const t=yield this.getTokenExpirationDate();if(null==t)return 0;const n=t.valueOf()-((new Date).valueOf()+1e3*e);return Math.round(n/1e3)}))}tokenNeedsRefresh(e=5){return i(this,void 0,void 0,(function*(){return(yield this.tokenSecondsRemaining())<60*e}))}getUserId(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.sub)throw new Error("No user id found");return e.sub}))}getEmail(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.email)throw new Error("No email found");return e.email}))}getEmailVerified(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.email_verified)throw new Error("No email verification found");return e.email_verified}))}getName(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return void 0===e.name?null:e.name}))}getPremium(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return void 0!==e.premium&&e.premium}))}getIssuer(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.iss)throw new Error("No issuer found");return e.iss}))}getIsExternal(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return Array.isArray(e.amr)&&e.amr.includes("external")}))}}t.TokenService=o},87703:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TotpService=void 0;const r=n(82769),o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a="23456789BCDFGHJKMNPQRTVWXY";t.TotpService=class{constructor(e,t,n){this.cryptoFunctionService=e,this.logService=t,this.stateService=n}getCode(e){return i(this,void 0,void 0,(function*(){if(null==e)return null;let t=30,n="sha1",i=6,o=e;const s=0===e.toLowerCase().indexOf("otpauth://"),l=!s&&0===e.toLowerCase().indexOf("steam://");if(s){const a=r.Utils.getQueryParams(e);if(a.has("digits")&&null!=a.get("digits"))try{const e=parseInt(a.get("digits").trim(),null);e>10?i=10:e>0&&(i=e)}catch(f){this.logService.error("Invalid digits param.")}if(a.has("period")&&null!=a.get("period"))try{const e=parseInt(a.get("period").trim(),null);e>0&&(t=e)}catch(y){this.logService.error("Invalid period param.")}if(a.has("secret")&&null!=a.get("secret")&&(o=a.get("secret")),a.has("algorithm")&&null!=a.get("algorithm")){const e=a.get("algorithm").toLowerCase();"sha1"!==e&&"sha256"!==e&&"sha512"!==e||(n=e)}}else l&&(o=e.substr("steam://".length),i=5);const c=Math.round((new Date).getTime()/1e3),d=this.leftPad(this.decToHex(Math.floor(c/t)),16,"0"),p=r.Utils.fromHexToArray(d),u=this.b32ToBytes(o);if(!u.length||!p.length)return null;const m=yield this.sign(u,p,n);if(0===m.length)return null;const h=15&m[m.length-1],v=(127&m[h])<<24|(255&m[h+1])<<16|(255&m[h+2])<<8|255&m[h+3];let g="";if(l){let e=2147483647&v;for(let t=0;t=e.length&&(e=Array(t+1-e.length).join(n)+e),e}decToHex(e){return(e<15.5?"0":"")+Math.round(e).toString(16)}b32ToHex(e){e=e.toUpperCase();let t="";for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorService=t.TwoFactorProviders=void 0;const i=n(97374);t.TwoFactorProviders={[i.TwoFactorProviderType.Authenticator]:{type:i.TwoFactorProviderType.Authenticator,name:null,description:null,priority:1,sort:1,premium:!1},[i.TwoFactorProviderType.Yubikey]:{type:i.TwoFactorProviderType.Yubikey,name:null,description:null,priority:3,sort:2,premium:!0},[i.TwoFactorProviderType.Duo]:{type:i.TwoFactorProviderType.Duo,name:"Duo",description:null,priority:2,sort:3,premium:!0},[i.TwoFactorProviderType.OrganizationDuo]:{type:i.TwoFactorProviderType.OrganizationDuo,name:"Duo (Organization)",description:null,priority:10,sort:4,premium:!1},[i.TwoFactorProviderType.Email]:{type:i.TwoFactorProviderType.Email,name:null,description:null,priority:0,sort:6,premium:!1},[i.TwoFactorProviderType.WebAuthn]:{type:i.TwoFactorProviderType.WebAuthn,name:null,description:null,priority:4,sort:5,premium:!0}};t.TwoFactorService=class{constructor(e,t){this.i18nService=e,this.platformUtilsService=t,this.selectedTwoFactorProviderType=null}init(){t.TwoFactorProviders[i.TwoFactorProviderType.Email].name=this.i18nService.t("emailTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Email].description=this.i18nService.t("emailDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator].name=this.i18nService.t("authenticatorAppTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator].description=this.i18nService.t("authenticatorAppDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Duo].description=this.i18nService.t("duoDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo].name="Duo ("+this.i18nService.t("organization")+")",t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo].description=this.i18nService.t("duoOrganizationDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn].name=this.i18nService.t("webAuthnTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn].description=this.i18nService.t("webAuthnDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey].name=this.i18nService.t("yubiKeyTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey].description=this.i18nService.t("yubiKeyDesc")}getSupportedProviders(e){const n=[];return null==this.twoFactorProvidersData||(this.twoFactorProvidersData.has(i.TwoFactorProviderType.OrganizationDuo)&&this.platformUtilsService.supportsDuo()&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Authenticator)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Yubikey)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Duo)&&this.platformUtilsService.supportsDuo()&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Duo]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.WebAuthn)&&this.platformUtilsService.supportsWebAuthn(e)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Email)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Email])),n}getDefaultProvider(e){if(null==this.twoFactorProvidersData)return null;if(null!=this.selectedTwoFactorProviderType&&this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType))return this.selectedTwoFactorProviderType;let n=null,r=-1;return this.twoFactorProvidersData.forEach(((o,a)=>{const s=t.TwoFactorProviders[a];if(null!=s&&s.priority>r){if(a===i.TwoFactorProviderType.WebAuthn&&!e)return;n=a,r=s.priority}})),n}setSelectedProvider(e){this.selectedTwoFactorProviderType=e}clearSelectedProvider(){this.selectedTwoFactorProviderType=null}setProviders(e){this.twoFactorProvidersData=e.twoFactorProviders2}clearProviders(){this.twoFactorProvidersData=null}getProviders(){return this.twoFactorProvidersData}}},26981:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationService=void 0;const r=n(44254),o=n(12680),a=n(36119);t.UserVerificationService=class{constructor(e,t,n){this.cryptoService=e,this.i18nService=t,this.apiService=n}buildRequest(e,t,n){return i(this,void 0,void 0,(function*(){this.validateInput(e);const i=null!=t?new t:new a.SecretVerificationRequest;return e.type===r.VerificationType.OTP?i.otp=e.secret:i.masterPasswordHash=n?e.secret:yield this.cryptoService.hashPassword(e.secret,null),i}))}verifyUser(e){return i(this,void 0,void 0,(function*(){if(this.validateInput(e),e.type===r.VerificationType.OTP){const n=new o.VerifyOTPRequest(e.secret);try{yield this.apiService.postAccountVerifyOTP(n)}catch(t){throw new Error(this.i18nService.t("invalidVerificationCode"))}}else{if(!(yield this.cryptoService.compareAndUpdateKeyHash(e.secret,null)))throw new Error(this.i18nService.t("invalidMasterPassword"))}return!0}))}requestOTP(){return i(this,void 0,void 0,(function*(){yield this.apiService.postAccountRequestOTP()}))}validateInput(e){if(null==(null==e?void 0:e.secret)||""===e.secret)throw e.type===r.VerificationType.OTP?new Error(this.i18nService.t("verificationCodeRequired")):new Error(this.i18nService.t("masterPassRequired"))}}},42133:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UsernameGenerationService=void 0;const r=n(40596),o={type:"word",wordCapitalize:!0,wordIncludeNumber:!0,subaddressType:"random",catchallType:"random",forwardedService:"simplelogin",forwardedAnonAddyDomain:"anonaddy.me"};t.UsernameGenerationService=class{constructor(e,t,n){this.cryptoService=e,this.stateService=t,this.apiService=n}generateUsername(e){return"catchall"===e.type?this.generateCatchall(e):"subaddress"===e.type?this.generateSubaddress(e):"forwarded"===e.type?this.generateForwarded(e):this.generateWord(e)}generateWord(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);null==t.wordCapitalize&&(t.wordCapitalize=!0),null==t.wordIncludeNumber&&(t.wordIncludeNumber=!0);const n=yield this.cryptoService.randomNumber(0,r.EEFLongWordList.length-1);let i=r.EEFLongWordList[n];if(t.wordCapitalize&&(i=i.charAt(0).toUpperCase()+i.slice(1)),t.wordIncludeNumber){const e=yield this.cryptoService.randomNumber(1,9999);i+=this.zeroPad(e.toString(),4)}return i}))}generateSubaddress(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e),n=t.subaddressEmail;if(null==n||n.length<3)return t.subaddressEmail;const i=n.indexOf("@");if(i<1||i>=n.length-1)return n;null==t.subaddressType&&(t.subaddressType="random");const r=n.substr(0,i),a=n.substr(i+1,n.length);let s="";return"random"===t.subaddressType?s=yield this.randomString(8):"website-name"===t.subaddressType&&(s=t.website),r+"+"+s+"@"+a}))}generateCatchall(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);if(null==t.catchallDomain||""===t.catchallDomain)return null;null==t.catchallType&&(t.catchallType="random");let n="";return"random"===t.catchallType?n=yield this.randomString(8):"website-name"===t.catchallType&&(n=t.website),n+"@"+t.catchallDomain}))}generateForwarded(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);return null==t.forwardedService?null:"simplelogin"===t.forwardedService?null==t.forwardedSimpleLoginApiKey||""===t.forwardedSimpleLoginApiKey?null:this.generateSimpleLoginAlias(t.forwardedSimpleLoginApiKey,t.website):"anonaddy"===t.forwardedService?null==t.forwardedAnonAddyApiToken||""===t.forwardedAnonAddyApiToken||null==t.forwardedAnonAddyDomain||""==t.forwardedAnonAddyDomain?null:this.generateAnonAddyAlias(t.forwardedAnonAddyApiToken,t.forwardedAnonAddyDomain,t.website):"firefoxrelay"===t.forwardedService?null==t.forwardedFirefoxApiToken||""===t.forwardedFirefoxApiToken?null:this.generateFirefoxRelayAlias(t.forwardedFirefoxApiToken,t.website):null}))}getOptions(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getUsernameGenerationOptions();return e=null==e?Object.assign({},o):Object.assign({},o,e),yield this.stateService.setUsernameGenerationOptions(e),e}))}saveOptions(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setUsernameGenerationOptions(e)}))}randomString(e){return i(this,void 0,void 0,(function*(){let t="";const n="abcdefghijklmnopqrstuvwxyz1234567890";for(let i=0;i=t?e:new Array(t-e.length+1).join("0")+e}generateSimpleLoginAlias(e,t){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid SimpleLogin API key.";const n={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authentication:e,"Content-Type":"application/json"})};let i="https://app.simplelogin.io/api/alias/random/new";null!=t&&(i+="?hostname="+t),n.body=JSON.stringify({note:(null!=t?"Website: "+t+". ":"")+"Generated by Bitwarden."});const r=new Request(i,n),o=yield this.apiService.nativeFetch(r);if(200===o.status||201===o.status){return(yield o.json()).alias}if(401===o.status)throw"Invalid SimpleLogin API key.";try{const e=yield o.json();if(null!=(null==e?void 0:e.error))throw"SimpleLogin error:"+e.error}catch(a){}throw"Unknown SimpleLogin error occurred."}))}generateAnonAddyAlias(e,t,n){var r;return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid AnonAddy API token.";const i={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authorization:"Bearer "+e,"Content-Type":"application/json"})};i.body=JSON.stringify({domain:t,description:(null!=n?"Website: "+n+". ":"")+"Generated by Bitwarden."});const o=new Request("https://app.anonaddy.com/api/v1/aliases",i),a=yield this.apiService.nativeFetch(o);if(200===a.status||201===a.status){const e=yield a.json();return null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.email}if(401===a.status)throw"Invalid AnonAddy API token.";throw"Unknown AnonAddy error occurred."}))}generateFirefoxRelayAlias(e,t){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid Firefox Relay API token.";const n={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authorization:"Token "+e,"Content-Type":"application/json"})};n.body=JSON.stringify({enabled:!0,generated_for:t,description:(null!=t?t+" - ":"")+"Generated by Bitwarden."});const i=new Request("https://relay.firefox.com/api/v1/relayaddresses/",n),r=yield this.apiService.nativeFetch(i);if(200===r.status||201===r.status){const e=yield r.json();return null==e?void 0:e.full_address}if(401===r.status)throw"Invalid Firefox Relay API token.";throw"Unknown Firefox Relay error occurred."}))}}},44988:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutService=void 0;const r=n(72440),o=n(49906);t.VaultTimeoutService=class{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u=null,m=null){this.cipherService=e,this.folderService=t,this.collectionService=n,this.cryptoService=i,this.platformUtilsService=r,this.messagingService=o,this.searchService=a,this.tokenService=s,this.policyService=l,this.keyConnectorService=c,this.stateService=d,this.authService=p,this.lockedCallback=u,this.loggedOutCallback=m,this.inited=!1}init(e){this.inited||(this.inited=!0,e&&this.startCheck())}startCheck(){this.checkVaultTimeout(),setInterval((()=>this.checkVaultTimeout()),1e4)}checkVaultTimeout(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.isViewOpen()))for(const e in this.stateService.accounts.getValue())null!=e&&(yield this.shouldLock(e))&&(yield this.executeTimeoutAction(e))}))}lock(e=!1,t){return i(this,void 0,void 0,(function*(){if(yield this.stateService.getIsAuthenticated({userId:t})){if(yield this.keyConnectorService.getUsesKeyConnector()){const e=yield this.isPinLockSet();e[0]&&null!=(yield this.stateService.getDecryptedPinProtected())||e[1]||(yield this.isBiometricLockSet())||(yield this.logOut(t))}null!=t&&t!==(yield this.stateService.getUserId())||this.searchService.clearIndex(),yield this.stateService.setEverBeenUnlocked(!0,{userId:t}),yield this.stateService.setBiometricLocked(!0,{userId:t}),yield this.stateService.setCryptoMasterKeyAuto(null,{userId:t}),yield this.cryptoService.clearKey(!1,t),yield this.cryptoService.clearOrgKeys(!0,t),yield this.cryptoService.clearKeyPair(!0,t),yield this.cryptoService.clearEncKey(!0,t),yield this.folderService.clearCache(t),yield this.cipherService.clearCache(t),yield this.collectionService.clearCache(t),this.messagingService.send("locked",{userId:t}),null!=this.lockedCallback&&(yield this.lockedCallback(t))}}))}logOut(e){return i(this,void 0,void 0,(function*(){null!=this.loggedOutCallback&&(yield this.loggedOutCallback(!1,e))}))}setVaultTimeoutOptions(e,t){return i(this,void 0,void 0,(function*(){yield this.stateService.setVaultTimeout(e);const n=yield this.tokenService.getToken(),i=yield this.tokenService.getRefreshToken(),r=yield this.tokenService.getClientId(),o=yield this.tokenService.getClientSecret(),a=yield this.stateService.getVaultTimeoutAction();null==e&&0!==e||"logOut"!==t||t===a||(yield this.tokenService.clearToken()),yield this.stateService.setVaultTimeoutAction(t),yield this.tokenService.setToken(n),yield this.tokenService.setRefreshToken(i),yield this.tokenService.setClientId(r),yield this.tokenService.setClientSecret(o),yield this.cryptoService.toggleKey()}))}isPinLockSet(){return i(this,void 0,void 0,(function*(){return[null!=(yield this.stateService.getProtectedPin()),null!=(yield this.stateService.getEncryptedPinProtected())]}))}isBiometricLockSet(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getBiometricUnlock()}))}getVaultTimeout(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getVaultTimeout({userId:e});if(yield this.policyService.policyAppliesToUser(o.PolicyType.MaximumVaultTimeout,null,e)){const n=yield this.policyService.getAll(o.PolicyType.MaximumVaultTimeout,e);let i=Math.min(t,n[0].data.minutes);return(null==t||i<0)&&(i=n[0].data.minutes),t!==i&&(yield this.stateService.setVaultTimeout(i,{userId:e})),i}return t}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEverBeenUnlocked(!1,{userId:e}),yield this.stateService.setDecryptedPinProtected(null,{userId:e}),yield this.stateService.setProtectedPin(null,{userId:e})}))}shouldLock(e){return i(this,void 0,void 0,(function*(){const t=yield this.authService.getAuthStatus(e);if(t===r.AuthenticationStatus.Locked||t===r.AuthenticationStatus.LoggedOut)return!1;const n=yield this.getVaultTimeout(e);if(null==n||n<0)return!1;const i=yield this.stateService.getLastActive({userId:e});if(null==i)return!1;const o=60*n;return((new Date).getTime()-i)/1e3>=o}))}executeTimeoutAction(e){return i(this,void 0,void 0,(function*(){"logOut"===(yield this.stateService.getVaultTimeoutAction({userId:e}))?yield this.logOut(e):yield this.lock(!0,e)}))}}},75408:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebCryptoFunctionService=void 0;const r=n(22079),o=n(82769),a=n(15755);t.WebCryptoFunctionService=class{constructor(e){this.crypto=void 0!==e.crypto?e.crypto:null,this.subtle=this.crypto&&void 0!==e.crypto.subtle?e.crypto.subtle:null}pbkdf2(e,t,n,r){return i(this,void 0,void 0,(function*(){const i="sha256"===n?256:512,o=this.toBuf(e),a={name:"PBKDF2",salt:this.toBuf(t),iterations:r,hash:{name:this.toWebCryptoAlgorithm(n)}},s=yield this.subtle.importKey("raw",o,{name:"PBKDF2"},!1,["deriveBits"]);return yield this.subtle.deriveBits(a,s,i)}))}hkdf(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i={name:"HKDF",salt:this.toBuf(t),info:this.toBuf(n),hash:{name:this.toWebCryptoAlgorithm(o)}},a=yield this.subtle.importKey("raw",e,{name:"HKDF"},!1,["deriveBits"]);return yield this.subtle.deriveBits(i,a,8*r)}))}hkdfExpand(e,t,n,r){return i(this,void 0,void 0,(function*(){const i="sha256"===r?32:64;if(n>255*i)throw new Error("outputByteSize is too large.");if(new Uint8Array(e).length=n)break}return d.slice(0,n).buffer}))}hash(e,t){return i(this,void 0,void 0,(function*(){if("md5"===t){const n="md5"===t?r.md.md5.create():r.md.sha1.create(),i=this.toByteString(e);return n.update(i,"raw"),o.Utils.fromByteStringToArray(n.digest().data).buffer}const n=this.toBuf(e);return yield this.subtle.digest({name:this.toWebCryptoAlgorithm(t)},n)}))}hmac(e,t,n){return i(this,void 0,void 0,(function*(){const i={name:"HMAC",hash:{name:this.toWebCryptoAlgorithm(n)}},r=yield this.subtle.importKey("raw",t,i,!1,["sign"]);return yield this.subtle.sign(i,r,e)}))}compare(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.randomBytes(32),i={name:"HMAC",hash:{name:"SHA-256"}},r=yield this.subtle.importKey("raw",n,i,!1,["sign"]),o=yield this.subtle.sign(i,r,e),a=yield this.subtle.sign(i,r,t);if(o.byteLength!==a.byteLength)return!1;const s=new Uint8Array(o),l=new Uint8Array(a);for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BadgeComponent=void 0;n(32621);const i=n(32621),r={primary:["tw-bg-primary-500"],secondary:["tw-bg-text-muted"],success:["tw-bg-success-500"],danger:["tw-bg-danger-500"],warning:["tw-bg-warning-500"],info:["tw-bg-info-500"]},o={primary:["hover:tw-bg-primary-700"],secondary:["hover:tw-bg-secondary-700"],success:["hover:tw-bg-success-700"],danger:["hover:tw-bg-danger-700"],warning:["hover:tw-bg-warning-700"],info:["hover:tw-bg-info-700"]};class a{constructor(e){var t;this.el=e,this.classList="",this.badgeType="primary",this.isSpan=!1,this.isSpan="SPAN"==(null===(t=null==e?void 0:e.nativeElement)||void 0===t?void 0:t.nodeName)}ngOnInit(){this.classList=this.classes.join(" ")}ngOnChanges(){this.ngOnInit()}get classes(){return["tw-inline-block","tw-py-1","tw-px-1.5","tw-font-bold","tw-leading-none","tw-text-center","!tw-text-contrast","tw-rounded","tw-border-none","tw-box-border","tw-whitespace-no-wrap","tw-text-xs","hover:tw-no-underline","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700"].concat(r[this.badgeType]).concat(this.isSpan?[]:o[this.badgeType])}}t.BadgeComponent=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵdirectiveInject(i.ElementRef))},a.ɵdir=i.ɵɵdefineDirective({type:a,selectors:[["span","bit-badge",""],["a","bit-badge",""],["button","bit-badge",""]],hostVars:2,hostBindings:function(e,t){2&e&&i.ɵɵclassMap(t.classList)},inputs:{classList:["class","classList"],badgeType:"badgeType"},features:[i.ɵɵNgOnChangesFeature]})},41889:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BadgeModule=void 0;const i=n(57490),r=n(32621);class o{}t.BadgeModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},97407:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(25108),t),r(n(41889),t)},82768:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BannerComponent=void 0;const i=n(32621),r=n(32621),o=n(57490);function a(e,t){if(1&e&&r.ɵɵelement(0,"i",5),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("ngClass",e.icon)}}function s(e,t){1&e&&r.ɵɵelement(0,"i",6)}const l={premium:"bwi-star",info:"bwi-info-circle",warning:"bwi-exclamation-triangle",danger:"bwi-error"};class c{constructor(){this.bannerType="info",this.useAlertRole=!0,this.onClose=new i.EventEmitter}ngOnInit(){var e;null!==(e=this.icon)&&void 0!==e||(this.icon=l[this.bannerType])}get bannerClass(){switch(this.bannerType){case"danger":return"tw-bg-danger-500";case"info":return"tw-bg-info-500";case"premium":return"tw-bg-success-500";case"warning":return"tw-bg-warning-500"}}}t.BannerComponent=c,c.ɵfac=function(e){return new(e||c)},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["bit-banner"]],inputs:{bannerType:"bannerType",icon:"icon",useAlertRole:"useAlertRole"},outputs:{onClose:"onClose"},ngContentSelectors:["*"],decls:15,vars:5,consts:[[1,"tw-py-2.5","tw-px-4","tw-text-contrast","tw-flex","tw-gap-2","tw-items-center",3,"ngClass"],["class","bwi tw-align-middle","aria-hidden","true",3,"ngClass",4,"ngIf"],[1,"tw-text-base","tw-grow"],[1,"tw-border-0","tw-bg-transparent","tw-text-contrast","tw-p-0",3,"click"],["class","bwi bwi-close tw-text-sm","aria-hidden","true",4,"ngIf"],["aria-hidden","true",1,"bwi","tw-align-middle",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-close","tw-text-sm"]],template:function(e,t){1&e&&(r.ɵɵprojectionDef(),r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,a,1,1,"i",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",2),r.ɵɵtext(5,"\n "),r.ɵɵprojection(6),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"button",3),r.ɵɵlistener("click",(function(){return t.onClose.emit()})),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,s,1,0,"i",4),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵproperty("ngClass",t.bannerClass),r.ɵɵattribute("role",t.useAlertRole?"status":null)("aria-live",t.useAlertRole?"polite":null),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.icon),r.ɵɵadvance(9),r.ɵɵproperty("ngIf",t.icon))},directives:[o.NgClass,o.NgIf],encapsulation:2})},84352:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BannerModule=void 0;const i=n(57490),r=n(32621);class o{}t.BannerModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},63229:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(82768),t),r(n(84352),t)},52767:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonComponent=void 0;const i=n(32621),r={primary:["tw-border-primary-500","tw-bg-primary-500","!tw-text-contrast","hover:tw-bg-primary-700","hover:tw-border-primary-700","focus:tw-bg-primary-700","focus:tw-border-primary-700"].join(" "),secondary:["tw-bg-transparent","tw-border-text-muted","!tw-text-muted","hover:tw-bg-secondary-500","hover:tw-border-secondary-500","hover:!tw-text-contrast","focus:tw-bg-secondary-500","focus:tw-border-secondary-500","focus:!tw-text-contrast"].join(" "),danger:["tw-bg-transparent","tw-border-danger-500","!tw-text-danger","hover:tw-bg-danger-500","hover:tw-border-danger-500","hover:!tw-text-contrast","focus:tw-bg-danger-500","focus:tw-border-danger-500","focus:!tw-text-contrast"].join(" ")};class o{constructor(){this.classList="",this.buttonType="secondary",this.block=!1}ngOnInit(){this.classList=this.classes.join(" ")}ngOnChanges(){this.ngOnInit()}get classes(){var e;return["tw-font-semibold","tw-py-1.5","tw-px-3","tw-rounded","tw-transition","tw-border","tw-border-solid","tw-text-center","hover:tw-no-underline","disabled:tw-bg-secondary-100","disabled:tw-border-secondary-100","disabled:!tw-text-main","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700",this.block?"tw-w-full tw-block":"tw-inline-block",r[null!==(e=this.buttonType)&&void 0!==e?e:"secondary"]]}}t.ButtonComponent=o,o.ɵfac=function(e){return new(e||o)},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["button","bit-button",""],["a","bit-button",""]],hostVars:2,hostBindings:function(e,t){2&e&&i.ɵɵclassMap(t.classList)},inputs:{classList:"classList",buttonType:"buttonType",block:"block"},features:[i.ɵɵNgOnChangesFeature]})},10549:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonModule=void 0;const i=n(57490),r=n(32621);class o{}t.ButtonModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},47236:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(52767),t),r(n(10549),t)},20138:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutComponent=void 0;n(51554);const i=n(32621),r=n(51554),o=n(57490);function a(e,t){if(1&e&&i.ɵɵelement(0,"i",4),2&e){const e=i.ɵɵnextContext(2);i.ɵɵclassMapInterpolate1("bwi ",e.icon,"")}}function s(e,t){if(1&e&&(i.ɵɵelementStart(0,"h3",2),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,a,1,3,"i",3),i.ɵɵtext(3),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵproperty("ngClass",e.headerClass),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",e.icon),i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.title,"\n ")}}const l={success:"bwi-check",info:"bwi-info-circle",warning:"bwi-exclamation-triangle",danger:"bwi-error"},c={warning:"warning",danger:"error"};class d{constructor(e){this.i18nService=e,this.type="info",this.useAlertRole=!1}ngOnInit(){var e;null!==(e=this.icon)&&void 0!==e||(this.icon=l[this.type]),null==this.title&&null!=c[this.type]&&(this.title=this.i18nService.t(c[this.type]))}get calloutClass(){switch(this.type){case"danger":return"tw-border-l-danger-500";case"info":return"tw-border-l-info-500";case"success":return"tw-border-l-success-500";case"warning":return"tw-border-l-warning-500"}}get headerClass(){switch(this.type){case"danger":return"!tw-text-danger";case"info":return"!tw-text-info";case"success":return"!tw-text-success";case"warning":return"!tw-text-warning"}}}t.CalloutComponent=d,d.ɵfac=function(e){return new(e||d)(i.ɵɵdirectiveInject(r.I18nService))},d.ɵcmp=i.ɵɵdefineComponent({type:d,selectors:[["bit-callout"]],inputs:{type:"type",icon:"icon",title:"title",useAlertRole:"useAlertRole"},ngContentSelectors:["*"],decls:7,vars:2,consts:[[1,"tw-py-3","tw-px-5","tw-mb-4","tw-leading-5","tw-rounded","tw-bg-background-alt","tw-border","tw-border-secondary-300","tw-border-solid","tw-box-border","tw-border-l-8","tw-text-main",3,"ngClass"],["class","tw-mt-0 tw-mb-2 tw-text-base tw-font-bold tw-uppercase",3,"ngClass",4,"ngIf"],[1,"tw-mt-0","tw-mb-2","tw-text-base","tw-font-bold","tw-uppercase",3,"ngClass"],["aria-hidden","true",3,"class",4,"ngIf"],["aria-hidden","true"]],template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,s,4,3,"h3",1),i.ɵɵtext(3,"\n "),i.ɵɵprojection(4),i.ɵɵtext(5,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(6,"\n")),2&e&&(i.ɵɵproperty("ngClass",t.calloutClass),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.title))},directives:[o.NgClass,o.NgIf],encapsulation:2})},3509:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutModule=void 0;const i=n(57490),r=n(32621);class o{}t.CalloutModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},69297:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(3509),t),r(n(20138),t)},30202:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(97407),t),r(n(63229),t),r(n(47236),t),r(n(69297),t),r(n(79762),t)},79762:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(59912),t),r(n(44653),t),r(n(6373),t),r(n(62985),t),r(n(37342),t)},37342:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuDividerComponent=void 0;const i=n(32621);class r{}t.MenuDividerComponent=r,r.ɵfac=function(e){return new(e||r)},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["bit-menu-divider"]],decls:2,vars:0,consts:[["role","separator",1,"tw-border-solid","tw-border-0","tw-border-t","tw-border-t-secondary-500","tw-my-2"]],template:function(e,t){1&e&&(i.ɵɵelement(0,"div",0),i.ɵɵtext(1,"\n"))},encapsulation:2})},62985:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuItemComponent=void 0;n(32621);const i=n(32621);class r{constructor(e){this.elementRef=e,this.classList=["tw-block","tw-py-1","tw-px-4","!tw-text-main","!tw-no-underline","tw-cursor-pointer","tw-border-none","tw-bg-background","tw-text-left","hover:tw-bg-secondary-100","focus:tw-bg-secondary-100","focus:tw-z-50","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700","active:!tw-ring-0","active:!tw-ring-offset-0"].join(" "),this.role="menuitem",this.tabIndex="-1"}focus(){this.elementRef.nativeElement.focus()}}t.MenuItemComponent=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["","bit-menu-item",""]],hostVars:4,hostBindings:function(e,t){2&e&&(i.ɵɵhostProperty("tabIndex",t.tabIndex),i.ɵɵattribute("role",t.role),i.ɵɵclassMap(t.classList))},attrs:["bit-menu-item",""],ngContentSelectors:["*"],decls:1,vars:0,template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵprojection(0))},encapsulation:2})},6373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuTriggerForDirective=void 0;n(2336);const i=n(80872),r=(n(32621),n(14857)),o=(n(44653),n(32621)),a=n(2336);class s{constructor(e,t,n){this.elementRef=e,this.viewContainerRef=t,this.overlay=n,this.isOpen=!1,this.hasPopup="menu",this.role="button",this.defaultMenuConfig={panelClass:"bit-menu-panel",hasBackdrop:!0,backdropClass:"cdk-overlay-transparent-backdrop",scrollStrategy:this.overlay.scrollStrategies.reposition(),positionStrategy:this.overlay.position().flexibleConnectedTo(this.elementRef).withPositions([{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}]).withLockedPosition(!0).withFlexibleDimensions(!1).withPush(!1)}}toggleMenu(){this.isOpen?this.destroyMenu():this.openMenu()}ngOnDestroy(){this.disposeAll()}openMenu(){if(null==this.menu)throw new Error("Cannot find bit-menu element");this.isOpen=!0,this.overlayRef=this.overlay.create(this.defaultMenuConfig);const e=new i.TemplatePortal(this.menu.templateRef,this.viewContainerRef);this.overlayRef.attach(e),this.closedEventsSub=this.getClosedEvents().subscribe((e=>{"Tab"===(null==e?void 0:e.key)&&this.elementRef.nativeElement.focus(),this.destroyMenu()})),this.keyDownEventsSub=this.overlayRef.keydownEvents().subscribe((e=>this.menu.keyManager.onKeydown(e)))}destroyMenu(){null!=this.overlayRef&&this.isOpen&&(this.isOpen=!1,this.disposeAll())}getClosedEvents(){const e=this.overlayRef.detachments(),t=this.overlayRef.keydownEvents().pipe(r.filter((e=>"Escape"===e.key||"Tab"===e.key))),n=this.overlayRef.backdropClick(),i=this.menu.closed;return e.pipe(r.mergeWith(t,n,i))}disposeAll(){var e,t,n;null===(e=this.closedEventsSub)||void 0===e||e.unsubscribe(),null===(t=this.overlayRef)||void 0===t||t.dispose(),null===(n=this.keyDownEventsSub)||void 0===n||n.unsubscribe()}}t.MenuTriggerForDirective=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.ViewContainerRef),o.ɵɵdirectiveInject(a.Overlay))},s.ɵdir=o.ɵɵdefineDirective({type:s,selectors:[["","bitMenuTriggerFor",""]],hostVars:3,hostBindings:function(e,t){1&e&&o.ɵɵlistener("click",(function(){return t.toggleMenu()})),2&e&&o.ɵɵattribute("aria-expanded",t.isOpen)("aria-haspopup",t.hasPopup)("role",t.role)},inputs:{menu:["bitMenuTriggerFor","menu"]}})},44653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuComponent=void 0;const i=n(46915),r=n(32621),o=n(62985),a=n(32621);function s(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"div",0),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().closed.emit()})),a.ɵɵtext(2,"\n "),a.ɵɵprojection(3),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n")}}class l{constructor(){this.closed=new r.EventEmitter}ngAfterContentInit(){this.keyManager=new i.FocusKeyManager(this.menuItems).withWrap()}}t.MenuComponent=l,l.ɵfac=function(e){return new(e||l)},l.ɵcmp=a.ɵɵdefineComponent({type:l,selectors:[["bit-menu"]],contentQueries:function(e,t,n){if(1&e&&a.ɵɵcontentQuery(n,o.MenuItemComponent,5),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.menuItems=e)}},viewQuery:function(e,t){if(1&e&&a.ɵɵviewQuery(r.TemplateRef,5),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.templateRef=e.first)}},outputs:{closed:"closed"},exportAs:["menuComponent"],ngContentSelectors:["*"],decls:2,vars:0,consts:[["role","menu",1,"tw-flex","tw-flex-col","tw-bg-background","tw-border","tw-border-solid","tw-rounded","tw-border-secondary-500","tw-bg-clip-padding","tw-py-2","tw-shrink-0",3,"click"]],template:function(e,t){1&e&&(a.ɵɵprojectionDef(),a.ɵɵtemplate(0,s,6,0,"ng-template"),a.ɵɵtext(1,"\n"))},encapsulation:2})},59912:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuModule=void 0;const i=n(2336),r=n(57490),o=n(32621);class a{}t.MenuModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[r.CommonModule,i.OverlayModule]]})},15156:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const i=n(73569);class r extends i.StateService{}t.StateService=r},33642:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptEmergencyComponent=void 0;n(68012),n(91674),n(51554),n(73828),n(73569);const r=n(51128),o=n(50009),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(91674),p=n(73569),u=n(57490),m=n(99729);function h(e,t){1&e&&(a.ɵɵelementStart(0,"div",2),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",3),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",4),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",5),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",6),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))}const v=function(e){return{email:e}};function g(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",8),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",9),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",10),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",11),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",12),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"p",4),a.ɵɵtext(15),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"p"),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelement(21,"hr"),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"div",13),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"a",14),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"a",15),a.ɵɵtext(30),a.ɵɵpipe(31,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,7,"emergencyAccess")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",e.name,"\n "),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(19,9,"acceptEmergencyAccess")),a.ɵɵadvance(7),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(15,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(27,11,"logIn"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(17,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(31,13,"createAccount"),"\n ")}}class f extends o.BaseAcceptComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.apiService=r,this.requiredParameters=["id","name","email","token"],this.failedShortMessage="emergencyInviteAcceptFailedShort",this.failedMessage="emergencyInviteAcceptFailed"}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new r.EmergencyAccessAcceptRequest;t.token=e.token,this.actionPromise=this.apiService.postEmergencyAccessAccept(e.id,t),yield this.actionPromise,this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("emergencyInviteAcceptedDesc"),{timeout:1e4}),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.name=e.name,null!=this.name&&(this.name=this.name.replace(/\+/g," "))}))}}t.AcceptEmergencyComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.StateService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["app-accept-emergency"]],features:[a.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,h,17,6,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,g,38,19,"div",1),a.ɵɵtext(3,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[u.NgIf,s.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},4802:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptOrganizationComponent=void 0;n(68012),n(91674),n(85714),n(51554),n(36631),n(73828),n(62166),n(73569);const r=n(82769),o=n(1992),a=n(27784),s=n(50009),l=n(32621),c=n(68012),d=n(73828),p=n(51554),u=n(91674),m=n(73569),h=n(85714),v=n(62166),g=n(36631),f=n(57490),y=n(99729);function x(e,t){1&e&&(l.ɵɵelementStart(0,"div",2),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div"),l.ɵɵtext(3,"\n "),l.ɵɵelement(4,"img",3),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"p",4),l.ɵɵtext(7,"\n "),l.ɵɵelement(8,"i",5),l.ɵɵpipe(9,"i18n"),l.ɵɵtext(10,"\n "),l.ɵɵelementStart(11,"span",6),l.ɵɵtext(12),l.ɵɵpipe(13,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(8),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(9,2,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(13,4,"loading")))}const S=function(e){return{email:e}};function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",7),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",8),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",9),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"p",10),l.ɵɵtext(7),l.ɵɵpipe(8,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"div",11),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"div",12),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"p",4),l.ɵɵtext(15),l.ɵɵelementStart(16,"strong",13),l.ɵɵtext(17),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"p"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelement(24,"hr"),l.ɵɵtext(25,"\n "),l.ɵɵelementStart(26,"div",14),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"a",15),l.ɵɵtext(29),l.ɵɵpipe(30,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(31,"\n "),l.ɵɵelementStart(32,"a",16),l.ɵɵtext(33),l.ɵɵpipe(34,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(35,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n"),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(7),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(8,8,"joinOrganization")),l.ɵɵadvance(8),l.ɵɵtextInterpolate1("\n ",e.orgName,"\n "),l.ɵɵadvance(2),l.ɵɵtextInterpolate(e.email),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,10,"joinOrganizationDesc")),l.ɵɵadvance(7),l.ɵɵproperty("queryParams",l.ɵɵpureFunction1(16,S,e.email)),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(30,12,"logIn"),"\n "),l.ɵɵadvance(3),l.ɵɵproperty("queryParams",l.ɵɵpureFunction1(18,S,e.email)),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(34,14,"createAccount"),"\n ")}}class w extends s.BaseAcceptComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,o),this.apiService=r,this.cryptoService=a,this.policyService=s,this.logService=l,this.requiredParameters=["organizationId","organizationUserId","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new o.OrganizationUserAcceptRequest;t.token=e.token,(yield this.performResetPasswordAutoEnroll(e))?this.actionPromise=this.apiService.postOrganizationUserAccept(e.organizationId,e.organizationUserId,t).then((()=>this.apiService.getOrganizationKeys(e.organizationId))).then((t=>i(this,void 0,void 0,(function*(){if(null==t)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const n=r.Utils.fromB64ToArray(t.publicKey),i=yield this.cryptoService.getEncKey(),o=yield this.cryptoService.rsaEncrypt(i.key,n.buffer),s=new a.OrganizationUserResetPasswordEnrollmentRequest;return s.resetPasswordKey=o.encryptedString,this.apiService.putOrganizationUserResetPasswordEnrollment(e.organizationId,yield this.stateService.getUserId(),s)})))):this.actionPromise=this.apiService.postOrganizationUserAccept(e.organizationId,e.organizationUserId,t),yield this.actionPromise,this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("inviteAcceptedDesc"),{timeout:1e4}),yield this.stateService.setOrganizationInvitation(null),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.orgName=e.organizationName,null!=this.orgName&&(this.orgName=this.orgName.replace(/\+/g," ")),yield this.stateService.setOrganizationInvitation(e)}))}performResetPasswordAutoEnroll(e){return i(this,void 0,void 0,(function*(){let t=null;try{const n=yield this.apiService.getPoliciesByToken(e.organizationId,e.token,e.email,e.organizationUserId);t=this.policyService.mapPoliciesFromToken(n)}catch(n){this.logService.error(n)}if(null!=t){const n=this.policyService.getResetPasswordPolicyOptions(t,e.organizationId);return n[1]&&n[0].autoEnrollEnabled}return!1}))}}t.AcceptOrganizationComponent=w,w.ɵfac=function(e){return new(e||w)(l.ɵɵdirectiveInject(c.Router),l.ɵɵdirectiveInject(d.PlatformUtilsService),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(c.ActivatedRoute),l.ɵɵdirectiveInject(u.ApiService),l.ɵɵdirectiveInject(m.StateService),l.ɵɵdirectiveInject(h.CryptoService),l.ɵɵdirectiveInject(v.PolicyService),l.ɵɵdirectiveInject(g.LogService))},w.ɵcmp=l.ɵɵdefineComponent({type:w,selectors:[["app-accept-organization"]],features:[l.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["src","../../images/logo-dark@2x.png","alt","Bitwarden",1,"mb-4","logo"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-block","mt-2"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(l.ɵɵtemplate(0,x,17,6,"div",0),l.ɵɵtext(1,"\n"),l.ɵɵtemplate(2,b,41,20,"div",1),l.ɵɵtext(3,"\n")),2&e&&(l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[f.NgIf,c.RouterLinkWithHref],pipes:[y.I18nPipe],encapsulation:2})},33154:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HintComponent=void 0;n(68012);const i=n(43337),r=(n(91674),n(51554),n(36631),n(73828),n(32621)),o=n(68012),a=n(51554),s=n(91674),l=n(73828),c=n(36631),d=n(96832),p=n(56820),u=n(45728),m=n(48198),h=n(99729);class v extends i.HintComponent{constructor(e,t,n,i,r){super(e,t,n,i,r)}}t.HintComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.ApiService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(c.LogService))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-hint"]],features:[r.ɵɵInheritDefinitionFeature],decls:52,vars:22,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],[3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"div",7),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"label",8),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"input",9),r.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"small",10),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelement(28,"hr"),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",11),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"button",12),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"span",13),r.ɵɵtext(35),r.ɵɵpipe(36,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelement(38,"i",14),r.ɵɵpipe(39,"i18n"),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"a",15),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,10,"passwordHint")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(19,12,"emailAddress")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.email),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"enterEmailToGetHint")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵproperty("hidden",e.loading),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(36,16,"submit")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(39,18,"loading")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(44,20,"cancel"),"\n ")}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,d.DefaultValueAccessor,d.RequiredValidator,u.AutofocusDirective,m.InputVerbatimDirective,d.NgControlStatus,d.NgModel,o.RouterLinkWithHref],pipes:[h.I18nPipe],encapsulation:2})},79346:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockComponent=void 0;n(32621),n(68012);const r=n(33793),o=(n(91674),n(85714),n(56071),n(51554),n(72277),n(36631),n(45552),n(73828),n(73569),n(82656),n(77459),n(32621)),a=n(68012),s=n(51554),l=n(73828),c=n(45552),d=n(85714),p=n(82656),u=n(56071),m=n(77459),h=n(73569),v=n(91674),g=n(36631),f=n(72277),y=n(96832),x=n(56820),S=n(45728),b=n(48198),w=n(8863),C=n(57490),I=n(99729),E=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class P extends r.LockComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,o,a,l,c,d,p,u),this.routerService=s}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield e.ngOnInit.call(this),this.onSuccessfulSubmit=()=>i(this,void 0,void 0,(function*(){const e=this.routerService.getPreviousUrl();e&&"/"!==e&&-1===e.indexOf("lock")&&(this.successRoute=e),this.router.navigateByUrl(this.successRoute)}))}))}}t.LockComponent=P,P.ɵfac=function(e){return new(e||P)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.CryptoService),o.ɵɵdirectiveInject(p.VaultTimeoutService),o.ɵɵdirectiveInject(u.EnvironmentService),o.ɵɵdirectiveInject(m.RouterService),o.ɵɵdirectiveInject(h.StateService),o.ɵɵdirectiveInject(v.ApiService),o.ɵɵdirectiveInject(g.LogService),o.ɵɵdirectiveInject(f.KeyConnectorService),o.ɵɵdirectiveInject(o.NgZone))},P.ɵcmp=o.ɵɵdefineComponent({type:P,selectors:[["app-lock"]],features:[o.ɵɵInheritDefinitionFeature],decls:68,vars:31,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"text-center","mb-4"],["aria-hidden","true",1,"bwi","bwi-lock","bwi-4x","text-muted"],[1,"lead","text-center","mx-4","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"form-group"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appAutofocus","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"text-muted","form-text"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-unlock"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"i",5),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"p",6),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",7),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",8),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",9),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",10),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",11),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"button",13),o.ɵɵlistener("click",(function(){return t.togglePassword()})),o.ɵɵpipe(31,"i18n"),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",14),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"small",15),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelement(42,"hr"),o.ɵɵtext(43,"\n "),o.ɵɵelementStart(44,"div",11),o.ɵɵtext(45,"\n "),o.ɵɵelementStart(46,"button",16),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"span"),o.ɵɵtext(49," "),o.ɵɵelement(50,"i",17),o.ɵɵtext(51),o.ɵɵpipe(52,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelement(54,"i",18),o.ɵɵpipe(55,"i18n"),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"button",19),o.ɵɵlistener("click",(function(){return t.logOut()})),o.ɵɵtext(59),o.ɵɵpipe(60,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(62,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(13),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,12,"yourVaultIsLocked")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,14,"masterPass")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),o.ɵɵproperty("ngModel",t.masterPassword),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(31,16,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(28,E,!t.showPassword,t.showPassword)),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind3(39,18,"loggedInAsEmailOn",t.email,t.webVaultHostname),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(52,22,"unlock")," "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(55,24,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(60,26,"logOut"),"\n ")}},directives:[y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,y.DefaultValueAccessor,y.RequiredValidator,S.AutofocusDirective,b.InputVerbatimDirective,y.NgControlStatus,y.NgModel,w.A11yTitleDirective,C.NgClass],pipes:[I.I18nPipe],encapsulation:2})},36729:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginComponent=void 0;n(32621),n(68012);const r=n(14857),o=n(13744),a=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(34144)),s=(n(15156),n(77459),n(32621)),l=n(62694),c=n(68012),d=n(51554),p=n(73828),u=n(56071),m=n(84275),h=n(1659),v=n(91674),g=n(62166),f=n(36631),y=n(15156),x=n(45552),S=n(77459),b=n(96832),w=n(56820),C=n(57490),I=n(48198),E=n(8863),P=n(51626),O=n(99729);function k(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",31),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"resetPasswordPolicyAutoEnroll")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"resetPasswordAutoEnrollInviteWarning"),"\n "))}const A=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},T=function(e){return{email:e}};class M extends o.LoginComponent{constructor(e,t,n,r,o,a,s,l,c,d,p,u,m,h,v){super(e,t,o,n,m,a,s,l,p,u),this.route=r,this.apiService=c,this.policyService=d,this.stateService=m,this.messagingService=h,this.routerService=v,this.showResetPasswordAutoEnrollWarning=!1,this.onSuccessfulLogin=()=>i(this,void 0,void 0,(function*(){this.messagingService.send("setFullWidth")})),this.onSuccessfulLoginNavigate=this.goAfterLogIn}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(r.first()).subscribe((t=>i(this,void 0,void 0,(function*(){if(null!=t.email&&t.email.indexOf("@")>-1&&(this.email=t.email),null!=t.premium)this.routerService.setPreviousUrl("/settings/premium");else if(null!=t.org){const e=this.router.createUrlTree(["create-organization"],{queryParams:{plan:t.org}});this.routerService.setPreviousUrl(e.toString())}if(null!=t.sponsorshipToken){const e=this.router.createUrlTree(["setup/families-for-enterprise"],{queryParams:{token:t.sponsorshipToken}});this.routerService.setPreviousUrl(e.toString())}yield e.ngOnInit.call(this),this.rememberEmail=yield this.stateService.getRememberEmail()}))));const t=yield this.stateService.getOrganizationInvitation();if(null!=t){let e=null;try{this.policies=yield this.apiService.getPoliciesByToken(t.organizationId,t.token,t.email,t.organizationUserId),e=this.policyService.mapPoliciesFromToken(this.policies)}catch(n){this.logService.error(n)}if(null!=e){const n=this.policyService.getResetPasswordPolicyOptions(e,t.organizationId);this.showResetPasswordAutoEnrollWarning=n[1]&&n[0].autoEnrollEnabled,this.enforcedPasswordPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(e)}}}))}goAfterLogIn(){return i(this,void 0,void 0,(function*(){if(null!=this.enforcedPasswordPolicyOptions){const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput()),t=null==e?null:e.score;if(!this.policyService.evaluateMasterPassword(t,this.masterPassword,this.enforcedPasswordPolicyOptions)){const e={};return this.policies.data.map((t=>e[t.id]=new a.PolicyData(t))),yield this.policyService.replace(e),void this.router.navigate(["update-password"])}}const e=this.routerService.getPreviousUrl();e?this.router.navigateByUrl(e):this.router.navigate([this.successRoute])}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){yield this.stateService.setRememberEmail(this.rememberEmail),this.rememberEmail||(yield this.stateService.setRememberedEmail(null)),yield e.submit.call(this)}))}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),e}}t.LoginComponent=M,M.ɵfac=function(e){return new(e||M)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.EnvironmentService),s.ɵɵdirectiveInject(m.PasswordGenerationService),s.ɵɵdirectiveInject(h.CryptoFunctionService),s.ɵɵdirectiveInject(v.ApiService),s.ɵɵdirectiveInject(g.PolicyService),s.ɵɵdirectiveInject(f.LogService),s.ɵɵdirectiveInject(s.NgZone),s.ɵɵdirectiveInject(y.StateService),s.ɵɵdirectiveInject(x.MessagingService),s.ɵɵdirectiveInject(S.RouterService))},M.ɵcmp=s.ɵɵdefineComponent({type:M,selectors:[["app-login"]],features:[s.ɵɵInheritDefinitionFeature],decls:104,vars:45,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],["alt","Bitwarden",1,"mb-2","logo","logo-themed"],[1,"lead","text-center","mx-4","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning",3,"title",4,"ngIf"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"form-text"],["routerLink","/hint"],[1,"form-check","mb-3"],["type","checkbox","id","rememberEmail","name","RememberEmail",1,"form-check-input",3,"ngModel","ngModelChange"],["for","rememberEmail",1,"form-check-label"],[1,"mb-n3",3,"hidden"],["id","hcaptcha_iframe","height","80"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/register",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"queryParams"],["aria-hidden","true",1,"bwi","bwi-pencil-square"],["routerLink","/sso",1,"btn","btn-outline-secondary","btn-block","mt-2"],["aria-hidden","true",1,"bwi","bwi-bank"],["type","warning",3,"title"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelement(7,"img",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"p",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",6),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",7),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,k,4,6,"app-callout",8),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",9),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",10),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",11),s.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",9),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",12),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",13),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"input",14),s.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"button",15),s.ɵɵlistener("click",(function(){return t.togglePassword()})),s.ɵɵpipe(39,"i18n"),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",16),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"small",17),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"a",18),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"div",19),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"input",20),s.ɵɵlistener("ngModelChange",(function(e){return t.rememberEmail=e})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"label",21),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"div",22),s.ɵɵtext(63,"\n "),s.ɵɵelement(64,"iframe",23),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelement(67,"hr"),s.ɵɵtext(68,"\n "),s.ɵɵelementStart(69,"div",13),s.ɵɵtext(70,"\n "),s.ɵɵelementStart(71,"button",24),s.ɵɵtext(72,"\n "),s.ɵɵelementStart(73,"span"),s.ɵɵtext(74," "),s.ɵɵelement(75,"i",25),s.ɵɵtext(76),s.ɵɵpipe(77,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"i",26),s.ɵɵpipe(80,"i18n"),s.ɵɵtext(81,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementStart(83,"a",27),s.ɵɵtext(84,"\n "),s.ɵɵelement(85,"i",28),s.ɵɵtext(86),s.ɵɵpipe(87,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(88,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"div",13),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"a",29),s.ɵɵtext(93,"\n "),s.ɵɵelement(94,"i",30),s.ɵɵtext(95),s.ɵɵpipe(96,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(98,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(99,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(101,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(102,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,20,"loginOrCreateNewAccount")),s.ɵɵadvance(7),s.ɵɵproperty("ngIf",t.showResetPasswordAutoEnrollWarning),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,22,"emailAddress")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.email),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,24,"masterPass")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),s.ɵɵproperty("ngModel",t.masterPassword),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(39,26,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(40,A,!t.showPassword,t.showPassword)),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(49,28,"getMasterPasswordHint")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.rememberEmail),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,30,"rememberEmail")),s.ɵɵadvance(4),s.ɵɵproperty("hidden",!t.showCaptcha()),s.ɵɵadvance(9),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(77,32,"logIn")," "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(80,34,"loading")),s.ɵɵadvance(4),s.ɵɵproperty("queryParams",s.ɵɵpureFunction1(43,T,t.email)),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(87,36,"createAccount"),"\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(96,38,"enterpriseSingleSignOn"),"\n ")}},directives:[b.NgControlStatusGroup,b.NgForm,w.ApiActionDirective,C.NgIf,b.DefaultValueAccessor,b.RequiredValidator,I.InputVerbatimDirective,b.NgControlStatus,b.NgModel,E.A11yTitleDirective,C.NgClass,c.RouterLinkWithHref,b.CheckboxControlValueAccessor,P.CalloutComponent],pipes:[O.I18nPipe],encapsulation:2})},39253:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RecoverDeleteComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828);const r=n(12666),o=n(32621),a=n(68012),s=n(91674),l=n(73828),c=n(51554),d=n(36631),p=n(96832),u=n(56820),m=n(45728),h=n(48198),v=n(99729);class g{constructor(e,t,n,i,r){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.logService=r}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.DeleteRecoverRequest;e.email=this.email.trim().toLowerCase(),this.formPromise=this.apiService.postAccountRecoverDelete(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deleteRecoverEmailSent")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.RecoverDeleteComponent=g,g.ɵfac=function(e){return new(e||g)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.ApiService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=o.ɵɵdefineComponent({type:g,selectors:[["app-recover-delete"]],decls:52,vars:21,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",5),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",6),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"p"),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",7),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",8),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"input",9),o.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelement(28,"hr"),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",10),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"button",11),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"span"),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"i",12),o.ɵɵpipe(39,"i18n"),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"a",13),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,9,"deleteAccount")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,11,"deleteRecoverDesc")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,13,"emailAddress")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.email),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(36,15,"submit")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(39,17,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(44,19,"cancel"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,p.DefaultValueAccessor,p.RequiredValidator,m.AutofocusDirective,h.InputVerbatimDirective,p.NgControlStatus,p.NgModel,a.RouterLinkWithHref],pipes:[v.I18nPipe],encapsulation:2})},85175:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RecoverTwoFactorComponent=void 0;n(68012),n(91674),n(62694),n(85714),n(51554),n(36631),n(73828);const r=n(6188),o=n(32621),a=n(68012),s=n(91674),l=n(73828),c=n(51554),d=n(85714),p=n(62694),u=n(36631),m=n(96832),h=n(56820),v=n(45728),g=n(48198),f=n(99729);class y{constructor(e,t,n,i,r,o,a){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.cryptoService=r,this.authService=o,this.logService=a}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.TwoFactorRecoveryRequest;e.recoveryCode=this.recoveryCode.replace(/\s/g,"").toLowerCase(),e.email=this.email.trim().toLowerCase();const t=yield this.authService.makePreloginKey(this.masterPassword,e.email);e.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,t),this.formPromise=this.apiService.postTwoFactorRecover(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("twoStepRecoverDisabled")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.RecoverTwoFactorComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.ApiService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.CryptoService),o.ɵɵdirectiveInject(p.AuthService),o.ɵɵdirectiveInject(u.LogService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["app-recover-two-factor"]],decls:74,vars:32,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],["href","https://bitwarden.com/help/lost-two-step-device/","target","_blank","rel","noopener"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPassword","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","recoveryCode"],["id","recoveryCode","type","text","name","RecoveryCode","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",5),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",6),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"p"),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementStart(18,"a",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",8),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"label",9),o.ɵɵtext(26),o.ɵɵpipe(27,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"input",10),o.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"div",8),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"label",11),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"div",8),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"label",13),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"input",14),o.ɵɵlistener("ngModelChange",(function(e){return t.recoveryCode=e})),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelement(50,"hr"),o.ɵɵtext(51,"\n "),o.ɵɵelementStart(52,"div",15),o.ɵɵtext(53,"\n "),o.ɵɵelementStart(54,"button",16),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"span"),o.ɵɵtext(57),o.ɵɵpipe(58,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelement(60,"i",17),o.ɵɵpipe(61,"i18n"),o.ɵɵtext(62,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementStart(64,"a",18),o.ɵɵtext(65),o.ɵɵpipe(66,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(69,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(70,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(71,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(73,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,14,"recoverAccountTwoStep")),o.ɵɵadvance(8),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(17,16,"recoverAccountTwoStepDesc"),"\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,18,"learnMore")),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(27,20,"emailAddress")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.email),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(36,22,"masterPass")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.masterPassword),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(45,24,"recoveryCodeTitle")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.recoveryCode),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(58,26,"submit")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(61,28,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(66,30,"cancel"),"\n ")}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,m.DefaultValueAccessor,m.RequiredValidator,v.AutofocusDirective,g.InputVerbatimDirective,m.NgControlStatus,m.NgModel,a.RouterLinkWithHref],pipes:[f.I18nPipe],encapsulation:2})},48229:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterComponent=void 0;n(68012);const r=n(14857),o=n(11405),a=(n(91674),n(62694),n(85714),n(56071),n(51554),n(36631),n(84275),n(73828),n(62166),n(73569),n(34144)),s=n(41317),l=n(90185),c=(n(77459),n(32621)),d=n(62694),p=n(68012),u=n(51554),m=n(85714),h=n(91674),v=n(73569),g=n(73828),f=n(84275),y=n(62166),x=n(56071),S=n(36631),b=n(77459),w=n(57490),C=n(96832),I=n(56820),E=n(48198),P=n(45728),O=n(40946),k=n(8863),A=n(51626),T=n(99729);function M(e,t){1&e&&(c.ɵɵelementStart(0,"header",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",42),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",4),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",43),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",44),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd())}function B(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"The Bitwarden Password Manager"),c.ɵɵelementEnd(),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"h2"),c.ɵɵtext(6,"\n Trusted by millions of individuals, teams, and organizations worldwide for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"p"),c.ɵɵtext(9,"Store logins, secure notes, and more"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd())}function D(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Teams"),c.ɵɵelement(2,"br"),c.ɵɵelementEnd())}function R(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Enterprise"),c.ɵɵelementEnd())}function F(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"\n Start Your "),c.ɵɵtemplate(4,D,3,0,"span",39),c.ɵɵtemplate(5,R,2,0,"span",39),c.ɵɵtext(6," Free Trial Now\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2"),c.ɵɵtext(9,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Deploy and manage quickly and easily"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"p"),c.ɵɵtext(21,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(4),c.ɵɵproperty("ngIf","teams1"===e.layout||"teams1"===e.layout),c.ɵɵadvance(1),c.ɵɵproperty("ngIf","enterprise2"===e.layout)}}function U(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Teams"),c.ɵɵelement(2,"br"),c.ɵɵelementEnd())}function V(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Enterprise"),c.ɵɵelementEnd())}function N(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"\n Start Your "),c.ɵɵtemplate(4,U,3,0,"span",39),c.ɵɵtemplate(5,V,2,0,"span",39),c.ɵɵtext(6," Free Trial Now\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2"),c.ɵɵtext(9,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Deploy and manage quickly and easily"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"p"),c.ɵɵtext(21,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(4),c.ɵɵproperty("ngIf","cnetcmpgnteams"===e.layout),c.ɵɵadvance(1),c.ɵɵproperty("ngIf","cnetcmpgnent"===e.layout)}}function _(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"Start Your Premium Account Now"),c.ɵɵelementEnd(),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"h2"),c.ɵɵtext(6,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"p"),c.ɵɵtext(9,"Store logins, secure notes, and more"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Secure your account with advanced two-step login"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd())}function j(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",43),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",45),c.ɵɵtext(3,"\n "),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,B,20,0,"div",39),c.ɵɵtext(6,"\n\n "),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,F,23,2,"div",39),c.ɵɵtext(9,"\n\n "),c.ɵɵtext(10,"\n "),c.ɵɵtemplate(11,N,23,2,"div",39),c.ɵɵtext(12,"\n\n "),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,_,20,0,"div",39),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵproperty("ngIf","teams"===e.layout||"enterprise"===e.layout||"enterprise1"===e.layout||"default"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","teams1"===e.layout||"teams2"===e.layout||"enterprise2"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnteams"===e.layout||"cnetcmpgnent"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnind"===e.layout)}}function z(e,t){1&e&&(c.ɵɵelementStart(0,"p",46),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"createAccount")))}function H(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",47),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2),c.ɵɵpipe(3,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,2,"createOrganizationStep1")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(3,4,"createOrganizationCreatePersonalAccount"),"\n "))}function L(e,t){if(1&e&&(c.ɵɵelementStart(0,"app-callout",48),c.ɵɵtext(1,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",12),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",49),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",50),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().acceptPolicies=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",51),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelement(9,"br"),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"a",52),c.ɵɵtext(12),c.ɵɵpipe(13,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(14,",\n "),c.ɵɵelementStart(15,"a",53),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(4),c.ɵɵproperty("ngModel",e.acceptPolicies),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"acceptPolicies"),""),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(13,6,"termsOfService")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,8,"privacyPolicy"))}}function q(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"figure"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"figcaption"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"cite"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",54),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"blockquote",55),c.ɵɵtext(13,'\n "No more excuses; start using Bitwarden today. The identity you save could be your\n own. The money definitely will be."\n '),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd())}function G(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"figure"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"figcaption"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"cite"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",56),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"blockquote",55),c.ɵɵtext(13,"\n “Bitwarden boasts the backing of some of the world's best security experts and an\n attractive, easy-to-use interface”\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd())}function W(e,t){1&e&&(c.ɵɵelementStart(0,"div",57),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",58),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd())}function $(e,t){1&e&&(c.ɵɵelementStart(0,"div",57),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",58),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd())}const Y=function(e){return["layout",e]},Q=function(e,t){return{"col-5":e,"col-12":t}},J=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class Z extends o.RegisterComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,a,s,l,d,p),this.route=o,this.policyService=c,this.routerService=u,this.showCreateOrgMessage=!1,this.layout=""}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(r.first()).subscribe((e=>{if(this.referenceData=new l.ReferenceEventRequest,null!=e.email&&e.email.indexOf("@")>-1&&(this.email=e.email),null!=e.premium)this.routerService.setPreviousUrl("/settings/premium");else if(null!=e.org){this.showCreateOrgMessage=!0,this.referenceData.flow=e.org;const t=this.router.createUrlTree(["create-organization"],{queryParams:{plan:e.org}});this.routerService.setPreviousUrl(t.toString())}if(null!=e.layout&&(this.layout=this.referenceData.layout=e.layout),null!=e.reference?this.referenceData.id=e.reference:this.referenceData.id=("; "+document.cookie).split("; reference=").pop().split(";").shift(),null!=e.sponsorshipToken){const t=this.router.createUrlTree(["setup/families-for-enterprise"],{queryParams:{plan:e.sponsorshipToken}});this.routerService.setPreviousUrl(t.toString())}""===this.referenceData.id&&(this.referenceData.id=null)}));const t=yield this.stateService.getOrganizationInvitation();if(null!=t)try{const e=yield this.apiService.getPoliciesByToken(t.organizationId,t.token,t.email,t.organizationUserId);if(null!=e.data){const t=e.data.map((e=>new a.PolicyData(e)));this.policies=t.map((e=>new s.Policy(e)))}}catch(n){this.logService.error(n)}null!=this.policies&&(this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(this.policies)),yield e.ngOnInit.call(this)}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){null==this.enforcedPolicyOptions||this.policyService.evaluateMasterPassword(this.masterPasswordScore,this.masterPassword,this.enforcedPolicyOptions)?yield e.submit.call(this):this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet"))}))}}t.RegisterComponent=Z,Z.ɵfac=function(e){return new(e||Z)(c.ɵɵdirectiveInject(d.AuthService),c.ɵɵdirectiveInject(p.Router),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.CryptoService),c.ɵɵdirectiveInject(h.ApiService),c.ɵɵdirectiveInject(p.ActivatedRoute),c.ɵɵdirectiveInject(v.StateService),c.ɵɵdirectiveInject(g.PlatformUtilsService),c.ɵɵdirectiveInject(f.PasswordGenerationService),c.ɵɵdirectiveInject(y.PolicyService),c.ɵɵdirectiveInject(x.EnvironmentService),c.ɵɵdirectiveInject(S.LogService),c.ɵɵdirectiveInject(b.RouterService))},Z.ɵcmp=c.ɵɵdefineComponent({type:Z,selectors:[["app-register"]],features:[c.ɵɵInheritDefinitionFeature],decls:166,vars:85,consts:[[1,"layout",3,"ngClass"],["class","header",4,"ngIf"],["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],["class","col-7",4,"ngIf"],[3,"ngClass"],[1,"row","justify-content-md-center","mt-5"],["class","lead text-center mb-4",4,"ngIf"],[1,"card","d-block"],[1,"card-body"],["type","info","icon","bwi bwi-thumb-tack",3,"title",4,"ngIf"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","appAutofocus","ngModelChange"],[1,"form-text","text-muted"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","appAutofocus","ngModelChange"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPassword","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],[3,"hidden"],["id","hcaptcha_iframe","height","80"],["class","form-group",4,"ngIf"],[1,"d-flex","mb-2"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"],[1,"col-7","d-flex","align-items-center"],[4,"ngIf"],["class","col-5 d-flex align-items-center justify-content-center",4,"ngIf"],[1,"header"],[1,"container"],[1,"col-7"],["alt","Bitwarden","src","../../images/register-layout/logo-horizontal-white.svg",1,"logo","mb-2"],[1,"mt-5"],[1,"lead","text-center","mb-4"],["type","info","icon","bwi bwi-thumb-tack",3,"title"],["type","info",3,"enforcedPolicyOptions"],[1,"form-check"],["type","checkbox","id","acceptPolicies","name","AcceptPolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","acceptPolicies",1,"form-check-label","small","text-muted"],["href","https://bitwarden.com/terms/","target","_blank","rel","noopener"],["href","https://bitwarden.com/privacy/","target","_blank","rel","noopener"],["src","../../images/register-layout/cnet-logo.svg","alt","cnet logo",1,"w-25","d-block","mx-auto"],[1,"mx-auto","text-center","px-4"],["src","../../images/register-layout/forbes-logo.svg","alt","Forbes Logo",1,"w-25","d-block","mx-auto"],[1,"col-5","d-flex","align-items-center","justify-content-center"],["src","../../images/register-layout/usnews-360-badge.svg","alt","US News 360 Reviews Best Password Manager",1,"w-50","d-block"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵtext(2,"\n "),c.ɵɵtemplate(3,M,13,0,"header",1),c.ɵɵtext(4,"\n\n "),c.ɵɵelementStart(5,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",4),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,j,17,4,"div",5),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"div",6),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",7),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"div",6),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,z,3,3,"p",8),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"div",9),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"div",10),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,H,4,6,"app-callout",11),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",12),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"label",13),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵelementStart(32,"input",14),c.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"small",15),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"div",12),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"label",16),c.ɵɵtext(42),c.ɵɵpipe(43,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"input",17),c.ɵɵlistener("ngModelChange",(function(e){return t.name=e})),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"small",15),c.ɵɵtext(48),c.ɵɵpipe(49,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementStart(52,"div",12),c.ɵɵtext(53,"\n "),c.ɵɵtemplate(54,L,2,1,"app-callout",18),c.ɵɵtext(55,"\n "),c.ɵɵelementStart(56,"label",19),c.ɵɵtext(57),c.ɵɵpipe(58,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(59,"\n "),c.ɵɵelementStart(60,"div",20),c.ɵɵtext(61,"\n "),c.ɵɵelementStart(62,"div",21),c.ɵɵtext(63,"\n "),c.ɵɵelementStart(64,"input",22),c.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementStart(66,"app-password-strength",23),c.ɵɵtext(67,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(68,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵelementStart(70,"div"),c.ɵɵtext(71,"\n "),c.ɵɵelementStart(72,"button",24),c.ɵɵlistener("click",(function(){return t.togglePassword(!1)})),c.ɵɵpipe(73,"i18n"),c.ɵɵtext(74,"\n "),c.ɵɵelement(75,"i",25),c.ɵɵtext(76,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelement(78,"div",26),c.ɵɵtext(79,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(80,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(81,"\n "),c.ɵɵelementStart(82,"small",15),c.ɵɵtext(83),c.ɵɵpipe(84,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(85,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(86,"\n "),c.ɵɵelementStart(87,"div",12),c.ɵɵtext(88,"\n "),c.ɵɵelementStart(89,"label",27),c.ɵɵtext(90),c.ɵɵpipe(91,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(92,"\n "),c.ɵɵelementStart(93,"div",20),c.ɵɵtext(94,"\n "),c.ɵɵelementStart(95,"input",28),c.ɵɵlistener("ngModelChange",(function(e){return t.confirmMasterPassword=e})),c.ɵɵelementEnd(),c.ɵɵtext(96,"\n "),c.ɵɵelementStart(97,"button",24),c.ɵɵlistener("click",(function(){return t.togglePassword(!0)})),c.ɵɵpipe(98,"i18n"),c.ɵɵtext(99,"\n "),c.ɵɵelement(100,"i",25),c.ɵɵtext(101,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(102,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(103,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(104,"\n "),c.ɵɵelementStart(105,"div",12),c.ɵɵtext(106,"\n "),c.ɵɵelementStart(107,"label",29),c.ɵɵtext(108),c.ɵɵpipe(109,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(110,"\n "),c.ɵɵelementStart(111,"input",30),c.ɵɵlistener("ngModelChange",(function(e){return t.hint=e})),c.ɵɵelementEnd(),c.ɵɵtext(112,"\n "),c.ɵɵelementStart(113,"small",15),c.ɵɵtext(114),c.ɵɵpipe(115,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(116,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(117,"\n "),c.ɵɵelementStart(118,"div",31),c.ɵɵtext(119,"\n "),c.ɵɵelement(120,"iframe",32),c.ɵɵtext(121,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(122,"\n "),c.ɵɵtemplate(123,K,21,10,"div",33),c.ɵɵtext(124,"\n "),c.ɵɵelement(125,"hr"),c.ɵɵtext(126,"\n "),c.ɵɵelementStart(127,"div",34),c.ɵɵtext(128,"\n "),c.ɵɵelementStart(129,"button",35),c.ɵɵtext(130,"\n "),c.ɵɵelementStart(131,"span"),c.ɵɵtext(132),c.ɵɵpipe(133,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(134,"\n "),c.ɵɵelement(135,"i",36),c.ɵɵpipe(136,"i18n"),c.ɵɵtext(137,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(138,"\n "),c.ɵɵelementStart(139,"a",37),c.ɵɵtext(140),c.ɵɵpipe(141,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(142,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(143,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(144,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(145,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(146,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(147,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(148,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(149,"\n "),c.ɵɵelementStart(150,"div",4),c.ɵɵtext(151,"\n "),c.ɵɵelementStart(152,"div",38),c.ɵɵtext(153,"\n "),c.ɵɵtemplate(154,q,16,0,"div",39),c.ɵɵtext(155,"\n\n "),c.ɵɵtemplate(156,G,16,0,"div",39),c.ɵɵtext(157,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(158,"\n "),c.ɵɵtemplate(159,W,4,0,"div",40),c.ɵɵtext(160,"\n "),c.ɵɵtemplate(161,$,4,0,"div",40),c.ɵɵtext(162,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(163,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(164,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(165,"\n")),2&e){const e=c.ɵɵreference(6);c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(71,Y,t.layout)),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","default"===t.layout||"teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(73,Q,t.layout,!t.layout)),c.ɵɵadvance(4),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(76,Q,!t.layout,t.layout)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.layout),c.ɵɵadvance(6),c.ɵɵproperty("ngIf",t.showCreateOrgMessage),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(30,43,"emailAddress")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.email)("appAutofocus",""===t.email),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(36,45,"emailAddressDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(43,47,"yourName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.name)("appAutofocus",""!==t.email),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(49,49,"yourNameDesc")),c.ɵɵadvance(6),c.ɵɵproperty("ngIf",t.enforcedPolicyOptions),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(58,51,"masterPass")),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),c.ɵɵproperty("ngModel",t.masterPassword),c.ɵɵadvance(2),c.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),c.ɵɵadvance(6),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(73,53,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(79,J,!t.showPassword,t.showPassword)),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(84,55,"masterPassDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(91,57,"reTypeMasterPass")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),c.ɵɵproperty("ngModel",t.confirmMasterPassword),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(98,59,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(82,J,!t.showPassword,t.showPassword)),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(109,61,"masterPassHint")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.hint),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(115,63,"masterPassHintDesc")),c.ɵɵadvance(4),c.ɵɵproperty("hidden",!t.showCaptcha()),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.showTerms),c.ɵɵadvance(6),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(133,65,"submit")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(136,67,"loading")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(141,69,"cancel"),"\n "),c.ɵɵadvance(14),c.ɵɵproperty("ngIf","cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"default"===t.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"default"===t.layout)}},directives:[w.NgClass,w.NgIf,C.NgControlStatusGroup,C.NgForm,I.ApiActionDirective,C.DefaultValueAccessor,C.RequiredValidator,E.InputVerbatimDirective,C.NgControlStatus,C.NgModel,P.AutofocusDirective,O.PasswordStrengthComponent,k.A11yTitleDirective,p.RouterLinkWithHref,A.CalloutComponent,C.CheckboxControlValueAccessor],pipes:[T.I18nPipe],encapsulation:2})},66686:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemovePasswordComponent=void 0;const i=n(42893),r=n(32621),o=n(57490),a=n(99729);function s(e,t){1&e&&(r.ɵɵelementStart(0,"div",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div"),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"img",3),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"p",4),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",5),r.ɵɵpipe(9,"i18n"),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"span",6),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(8),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(9,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,4,"loading")))}function l(e,t){1&e&&(r.ɵɵelement(0,"i",16),r.ɵɵpipe(1,"i18n")),2&e&&r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,1,"loading"))}function c(e,t){1&e&&(r.ɵɵelement(0,"i",16),r.ɵɵpipe(1,"i18n")),2&e&&r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,1,"loading"))}function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",7),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",8),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",9),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"p",10),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"hr"),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",11),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"div",12),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"p"),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n\n "),r.ɵɵelementStart(20,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().convert()})),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,l,2,3,"i",14),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().leave()})),r.ɵɵtext(27,"\n "),r.ɵɵtemplate(28,c,2,3,"i",14),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n"),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,8,"removeMasterPassword")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(18,10,"convertOrganizationEncryptionDesc",e.organization.name)),r.ɵɵadvance(3),r.ɵɵproperty("disabled",e.actionPromise),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.continuing),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,13,"removeMasterPassword"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("disabled",e.actionPromise),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.leaving),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,15,"leaveOrganization"),"\n ")}}class p extends i.RemovePasswordComponent{}t.RemovePasswordComponent=p,p.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(p)))(t||p)}}(),p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-remove-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","button",1,"btn","btn-primary","btn-block",3,"disabled","click"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary","btn-block",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,s,17,6,"div",0),r.ɵɵtext(1,"\n"),r.ɵɵtemplate(2,d,36,17,"div",1),r.ɵɵtext(3,"\n")),2&e&&(r.ɵɵproperty("ngIf",t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.loading))},directives:[o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},12579:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordComponent=void 0;n(68012);const i=n(24656),r=(n(91674),n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(32621)),o=n(91674),a=n(51554),s=n(85714),l=n(45552),c=n(84275),d=n(73828),p=n(62166),u=n(68012),m=n(9724),h=n(73569),v=n(96832),g=n(56820),f=n(57490),y=n(51626),x=n(48198),S=n(40946),b=n(8863),w=n(99729);function C(e,t){1&e&&(r.ɵɵelementStart(0,"div",8),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",9),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(5,4,"loading"),"\n "))}function I(e,t){1&e&&(r.ɵɵelementStart(0,"app-callout",30),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"resetPasswordPolicyAutoEnroll")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"resetPasswordAutoEnrollInviteWarning"),"\n "))}function E(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",31),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const P=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function O(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"app-callout",11),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,I,4,6,"app-callout",12),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",13),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,E,2,1,"app-callout",14),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"label",15),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",16),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"div",17),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"input",18),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPassword=t}))("input",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"app-password-strength",19),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div"),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().togglePassword(!1)})),r.ɵɵpipe(29,"i18n"),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"i",21),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelement(34,"div",22),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"small",23),r.ɵɵtext(39),r.ɵɵpipe(40,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",13),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"label",24),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"div",16),r.ɵɵtext(50,"\n "),r.ɵɵelementStart(51,"input",25),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPasswordRetype=t})),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementStart(53,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().togglePassword(!0)})),r.ɵɵpipe(54,"i18n"),r.ɵɵtext(55,"\n "),r.ɵɵelement(56,"i",21),r.ɵɵtext(57,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementStart(61,"div",13),r.ɵɵtext(62,"\n "),r.ɵɵelementStart(63,"label",26),r.ɵɵtext(64),r.ɵɵpipe(65,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementStart(67,"input",27),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().hint=t})),r.ɵɵelementEnd(),r.ɵɵtext(68,"\n "),r.ɵɵelementStart(69,"small",23),r.ɵɵtext(70),r.ɵɵpipe(71,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(72,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(73,"\n "),r.ɵɵelement(74,"hr"),r.ɵɵtext(75,"\n "),r.ɵɵelementStart(76,"div",16),r.ɵɵtext(77,"\n "),r.ɵɵelementStart(78,"button",28),r.ɵɵtext(79,"\n "),r.ɵɵelement(80,"i",9),r.ɵɵpipe(81,"i18n"),r.ɵɵtext(82,"\n "),r.ɵɵelementStart(83,"span"),r.ɵɵtext(84),r.ɵɵpipe(85,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(86,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(87,"\n "),r.ɵɵelementStart(88,"button",29),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().logOut()})),r.ɵɵtext(89),r.ɵɵpipe(90,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(91,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(92,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(1);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,23,"ssoCompleteRegistration")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.resetPasswordAutoEnroll),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.enforcedPolicyOptions),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(14,25,"masterPass")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),r.ɵɵproperty("ngModel",e.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",e.masterPasswordScore)("showText",!0),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(29,27,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(45,P,!e.showPassword,e.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(40,29,"masterPassDesc")),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,31,"reTypeMasterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),r.ɵɵproperty("ngModel",e.masterPasswordRetype),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(54,33,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(48,P,!e.showPassword,e.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(65,35,"masterPassHint")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.hint),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(71,37,"masterPassHintDesc")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",t.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(81,39,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(85,41,"submit")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(90,43,"logOut"),"\n ")}}class k extends i.SetPasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(t,n,i,r,o,a,s,e,l,c,d)}}t.SetPasswordComponent=k,k.ɵfac=function(e){return new(e||k)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.CryptoService),r.ɵɵdirectiveInject(l.MessagingService),r.ɵɵdirectiveInject(c.PasswordGenerationService),r.ɵɵdirectiveInject(d.PlatformUtilsService),r.ɵɵdirectiveInject(p.PolicyService),r.ɵɵdirectiveInject(u.Router),r.ɵɵdirectiveInject(m.SyncService),r.ɵɵdirectiveInject(u.ActivatedRoute),r.ɵɵdirectiveInject(h.StateService))},k.ɵcmp=r.ɵɵdefineComponent({type:k,selectors:[["app-set-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:21,vars:6,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],["class","card-body text-center",4,"ngIf"],["class","card-body",4,"ngIf"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"card-body"],["type","info"],["type","warning",3,"title",4,"ngIf"],[1,"form-group"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPasswordHash","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],[1,"form-text","text-muted"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"],["type","warning",3,"title"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,C,6,6,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,O,93,51,"div",7),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n")),2&e&&(r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,4,"setMasterPassword")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.syncLoading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.syncLoading))},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.NgIf,y.CalloutComponent,v.DefaultValueAccessor,v.RequiredValidator,x.InputVerbatimDirective,v.NgControlStatus,v.NgModel,S.PasswordStrengthComponent,b.A11yTitleDirective,f.NgClass],pipes:[w.I18nPipe],encapsulation:2})},23291:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoComponent=void 0;n(68012);const r=n(14857),o=n(25563),a=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(32621)),s=n(62694),l=n(68012),c=n(51554),d=n(73569),p=n(73828),u=n(91674),m=n(1659),h=n(56071),v=n(84275),g=n(36631),f=n(96832),y=n(56820),x=n(57490),S=n(45728),b=n(99729);function w(e,t){1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",8),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(5,4,"loading"),"\n "))}function C(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",9),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"label",10),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"input",11),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().identifier=t})),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelement(15,"hr"),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"div",12),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"button",13),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"span"),a.ɵɵtext(22," "),a.ɵɵelement(23,"i",14),a.ɵɵtext(24),a.ɵɵpipe(25,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelement(27,"i",8),a.ɵɵpipe(28,"i18n"),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"a",15),a.ɵɵtext(32),a.ɵɵpipe(33,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext(),t=a.ɵɵreference(1);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"ssoLogInWithOrgIdentifier")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,9,"organizationIdentifier")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",e.identifier),a.ɵɵadvance(7),a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate1(" ",a.ɵɵpipeBind1(25,11,"logIn")," "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(28,13,"loading")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(33,15,"cancel"),"\n ")}}class I extends o.SsoComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,l,c,d),this.redirectUri=window.location.origin+"/sso-connector.html",this.clientId="web"}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this),this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.identifier)this.identifier=e.identifier;else{const e=yield this.stateService.getSsoOrgIdentifier();null!=e&&(this.identifier=e)}}))))}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){yield this.stateService.setSsoOrganizationIdentifier(this.identifier),"browser"===this.clientId&&(document.cookie=`ssoHandOffMessage=${this.i18nService.t("ssoHandOff")};SameSite=strict`),e.submit.call(this)}))}}t.SsoComponent=I,I.ɵfac=function(e){return new(e||I)(a.ɵɵdirectiveInject(s.AuthService),a.ɵɵdirectiveInject(l.Router),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(l.ActivatedRoute),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PlatformUtilsService),a.ɵɵdirectiveInject(u.ApiService),a.ɵɵdirectiveInject(m.CryptoFunctionService),a.ɵɵdirectiveInject(h.EnvironmentService),a.ɵɵdirectiveInject(v.PasswordGenerationService),a.ɵɵdirectiveInject(g.LogService))},I.ɵcmp=a.ɵɵdefineComponent({type:I,selectors:[["app-sso"]],features:[a.ɵɵInheritDefinitionFeature],decls:19,vars:3,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],["alt","Bitwarden",1,"logo","mb-2","logo-themed"],[1,"card","d-block","mt-4"],["class","card-body",4,"ngIf"],[1,"card-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"form-group"],["for","identifier"],["id","identifier","type","text","name","Identifier","required","","appAutofocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div",2),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",3),a.ɵɵtext(6,"\n "),a.ɵɵelement(7,"img",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",5),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,6,6,"div",6),a.ɵɵtext(12,"\n "),a.ɵɵtemplate(13,C,36,17,"div",6),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n")),2&e&&(a.ɵɵproperty("appApiAction",t.initiateSsoFormPromise),a.ɵɵadvance(11),a.ɵɵproperty("ngIf",t.loggingIn),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loggingIn))},directives:[f.NgControlStatusGroup,f.NgForm,y.ApiActionDirective,x.NgIf,f.DefaultValueAccessor,f.RequiredValidator,S.AutofocusDirective,f.NgControlStatus,f.NgModel,l.RouterLinkWithHref],pipes:[b.I18nPipe],encapsulation:2})},76126:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorOptionsComponent=void 0;n(68012);const i=n(63736),r=(n(51554),n(73828),n(27458),n(32621)),o=n(27458),a=n(68012),s=n(51554),l=n(73828),c=n(8863),d=n(57490),p=n(99729);function u(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",11),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",12),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"img",20),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",14),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3"),r.ɵɵtext(12),r.ɵɵelementEnd(),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"div",15),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"button",16),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext().choose(t)})),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit;r.ɵɵadvance(6),r.ɵɵclassMap("mfaType"+e.type),r.ɵɵproperty("alt",e.name+" logo"),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.name),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.description,"\n "),r.ɵɵadvance(4),r.ɵɵattribute("aria-describedby",e.name),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(19,7,"select"),"\n ")}}class m extends i.TwoFactorOptionsComponent{constructor(e,t,n,i){super(e,t,n,i,window)}}t.TwoFactorOptionsComponent=m,m.ɵfac=function(e){return new(e||m)(r.ɵɵdirectiveInject(o.TwoFactorService),r.ɵɵdirectiveInject(a.Router),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.PlatformUtilsService))},m.ɵcmp=r.ɵɵdefineComponent({type:m,selectors:[["app-two-factor-options"]],features:[r.ɵɵInheritDefinitionFeature],decls:65,vars:22,consts:[["role","dialog","aria-modal","true","aria-labelledby","twoStepOptionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","twoStepOptionsTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"list-group","list-group-flush-2fa"],["class","list-group-item list-group-item-action",4,"ngFor","ngForOf"],[1,"list-group-item","list-group-item-action",3,"click"],[1,"two-factor-content"],[1,"logo-col"],["alt","rc logo",1,"recovery-code-img"],[1,"text-col"],[1,"btn-col"],["type","button",1,"btn","btn-outline-secondary","btn-sm",3,"click"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"list-group-item","list-group-item-action"],[3,"alt"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",5),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",6),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",7),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"div",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,u,23,9,"div",9),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",10),r.ɵɵlistener("click",(function(){return t.recover()})),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"div",11),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",12),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"img",13),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",14),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"h3"),r.ɵɵtext(38),r.ɵɵpipe(39,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(40),r.ɵɵpipe(41,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",15),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"button",16),r.ɵɵlistener("click",(function(){return t.recover()})),r.ɵɵpipe(46,"i18n"),r.ɵɵtext(47),r.ɵɵpipe(48,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"div",17),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"button",18),r.ɵɵtext(58),r.ɵɵpipe(59,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(63,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(64,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,8,"twoStepOptions")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,10,"close")),r.ɵɵadvance(12),r.ɵɵproperty("ngForOf",t.providers),r.ɵɵadvance(14),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(39,12,"recoveryCodeTitle")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(41,14,"recoveryCodeDesc"),"\n "),r.ɵɵadvance(5),r.ɵɵattribute("aria-descibedby",r.ɵɵpipeBind1(46,16,"recoveryCodeTitle")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(48,18,"select"),"\n "),r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(59,20,"close"),"\n "))},directives:[c.A11yTitleDirective,d.NgForOf],pipes:[p.I18nPipe],encapsulation:2})},27359:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorComponent=void 0;const r=n(32621),o=(n(68012),n(71116)),a=(n(64684),n(91674),n(5576),n(62694),n(56071),n(51554),n(36631),n(73828),n(73569),n(27458),n(77459),n(76126)),s=n(32621),l=n(62694),c=n(68012),d=n(51554),p=n(91674),u=n(73828),m=n(73569),h=n(56071),v=n(64684),g=n(36631),f=n(27458),y=n(5576),x=n(77459),S=n(96832),b=n(56820),w=n(57490),C=n(1142),I=n(45728),E=n(48198),P=n(99729),O=["twoFactorOptions"];function k(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"enterVerificationCodeApp"),"\n "))}function A(e,t){if(1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,1,"enterVerificationCodeEmail",e.twoFactorEmail),"\n ")}}function T(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",24),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).sendEmail(!0)})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵproperty("appApiAction",e.emailPromise),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,2,"sendVerificationCodeEmailAgain"),"\n ")}}function M(e,t){if(1&e&&(s.ɵɵelementStart(0,"small",22),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,T,3,4,"a",23),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email)}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,k,3,3,"p",7),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,A,3,4,"p",7),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",18),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"label",19),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",20),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,M,4,1,"small",21),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Authenticator),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email)}}function D(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p",15),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"picture"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"source",25),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"source",26),s.ɵɵtext(11,"\n "),s.ɵɵelement(12,"img",27),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",18),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"label",19),s.ɵɵtext(18),s.ɵɵpipe(19,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"input",28),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"insertYubiKey")),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(19,5,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function R(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",29),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"iframe",30),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("allow",e.webAuthnAllow)}}function F(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",31),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"iframe",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd())}function U(e,t){1&e&&(s.ɵɵelement(0,"i",33),s.ɵɵpipe(1,"i18n")),2&e&&s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,1,"loading"))}function V(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",34),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().remember=t})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",36),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngModel",e.remember),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"rememberMe"))}}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"p"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,2,"noTwoStepProviders")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,4,"noTwoStepProviders2")))}function _(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",37),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span"),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",38),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",39),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()),2&e){s.ɵɵnextContext();const e=s.ɵɵreference(1);s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(6,3,"continue"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(9,5,"loading"))}}function j(e,t){}const z=function(e){return{"col-9":e}};class H extends o.TwoFactorComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,window,a,o,l,c,d,p),this.modalService=s,this.routerService=u,this.onSuccessfulLoginNavigate=this.goAfterLogIn}anotherMethod(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(a.TwoFactorOptionsComponent,this.twoFactorOptionsModal,(t=>{t.onProviderSelected.subscribe((t=>i(this,void 0,void 0,(function*(){e.close(),this.selectedProviderType=t,yield this.init()})))),t.onRecoverSelected.subscribe((()=>{e.close()}))}))}))}goAfterLogIn(){return i(this,void 0,void 0,(function*(){const e=this.routerService.getPreviousUrl();e?this.router.navigateByUrl(e):this.router.navigate([this.successRoute],{queryParams:{identifier:this.identifier}})}))}}t.TwoFactorComponent=H,H.ɵfac=function(e){return new(e||H)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.ApiService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.StateService),s.ɵɵdirectiveInject(h.EnvironmentService),s.ɵɵdirectiveInject(v.ModalService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(g.LogService),s.ɵɵdirectiveInject(f.TwoFactorService),s.ɵɵdirectiveInject(y.AppIdService),s.ɵɵdirectiveInject(x.RouterService))},H.ɵcmp=s.ɵɵdefineComponent({type:H,selectors:[["app-two-factor"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(O,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.twoFactorOptionsModal=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:59,vars:20,consts:[["ngNativeValidate","","autocomplete","off",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5",3,"ngClass"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[4,"ngIf"],["class","bwi bwi-spinner text-muted bwi-spin pull-right","aria-hidden","true",3,"title",4,"ngIf"],["class","form-check",4,"ngIf"],[3,"hidden"],["id","hcaptcha_iframe","height","80"],[1,"d-flex","mb-3"],["type","submit","class","btn btn-primary btn-block btn-submit",3,"disabled",4,"ngIf"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"],[1,"text-center"],["href","#","appStopClick","",3,"click"],["twoFactorOptions",""],[1,"form-group"],["for","code",1,"sr-only"],["id","code","type","text","name","Code","required","","appAutofocus","","inputmode","tel","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-text",4,"ngIf"],[1,"form-text"],["href","#","appStopClick","",3,"appApiAction","click",4,"ngIf"],["href","#","appStopClick","",3,"appApiAction","click"],["srcset","../../images/yubikey.avif","type","image/avif"],["srcset","../../images/yubikey.webp","type","image/webp"],["src","../../images/yubikey.jpg","alt","",1,"rounded","img-fluid","mb-3"],["id","code","type","password","name","Code","required","","appAutofocus","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["id","web-authn-frame",1,"mb-3"],["id","webauthn_iframe",3,"allow"],["id","duo-frame",1,"mb-3"],["id","duo_iframe"],["aria-hidden","true",1,"bwi","bwi-spinner","text-muted","bwi-spin","pull-right",3,"title"],[1,"form-check"],["id","remember","type","checkbox","name","Remember",1,"form-check-input",3,"ngModel","ngModelChange"],["for","remember",1,"form-check-label"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"p",4),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",5),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",6),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,B,17,7,"ng-container",7),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,D,24,7,"ng-container",7),s.ɵɵtext(17,"\n "),s.ɵɵtemplate(18,R,7,1,"ng-container",7),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,F,7,0,"ng-container",7),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,U,2,3,"i",8),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,V,8,4,"div",9),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,N,10,6,"ng-container",7),s.ɵɵtext(27,"\n "),s.ɵɵelement(28,"hr"),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",10),s.ɵɵtext(31,"\n "),s.ɵɵelement(32,"iframe",11),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"div",12),s.ɵɵtext(36,"\n "),s.ɵɵtemplate(37,_,11,7,"button",13),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"a",14),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"div",15),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"a",16),s.ɵɵlistener("click",(function(){return t.anotherMethod()})),s.ɵɵtext(47),s.ɵɵpipe(48,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n"),s.ɵɵtemplate(56,j,0,0,"ng-template",null,17,s.ɵɵtemplateRefExtractor),s.ɵɵtext(58,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(18,z,t.selectedProviderType===t.providerType.Duo||t.selectedProviderType===t.providerType.OrganizationDuo)),s.ɵɵadvance(3),s.ɵɵtextInterpolate(t.title),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Email||t.selectedProviderType===t.providerType.Authenticator),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Yubikey),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.WebAuthn),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Duo||t.selectedProviderType===t.providerType.OrganizationDuo),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.loading&&t.selectedProviderType===t.providerType.WebAuthn),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null!=t.selectedProviderType),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.selectedProviderType),s.ɵɵadvance(4),s.ɵɵproperty("hidden",!t.showCaptcha()),s.ɵɵadvance(7),s.ɵɵproperty("ngIf",null!=t.selectedProviderType&&t.selectedProviderType!==t.providerType.Duo&&t.selectedProviderType!==t.providerType.OrganizationDuo&&t.selectedProviderType!==t.providerType.WebAuthn),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(41,14,"cancel"),"\n "),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(48,16,"useAnotherTwoStepMethod"))}},directives:[S.NgControlStatusGroup,S.NgForm,b.ApiActionDirective,w.NgClass,w.NgIf,c.RouterLinkWithHref,C.StopClickDirective,S.DefaultValueAccessor,S.RequiredValidator,I.AutofocusDirective,E.InputVerbatimDirective,S.NgControlStatus,S.NgModel,S.CheckboxControlValueAccessor],pipes:[P.I18nPipe],encapsulation:2})},37565:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdatePasswordComponent=void 0;n(68012);const i=n(56117),r=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(57055),n(32621)),o=n(68012),a=n(51554),s=n(73828),l=n(84275),c=n(62166),d=n(85714),p=n(45552),u=n(91674),m=n(36631),h=n(73569),v=n(57055),g=n(96832),f=n(56820),y=n(51626),x=n(57490),S=n(48198),b=n(40946),w=n(99729);function C(e,t){if(1&e&&r.ɵɵelement(0,"app-callout",22),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class I extends i.UpdatePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,c,d,l)}}t.UpdatePasswordComponent=I,I.ɵfac=function(e){return new(e||I)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.PasswordGenerationService),r.ɵɵdirectiveInject(c.PolicyService),r.ɵɵdirectiveInject(d.CryptoService),r.ɵɵdirectiveInject(p.MessagingService),r.ɵɵdirectiveInject(u.ApiService),r.ɵɵdirectiveInject(m.LogService),r.ɵɵdirectiveInject(h.StateService),r.ɵɵdirectiveInject(v.UserVerificationService))},I.ɵcmp=r.ɵɵdefineComponent({type:I,selectors:[["app-update-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:91,vars:33,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-4"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","currentMasterPassword"],["id","currentMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","newMasterPassword"],["id","newMasterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"fa","fa-spinner","fa-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-callout",7),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵtemplate(19,C,1,1,"app-callout",8),r.ɵɵtext(20,"\n\n "),r.ɵɵelementStart(21,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"div",9),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",10),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"div",11),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"label",12),r.ɵɵtext(31),r.ɵɵpipe(32,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"input",13),r.ɵɵlistener("ngModelChange",(function(e){return t.currentMasterPassword=e})),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"div",9),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"div",10),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",11),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"label",14),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"input",15),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelement(51,"app-password-strength",16),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"div",10),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"div",11),r.ɵɵtext(58,"\n "),r.ɵɵelementStart(59,"label",17),r.ɵɵtext(60),r.ɵɵpipe(61,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementStart(63,"input",18),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),r.ɵɵelementEnd(),r.ɵɵtext(64,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(65,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(67,"\n "),r.ɵɵelementStart(68,"button",19),r.ɵɵtext(69,"\n "),r.ɵɵelement(70,"i",20),r.ɵɵpipe(71,"i18n"),r.ɵɵtext(72,"\n "),r.ɵɵelementStart(73,"span"),r.ɵɵtext(74),r.ɵɵpipe(75,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(76,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(77,"\n "),r.ɵɵelementStart(78,"button",21),r.ɵɵlistener("click",(function(){return t.cancel()})),r.ɵɵtext(79,"\n "),r.ɵɵelementStart(80,"span"),r.ɵɵtext(81),r.ɵɵpipe(82,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(83,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(84,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(85,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(86,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(87,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(88,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(89,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(90,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,17,"updateMasterPassword")),r.ɵɵadvance(8),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(17,19,"masterPasswordInvalidWarning")," "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.enforcedPolicyOptions),r.ɵɵadvance(2),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(32,21,"currentMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.currentMasterPassword),r.ɵɵadvance(12),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,23,"newMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(61,25,"confirmNewMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPasswordRetype),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(71,27,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(75,29,"changeMasterPassword")),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(82,31,"cancel"))}},directives:[g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.CalloutComponent,x.NgIf,g.DefaultValueAccessor,g.RequiredValidator,S.InputVerbatimDirective,g.NgControlStatus,g.NgModel,b.PasswordStrengthComponent],pipes:[w.I18nPipe],encapsulation:2})},6745:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordComponent=void 0;const i=n(73295),r=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(32621)),o=n(51554),a=n(73828),s=n(84275),l=n(62166),c=n(85714),d=n(45552),p=n(91674),u=n(36631),m=n(73569),h=n(9724),v=n(96832),g=n(56820),f=n(51626),y=n(57490),x=n(48198),S=n(40946),b=n(8863),w=n(99729);function C(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",26),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const I=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class E extends i.UpdateTempPasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,l,c,s)}}t.UpdateTempPasswordComponent=E,E.ɵfac=function(e){return new(e||E)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.PasswordGenerationService),r.ɵɵdirectiveInject(l.PolicyService),r.ɵɵdirectiveInject(c.CryptoService),r.ɵɵdirectiveInject(d.MessagingService),r.ɵɵdirectiveInject(p.ApiService),r.ɵɵdirectiveInject(u.LogService),r.ɵɵdirectiveInject(m.StateService),r.ɵɵdirectiveInject(h.SyncService))},E.ɵcmp=r.ɵɵdefineComponent({type:E,selectors:[["app-update-temp-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:105,vars:51,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-4"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning"],[1,"form-group"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPasswordHash","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-callout",7),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"div",8),r.ɵɵtext(20,"\n "),r.ɵɵtemplate(21,C,2,1,"app-callout",9),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"label",10),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"div",11),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",12),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"input",13),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"app-password-strength",14),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"div"),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"button",15),r.ɵɵlistener("click",(function(){return t.togglePassword(!1)})),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelement(42,"i",16),r.ɵɵtext(43,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelement(45,"div",17),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementStart(50,"div",8),r.ɵɵtext(51,"\n "),r.ɵɵelementStart(52,"label",18),r.ɵɵtext(53),r.ɵɵpipe(54,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(55,"\n "),r.ɵɵelementStart(56,"div",11),r.ɵɵtext(57,"\n "),r.ɵɵelementStart(58,"input",19),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementStart(60,"button",15),r.ɵɵlistener("click",(function(){return t.togglePassword(!0)})),r.ɵɵpipe(61,"i18n"),r.ɵɵtext(62,"\n "),r.ɵɵelement(63,"i",16),r.ɵɵtext(64,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(65,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(67,"\n "),r.ɵɵelementStart(68,"div",8),r.ɵɵtext(69,"\n "),r.ɵɵelementStart(70,"label",20),r.ɵɵtext(71),r.ɵɵpipe(72,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(73,"\n "),r.ɵɵelementStart(74,"input",21),r.ɵɵlistener("ngModelChange",(function(e){return t.hint=e})),r.ɵɵelementEnd(),r.ɵɵtext(75,"\n "),r.ɵɵelementStart(76,"small",22),r.ɵɵtext(77),r.ɵɵpipe(78,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(79,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(80,"\n "),r.ɵɵelement(81,"hr"),r.ɵɵtext(82,"\n "),r.ɵɵelementStart(83,"div",11),r.ɵɵtext(84,"\n "),r.ɵɵelementStart(85,"button",23),r.ɵɵtext(86,"\n "),r.ɵɵelement(87,"i",24),r.ɵɵpipe(88,"i18n"),r.ɵɵtext(89,"\n "),r.ɵɵelementStart(90,"span"),r.ɵɵtext(91),r.ɵɵpipe(92,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(93,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(94,"\n "),r.ɵɵelementStart(95,"button",25),r.ɵɵlistener("click",(function(){return t.logOut()})),r.ɵɵtext(96),r.ɵɵpipe(97,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(98,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(99,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(100,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(101,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(102,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(103,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(104,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,23,"updateMasterPassword")),r.ɵɵadvance(8),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(17,25,"updateMasterPasswordWarning")," "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.enforcedPolicyOptions),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,27,"masterPass")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(40,29,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(45,I,!t.showPassword,t.showPassword)),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(54,31,"reTypeMasterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPasswordRetype),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(61,33,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(48,I,!t.showPassword,t.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(72,35,"masterPassHint")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.hint),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(78,37,"masterPassHintDesc")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(88,39,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(92,41,"submit")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(97,43,"logOut"),"\n ")}},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.CalloutComponent,y.NgIf,v.DefaultValueAccessor,v.RequiredValidator,x.InputVerbatimDirective,v.NgControlStatus,v.NgModel,S.PasswordStrengthComponent,b.A11yTitleDirective,y.NgClass],pipes:[w.I18nPipe],encapsulation:2})},85002:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailTokenComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(51554),n(36631),n(73828),n(73569),n(81106)),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(91674),p=n(36631),u=n(73569),m=n(99729);class h{constructor(e,t,n,i,r,o,a){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.apiService=r,this.logService=o,this.stateService=a}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.userId&&null!=e.token)try{return yield this.apiService.postAccountVerifyEmailToken(new o.VerifyEmailRequest(e.userId,e.token)),(yield this.stateService.getIsAuthenticated())&&(yield this.apiService.refreshIdentityToken()),this.platformUtilsService.showToast("success",null,this.i18nService.t("emailVerified")),void this.router.navigate(["/"])}catch(t){this.logService.error(t)}this.platformUtilsService.showToast("error",null,this.i18nService.t("emailVerifiedFailed")),this.router.navigate(["/"])}))))}}t.VerifyEmailTokenComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.LogService),a.ɵɵdirectiveInject(u.StateService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["app-verify-email-token"]],decls:18,vars:6,consts:[[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",1),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",2),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",3),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",4),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n")),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))},pipes:[m.I18nPipe],encapsulation:2})},52e3:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyRecoverDeleteComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(51554),n(36631),n(73828),n(25086)),a=n(32621),s=n(68012),l=n(91674),c=n(73828),d=n(51554),p=n(36631),u=n(96832),m=n(56820),h=n(51626),v=n(99729);class g{constructor(e,t,n,i,r,o){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.route=r,this.logService=o}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){null!=e.userId&&null!=e.token&&null!=e.email?(this.userId=e.userId,this.token=e.token,this.email=e.email):this.router.navigate(["/"])}))))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new o.VerifyDeleteRecoverRequest(this.userId,this.token);this.formPromise=this.apiService.postAccountRecoverDeleteToken(e),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("accountDeleted"),this.i18nService.t("accountDeletedDesc")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.VerifyRecoverDeleteComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.ApiService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(p.LogService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["app-verify-recover-delete"]],decls:53,vars:21,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],["type","warning"],[1,"text-center"],[1,"d-flex"],["type","submit",1,"btn","btn-danger","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div",2),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",3),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"p",4),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"div",5),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"div",6),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"app-callout",7),a.ɵɵtext(16),a.ɵɵpipe(17,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"p",8),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"strong"),a.ɵɵtext(22),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"p"),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelement(29,"hr"),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",9),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"button",10),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"span"),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelement(39,"i",11),a.ɵɵpipe(40,"i18n"),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementStart(43,"a",12),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(48,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(52,"\n")),2&e){const e=a.ɵɵreference(1);a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,9,"deleteAccount")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(17,11,"deleteAccountWarning")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(t.email),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(27,13,"deleteRecoverConfirmDesc")),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,15,"deleteAccount")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(40,17,"loading")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,19,"cancel"),"\n ")}},directives:[u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.CalloutComponent,s.RouterLinkWithHref],pipes:[v.I18nPipe],encapsulation:2})},27914:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppComponent=void 0;const r=n(32621),o=(n(61248),n(68012)),a=n(19755),s=(n(68290),n(78764)),l=(n(62694),n(8470),n(45330),n(3174),n(85714),n(32034),n(88308),n(51554),n(72277),n(38249),n(84275),n(73828),n(62166),n(60421),n(2810),n(73569),n(9724),n(30694),n(82656),n(22991)),c=n(34568),d=n(39123),p=n(34912),u=n(60764),m=n(40558),h=n(57037),v=n(82862),g=n(43909),f=(n(55453),n(77459),n(32621)),y=n(8470),x=n(30694),S=n(88308),b=n(2810),w=n(9724),C=n(84275),I=n(45330),E=n(62694),P=n(68012),O=n(68290),k=n(51554),A=n(73828),T=n(82656),M=n(85714),B=n(3174),D=n(61248),R=n(60421),F=n(38249),U=n(77459),V=n(73569),N=n(32034),_=n(62166),j=n(55453),z=n(72277),H="AppComponent";class L{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h,v,g,f,y,x,S,b,w,C,I){this.broadcasterService=e,this.tokenService=t,this.folderService=n,this.settingsService=i,this.syncService=r,this.passwordGenerationService=o,this.cipherService=a,this.authService=s,this.router=l,this.toastrService=c,this.i18nService=d,this.platformUtilsService=p,this.ngZone=u,this.vaultTimeoutService=m,this.cryptoService=h,this.collectionService=v,this.sanitizer=g,this.searchService=f,this.notificationsService=y,this.routerService=x,this.stateService=S,this.eventService=b,this.policyService=w,this.policyListService=C,this.keyConnectorService=I,this.lastActivity=null,this.idleTimer=null,this.isIdle=!1}ngOnInit(){this.ngZone.runOutsideAngular((()=>{window.onmousemove=()=>this.recordActivity(),window.onmousedown=()=>this.recordActivity(),window.ontouchstart=()=>this.recordActivity(),window.onclick=()=>this.recordActivity(),window.onscroll=()=>this.recordActivity(),window.onkeypress=()=>this.recordActivity()})),this.broadcasterService.subscribe(H,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){switch(e.command){case"loggedIn":case"unlocked":this.notificationsService.updateConnection(!1);break;case"loggedOut":this.routerService.setPreviousUrl(null),this.notificationsService.updateConnection(!1);break;case"authBlocked":this.routerService.setPreviousUrl(e.url),this.router.navigate(["/"]);break;case"logout":this.logOut(!!e.expired);break;case"lockVault":yield this.vaultTimeoutService.lock();break;case"locked":this.notificationsService.updateConnection(!1),this.router.navigate(["lock"]);break;case"lockedUrl":this.routerService.setPreviousUrl(e.url);break;case"syncStarted":case"syncCompleted":default:break;case"upgradeOrganization":(yield this.platformUtilsService.showDialog(this.i18nService.t("upgradeOrganizationDesc"),this.i18nService.t("upgradeOrganization"),this.i18nService.t("upgradeOrganization"),this.i18nService.t("cancel")))&&this.router.navigate(["organizations",e.organizationId,"settings","billing"]);break;case"premiumRequired":(yield this.platformUtilsService.showDialog(this.i18nService.t("premiumRequiredDesc"),this.i18nService.t("premiumRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.router.navigate(["settings/premium"]);break;case"emailVerificationRequired":(yield this.platformUtilsService.showDialog(this.i18nService.t("emailVerificationRequiredDesc"),this.i18nService.t("emailVerificationRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.platformUtilsService.launchUri("https://bitwarden.com/help/create-bitwarden-account/");break;case"showToast":this.showToast(e);break;case"setFullWidth":this.setFullWidth();break;case"convertAccountToKeyConnector":this.router.navigate(["/remove-password"])}}))))})))),this.router.events.subscribe((e=>{if(e instanceof o.NavigationEnd){const e=Array.from(document.querySelectorAll(".modal"));for(const t of e)a(t).modal("hide");null!=document.querySelector(".swal-modal")&&s.default.close(void 0)}})),this.policyListService.addPolicies([new g.TwoFactorAuthenticationPolicy,new c.MasterPasswordPolicy,new d.PasswordGeneratorPolicy,new v.SingleOrgPolicy,new u.RequireSsoPolicy,new p.PersonalOwnershipPolicy,new l.DisableSendPolicy,new h.SendOptionsPolicy,new m.ResetPasswordPolicy]),this.setFullWidth()}ngOnDestroy(){this.broadcasterService.unsubscribe(H)}logOut(e){return i(this,void 0,void 0,(function*(){yield this.eventService.uploadEvents();const t=yield this.stateService.getUserId();yield Promise.all([this.eventService.clearEvents(),this.syncService.setLastSync(new Date(0)),this.cryptoService.clearKeys(),this.settingsService.clear(t),this.cipherService.clear(t),this.folderService.clear(t),this.collectionService.clear(t),this.policyService.clear(t),this.passwordGenerationService.clear(),this.keyConnectorService.clear()]),this.searchService.clearIndex(),this.authService.logOut((()=>i(this,void 0,void 0,(function*(){e&&this.platformUtilsService.showToast("warning",this.i18nService.t("loggedOut"),this.i18nService.t("loginExpired")),yield this.stateService.clean({userId:t}),s.default.close(),this.router.navigate(["/"])}))))}))}recordActivity(){return i(this,void 0,void 0,(function*(){const e=(new Date).getTime();null!=this.lastActivity&&e-this.lastActivity<250||(this.lastActivity=e,this.stateService.setLastActive(e),this.isIdle&&(this.isIdle=!1,this.idleStateChanged()),null!=this.idleTimer&&(window.clearTimeout(this.idleTimer),this.idleTimer=null),this.idleTimer=window.setTimeout((()=>{this.isIdle||(this.isIdle=!0,this.idleStateChanged())}),6e5))}))}showToast(e){let t="";const n={};"string"==typeof e.text?t=e.text:1===e.text.length?t=e.text[0]:(e.text.forEach((e=>t+="

"+this.sanitizer.sanitize(r.SecurityContext.HTML,e)+"

")),n.enableHtml=!0),null!=e.options&&(!0===e.options.trustedHtml&&(n.enableHtml=!0),null!=e.options.timeout&&e.options.timeout>0&&(n.timeOut=e.options.timeout)),this.toastrService.show(t,e.title,n,"toast-"+e.type)}idleStateChanged(){this.isIdle?this.notificationsService.disconnectFromInactivity():this.notificationsService.reconnectFromActivity()}setFullWidth(){return i(this,void 0,void 0,(function*(){(yield this.stateService.getEnableFullWidth())?document.body.classList.add("full-width"):document.body.classList.remove("full-width")}))}}t.AppComponent=L,L.ɵfac=function(e){return new(e||L)(f.ɵɵdirectiveInject(y.BroadcasterService),f.ɵɵdirectiveInject(x.TokenService),f.ɵɵdirectiveInject(S.FolderService),f.ɵɵdirectiveInject(b.SettingsService),f.ɵɵdirectiveInject(w.SyncService),f.ɵɵdirectiveInject(C.PasswordGenerationService),f.ɵɵdirectiveInject(I.CipherService),f.ɵɵdirectiveInject(E.AuthService),f.ɵɵdirectiveInject(P.Router),f.ɵɵdirectiveInject(O.ToastrService),f.ɵɵdirectiveInject(k.I18nService),f.ɵɵdirectiveInject(A.PlatformUtilsService),f.ɵɵdirectiveInject(f.NgZone),f.ɵɵdirectiveInject(T.VaultTimeoutService),f.ɵɵdirectiveInject(M.CryptoService),f.ɵɵdirectiveInject(B.CollectionService),f.ɵɵdirectiveInject(D.DomSanitizer),f.ɵɵdirectiveInject(R.SearchService),f.ɵɵdirectiveInject(F.NotificationsService),f.ɵɵdirectiveInject(U.RouterService),f.ɵɵdirectiveInject(V.StateService),f.ɵɵdirectiveInject(N.EventService),f.ɵɵdirectiveInject(_.PolicyService),f.ɵɵdirectiveInject(j.PolicyListService),f.ɵɵdirectiveInject(z.KeyConnectorService))},L.ɵcmp=f.ɵɵdefineComponent({type:L,selectors:[["app-root"]],decls:2,vars:0,template:function(e,t){1&e&&(f.ɵɵelement(0,"router-outlet"),f.ɵɵtext(1,"\n"))},directives:[P.RouterOutlet],encapsulation:2})},50009:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAcceptComponent=void 0;n(68012);const r=n(14857),o=(n(51554),n(73828),n(73569),n(32621)),a=n(68012),s=n(73828),l=n(51554),c=n(73569);class d{constructor(e,t,n,i,r){this.router=e,this.platformUtilService=t,this.i18nService=n,this.route=i,this.stateService=r,this.loading=!0,this.authed=!1,this.requiredParameters=[],this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed"}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){let t=this.requiredParameters.some((t=>null==(null==e?void 0:e[t])||""===e[t])),n=null;if(!t)if(this.authed=yield this.stateService.getIsAuthenticated(),this.authed)try{yield this.authedHandler(e)}catch(i){t=!0,n=i.message}else this.email=e.email,yield this.unauthedHandler(e);if(t){const e=null!=n?this.i18nService.t(this.failedShortMessage,n):this.i18nService.t(this.failedMessage);this.platformUtilService.showToast("error",null,e,{timeout:1e4}),this.router.navigate(["/"])}this.loading=!1}))))}}t.BaseAcceptComponent=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(a.ActivatedRoute),o.ɵɵdirectiveInject(c.StateService))},d.ɵdir=o.ɵɵdefineDirective({type:d})},75512:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseEventsComponent=void 0;n(97445),n(51554),n(36631),n(73828);const r=n(63412),o=(n(3202),n(32621)),a=n(3202),s=n(51554),l=n(97445),c=n(73828),d=n(36631);class p{constructor(e,t,n,i,r){this.eventService=e,this.i18nService=t,this.exportService=n,this.platformUtilsService=i,this.logService=r,this.loading=!0,this.loaded=!1,this.dirtyDates=!0;const o=this.eventService.getDefaultDateFilters();this.start=o[0],this.end=o[1]}exportEvents(){return i(this,void 0,void 0,(function*(){if(this.appApiPromiseUnfulfilled()||this.dirtyDates)return;this.loading=!0;const e=this.parseDates();if(null!=e){try{this.exportPromise=this.export(e[0],e[1]),yield this.exportPromise}catch(t){this.logService.error(`Handled exception: ${t}`)}this.exportPromise=null,this.loading=!1}}))}loadEvents(e){return i(this,void 0,void 0,(function*(){if(this.appApiPromiseUnfulfilled())return;const t=this.parseDates();if(null==t)return;this.loading=!0;let n=[];try{const i=this.loadAndParseEvents(t[0],t[1],e?null:this.continuationToken);e?this.refreshPromise=i:this.morePromise=i;const r=yield i;this.continuationToken=r.continuationToken,n=r.events}catch(i){this.logService.error(`Handled exception: ${i}`)}!e&&null!=this.events&&this.events.length>0?this.events=this.events.concat(n):this.events=n,this.dirtyDates=!1,this.loading=!1,this.morePromise=null,this.refreshPromise=null}))}loadAndParseEvents(e,t,n){return i(this,void 0,void 0,(function*(){const o=yield this.requestEvents(e,t,n),a=yield Promise.all(o.data.map((e=>i(this,void 0,void 0,(function*(){const t=null==e.actingUserId?e.userId:e.actingUserId,n=yield this.eventService.getEventInfo(e),i=this.getUserName(e,t),o=null!=i?i.name:this.i18nService.t("unknown");return new r.EventView({message:n.message,humanReadableMessage:n.humanReadableMessage,appIcon:n.appIcon,appName:n.appName,userId:t,userName:null!=e.installationId?`Installation: ${e.installationId}`:o,userEmail:null!=i?i.email:"",date:e.date,ip:e.ipAddress,type:e.type,installationId:e.installationId})})))));return{continuationToken:o.continuationToken,events:a}}))}parseDates(){let e=null;try{e=this.eventService.formatDateFilters(this.start,this.end)}catch(t){return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidDateRange")),null}return e}appApiPromiseUnfulfilled(){return null!=this.refreshPromise||null!=this.morePromise||null!=this.exportPromise}export(e,t){return i(this,void 0,void 0,(function*(){let n=this.continuationToken,i=[].concat(this.events);for(;null!=n;){const r=yield this.loadAndParseEvents(e,t,n);n=r.continuationToken,i=i.concat(r.events)}const r=yield this.exportService.getEventExport(i),o=this.exportService.getFileName(this.exportFileName,"csv");this.platformUtilsService.saveFile(window,r,{type:"text/plain"},o)}))}}t.BaseEventsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.EventService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ExportService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.LogService))},p.ɵdir=o.ɵɵdefineDirective({type:p})},1833:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BasePeopleComponent=void 0;const r=n(32621),o=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(73828),n(60421),n(73569),n(82769)),a=n(85331),s=n(32621),l=n(91674),c=n(60421),d=n(51554),p=n(73828),u=n(85714),m=n(47594),h=n(64684),v=n(36631),g=n(50154),f=n(52080),y=n(73569),x=["confirmTemplate"];class S{constructor(e,t,n,i,r,o,a,s,l,c,d){this.apiService=e,this.searchService=t,this.i18nService=n,this.platformUtilsService=i,this.cryptoService=r,this.validationService=o,this.modalService=a,this.logService=s,this.searchPipe=l,this.userNamePipe=c,this.stateService=d,this.loading=!0,this.statusMap=new Map,this.users=[],this.pagedUsers=[],this.allUsers=[],this.didScroll=!1,this.pageSize=100,this.pagedUsersCount=0}get allCount(){return null!=this.allUsers?this.allUsers.length:0}get invitedCount(){return this.statusMap.has(this.userStatusType.Invited)?this.statusMap.get(this.userStatusType.Invited).length:0}get acceptedCount(){return this.statusMap.has(this.userStatusType.Accepted)?this.statusMap.get(this.userStatusType.Accepted).length:0}get confirmedCount(){return this.statusMap.has(this.userStatusType.Confirmed)?this.statusMap.get(this.userStatusType.Confirmed).length:0}get showConfirmUsers(){return null!=this.allUsers&&null!=this.statusMap&&this.allUsers.length>1&&this.confirmedCount>0&&this.confirmedCount<3&&this.acceptedCount>0}get showBulkConfirmUsers(){return this.acceptedCount>0}load(){return i(this,void 0,void 0,(function*(){const e=yield this.getUsers();this.statusMap.clear();for(const t of o.Utils.iterateEnum(this.userStatusType))this.statusMap.set(t,[]);this.allUsers=null!=e.data&&e.data.length>0?e.data:[],this.allUsers.sort(o.Utils.getSortFunction(this.i18nService,"email")),this.allUsers.forEach((e=>{this.statusMap.has(e.status)?this.statusMap.get(e.status).push(e):this.statusMap.set(e.status,[e])})),this.filter(this.status),this.loading=!1}))}filter(e){this.status=e,null!=this.status?this.users=this.statusMap.get(this.status):this.users=this.allUsers,this.selectAll(!1),this.resetPaging()}loadMore(){if(!this.users||this.users.length<=this.pageSize)return;const e=this.pagedUsers.length;let t=this.pageSize;0===e&&this.pagedUsersCount>this.pageSize&&(t=this.pagedUsersCount),this.users.length>e&&(this.pagedUsers=this.pagedUsers.concat(this.users.slice(e,e+t))),this.pagedUsersCount=this.pagedUsers.length,this.didScroll=this.pagedUsers.length>this.pageSize}checkUser(e,t){e.checked=null==t?!e.checked:t}selectAll(e){e&&this.selectAll(!1);const t=this.searchPipe.transform(this.users,this.searchText,"name","email","id"),n=e&&t.length>500?500:t.length;for(let i=0;ii(this,void 0,void 0,(function*(){try{this.actionPromise=this.confirmUser(e,t),yield this.actionPromise,function(t){e.status=t.userStatusType.Confirmed;const n=t.statusMap.get(t.userStatusType.Accepted).indexOf(e);n>-1&&(t.statusMap.get(t.userStatusType.Accepted).splice(n,1),t.statusMap.get(t.userStatusType.Confirmed).push(e))}(this),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e)))}catch(n){throw this.validationService.showError(n),n}finally{this.actionPromise=null}}));if(null==this.actionPromise)try{const r=yield this.apiService.getUserPublicKey(e.userId),s=o.Utils.fromB64ToArray(r.publicKey),l=yield this.stateService.getAutoConfirmFingerPrints();if(null==l||!l){const[n]=yield this.modalService.openViewRef(a.UserConfirmComponent,this.confirmModalRef,(r=>{r.name=this.userNamePipe.transform(e),r.userId=null!=e?e.userId:null,r.publicKey=s,r.onConfirmedUser.subscribe((()=>i(this,void 0,void 0,(function*(){try{r.formPromise=t(s),yield r.formPromise,n.close()}catch(e){this.logService.error(e)}}))))}));return}try{const t=yield this.cryptoService.getFingerprint(e.userId,s.buffer);this.logService.info(`User's fingerprint: ${t.join("-")}`)}catch(n){this.logService.error(n)}yield t(s)}catch(n){this.logService.error(`Handled exception: ${n}`)}}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.users&&this.users.length>this.pageSize}deleteWarningMessage(e){return this.i18nService.t("removeUserConfirmation")}getCheckedUsers(){return this.users.filter((e=>e.checked))}removeUser(e){let t=this.users.indexOf(e);t>-1&&(this.users.splice(t,1),this.resetPaging()),this.statusMap.has(e.status)&&(t=this.statusMap.get(e.status).indexOf(e),t>-1&&this.statusMap.get(e.status).splice(t,1))}}t.BasePeopleComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.SearchService),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.CryptoService),s.ɵɵdirectiveInject(m.ValidationService),s.ɵɵdirectiveInject(h.ModalService),s.ɵɵdirectiveInject(v.LogService),s.ɵɵdirectiveInject(g.SearchPipe),s.ɵɵdirectiveInject(f.UserNamePipe),s.ɵɵdirectiveInject(y.StateService))},S.ɵdir=s.ɵɵdefineDirective({type:S,viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(x,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.confirmModalRef=e.first)}}})},64713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NestedCheckboxComponent=void 0;const i=n(32621),r=n(82769),o=n(32621),a=n(96832),s=n(57490),l=n(99729);function c(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",7),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.set(t)})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",3),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("name",n.pascalize(e.id))("id",e.id)("ngModel",e.get()),o.ɵɵadvance(2),o.ɵɵproperty("for",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,5,e.id),"\n ")}}class d{constructor(){this.onSavedUser=new i.EventEmitter,this.onDeletedUser=new i.EventEmitter}get parentIndeterminate(){return!this.parentChecked&&this.checkboxes.some((e=>e.get()))}get parentChecked(){return this.checkboxes.every((e=>e.get()))}set parentChecked(e){this.checkboxes.forEach((t=>{t.set(e)}))}pascalize(e){return r.Utils.camelToPascalCase(e)}}t.NestedCheckboxComponent=d,d.ɵfac=function(e){return new(e||d)},d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["app-nested-checkbox"]],inputs:{parentId:"parentId",checkboxes:"checkboxes"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:17,vars:9,consts:[[1,"form-group","mb-0"],[1,"form-check","mt-1","form-check-block"],["type","checkbox",1,"form-check-input",3,"name","id","ngModel","indeterminate","ngModelChange"],[1,"form-check-label","font-weight-normal",3,"for"],[1,"form-group","form-group-child-check","mb-0"],["class","form-check mt-1",4,"ngFor","ngForOf"],[1,"form-check","mt-1"],["type","checkbox",1,"form-check-input",3,"name","id","ngModel","ngModelChange"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"input",2),o.ɵɵlistener("ngModelChange",(function(e){return t.parentChecked=e})),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",4),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,c,8,7,"div",5),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("name",t.pascalize(t.parentId))("id",t.parentId)("ngModel",t.parentChecked)("indeterminate",t.parentIndeterminate),o.ɵɵadvance(2),o.ɵɵproperty("for",t.parentId),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(8,7,t.parentId),"\n "),o.ɵɵadvance(6),o.ɵɵproperty("ngForOf",t.checkboxes))},directives:[a.CheckboxControlValueAccessor,a.NgControlStatus,a.NgModel,s.NgForOf],pipes:[l.I18nPipe],encapsulation:2})},13045:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSwitcherComponent=void 0;n(51554),n(63513);const r=n(82769),o=(n(27957),n(13637)),a=n(32621),s=n(63513),l=n(51554),c=n(57490),d=n(8863),p=n(6373),u=n(15370),m=n(44653),h=n(37342),v=n(68012),g=n(62985),f=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"div",16),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",17),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",18),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(6,1,"organizationIsDisabled"),"\n "))}function x(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",19),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",17),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",18),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(6,1,"accessingUsingProvider",e.activeOrganization.providerName),"\n ")}}const S=function(e){return["/organizations",e]};function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",20),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"i",22),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"span",23),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(6,S,e.id)),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",e.id===n.activeOrganization.id?"visible":"invisible"),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,4,"currentOrganization")),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",1),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"button",2),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelement(5,"app-avatar",3),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",1),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",4),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span"),a.ɵɵtext(12),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"small",5),a.ɵɵtext(15),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"div",6),a.ɵɵtext(20,"\n "),a.ɵɵelement(21,"i",7),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"div"),a.ɵɵtext(27,"\n "),a.ɵɵtemplate(28,y,8,3,"div",8),a.ɵɵtext(29,"\n "),a.ɵɵtemplate(30,x,8,4,"div",9),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n\n "),a.ɵɵelementStart(33,"bit-menu",null,10),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"ul",11),a.ɵɵtext(37,"\n "),a.ɵɵtemplate(38,b,12,8,"li",12),a.ɵɵtext(39,"\n "),a.ɵɵelement(40,"bit-menu-divider"),a.ɵɵtext(41,"\n "),a.ɵɵelementStart(42,"li",13),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"a",14),a.ɵɵtext(45,"\n "),a.ɵɵelement(46,"i",15),a.ɵɵtext(47),a.ɵɵpipe(48,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(52,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵreference(34),t=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("appA11yTitle",a.ɵɵpipeBind1(3,11,"organizationPicker"))("bitMenuTriggerFor",e),a.ɵɵadvance(3),a.ɵɵproperty("data",t.activeOrganization.name)("circle",!0)("dynamic",!0),a.ɵɵadvance(7),a.ɵɵtextInterpolate(t.activeOrganization.name),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(16,13,"organization")),a.ɵɵadvance(13),a.ɵɵproperty("ngIf",!t.activeOrganization.enabled),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.activeOrganization.isProviderUser),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",t.organizations),a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(48,15,"newOrganization"),"")}}class C{constructor(e,t){this.organizationService=e,this.i18nService=t,this.activeOrganization=null,this.organizations=[],this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.organizationService.getAll();this.organizations=e.filter((e=>o.NavigationPermissionsService.canAccessAdmin(e))).sort(r.Utils.getSortFunction(this.i18nService,"name")),this.loaded=!0}))}}t.OrganizationSwitcherComponent=C,C.ɵfac=function(e){return new(e||C)(a.ɵɵdirectiveInject(s.OrganizationService),a.ɵɵdirectiveInject(l.I18nService))},C.ɵcmp=a.ɵɵdefineComponent({type:C,selectors:[["app-organization-switcher"]],inputs:{activeOrganization:"activeOrganization"},decls:2,vars:1,consts:[["class","tw-flex",4,"ngIf"],[1,"tw-flex"],["type","button","id","pickerButton",1,"tw-flex","tw-items-center","tw-bg-background-alt","tw-border-none",3,"appA11yTitle","bitMenuTriggerFor"],["size","45",3,"data","circle","dynamic"],[1,"org-name","tw-ml-3"],[1,"tw-text-muted"],[1,"tw-ml-3"],["aria-hidden","true",1,"bwi","bwi-angle-down","tw-text-main"],["class","tw-ml-3 tw-border tw-border-solid tw-rounded tw-border-danger-500 tw-text-danger",4,"ngIf"],["class","tw-ml-3 tw-border tw-border-solid tw-rounded tw-border-info-500 tw-text-info",4,"ngIf"],["orgPickerMenu",""],["aria-labelledby","pickerButton",1,"tw-p-0","tw-m-0"],["class","tw-list-none tw-flex tw-flex-col","role","none",4,"ngFor","ngForOf"],["role","none",1,"tw-list-none"],["bit-menu-item","","routerLink","/create-organization"],[1,"bwi","bwi-plus","mr-2"],[1,"tw-ml-3","tw-border","tw-border-solid","tw-rounded","tw-border-danger-500","tw-text-danger"],[1,"tw-py-2","tw-px-5"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"tw-ml-3","tw-border","tw-border-solid","tw-rounded","tw-border-info-500","tw-text-info"],["role","none",1,"tw-list-none","tw-flex","tw-flex-col"],["bit-menu-item","",3,"routerLink"],[1,"bwi","bwi-check","mr-2",3,"ngClass"],[1,"tw-sr-only"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,w,53,17,"div",0),a.ɵɵtext(1,"\n")),2&e&&a.ɵɵproperty("ngIf",t.loaded&&null!=t.activeOrganization)},directives:[c.NgIf,d.A11yTitleDirective,p.MenuTriggerForDirective,u.AvatarComponent,m.MenuComponent,c.NgForOf,h.MenuDividerComponent,v.RouterLinkWithHref,g.MenuItemComponent,c.NgClass],pipes:[f.I18nPipe],encapsulation:2})},30563:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptComponent=void 0;const i=n(38991),r=n(32621),o=n(96832),a=n(45728),s=n(48198),l=n(8863),c=n(57490),d=n(53142),p=n(99729),u=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class m extends i.PasswordRepromptComponent{}t.PasswordRepromptComponent=m,m.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(m)))(t||m)}}(),m.ɵcmp=r.ɵɵdefineComponent({type:m,selectors:[["ng-component"]],features:[r.ɵɵInheritDefinitionFeature],decls:59,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appAutofocus","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"modal-footer"],["type","submit","appBlurClick","",1,"btn","btn-primary","btn-submit"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",7),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",8),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementStart(23,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"label",10),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",11),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"input",12),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"button",13),r.ɵɵlistener("click",(function(){return t.togglePassword()})),r.ɵɵpipe(34,"i18n"),r.ɵɵtext(35,"\n "),r.ɵɵelement(36,"i",14),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"div",15),r.ɵɵtext(43,"\n "),r.ɵɵelementStart(44,"button",16),r.ɵɵtext(45,"\n "),r.ɵɵelementStart(46,"span"),r.ɵɵtext(47),r.ɵɵpipe(48,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementStart(51,"button",17),r.ɵɵtext(52),r.ɵɵpipe(53,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(55,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(56,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(57,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n")),2&e&&(r.ɵɵadvance(10),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,9,"passwordConfirmation"),"\n "),r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,11,"passwordConfirmationDesc"),"\n\n "),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(27,13,"masterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(34,15,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(21,u,!t.showPassword,t.showPassword)),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(48,17,"ok")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(53,19,"cancel"),"\n "))},directives:[o.ɵNgNoValidate,o.NgControlStatusGroup,o.NgForm,o.DefaultValueAccessor,o.RequiredValidator,a.AutofocusDirective,s.InputVerbatimDirective,o.NgControlStatus,o.NgModel,l.A11yTitleDirective,c.NgClass,d.BlurClickDirective],pipes:[p.I18nPipe],encapsulation:2})},40946:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordStrengthComponent=void 0;n(51554);const i=n(32621),r=n(51554),o=n(57490);function a(e,t){if(1&e&&(i.ɵɵelementContainerStart(0),i.ɵɵtext(1),i.ɵɵelementContainerEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.text,"\n ")}}const s=function(e){return{width:e}};class l{constructor(e){this.i18nService=e,this.showText=!1,this.scoreWidth=0,this.color="bg-danger"}ngOnChanges(){switch(this.scoreWidth=null==this.score?0:20*(this.score+1),this.score){case 4:this.color="bg-success",this.text=this.i18nService.t("strong");break;case 3:this.color="bg-primary",this.text=this.i18nService.t("good");break;case 2:this.color="bg-warning",this.text=this.i18nService.t("weak");break;default:this.color="bg-danger",this.text=null!=this.score?this.i18nService.t("weak"):null}}}t.PasswordStrengthComponent=l,l.ɵfac=function(e){return new(e||l)(i.ɵɵdirectiveInject(r.I18nService))},l.ɵcmp=i.ɵɵdefineComponent({type:l,selectors:[["app-password-strength"]],inputs:{score:"score",showText:"showText"},features:[i.ɵɵNgOnChangesFeature],decls:8,vars:8,consts:[[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",3,"ngStyle"],[4,"ngIf"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"div",1),i.ɵɵtext(3,"\n "),i.ɵɵtemplate(4,a,2,1,"ng-container",2),i.ɵɵtext(5,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(6,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n")),2&e&&(i.ɵɵadvance(2),i.ɵɵclassMapInterpolate1("progress-bar ",t.color,""),i.ɵɵproperty("ngStyle",i.ɵɵpureFunction1(6,s,t.scoreWidth+"%")),i.ɵɵattribute("aria-valuenow",t.scoreWidth),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showText&&t.text))},directives:[o.NgStyle,o.NgIf],encapsulation:2})},48403:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PremiumBadgeComponent=void 0;n(45552);const i=n(32621),r=n(45552),o=n(25243),a=n(25108),s=n(99729);function l(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"button",1),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);return i.ɵɵnextContext().premiumRequired()})),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"premium"),"\n "))}class c{constructor(e){this.messagingService=e}premiumRequired(){this.messagingService.send("premiumRequired")}}t.PremiumBadgeComponent=c,c.ɵfac=function(e){return new(e||c)(i.ɵɵdirectiveInject(r.MessagingService))},c.ɵcmp=i.ɵɵdefineComponent({type:c,selectors:[["app-premium-badge"]],decls:3,vars:0,consts:[["bit-badge","","badgeType","success",3,"click",4,"appNotPremium"],["bit-badge","","badgeType","success",3,"click"]],template:function(e,t){1&e&&(i.ɵɵtext(0,"\n "),i.ɵɵtemplate(1,l,3,3,"button",0),i.ɵɵtext(2,"\n "))},directives:[o.NotPremiumDirective,a.BadgeComponent],pipes:[s.I18nPipe],encapsulation:2})},61841:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HomeGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(68012),s=n(62694);class l{constructor(e,t){this.router=e,this.authService=t}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.authService.getAuthStatus();return t===r.AuthenticationStatus.LoggedOut?this.router.createUrlTree(["/login"],{queryParams:e.queryParams}):t===r.AuthenticationStatus.Locked?this.router.createUrlTree(["/lock"],{queryParams:e.queryParams}):this.router.createUrlTree(["/vault"],{queryParams:e.queryParams})}))}}t.HomeGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.Router),o.ɵɵinject(s.AuthService))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},59964:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FooterComponent=void 0;n(73828);const r=n(32621),o=n(73828),a=n(99729);class s{constructor(e){this.platformUtilsService=e,this.year="2015"}ngOnInit(){return i(this,void 0,void 0,(function*(){this.year=(new Date).getFullYear().toString(),this.version=yield this.platformUtilsService.getApplicationVersion()}))}}t.FooterComponent=s,s.ɵfac=function(e){return new(e||s)(r.ɵɵdirectiveInject(o.PlatformUtilsService))},s.ɵcmp=r.ɵɵdefineComponent({type:s,selectors:[["app-footer"]],decls:15,vars:5,consts:[[1,"container","footer","text-muted"],[1,"row"],[1,"col"],[1,"col","text-center"],[1,"col","text-right"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"div",3),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("© ",t.year,", Bitwarden Inc."),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(11,2,"versionNumber",t.version),"\n "))},pipes:[a.I18nPipe],encapsulation:2})},16823:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FrontendLayoutComponent=void 0;n(73828);const r=n(32621),o=n(73828),a=n(68012),s=n(99729);class l{constructor(e){this.platformUtilsService=e,this.year="2015"}ngOnInit(){return i(this,void 0,void 0,(function*(){this.year=(new Date).getFullYear().toString(),this.version=yield this.platformUtilsService.getApplicationVersion(),document.body.classList.add("layout_frontend")}))}ngOnDestroy(){document.body.classList.remove("layout_frontend")}}t.FrontendLayoutComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.PlatformUtilsService))},l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["app-frontend-layout"]],decls:8,vars:5,consts:[[1,"container","my-5","text-muted","text-center"]],template:function(e,t){1&e&&(r.ɵɵelement(0,"router-outlet"),r.ɵɵtext(1,"\n"),r.ɵɵelementStart(2,"div",0),r.ɵɵtext(3),r.ɵɵelement(4,"br"),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n © ",t.year,", Bitwarden Inc. "),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(6,2,"versionNumber",t.version),"\n"))},directives:[a.RouterOutlet],pipes:[s.I18nPipe],encapsulation:2})},53280:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NavbarComponent=void 0;n(32621),n(8470),n(51554),n(45552),n(63513),n(73828),n(68291),n(9724),n(30694);const r=n(82769),o=n(13637),a=n(32621),s=n(45552),l=n(73828),c=n(30694),d=n(68291),p=n(9724),u=n(63513),m=n(51554),h=n(8470),v=n(57490),g=n(68012),f=n(8863),y=n(6373),x=n(44653),S=n(37342),b=n(62985),w=n(39159),C=n(15370),I=n(99729),E=function(e){return["/organizations",e]};function P(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(4,E,e.organizations[0].id)),a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"organizations"))}}const O=function(e){return["/providers",e]};function k(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(4,O,e.providers[0].id)),a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"provider"))}}function A(e,t){1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",31),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"provider")))}function T(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,k,6,6,"li",11),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,A,6,3,"li",11),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",1==e.providers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.providers.length>1)}}function M(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",32),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"app-avatar",33),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",34),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"span"),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"small",35),a.ɵɵtext(11),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("data",e.name)("email",e.email)("circle",!0),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,5,"loggedInAs")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(e.name)}}const B=function(e){return{"nav-background-alt":e}};class D{constructor(e,t,n,i,r,o,a,s,l){this.messagingService=e,this.platformUtilsService=t,this.tokenService=n,this.providerService=i,this.syncService=r,this.organizationService=o,this.i18nService=a,this.broadcasterService=s,this.ngZone=l,this.selfHosted=!1,this.providers=[],this.organizations=[],this.selfHosted=this.platformUtilsService.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.name=yield this.tokenService.getName(),this.email=yield this.tokenService.getEmail(),null!=this.name&&""!==this.name.trim()||(this.name=this.email),null==(yield this.syncService.getLastSync())&&(yield this.syncService.fullSync(!1)),this.providers=yield this.providerService.getAll(),this.organizations=yield this.buildOrganizations(),this.broadcasterService.subscribe(this.constructor.name,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("organizationCreated"===e.command)this.organizations.length<1&&(this.organizations=yield this.buildOrganizations())}))))}))))}))}buildOrganizations(){return i(this,void 0,void 0,(function*(){return(yield this.organizationService.getAll()).filter((e=>o.NavigationPermissionsService.canAccessAdmin(e))).sort(r.Utils.getSortFunction(this.i18nService,"name"))}))}lock(){this.messagingService.send("lockVault")}logOut(){this.messagingService.send("logout")}}t.NavbarComponent=D,D.ɵfac=function(e){return new(e||D)(a.ɵɵdirectiveInject(s.MessagingService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.TokenService),a.ɵɵdirectiveInject(d.ProviderService),a.ɵɵdirectiveInject(p.SyncService),a.ɵɵdirectiveInject(u.OrganizationService),a.ɵɵdirectiveInject(m.I18nService),a.ɵɵdirectiveInject(h.BroadcasterService),a.ɵɵdirectiveInject(a.NgZone))},D.ɵcmp=a.ɵɵdefineComponent({type:D,selectors:[["app-navbar"]],decls:106,vars:38,consts:[[1,"navbar","navbar-expand","navbar-dark",3,"ngClass"],[1,"container"],["routerLink","/",1,"navbar-brand",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-shield"],[1,"collapse","navbar-collapse"],[1,"navbar-nav"],["routerLinkActive","active",1,"nav-item"],["routerLink","/vault",1,"nav-link"],["routerLink","/sends",1,"nav-link"],["routerLink","/tools",1,"nav-link"],["routerLink","/reports",1,"nav-link"],["class","nav-item","routerLinkActive","active",4,"ngIf"],[4,"ngIf"],[1,"navbar-nav","flex-row","ml-md-auto","d-none","d-md-flex"],[1,"tw-border-0","tw-bg-transparent","tw-text-alt2","tw-opacity-70","hover:tw-opacity-90",3,"bitMenuTriggerFor"],["aria-hidden","true",1,"bwi","bwi-user-circle","bwi-lg"],["aria-hidden","true",1,"bwi","bwi-caret-down","bwi-sm"],[1,"dropdown-menu"],["accountMenu",""],[1,"tw-max-w-[300px]","tw-min-w-[200px]","tw-flex","tw-flex-col"],["class","tw-flex tw-items-center tw-leading-tight tw-text-info tw-py-1 tw-px-4","appStopProp","",4,"ngIf"],["bit-menu-item","","routerLink","/settings/account"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-user"],["bit-menu-item","","href","https://bitwarden.com/help/","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-question-circle"],["bit-menu-item","","href","https://bitwarden.com/download/","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-download"],["bit-menu-item","","type","button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lock"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sign-out"],[1,"nav-link",3,"routerLink"],["routerLink","/providers",1,"nav-link"],["appStopProp","",1,"tw-flex","tw-items-center","tw-leading-tight","tw-text-info","tw-py-1","tw-px-4"],["size","25","fontSize","14",3,"data","email","circle"],[1,"tw-ml-2","tw-block","tw-overflow-hidden","tw-whitespace-nowrap"],[1,"tw-text-muted","tw-block","tw-overflow-hidden","tw-whitespace-nowrap"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"nav",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"a",2),a.ɵɵpipe(5,"i18n"),a.ɵɵtext(6,"\n "),a.ɵɵelement(7,"i",3),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",4),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"ul",5),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"li",6),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"a",7),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"li",6),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"a",8),a.ɵɵtext(24),a.ɵɵpipe(25,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"li",6),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"a",9),a.ɵɵtext(31),a.ɵɵpipe(32,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"li",6),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"a",10),a.ɵɵtext(38),a.ɵɵpipe(39,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵtemplate(42,P,6,6,"li",11),a.ɵɵtext(43,"\n "),a.ɵɵtemplate(44,T,6,2,"ng-container",12),a.ɵɵtext(45,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"ul",13),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"li"),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"button",14),a.ɵɵtext(53,"\n "),a.ɵɵelement(54,"i",15),a.ɵɵtext(55,"\n "),a.ɵɵelement(56,"i",16),a.ɵɵtext(57,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(58,"\n "),a.ɵɵelementStart(59,"bit-menu",17,18),a.ɵɵtext(61,"\n "),a.ɵɵelementStart(62,"div",19),a.ɵɵtext(63,"\n "),a.ɵɵtemplate(64,M,14,7,"div",20),a.ɵɵtext(65,"\n "),a.ɵɵelement(66,"bit-menu-divider"),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"a",21),a.ɵɵtext(69,"\n "),a.ɵɵelement(70,"i",22),a.ɵɵtext(71),a.ɵɵpipe(72,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(73,"\n "),a.ɵɵelementStart(74,"a",23),a.ɵɵtext(75,"\n "),a.ɵɵelement(76,"i",24),a.ɵɵtext(77),a.ɵɵpipe(78,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(79,"\n "),a.ɵɵelementStart(80,"a",25),a.ɵɵtext(81,"\n "),a.ɵɵelement(82,"i",26),a.ɵɵtext(83),a.ɵɵpipe(84,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(85,"\n "),a.ɵɵelement(86,"bit-menu-divider"),a.ɵɵtext(87,"\n "),a.ɵɵelementStart(88,"button",27),a.ɵɵlistener("click",(function(){return t.lock()})),a.ɵɵtext(89,"\n "),a.ɵɵelement(90,"i",28),a.ɵɵtext(91),a.ɵɵpipe(92,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(93,"\n "),a.ɵɵelementStart(94,"button",27),a.ɵɵlistener("click",(function(){return t.logOut()})),a.ɵɵtext(95,"\n "),a.ɵɵelement(96,"i",29),a.ɵɵtext(97),a.ɵɵpipe(98,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(99,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(100,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(101,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(102,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(103,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(104,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(105,"\n")),2&e){const e=a.ɵɵreference(60);a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(36,B,t.selfHosted)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind2(5,15,"pageTitle","Bitwarden")),a.ɵɵadvance(13),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(18,18,"vaults")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(25,20,"send")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(32,22,"tools")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(39,24,"reports")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.organizations.length>=1),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.providers.length>=1),a.ɵɵadvance(8),a.ɵɵproperty("bitMenuTriggerFor",e),a.ɵɵadvance(12),a.ɵɵproperty("ngIf",t.name),a.ɵɵadvance(7),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(72,26,"accountSettings"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(78,28,"getHelp"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(84,30,"getApps"),"\n "),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(92,32,"lockNow"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(98,34,"logOut"),"\n ")}},directives:[v.NgClass,g.RouterLinkWithHref,f.A11yTitleDirective,g.RouterLinkActive,v.NgIf,y.MenuTriggerForDirective,x.MenuComponent,S.MenuDividerComponent,b.MenuItemComponent,w.StopPropDirective,C.AvatarComponent],pipes:[I.I18nPipe],encapsulation:2})},53767:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserLayoutComponent=void 0;const i=n(32621),r=n(53280),o=n(68012),a=n(59964);class s{ngOnInit(){document.body.classList.remove("layout_frontend")}}t.UserLayoutComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵcmp=i.ɵɵdefineComponent({type:s,selectors:[["app-user-layout"]],decls:6,vars:0,template:function(e,t){1&e&&(i.ɵɵelement(0,"app-navbar"),i.ɵɵtext(1,"\n"),i.ɵɵelement(2,"router-outlet"),i.ɵɵtext(3,"\n"),i.ɵɵelement(4,"app-footer"),i.ɵɵtext(5,"\n"))},directives:[r.NavbarComponent,o.RouterOutlet,a.FooterComponent],encapsulation:2})},30322:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LooseComponentsModule=void 0;const i=n(65691),r=n(84696),o=n(38595),a=n(98528),s=n(32621);class l{}t.LooseComponentsModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({imports:[[r.SharedModule,o.VaultFilterModule,a.OrganizationBadgeModule,i.PipesModule]]})},53397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GetOrgNameFromIdPipe=void 0;const i=n(32621);class r{transform(e,t){var n;return null===(n=t.find((t=>t.id===e)))||void 0===n?void 0:n.name}}t.GetOrgNameFromIdPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"orgNameFromId",type:r,pure:!0})},65691:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PipesModule=void 0;const i=n(32621);class r{}t.PipesModule=r,r.ɵfac=function(e){return new(e||r)},r.ɵmod=i.ɵɵdefineNgModule({type:r}),r.ɵinj=i.ɵɵdefineInjector({imports:[[]]})},84696:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SharedModule=void 0;const i=n(83072),r=n(57490),o=n(3276),a=n(34956),s=n(76775),l=n(12352),c=n(11155),d=n(3951),p=n(59413),u=n(53151),m=n(81114),h=n(78611),v=n(59267),g=n(32406),f=n(31861),y=n(73986),x=n(57548),S=n(77015),b=n(54556),w=n(54996),C=n(74299),I=n(66173),E=n(56649),P=n(12734),O=n(64273),k=n(80585),A=n(96119),T=n(23806),M=n(53734),B=n(88609),D=n(96133),R=n(65989),F=n(99643),U=n(17964),V=n(56168),N=n(7972),_=n(12774),j=n(99692),z=n(91679),H=n(84782),L=n(98204),K=n(85247),q=n(16407),G=n(13418),W=n(96053),$=n(22671),Y=n(81262),Q=n(2487),J=n(72377),Z=n(66598),X=n(15419),ee=n(32584),te=n(96832),ne=n(68012),ie=n(30202),re=n(37407),oe=n(68290),ae=n(44926),se=n(32621);r.registerLocaleData(o.default,"af"),r.registerLocaleData(a.default,"az"),r.registerLocaleData(s.default,"be"),r.registerLocaleData(l.default,"bg"),r.registerLocaleData(c.default,"bn"),r.registerLocaleData(d.default,"bs"),r.registerLocaleData(p.default,"ca"),r.registerLocaleData(u.default,"cs"),r.registerLocaleData(m.default,"da"),r.registerLocaleData(h.default,"de"),r.registerLocaleData(v.default,"el"),r.registerLocaleData(g.default,"en-GB"),r.registerLocaleData(f.default,"en-IN"),r.registerLocaleData(y.default,"eo"),r.registerLocaleData(x.default,"es"),r.registerLocaleData(S.default,"et"),r.registerLocaleData(b.default,"fi"),r.registerLocaleData(w.default,"fil"),r.registerLocaleData(C.default,"fr"),r.registerLocaleData(I.default,"he"),r.registerLocaleData(E.default,"hi"),r.registerLocaleData(P.default,"hr"),r.registerLocaleData(O.default,"hu"),r.registerLocaleData(k.default,"id"),r.registerLocaleData(A.default,"it"),r.registerLocaleData(T.default,"ja"),r.registerLocaleData(M.default,"ka"),r.registerLocaleData(B.default,"km"),r.registerLocaleData(D.default,"kn"),r.registerLocaleData(R.default,"ko"),r.registerLocaleData(F.default,"lv"),r.registerLocaleData(U.default,"ml"),r.registerLocaleData(V.default,"nb"),r.registerLocaleData(N.default,"nl"),r.registerLocaleData(_.default,"nn"),r.registerLocaleData(j.default,"pl"),r.registerLocaleData(z.default,"pt-BR"),r.registerLocaleData(H.default,"pt-PT"),r.registerLocaleData(L.default,"ro"),r.registerLocaleData(K.default,"ru"),r.registerLocaleData(q.default,"si"),r.registerLocaleData(G.default,"sk"),r.registerLocaleData(W.default,"sl"),r.registerLocaleData($.default,"sr"),r.registerLocaleData(Y.default,"sv"),r.registerLocaleData(Q.default,"tr"),r.registerLocaleData(J.default,"uk"),r.registerLocaleData(Z.default,"vi"),r.registerLocaleData(X.default,"zh-CN"),r.registerLocaleData(ee.default,"zh-TW");class le{}t.SharedModule=le,le.ɵfac=function(e){return new(e||le)},le.ɵmod=se.ɵɵdefineNgModule({type:le}),le.ɵinj=se.ɵɵdefineInjector({providers:[r.DatePipe],imports:[[r.CommonModule,i.DragDropModule,te.FormsModule,re.InfiniteScrollModule,ae.JslibModule,te.ReactiveFormsModule,ne.RouterModule,ie.BadgeModule,ie.ButtonModule,ie.CalloutModule,oe.ToastrModule,ie.BadgeModule,ie.ButtonModule,ie.MenuModule],r.CommonModule,i.DragDropModule,te.FormsModule,re.InfiniteScrollModule,ae.JslibModule,te.ReactiveFormsModule,ne.RouterModule,ie.BadgeModule,ie.ButtonModule,ie.CalloutModule,oe.ToastrModule,ie.BadgeModule,ie.ButtonModule,ie.MenuModule]})},43310:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionFilterComponent=void 0;const i=n(57563),r=n(32621),o=n(57490),a=n(99729),s=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",16),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).collapse(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",3),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(4);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,4,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed(e.node))("aria-controls",e.node.name+"_children"),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(6,s,t.isCollapsed(e.node),!t.isCollapsed(e.node)))}}function c(e,t){1&e&&r.ɵɵelement(0,"i",17)}function d(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}const p=function(e){return{$implicit:e}};function u(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",18),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,d,2,0,"ng-container",8),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵnextContext(2);const t=r.ɵɵreference(3);r.ɵɵproperty("id",e.node.name+"_children"),r.ɵɵadvance(2),r.ɵɵproperty("ngTemplateOutlet",t)("ngTemplateOutletContext",r.ɵɵpureFunction1(3,p,e.children))}}const m=function(e){return{active:e}};function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",11),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,l,5,9,"button",12),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",13),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyFilter(t.node)})),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,1,0,"i",14),r.ɵɵtext(9),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,u,4,5,"ul",15),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(5,m,e.node.id===n.activeFilter.selectedCollectionId)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.children.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",0===e.children.length),r.ɵɵadvance(1),r.ɵɵtextInterpolate1(" ",e.node.name,"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.children.length&&!n.isCollapsed(e.node))}}function v(e,t){if(1&e&&(r.ɵɵtext(0,"\n "),r.ɵɵtemplate(1,h,14,7,"li",9),r.ɵɵtext(2,"\n ")),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵproperty("ngForOf",e)}}function g(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",6),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,v,3,1,"ng-template",null,7,r.ɵɵtemplateRefExtractor),r.ɵɵtext(4,"\n "),r.ɵɵtemplate(5,g,2,0,"ng-container",8),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵreference(3),t=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵproperty("ngTemplateOutlet",e)("ngTemplateOutletContext",r.ɵɵpureFunction1(2,p,t.nestedCollections))}}function y(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",2),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.toggleCollapse(t.collectionsGrouping)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",3),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"h3",4),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,f,7,4,"ul",5),r.ɵɵtext(16,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,5,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed(e.collectionsGrouping)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(9,s,e.isCollapsed(e.collectionsGrouping),!e.isCollapsed(e.collectionsGrouping))),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,7,e.collectionsGrouping.name),""),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed(e.collectionsGrouping))}}class x extends i.CollectionFilterComponent{}t.CollectionFilterComponent=x,x.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(x)))(t||x)}}(),x.ɵcmp=r.ɵɵdefineComponent({type:x,selectors:[["app-collection-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-heading"],["aria-controls","collection-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-title"],["id","collection-filters","class","filter-options",4,"ngIf"],["id","collection-filters",1,"filter-options"],["recursiveCollections",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["class","toggle-button",3,"title","click",4,"ngIf"],[1,"filter-button",3,"click"],["class","bwi bwi-collection bwi-fw","aria-hidden","true",4,"ngIf"],["class","nested-filter-options",3,"id",4,"ngIf"],[1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-collection","bwi-fw"],[1,"nested-filter-options",3,"id"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,y,17,12,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[o.NgIf,o.NgClass,o.NgTemplateOutlet,o.NgForOf],pipes:[a.I18nPipe],encapsulation:2})},94642:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderFilterComponent=void 0;const i=n(73821),r=n(32621),o=n(57490),a=n(8863),s=n(99729),l=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function c(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",19),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).toggleCollapse(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",3),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(4);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,4,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed(e.node))("aria-controls",e.node.name+"_children"),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(6,l,t.isCollapsed(e.node),!t.isCollapsed(e.node)))}}function d(e,t){1&e&&r.ɵɵelement(0,"i",20)}function p(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",21),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).editFolder(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",22),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"editFolder"))}function u(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}const m=function(e){return{$implicit:e}};function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",23),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,u,2,0,"ng-container",10),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵnextContext(2);const t=r.ɵɵreference(3);r.ɵɵproperty("id",e.node.name+"_children"),r.ɵɵadvance(2),r.ɵɵproperty("ngTemplateOutlet",t)("ngTemplateOutletContext",r.ɵɵpureFunction1(3,m,e.children))}}const v=function(e){return{active:e}};function g(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",12),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",13),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,c,5,9,"button",14),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",15),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyFilter(t.node)})),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,d,1,0,"i",16),r.ɵɵtext(9),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,p,5,3,"button",17),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,h,4,5,"ul",18),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,v,e.node.id===n.activeFilter.selectedFolderId&&n.activeFilter.selectedFolder)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.children.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",0===e.children.length),r.ɵɵadvance(1),r.ɵɵtextInterpolate1(" ",e.node.name,"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.node.id),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.children.length&&!n.isCollapsed(e.node))}}function f(e,t){if(1&e&&(r.ɵɵtext(0,"\n "),r.ɵɵtemplate(1,g,16,8,"li",11),r.ɵɵtext(2,"\n ")),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵproperty("ngForOf",e)}}function y(e,t){1&e&&r.ɵɵelementContainer(0)}function x(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",8),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,f,3,1,"ng-template",null,9,r.ɵɵtemplateRefExtractor),r.ɵɵtext(4,"\n "),r.ɵɵtemplate(5,y,1,0,"ng-container",10),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵreference(3),t=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵproperty("ngTemplateOutlet",e)("ngTemplateOutletContext",r.ɵɵpureFunction1(2,m,t.nestedFolders))}}function S(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",2),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.toggleCollapse(t.foldersGrouping)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",3),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"h3",4),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",5),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addFolder()})),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",6),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵtemplate(21,x,7,4,"ul",7),r.ɵɵtext(22,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed(e.foldersGrouping)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(12,l,e.isCollapsed(e.foldersGrouping),!e.isCollapsed(e.foldersGrouping))),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,8,"folders"),""),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,10,"addFolder")),r.ɵɵadvance(7),r.ɵɵproperty("ngIf",!e.isCollapsed(e.foldersGrouping))}}class b extends i.FolderFilterComponent{}t.FolderFilterComponent=b,b.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(b)))(t||b)}}(),b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-folder-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-heading"],["aria-controls","folder-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-title"],[1,"text-muted","ml-auto","add-button",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["id","folder-filters","class","filter-options",4,"ngIf"],["id","folder-filters",1,"filter-options"],["recursiveFolders",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["class","toggle-button",3,"title","click",4,"ngIf"],[1,"filter-button",3,"click"],["class","bwi bwi-fw bwi-folder","aria-hidden","true",4,"ngIf"],["class","edit-button",3,"appA11yTitle","click",4,"ngIf"],["class","nested-filter-options",3,"id",4,"ngIf"],[1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-folder"],[1,"edit-button",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-pencil","bwi-fw"],[1,"nested-filter-options",3,"id"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,S,23,15,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.hide)},directives:[o.NgIf,o.NgClass,a.A11yTitleDirective,o.NgTemplateOutlet,o.NgForOf],pipes:[s.I18nPipe],encapsulation:2})},71735:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LinkSsoComponent=void 0;n(68012);const r=n(25563),o=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(27957),n(32621)),a=n(73828),s=n(51554),l=n(91674),c=n(62694),d=n(68012),p=n(1659),u=n(84275),m=n(73569),h=n(56071),v=n(36631),g=n(1142),f=n(99729);class y extends r.SsoComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(i,r,t,o,l,e,n,a,c,s,d),this.returnUri="/settings/organizations",this.returnUri="/settings/organizations",this.redirectUri=window.location.origin+"/sso-connector.html",this.clientId="web"}ngAfterContentInit(){return i(this,void 0,void 0,(function*(){this.identifier=this.organization.identifier}))}}t.LinkSsoComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.PlatformUtilsService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ApiService),o.ɵɵdirectiveInject(c.AuthService),o.ɵɵdirectiveInject(d.Router),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.CryptoFunctionService),o.ɵɵdirectiveInject(u.PasswordGenerationService),o.ɵɵdirectiveInject(m.StateService),o.ɵɵdirectiveInject(h.EnvironmentService),o.ɵɵdirectiveInject(v.LogService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["app-link-sso"]],inputs:{organization:"organization"},features:[o.ɵɵInheritDefinitionFeature],decls:6,vars:3,consts:[["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-link"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"a",0),o.ɵɵlistener("click",(function(){return t.submit(t.returnUri,!0)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",1),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"linkSso"),"\n"))},directives:[g.StopClickDirective],pipes:[f.I18nPipe],encapsulation:2})},24188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationFilterComponent=void 0;const i=n(9177),r=n(32621),o=n(57490),a=n(68012),s=n(6373),l=n(44653),c=n(14253),d=n(99729);function p(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",4),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",5),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",6),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"button",7),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",8),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"li",9),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",6),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"a",10),r.ɵɵtext(21,"\n "),r.ɵɵelement(22,"i",11),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(12,2,"myVault"),"\n "),r.ɵɵadvance(12),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(24,4,"newOrganization"),"\n "))}function u(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",22),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",23),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"bit-menu",24,25),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"app-organization-options",26),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵreference(8),t=r.ɵɵnextContext().$implicit;r.ɵɵadvance(2),r.ɵɵproperty("bitMenuTriggerFor",e),r.ɵɵadvance(8),r.ɵɵproperty("organization",t)}}const m=function(e){return{active:e}};function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyOrganizationFilter(t)})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,u,13,2,"ng-container",0),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(3,m,e.id===n.activeFilter.selectedOrganizationId)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.name,"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.id===n.activeFilter.selectedOrganizationId)}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",17),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,h,12,5,"li",18),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",9),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",6),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",10),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",11),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,2,"newOrganization"),"\n ")}}const g=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function f(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).toggleCollapse()})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",14),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).clearFilter()})),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,v,16,4,"ul",16),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(10,g,e.isCollapsed,!e.isCollapsed)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,!e.hasActiveFilter)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,8,e.organizationGrouping.name),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed)}}function y(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",27),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.organizations[0].name,"\n ")}}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyOrganizationFilter(t)})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerStart(9),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"button",22),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"i",23),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"bit-menu",24,25),r.ɵɵtext(18,"\n "),r.ɵɵelement(19,"app-organization-options",26),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementContainerEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵreference(17),i=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,m,e.id===i.activeFilter.selectedOrganizationId)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.name,"\n "),r.ɵɵadvance(4),r.ɵɵproperty("bitMenuTriggerFor",n),r.ɵɵadvance(8),r.ɵɵproperty("organization",e)}}function S(e,t){1&e&&(r.ɵɵelementStart(0,"li",9),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",10),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",11),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(8,1,"newOrganization"),"\n "))}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"ul",17),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",19),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",6),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).applyMyVaultFilter()})),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",8),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,x,24,6,"li",18),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,S,11,3,"li",28),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,m,e.activeFilter.myVaultOnly)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,4,"myVault"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!("singleOrganizationPolicy"===e.displayMode))}}function w(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).toggleCollapse()})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",14),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).clearFilter()})),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,b,18,8,"ul",16),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(10,g,e.isCollapsed,!e.isCollapsed)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,!e.hasActiveFilter)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,8,e.organizationGrouping.name),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed)}}function C(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerStart(2,1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,p,29,6,"ng-container",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,f,17,15,"ng-container",2),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,y,10,1,"ng-container",2),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,w,17,15,"ng-container",3),r.ɵɵtext(11,"\n "),r.ɵɵelementContainerEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"hr"),r.ɵɵtext(14,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngSwitch",e.displayMode),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","noOrganizations"),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","personalOwnershipPolicy"),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","singleOrganizationAndPersonalOwnershipPolicies")}}class I extends i.OrganizationFilterComponent{constructor(){super(...arguments),this.displayText="allVaults"}}t.OrganizationFilterComponent=I,I.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(I)))(t||I)}}(),I.ɵcmp=r.ɵɵdefineComponent({type:I,selectors:[["app-organization-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],[1,"filter-options"],[1,"filter-option","active"],[1,"filter-buttons"],[1,"filter-button"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-user"],[1,"filter-option"],["href","#","routerLink","/create-organization",1,"filter-button"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"filter-heading"],["aria-controls","organization-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-button",3,"ngClass","click"],["id","organization-filters","class","filter-options",4,"ngIf"],["id","organization-filters",1,"filter-options"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-business"],[1,"org-options","ml-auto",3,"bitMenuTriggerFor"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v"],[1,"filter-organization-options"],["orgMenu",""],[3,"organization"],[1,"filter-button","active"],["class","filter-option",4,"ngIf"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,C,15,4,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.hide)},directives:[o.NgIf,o.NgSwitch,o.NgSwitchCase,o.NgSwitchDefault,a.RouterLinkWithHref,o.NgClass,o.NgForOf,s.MenuTriggerForDirective,l.MenuComponent,c.OrganizationOptionsComponent],pipes:[d.I18nPipe],encapsulation:2})},14253:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationOptionsComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(73828),n(62166),n(9724);const r=n(49906),o=n(82769),a=(n(27957),n(27784)),s=n(32621),l=n(73828),c=n(51554),d=n(91674),p=n(9724),u=n(85714),m=n(62166),h=n(36631),v=n(57490),g=n(71735),f=n(99729);function y(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",2),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",3),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.toggleResetPasswordEnrollment(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",9),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"enrollPasswordReset"),"\n "))}function S(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.toggleResetPasswordEnrollment(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",10),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"withdrawPasswordReset"),"\n "))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.unlinkSso(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",13),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"unlinkSso"),"\n "))}function w(e,t){if(1&e&&(s.ɵɵtext(0,"\n "),s.ɵɵelementStart(1,"app-link-sso",14),s.ɵɵtext(2," "),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n ")),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(1),s.ɵɵproperty("organization",e.organization)}}function C(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,b,5,3,"button",11),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,w,4,1,"ng-template",null,12,s.ɵɵtemplateRefExtractor),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵreference(5),t=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organization.ssoBound)("ngIfElse",e)}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",4),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,x,5,3,"button",5),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,5,3,"button",5),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,7,2,"ng-container",0),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"button",6),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext();return t.leave(t.organization)})),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"i",7),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowEnrollmentChanges(e.organization)&&!e.organization.resetPasswordEnrolled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowEnrollmentChanges(e.organization)&&e.organization.resetPasswordEnrolled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.organization.useSso&&e.organization.identifier),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(12,4,"leave"),"\n ")}}class E{constructor(e,t,n,i,r,o,a){this.platformUtilsService=e,this.i18nService=t,this.apiService=n,this.syncService=i,this.cryptoService=r,this.policyService=o,this.logService=a,this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.policies=yield this.policyService.getAll(r.PolicyType.ResetPassword),this.loaded=!0}))}allowEnrollmentChanges(e){if(e.usePolicies&&e.useResetPassword&&e.hasPublicAndPrivateKeys){const t=this.policies.find((t=>t.organizationId===e.id));if(null!=t&&t.enabled)return!e.resetPasswordEnrolled||!t.data.autoEnrollEnabled}return!1}showEnrolledStatus(e){return e.useResetPassword&&e.resetPasswordEnrolled&&this.policies.some((t=>t.organizationId===e.id&&t.enabled))}unlinkSso(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("unlinkSsoConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.apiService.deleteSsoUser(e.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,"Unlinked SSO"),yield this.load()}catch(t){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),this.logService.error(t)}}))}leave(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("leaveOrganizationConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.apiService.postLeaveOrganization(e.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("leftOrganization")),yield this.load()}catch(t){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),this.logService.error(t)}}))}toggleResetPasswordEnrollment(e){return i(this,void 0,void 0,(function*(){let t=null,n="withdrawPasswordResetSuccess";if(e.resetPasswordEnrolled){const n=new a.OrganizationUserResetPasswordEnrollmentRequest;n.resetPasswordKey=t,this.actionPromise=this.apiService.putOrganizationUserResetPasswordEnrollment(e.id,e.userId,n).then((()=>this.syncService.fullSync(!0)))}else{if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("resetPasswordEnrollmentWarning"),null,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return;this.actionPromise=this.apiService.getOrganizationKeys(e.id).then((r=>i(this,void 0,void 0,(function*(){if(null==r)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const i=o.Utils.fromB64ToArray(r.publicKey),s=yield this.cryptoService.getEncKey(),l=yield this.cryptoService.rsaEncrypt(s.key,i.buffer);t=l.encryptedString,n="enrollPasswordResetSuccess";const c=new a.OrganizationUserResetPasswordEnrollmentRequest;return c.resetPasswordKey=t,this.apiService.putOrganizationUserResetPasswordEnrollment(e.id,e.userId,c)})))).then((()=>this.syncService.fullSync(!0)))}try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(n)),yield this.load()}catch(r){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),r.message),this.logService.error(r)}}))}}t.OrganizationOptionsComponent=E,E.ɵfac=function(e){return new(e||E)(s.ɵɵdirectiveInject(l.PlatformUtilsService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.ApiService),s.ɵɵdirectiveInject(p.SyncService),s.ɵɵdirectiveInject(u.CryptoService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(h.LogService))},E.ɵcmp=s.ɵɵdefineComponent({type:E,selectors:[["app-organization-options"]],inputs:{organization:"organization"},decls:4,vars:2,consts:[[4,"ngIf"],["class","tw-max-w-[300px] tw-min-w-[200px] tw-flex tw-flex-col",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted","tw-m-2",3,"title"],[1,"sr-only"],[1,"tw-max-w-[300px]","tw-min-w-[200px]","tw-flex","tw-flex-col"],["class","dropdown-item",3,"click",4,"ngIf"],[1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sign-out"],[1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],["class","dropdown-item",3,"click",4,"ngIf","ngIfElse"],["linkSso",""],["aria-hidden","true",1,"bwi","bwi-fw","bwi-chain-broken"],[3,"organization"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,y,9,6,"ng-container",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,I,14,6,"div",1),s.ɵɵtext(3,"\n")),2&e&&(s.ɵɵproperty("ngIf",!t.loaded),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.loaded))},directives:[v.NgIf,g.LinkSsoComponent],pipes:[f.I18nPipe],encapsulation:2})},38371:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StatusFilterComponent=void 0;const i=n(80617),r=n(32621),o=n(57490),a=n(99729),s=function(e){return{active:e}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).applyFilter("favorites")})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",7),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,s,"favorites"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(8,2,"favorites"),"\n ")}}function c(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).applyFilter("trash")})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",8),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,s,"trash"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(8,2,"trash"),"\n ")}}function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().applyFilter("all")})),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",5),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,l,11,6,"li",6),r.ɵɵtext(17,"\n "),r.ɵɵtemplate(18,c,11,6,"li",6),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,s,"all"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,4,"allItems"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!e.hideFavorites),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.hideTrash)}}class p extends i.StatusFilterComponent{}t.StatusFilterComponent=p,p.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(p)))(t||p)}}(),p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-status-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-filter"],["class","filter-option",3,"ngClass",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-star"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,21,8,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[o.NgIf,o.NgClass],pipes:[a.I18nPipe],encapsulation:2})},73937:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFilterComponent=void 0;const i=n(74951),r=n(32621),o=n(57490),a=n(99729),s=function(e){return{active:e}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"ul",4),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",5),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",6),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Login)})),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",8),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"li",5),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",6),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Card)})),r.ɵɵtext(19,"\n "),r.ɵɵelement(20,"i",9),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"li",5),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"span",6),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Identity)})),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"i",10),r.ɵɵtext(33),r.ɵɵpipe(34,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"li",5),r.ɵɵtext(39,"\n "),r.ɵɵelementStart(40,"span",6),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.SecureNote)})),r.ɵɵtext(43,"\n "),r.ɵɵelement(44,"i",11),r.ɵɵtext(45),r.ɵɵpipe(46,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n"),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(16,s,e.activeFilter.cipherType===e.cipherTypeEnum.Login)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(10,8,"typeLogin"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(18,s,e.activeFilter.cipherType===e.cipherTypeEnum.Card)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(22,10,"typeCard"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(20,s,e.activeFilter.cipherType===e.cipherTypeEnum.Identity)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(34,12,"typeIdentity"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(22,s,e.activeFilter.cipherType===e.cipherTypeEnum.SecureNote)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(46,14,"typeSecureNote"),"\n ")}}const c=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};class d extends i.TypeFilterComponent{}t.TypeFilterComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-type-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:15,vars:12,consts:[[1,"filter-heading"],["aria-controls","type-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],["id","type-filters","class","filter-options",4,"ngIf"],["id","type-filters",1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-globe"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-credit-card"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-id-card"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sticky-note"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",1),r.ɵɵlistener("click",(function(){return t.toggleCollapse()})),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelement(5,"i",2),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h3"),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n"),r.ɵɵtemplate(13,l,50,24,"ul",3),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,5,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(9,c,t.isCollapsed,!t.isCollapsed)),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(10,7,"types"),""),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!t.isCollapsed))},directives:[o.NgClass,o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},91843:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterComponent=void 0;const r=n(32621),o=n(48237),a=(n(27113),n(32621)),s=n(27113),l=n(57490),c=n(8863),d=n(96832),p=n(45728),u=n(38371),m=n(73937),h=n(94642),v=n(43310),g=n(24188),f=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"div",3),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵtext(3,"\n "),a.ɵɵelementEnd())}function x(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"app-organization-filter",16),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).applyFilter(t)})),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext(2);a.ɵɵproperty("hide",e.hideOrganizations)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("organizations",e.organizations)("activePersonalOwnershipPolicy",e.activePersonalOwnershipPolicy)("activeSingleOrganizationPolicy",e.activeSingleOrganizationPolicy)}}function S(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",5),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementStart(5,"a",6),a.ɵɵpipe(6,"i18n"),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",7),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",8),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"input",9),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().searchText=t}))("input",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().searchTextChanged()})),a.ɵɵpipe(15,"i18n"),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵtemplate(18,x,1,6,"app-organization-filter",10),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"div",11),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"app-status-filter",12),a.ɵɵlistener("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"div",11),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"app-type-filter",13),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",11),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"app-folder-filter",14),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)}))("onAddFolder",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().addFolder()}))("onEditFolder",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().editFolder(t)})),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"div",11),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"app-collection-filter",15),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,18,"filters"),"\n "),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(6,20,"learnMore")),a.ɵɵadvance(9),a.ɵɵpropertyInterpolate("placeholder",a.ɵɵpipeBind1(15,22,e.searchPlaceholder)||a.ɵɵpipeBind1(16,24,"searchVault")),a.ɵɵproperty("ngModel",e.searchText),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",e.showOrgFilter),a.ɵɵadvance(4),a.ɵɵproperty("hideFavorites",!e.showFavorites)("hideTrash",e.hideTrash)("activeFilter",e.activeFilter),a.ɵɵadvance(5),a.ɵɵproperty("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes),a.ɵɵadvance(5),a.ɵɵproperty("hide",!e.showFolders)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("folderNodes",e.folders),a.ɵɵadvance(5),a.ɵɵproperty("hide",e.hideCollections)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("collectionNodes",e.collections)}}class b extends o.VaultFilterComponent{constructor(e){super(e),this.showOrgFilter=!0,this.showFolders=!0,this.showFavorites=!0,this.onSearchTextChanged=new r.EventEmitter,this.searchText=""}searchTextChanged(){this.onSearchTextChanged.emit(this.searchText)}reloadOrganizations(){return i(this,void 0,void 0,(function*(){this.organizations=yield this.vaultFilterService.buildOrganizations(),this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()}))}initCollections(){var e;return i(this,void 0,void 0,(function*(){return yield this.vaultFilterService.buildCollections(null===(e=this.organization)||void 0===e?void 0:e.id)}))}}t.VaultFilterComponent=b,b.ɵfac=function(e){return new(e||b)(a.ɵɵdirectiveInject(s.VaultFilterService))},b.ɵcmp=a.ɵɵdefineComponent({type:b,selectors:[["app-vault-filter"]],inputs:{showOrgFilter:"showOrgFilter",showFolders:"showFolders",showFavorites:"showFavorites"},outputs:{onSearchTextChanged:"onSearchTextChanged"},features:[a.ɵɵInheritDefinitionFeature],decls:7,vars:2,consts:[[1,"card","vault-filters"],["class","container loading-spinner",4,"ngIf"],[4,"ngIf"],[1,"container","loading-spinner"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-3x"],[1,"card-header","d-flex"],["href","https://bitwarden.com/help/searching-vault/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"card-body"],["type","search","id","search","autocomplete","off","appAutofocus","",1,"form-control",3,"placeholder","ngModel","ngModelChange","input"],[3,"hide","activeFilter","collapsedFilterNodes","organizations","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","onNodeCollapseStateChange","onFilterChange",4,"ngIf"],[1,"filter"],[3,"hideFavorites","hideTrash","activeFilter","onFilterChange"],[3,"activeFilter","collapsedFilterNodes","onNodeCollapseStateChange","onFilterChange"],[3,"hide","activeFilter","collapsedFilterNodes","folderNodes","onNodeCollapseStateChange","onFilterChange","onAddFolder","onEditFolder"],[3,"hide","activeFilter","collapsedFilterNodes","collectionNodes","onNodeCollapseStateChange","onFilterChange"],[3,"hide","activeFilter","collapsedFilterNodes","organizations","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","onNodeCollapseStateChange","onFilterChange"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,y,4,0,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,S,41,26,"div",2),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n")),2&e&&(a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.isLoaded),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.isLoaded))},directives:[l.NgIf,c.A11yTitleDirective,d.DefaultValueAccessor,p.AutofocusDirective,d.NgControlStatus,d.NgModel,u.StatusFilterComponent,m.TypeFilterComponent,h.FolderFilterComponent,v.CollectionFilterComponent,g.OrganizationFilterComponent],pipes:[f.I18nPipe],encapsulation:2})},38595:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterModule=void 0;const i=n(27113),r=n(45330),o=n(3174),a=n(88308),s=n(63513),l=n(62166),c=n(73569),d=n(84696),p=n(32621);class u{}t.VaultFilterModule=u,u.ɵfac=function(e){return new(e||u)},u.ɵmod=p.ɵɵdefineNgModule({type:u}),u.ɵinj=p.ɵɵdefineInjector({providers:[{provide:i.VaultFilterService,useClass:i.VaultFilterService,deps:[c.StateService,s.OrganizationService,a.FolderService,r.CipherService,o.CollectionService,l.PolicyService]}],imports:[[d.SharedModule]]})},97417:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultRoutingModule=void 0;const i=n(68012),r=n(2525),o=n(32621),a=(n(68012),[{path:"",component:r.IndividualVaultComponent,data:{titleId:"vaults"}}]);class s{}t.IndividualVaultRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(a)],i.RouterModule]})},2525:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=n(94735),s=(n(64684),n(8470),n(45330),n(85714),n(51554),n(45552),n(63513),n(44809),n(73828),n(73569),n(9724),n(30694),n(97144)),l=n(95414),c=n(41141),d=n(94652),p=n(91434),u=n(86305),m=n(27672),h=n(55715),v=(n(91843),n(81617),n(32621)),g=n(9724),f=n(68012),y=n(51554),x=n(64684),S=n(30694),b=n(85714),w=n(45552),C=n(73828),I=n(8470),E=n(73569),P=n(63513),O=n(81617),k=n(45330),A=n(44809),T=n(91843),M=n(57490),B=n(56820),D=n(23582),R=n(91434),F=n(51626),U=n(80945),V=n(99729),N=["vaultFilter"],_=["attachments"],j=["folderAddEdit"],z=["cipherAddEdit"],H=["share"],L=["collections"],K=["updateKeyTemplate"];function q(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",27),v.ɵɵpipe(3,"i18n"),v.ɵɵtext(4,"\n "),v.ɵɵelementStart(5,"span",28),v.ɵɵtext(6),v.ɵɵpipe(7,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(8,"\n "),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(3,2,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(7,4,"loading")))}function G(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"button",29),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().addCipher()})),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",30),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(3),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function W(e,t){if(1&e&&(v.ɵɵelementStart(0,"app-callout",31),v.ɵɵtext(1),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext();v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",e.trashCleanupWarning,"\n ")}}function $(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",32),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",33),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",34),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"button",36),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().updateKey()})),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,3,"updateKeyTitle"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"updateEncryptionKeyShortDesc")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"updateEncryptionKey"),"\n "))}function Y(e,t){1&e&&v.ɵɵelement(0,"app-verify-email",37)}function Q(e,t){1&e&&(v.ɵɵelementStart(0,"div",32),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",33),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",34),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"a",38),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,3,"updateBrowser"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"updateBrowserDesc")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"updateBrowser"),"\n "))}function J(e,t){1&e&&(v.ɵɵelementStart(0,"div",39),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",40),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",41),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"a",42),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1(" ",v.ɵɵpipeBind1(6,3,"goPremium"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"premiumUpgradeUnlockFeatures")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"goPremium"),"\n "))}function Z(e,t){}function X(e,t){}function ee(e,t){}function te(e,t){}function ne(e,t){}function ie(e,t){}const re=function(e,t){return{"col-6":e,"col-9":t}},oe="VaultComponent";class ae{constructor(e,t,n,i,r,o,s,l,c,d,p,u,m,h,v,g,f){this.syncService=e,this.route=t,this.router=n,this.changeDetectorRef=i,this.i18nService=r,this.modalService=o,this.tokenService=s,this.cryptoService=l,this.messagingService=c,this.platformUtilsService=d,this.broadcasterService=p,this.ngZone=u,this.stateService=m,this.organizationService=h,this.vaultService=v,this.cipherService=g,this.passwordRepromptService=f,this.favorites=!1,this.type=null,this.folderId=null,this.collectionId=null,this.organizationId=null,this.myVaultOnly=!1,this.showVerifyEmail=!1,this.showBrowserOutdated=!1,this.showUpdateKey=!1,this.showPremiumCallout=!1,this.deleted=!1,this.trashCleanupWarning=null,this.activeFilter=new a.VaultFilter}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showVerifyEmail=!(yield this.tokenService.getEmailVerified()),this.showBrowserOutdated=-1!==window.navigator.userAgent.indexOf("MSIE"),this.trashCleanupWarning=this.i18nService.t(this.platformUtilsService.isSelfHost()?"trashCleanupWarningSelfHosted":"trashCleanupWarning"),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){yield this.syncService.fullSync(!1);const t=yield this.stateService.getCanAccessPremium();if(this.showPremiumCallout=!this.showVerifyEmail&&!t&&!this.platformUtilsService.isSelfHost(),this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),this.filterComponent.reloadOrganizations(),this.showUpdateKey=!(yield this.cryptoService.hasEncKey()),e.cipherId){const t=new s.CipherView;t.id=e.cipherId,"clone"===e.action?yield this.cloneCipher(t):"edit"===e.action&&(yield this.editCipher(t))}yield this.ciphersComponent.reload(),this.route.queryParams.subscribe((e=>i(this,void 0,void 0,(function*(){e.cipherId&&(null!=(yield this.cipherService.get(e.cipherId))?this.editCipherId(e.cipherId):(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unknownCipher")),this.router.navigate([],{queryParams:{cipherId:null},queryParamsHandling:"merge"})))})))),this.broadcasterService.subscribe(oe,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield Promise.all([this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),this.filterComponent.reloadOrganizations(),this.ciphersComponent.load(this.ciphersComponent.filter)]),this.changeDetectorRef.detectChanges())}))))}))}))))}))}get isShowingCards(){return this.showBrowserOutdated||this.showPremiumCallout||this.showUpdateKey||this.showVerifyEmail}ngOnDestroy(){this.broadcasterService.unsubscribe(oe)}applyVaultFilter(e){return i(this,void 0,void 0,(function*(){this.ciphersComponent.showAddNew="trash"!==e.status,this.activeFilter=e,yield this.ciphersComponent.reload(this.buildFilter(),"trash"===e.status),this.filterComponent.searchPlaceholder=this.vaultService.calculateSearchBarLocalizationString(this.activeFilter),this.go()}))}applyOrganizationFilter(e){return i(this,void 0,void 0,(function*(){null==e?(this.activeFilter.resetOrganization(),this.activeFilter.myVaultOnly=!0):this.activeFilter.selectedOrganizationId=e,yield this.applyVaultFilter(this.activeFilter)}))}filterSearchText(e){this.ciphersComponent.searchText=e,this.ciphersComponent.search(200)}buildFilter(){return e=>{let t=!0;return"favorites"===this.activeFilter.status&&t&&(t=e.favorite),"trash"===this.activeFilter.status&&t&&(t=e.isDeleted),null!=this.activeFilter.cipherType&&t&&(t=e.type===this.activeFilter.cipherType),this.activeFilter.selectedFolder&&"none"!=this.activeFilter.selectedFolderId&&t&&(t=e.folderId===this.activeFilter.selectedFolderId),null!=this.activeFilter.selectedCollectionId&&t&&(t=null!=e.collectionIds&&e.collectionIds.indexOf(this.activeFilter.selectedCollectionId)>-1),null!=this.activeFilter.selectedOrganizationId&&t&&(t=e.organizationId===this.activeFilter.selectedOrganizationId),this.activeFilter.myVaultOnly&&t&&(t=null===e.organizationId),t}}editCipherAttachments(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getCanAccessPremium();if(null==e.organizationId&&!t)return void this.messagingService.send("premiumRequired");if(null!=e.organizationId){const t=yield this.organizationService.get(e.organizationId);if(null!=t&&(null==t.maxStorageGb||0===t.maxStorageGb))return void this.messagingService.send("upgradeOrganization",{organizationId:e.organizationId})}let n=!1;const[r]=yield this.modalService.openViewRef(d.AttachmentsComponent,this.attachmentsModalRef,(t=>{t.cipherId=e.id,t.onUploadedAttachment.subscribe((()=>n=!0)),t.onDeletedAttachment.subscribe((()=>n=!0)),t.onReuploadedAttachment.subscribe((()=>n=!0))}));r.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){n&&(yield this.ciphersComponent.refresh()),n=!1}))))}))}shareCipher(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(h.ShareComponent,this.shareModalRef,(n=>{n.cipherId=e.id,n.onSharedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}editCipherCollections(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(u.CollectionsComponent,this.collectionsModalRef,(n=>{n.cipherId=e.id,n.onSavedCollections.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}addFolder(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(m.FolderAddEditComponent,this.folderAddEditModalRef,(t=>{t.folderId=null,t.onSavedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){e.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)}))))}))}))}editFolder(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(m.FolderAddEditComponent,this.folderAddEditModalRef,(n=>{n.folderId=e,n.onSavedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)})))),n.onDeletedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)}))))}))}))}addCipher(){return i(this,void 0,void 0,(function*(){const e=yield this.editCipher(null);if(e.type=this.type,e.folderId="none"===this.folderId?null:this.folderId,null!=this.activeFilter.selectedCollectionId){const t=this.filterComponent.collections.fullList.filter((e=>e.id===this.activeFilter.selectedCollectionId));t.length>0&&(e.organizationId=t[0].organizationId,e.collectionIds=[this.activeFilter.selectedCollectionId])}this.activeFilter.selectedFolderId&&this.activeFilter.selectedFolder&&(e.folderId=this.activeFilter.selectedFolderId),this.activeFilter.selectedOrganizationId&&(e.organizationId=this.activeFilter.selectedOrganizationId)}))}editCipher(e){return i(this,void 0,void 0,(function*(){return this.editCipherId(null==e?void 0:e.id)}))}editCipherId(e){return i(this,void 0,void 0,(function*(){const t=yield this.cipherService.get(e);if(null!=t&&0!=t.reprompt&&!(yield this.passwordRepromptService.showPasswordPrompt()))return void this.go({cipherId:null});const[n,r]=yield this.modalService.openViewRef(c.AddEditComponent,this.cipherAddEditModalRef,(t=>{t.cipherId=e,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()}))))}));return n.onClosedPromise().then((()=>{this.go({cipherId:null})})),r}))}cloneCipher(e){return i(this,void 0,void 0,(function*(){(yield this.editCipher(e)).cloneMode=!0}))}updateKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.UpdateKeyComponent,this.updateKeyModalRef)}))}go(e=null){null==e&&(e={favorites:!!this.favorites||null,type:this.type,folderId:this.folderId,collectionId:this.collectionId,deleted:!!this.deleted||null}),this.router.navigate([],{relativeTo:this.route,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0})}}t.IndividualVaultComponent=ae,ae.ɵfac=function(e){return new(e||ae)(v.ɵɵdirectiveInject(g.SyncService),v.ɵɵdirectiveInject(f.ActivatedRoute),v.ɵɵdirectiveInject(f.Router),v.ɵɵdirectiveInject(v.ChangeDetectorRef),v.ɵɵdirectiveInject(y.I18nService),v.ɵɵdirectiveInject(x.ModalService),v.ɵɵdirectiveInject(S.TokenService),v.ɵɵdirectiveInject(b.CryptoService),v.ɵɵdirectiveInject(w.MessagingService),v.ɵɵdirectiveInject(C.PlatformUtilsService),v.ɵɵdirectiveInject(I.BroadcasterService),v.ɵɵdirectiveInject(v.NgZone),v.ɵɵdirectiveInject(E.StateService),v.ɵɵdirectiveInject(P.OrganizationService),v.ɵɵdirectiveInject(O.VaultService),v.ɵɵdirectiveInject(k.CipherService),v.ɵɵdirectiveInject(A.PasswordRepromptService))},ae.ɵcmp=v.ɵɵdefineComponent({type:ae,selectors:[["app-vault"]],viewQuery:function(e,t){if(1&e&&(v.ɵɵviewQuery(N,7),v.ɵɵviewQuery(p.CiphersComponent,7),v.ɵɵviewQuery(_,7,r.ViewContainerRef),v.ɵɵviewQuery(j,7,r.ViewContainerRef),v.ɵɵviewQuery(z,7,r.ViewContainerRef),v.ɵɵviewQuery(H,7,r.ViewContainerRef),v.ɵɵviewQuery(L,7,r.ViewContainerRef),v.ɵɵviewQuery(K,7,r.ViewContainerRef)),2&e){let e;v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.filterComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.ciphersComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.folderAddEditModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.shareModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.collectionsModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.updateKeyModalRef=e.first)}},decls:79,vars:18,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"groupings"],[1,"content"],[1,"inner-content"],[3,"activeFilter","onFilterChange","onAddFolder","onEditFolder","onSearchTextChanged"],["vaultFilter",""],[3,"ngClass"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],[3,"ciphersComponent","deleted"],["type","button","class","btn btn-outline-primary btn-sm",3,"click",4,"ngIf"],["type","warning","icon","bwi-exclamation-triangle",4,"ngIf"],[3,"onCipherClicked","onAttachmentsClicked","onAddCipher","onShareClicked","onCollectionsClicked","onCloneClicked","onOrganzationBadgeClicked"],["class","card border-warning mb-4",4,"ngIf"],["class","d-block mb-4",4,"ngIf"],["class","card border-success mb-4",4,"ngIf"],["attachments",""],["folderAddEdit",""],["cipherAddEdit",""],["share",""],["collections",""],["updateKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["type","warning","icon","bwi-exclamation-triangle"],[1,"card","border-warning","mb-4"],[1,"card-header","bg-warning","text-white"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","bwi-fw"],[1,"card-body"],["type","button",1,"btn","btn-block","btn-outline-secondary",3,"click"],[1,"d-block","mb-4"],["target","_blank","href","https://browser-update.org/update-browser.html","rel","noopener",1,"btn","btn-block","btn-outline-secondary"],[1,"card","border-success","mb-4"],[1,"card-header","bg-success","text-white"],["aria-hidden","true",1,"bwi","bwi-star-f","bwi-fw"],["routerLink","/settings/subscription/premium",1,"btn","btn-block","btn-outline-secondary"]],template:function(e,t){if(1&e&&(v.ɵɵelementStart(0,"div",0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",1),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"div",2),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"div",3),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",4),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"div",5),v.ɵɵtext(11,"\n "),v.ɵɵelementStart(12,"app-vault-filter",6,7),v.ɵɵlistener("onFilterChange",(function(e){return t.applyVaultFilter(e)}))("onAddFolder",(function(){return t.addFolder()}))("onEditFolder",(function(e){return t.editFolder(e.id)}))("onSearchTextChanged",(function(e){return t.filterSearchText(e)})),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(15,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementStart(19,"div",8),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"div",9),v.ɵɵtext(22,"\n "),v.ɵɵelementStart(23,"h1"),v.ɵɵtext(24),v.ɵɵpipe(25,"i18n"),v.ɵɵelementStart(26,"small",10,11),v.ɵɵtext(28,"\n "),v.ɵɵtemplate(29,q,9,6,"ng-container",12),v.ɵɵtext(30,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n "),v.ɵɵelementStart(33,"div",13),v.ɵɵtext(34,"\n "),v.ɵɵelementStart(35,"app-vault-bulk-actions",14),v.ɵɵtext(36,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(37,"\n "),v.ɵɵtemplate(38,G,5,3,"button",15),v.ɵɵtext(39,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(40,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(41,"\n "),v.ɵɵtemplate(42,W,2,1,"app-callout",16),v.ɵɵtext(43,"\n "),v.ɵɵelementStart(44,"app-vault-ciphers",17),v.ɵɵlistener("onCipherClicked",(function(e){return t.editCipher(e)}))("onAttachmentsClicked",(function(e){return t.editCipherAttachments(e)}))("onAddCipher",(function(){return t.addCipher()}))("onShareClicked",(function(e){return t.shareCipher(e)}))("onCollectionsClicked",(function(e){return t.editCipherCollections(e)}))("onCloneClicked",(function(e){return t.cloneCipher(e)}))("onOrganzationBadgeClicked",(function(e){return t.applyOrganizationFilter(e)})),v.ɵɵtext(45,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(46,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(47,"\n "),v.ɵɵelementStart(48,"div",2),v.ɵɵtext(49,"\n "),v.ɵɵtemplate(50,$,19,9,"div",18),v.ɵɵtext(51,"\n "),v.ɵɵtemplate(52,Y,1,0,"app-verify-email",19),v.ɵɵtext(53,"\n "),v.ɵɵtemplate(54,Q,19,9,"div",18),v.ɵɵtext(55,"\n "),v.ɵɵtemplate(56,J,19,9,"div",20),v.ɵɵtext(57,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(58,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(59,"\n"),v.ɵɵelementEnd(),v.ɵɵtext(60,"\n"),v.ɵɵtemplate(61,Z,0,0,"ng-template",null,21,v.ɵɵtemplateRefExtractor),v.ɵɵtext(63,"\n"),v.ɵɵtemplate(64,X,0,0,"ng-template",null,22,v.ɵɵtemplateRefExtractor),v.ɵɵtext(66,"\n"),v.ɵɵtemplate(67,ee,0,0,"ng-template",null,23,v.ɵɵtemplateRefExtractor),v.ɵɵtext(69,"\n"),v.ɵɵtemplate(70,te,0,0,"ng-template",null,24,v.ɵɵtemplateRefExtractor),v.ɵɵtext(72,"\n"),v.ɵɵtemplate(73,ne,0,0,"ng-template",null,25,v.ɵɵtemplateRefExtractor),v.ɵɵtext(75,"\n"),v.ɵɵtemplate(76,ie,0,0,"ng-template",null,26,v.ɵɵtemplateRefExtractor),v.ɵɵtext(78,"\n")),2&e){const e=v.ɵɵreference(27);v.ɵɵadvance(12),v.ɵɵproperty("activeFilter",t.activeFilter),v.ɵɵadvance(7),v.ɵɵproperty("ngClass",v.ɵɵpureFunction2(15,re,t.isShowingCards,!t.isShowingCards)),v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(25,13,"vaultItems"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("appApiAction",t.ciphersComponent.actionPromise),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.loading),v.ɵɵadvance(6),v.ɵɵproperty("ciphersComponent",t.ciphersComponent)("deleted","trash"===t.activeFilter.status),v.ɵɵadvance(3),v.ɵɵproperty("ngIf","trash"!==t.activeFilter.status),v.ɵɵadvance(4),v.ɵɵproperty("ngIf","trash"===t.activeFilter.status),v.ɵɵadvance(8),v.ɵɵproperty("ngIf",t.showUpdateKey),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showVerifyEmail),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showBrowserOutdated),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showPremiumCallout)}},directives:[T.VaultFilterComponent,M.NgClass,B.ApiActionDirective,M.NgIf,D.BulkActionsComponent,R.CiphersComponent,F.CalloutComponent,U.VerifyEmailComponent,f.RouterLinkWithHref],pipes:[V.I18nPipe],encapsulation:2})},85006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultModule=void 0;const i=n(77844),r=n(97417),o=n(32621);class a{}t.IndividualVaultModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[i.VaultModule,r.IndividualVaultRoutingModule]]})},98528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationBadgeModule=void 0;const i=n(84696),r=n(32621);class o{}t.OrganizationBadgeModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.SharedModule]]})},99237:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationNameBadgeComponent=void 0;const i=n(32621),r=(n(51554),n(32621)),o=n(51554),a=n(25108),s=n(8863),l=n(91131);class c{constructor(e){this.i18nService=e,this.onOrganizationClicked=new i.EventEmitter}ngOnInit(){null!=this.organizationName&&""!==this.organizationName||(this.organizationName=this.i18nService.t("me"),this.color=this.stringToColor(this.profileName.toUpperCase())),null==this.color&&(this.color=this.stringToColor(this.organizationName.toUpperCase())),this.textColor=this.pickTextColorBasedOnBgColor()}stringToColor(e){let t=0;for(let i=0;i>8*i&255).toString(16)).substr(-2)}return n}pickTextColorBasedOnBgColor(){const e="#"===this.color.charAt(0)?this.color.substring(1,7):this.color;return.299*parseInt(e.substring(0,2),16)+.587*parseInt(e.substring(2,4),16)+.114*parseInt(e.substring(4,6),16)>186?"black !important":"white !important"}emitOnOrganizationClicked(){this.onOrganizationClicked.emit()}}t.OrganizationNameBadgeComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.I18nService))},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-org-badge"]],inputs:{organizationName:"organizationName",profileName:"profileName"},outputs:{onOrganizationClicked:"onOrganizationClicked"},decls:4,vars:9,consts:[["bit-badge","",3,"appA11yTitle","click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"button",0),r.ɵɵlistener("click",(function(){return t.emitOnOrganizationClicked()})),r.ɵɵtext(1),r.ɵɵpipe(2,"ellipsis"),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n")),2&e&&(r.ɵɵstyleProp("color",t.textColor)("background-color",t.color),r.ɵɵpropertyInterpolate("appA11yTitle",t.organizationName),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(2,6,t.organizationName,13),"\n"))},directives:[a.BadgeComponent,s.A11yTitleDirective],pipes:[l.EllipsisPipe],encapsulation:2})},1690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultRoutingModule=void 0;const i=n(68012),r=n(71808),o=n(32621),a=(n(68012),[{path:"",component:r.OrganizationVaultComponent,data:{titleId:"vaults"}}]);class s{}t.OrganizationVaultRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(a)],i.RouterModule]})},71808:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=n(94735),s=(n(64684),n(8470),n(45330),n(51554),n(45552),n(63513),n(44809),n(73828),n(9724),n(87876)),l=n(93880),c=n(31597),d=n(7203),p=n(60962),u=(n(91843),n(81617),n(32621)),m=n(68012),h=n(63513),v=n(9724),g=n(51554),f=n(64684),y=n(45552),x=n(8470),S=n(73828),b=n(81617),w=n(45330),C=n(44809),I=n(91843),E=n(56820),P=n(57490),O=n(23582),k=n(7203),A=n(51626),T=n(99729),M=["vaultFilter"],B=["attachments"],D=["cipherAddEdit"],R=["collections"],F=["eventsTemplate"];function U(e,t){1&e&&(u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",22),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",23),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementContainerEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function V(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"button",24),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().addCipher()})),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",25),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd()}2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate1("",u.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function N(e,t){if(1&e&&(u.ɵɵelementStart(0,"app-callout",26),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(1),u.ɵɵtextInterpolate1("\n ",e.trashCleanupWarning,"\n ")}}function _(e,t){}function j(e,t){}function z(e,t){}function H(e,t){}const L="OrgVaultComponent";class K{constructor(e,t,n,i,r,o,s,l,c,d,p,u,m,h){this.route=e,this.organizationService=t,this.router=n,this.changeDetectorRef=i,this.syncService=r,this.i18nService=o,this.modalService=s,this.messagingService=l,this.broadcasterService=c,this.ngZone=d,this.platformUtilsService=p,this.vaultService=u,this.cipherService=m,this.passwordRepromptService=h,this.collectionId=null,this.type=null,this.deleted=!1,this.trashCleanupWarning=null,this.activeFilter=new a.VaultFilter}ngOnInit(){this.trashCleanupWarning=this.i18nService.t(this.platformUtilsService.isSelfHost()?"trashCleanupWarningSelfHosted":"trashCleanupWarning"),this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.vaultFilterComponent.organization=this.organization,this.ciphersComponent.organization=this.organization,this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.ciphersComponent.searchText=this.vaultFilterComponent.searchText=e.search,this.organization.canViewAllCollections||(yield this.syncService.fullSync(!1),this.broadcasterService.subscribe(L,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield Promise.all([this.vaultFilterComponent.reloadCollectionsAndFolders(new a.VaultFilter({selectedOrganizationId:this.organization.id})),this.ciphersComponent.refresh()]),this.changeDetectorRef.detectChanges())}))))}))),yield this.vaultFilterComponent.reloadCollectionsAndFolders(new a.VaultFilter({selectedOrganizationId:this.organization.id})),yield this.ciphersComponent.reload(),null!=e.viewEvents){const t=this.ciphersComponent.ciphers.filter((t=>t.id===e.viewEvents));t.length>0&&this.viewEvents(t[0])}this.route.queryParams.subscribe((e=>i(this,void 0,void 0,(function*(){e.cipherId&&(this.organization.canEditAnyCollection||null!=(yield this.cipherService.get(e.cipherId))?this.editCipherId(e.cipherId):(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unknownCipher")),this.router.navigate([],{queryParams:{cipherId:null},queryParamsHandling:"merge"})))}))))}))))}))))}ngOnDestroy(){this.broadcasterService.unsubscribe(L)}applyVaultFilter(e){return i(this,void 0,void 0,(function*(){this.ciphersComponent.showAddNew="trash"!==e.status,this.activeFilter=e,yield this.ciphersComponent.reload(this.buildFilter(),"trash"===e.status),this.vaultFilterComponent.searchPlaceholder=this.vaultService.calculateSearchBarLocalizationString(this.activeFilter),this.go()}))}buildFilter(){return e=>{let t=!0;return"favorites"===this.activeFilter.status&&t&&(t=e.favorite),"trash"===this.activeFilter.status&&t&&(t=e.isDeleted),null!=this.activeFilter.cipherType&&t&&(t=e.type===this.activeFilter.cipherType),null!=this.activeFilter.selectedFolder&&"none"!=this.activeFilter.selectedFolderId&&t&&(t=e.folderId===this.activeFilter.selectedFolderId),null!=this.activeFilter.selectedCollectionId&&t&&(t=null!=e.collectionIds&&e.collectionIds.indexOf(this.activeFilter.selectedCollectionId)>-1),null!=this.activeFilter.selectedOrganizationId&&t&&(t=e.organizationId===this.activeFilter.selectedOrganizationId),this.activeFilter.myVaultOnly&&t&&(t=null===e.organizationId),t}}filterSearchText(e){this.ciphersComponent.searchText=e,this.ciphersComponent.search(200)}editCipherAttachments(e){return i(this,void 0,void 0,(function*(){if(null==this.organization.maxStorageGb||0===this.organization.maxStorageGb)return void this.messagingService.send("upgradeOrganization",{organizationId:e.organizationId});let t=!1;const[n]=yield this.modalService.openViewRef(c.AttachmentsComponent,this.attachmentsModalRef,(n=>{n.organization=this.organization,n.cipherId=e.id,n.onUploadedAttachment.subscribe((()=>t=!0)),n.onDeletedAttachment.subscribe((()=>t=!0))}));n.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){t&&(yield this.ciphersComponent.refresh()),t=!1}))))}))}editCipherCollections(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(p.CollectionsComponent,this.collectionsModalRef,(n=>{this.organization.canEditAnyCollection&&(n.collectionIds=e.collectionIds,n.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),n.organization=this.organization,n.cipherId=e.id,n.onSavedCollections.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}addCipher(){return i(this,void 0,void 0,(function*(){const e=yield this.editCipher(null);e.organizationId=this.organization.id,e.type=this.type,this.organization.canEditAnyCollection&&(e.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),null!=this.collectionId&&(e.collectionIds=[this.collectionId])}))}editCipher(e){return i(this,void 0,void 0,(function*(){return this.editCipherId(null==e?void 0:e.id)}))}editCipherId(e){return i(this,void 0,void 0,(function*(){const t=yield this.cipherService.get(e);if(null!=t&&0!=t.reprompt&&!(yield this.passwordRepromptService.showPasswordPrompt()))return void this.go({cipherId:null});const[n,r]=yield this.modalService.openViewRef(l.AddEditComponent,this.cipherAddEditModalRef,(t=>{t.organization=this.organization,t.cipherId=e,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()}))))}));return n.onClosedPromise().then((()=>{this.go({cipherId:null})})),r}))}cloneCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.editCipher(e);t.cloneMode=!0,t.organizationId=this.organization.id,this.organization.canEditAnyCollection&&(t.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),t.collectionIds=e.collectionIds}))}viewEvents(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=e.name,t.organizationId=this.organization.id,t.entityId=e.id,t.showUser=!0,t.entity="cipher"}))}))}clearFilters(){this.collectionId=null,this.type=null,this.deleted=!1}go(e=null){null==e&&(e={type:this.type,collectionId:this.collectionId,deleted:!!this.deleted||null}),this.router.navigate([],{relativeTo:this.route,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0})}}t.OrganizationVaultComponent=K,K.ɵfac=function(e){return new(e||K)(u.ɵɵdirectiveInject(m.ActivatedRoute),u.ɵɵdirectiveInject(h.OrganizationService),u.ɵɵdirectiveInject(m.Router),u.ɵɵdirectiveInject(u.ChangeDetectorRef),u.ɵɵdirectiveInject(v.SyncService),u.ɵɵdirectiveInject(g.I18nService),u.ɵɵdirectiveInject(f.ModalService),u.ɵɵdirectiveInject(y.MessagingService),u.ɵɵdirectiveInject(x.BroadcasterService),u.ɵɵdirectiveInject(u.NgZone),u.ɵɵdirectiveInject(S.PlatformUtilsService),u.ɵɵdirectiveInject(b.VaultService),u.ɵɵdirectiveInject(w.CipherService),u.ɵɵdirectiveInject(C.PasswordRepromptService))},K.ɵcmp=u.ɵɵdefineComponent({type:K,selectors:[["app-org-vault"]],viewQuery:function(e,t){if(1&e&&(u.ɵɵviewQuery(M,7),u.ɵɵviewQuery(d.CiphersComponent,7),u.ɵɵviewQuery(B,7,r.ViewContainerRef),u.ɵɵviewQuery(D,7,r.ViewContainerRef),u.ɵɵviewQuery(R,7,r.ViewContainerRef),u.ɵɵviewQuery(F,7,r.ViewContainerRef)),2&e){let e;u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.vaultFilterComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.ciphersComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.collectionsModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.eventsModalRef=e.first)}},decls:62,vars:14,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"groupings"],[1,"content"],[1,"inner-content"],[3,"showFolders","showFavorites","activeFilter","showOrgFilter","onFilterChange","onSearchTextChanged"],["vaultFilter",""],[1,"col-9"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],[3,"ciphersComponent","deleted","organization"],["type","button","class","btn btn-outline-primary btn-sm ml-auto",3,"click",4,"ngIf"],["type","warning","icon","bwi bwi-exclamation-triangle",4,"ngIf"],[3,"onCipherClicked","onAttachmentsClicked","onAddCipher","onCollectionsClicked","onEventsClicked","onCloneClicked"],["attachments",""],["cipherAddEdit",""],["collections",""],["eventsTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","ml-auto",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["type","warning","icon","bwi bwi-exclamation-triangle"]],template:function(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"div",2),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",3),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"div",4),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",5),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"app-vault-filter",6,7),u.ɵɵlistener("onFilterChange",(function(e){return t.applyVaultFilter(e)}))("onSearchTextChanged",(function(e){return t.filterSearchText(e)})),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(16,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementStart(19,"div",8),u.ɵɵtext(20,"\n "),u.ɵɵelementStart(21,"div",9),u.ɵɵtext(22,"\n "),u.ɵɵelementStart(23,"h1"),u.ɵɵtext(24),u.ɵɵpipe(25,"i18n"),u.ɵɵelementStart(26,"small",10,11),u.ɵɵtext(28,"\n "),u.ɵɵtemplate(29,U,9,6,"ng-container",12),u.ɵɵtext(30,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(31,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"div",13),u.ɵɵtext(34,"\n "),u.ɵɵelementStart(35,"app-vault-bulk-actions",14),u.ɵɵtext(36,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵtemplate(38,V,5,3,"button",15),u.ɵɵtext(39,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(40,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵtemplate(42,N,2,1,"app-callout",16),u.ɵɵtext(43,"\n "),u.ɵɵelementStart(44,"app-org-vault-ciphers",17),u.ɵɵlistener("onCipherClicked",(function(e){return t.editCipher(e)}))("onAttachmentsClicked",(function(e){return t.editCipherAttachments(e)}))("onAddCipher",(function(){return t.addCipher()}))("onCollectionsClicked",(function(e){return t.editCipherCollections(e)}))("onEventsClicked",(function(e){return t.viewEvents(e)}))("onCloneClicked",(function(e){return t.cloneCipher(e)})),u.ɵɵtext(45,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(46,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(47,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(49,"\n"),u.ɵɵtemplate(50,_,0,0,"ng-template",null,18,u.ɵɵtemplateRefExtractor),u.ɵɵtext(52,"\n"),u.ɵɵtemplate(53,j,0,0,"ng-template",null,19,u.ɵɵtemplateRefExtractor),u.ɵɵtext(55,"\n"),u.ɵɵtemplate(56,z,0,0,"ng-template",null,20,u.ɵɵtemplateRefExtractor),u.ɵɵtext(58,"\n"),u.ɵɵtemplate(59,H,0,0,"ng-template",null,21,u.ɵɵtemplateRefExtractor),u.ɵɵtext(61,"\n")),2&e){const e=u.ɵɵreference(27);u.ɵɵadvance(12),u.ɵɵproperty("showFolders",!1)("showFavorites",!1)("activeFilter",t.activeFilter)("showOrgFilter",!1),u.ɵɵadvance(12),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(25,12,"vaultItems"),"\n "),u.ɵɵadvance(2),u.ɵɵproperty("appApiAction",t.ciphersComponent.actionPromise),u.ɵɵadvance(3),u.ɵɵproperty("ngIf",e.loading),u.ɵɵadvance(6),u.ɵɵproperty("ciphersComponent",t.ciphersComponent)("deleted",t.deleted)("organization",t.organization),u.ɵɵadvance(3),u.ɵɵproperty("ngIf",!t.deleted),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",t.deleted)}},directives:[I.VaultFilterComponent,E.ApiActionDirective,P.NgIf,O.BulkActionsComponent,k.CiphersComponent,A.CalloutComponent],pipes:[T.I18nPipe],encapsulation:2})},32459:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultModule=void 0;const i=n(77844),r=n(1690),o=n(32621);class a{}t.OrganizationVaultModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[i.VaultModule,r.OrganizationVaultRoutingModule]]})},77844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultModule=void 0;const i=n(30322),r=n(84696),o=n(38595),a=n(81617),s=n(32621);class l{}t.VaultModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({providers:[{provide:a.VaultService,useClass:a.VaultService}],imports:[[r.SharedModule,o.VaultFilterModule,i.LooseComponentsModule],r.SharedModule,o.VaultFilterModule,i.LooseComponentsModule]})},81617:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultService=void 0;t.VaultService=class{calculateSearchBarLocalizationString(e){return"favorites"===e.status?"searchFavorites":"trash"===e.status?"searchTrash":null!=e.cipherType?"searchType":null!=e.selectedFolderId&&"none"!=e.selectedFolderId?"searchFolder":null!=e.selectedCollectionId?"searchCollection":null!=e.selectedOrganizationId?"searchOrganization":e.myVaultOnly?"searchMyVault":"searchVault"}}},70734:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsGuard=void 0;n(68012),n(51554),n(63513),n(73828),n(9724);const r=n(32621),o=n(68012),a=n(63513),s=n(73828),l=n(51554),c=n(9724);class d{constructor(e,t,n,i,r){this.router=e,this.organizationService=t,this.platformUtilsService=n,this.i18nService=i,this.syncService=r}canActivate(e,t){return i(this,void 0,void 0,(function*(){null==(yield this.syncService.getLastSync())&&(yield this.syncService.fullSync(!1));const n=yield this.organizationService.get(e.params.organizationId);if(null==n)return this.router.createUrlTree(["/"]);if(!n.isOwner&&!n.enabled)return this.platformUtilsService.showToast("error",null,this.i18nService.t("organizationIsDisabled")),this.router.createUrlTree(["/"]);const i=null==e.data?[]:e.data.permissions;return!(null!=i&&!n.hasAnyPermission(i))||(t.root.queryParamMap.has("cipherId")?this.router.createUrlTree(["/vault"],{queryParams:{cipherId:t.root.queryParamMap.get("cipherId")}}):(this.platformUtilsService.showToast("error",null,this.i18nService.t("accessDenied")),this.router.createUrlTree(["/"])))}))}}t.PermissionsGuard=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵinject(o.Router),r.ɵɵinject(a.OrganizationService),r.ɵɵinject(s.PlatformUtilsService),r.ɵɵinject(l.I18nService),r.ɵɵinject(c.SyncService))},d.ɵprov=r.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},45231:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationLayoutComponent=void 0;n(32621),n(68012),n(8470),n(63513);const r=n(13637),o=n(32621),a=n(68012),s=n(63513),l=n(8470),c=n(53280),d=n(57490),p=n(59964),u=n(13045),m=n(99729);function h(e,t){if(1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",11),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("routerLink",e.manageRoute),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,2,"manage"),"\n ")}}function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",12),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("routerLink",e.toolsRoute),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,2,"tools"),"\n ")}}function g(e,t){1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",14),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,1,"settings"),"\n "))}function f(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",1),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",2),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",3),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"app-organization-switcher",4),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"ul",5),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"li",6),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"a",7),o.ɵɵtext(13,"\n "),o.ɵɵelement(14,"i",8),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,h,8,4,"li",9),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,v,8,4,"li",9),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,g,8,3,"li",9),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(6),o.ɵɵproperty("activeOrganization",e.organization),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(16,5,"vault"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.showManageTab),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showToolsTab),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showSettingsTab)}}const y="OrganizationLayoutComponent";class x{constructor(e,t,n,i){this.route=e,this.organizationService=t,this.broadcasterService=n,this.ngZone=i}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load()})))),this.broadcasterService.subscribe(y,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("updatedOrgLicense"===e.command)yield this.load()}))))}))}ngOnDestroy(){this.broadcasterService.unsubscribe(y)}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId)}))}get showManageTab(){return r.NavigationPermissionsService.canAccessManage(this.organization)}get showToolsTab(){return r.NavigationPermissionsService.canAccessTools(this.organization)}get showSettingsTab(){return r.NavigationPermissionsService.canAccessSettings(this.organization)}get toolsRoute(){return this.organization.canAccessImportExport?"tools/import":"tools/exposed-passwords-report"}get manageRoute(){let e;switch(!0){case this.organization.canManageUsers:e="manage/people";break;case this.organization.canViewAssignedCollections||this.organization.canViewAllCollections:e="manage/collections";break;case this.organization.canManageGroups:e="manage/groups";break;case this.organization.canManagePolicies:e="manage/policies";break;case this.organization.canAccessEventLogs:e="manage/events"}return e}}t.OrganizationLayoutComponent=x,x.ɵfac=function(e){return new(e||x)(o.ɵɵdirectiveInject(a.ActivatedRoute),o.ɵɵdirectiveInject(s.OrganizationService),o.ɵɵdirectiveInject(l.BroadcasterService),o.ɵɵdirectiveInject(o.NgZone))},x.ɵcmp=o.ɵɵdefineComponent({type:x,selectors:[["app-organization-layout"]],decls:8,vars:1,consts:[["class","org-nav",4,"ngIf"],[1,"org-nav"],[1,"container","d-flex"],[1,"d-flex","flex-column"],[1,"my-auto","pl-1",3,"activeOrganization"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLink","vault","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-lock"],["class","nav-item",4,"ngIf"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-sliders"],["aria-hidden","true",1,"bwi","bwi-wrench"],["routerLink","settings","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-cogs"]],template:function(e,t){1&e&&(o.ɵɵelement(0,"app-navbar"),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,f,28,7,"div",0),o.ɵɵtext(3,"\n"),o.ɵɵelement(4,"router-outlet"),o.ɵɵtext(5,"\n"),o.ɵɵelement(6,"app-footer"),o.ɵɵtext(7,"\n")),2&e&&(o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.organization))},directives:[c.NavbarComponent,d.NgIf,a.RouterOutlet,p.FooterComponent,u.OrganizationSwitcherComponent,a.RouterLinkWithHref,a.RouterLinkActive],pipes:[m.I18nPipe],encapsulation:2})},61692:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkConfirmComponent=void 0;n(91674),n(85714),n(51554);const r=n(7368),o=n(82769),a=n(23405),s=n(91247),l=n(32621),c=n(85714),d=n(91674),p=n(51554),u=n(8863),m=n(57490),h=n(51626),v=n(15370),g=n(99729),f=n(52080);function y(e,t){1&e&&(l.ɵɵelementStart(0,"div",15),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,4,"loading"),"\n "))}function x(e,t){1&e&&(l.ɵɵelementStart(0,"app-callout",17),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,b,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",n.fingerprints.get(e.id),"\n ")}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,C,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵpipe(16,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(16,9,"bulkFilteredMessage"),"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementStart(5,"a",19),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"table",20),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"thead"),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"tr"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"th",21),l.ɵɵtext(17),l.ɵɵpipe(18,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"th"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,w,17,9,"tr",22),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,I,18,11,"tr",22),l.ɵɵtext(29,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,6,"fingerprintEnsureIntegrityVerify"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(7,8,"learnMore"),""),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(18,10,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,12,"fingerprint")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.excludedUsers)}}function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function O(e,t){if(1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit,t=l.ɵɵnextContext(2);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function k(e,t){1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function A(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,P,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵtemplate(14,O,2,1,"td",11),l.ɵɵtext(15,"\n "),l.ɵɵtemplate(16,k,3,3,"td",11),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",n.statuses.has(e.id)),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function T(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"table",20),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"thead"),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"tr"),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"th",21),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"th"),l.ɵɵtext(13),l.ɵɵpipe(14,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵtemplate(18,A,18,10,"tr",22),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,3,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(14,5,"status")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers)}}function M(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span"),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,3,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,5,"confirm"))}}class B{constructor(e,t,n){this.cryptoService=e,this.apiService=t,this.i18nService=n,this.publicKeys=new Map,this.fingerprints=new Map,this.statuses=new Map,this.loading=!0,this.done=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.excludedUsers=this.users.filter((e=>!this.isAccepted(e))),this.filteredUsers=this.users.filter((e=>this.isAccepted(e))),this.filteredUsers.length<=0&&(this.done=!0);const e=yield this.getPublicKeys();for(const t of e.data){const e=o.Utils.fromB64ToArray(t.key),n=yield this.cryptoService.getFingerprint(t.userId,e.buffer);null!=n&&(this.publicKeys.set(t.id,e),this.fingerprints.set(t.id,n.join("-")))}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){this.loading=!0;try{const e=yield this.getCryptoKey(),t=[];for(const n of this.filteredUsers){const i=this.publicKeys.get(n.id);if(null==i)continue;const r=yield this.cryptoService.rsaEncrypt(e.key,i.buffer);t.push({id:n.id,key:r.encryptedString})}(yield this.postConfirmRequest(t)).data.forEach((e=>{const t=""!==e.error?e.error:this.i18nService.t("bulkConfirmMessage");this.statuses.set(e.id,t)})),this.done=!0}catch(e){this.error=e.message}this.loading=!1}))}isAccepted(e){return e.status===r.OrganizationUserStatusType.Accepted}getPublicKeys(){return i(this,void 0,void 0,(function*(){const e=new s.OrganizationUserBulkRequest(this.filteredUsers.map((e=>e.id)));return yield this.apiService.postOrganizationUsersPublicKey(this.organizationId,e)}))}getCryptoKey(){return this.cryptoService.getOrgKey(this.organizationId)}postConfirmRequest(e){return i(this,void 0,void 0,(function*(){const t=new a.OrganizationUserBulkConfirmRequest(e);return yield this.apiService.postOrganizationUserBulkConfirm(this.organizationId,t)}))}}t.BulkConfirmComponent=B,B.ɵfac=function(e){return new(e||B)(l.ɵɵdirectiveInject(c.CryptoService),l.ɵɵdirectiveInject(d.ApiService),l.ɵɵdirectiveInject(p.I18nService))},B.ɵcmp=l.ɵɵdefineComponent({type:B,selectors:[["app-bulk-confirm"]],inputs:{organizationId:"organizationId",users:"users"},decls:45,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","danger"],["type","error"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",5),l.ɵɵpipe(13,"i18n"),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"span",6),l.ɵɵtext(16,"×"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",7),l.ɵɵtext(21,"\n "),l.ɵɵtemplate(22,y,6,6,"div",8),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,x,3,3,"app-callout",9),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,S,2,1,"app-callout",10),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,E,31,14,"ng-container",11),l.ɵɵtext(29,"\n "),l.ɵɵtemplate(30,T,21,7,"ng-container",11),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",12),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,M,9,7,"button",13),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"button",14),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,9,"confirmUsers"),"\n "),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(13,11,"close")),l.ɵɵadvance(10),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.filteredUsers.length<=0),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.error),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.done),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&t.done),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",!t.done),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(39,13,"close"),"\n "))},directives:[u.A11yTitleDirective,m.NgIf,h.CalloutComponent,m.NgForOf,v.AvatarComponent],pipes:[g.I18nPipe,f.UserNamePipe],encapsulation:2})},37131:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRemoveComponent=void 0;n(91674),n(51554);const r=n(91247),o=n(32621),a=n(91674),s=n(51554),l=n(8863),c=n(57490),d=n(51626),p=n(15370),u=n(99729),m=n(52080);function h(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",14),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",15),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function g(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",20),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"removeUsersWarning"),"\n "))}function f(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",24),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",21),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"app-avatar",22),o.ɵɵpipe(5,"userName"),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td"),o.ɵɵtext(10),o.ɵɵtemplate(11,f,2,1,"small",23),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(4),o.ɵɵproperty("data",o.ɵɵpipeBind1(5,6,e))("email",e.email)("circle",!0)("fontSize",14),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",e.email,"\n "),o.ɵɵadvance(1),o.ɵɵproperty("ngIf",e.name)}}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,g,3,3,"app-callout",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"table",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"thead"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"tr"),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,y,14,8,"tr",19),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.users.length>0&&!e.error),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,3,"user")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",e.users)}}function S(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",24),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(o.ɵɵelementStart(0,"td"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit,t=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function w(e,t){1&e&&(o.ɵɵelementStart(0,"td"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function C(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",21),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"app-avatar",22),o.ɵɵpipe(5,"userName"),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td"),o.ɵɵtext(10),o.ɵɵtemplate(11,S,2,1,"small",23),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,b,2,1,"td",10),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,3,3,"td",10),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("data",o.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",e.email,"\n "),o.ɵɵadvance(1),o.ɵɵproperty("ngIf",e.name),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",n.statuses.has(e.id)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function I(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"table",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"thead"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"tr"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"th",18),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"th"),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,C,18,10,"tr",19),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,3,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,5,"status")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",e.users)}}function E(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",25),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",26),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"removeUsers"))}}class P{constructor(e,t){this.apiService=e,this.i18nService=t,this.statuses=new Map,this.loading=!1,this.done=!1}submit(){return i(this,void 0,void 0,(function*(){this.loading=!0;try{(yield this.deleteUsers()).data.forEach((e=>{const t=""!==e.error?e.error:this.i18nService.t("bulkRemovedMessage");this.statuses.set(e.id,t)})),this.done=!0}catch(e){this.error=e.message}this.loading=!1}))}deleteUsers(){return i(this,void 0,void 0,(function*(){const e=new r.OrganizationUserBulkRequest(this.users.map((e=>e.id)));return yield this.apiService.deleteManyOrganizationUsers(this.organizationId,e)}))}}t.BulkRemoveComponent=P,P.ɵfac=function(e){return new(e||P)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService))},P.ɵcmp=o.ɵɵdefineComponent({type:P,selectors:[["app-bulk-remove"]],inputs:{organizationId:"organizationId",users:"users"},decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","danger"],["type","error"],["type","warning",4,"ngIf"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["type","warning"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"h2",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",5),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",6),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",7),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,h,3,3,"app-callout",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,v,2,1,"app-callout",9),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,x,19,5,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,I,21,7,"ng-container",10),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"div",11),o.ɵɵtext(32,"\n "),o.ɵɵtemplate(33,E,9,7,"button",12),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"button",13),o.ɵɵtext(36),o.ɵɵpipe(37,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n")),2&e&&(o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(10,8,"removeUsers"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.users.length<=0),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.error),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.done),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.done),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.done&&t.users.length>0),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(37,12,"close"),"\n "))},directives:[l.A11yTitleDirective,c.NgIf,d.CalloutComponent,c.NgForOf,p.AvatarComponent],pipes:[u.I18nPipe,m.UserNamePipe],encapsulation:2})},33747:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BulkStatusComponent=void 0;const i=n(32621),r=n(8863),o=n(57490),a=n(15370),s=n(99729),l=n(52080);function c(e,t){1&e&&(i.ɵɵelementStart(0,"div",12),i.ɵɵtext(1,"\n "),i.ɵɵelement(2,"i",13),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4),i.ɵɵpipe(5,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("title",i.ɵɵpipeBind1(3,2,"loading")),i.ɵɵadvance(2),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(5,4,"loading"),"\n "))}function d(e,t){if(1&e&&(i.ɵɵelementStart(0,"small",22),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate(e.user.name)}}function p(e,t){if(1&e&&(i.ɵɵelementStart(0,"td",23),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.message,"\n ")}}function u(e,t){if(1&e&&(i.ɵɵelementStart(0,"td"),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.message,"\n ")}}function m(e,t){if(1&e&&(i.ɵɵelementStart(0,"tr"),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"td",17),i.ɵɵtext(3,"\n "),i.ɵɵelement(4,"app-avatar",18),i.ɵɵpipe(5,"userName"),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementStart(8,"td"),i.ɵɵtext(9),i.ɵɵtemplate(10,d,2,1,"small",19),i.ɵɵtext(11,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(12,"\n "),i.ɵɵtemplate(13,p,2,1,"td",20),i.ɵɵtext(14,"\n "),i.ɵɵtemplate(15,u,2,1,"td",21),i.ɵɵtext(16,"\n "),i.ɵɵelementEnd()),2&e){const e=t.$implicit;i.ɵɵadvance(4),i.ɵɵproperty("data",i.ɵɵpipeBind1(5,8,e.user))("email",e.user.email)("circle",!0)("fontSize",14),i.ɵɵadvance(5),i.ɵɵtextInterpolate1("\n ",e.user.email,"\n "),i.ɵɵadvance(1),i.ɵɵproperty("ngIf",e.user.name),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",e.error),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",!e.error)}}function h(e,t){if(1&e&&(i.ɵɵelementStart(0,"table",14),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"thead"),i.ɵɵtext(3,"\n "),i.ɵɵelementStart(4,"tr"),i.ɵɵtext(5,"\n "),i.ɵɵelementStart(6,"th",15),i.ɵɵtext(7),i.ɵɵpipe(8,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(9,"\n "),i.ɵɵelementStart(10,"th"),i.ɵɵtext(11),i.ɵɵpipe(12,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(13,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(14,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(15,"\n "),i.ɵɵtemplate(16,m,17,10,"tr",16),i.ɵɵtext(17,"\n "),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(7),i.ɵɵtextInterpolate(i.ɵɵpipeBind1(8,3,"user")),i.ɵɵadvance(4),i.ɵɵtextInterpolate(i.ɵɵpipeBind1(12,5,"status")),i.ɵɵadvance(5),i.ɵɵproperty("ngForOf",e.users)}}class v{constructor(){this.loading=!1}}t.BulkStatusComponent=v,v.ɵfac=function(e){return new(e||v)},v.ɵcmp=i.ɵɵdefineComponent({type:v,selectors:[["app-bulk-status"]],decls:37,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],["class","text-danger",4,"ngIf"],[4,"ngIf"],[1,"text-muted","d-block"],[1,"text-danger"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"div",1),i.ɵɵtext(3,"\n "),i.ɵɵelementStart(4,"div",2),i.ɵɵtext(5,"\n "),i.ɵɵelementStart(6,"div",3),i.ɵɵtext(7,"\n "),i.ɵɵelementStart(8,"h2",4),i.ɵɵtext(9),i.ɵɵpipe(10,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(11,"\n "),i.ɵɵelementStart(12,"button",5),i.ɵɵpipe(13,"i18n"),i.ɵɵtext(14,"\n "),i.ɵɵelementStart(15,"span",6),i.ɵɵtext(16,"×"),i.ɵɵelementEnd(),i.ɵɵtext(17,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(18,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(19,"\n "),i.ɵɵelementStart(20,"div",7),i.ɵɵtext(21,"\n "),i.ɵɵtemplate(22,c,6,6,"div",8),i.ɵɵtext(23,"\n "),i.ɵɵtemplate(24,h,18,7,"table",9),i.ɵɵtext(25,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(26,"\n "),i.ɵɵelementStart(27,"div",10),i.ɵɵtext(28,"\n "),i.ɵɵelementStart(29,"button",11),i.ɵɵtext(30),i.ɵɵpipe(31,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(32,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(33,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(34,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(35,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(36,"\n")),2&e&&(i.ɵɵadvance(9),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(10,5,"bulkConfirmStatus"),"\n "),i.ɵɵadvance(3),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(13,7,"close")),i.ɵɵadvance(10),i.ɵɵproperty("ngIf",t.loading),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",!t.loading),i.ɵɵadvance(6),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(31,9,"close"),"\n "))},directives:[r.A11yTitleDirective,o.NgIf,o.NgForOf,a.AvatarComponent],pipes:[s.I18nPipe,l.UserNamePipe],encapsulation:2})},75912:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(82769)),a=n(22205),s=n(54554),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(85714),h=n(36631),v=n(63513),g=n(96832),f=n(56820),y=n(8863),x=n(57490),S=n(45728),b=n(39159),w=n(99729);function C(e,t){1&e&&(c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",14),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",25),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",26),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).selectAll(!0)})),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"button",26),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).selectAll(!1)})),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,2,"selectAll"),"\n "),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function E(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noGroupsInList"),"\n "))}function P(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",35),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"groupAccessAllItems")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"groupAccessAllItems")))}function O(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",30),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",31),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",32),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(8),c.ɵɵtemplate(9,P,9,6,"ng-container",22),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"td",33),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",34),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"td",33),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"input",34),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled",e.accessAll||!i.canSave),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",e.name,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",e.accessAll),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked||e.accessAll||!i.canSave),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked||e.accessAll||!i.canSave)}}function k(e,t){if(1&e&&(c.ɵɵelementStart(0,"table",27),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"thead"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tr"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"th"),c.ɵɵtext(7," "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"th"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"th",28),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"th",28),c.ɵɵtext(18),c.ɵɵpipe(19,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"tbody"),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,O,22,11,"tr",29),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,4,"name")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,6,"hidePasswords")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(19,8,"readOnly")),c.ɵɵadvance(7),c.ɵɵproperty("ngForOf",e.groups)}}function A(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",23),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵtemplate(5,I,10,6,"div",12),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,E,3,3,"div",22),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,k,28,10,"table",24),c.ɵɵtext(11,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,4,"groupAccess"),"\n "),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.groups&&e.groups.length&&e.canSave),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.groups||!e.groups.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.groups&&e.groups.length)}}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",17),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",18),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"div",16),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"label",19),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",20),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().externalId=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"small",21),c.ɵɵtext(20),c.ɵɵpipe(21,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,A,12,6,"ng-container",22),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,8,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.name)("disabled",!e.canSave),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,10,"externalId")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.externalId)("disabled",!e.canSave),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(21,12,"externalIdDesc")),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.accessGroups)}}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"button",36),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",37),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span"),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){c.ɵɵnextContext();const e=c.ɵɵreference(5);c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,5,"save"))}}function B(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",39,40),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",41),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",42),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function D(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",25),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,9,10,"button",38),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode)}}class R{constructor(e,t,n,i,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.logService=o,this.organizationService=a,this.onSavedCollection=new r.EventEmitter,this.onDeletedCollection=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.accessGroups=!1,this.groups=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.organizationService.get(this.organizationId);if(this.accessGroups=e.useGroups,this.editMode=this.loading=null!=this.collectionId,this.accessGroups){const e=yield this.apiService.getGroups(this.organizationId);this.groups=e.data.map((e=>e)).sort(o.Utils.getSortFunction(this.i18nService,"name"))}if(this.orgKey=yield this.cryptoService.getOrgKey(this.organizationId),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editCollection");try{const e=yield this.apiService.getCollectionDetails(this.organizationId,this.collectionId);this.name=yield this.cryptoService.decryptToUtf8(new a.EncString(e.name),this.orgKey),this.externalId=e.externalId,null!=e.groups&&this.groups.length>0&&e.groups.forEach((e=>{const t=this.groups.filter((t=>!t.accessAll&&t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(t){this.logService.error(t)}}else this.title=this.i18nService.t("addCollection");this.groups.forEach((e=>{e.accessAll&&(e.checked=!0)})),this.loading=!1}))}check(e,t){e.accessAll||(e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1,e.hidePasswords=!1))}selectAll(e){this.groups.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.orgKey)throw new Error("No encryption key for this organization.");const e=new s.CollectionRequest;e.name=(yield this.cryptoService.encrypt(this.name,this.orgKey)).encryptedString,e.externalId=this.externalId,e.groups=this.groups.filter((e=>e.checked&&!e.accessAll)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords)));try{this.editMode?this.formPromise=this.apiService.putCollection(this.organizationId,this.collectionId,e):this.formPromise=this.apiService.postCollection(this.organizationId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedCollectionId":"createdCollectionId",this.name)),this.onSavedCollection.emit()}catch(t){this.logService.error(t)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteCollectionConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteCollection(this.organizationId,this.collectionId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedCollectionId",this.name)),this.onDeletedCollection.emit()}catch(e){this.logService.error(e)}}))}}t.CollectionAddEditComponent=R,R.ɵfac=function(e){return new(e||R)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.CryptoService),c.ɵɵdirectiveInject(h.LogService),c.ɵɵdirectiveInject(v.OrganizationService))},R.ɵcmp=c.ɵɵdefineComponent({type:R,selectors:[["app-collection-add-edit"]],inputs:{collectionId:"collectionId",organizationId:"organizationId",canSave:"canSave",canDelete:"canDelete"},outputs:{onSavedCollection:"onSavedCollection",onDeletedCollection:"onDeletedCollection"},decls:38,vars:12,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name","required","","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","externalId"],["id","externalId","type","text","name","ExternalId",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"form-text","text-muted"],[4,"ngIf"],[1,"mt-4","d-flex","mb-0"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"ml-auto"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","disabled","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-filter","text-muted","bwi-fw",3,"title"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,C,9,6,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,T,26,14,"div",8),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,M,9,7,"button",10),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"button",11),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵtemplate(32,D,4,1,"div",12),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n")),2&e&&(c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,8,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.canSave),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(30,10,"cancel"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.canDelete))},directives:[g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.A11yTitleDirective,x.NgIf,g.DefaultValueAccessor,g.RequiredValidator,S.AutofocusDirective,g.NgControlStatus,g.NgModel,x.NgForOf,g.CheckboxControlValueAccessor,b.StopPropDirective],pipes:[w.I18nPipe],encapsulation:2})},26092:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(3174),n(51554),n(36631),n(63513),n(73828),n(60421),n(34917)),s=n(65642),l=n(75912),c=n(60763),d=n(32621),p=n(91674),u=n(68012),m=n(3174),h=n(64684),v=n(51554),g=n(73828),f=n(60421),y=n(36631),x=n(63513),S=n(96832),b=n(57490),w=n(37407),C=n(1142),I=n(8863),E=n(99729),P=n(50154),O=["addEdit"],k=["usersTemplate"];function A(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",8),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().add()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",9),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"newCollection"),"\n "))}function T(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",10),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",11),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n"),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function M(e,t){1&e&&(d.ɵɵelementStart(0,"p"),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(2,1,"noCollectionsInList")))}function B(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"a",24),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext(2).$implicit;return d.ɵɵnextContext(3).users(t)})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",25),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"users"),"\n "))}function D(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"a",26),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext(2).$implicit;return d.ɵɵnextContext(3).delete(t)})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",27),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"delete"),"\n "))}function R(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",18),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",19),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",20),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",21),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,B,5,3,"a",22),d.ɵɵtext(11,"\n "),d.ɵɵtemplate(12,D,5,3,"a",23),d.ɵɵtext(13,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(14,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext().$implicit,t=d.ɵɵnextContext(3);d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,3,"options")),d.ɵɵadvance(8),d.ɵɵproperty("ngIf",t.canEdit(e)),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.canDelete(e))}}function F(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"tr"),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"td"),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"a",15),d.ɵɵlistener("click",(function(){const t=d.ɵɵrestoreView(e).$implicit;return d.ɵɵnextContext(3).edit(t)})),d.ɵɵtext(5),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"td",16),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,R,15,5,"div",17),d.ɵɵtext(11,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(12,"\n "),d.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=d.ɵɵnextContext(3);d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.name),d.ɵɵadvance(5),d.ɵɵproperty("ngIf",n.canEdit(e)||n.canDelete(e))}}function U(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"table",13),d.ɵɵlistener("scrolled",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).loadMore()})),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"tbody"),d.ɵɵtext(3,"\n "),d.ɵɵtemplate(4,F,13,2,"tr",14),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext().ngIf,t=d.ɵɵnextContext();d.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),d.ɵɵadvance(4),d.ɵɵproperty("ngForOf",e)}}function V(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵtemplate(2,M,3,3,"p",5),d.ɵɵtext(3,"\n "),d.ɵɵtemplate(4,U,7,3,"table",12),d.ɵɵtext(5,"\n"),d.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!e.length),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.length)}}function N(e,t){}function _(e,t){}class j{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.route=t,this.collectionService=n,this.modalService=i,this.i18nService=r,this.platformUtilsService=o,this.searchService=a,this.logService=s,this.organizationService=l,this.loading=!0,this.canCreate=!1,this.didScroll=!1,this.pageSize=100,this.pagedCollectionsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))}))))}))}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId),this.canCreate=this.organization.canCreateNewCollections;const e=e=>i(this,void 0,void 0,(function*(){const t=e.data.filter((e=>e.organizationId===this.organizationId)).map((e=>new s.Collection(new a.CollectionData(e))));return yield this.collectionService.decryptMany(t)}));if(this.organization.canViewAssignedCollections){const t=yield this.apiService.getUserCollections();this.assignedCollections=yield e(t)}if(this.organization.canViewAllCollections){const t=yield this.apiService.getCollections(this.organizationId);this.collections=yield e(t)}else this.collections=this.assignedCollections;this.resetPaging(),this.loading=!1}))}loadMore(){if(!this.collections||this.collections.length<=this.pageSize)return;const e=this.pagedCollections.length;let t=this.pageSize;0===e&&this.pagedCollectionsCount>this.pageSize&&(t=this.pagedCollectionsCount),this.collections.length>e&&(this.pagedCollections=this.pagedCollections.concat(this.collections.slice(e,e+t))),this.pagedCollectionsCount=this.pagedCollections.length,this.didScroll=this.pagedCollections.length>this.pageSize}edit(e){return i(this,void 0,void 0,(function*(){const t=null==e&&this.canCreate,n=null!=e&&this.canEdit(e),i=null!=e&&this.canDelete(e);if(!(t||n||i))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("missingPermissions"));const[r]=yield this.modalService.openViewRef(l.CollectionAddEditComponent,this.addEditModalRef,(o=>{o.organizationId=this.organizationId,o.collectionId=null!=e?e.id:null,o.canSave=t||n,o.canDelete=i,o.onSavedCollection.subscribe((()=>{r.close(),this.load()})),o.onDeletedCollection.subscribe((()=>{r.close(),this.removeCollection(e)}))}))}))}add(){this.edit(null)}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteCollectionConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteCollection(this.organizationId,e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedCollectionId",e.name)),this.removeCollection(e)}catch(t){this.logService.error(t),this.platformUtilsService.showToast("error",null,this.i18nService.t("missingPermissions"))}}))}users(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(c.EntityUsersComponent,this.usersModalRef,(n=>{n.organizationId=this.organizationId,n.entity="collection",n.entityId=e.id,n.entityName=e.name,n.onEditedUsers.subscribe((()=>{this.load(),t.close()}))}))}))}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedCollections=[],this.loadMore()}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.collections&&this.collections.length>this.pageSize}canEdit(e){return!!this.organization.canEditAnyCollection||!(!this.organization.canEditAssignedCollections||!this.assignedCollections.some((t=>t.id===e.id)))}canDelete(e){return!!this.organization.canDeleteAnyCollection||!(!this.organization.canDeleteAssignedCollections||!this.assignedCollections.some((t=>t.id===e.id)))}removeCollection(e){const t=this.collections.indexOf(e);t>-1&&(this.collections.splice(t,1),this.resetPaging())}}t.CollectionsComponent=j,j.ɵfac=function(e){return new(e||j)(d.ɵɵdirectiveInject(p.ApiService),d.ɵɵdirectiveInject(u.ActivatedRoute),d.ɵɵdirectiveInject(m.CollectionService),d.ɵɵdirectiveInject(h.ModalService),d.ɵɵdirectiveInject(v.I18nService),d.ɵɵdirectiveInject(g.PlatformUtilsService),d.ɵɵdirectiveInject(f.SearchService),d.ɵɵdirectiveInject(y.LogService),d.ɵɵdirectiveInject(x.OrganizationService))},j.ɵcmp=d.ɵɵdefineComponent({type:j,selectors:[["app-org-manage-collections"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(O,7,r.ViewContainerRef),d.ɵɵviewQuery(k,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.addEditModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.usersModalRef=e.first)}},decls:33,vars:18,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button","class","btn btn-sm btn-outline-primary ml-3",3,"click",4,"ngIf"],[4,"ngIf"],["addEdit",""],["usersTemplate",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover table-list","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],[1,"table-list-options"],["class","dropdown","appListDropdown","",4,"ngIf"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-danger","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-users"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"h1"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"div",1),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div"),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"label",2),d.ɵɵtext(11),d.ɵɵpipe(12,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(13,"\n "),d.ɵɵelementStart(14,"input",3),d.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),d.ɵɵpipe(15,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(17,"\n "),d.ɵɵtemplate(18,A,5,3,"button",4),d.ɵɵtext(19,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(20,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n"),d.ɵɵtemplate(22,T,9,6,"ng-container",5),d.ɵɵtext(23,"\n"),d.ɵɵtemplate(24,V,6,2,"ng-container",5),d.ɵɵpipe(25,"search"),d.ɵɵtext(26,"\n"),d.ɵɵtemplate(27,N,0,0,"ng-template",null,6,d.ɵɵtemplateRefExtractor),d.ɵɵtext(29,"\n"),d.ɵɵtemplate(30,_,0,0,"ng-template",null,7,d.ɵɵtemplateRefExtractor),d.ɵɵtext(32,"\n")),2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,7,"collections")),d.ɵɵadvance(8),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(12,9,"search")),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("placeholder",d.ɵɵpipeBind1(15,11,"search")),d.ɵɵproperty("ngModel",t.searchText),d.ɵɵadvance(4),d.ɵɵproperty("ngIf",t.canCreate),d.ɵɵadvance(4),d.ɵɵproperty("ngIf",t.loading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedCollections:d.ɵɵpipeBind4(25,13,t.collections,t.searchText,"name","id"))))},directives:[S.DefaultValueAccessor,S.NgControlStatus,S.NgModel,b.NgIf,w.InfiniteScrollDirective,b.NgForOf,C.StopClickDirective,I.A11yTitleDirective],pipes:[E.I18nPipe,P.SearchPipe],encapsulation:2})},87876:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EntityEventsComponent=void 0;n(52080),n(91674),n(51554),n(36631),n(73828),n(3202);const r=n(32621),o=n(91674),a=n(51554),s=n(3202),l=n(73828),c=n(52080),d=n(36631),p=n(57490),u=n(8863),m=n(96832),h=n(56820),v=n(99729);function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",11),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function f(e,t){1&e&&(r.ɵɵelementStart(0,"div",12),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",13),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",14),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noEventsInList"),"\n "))}function x(e,t){1&e&&(r.ɵɵelementStart(0,"th",34),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"user")))}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"td"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",37),r.ɵɵtext(3),r.ɵɵelementEnd(),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",e.userEmail),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.userName)}}function b(e,t){if(1&e&&(r.ɵɵelementStart(0,"tr"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td"),r.ɵɵtext(3),r.ɵɵpipe(4,"date"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"td"),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",35),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"span",14),r.ɵɵtext(11),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,S,5,2,"td",25),r.ɵɵtext(15,"\n "),r.ɵɵelement(16,"td",36),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit,n=r.ɵɵnextContext(3);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(4,10,e.date,"medium")),r.ɵɵadvance(5),r.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),r.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),r.ɵɵadvance(3),r.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",n.showUser),r.ɵɵadvance(2),r.ɵɵproperty("innerHTML",e.message,r.ɵɵsanitizeHtml)}}function w(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",28),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"thead"),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"tr"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"th",29),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"th",30),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span",14),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵtemplate(17,x,3,3,"th",31),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"th",32),r.ɵɵtext(20),r.ɵɵpipe(21,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"tbody"),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,b,18,13,"tr",33),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,5,"timestamp")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(14,7,"device")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showUser),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(21,9,"event")),r.ɵɵadvance(7),r.ɵɵproperty("ngForOf",e.events)}}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",38,39),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).loadEvents(!1)})),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",40),r.ɵɵpipe(4,"i18n"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext(2);r.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(4,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"loadMore"))}}const I=function(e){return{"bwi-spin":e}};function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",12),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",15),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",16),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",17),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"input",18),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().start=t})),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"span",19),r.ɵɵtext(14,"-"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"label",20),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"input",21),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().end=t})),r.ɵɵpipe(21,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"button",22,23),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().loadEvents(!0)})),r.ɵɵtext(26,"\n "),r.ɵɵelement(27,"i",24),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"hr"),r.ɵɵtext(33,"\n "),r.ɵɵtemplate(34,y,3,3,"div",25),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,w,30,11,"table",26),r.ɵɵtext(37,"\n "),r.ɵɵtemplate(38,C,10,8,"button",27),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(25),t=r.ɵɵnextContext();r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,13,"startDate")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("placeholder",r.ɵɵpipeBind1(11,15,"startDate")),r.ɵɵproperty("ngModel",t.start),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(18,17,"endDate")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("placeholder",r.ɵɵpipeBind1(21,19,"endDate")),r.ɵɵproperty("ngModel",t.end),r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.refreshPromise)("disabled",t.loaded&&e.loading),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(23,I,t.loaded&&e.loading)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(29,21,"refresh"),"\n "),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",!t.events||!t.events.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.events&&t.events.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.continuationToken)}}class P{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.eventService=n,this.platformUtilsService=i,this.userNamePipe=r,this.logService=o,this.showUser=!1,this.loading=!0,this.loaded=!1,this.orgUsersUserIdMap=new Map,this.orgUsersIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=this.eventService.getDefaultDateFilters();this.start=e[0],this.end=e[1],yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){if(this.showUser){(yield this.apiService.getOrganizationUsers(this.organizationId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersIdMap.set(e.id,{name:t,email:e.email}),this.orgUsersUserIdMap.set(e.userId,{name:t,email:e.email})}))}yield this.loadEvents(!0),this.loaded=!0}))}loadEvents(e){return i(this,void 0,void 0,(function*(){if(null!=this.refreshPromise||null!=this.morePromise)return;let t,n=null;try{n=this.eventService.formatDateFilters(this.start,this.end)}catch(o){return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidDateRange"))}this.loading=!0;try{let i;i="user"===this.entity&&this.providerId?this.apiService.getEventsProviderUser(this.providerId,this.entityId,n[0],n[1],e?null:this.continuationToken):"user"===this.entity?this.apiService.getEventsOrganizationUser(this.organizationId,this.entityId,n[0],n[1],e?null:this.continuationToken):this.apiService.getEventsCipher(this.entityId,n[0],n[1],e?null:this.continuationToken),e?this.refreshPromise=i:this.morePromise=i,t=yield i}catch(o){this.logService.error(o)}this.continuationToken=t.continuationToken;const r=yield Promise.all(t.data.map((e=>i(this,void 0,void 0,(function*(){const t=null==e.actingUserId?e.userId:e.actingUserId,n=yield this.eventService.getEventInfo(e),i=this.showUser&&null!=t&&this.orgUsersUserIdMap.has(t)?this.orgUsersUserIdMap.get(t):null;return{message:n.message,appIcon:n.appIcon,appName:n.appName,userId:t,userName:null!=i?i.name:this.showUser?this.i18nService.t("unknown"):null,userEmail:null!=i?i.email:this.showUser?"":null,date:e.date,ip:e.ipAddress,type:e.type}})))));!e&&null!=this.events&&this.events.length>0?this.events=this.events.concat(r):this.events=r,this.loading=!1,this.morePromise=null,this.refreshPromise=null}))}}t.EntityEventsComponent=P,P.ɵfac=function(e){return new(e||P)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.EventService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(c.UserNamePipe),r.ɵɵdirectiveInject(d.LogService))},P.ɵcmp=r.ɵɵdefineComponent({type:P,selectors:[["app-entity-events"]],inputs:{name:"name",entity:"entity",entityId:"entityId",organizationId:"organizationId",providerId:"providerId",showUser:"showUser"},decls:36,vars:12,consts:[["role","dialog","aria-modal","true","aria-labelledby","eventLogsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","eventLogsTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"appApiAction","disabled","click"],["refreshBtn",""],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],[4,"ngIf"],["class","table table-hover mb-0",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover","mb-0"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["class","border-top-0","width","150",4,"ngIf"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["width","150",1,"border-top-0"],["aria-hidden","true",3,"title"],[3,"innerHTML"],[3,"appA11yTitle"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵtemplate(11,g,2,1,"small",5),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",6),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"span",7),r.ɵɵtext(18,"×"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,f,9,6,"div",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,E,40,25,"div",8),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",9),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"button",10),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,6,"eventLogs"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.name),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,8,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.loaded),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.loaded),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,10,"close"),"\n "))},directives:[p.NgIf,u.A11yTitleDirective,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,h.ApiActionDirective,p.NgClass,p.NgForOf],pipes:[v.I18nPipe,p.DatePipe],encapsulation:2})},60763:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EntityUsersComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(7368)),a=n(33712),s=n(82769),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),g=n(8863),f=n(57490),y=n(39159),x=n(15370),S=n(99729),b=n(50154),w=n(52080);function C(e,t){1&e&&(c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",14),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e&&(c.ɵɵelementStart(0,"span",24),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.selectedCount)}}function E(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"hr"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"noUsersInList"),"\n "))}function P(e,t){1&e&&(c.ɵɵelementStart(0,"th"),c.ɵɵtext(1," "),c.ɵɵelementEnd())}function O(e,t){1&e&&(c.ɵɵelementStart(0,"th",28),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"hidePasswords"),"\n "))}function k(e,t){1&e&&(c.ɵɵelementStart(0,"th",28),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"readOnly"),"\n "))}function A(e,t){1&e&&(c.ɵɵelementStart(0,"span",37),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"invited")))}function T(e,t){1&e&&(c.ɵɵelementStart(0,"span",38),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"accepted")))}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"small",39),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function B(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",40),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"userAccessAllItems")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"userAccessAllItems")))}function D(e,t){if(1&e&&(c.ɵɵelementStart(0,"td"),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,9,6,"ng-container",23),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.accessAll)}}function R(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"owner")))}function F(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"admin")))}function U(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"manager")))}function V(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"user")))}function N(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"custom")))}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",42),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",e.accessAll||!e.checked)}}function j(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",42),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",e.accessAll||!e.checked)}}function z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",29),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",30),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t}))("change",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).selectedChanged(t)})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",31),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).check(t)})),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"app-avatar",32),c.ɵɵpipe(10,"userName"),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"td"),c.ɵɵtext(15),c.ɵɵtemplate(16,A,3,3,"span",33),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,T,3,3,"span",34),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,M,2,1,"small",35),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵtemplate(23,D,4,1,"td",23),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"td"),c.ɵɵtext(26,"\n "),c.ɵɵtemplate(27,R,3,3,"span",23),c.ɵɵtext(28,"\n "),c.ɵɵtemplate(29,F,3,3,"span",23),c.ɵɵtext(30,"\n "),c.ɵɵtemplate(31,U,3,3,"span",23),c.ɵɵtext(32,"\n "),c.ɵɵtemplate(33,V,3,3,"span",23),c.ɵɵtext(34,"\n "),c.ɵɵtemplate(35,N,3,3,"span",23),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵtemplate(38,_,4,3,"td",36),c.ɵɵtext(39,"\n "),c.ɵɵtemplate(40,j,4,3,"td",36),c.ɵɵtext(41,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=c.ɵɵnextContext(3);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled","collection"===n.entity&&e.accessAll),c.ɵɵadvance(5),c.ɵɵproperty("data",c.ɵɵpipeBind1(10,19,e))("email",e.email)("circle",!0)("fontSize",14),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",e.email,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",e.status===n.organizationUserStatusType.Invited),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.status===n.organizationUserStatusType.Accepted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.name),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===n.entity),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Owner),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Admin),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Manager),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.User),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Custom),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===n.entity),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","collection"===n.entity)}}function H(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"table",25),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"thead"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"tr"),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"th"),c.ɵɵtext(9," "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"th"),c.ɵɵtext(12," "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"th"),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,P,2,0,"th",23),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"th"),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,O,3,3,"th",26),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,k,3,3,"th",26),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"tbody"),c.ɵɵtext(31,"\n "),c.ɵɵtemplate(32,z,42,21,"tr",27),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵadvance(15),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(16,6,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(22,8,"userType")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(6),c.ɵɵproperty("ngForOf",e)}}const L=function(e){return{active:e}};function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",18),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",19),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().searchText=t})),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",20),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",21),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().filterSelected(!1)})),c.ɵɵtext(17),c.ɵɵpipe(18,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"button",21),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().filterSelected(!0)})),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵtemplate(23,I,2,1,"span",22),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵtemplate(28,E,5,3,"ng-container",23),c.ɵɵtext(29,"\n "),c.ɵɵtemplate(30,H,36,10,"ng-container",23),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.ngIf,n=c.ɵɵnextContext();c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,10,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(11,12,"search")),c.ɵɵproperty("ngModel",n.searchText),c.ɵɵadvance(6),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(18,L,!n.showSelected)),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(18,14,"all"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(20,L,n.showSelected)),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(22,16,"selected"),"\n "),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",n.selectedCount),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}const q=function(e,t){return[e,t,"name","email","id"]};class G{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onEditedUsers=new r.EventEmitter,this.organizationUserType=a.OrganizationUserType,this.organizationUserStatusType=o.OrganizationUserStatusType,this.showSelected=!1,this.loading=!0,this.selectedCount=0,this.allUsers=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.loadUsers(),this.loading=!1}))}get users(){return this.showSelected?this.allUsers.filter((e=>e.checked)):this.allUsers}loadUsers(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getOrganizationUsers(this.organizationId);if(this.allUsers=e.data.map((e=>e)).sort(s.Utils.getSortFunction(this.i18nService,"email")),"group"===this.entity){const t=yield this.apiService.getGroupUsers(this.organizationId,this.entityId);null!=t&&e.data.length>0&&t.forEach((t=>{const n=e.data.filter((e=>e.id===t));null!=n&&n.length>0&&(n[0].checked=!0)}))}else if("collection"===this.entity){const t=yield this.apiService.getCollectionUsers(this.organizationId,this.entityId);null!=t&&e.data.length>0&&t.forEach((t=>{const n=e.data.filter((e=>!e.accessAll&&e.id===t.id));null!=n&&n.length>0&&(n[0].checked=!0,n[0].readOnly=t.readOnly,n[0].hidePasswords=t.hidePasswords)}))}this.allUsers.forEach((e=>{"collection"===this.entity&&e.accessAll&&(e.checked=!0),e.checked&&this.selectedCount++}))}))}check(e){"collection"===this.entity&&e.accessAll||(e.checked=!e.checked,this.selectedChanged(e))}selectedChanged(e){e.checked?this.selectedCount++:("collection"===this.entity&&(e.readOnly=!1,e.hidePasswords=!1),this.selectedCount--)}filterSelected(e){this.showSelected=e}submit(){return i(this,void 0,void 0,(function*(){try{if("group"===this.entity){const e=this.users.filter((e=>e.checked)).map((e=>e.id));this.formPromise=this.apiService.putGroupUsers(this.organizationId,this.entityId,e)}else{const e=this.users.filter((e=>e.checked&&!e.accessAll)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords)));this.formPromise=this.apiService.putCollectionUsers(this.organizationId,this.entityId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedUsers")),this.onEditedUsers.emit()}catch(e){this.logService.error(e)}}))}}t.EntityUsersComponent=G,G.ɵfac=function(e){return new(e||G)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},G.ɵcmp=c.ɵɵdefineComponent({type:G,selectors:[["app-entity-users"]],inputs:{entity:"entity",entityId:"entityId",entityName:"entityName",organizationId:"organizationId"},outputs:{onEditedUsers:"onEditedUsers"},decls:49,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAccessTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAccessTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"d-flex"],[1,"mr-3"],["for","search",1,"sr-only"],["type","search","id","search","name","SearchText",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],[4,"ngIf"],[1,"badge","badge-pill","badge-info"],[1,"table","table-hover","table-list","mb-0"],["width","100","class","text-center",4,"ngIf"],[4,"ngFor","ngForOf"],["width","100",1,"text-center"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","disabled","ngModelChange","change"],["width","30",3,"click"],["size","25",3,"data","email","circle","fontSize"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],["class","text-center",4,"ngIf"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-filter",3,"title"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementStart(12,"small"),c.ɵɵtext(13),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",6),c.ɵɵpipe(17,"i18n"),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"span",7),c.ɵɵtext(20,"×"),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,C,9,6,"div",8),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,K,32,22,"div",8),c.ɵɵpipe(27,"search"),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",9),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"button",10),c.ɵɵtext(32,"\n "),c.ɵɵelement(33,"i",11),c.ɵɵpipe(34,"i18n"),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"span"),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"button",12),c.ɵɵtext(42),c.ɵɵpipe(43,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(11,10,"userAccess"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(t.entityName),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(17,12,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading||!t.users),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&t.users&&c.ɵɵpipeBindV(27,14,c.ɵɵpureFunction2(26,q,t.users,t.searchText))),c.ɵɵadvance(5),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(34,20,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(38,22,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(43,24,"close"),"\n ")}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,g.A11yTitleDirective,f.NgIf,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,f.NgClass,f.NgForOf,h.CheckboxControlValueAccessor,y.StopPropDirective,x.AvatarComponent],pipes:[S.I18nPipe,b.SearchPipe,w.UserNamePipe],encapsulation:2})},25829:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventsComponent=void 0;n(68012),n(52080),n(91674),n(97445),n(51554),n(36631),n(63513),n(73828),n(68291);const r=n(75512),o=(n(3202),n(32621)),a=n(91674),s=n(68012),l=n(3202),c=n(51554),d=n(97445),p=n(73828),u=n(36631),m=n(52080),h=n(63513),v=n(68291),g=n(96832),f=n(56820),y=n(57490),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",17),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noEventsInList")))}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td"),o.ɵɵtext(3),o.ɵɵpipe(4,"date"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"td"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",26),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"span",17),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"td"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",27),o.ɵɵtext(17),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelement(20,"td",28),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(4,11,e.date,"medium")),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),o.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",e.userEmail),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.userName),o.ɵɵadvance(3),o.ɵɵproperty("innerHTML",e.message,o.ɵɵsanitizeHtml)}}function C(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"thead"),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"tr"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"th",21),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",22),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"span",17),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"th",23),o.ɵɵtext(18),o.ɵɵpipe(19,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"th",24),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"tbody"),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,w,22,14,"tr",25),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"timestamp")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"device")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(19,9,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"event")),o.ɵɵadvance(7),o.ɵɵproperty("ngForOf",e.events)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",29,30),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).loadEvents(!1)})),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",31),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"span"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(4,4,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"loadMore"))}}function E(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,3,3,"p",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,32,13,"table",18),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,I,10,8,"button",19),o.ɵɵtext(7,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.events||!e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.events&&e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.continuationToken)}}const P=function(e){return{"bwi-spin":e}},O=function(e){return{loading:e}};class k extends r.BaseEventsComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(n,i,r,o,s),this.apiService=e,this.route=t,this.router=a,this.userNamePipe=l,this.organizationService=c,this.providerService=d,this.exportFileName="org-events",this.orgUsersUserIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.organization=yield this.organizationService.get(this.organizationId),null!=this.organization&&this.organization.useEvents?yield this.load():this.router.navigate(["/organizations",this.organizationId])}))))}))}load(){return i(this,void 0,void 0,(function*(){if((yield this.apiService.getOrganizationUsers(this.organizationId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersUserIdMap.set(e.userId,{name:t,email:e.email})})),null!=this.organization.providerId)try{if(null!=(yield this.providerService.get(this.organization.providerId))&&(yield this.providerService.get(this.organization.providerId)).canManageUsers){(yield this.apiService.getProviderUsers(this.organization.providerId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersUserIdMap.set(e.userId,{name:`${t} (${this.organization.providerName})`,email:e.email})}))}}catch(e){this.logService.warning(e)}yield this.loadEvents(!0),this.loaded=!0}))}requestEvents(e,t,n){return this.apiService.getEventsOrganization(this.organizationId,e,t,n)}getUserName(e,t){return null==t?null:this.orgUsersUserIdMap.has(t)?this.orgUsersUserIdMap.get(t):null!=e.providerId&&e.providerId===this.organization.providerId?{name:this.organization.providerName}:null}}t.EventsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.ActivatedRoute),o.ɵɵdirectiveInject(l.EventService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.ExportService),o.ɵɵdirectiveInject(p.PlatformUtilsService),o.ɵɵdirectiveInject(s.Router),o.ɵɵdirectiveInject(u.LogService),o.ɵɵdirectiveInject(m.UserNamePipe),o.ɵɵdirectiveInject(h.OrganizationService),o.ɵɵdirectiveInject(v.ProviderService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-org-events"]],features:[o.ɵɵInheritDefinitionFeature],decls:57,vars:35,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"d-inline",3,"appApiAction"],["refreshForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["exportForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","btn-submit","manual","ml-3",3,"ngClass","disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["width","150",1,"border-top-0"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["aria-hidden","true",3,"title"],[3,"title"],[3,"innerHTML"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",1),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",2),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",3),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",4),o.ɵɵlistener("ngModelChange",(function(e){return t.start=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"span",5),o.ɵɵtext(18,"-"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"label",6),o.ɵɵtext(21),o.ɵɵpipe(22,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"input",7),o.ɵɵlistener("ngModelChange",(function(e){return t.end=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"form",8,9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"button",10),o.ɵɵlistener("click",(function(){return t.loadEvents(!0)})),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",11),o.ɵɵtext(34),o.ɵɵpipe(35,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"form",8,12),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",13),o.ɵɵlistener("click",(function(){return t.exportEvents()})),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",14),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵtemplate(53,S,9,6,"ng-container",15),o.ɵɵtext(54,"\n"),o.ɵɵtemplate(55,E,8,3,"ng-container",15),o.ɵɵtext(56,"\n")),2&e){const e=o.ɵɵreference(29),n=o.ɵɵreference(39);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"eventLogs")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,19,"startDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(15,21,"startDate")),o.ɵɵproperty("ngModel",t.start),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(22,23,"endDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(25,25,"endDate")),o.ɵɵproperty("ngModel",t.end),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.refreshPromise),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loaded&&e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(31,P,t.loaded&&e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(35,27,"refresh"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.exportPromise),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(33,O,n.loading))("disabled",t.loaded&&n.loading||t.dirtyDates),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"export")),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded)}},directives:[g.DefaultValueAccessor,g.NgControlStatus,g.NgModel,g.ɵNgNoValidate,g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.NgClass,y.NgIf,y.NgForOf],pipes:[x.I18nPipe,y.DatePipe],encapsulation:2})},27611:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GroupAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(3174),n(51554),n(36631),n(73828),n(34917)),a=n(65642),s=n(13234),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(3174),m=n(73828),h=n(36631),v=n(96832),g=n(56820),f=n(8863),y=n(57490),x=n(39159),S=n(99729);function b(e,t){1&e&&(c.ɵɵelementStart(0,"div",15),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",16),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",17),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).selectAll(!0)})),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"button",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).selectAll(!1)})),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,2,"selectAll"),"\n "),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function C(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function I(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",41),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",42),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",43),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(8),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"td",44),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",45),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"td",44),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",45),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",e.name,"\n "),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked)}}function E(e,t){if(1&e&&(c.ɵɵelementStart(0,"table",38),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"thead"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tr"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"th"),c.ɵɵtext(7," "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"th"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"th",39),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"th",39),c.ɵɵtext(18),c.ɵɵpipe(19,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"tbody"),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,I,20,9,"tr",40),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,4,"name")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,6,"hidePasswords")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(19,8,"readOnly")),c.ɵɵadvance(7),c.ɵɵproperty("ngForOf",e.collections)}}function P(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,C,3,3,"div",35),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,E,28,10,"table",37),c.ɵɵtext(5,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.collections||!e.collections.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const O=function(e){return{"mb-0":e}};function k(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",15),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",18),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",19),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",20),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"div",18),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"label",21),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",22),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().externalId=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"small",23),c.ɵɵtext(20),c.ɵɵpipe(21,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"h3",24),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",25),c.ɵɵtext(27),c.ɵɵpipe(28,"i18n"),c.ɵɵelementStart(29,"a",26),c.ɵɵpipe(30,"i18n"),c.ɵɵtext(31,"\n "),c.ɵɵelement(32,"i",27),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵtemplate(36,w,10,6,"div",28),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"div",29),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"div",30),c.ɵɵtext(42,"\n "),c.ɵɵelementStart(43,"input",31),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().access=t})),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"label",32),c.ɵɵtext(46),c.ɵɵpipe(47,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n "),c.ɵɵelementStart(50,"div",30),c.ɵɵtext(51,"\n "),c.ɵɵelementStart(52,"input",33),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().access=t})),c.ɵɵelementEnd(),c.ɵɵtext(53,"\n "),c.ɵɵelementStart(54,"label",34),c.ɵɵtext(55),c.ɵɵpipe(56,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(57,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(58,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(59,"\n "),c.ɵɵtemplate(60,P,6,2,"ng-container",35),c.ɵɵtext(61,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,14,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.name),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,16,"externalId")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.externalId),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(21,18,"externalIdDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(28,20,"accessControl"),"\n "),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(30,22,"learnMore")),c.ɵɵadvance(7),c.ɵɵproperty("ngIf","selected"===e.access&&e.collections&&e.collections.length),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(28,O,"selected"!==e.access)),c.ɵɵadvance(4),c.ɵɵproperty("ngModel",e.access),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(47,24,"groupAccessAllItems"),"\n "),c.ɵɵadvance(6),c.ɵɵproperty("ngModel",e.access),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(56,26,"groupAccessSelectedCollections"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf","selected"===e.access)}}function A(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",46,47),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",48),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",49),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext();c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}class T{constructor(e,t,n,i,o){this.apiService=e,this.i18nService=t,this.collectionService=n,this.platformUtilsService=i,this.logService=o,this.onSavedGroup=new r.EventEmitter,this.onDeletedGroup=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.access="selected",this.collections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.groupId,yield this.loadCollections(),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editGroup");try{const e=yield this.apiService.getGroupDetails(this.organizationId,this.groupId);this.access=e.accessAll?"all":"selected",this.name=e.name,this.externalId=e.externalId,null!=e.collections&&null!=this.collections&&e.collections.forEach((e=>{const t=this.collections.filter((t=>t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("addGroup");this.loading=!1}))}loadCollections(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getCollections(this.organizationId)).data.map((e=>new a.Collection(new o.CollectionData(e))));this.collections=yield this.collectionService.decryptMany(e)}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){const e=new s.GroupRequest;e.name=this.name,e.externalId=this.externalId,e.accessAll="all"===this.access,e.accessAll||(e.collections=this.collections.filter((e=>e.checked)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords))));try{this.editMode?this.formPromise=this.apiService.putGroup(this.organizationId,this.groupId,e):this.formPromise=this.apiService.postGroup(this.organizationId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedGroupId":"createdGroupId",this.name)),this.onSavedGroup.emit()}catch(t){this.logService.error(t)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteGroupConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteGroup(this.organizationId,this.groupId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedGroupId",this.name)),this.onDeletedGroup.emit()}catch(e){this.logService.error(e)}}))}}t.GroupAddEditComponent=T,T.ɵfac=function(e){return new(e||T)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.CollectionService),c.ɵɵdirectiveInject(m.PlatformUtilsService),c.ɵɵdirectiveInject(h.LogService))},T.ɵcmp=c.ɵɵdefineComponent({type:T,selectors:[["app-group-add-edit"]],inputs:{groupId:"groupId",organizationId:"organizationId"},outputs:{onSavedGroup:"onSavedGroup",onDeletedGroup:"onDeletedGroup"},decls:49,vars:18,consts:[["role","dialog","aria-modal","true","aria-labelledby","groupAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","groupAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","externalId"],["id","externalId","type","text","name","ExternalId",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],[1,"mt-4","d-flex"],[1,"mb-2"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/user-types-access-control/#access-control",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["class","ml-auto",4,"ngIf"],[1,"form-group",3,"ngClass"],[1,"form-check"],["type","radio","name","access","id","accessAll","value","all",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessAll",1,"form-check-label"],["type","radio","name","access","id","accessSelected","value","selected",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessSelected",1,"form-check-label"],[4,"ngIf"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,b,9,6,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,k,62,30,"div",8),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"button",10),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"i",11),c.ɵɵpipe(29,"i18n"),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"span"),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"button",12),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"div",13),c.ɵɵtext(41,"\n "),c.ɵɵtemplate(42,A,9,10,"button",14),c.ɵɵtext(43,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,10,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(29,12,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(33,14,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(38,16,"cancel"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.editMode)}},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.A11yTitleDirective,y.NgIf,v.DefaultValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,y.NgClass,v.RadioControlValueAccessor,y.NgForOf,v.CheckboxControlValueAccessor,x.StopPropDirective],pipes:[S.I18nPipe],encapsulation:2})},41204:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GroupsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(51554),n(36631),n(63513),n(73828),n(60421),n(82769)),s=n(60763),l=n(27611),c=n(32621),d=n(91674),p=n(68012),u=n(51554),m=n(64684),h=n(73828),v=n(60421),g=n(36631),f=n(63513),y=n(96832),x=n(57490),S=n(37407),b=n(1142),w=n(8863),C=n(99729),I=n(50154),E=["addEdit"],P=["usersTemplate"];function O(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",10),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function k(e,t){1&e&&(c.ɵɵelementStart(0,"p"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"noGroupsInList")))}function A(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"a",14),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).edit(t)})),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"td",15),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",16),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",17),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelement(15,"i",18),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"div",19),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"a",20),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).users(t)})),c.ɵɵtext(21,"\n "),c.ɵɵelement(22,"i",21),c.ɵɵtext(23),c.ɵɵpipe(24,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"a",22),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).delete(t)})),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"i",23),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit;c.ɵɵadvance(5),c.ɵɵtextInterpolate(e.name),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,4,"options")),c.ɵɵadvance(11),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(24,6,"users"),"\n "),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(30,8,"delete"),"\n ")}}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"table",12),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"tbody"),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,A,35,10,"tr",13),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function M(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,k,3,3,"p",6),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,T,7,3,"table",11),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}function B(e,t){}function D(e,t){}class R{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.route=t,this.i18nService=n,this.modalService=i,this.platformUtilsService=r,this.router=o,this.searchService=a,this.logService=s,this.organizationService=l,this.loading=!0,this.didScroll=!1,this.pageSize=100,this.pagedGroupsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId;const t=yield this.organizationService.get(this.organizationId);null!=t&&t.useGroups?(yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))):this.router.navigate(["/organizations",this.organizationId])}))))}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getGroups(this.organizationId),t=null!=e.data&&e.data.length>0?e.data:[];t.sort(a.Utils.getSortFunction(this.i18nService,"name")),this.groups=t,this.resetPaging(),this.loading=!1}))}loadMore(){if(!this.groups||this.groups.length<=this.pageSize)return;const e=this.pagedGroups.length;let t=this.pageSize;0===e&&this.pagedGroupsCount>this.pageSize&&(t=this.pagedGroupsCount),this.groups.length>e&&(this.pagedGroups=this.pagedGroups.concat(this.groups.slice(e,e+t))),this.pagedGroupsCount=this.pagedGroups.length,this.didScroll=this.pagedGroups.length>this.pageSize}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(l.GroupAddEditComponent,this.addEditModalRef,(n=>{n.organizationId=this.organizationId,n.groupId=null!=e?e.id:null,n.onSavedGroup.subscribe((()=>{t.close(),this.load()})),n.onDeletedGroup.subscribe((()=>{t.close(),this.removeGroup(e)}))}))}))}add(){this.edit(null)}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteGroupConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteGroup(this.organizationId,e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedGroupId",e.name)),this.removeGroup(e)}catch(t){this.logService.error(t)}}))}users(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(s.EntityUsersComponent,this.usersModalRef,(n=>{n.organizationId=this.organizationId,n.entity="group",n.entityId=e.id,n.entityName=e.name,n.onEditedUsers.subscribe((()=>{t.close()}))}))}))}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedGroups=[],this.loadMore()}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.groups&&this.groups.length>this.pageSize}removeGroup(e){const t=this.groups.indexOf(e);t>-1&&(this.groups.splice(t,1),this.resetPaging())}}t.GroupsComponent=R,R.ɵfac=function(e){return new(e||R)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.ActivatedRoute),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.ModalService),c.ɵɵdirectiveInject(h.PlatformUtilsService),c.ɵɵdirectiveInject(p.Router),c.ɵɵdirectiveInject(v.SearchService),c.ɵɵdirectiveInject(g.LogService),c.ɵɵdirectiveInject(f.OrganizationService))},R.ɵcmp=c.ɵɵdefineComponent({type:R,selectors:[["app-org-groups"]],viewQuery:function(e,t){if(1&e&&(c.ɵɵviewQuery(E,7,r.ViewContainerRef),c.ɵɵviewQuery(P,7,r.ViewContainerRef)),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.addEditModalRef=e.first),c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.usersModalRef=e.first)}},decls:37,vars:20,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["usersTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover table-list","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-users"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",1),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div"),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",2),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",3),c.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"button",4),c.ɵɵlistener("click",(function(){return t.add()})),c.ɵɵtext(19,"\n "),c.ɵɵelement(20,"i",5),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n"),c.ɵɵtemplate(26,O,9,6,"ng-container",6),c.ɵɵtext(27,"\n"),c.ɵɵtemplate(28,M,6,2,"ng-container",6),c.ɵɵpipe(29,"search"),c.ɵɵtext(30,"\n"),c.ɵɵtemplate(31,B,0,0,"ng-template",null,7,c.ɵɵtemplateRefExtractor),c.ɵɵtext(33,"\n"),c.ɵɵtemplate(34,D,0,0,"ng-template",null,8,c.ɵɵtemplateRefExtractor),c.ɵɵtext(36,"\n")),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,7,"groups")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,9,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(15,11,"search")),c.ɵɵproperty("ngModel",t.searchText),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(22,13,"newGroup"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedGroups:c.ɵɵpipeBind4(29,15,t.groups,t.searchText,"name","id"))))},directives:[y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,x.NgIf,S.InfiniteScrollDirective,x.NgForOf,b.StopClickDirective,w.A11yTitleDirective],pipes:[C.I18nPipe,I.SearchPipe],encapsulation:2})},2021:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ManageComponent=void 0;n(68012),n(63513);const r=n(32621),o=n(68012),a=n(63513),s=n(57490),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementStart(0,"a",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"people"),"\n "))}function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"collections"),"\n "))}function p(e,t){1&e&&(r.ɵɵelementStart(0,"a",16),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"groups"),"\n "))}function u(e,t){1&e&&(r.ɵɵelementStart(0,"a",17),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"policies"),"\n "))}function m(e,t){1&e&&(r.ɵɵelementStart(0,"a",18),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"singleSignOn"),"\n "))}function h(e,t){1&e&&(r.ɵɵelementStart(0,"a",19),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"eventLogs"),"\n "))}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",5),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",6),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",7),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,3,3,"a",8),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,d,3,3,"a",9),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,p,3,3,"a",10),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,u,3,3,"a",11),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,m,3,3,"a",12),r.ɵɵtext(17,"\n "),r.ɵɵtemplate(18,h,3,3,"a",13),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,7,"manage")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.organization.canManageUsers),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canViewAllCollections||e.organization.canViewAssignedCollections),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManageGroups&&e.accessGroups),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManagePolicies&&e.accessPolicies),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManageSso&&e.accessSso),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canAccessEventLogs&&e.accessEvents)}}class g{constructor(e,t){this.route=e,this.organizationService=t,this.accessPolicies=!1,this.accessGroups=!1,this.accessEvents=!1,this.accessSso=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.accessPolicies=this.organization.usePolicies,this.accessSso=this.organization.useSso,this.accessEvents=this.organization.useEvents,this.accessGroups=this.organization.useGroups}))))}}t.ManageComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-org-manage"]],decls:16,vars:1,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","people","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","collections","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","groups","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","policies","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","sso","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","events","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","people","routerLinkActive","active",1,"list-group-item"],["routerLink","collections","routerLinkActive","active",1,"list-group-item"],["routerLink","groups","routerLinkActive","active",1,"list-group-item"],["routerLink","policies","routerLinkActive","active",1,"list-group-item"],["routerLink","sso","routerLinkActive","active",1,"list-group-item"],["routerLink","events","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,v,21,9,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelement(11,"router-outlet"),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(6),r.ɵɵproperty("ngIf",t.organization))},directives:[s.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[l.I18nPipe],encapsulation:2})},74147:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PeopleComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(62166),n(60421),n(73569),n(9724),n(7368)),s=n(33712),l=n(49906),c=n(39950),d=n(91247),p=n(87169),u=n(1833),m=n(61692),h=n(37131),v=n(33747),g=n(87876),f=n(34236),y=n(28546),x=n(68535),S=n(32621),b=n(91674),w=n(68012),C=n(51554),I=n(64684),E=n(73828),P=n(85714),O=n(60421),k=n(47594),A=n(62166),T=n(36631),M=n(50154),B=n(52080),D=n(9724),R=n(73569),F=n(63513),U=n(57490),V=n(96832),N=n(8863),_=n(1142),j=n(37407),z=n(51626),H=n(39159),L=n(15370),K=n(99729),q=n(50154),G=n(52080),W=["addEdit"],$=["groupsTemplate"],Y=["eventsTemplate"],Q=["confirmTemplate"],J=["resetPasswordTemplate"],Z=["bulkStatusTemplate"],X=["bulkConfirmTemplate"],ee=["bulkRemoveTemplate"];function te(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",32),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.allCount)}}function ne(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",32),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.invitedCount)}}function ie(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",33),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.acceptedCount)}}function re(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"button",34),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);return S.ɵɵnextContext().bulkConfirm()})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",35),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"confirmSelected"),"\n "))}function oe(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",36),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n"),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"loading")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"loading")))}function ae(e,t){1&e&&(S.ɵɵelementStart(0,"p"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"noUsersInList")))}function se(e,t){1&e&&(S.ɵɵelementStart(0,"app-callout",41),S.ɵɵpipe(1,"i18n"),S.ɵɵtext(2),S.ɵɵpipe(3,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(1,2,"confirmUsers")),S.ɵɵadvance(2),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(3,4,"usersNeedConfirmed"),"\n "))}function le(e,t){1&e&&(S.ɵɵelementStart(0,"span",58),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"invited")))}function ce(e,t){1&e&&(S.ɵɵelementStart(0,"span",59),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"accepted")))}function de(e,t){if(1&e&&(S.ɵɵelementStart(0,"small",60),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext().$implicit;S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.name)}}function pe(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",61),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n "),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"userUsingTwoStep")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"userUsingTwoStep")))}function ue(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",62),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n "),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"enrolledPasswordReset")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"enrolledPasswordReset")))}function me(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"owner")))}function he(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"admin")))}function ve(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"manager")))}function ge(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"user")))}function fe(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"custom")))}function ye(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).reinvite(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",14),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function xe(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",64),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).confirm(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",35),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function Se(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).groups(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",65),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"groups"),"\n "))}function be(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).events(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",66),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function we(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).resetPassword(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",67),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"resetPassword"),"\n "))}function Ce(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"tr"),S.ɵɵtext(1,"\n "),S.ɵɵelementStart(2,"td",42),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).checkUser(t)})),S.ɵɵtext(3,"\n "),S.ɵɵelementStart(4,"input",43),S.ɵɵlistener("ngModelChange",(function(t){return S.ɵɵrestoreView(e).$implicit.checked=t})),S.ɵɵelementEnd(),S.ɵɵtext(5,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(6,"\n "),S.ɵɵelementStart(7,"td",44),S.ɵɵtext(8,"\n "),S.ɵɵelementStart(9,"app-avatar",45),S.ɵɵpipe(10,"userName"),S.ɵɵtext(11,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(12,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(13,"\n "),S.ɵɵelementStart(14,"td"),S.ɵɵtext(15,"\n "),S.ɵɵelementStart(16,"a",46),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).edit(t)})),S.ɵɵtext(17),S.ɵɵelementEnd(),S.ɵɵtext(18,"\n "),S.ɵɵtemplate(19,le,3,3,"span",47),S.ɵɵtext(20,"\n "),S.ɵɵtemplate(21,ce,3,3,"span",48),S.ɵɵtext(22,"\n "),S.ɵɵtemplate(23,de,2,1,"small",49),S.ɵɵtext(24,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(25,"\n "),S.ɵɵelementStart(26,"td"),S.ɵɵtext(27,"\n "),S.ɵɵtemplate(28,pe,9,6,"ng-container",23),S.ɵɵtext(29,"\n "),S.ɵɵtemplate(30,ue,9,6,"ng-container",23),S.ɵɵtext(31,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(32,"\n "),S.ɵɵelementStart(33,"td"),S.ɵɵtext(34,"\n "),S.ɵɵtemplate(35,me,3,3,"span",23),S.ɵɵtext(36,"\n "),S.ɵɵtemplate(37,he,3,3,"span",23),S.ɵɵtext(38,"\n "),S.ɵɵtemplate(39,ve,3,3,"span",23),S.ɵɵtext(40,"\n "),S.ɵɵtemplate(41,ge,3,3,"span",23),S.ɵɵtext(42,"\n "),S.ɵɵtemplate(43,fe,3,3,"span",23),S.ɵɵtext(44,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(45,"\n "),S.ɵɵelementStart(46,"td",50),S.ɵɵtext(47,"\n "),S.ɵɵelementStart(48,"div",51),S.ɵɵtext(49,"\n "),S.ɵɵelementStart(50,"button",52),S.ɵɵpipe(51,"i18n"),S.ɵɵtext(52,"\n "),S.ɵɵelement(53,"i",53),S.ɵɵtext(54,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(55,"\n "),S.ɵɵelementStart(56,"div",54),S.ɵɵtext(57,"\n "),S.ɵɵtemplate(58,ye,5,3,"a",55),S.ɵɵtext(59,"\n "),S.ɵɵtemplate(60,xe,5,3,"a",56),S.ɵɵtext(61,"\n "),S.ɵɵtemplate(62,Se,5,3,"a",55),S.ɵɵtext(63,"\n "),S.ɵɵtemplate(64,be,5,3,"a",55),S.ɵɵtext(65,"\n "),S.ɵɵtemplate(66,we,5,3,"a",55),S.ɵɵtext(67,"\n "),S.ɵɵelementStart(68,"a",57),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).remove(t)})),S.ɵɵtext(69,"\n "),S.ɵɵelement(70,"i",17),S.ɵɵtext(71),S.ɵɵpipe(72,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(73,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(74,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(75,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(76,"\n "),S.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=S.ɵɵnextContext(3);S.ɵɵadvance(4),S.ɵɵproperty("ngModel",e.checked),S.ɵɵadvance(5),S.ɵɵproperty("data",S.ɵɵpipeBind1(10,23,e))("email",e.email)("circle",!0)("fontSize",14),S.ɵɵadvance(8),S.ɵɵtextInterpolate(e.email),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.name),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",e.twoFactorEnabled),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.showEnrolledStatus(e)),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",e.type===n.userType.Owner),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Admin),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Manager),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.User),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Custom),S.ɵɵadvance(7),S.ɵɵpropertyInterpolate("appA11yTitle",S.ɵɵpipeBind1(51,25,"options")),S.ɵɵadvance(8),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.accessGroups),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.accessEvents&&e.status===n.userStatusType.Confirmed),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.allowResetPassword(e)),S.ɵɵadvance(5),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(72,27,"remove"),"\n ")}}function Ie(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵtemplate(2,se,4,6,"app-callout",38),S.ɵɵtext(3,"\n "),S.ɵɵelementStart(4,"table",39),S.ɵɵlistener("scrolled",(function(){S.ɵɵrestoreView(e);return S.ɵɵnextContext(2).loadMore()})),S.ɵɵtext(5,"\n "),S.ɵɵelementStart(6,"tbody"),S.ɵɵtext(7,"\n "),S.ɵɵtemplate(8,Ce,77,29,"tr",40),S.ɵɵtext(9,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(10,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(11,"\n "),S.ɵɵelementContainerEnd()}if(2&e){const e=S.ɵɵnextContext().ngIf,t=S.ɵɵnextContext();S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.showConfirmUsers),S.ɵɵadvance(2),S.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),S.ɵɵadvance(4),S.ɵɵproperty("ngForOf",e)}}function Ee(e,t){if(1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵtemplate(2,ae,3,3,"p",23),S.ɵɵtext(3,"\n "),S.ɵɵtemplate(4,Ie,12,4,"ng-container",23),S.ɵɵtext(5,"\n"),S.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;S.ɵɵadvance(2),S.ɵɵproperty("ngIf",!e.length),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.length)}}function Pe(e,t){}function Oe(e,t){}function ke(e,t){}function Ae(e,t){}function Te(e,t){}function Me(e,t){}function Be(e,t){}function De(e,t){}const Re=function(e){return{active:e}},Fe=function(e,t){return[e,t,"name","email","id"]};class Ue extends u.BasePeopleComponent{constructor(e,t,n,i,r,o,l,c,d,p,u,m,h,v,g,f){super(e,c,n,r,o,d,i,u,m,h,g),this.route=t,this.router=l,this.policyService=p,this.syncService=v,this.organizationService=f,this.userType=s.OrganizationUserType,this.userStatusType=a.OrganizationUserStatusType,this.status=null,this.accessEvents=!1,this.accessGroups=!1,this.canResetPassword=!1,this.orgUseResetPassword=!1,this.orgHasKeys=!1,this.orgResetPasswordPolicyEnabled=!1,this.callingUserType=null}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId;const t=yield this.organizationService.get(this.organizationId);if(t.canManageUsers){if(this.accessEvents=t.useEvents,this.accessGroups=t.useGroups,this.canResetPassword=t.canManageUsersPassword,this.orgUseResetPassword=t.useResetPassword,this.callingUserType=t.type,this.orgHasKeys=t.hasPublicAndPrivateKeys,this.canResetPassword&&!this.orgHasKeys){const e=yield this.cryptoService.getOrgKey(this.organizationId),t=yield this.cryptoService.makeKeyPair(e),n=new c.OrganizationKeysRequest(t[0],t[1].encryptedString),i=yield this.apiService.postOrganizationKeys(this.organizationId,n);if(null==i)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));this.orgHasKeys=null!=i.publicKey&&null!=i.privateKey,yield this.syncService.fullSync(!0)}yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.searchText=e.search,null!=e.viewEvents){const t=this.users.filter((t=>t.id===e.viewEvents));t.length>0&&t[0].status===a.OrganizationUserStatusType.Confirmed&&this.events(t[0])}}))))}else this.router.navigate(["../collections"],{relativeTo:this.route})}))))}))}load(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){const t=yield this.policyService.getPolicyForOrganization(l.PolicyType.ResetPassword,this.organizationId);this.orgResetPasswordPolicyEnabled=null==t?void 0:t.enabled,e.load.call(this)}))}getUsers(){return this.apiService.getOrganizationUsers(this.organizationId)}deleteUser(e){return this.apiService.deleteOrganizationUser(this.organizationId,e)}reinviteUser(e){return this.apiService.postOrganizationUserReinvite(this.organizationId,e)}confirmUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getOrgKey(this.organizationId),i=yield this.cryptoService.rsaEncrypt(n.key,t.buffer),r=new p.OrganizationUserConfirmRequest;r.key=i.encryptedString,yield this.apiService.postOrganizationUserConfirm(this.organizationId,e.id,r)}))}allowResetPassword(e){let t=!1;switch(this.callingUserType){case s.OrganizationUserType.Owner:t=!0;break;case s.OrganizationUserType.Admin:t=e.type!==s.OrganizationUserType.Owner;break;case s.OrganizationUserType.Custom:t=e.type!==s.OrganizationUserType.Owner&&e.type!==s.OrganizationUserType.Admin}return this.canResetPassword&&t&&this.orgUseResetPassword&&this.orgHasKeys&&e.resetPasswordEnrolled&&this.orgResetPasswordPolicyEnabled&&e.status===a.OrganizationUserStatusType.Confirmed}showEnrolledStatus(e){return this.orgUseResetPassword&&e.resetPasswordEnrolled&&this.orgResetPasswordPolicyEnabled}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(y.UserAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.organizationId=this.organizationId,n.organizationUserId=null!=e?e.id:null,n.usesKeyConnector=null==e?void 0:e.usesKeyConnector,n.onSavedUser.subscribe((()=>{t.close(),this.load()})),n.onDeletedUser.subscribe((()=>{t.close(),this.removeUser(e)}))}))}))}groups(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(x.UserGroupsComponent,this.groupsModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.organizationId=this.organizationId,n.organizationUserId=null!=e?e.id:null,n.onSavedUser.subscribe((()=>{t.close()}))}))}))}bulkRemove(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(h.BulkRemoveComponent,this.bulkRemoveModalRef,(e=>{e.organizationId=this.organizationId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}bulkReinvite(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const e=this.getCheckedUsers(),t=e.filter((e=>e.status===a.OrganizationUserStatusType.Invited));if(t.length<=0)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("noSelectedUsersApplicable"));else{try{const n=new d.OrganizationUserBulkRequest(t.map((e=>e.id))),i=this.apiService.postManyOrganizationUserReinvite(this.organizationId,n);this.showBulkStatus(e,t,i,this.i18nService.t("bulkReinviteMessage"))}catch(n){this.validationService.showError(n)}this.actionPromise=null}}))}bulkConfirm(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(m.BulkConfirmComponent,this.bulkConfirmModalRef,(e=>{e.organizationId=this.organizationId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}events(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(g.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=this.userNamePipe.transform(e),t.organizationId=this.organizationId,t.entityId=e.id,t.showUser=!1,t.entity="user"}))}))}resetPassword(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(f.ResetPasswordComponent,this.resetPasswordModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.email=null!=e?e.email:null,n.organizationId=this.organizationId,n.id=null!=e?e.id:null,n.onPasswordReset.subscribe((()=>{t.close(),this.load()}))}))}))}deleteWarningMessage(e){return e.usesKeyConnector?this.i18nService.t("removeUserConfirmationKeyConnector"):super.deleteWarningMessage(e)}showBulkStatus(e,t,n,r){return i(this,void 0,void 0,(function*(){const[i,o]=yield this.modalService.openViewRef(v.BulkStatusComponent,this.bulkStatusModalRef,(e=>{e.loading=!0}));let a=!1;i.onShown.subscribe((()=>{a&&i.close()}));try{const a=yield n;if(i){const n=a.data.filter((e=>""!==e.error)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t.error})),{}),i=t.reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t})),{});o.users=e.map((e=>{var t;let o=null!==(t=n[e.id])&&void 0!==t?t:r;return i.hasOwnProperty(e.id)||(o=this.i18nService.t("bulkFilteredMessage")),{user:e,error:n.hasOwnProperty(e.id),message:o}})),o.loading=!1}}catch(s){a=!0,i.close()}}))}}t.PeopleComponent=Ue,Ue.ɵfac=function(e){return new(e||Ue)(S.ɵɵdirectiveInject(b.ApiService),S.ɵɵdirectiveInject(w.ActivatedRoute),S.ɵɵdirectiveInject(C.I18nService),S.ɵɵdirectiveInject(I.ModalService),S.ɵɵdirectiveInject(E.PlatformUtilsService),S.ɵɵdirectiveInject(P.CryptoService),S.ɵɵdirectiveInject(w.Router),S.ɵɵdirectiveInject(O.SearchService),S.ɵɵdirectiveInject(k.ValidationService),S.ɵɵdirectiveInject(A.PolicyService),S.ɵɵdirectiveInject(T.LogService),S.ɵɵdirectiveInject(M.SearchPipe),S.ɵɵdirectiveInject(B.UserNamePipe),S.ɵɵdirectiveInject(D.SyncService),S.ɵɵdirectiveInject(R.StateService),S.ɵɵdirectiveInject(F.OrganizationService))},Ue.ɵcmp=S.ɵɵdefineComponent({type:Ue,selectors:[["app-org-people"]],viewQuery:function(e,t){if(1&e&&(S.ɵɵviewQuery(W,7,r.ViewContainerRef),S.ɵɵviewQuery($,7,r.ViewContainerRef),S.ɵɵviewQuery(Y,7,r.ViewContainerRef),S.ɵɵviewQuery(Q,7,r.ViewContainerRef),S.ɵɵviewQuery(J,7,r.ViewContainerRef),S.ɵɵviewQuery(Z,7,r.ViewContainerRef),S.ɵɵviewQuery(X,7,r.ViewContainerRef),S.ɵɵviewQuery(ee,7,r.ViewContainerRef)),2&e){let e;S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.addEditModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.groupsModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.eventsModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.confirmModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.resetPasswordModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkStatusModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkConfirmModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkRemoveModalRef=e.first)}},features:[S.ɵɵInheritDefinitionFeature],decls:116,vars:61,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],["class","badge badge-pill badge-warning",4,"ngIf"],[1,"ml-3"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["appListDropdown","",1,"dropdown","ml-3"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["class","dropdown-item text-success","appStopClick","",3,"click",4,"ngIf"],["appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"dropdown-divider"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["groupsTemplate",""],["eventsTemplate",""],["confirmTemplate",""],["resetPasswordTemplate",""],["bulkStatusTemplate",""],["bulkConfirmTemplate",""],["bulkRemoveTemplate",""],[1,"badge","badge-pill","badge-info"],[1,"badge","badge-pill","badge-warning"],["appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","info","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["type","info","icon","bwi bwi-check-circle",3,"title"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-lock",3,"title"],["aria-hidden","true",1,"bwi","bwi-key",3,"title"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sitemap"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"]],template:function(e,t){1&e&&(S.ɵɵelementStart(0,"div",0),S.ɵɵtext(1,"\n "),S.ɵɵelementStart(2,"h1"),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(5,"\n "),S.ɵɵelementStart(6,"div",1),S.ɵɵtext(7,"\n "),S.ɵɵelementStart(8,"div",2),S.ɵɵtext(9,"\n "),S.ɵɵelementStart(10,"button",3),S.ɵɵlistener("click",(function(){return t.filter(null)})),S.ɵɵtext(11),S.ɵɵpipe(12,"i18n"),S.ɵɵtemplate(13,te,2,1,"span",4),S.ɵɵtext(14,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(15,"\n "),S.ɵɵelementStart(16,"button",3),S.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Invited)})),S.ɵɵtext(17),S.ɵɵpipe(18,"i18n"),S.ɵɵtemplate(19,ne,2,1,"span",4),S.ɵɵtext(20,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(21,"\n "),S.ɵɵelementStart(22,"button",3),S.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Accepted)})),S.ɵɵtext(23),S.ɵɵpipe(24,"i18n"),S.ɵɵtemplate(25,ie,2,1,"span",5),S.ɵɵtext(26,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(27,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(28,"\n "),S.ɵɵelementStart(29,"div",6),S.ɵɵtext(30,"\n "),S.ɵɵelementStart(31,"label",7),S.ɵɵtext(32),S.ɵɵpipe(33,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(34,"\n "),S.ɵɵelementStart(35,"input",8),S.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),S.ɵɵpipe(36,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(37,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(38,"\n "),S.ɵɵelementStart(39,"div",9),S.ɵɵtext(40,"\n "),S.ɵɵelementStart(41,"button",10),S.ɵɵpipe(42,"i18n"),S.ɵɵtext(43,"\n "),S.ɵɵelement(44,"i",11),S.ɵɵtext(45,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(46,"\n "),S.ɵɵelementStart(47,"div",12),S.ɵɵtext(48,"\n "),S.ɵɵelementStart(49,"button",13),S.ɵɵlistener("click",(function(){return t.bulkReinvite()})),S.ɵɵtext(50,"\n "),S.ɵɵelement(51,"i",14),S.ɵɵtext(52),S.ɵɵpipe(53,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(54,"\n "),S.ɵɵtemplate(55,re,5,3,"button",15),S.ɵɵtext(56,"\n "),S.ɵɵelementStart(57,"button",16),S.ɵɵlistener("click",(function(){return t.bulkRemove()})),S.ɵɵtext(58,"\n "),S.ɵɵelement(59,"i",17),S.ɵɵtext(60),S.ɵɵpipe(61,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(62,"\n "),S.ɵɵelement(63,"div",18),S.ɵɵtext(64,"\n "),S.ɵɵelementStart(65,"button",13),S.ɵɵlistener("click",(function(){return t.selectAll(!0)})),S.ɵɵtext(66,"\n "),S.ɵɵelement(67,"i",19),S.ɵɵtext(68),S.ɵɵpipe(69,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(70,"\n "),S.ɵɵelementStart(71,"button",13),S.ɵɵlistener("click",(function(){return t.selectAll(!1)})),S.ɵɵtext(72,"\n "),S.ɵɵelement(73,"i",20),S.ɵɵtext(74),S.ɵɵpipe(75,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(76,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(77,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(78,"\n "),S.ɵɵelementStart(79,"button",21),S.ɵɵlistener("click",(function(){return t.invite()})),S.ɵɵtext(80,"\n "),S.ɵɵelement(81,"i",22),S.ɵɵtext(82),S.ɵɵpipe(83,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(84,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(85,"\n"),S.ɵɵelementEnd(),S.ɵɵtext(86,"\n"),S.ɵɵtemplate(87,oe,9,6,"ng-container",23),S.ɵɵtext(88,"\n"),S.ɵɵtemplate(89,Ee,6,2,"ng-container",23),S.ɵɵpipe(90,"search"),S.ɵɵtext(91,"\n"),S.ɵɵtemplate(92,Pe,0,0,"ng-template",null,24,S.ɵɵtemplateRefExtractor),S.ɵɵtext(94,"\n"),S.ɵɵtemplate(95,Oe,0,0,"ng-template",null,25,S.ɵɵtemplateRefExtractor),S.ɵɵtext(97,"\n"),S.ɵɵtemplate(98,ke,0,0,"ng-template",null,26,S.ɵɵtemplateRefExtractor),S.ɵɵtext(100,"\n"),S.ɵɵtemplate(101,Ae,0,0,"ng-template",null,27,S.ɵɵtemplateRefExtractor),S.ɵɵtext(103,"\n"),S.ɵɵtemplate(104,Te,0,0,"ng-template",null,28,S.ɵɵtemplateRefExtractor),S.ɵɵtext(106,"\n"),S.ɵɵtemplate(107,Me,0,0,"ng-template",null,29,S.ɵɵtemplateRefExtractor),S.ɵɵtext(109,"\n"),S.ɵɵtemplate(110,Be,0,0,"ng-template",null,30,S.ɵɵtemplateRefExtractor),S.ɵɵtext(112,"\n"),S.ɵɵtemplate(113,De,0,0,"ng-template",null,31,S.ɵɵtemplateRefExtractor),S.ɵɵtext(115,"\n")),2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(4,22,"people")),S.ɵɵadvance(7),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(52,Re,null==t.status)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(12,24,"all"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.allCount),S.ɵɵadvance(3),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(54,Re,t.status==t.userStatusType.Invited)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(18,26,"invited"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.invitedCount),S.ɵɵadvance(3),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(56,Re,t.status==t.userStatusType.Accepted)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(24,28,"accepted"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.acceptedCount),S.ɵɵadvance(7),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(33,30,"search")),S.ɵɵadvance(3),S.ɵɵpropertyInterpolate("placeholder",S.ɵɵpipeBind1(36,32,"search")),S.ɵɵproperty("ngModel",t.searchText),S.ɵɵadvance(6),S.ɵɵpropertyInterpolate("appA11yTitle",S.ɵɵpipeBind1(42,34,"options")),S.ɵɵadvance(11),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(53,36,"reinviteSelected"),"\n "),S.ɵɵadvance(3),S.ɵɵproperty("ngIf",t.showBulkConfirmUsers),S.ɵɵadvance(5),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(61,38,"remove"),"\n "),S.ɵɵadvance(8),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(69,40,"selectAll"),"\n "),S.ɵɵadvance(6),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(75,42,"unselectAll"),"\n "),S.ɵɵadvance(8),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(83,44,"inviteUser"),"\n "),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",t.loading),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedUsers:S.ɵɵpipeBindV(90,46,S.ɵɵpureFunction2(58,Fe,t.users,t.searchText)))))},directives:[U.NgClass,U.NgIf,V.DefaultValueAccessor,V.NgControlStatus,V.NgModel,N.A11yTitleDirective,_.StopClickDirective,j.InfiniteScrollDirective,U.NgForOf,z.CalloutComponent,V.CheckboxControlValueAccessor,H.StopPropDirective,L.AvatarComponent],pipes:[K.I18nPipe,q.SearchPipe,G.UserNamePipe],encapsulation:2})},6029:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PoliciesComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(63513),n(55453),n(40171)),s=n(32621),l=n(91674),c=n(68012),d=n(64684),p=n(63513),u=n(55453),m=n(57490),h=n(1142),v=n(99729),g=["editTemplate"];function f(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(s.ɵɵelementStart(0,"span",11),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enabled")))}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"td"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"a",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).edit(t)})),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,y,3,3,"span",9),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"small",10),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,e.name)),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.policiesEnabledMap.get(e.type)),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,e.description))}}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,x,12,7,"td",1),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.display(n.organization))}}function b(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",6),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,4,1,"tr",7),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.policies)}}function w(e,t){}class C{constructor(e,t,n,i,r,o){this.apiService=e,this.route=t,this.modalService=n,this.organizationService=i,this.policyListService=r,this.router=o,this.loading=!0,this.policiesEnabledMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.organization=yield this.organizationService.get(this.organizationId),null!=this.organization&&this.organization.usePolicies?(this.policies=this.policyListService.getPolicies(),yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.policyId){const t=e.policyId;for(const e of this.orgPolicies)if(e.id===t){for(let t=0;t0?e.data:[],this.orgPolicies.forEach((e=>{this.policiesEnabledMap.set(e.type,e.enabled)})),this.loading=!1}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(a.PolicyEditComponent,this.editModalRef,(n=>{n.policy=e,n.organizationId=this.organizationId,n.policiesEnabledMap=this.policiesEnabledMap,n.onSavedPolicy.subscribe((()=>{t.close(),this.load()}))}))}))}}t.PoliciesComponent=C,C.ɵfac=function(e){return new(e||C)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(d.ModalService),s.ɵɵdirectiveInject(p.OrganizationService),s.ɵɵdirectiveInject(u.PolicyListService),s.ɵɵdirectiveInject(c.Router))},C.ɵcmp=s.ɵɵdefineComponent({type:C,selectors:[["app-org-policies"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(g,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.editModalRef=e.first)}},decls:14,vars:5,consts:[[1,"page-header","d-flex"],[4,"ngIf"],["class","table table-hover table-list",4,"ngIf"],["editTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],["class","badge badge-success",4,"ngIf"],[1,"text-muted","d-block"],[1,"badge","badge-success"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,f,9,6,"ng-container",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,b,7,1,"table",2),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,w,0,0,"ng-template",null,3,s.ɵɵtemplateRefExtractor),s.ɵɵtext(13,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"policies")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading))},directives:[m.NgIf,m.NgForOf,h.StopClickDirective],pipes:[v.I18nPipe],encapsulation:2})},40171:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(49906)),a=n(64030),s=(n(81824),n(32621)),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(96832),m=n(56820),h=n(8863),v=n(57490),g=n(99729),f=["policyForm"];function y(e,t){1&e&&(s.ɵɵelementStart(0,"div",8),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",16),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",17),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){}class S{constructor(e,t,n,i,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.componentFactoryResolver=i,this.cdr=a,this.logService=s,this.policiesEnabledMap=new Map,this.onSavedPolicy=new r.EventEmitter,this.policyType=o.PolicyType,this.loading=!0,this.enabled=!1}ngAfterViewInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.loading=!1;const e=this.componentFactoryResolver.resolveComponentFactory(this.policy.component);this.policyComponent=this.policyFormRef.createComponent(e).instance,this.policyComponent.policy=this.policy,this.policyComponent.policyResponse=this.policyResponse,this.cdr.detectChanges()}))}load(){return i(this,void 0,void 0,(function*(){try{this.policyResponse=yield this.apiService.getPolicy(this.organizationId,this.policy.type)}catch(e){if(404!==e.statusCode)throw e;this.policyResponse=new a.PolicyResponse({Enabled:!1})}}))}submit(){return i(this,void 0,void 0,(function*(){let e;try{e=yield this.policyComponent.buildRequest(this.policiesEnabledMap)}catch(t){return void this.platformUtilsService.showToast("error",null,t.message)}try{this.formPromise=this.apiService.putPolicy(this.organizationId,this.policy.type,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("editedPolicyId",this.i18nService.t(this.policy.name))),this.onSavedPolicy.emit()}catch(t){this.logService.error(t)}}))}}t.PolicyEditComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(s.ComponentFactoryResolver),s.ɵɵdirectiveInject(s.ChangeDetectorRef),s.ɵɵdirectiveInject(p.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-policy-edit"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(f,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.policyFormRef=e.first)}},inputs:{policy:"policy",organizationId:"organizationId",policiesEnabledMap:"policiesEnabledMap"},outputs:{onSavedPolicy:"onSavedPolicy"},decls:57,vars:25,consts:[["role","dialog","aria-modal","true","aria-labelledby","policiesEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","policiesEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","modal-body",4,"ngIf"],[3,"hidden"],["policyForm",""],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"button",6),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"span",7),s.ɵɵtext(18,"×"),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n\n "),s.ɵɵelementStart(22,"div",8),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,y,9,6,"div",9),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",10),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"p"),s.ɵɵtext(29),s.ɵɵpipe(30,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,x,0,0,"ng-template",null,11,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",12),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"button",13),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",14),s.ɵɵpipe(42,"i18n"),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"span"),s.ɵɵtext(45),s.ɵɵpipe(46,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"button",15),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n")),2&e){const e=s.ɵɵreference(5);s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate2("\n ",s.ɵɵpipeBind1(11,11,"editPolicy")," - ",s.ɵɵpipeBind1(12,13,t.policy.name),"\n "),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(15,15,"close")),s.ɵɵadvance(10),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("hidden",t.loading),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(30,17,t.policy.description)),s.ɵɵadvance(10),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(42,19,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(46,21,"save")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(51,23,"cancel"),"\n ")}},directives:[u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.A11yTitleDirective,v.NgIf],pipes:[g.I18nPipe],encapsulation:2})},34236:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(51554),n(36631),n(84275),n(73828),n(62166),n(22205)),a=n(69731),s=n(32593),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(84275),m=n(62166),h=n(85714),v=n(36631),g=n(96832),f=n(56820),y=n(57490),x=n(8863),S=n(51626),b=n(1142),w=n(45728),C=n(48198),I=n(40946),E=n(99729);function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",30),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function O(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",31),l.ɵɵpipe(1,"i18n"),l.ɵɵtext(2,"\n "),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵpropertyInterpolate("enforcedPolicyMessage",l.ɵɵpipeBind1(1,2,"resetPasswordMasterPasswordPolicyInEffect")),l.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const k=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class A{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.passwordGenerationService=i,this.policyService=o,this.cryptoService=a,this.logService=s,this.onPasswordReset=new r.EventEmitter,this.newPassword=null,this.showPassword=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions()}))}get loggedOutWarningName(){return null!=this.name?this.name:this.i18nService.t("thisUser")}generatePassword(){return i(this,void 0,void 0,(function*(){const e=(yield this.passwordGenerationService.getOptions())[0];this.newPassword=yield this.passwordGenerationService.generatePassword(e),this.updatePasswordStrength()}))}togglePassword(){this.showPassword=!this.showPassword,document.getElementById("newPassword").focus()}copy(e){null!=e&&(this.platformUtilsService.copyToClipboard(e,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t("password"))))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.newPassword||""===this.newPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;if(this.newPassword.length<8)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength")),!1;if(null==this.enforcedPolicyOptions||this.policyService.evaluateMasterPassword(this.masterPasswordScore,this.newPassword,this.enforcedPolicyOptions)){if(this.masterPasswordScore<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1}try{this.formPromise=this.apiService.getOrganizationUserResetPasswordDetails(this.organizationId,this.id).then((e=>i(this,void 0,void 0,(function*(){if(null==e)throw new Error(this.i18nService.t("resetPasswordDetailsError"));const t=e.kdf,n=e.kdfIterations,i=e.resetPasswordKey,r=e.encryptedPrivateKey,l=yield this.cryptoService.getOrgKey(this.organizationId),c=yield this.cryptoService.decryptToBytes(new o.EncString(r),l),d=yield this.cryptoService.rsaDecrypt(i,c),p=new a.SymmetricCryptoKey(d),u=yield this.cryptoService.makeKey(this.newPassword,this.email.trim().toLowerCase(),t,n),m=yield this.cryptoService.hashPassword(this.newPassword,u),h=yield this.cryptoService.remakeEncKey(u,p),v=new s.OrganizationUserResetPasswordRequest;return v.key=h[1].encryptedString,v.newMasterPasswordHash=m,this.apiService.putOrganizationUserResetPassword(this.organizationId,this.id,v)})))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("resetPasswordSuccess")),this.onPasswordReset.emit()}catch(e){this.logService.error(e)}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet"))}))}updatePasswordStrength(){null!=this.newPasswordStrengthTimeout&&clearTimeout(this.newPasswordStrengthTimeout),this.newPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.newPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),null!=this.name&&""!==this.name&&(e=e.concat(this.name.trim().toLowerCase().split(" "))),e}}t.ResetPasswordComponent=A,A.ɵfac=function(e){return new(e||A)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.PasswordGenerationService),l.ɵɵdirectiveInject(m.PolicyService),l.ɵɵdirectiveInject(h.CryptoService),l.ɵɵdirectiveInject(v.LogService))},A.ɵcmp=l.ɵɵdefineComponent({type:A,selectors:[["app-reset-password"]],inputs:{name:"name",email:"email",id:"id",organizationId:"organizationId"},outputs:{onPasswordReset:"onPasswordReset"},decls:97,vars:43,consts:[["role","dialog","aria-modal","true","aria-labelledby","resetPasswordTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","resetPasswordTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions","enforcedPolicyMessage",4,"ngIf"],[1,"row"],[1,"col","form-group"],[1,"d-flex"],["for","newPassword"],[1,"ml-auto","d-flex"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-refresh"],[1,"input-group","mb-1"],["id","newPassword","appAutofocus","","name","NewPassword","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","ngModelChange","input"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],[3,"score","showText"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],["type","info",3,"enforcedPolicyOptions","enforcedPolicyMessage"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵtemplate(12,P,2,1,"small",6),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"button",7),l.ɵɵpipe(16,"i18n"),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"span",8),l.ɵɵtext(19,"×"),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"div",9),l.ɵɵtext(24,"\n "),l.ɵɵelementStart(25,"app-callout",10),l.ɵɵtext(26),l.ɵɵpipe(27,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵtemplate(29,O,3,4,"app-callout",11),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"div",12),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",13),l.ɵɵtext(34,"\n "),l.ɵɵelementStart(35,"div",14),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"label",15),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementStart(41,"div",16),l.ɵɵtext(42,"\n "),l.ɵɵelementStart(43,"a",17),l.ɵɵlistener("click",(function(){return t.generatePassword()})),l.ɵɵpipe(44,"i18n"),l.ɵɵtext(45,"\n "),l.ɵɵelement(46,"i",18),l.ɵɵtext(47,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(48,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(49,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"div",19),l.ɵɵtext(52,"\n "),l.ɵɵelementStart(53,"input",20),l.ɵɵlistener("ngModelChange",(function(e){return t.newPassword=e}))("input",(function(){return t.updatePasswordStrength()})),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementStart(55,"div",21),l.ɵɵtext(56,"\n "),l.ɵɵelementStart(57,"button",22),l.ɵɵlistener("click",(function(){return t.togglePassword()})),l.ɵɵpipe(58,"i18n"),l.ɵɵtext(59,"\n "),l.ɵɵelement(60,"i",23),l.ɵɵtext(61,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(62,"\n "),l.ɵɵelementStart(63,"button",22),l.ɵɵlistener("click",(function(){return t.copy(t.newPassword)})),l.ɵɵpipe(64,"i18n"),l.ɵɵtext(65,"\n "),l.ɵɵelement(66,"i",24),l.ɵɵtext(67,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(68,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(69,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(70,"\n "),l.ɵɵelementStart(71,"app-password-strength",25),l.ɵɵtext(72,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(73,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(74,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(75,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(76,"\n "),l.ɵɵelementStart(77,"div",26),l.ɵɵtext(78,"\n "),l.ɵɵelementStart(79,"button",27),l.ɵɵtext(80,"\n "),l.ɵɵelement(81,"i",28),l.ɵɵpipe(82,"i18n"),l.ɵɵtext(83,"\n "),l.ɵɵelementStart(84,"span"),l.ɵɵtext(85),l.ɵɵpipe(86,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(87,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(88,"\n "),l.ɵɵelementStart(89,"button",29),l.ɵɵtext(90),l.ɵɵpipe(91,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(92,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(93,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(94,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(95,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(96,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(11,19,"resetPassword"),"\n "),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.name),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(16,21,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind2(27,23,"resetPasswordLoggedOutWarning",t.loggedOutWarningName),"\n "),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.enforcedPolicyOptions),l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(39,26,"newPassword")),l.ɵɵadvance(5),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(44,28,"generatePassword")),l.ɵɵadvance(10),l.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),l.ɵɵproperty("ngModel",t.newPassword),l.ɵɵadvance(4),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(58,30,"toggleVisibility")),l.ɵɵadvance(3),l.ɵɵproperty("ngClass",l.ɵɵpureFunction2(40,k,!t.showPassword,t.showPassword)),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(64,32,"copyPassword")),l.ɵɵadvance(8),l.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),l.ɵɵadvance(8),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(82,34,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(86,36,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(91,38,"cancel"),"\n ")}},directives:[g.ɵNgNoValidate,g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.NgIf,x.A11yTitleDirective,S.CalloutComponent,b.StopClickDirective,g.DefaultValueAccessor,w.AutofocusDirective,g.RequiredValidator,C.InputVerbatimDirective,g.NgControlStatus,g.NgModel,y.NgClass,I.PasswordStrengthComponent],pipes:[E.I18nPipe],encapsulation:2})},28546:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(3174),n(51554),n(36631),n(73828),n(33712)),a=n(96926),s=n(34917),l=n(65642),c=n(3714),d=n(57981),p=n(11342),u=n(32621),m=n(91674),h=n(51554),v=n(3174),g=n(73828),f=n(36631),y=n(96832),x=n(56820),S=n(57490),b=n(8863),w=n(64713),C=n(39159),I=n(99729);function E(e,t){if(1&e&&(u.ɵɵelementStart(0,"small",16),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(1),u.ɵɵtextInterpolate(e.name)}}function P(e,t){1&e&&(u.ɵɵelementStart(0,"div",17),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",18),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",19),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function O(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"p"),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",44),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"label",45),u.ɵɵtext(9),u.ɵɵpipe(10,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"input",46),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).emails=t})),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"small",16),u.ɵɵtext(15),u.ɵɵpipe(16,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementContainerEnd()}if(2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(4,4,"inviteUserDesc")),u.ɵɵadvance(6),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(10,6,"email")),u.ɵɵadvance(3),u.ɵɵproperty("ngModel",e.emails),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind2(16,8,"inviteMultipleEmailDesc","20"))}}function k(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"h3",34),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",47),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"div",48),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",35),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"label",49),u.ɵɵtext(13,"Manager Permissions"),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelement(15,"hr",50),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"app-nested-checkbox",51),u.ɵɵtext(18,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementStart(22,"div",48),u.ɵɵtext(23,"\n "),u.ɵɵelementStart(24,"div",35),u.ɵɵtext(25,"\n "),u.ɵɵelementStart(26,"label",49),u.ɵɵtext(27,"Admin Permissions"),u.ɵɵelementEnd(),u.ɵɵtext(28,"\n "),u.ɵɵelement(29,"hr",50),u.ɵɵtext(30,"\n "),u.ɵɵelementStart(31,"div",52),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"div",53),u.ɵɵtext(34,"\n "),u.ɵɵelementStart(35,"input",54),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessEventLogs=t})),u.ɵɵelementEnd(),u.ɵɵtext(36,"\n "),u.ɵɵelementStart(37,"label",55),u.ɵɵtext(38),u.ɵɵpipe(39,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(40,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(42,"\n "),u.ɵɵelementStart(43,"div",52),u.ɵɵtext(44,"\n "),u.ɵɵelementStart(45,"div",53),u.ɵɵtext(46,"\n "),u.ɵɵelementStart(47,"input",56),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessImportExport=t})),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n "),u.ɵɵelementStart(49,"label",57),u.ɵɵtext(50),u.ɵɵpipe(51,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(52,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(53,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(54,"\n "),u.ɵɵelementStart(55,"div",52),u.ɵɵtext(56,"\n "),u.ɵɵelementStart(57,"div",53),u.ɵɵtext(58,"\n "),u.ɵɵelementStart(59,"input",58),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessReports=t})),u.ɵɵelementEnd(),u.ɵɵtext(60,"\n "),u.ɵɵelementStart(61,"label",59),u.ɵɵtext(62),u.ɵɵpipe(63,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(64,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(65,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(66,"\n "),u.ɵɵelementStart(67,"app-nested-checkbox",60),u.ɵɵtext(68,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(69,"\n "),u.ɵɵelementStart(70,"div",52),u.ɵɵtext(71,"\n "),u.ɵɵelementStart(72,"div",53),u.ɵɵtext(73,"\n "),u.ɵɵelementStart(74,"input",61),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageGroups=t})),u.ɵɵelementEnd(),u.ɵɵtext(75,"\n "),u.ɵɵelementStart(76,"label",62),u.ɵɵtext(77),u.ɵɵpipe(78,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(79,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(80,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(81,"\n "),u.ɵɵelementStart(82,"div",52),u.ɵɵtext(83,"\n "),u.ɵɵelementStart(84,"div",53),u.ɵɵtext(85,"\n "),u.ɵɵelementStart(86,"input",63),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageSso=t})),u.ɵɵelementEnd(),u.ɵɵtext(87,"\n "),u.ɵɵelementStart(88,"label",64),u.ɵɵtext(89),u.ɵɵpipe(90,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(91,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(92,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(93,"\n "),u.ɵɵelementStart(94,"div",52),u.ɵɵtext(95,"\n "),u.ɵɵelementStart(96,"div",53),u.ɵɵtext(97,"\n "),u.ɵɵelementStart(98,"input",65),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.managePolicies=t})),u.ɵɵelementEnd(),u.ɵɵtext(99,"\n "),u.ɵɵelementStart(100,"label",66),u.ɵɵtext(101),u.ɵɵpipe(102,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(103,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(104,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(105,"\n "),u.ɵɵelementStart(106,"div",52),u.ɵɵtext(107,"\n "),u.ɵɵelementStart(108,"div",53),u.ɵɵtext(109,"\n "),u.ɵɵelementStart(110,"input",67),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageUsers=t}))("change",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).handleDependentPermissions()})),u.ɵɵelementEnd(),u.ɵɵtext(111,"\n "),u.ɵɵelementStart(112,"label",68),u.ɵɵtext(113),u.ɵɵpipe(114,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(115,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(116,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(117,"\n "),u.ɵɵelementStart(118,"div",52),u.ɵɵtext(119,"\n "),u.ɵɵelementStart(120,"div",53),u.ɵɵtext(121,"\n "),u.ɵɵelementStart(122,"input",69),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageResetPassword=t}))("change",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).handleDependentPermissions()})),u.ɵɵelementEnd(),u.ɵɵtext(123,"\n "),u.ɵɵelementStart(124,"label",70),u.ɵɵtext(125),u.ɵɵpipe(126,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(127,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(128,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(129,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(130,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(131,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(132,"\n "),u.ɵɵelementContainerEnd()}if(2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(4,19,"permissions"),"\n "),u.ɵɵadvance(14),u.ɵɵproperty("checkboxes",e.manageAssignedCollectionsCheckboxes),u.ɵɵadvance(18),u.ɵɵproperty("ngModel",e.permissions.accessEventLogs),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(39,21,"accessEventLogs"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.accessImportExport),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(51,23,"accessImportExport"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.accessReports),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(63,25,"accessReports"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("checkboxes",e.manageAllCollectionsCheckboxes),u.ɵɵadvance(7),u.ɵɵproperty("ngModel",e.permissions.manageGroups),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(78,27,"manageGroups"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageSso),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(90,29,"manageSso"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.managePolicies),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(102,31,"managePolicies"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageUsers),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(114,33,"manageUsers"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageResetPassword),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(126,35,"manageResetPassword"),"\n ")}}function A(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"div",14),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"button",71),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).selectAll(!0)})),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"button",71),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).selectAll(!1)})),u.ɵɵtext(7),u.ɵɵpipe(8,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementEnd()}2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(4,2,"selectAll"),"\n "),u.ɵɵadvance(4),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function T(e,t){1&e&&(u.ɵɵelementStart(0,"div"),u.ɵɵtext(1),u.ɵɵpipe(2,"i18n"),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(1),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function M(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"tr"),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"td",76),u.ɵɵlistener("click",(function(){const t=u.ɵɵrestoreView(e).$implicit;return u.ɵɵnextContext(4).check(t)})),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"input",77),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.checked=t})),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"td",78),u.ɵɵlistener("click",(function(){const t=u.ɵɵrestoreView(e).$implicit;return u.ɵɵnextContext(4).check(t)})),u.ɵɵtext(8),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"td",79),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"input",80),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.hidePasswords=t})),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelementStart(15,"td",79),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"input",80),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.readOnly=t})),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;u.ɵɵadvance(4),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),u.ɵɵproperty("ngModel",e.checked),u.ɵɵadvance(4),u.ɵɵtextInterpolate1("\n ",e.name,"\n "),u.ɵɵadvance(4),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].HidePasswords"),u.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked),u.ɵɵadvance(5),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].ReadOnly"),u.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked)}}function B(e,t){if(1&e&&(u.ɵɵelementStart(0,"table",73),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"thead"),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"tr"),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"th"),u.ɵɵtext(7," "),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementStart(9,"th"),u.ɵɵtext(10),u.ɵɵpipe(11,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(12,"\n "),u.ɵɵelementStart(13,"th",74),u.ɵɵtext(14),u.ɵɵpipe(15,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"th",74),u.ɵɵtext(18),u.ɵɵpipe(19,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(22,"\n "),u.ɵɵelementStart(23,"tbody"),u.ɵɵtext(24,"\n "),u.ɵɵtemplate(25,M,20,9,"tr",75),u.ɵɵtext(26,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(27,"\n "),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext(3);u.ɵɵadvance(10),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(11,4,"name")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(15,6,"hidePasswords")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(19,8,"readOnly")),u.ɵɵadvance(7),u.ɵɵproperty("ngForOf",e.collections)}}function D(e,t){if(1&e&&(u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵtemplate(2,T,3,3,"div",20),u.ɵɵtext(3,"\n "),u.ɵɵtemplate(4,B,28,10,"table",72),u.ɵɵtext(5,"\n "),u.ɵɵelementContainerEnd()),2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.collections||!e.collections.length),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const R=function(e){return{"mb-0":e}};function F(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"div",17),u.ɵɵtext(1,"\n "),u.ɵɵtemplate(2,O,19,11,"ng-container",20),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"h3"),u.ɵɵtext(5),u.ɵɵpipe(6,"i18n"),u.ɵɵelementStart(7,"a",21),u.ɵɵpipe(8,"i18n"),u.ɵɵtext(9,"\n "),u.ɵɵelement(10,"i",22),u.ɵɵtext(11,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(12,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"div",23),u.ɵɵtext(15,"\n "),u.ɵɵelementStart(16,"input",24),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementStart(18,"label",25),u.ɵɵtext(19),u.ɵɵpipe(20,"i18n"),u.ɵɵelementStart(21,"small"),u.ɵɵtext(22),u.ɵɵpipe(23,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(24,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(25,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(26,"\n "),u.ɵɵelementStart(27,"div",23),u.ɵɵtext(28,"\n "),u.ɵɵelementStart(29,"input",26),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(30,"\n "),u.ɵɵelementStart(31,"label",27),u.ɵɵtext(32),u.ɵɵpipe(33,"i18n"),u.ɵɵelementStart(34,"small"),u.ɵɵtext(35),u.ɵɵpipe(36,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(38,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(39,"\n "),u.ɵɵelementStart(40,"div",23),u.ɵɵtext(41,"\n "),u.ɵɵelementStart(42,"input",28),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(43,"\n "),u.ɵɵelementStart(44,"label",29),u.ɵɵtext(45),u.ɵɵpipe(46,"i18n"),u.ɵɵelementStart(47,"small"),u.ɵɵtext(48),u.ɵɵpipe(49,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(50,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(51,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(52,"\n "),u.ɵɵelementStart(53,"div",23),u.ɵɵtext(54,"\n "),u.ɵɵelementStart(55,"input",30),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(56,"\n "),u.ɵɵelementStart(57,"label",31),u.ɵɵtext(58),u.ɵɵpipe(59,"i18n"),u.ɵɵelementStart(60,"small"),u.ɵɵtext(61),u.ɵɵpipe(62,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(63,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(64,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(65,"\n "),u.ɵɵelementStart(66,"div",23),u.ɵɵtext(67,"\n "),u.ɵɵelementStart(68,"input",32),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(69,"\n "),u.ɵɵelementStart(70,"label",33),u.ɵɵtext(71),u.ɵɵpipe(72,"i18n"),u.ɵɵelementStart(73,"small"),u.ɵɵtext(74),u.ɵɵpipe(75,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(76,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(77,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(78,"\n "),u.ɵɵtemplate(79,k,133,37,"ng-container",20),u.ɵɵtext(80,"\n "),u.ɵɵelementStart(81,"h3",34),u.ɵɵtext(82,"\n "),u.ɵɵelementStart(83,"div",35),u.ɵɵtext(84),u.ɵɵpipe(85,"i18n"),u.ɵɵelementStart(86,"a",36),u.ɵɵpipe(87,"i18n"),u.ɵɵtext(88,"\n "),u.ɵɵelement(89,"i",22),u.ɵɵtext(90,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(91,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(92,"\n "),u.ɵɵtemplate(93,A,10,6,"div",37),u.ɵɵtext(94,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(95,"\n "),u.ɵɵelementStart(96,"div",38),u.ɵɵtext(97,"\n "),u.ɵɵelementStart(98,"div",39),u.ɵɵtext(99,"\n "),u.ɵɵelementStart(100,"input",40),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().access=t})),u.ɵɵelementEnd(),u.ɵɵtext(101,"\n "),u.ɵɵelementStart(102,"label",41),u.ɵɵtext(103),u.ɵɵpipe(104,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(105,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(106,"\n "),u.ɵɵelementStart(107,"div",39),u.ɵɵtext(108,"\n "),u.ɵɵelementStart(109,"input",42),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().access=t})),u.ɵɵelementEnd(),u.ɵɵtext(110,"\n "),u.ɵɵelementStart(111,"label",43),u.ɵɵtext(112),u.ɵɵpipe(113,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(114,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(115,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(116,"\n "),u.ɵɵtemplate(117,D,6,2,"ng-container",20),u.ɵɵtext(118,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.editMode),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(6,33,"userType"),"\n "),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(8,35,"learnMore")),u.ɵɵadvance(9),u.ɵɵproperty("value",e.organizationUserType.User)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(20,37,"user"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(23,39,"userDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Manager)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(33,41,"manager"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(36,43,"managerDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Admin)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(46,45,"admin"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(49,47,"adminDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Owner)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(59,49,"owner"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(62,51,"ownerDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Custom)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(72,53,"custom"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(75,55,"customDesc")),u.ɵɵadvance(5),u.ɵɵproperty("ngIf",e.customUserTypeSelected),u.ɵɵadvance(5),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(85,57,"accessControl"),"\n "),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(87,59,"learnMore")),u.ɵɵadvance(7),u.ɵɵproperty("ngIf","selected"===e.access&&e.collections&&e.collections.length),u.ɵɵadvance(3),u.ɵɵproperty("ngClass",u.ɵɵpureFunction1(65,R,"selected"!==e.access)),u.ɵɵadvance(4),u.ɵɵproperty("ngModel",e.access),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(104,61,"userAccessAllItems"),"\n "),u.ɵɵadvance(6),u.ɵɵproperty("ngModel",e.access),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(113,63,"userAccessSelectedCollections"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("ngIf","selected"===e.access)}}function U(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"button",81,82),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().delete()})),u.ɵɵpipe(2,"i18n"),u.ɵɵtext(3,"\n "),u.ɵɵelement(4,"i",83),u.ɵɵtext(5,"\n "),u.ɵɵelement(6,"i",84),u.ɵɵpipe(7,"i18n"),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵreference(1),t=u.ɵɵnextContext();u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(2,6,"delete")),u.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),u.ɵɵadvance(4),u.ɵɵproperty("hidden",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(7,8,"loading")),u.ɵɵproperty("hidden",!e.loading)}}class V{constructor(e,t,n,i,s){this.apiService=e,this.i18nService=t,this.collectionService=n,this.platformUtilsService=i,this.logService=s,this.usesKeyConnector=!1,this.onSavedUser=new r.EventEmitter,this.onDeletedUser=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.type=o.OrganizationUserType.User,this.permissions=new a.PermissionsApi,this.showCustom=!1,this.access="selected",this.collections=[],this.organizationUserType=o.OrganizationUserType,this.manageAllCollectionsCheckboxes=[{id:"createNewCollections",get:()=>this.permissions.createNewCollections,set:e=>this.permissions.createNewCollections=e},{id:"editAnyCollection",get:()=>this.permissions.editAnyCollection,set:e=>this.permissions.editAnyCollection=e},{id:"deleteAnyCollection",get:()=>this.permissions.deleteAnyCollection,set:e=>this.permissions.deleteAnyCollection=e}],this.manageAssignedCollectionsCheckboxes=[{id:"editAssignedCollections",get:()=>this.permissions.editAssignedCollections,set:e=>this.permissions.editAssignedCollections=e},{id:"deleteAssignedCollections",get:()=>this.permissions.deleteAssignedCollections,set:e=>this.permissions.deleteAssignedCollections=e}]}get customUserTypeSelected(){return this.type===o.OrganizationUserType.Custom}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.organizationUserId,yield this.loadCollections(),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editUser");try{const e=yield this.apiService.getOrganizationUser(this.organizationId,this.organizationUserId);this.access=e.accessAll?"all":"selected",this.type=e.type,e.type===o.OrganizationUserType.Custom&&(this.permissions=e.permissions),null!=e.collections&&null!=this.collections&&e.collections.forEach((e=>{const t=this.collections.filter((t=>t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteUser");this.loading=!1}))}loadCollections(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getCollections(this.organizationId)).data.map((e=>new l.Collection(new s.CollectionData(e))));this.collections=yield this.collectionService.decryptMany(e)}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}setRequestPermissions(e,t){return Object.assign(e,t?new a.PermissionsApi:this.permissions),e}handleDependentPermissions(){this.permissions.manageResetPassword&&!this.permissions.manageUsers&&(this.permissions.manageUsers=!0,document.getElementById("manageUsers").checked=!0,this.platformUtilsService.showToast("info",null,this.i18nService.t("resetPasswordManageUsers")))}submit(){var e,t;return i(this,void 0,void 0,(function*(){let n=null;"all"!==this.access&&(n=this.collections.filter((e=>e.checked)).map((e=>new p.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords))));try{if(this.editMode){const t=new d.OrganizationUserUpdateRequest;t.accessAll="all"===this.access,t.type=this.type,t.collections=n,t.permissions=this.setRequestPermissions(null!==(e=t.permissions)&&void 0!==e?e:new a.PermissionsApi,t.type!==o.OrganizationUserType.Custom),this.formPromise=this.apiService.putOrganizationUser(this.organizationId,this.organizationUserId,t)}else{const e=new c.OrganizationUserInviteRequest;e.emails=this.emails.trim().split(/\s*,\s*/),e.accessAll="all"===this.access,e.type=this.type,e.permissions=this.setRequestPermissions(null!==(t=e.permissions)&&void 0!==t?t:new a.PermissionsApi,e.type!==o.OrganizationUserType.Custom),e.collections=n,this.formPromise=this.apiService.postOrganizationUserInvite(this.organizationId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSavedUser.emit()}catch(i){this.logService.error(i)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;const e=this.usesKeyConnector?"removeUserConfirmationKeyConnector":"removeUserConfirmation";if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(e),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteOrganizationUser(this.organizationId,this.organizationUserId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.name)),this.onDeletedUser.emit()}catch(t){this.logService.error(t)}}))}}t.UserAddEditComponent=V,V.ɵfac=function(e){return new(e||V)(u.ɵɵdirectiveInject(m.ApiService),u.ɵɵdirectiveInject(h.I18nService),u.ɵɵdirectiveInject(v.CollectionService),u.ɵɵdirectiveInject(g.PlatformUtilsService),u.ɵɵdirectiveInject(f.LogService))},V.ɵcmp=u.ɵɵdefineComponent({type:V,selectors:[["app-user-add-edit"]],inputs:{name:"name",organizationUserId:"organizationUserId",organizationId:"organizationId",usesKeyConnector:"usesKeyConnector"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:51,vars:19,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/provider-users/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","userTypeUser",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeUser",1,"form-check-label"],["type","radio","name","userType","id","userTypeManager",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeManager",1,"form-check-label"],["type","radio","name","userType","id","userTypeAdmin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeAdmin",1,"form-check-label"],["type","radio","name","userType","id","userTypeOwner",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeOwner",1,"form-check-label"],["type","radio","name","userType","id","userTypeCustom",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeCustom",1,"form-check-label"],[1,"mt-4","d-flex"],[1,"mb-3"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/user-types-access-control/#access-control",3,"appA11yTitle"],["class","ml-auto",4,"ngIf"],[1,"form-group",3,"ngClass"],[1,"form-check"],["type","radio","name","access","id","accessAll","value","all",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessAll",1,"form-check-label"],["type","radio","name","access","id","accessSelected","value","selected",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessSelected",1,"form-check-label"],[1,"form-group","mb-4"],["for","emails"],["id","emails","type","text","name","Emails","required","","appAutoFocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"row"],[1,"col-6"],[1,"font-weight-bold","mb-0"],[1,"my-0","mr-2"],["parentId","manageAssignedCollections",3,"checkboxes"],[1,"form-group","mb-0"],[1,"form-check","mt-1","form-check-block"],["type","checkbox","name","accessEventLogs","id","accessEventLogs",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessEventLogs",1,"form-check-label","font-weight-normal"],["type","checkbox","name","accessImportExport","id","accessImportExport",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessImportExport",1,"form-check-label","font-weight-normal"],["type","checkbox","name","accessReports","id","accessReports",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessReports",1,"form-check-label","font-weight-normal"],["parentId","manageAllCollections",3,"checkboxes"],["type","checkbox","name","manageGroups","id","manageGroups",1,"form-check-input",3,"ngModel","ngModelChange"],["for","manageGroups",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageSso","id","managePolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","manageSso",1,"form-check-label","font-weight-normal"],["type","checkbox","name","managePolicies","id","managePolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","managePolicies",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageUsers","id","manageUsers",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","manageUsers",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageResetPassword","id","manageResetPassword",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","manageResetPassword",1,"form-check-label","font-weight-normal"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"form",2,3),u.ɵɵlistener("ngSubmit",(function(){return t.submit()})),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"div",4),u.ɵɵtext(8,"\n "),u.ɵɵelementStart(9,"h2",5),u.ɵɵtext(10),u.ɵɵtemplate(11,E,2,1,"small",6),u.ɵɵtext(12,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"button",7),u.ɵɵpipe(15,"i18n"),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"span",8),u.ɵɵtext(18,"×"),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵtemplate(22,P,9,6,"div",9),u.ɵɵtext(23,"\n "),u.ɵɵtemplate(24,F,119,67,"div",9),u.ɵɵtext(25,"\n "),u.ɵɵelementStart(26,"div",10),u.ɵɵtext(27,"\n "),u.ɵɵelementStart(28,"button",11),u.ɵɵtext(29,"\n "),u.ɵɵelement(30,"i",12),u.ɵɵpipe(31,"i18n"),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"span"),u.ɵɵtext(34),u.ɵɵpipe(35,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(36,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵelementStart(38,"button",13),u.ɵɵtext(39),u.ɵɵpipe(40,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵelementStart(42,"div",14),u.ɵɵtext(43,"\n "),u.ɵɵtemplate(44,U,9,10,"button",15),u.ɵɵtext(45,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(46,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(47,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(49,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(50,"\n")),2&e){const e=u.ɵɵreference(5);u.ɵɵadvance(4),u.ɵɵproperty("appApiAction",t.formPromise),u.ɵɵadvance(6),u.ɵɵtextInterpolate1("\n ",t.title,"\n "),u.ɵɵadvance(1),u.ɵɵproperty("ngIf",t.name),u.ɵɵadvance(3),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(15,11,"close")),u.ɵɵadvance(8),u.ɵɵproperty("ngIf",t.loading),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading),u.ɵɵadvance(4),u.ɵɵproperty("disabled",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(31,13,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(35,15,"save")),u.ɵɵadvance(5),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(40,17,"cancel"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("ngIf",t.editMode)}},directives:[y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.NgIf,b.A11yTitleDirective,y.RadioControlValueAccessor,y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,S.NgClass,y.RequiredValidator,w.NestedCheckboxComponent,y.CheckboxControlValueAccessor,S.NgForOf,C.StopPropDirective],pipes:[I.I18nPipe],encapsulation:2})},85331:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserConfirmComponent=void 0;const r=n(32621),o=(n(85714),n(36631),n(73569),n(32621)),a=n(85714),s=n(36631),l=n(73569),c=n(96832),d=n(56820),p=n(57490),u=n(8863),m=n(99729);function h(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class v{constructor(e,t,n){this.cryptoService=e,this.logService=t,this.stateService=n,this.onConfirmedUser=new r.EventEmitter,this.dontAskAgain=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){try{if(null!=this.publicKey){const e=yield this.cryptoService.getFingerprint(this.userId,this.publicKey.buffer);null!=e&&(this.fingerprint=e.join("-"))}}catch(e){this.logService.error(e)}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){this.loading||(this.dontAskAgain&&(yield this.stateService.setAutoConfirmFingerprints(!0)),this.onConfirmedUser.emit())}))}}t.UserConfirmComponent=v,v.ɵfac=function(e){return new(e||v)(o.ɵɵdirectiveInject(a.CryptoService),o.ɵɵdirectiveInject(s.LogService),o.ɵɵdirectiveInject(l.StateService))},v.ɵcmp=o.ɵɵdefineComponent({type:v,selectors:[["app-user-confirm"]],inputs:{name:"name",userId:"userId",publicKey:"publicKey"},outputs:{onConfirmedUser:"onConfirmedUser"},decls:69,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"form-check"],["type","checkbox","id","dontAskAgain","name","DontAskAgain",1,"form-check-input",3,"ngModel","ngModelChange"],["for","dontAskAgain",1,"form-check-label"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,h,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"p"),o.ɵɵtext(26),o.ɵɵpipe(27,"i18n"),o.ɵɵelementStart(28,"a",10),o.ɵɵtext(29),o.ɵɵpipe(30,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"p"),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"code"),o.ɵɵtext(36),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementStart(39,"div",11),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.dontAskAgain=e})),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"label",13),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",14),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"button",15),o.ɵɵtext(52,"\n "),o.ɵɵelement(53,"i",16),o.ɵɵpipe(54,"i18n"),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"span"),o.ɵɵtext(57),o.ɵɵpipe(58,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementStart(61,"button",17),o.ɵɵtext(62),o.ɵɵpipe(63,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,13,"confirmUser"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.name),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,15,"close")),o.ɵɵadvance(11),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(27,17,"fingerprintEnsureIntegrityVerify"),"\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(30,19,"learnMore"),""),o.ɵɵadvance(7),o.ɵɵtextInterpolate(t.fingerprint),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",t.dontAskAgain),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(45,21,"dontAskFingerprintAgain"),"\n "),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(54,23,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(58,25,"confirm")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(63,27,"cancel"),"\n ")}},directives:[c.ɵNgNoValidate,c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.NgIf,u.A11yTitleDirective,c.CheckboxControlValueAccessor,c.NgControlStatus,c.NgModel],pipes:[m.I18nPipe],encapsulation:2})},68535:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserGroupsComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(82769)),a=n(50533),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(96832),m=n(56820),h=n(57490),v=n(8863),g=n(39159),f=n(99729);function y(e,t){if(1&e&&(s.ɵɵelementStart(0,"small",14),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function x(e,t){1&e&&(s.ɵɵelementStart(0,"div",15),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",16),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",17),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"noGroupsInList"),"\n "))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",22),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).check(t)})),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",23),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.checked=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"td",24),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).check(t)})),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;s.ɵɵadvance(4),s.ɵɵpropertyInterpolate1("name","Groups[",n,"].Checked"),s.ɵɵproperty("ngModel",e.checked),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",20),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,b,10,3,"tr",21),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.groups)}}function C(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",15),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,S,3,3,"div",18),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,w,7,1,"table",19),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"groupAccessUserDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.groups||!e.groups.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.groups&&e.groups.length)}}class I{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedUser=new r.EventEmitter,this.loading=!0,this.groups=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getGroups(this.organizationId)).data.map((e=>e));e.sort(o.Utils.getSortFunction(this.i18nService,"name")),this.groups=e;try{const e=yield this.apiService.getOrganizationUserGroups(this.organizationId,this.organizationUserId);null!=e&&null!=this.groups&&e.forEach((e=>{const t=this.groups.filter((t=>t.id===e));null!=t&&t.length>0&&(t[0].checked=!0)}))}catch(t){this.logService.error(t)}this.loading=!1}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.groups.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){const e=new a.OrganizationUserUpdateGroupsRequest;e.groupIds=this.groups.filter((e=>e.checked)).map((e=>e.id));try{this.formPromise=this.apiService.putOrganizationUserGroups(this.organizationId,this.organizationUserId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("editedGroupsForUser",this.name)),this.onSavedUser.emit()}catch(t){this.logService.error(t)}}))}}t.UserGroupsComponent=I,I.ɵfac=function(e){return new(e||I)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService))},I.ɵcmp=s.ɵɵdefineComponent({type:I,selectors:[["app-user-groups"]],inputs:{name:"name",organizationUserId:"organizationUserId",organizationId:"organizationId"},outputs:{onSavedUser:"onSavedUser"},decls:47,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","groupAccessTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","groupAccessTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵtemplate(12,y,2,1,"small",6),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",7),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",8),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,x,9,6,"div",9),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,C,10,5,"div",9),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",10),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"button",11),s.ɵɵtext(30,"\n "),s.ɵɵelement(31,"i",12),s.ɵɵpipe(32,"i18n"),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"span"),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"button",13),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n")),2&e){const e=s.ɵɵreference(5);s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(11,10,"groupAccess"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.name),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,12,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading),s.ɵɵadvance(4),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(32,14,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(36,16,"save")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(41,18,"cancel"),"\n ")}},directives:[u.ɵNgNoValidate,u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.NgIf,v.A11yTitleDirective,h.NgForOf,u.CheckboxControlValueAccessor,g.StopPropDirective,u.NgControlStatus,u.NgModel],pipes:[f.I18nPipe],encapsulation:2})},64525:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsRoutingModule=void 0;const r=n(68012),o=n(76299),a=n(47880),s=n(70734),l=n(45231),c=n(26092),d=n(25829),p=n(41204),u=n(2021),m=n(74147),h=n(6029),v=n(13637),g=n(39722),f=n(31627),y=n(2516),x=n(78027),S=n(38359),b=n(79002),w=n(44336),C=n(65347),I=n(86661),E=n(1128),P=n(706),O=n(43850),k=n(57785),A=n(32621),T=(n(68012),[{path:":organizationId",component:l.OrganizationLayoutComponent,canActivate:[o.AuthGuard,s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("admin")},children:[{path:"",pathMatch:"full",redirectTo:"vault"},{path:"vault",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(32459)))).OrganizationVaultModule}))},{path:"tools",component:P.ToolsComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("tools")},children:[{path:"",pathMatch:"full",redirectTo:"import"},{path:"import",component:C.ImportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"importData",permissions:[a.Permissions.AccessImportExport]}},{path:"export",component:b.ExportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"exportVault",permissions:[a.Permissions.AccessImportExport]}},{path:"exposed-passwords-report",component:w.ExposedPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"exposedPasswordsReport",permissions:[a.Permissions.AccessReports]}},{path:"inactive-two-factor-report",component:I.InactiveTwoFactorReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"inactive2faReport",permissions:[a.Permissions.AccessReports]}},{path:"reused-passwords-report",component:E.ReusedPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"reusedPasswordsReport",permissions:[a.Permissions.AccessReports]}},{path:"unsecured-websites-report",component:O.UnsecuredWebsitesReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"unsecuredWebsitesReport",permissions:[a.Permissions.AccessReports]}},{path:"weak-passwords-report",component:k.WeakPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"weakPasswordsReport",permissions:[a.Permissions.AccessReports]}}]},{path:"manage",component:u.ManageComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("manage")},children:[{path:"",pathMatch:"full",redirectTo:"people"},{path:"collections",component:c.CollectionsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"collections",permissions:[a.Permissions.CreateNewCollections,a.Permissions.EditAnyCollection,a.Permissions.DeleteAnyCollection,a.Permissions.EditAssignedCollections,a.Permissions.DeleteAssignedCollections]}},{path:"events",component:d.EventsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"eventLogs",permissions:[a.Permissions.AccessEventLogs]}},{path:"groups",component:p.GroupsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"groups",permissions:[a.Permissions.ManageGroups]}},{path:"people",component:m.PeopleComponent,canActivate:[s.PermissionsGuard],data:{titleId:"people",permissions:[a.Permissions.ManageUsers,a.Permissions.ManageUsersPassword]}},{path:"policies",component:h.PoliciesComponent,canActivate:[s.PermissionsGuard],data:{titleId:"policies",permissions:[a.Permissions.ManagePolicies]}}]},{path:"settings",component:x.SettingsComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("settings")},children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:g.AccountComponent,data:{titleId:"myOrganization"}},{path:"two-factor",component:S.TwoFactorSetupComponent,data:{titleId:"twoStepLogin"}},{path:"billing",component:f.OrganizationBillingComponent,canActivate:[s.PermissionsGuard],data:{titleId:"billing",permissions:[a.Permissions.ManageBilling]}},{path:"subscription",component:y.OrganizationSubscriptionComponent,data:{titleId:"subscription"}}]}]}]);class M{}t.OrganizationsRoutingModule=M,M.ɵfac=function(e){return new(e||M)},M.ɵmod=A.ɵɵdefineNgModule({type:M}),M.ɵinj=A.ɵɵdefineInjector({imports:[[r.RouterModule.forChild(T)],r.RouterModule]})},81824:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BasePolicyComponent=t.BasePolicy=void 0;const i=n(96832),r=n(17200),o=(n(64030),n(32621));t.BasePolicy=class{display(e){return!0}};class a{constructor(){this.enabled=new i.FormControl(!1),this.data=null}ngOnInit(){this.enabled.setValue(this.policyResponse.enabled),null!=this.policyResponse.data&&this.loadData()}loadData(){var e;this.data.patchValue(null!==(e=this.policyResponse.data)&&void 0!==e?e:{})}buildRequestData(){return null!=this.data?this.data.value:null}buildRequest(e){const t=new r.PolicyRequest;return t.enabled=this.enabled.value,t.type=this.policy.type,t.data=this.buildRequestData(),Promise.resolve(t)}}t.BasePolicyComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{policyResponse:"policyResponse",policy:"policy"}})},22991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisableSendPolicyComponent=t.DisableSendPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="disableSend",this.description="disableSendPolicyDesc",this.type=i.PolicyType.DisableSend,this.component=d}}t.DisableSendPolicy=c;class d extends r.BasePolicyComponent{}t.DisableSendPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-disable-send"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"disableSendExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},34568:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.MasterPasswordPolicyComponent=t.MasterPasswordPolicy=void 0;n(96832),n(51554),n(63513);const r=n(49906),o=n(81824),a=n(32621),s=n(96832),l=n(51554),c=n(63513),d=n(57490),p=n(51626),u=n(99729);function m(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",21),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"keyConnectorPolicyRestriction"),"\n"))}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"option",22),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵproperty("ngValue",e.value),a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class v extends o.BasePolicy{constructor(){super(...arguments),this.name="masterPass",this.description="masterPassPolicyDesc",this.type=r.PolicyType.MasterPassword,this.component=g}}t.MasterPasswordPolicy=v;class g extends o.BasePolicyComponent{constructor(e,t,n){super(),this.formBuilder=e,this.organizationService=n,this.data=this.formBuilder.group({minComplexity:[null],minLength:[null],requireUpper:[null],requireLower:[null],requireNumbers:[null],requireSpecial:[null]}),this.showKeyConnectorInfo=!1,this.passwordScores=[{name:"-- "+t.t("select")+" --",value:null},{name:t.t("weak")+" (0)",value:0},{name:t.t("weak")+" (1)",value:1},{name:t.t("weak")+" (2)",value:2},{name:t.t("good")+" (3)",value:3},{name:t.t("strong")+" (4)",value:4}]}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this);const t=yield this.organizationService.get(this.policyResponse.organizationId);this.showKeyConnectorInfo=t.keyConnectorEnabled}))}}t.MasterPasswordPolicyComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.FormBuilder),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.OrganizationService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["policy-master-password"]],features:[a.ɵɵInheritDefinitionFeature],decls:73,vars:13,consts:[["type","info",4,"ngIf"],[3,"formGroup"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[1,"row"],[1,"col-6","form-group"],["for","minComplexity"],["id","minComplexity","name","minComplexity","formControlName","minComplexity",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],["for","minLength"],["id","minLength","type","number","min","8","name","minLength","formControlName","minLength",1,"form-control"],["type","checkbox","id","requireUpper","name","requireUpper","formControlName","requireUpper",1,"form-check-input"],["for","requireUpper",1,"form-check-label"],["type","checkbox","id","requireLower","name","requireLower","formControlName","requireLower",1,"form-check-input"],["for","requireLower",1,"form-check-label"],["type","checkbox","id","requireNumbers","name","requireNumbers","formControlName","requireNumbers",1,"form-check-input"],["for","requireNumbers",1,"form-check-label"],["type","checkbox","id","requireSpecial","name","requireSpecial","formControlName","requireSpecial",1,"form-check-input"],["for","requireSpecial",1,"form-check-label"],["type","info"],[3,"ngValue"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,m,3,3,"app-callout",0),a.ɵɵtext(1,"\n\n"),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",2),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",3),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"input",4),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"label",5),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n\n "),a.ɵɵelementStart(16,"div",6),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",7),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",8),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"select",9),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,h,2,2,"option",10),a.ɵɵtext(27,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",7),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"label",11),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelement(36,"input",12),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementStart(40,"div",3),a.ɵɵtext(41,"\n "),a.ɵɵelement(42,"input",13),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"label",14),a.ɵɵtext(45,"A-Z"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"div",3),a.ɵɵtext(49,"\n "),a.ɵɵelement(50,"input",15),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"label",16),a.ɵɵtext(53,"a-z"),a.ɵɵelementEnd(),a.ɵɵtext(54,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"div",3),a.ɵɵtext(57,"\n "),a.ɵɵelement(58,"input",17),a.ɵɵtext(59,"\n "),a.ɵɵelementStart(60,"label",18),a.ɵɵtext(61,"0-9"),a.ɵɵelementEnd(),a.ɵɵtext(62,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(63,"\n "),a.ɵɵelementStart(64,"div",3),a.ɵɵtext(65,"\n "),a.ɵɵelement(66,"input",19),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"label",20),a.ɵɵtext(69,"!@#$%^&*"),a.ɵɵelementEnd(),a.ɵɵtext(70,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(71,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(72,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showKeyConnectorInfo),a.ɵɵadvance(2),a.ɵɵproperty("formGroup",t.data),a.ɵɵadvance(6),a.ɵɵproperty("formControl",t.enabled),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,7,"enabled")),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,9,"minComplexityScore")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",t.passwordScores),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(34,11,"minLength")))},directives:[d.NgIf,s.NgControlStatusGroup,s.FormGroupDirective,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective,s.SelectControlValueAccessor,s.FormControlName,d.NgForOf,s.MinValidator,s.NumberValueAccessor,s.DefaultValueAccessor,p.CalloutComponent,s.NgSelectOption,s.ɵNgSelectMultipleOption],pipes:[u.I18nPipe],encapsulation:2})},39123:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorPolicyComponent=t.PasswordGeneratorPolicy=void 0;n(96832),n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51554),l=n(57490),c=n(99729);function d(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",32),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class p extends r.BasePolicy{constructor(){super(...arguments),this.name="passwordGenerator",this.description="passwordGeneratorPolicyDesc",this.type=i.PolicyType.PasswordGenerator,this.component=u}}t.PasswordGeneratorPolicy=p;class u extends r.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.data=this.formBuilder.group({defaultType:[null],minLength:[null],useUpper:[null],useLower:[null],useNumbers:[null],useSpecial:[null],minNumbers:[null],minSpecial:[null],minNumberWords:[null],capitalize:[null],includeNumber:[null]}),this.defaultTypes=[{name:t.t("userPreference"),value:null},{name:t.t("password"),value:"password"},{name:t.t("passphrase"),value:"passphrase"}]}}t.PasswordGeneratorPolicyComponent=u,u.ɵfac=function(e){return new(e||u)(o.ɵɵdirectiveInject(a.FormBuilder),o.ɵɵdirectiveInject(s.I18nService))},u.ɵcmp=o.ɵɵdefineComponent({type:u,selectors:[["policy-password-generator"]],features:[o.ɵɵInheritDefinitionFeature],decls:133,vars:33,consts:[[3,"formGroup"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[1,"row"],[1,"col-6","form-group","mb-0"],["for","defaultType"],["id","defaultType","name","defaultType","formControlName","defaultType",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"mt-4"],[1,"col-6","form-group"],["for","minLength"],["id","minLength","type","number","name","minLength","min","5","max","128","formControlName","minLength",1,"form-control"],["for","minNumbers"],["id","minNumbers","type","number","name","minNumbers","min","0","max","9","formControlName","minNumbers",1,"form-control"],["for","minSpecial"],["id","minSpecial","type","number","name","minSpecial","min","0","max","9","formControlName","minSpecial",1,"form-control"],["type","checkbox","id","useUpper","formControlName","useUpper","name","useUpper",1,"form-check-input"],["for","useUpper",1,"form-check-label"],["type","checkbox","id","useLower","name","useLower","formControlName","useLower",1,"form-check-input"],["for","useLower",1,"form-check-label"],["type","checkbox","id","useNumbers","name","useNumbers","formControlName","useNumbers",1,"form-check-input"],["for","useNumbers",1,"form-check-label"],["type","checkbox","id","useSpecial","name","useSpecial","formControlName","useSpecial",1,"form-check-input"],["for","useSpecial",1,"form-check-label"],["for","minNumberWords"],["id","minNumberWords","type","number","name","minNumberWords","min","3","max","20","formControlName","minNumberWords",1,"form-control"],["type","checkbox","id","capitalize","name","capitalize","formControlName","capitalize",1,"form-check-input"],["for","capitalize",1,"form-check-label"],["type","checkbox","id","includeNumber","name","includeNumber","formControlName","includeNumber",1,"form-check-input"],["for","includeNumber",1,"form-check-label"],[3,"ngValue"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"label",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,d,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"h3",10),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"div",5),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"div",11),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"label",12),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelement(41,"input",13),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"div",5),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"div",11),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"label",14),o.ɵɵtext(50),o.ɵɵpipe(51,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n "),o.ɵɵelement(53,"input",15),o.ɵɵtext(54,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"div",11),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"label",16),o.ɵɵtext(59),o.ɵɵpipe(60,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelement(62,"input",17),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementStart(66,"div",2),o.ɵɵtext(67,"\n "),o.ɵɵelement(68,"input",18),o.ɵɵtext(69,"\n "),o.ɵɵelementStart(70,"label",19),o.ɵɵtext(71,"A-Z"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(73,"\n "),o.ɵɵelementStart(74,"div",2),o.ɵɵtext(75,"\n "),o.ɵɵelement(76,"input",20),o.ɵɵtext(77,"\n "),o.ɵɵelementStart(78,"label",21),o.ɵɵtext(79,"a-z"),o.ɵɵelementEnd(),o.ɵɵtext(80,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(81,"\n "),o.ɵɵelementStart(82,"div",2),o.ɵɵtext(83,"\n "),o.ɵɵelement(84,"input",22),o.ɵɵtext(85,"\n "),o.ɵɵelementStart(86,"label",23),o.ɵɵtext(87,"0-9"),o.ɵɵelementEnd(),o.ɵɵtext(88,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"div",2),o.ɵɵtext(91,"\n "),o.ɵɵelement(92,"input",24),o.ɵɵtext(93,"\n "),o.ɵɵelementStart(94,"label",25),o.ɵɵtext(95,"!@#$%^&*"),o.ɵɵelementEnd(),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"h3",10),o.ɵɵtext(99),o.ɵɵpipe(100,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(101,"\n "),o.ɵɵelementStart(102,"div",5),o.ɵɵtext(103,"\n "),o.ɵɵelementStart(104,"div",11),o.ɵɵtext(105,"\n "),o.ɵɵelementStart(106,"label",26),o.ɵɵtext(107),o.ɵɵpipe(108,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(109,"\n "),o.ɵɵelement(110,"input",27),o.ɵɵtext(111,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(112,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(113,"\n "),o.ɵɵelementStart(114,"div",2),o.ɵɵtext(115,"\n "),o.ɵɵelement(116,"input",28),o.ɵɵtext(117,"\n "),o.ɵɵelementStart(118,"label",29),o.ɵɵtext(119),o.ɵɵpipe(120,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(121,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(122,"\n "),o.ɵɵelementStart(123,"div",2),o.ɵɵtext(124,"\n "),o.ɵɵelement(125,"input",30),o.ɵɵtext(126,"\n "),o.ɵɵelementStart(127,"label",31),o.ɵɵtext(128),o.ɵɵpipe(129,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(130,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(131,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(132,"\n")),2&e&&(o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(6),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,13,"enabled")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,15,"defaultType")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.defaultTypes),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,17,"password")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(39,19,"minLength")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(51,21,"minNumbers")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(60,23,"minSpecial")),o.ɵɵadvance(40),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(100,25,"passphrase")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(108,27,"minimumNumberOfWords")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(120,29,"capitalize")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(129,31,"includeNumber")))},directives:[a.NgControlStatusGroup,a.FormGroupDirective,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.SelectControlValueAccessor,a.FormControlName,l.NgForOf,a.MinValidator,a.MaxValidator,a.NumberValueAccessor,a.DefaultValueAccessor,a.NgSelectOption,a.ɵNgSelectMultipleOption],pipes:[c.I18nPipe],encapsulation:2})},34912:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PersonalOwnershipPolicyComponent=t.PersonalOwnershipPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="personalOwnership",this.description="personalOwnershipPolicyDesc",this.type=i.PolicyType.PersonalOwnership,this.component=d}}t.PersonalOwnershipPolicy=c;class d extends r.BasePolicyComponent{}t.PersonalOwnershipPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-personal-ownership"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"personalOwnershipExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"personalOwnershipCheckboxDesc")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},60764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequireSsoPolicyComponent=t.RequireSsoPolicy=void 0;n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(51554),s=n(51626),l=n(96832),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="requireSso",this.description="requireSsoPolicyDesc",this.type=i.PolicyType.RequireSso,this.component=p}display(e){return e.useSso}}t.RequireSsoPolicy=d;class p extends r.BasePolicyComponent{constructor(e){super(),this.i18nService=e}buildRequest(e){var t;const n=null!==(t=e.get(i.PolicyType.SingleOrg))&&void 0!==t&&t;if(this.enabled.value&&!n)throw new Error(this.i18nService.t("requireSsoPolicyReqError"));return super.buildRequest(e)}}t.RequireSsoPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-require-sso"]],features:[o.ɵɵInheritDefinitionFeature],decls:21,vars:13,consts:[["type","tip",3,"title"],["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n"),o.ɵɵelementStart(5,"app-callout",1),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n\n"),o.ɵɵelementStart(9,"div",2),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",3),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"input",4),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"label",5),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n")),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,5,"prerequisite")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,7,"requireSsoPolicyReq"),"\n"),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(7,9,"requireSsoExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,11,"enabled")))},directives:[s.CalloutComponent,l.CheckboxControlValueAccessor,l.NgControlStatus,l.FormControlDirective],pipes:[c.I18nPipe],encapsulation:2})},40558:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordPolicyComponent=t.ResetPasswordPolicy=void 0;n(96832),n(63513);const r=n(49906),o=n(81824),a=n(32621),s=n(96832),l=n(63513),c=n(57490),d=n(51626),p=n(99729);function u(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",10),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"keyConnectorPolicyRestriction"),"\n"))}class m extends o.BasePolicy{constructor(){super(...arguments),this.name="resetPasswordPolicy",this.description="resetPasswordPolicyDescription",this.type=r.PolicyType.ResetPassword,this.component=h}display(e){return e.useResetPassword}}t.ResetPasswordPolicy=m;class h extends o.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.organizationService=t,this.data=this.formBuilder.group({autoEnrollEnabled:!1}),this.showKeyConnectorInfo=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this);const t=yield this.organizationService.get(this.policyResponse.organizationId);this.showKeyConnectorInfo=t.keyConnectorEnabled}))}}t.ResetPasswordPolicyComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.FormBuilder),a.ɵɵdirectiveInject(l.OrganizationService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["policy-reset-password"]],features:[a.ɵɵInheritDefinitionFeature],decls:42,vars:21,consts:[["type","info",4,"ngIf"],["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],[1,"mt-4"],["type","checkbox","id","autoEnrollEnabled","name","AutoEnrollEnabled","formControlName","autoEnrollEnabled",1,"form-check-input"],["for","autoEnrollEnabled",1,"form-check-label"],["type","info"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,u,3,3,"app-callout",0),a.ɵɵtext(1,"\n\n"),a.ɵɵelementStart(2,"app-callout",1),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n\n"),a.ɵɵelementStart(6,"div",2),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"div",3),a.ɵɵtext(9,"\n "),a.ɵɵelement(10,"input",4),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"label",5),a.ɵɵtext(13),a.ɵɵpipe(14,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n\n"),a.ɵɵelementStart(18,"div",6),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"h3",7),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"p"),a.ɵɵtext(25),a.ɵɵpipe(26,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"app-callout",1),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"div",3),a.ɵɵtext(33,"\n "),a.ɵɵelement(34,"input",8),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"label",9),a.ɵɵtext(37),a.ɵɵpipe(38,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showKeyConnectorInfo),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,9,"resetPasswordPolicyWarning"),"\n"),a.ɵɵadvance(7),a.ɵɵproperty("formControl",t.enabled),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(14,11,"enabled")),a.ɵɵadvance(5),a.ɵɵproperty("formGroup",t.data),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,13,"resetPasswordPolicyAutoEnroll")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(26,15,"resetPasswordPolicyAutoEnrollDescription")),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,17,"resetPasswordPolicyAutoEnrollWarning"),"\n "),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(38,19,"resetPasswordPolicyAutoEnrollCheckbox"),"\n "))},directives:[c.NgIf,d.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective,s.NgControlStatusGroup,s.FormGroupDirective,s.FormControlName],pipes:[p.I18nPipe],encapsulation:2})},57037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendOptionsPolicyComponent=t.SendOptionsPolicy=void 0;n(96832);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51626),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="sendOptions",this.description="sendOptionsPolicyDesc",this.type=i.PolicyType.SendOptions,this.component=d}}t.SendOptionsPolicy=c;class d extends r.BasePolicyComponent{constructor(e){super(),this.formBuilder=e,this.data=this.formBuilder.group({disableHideEmail:!1})}}t.SendOptionsPolicyComponent=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵdirectiveInject(a.FormBuilder))},d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-send-options"]],features:[o.ɵɵInheritDefinitionFeature],decls:32,vars:14,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],[1,"mt-4"],["type","checkbox","id","disableHideEmail","name","DisableHideEmail","formControlName","disableHideEmail",1,"form-check-input"],["for","disableHideEmail",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n\n"),o.ɵɵelementStart(16,"div",5),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"h3",6),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",2),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"input",7),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"label",8),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,6,"sendOptionsExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,8,"enabled")),o.ɵɵadvance(5),o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,10,"options")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(28,12,"disableHideEmail")))},directives:[s.CalloutComponent,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.NgControlStatusGroup,a.FormGroupDirective,a.FormControlName],pipes:[l.I18nPipe],encapsulation:2})},82862:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SingleOrgPolicyComponent=t.SingleOrgPolicy=void 0;n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(51554),s=n(51626),l=n(96832),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="singleOrg",this.description="singleOrgDesc",this.type=i.PolicyType.SingleOrg,this.component=p}}t.SingleOrgPolicy=d;class p extends r.BasePolicyComponent{constructor(e){super(),this.i18nService=e}buildRequest(e){var t,n;if(!this.enabled.value){if(null!==(t=e.get(i.PolicyType.RequireSso))&&void 0!==t&&t)throw new Error(this.i18nService.t("disableRequiredError",this.i18nService.t("requireSso")));if(null!==(n=e.get(i.PolicyType.MaximumVaultTimeout))&&void 0!==n&&n)throw new Error(this.i18nService.t("disableRequiredError",this.i18nService.t("maximumVaultTimeoutLabel")))}return super.buildRequest(e)}}t.SingleOrgPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-single-org"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"singleOrgPolicyWarning"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[s.CalloutComponent,l.CheckboxControlValueAccessor,l.NgControlStatus,l.FormControlDirective],pipes:[c.I18nPipe],encapsulation:2})},43909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticationPolicyComponent=t.TwoFactorAuthenticationPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="twoStepLogin",this.description="twoStepLoginPolicyDesc",this.type=i.PolicyType.TwoFactorAuthentication,this.component=d}}t.TwoFactorAuthenticationPolicy=c;class d extends r.BasePolicyComponent{}t.TwoFactorAuthenticationPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-two-factor-authentication"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"twoStepLoginPolicyWarning"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},13637:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NavigationPermissionsService=void 0;const i=n(47880),r={manage:[i.Permissions.CreateNewCollections,i.Permissions.EditAnyCollection,i.Permissions.DeleteAnyCollection,i.Permissions.EditAssignedCollections,i.Permissions.DeleteAssignedCollections,i.Permissions.AccessEventLogs,i.Permissions.ManageGroups,i.Permissions.ManageUsers,i.Permissions.ManagePolicies],tools:[i.Permissions.AccessImportExport,i.Permissions.AccessReports],settings:[i.Permissions.ManageOrganization]};class o{static getPermissions(e){return"admin"===e?Object.values(r).reduce(((e,t)=>e.concat(t)),[]):r[e]}static canAccessAdmin(e){return this.canAccessTools(e)||this.canAccessSettings(e)||this.canAccessManage(e)}static canAccessTools(e){return e.hasAnyPermission(o.getPermissions("tools"))}static canAccessSettings(e){return e.hasAnyPermission(o.getPermissions("settings"))}static canAccessManage(e){return e.hasAnyPermission(o.getPermissions("manage"))}}t.NavigationPermissionsService=o},39722:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(9724),n(39950)),a=n(20086),s=n(83011),l=n(56796),c=n(41799),d=n(5092),p=n(32621),u=n(64684),m=n(91674),h=n(51554),v=n(68012),g=n(9724),f=n(73828),y=n(85714),x=n(36631),S=n(63513),b=n(57490),w=n(96832),C=n(56820),I=n(15370),E=n(41799),P=n(99729),O=["deleteOrganizationTemplate"],k=["purgeOrganizationTemplate"],A=["apiKeyTemplate"],T=["rotateApiKeyTemplate"];function M(e,t){1&e&&(p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",12),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",13),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function B(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",14,15),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submit()})),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"div",16),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"div",17),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"div",18),p.ɵɵtext(8,"\n "),p.ɵɵelementStart(9,"label",19),p.ɵɵtext(10),p.ɵɵpipe(11,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(12,"\n "),p.ɵɵelementStart(13,"input",20),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.name=t})),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementStart(16,"div",18),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"label",21),p.ɵɵtext(19),p.ɵɵpipe(20,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"input",22),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.billingEmail=t})),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(24,"\n "),p.ɵɵelementStart(25,"div",18),p.ɵɵtext(26,"\n "),p.ɵɵelementStart(27,"label",23),p.ɵɵtext(28),p.ɵɵpipe(29,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵelementStart(31,"input",24),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.businessName=t})),p.ɵɵelementEnd(),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n "),p.ɵɵelementStart(34,"div",18),p.ɵɵtext(35,"\n "),p.ɵɵelementStart(36,"label",25),p.ɵɵtext(37),p.ɵɵpipe(38,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(39,"\n "),p.ɵɵelementStart(40,"input",26),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.identifier=t})),p.ɵɵelementEnd(),p.ɵɵtext(41,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(42,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(43,"\n "),p.ɵɵelementStart(44,"div",17),p.ɵɵtext(45,"\n "),p.ɵɵelement(46,"app-avatar",27),p.ɵɵtext(47,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(48,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(49,"\n "),p.ɵɵelementStart(50,"button",28),p.ɵɵtext(51,"\n "),p.ɵɵelement(52,"i",29),p.ɵɵpipe(53,"i18n"),p.ɵɵtext(54,"\n "),p.ɵɵelementStart(55,"span"),p.ɵɵtext(56),p.ɵɵpipe(57,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(58,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(59,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("appApiAction",t.formPromise),p.ɵɵadvance(10),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(11,16,"organizationName")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.name)("disabled",t.selfHosted),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(20,18,"billingEmail")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.billingEmail)("disabled",t.selfHosted||!t.canManageBilling),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(29,20,"businessName")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.businessName)("disabled",t.selfHosted||!t.canManageBilling),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(38,22,"identifier")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.identifier),p.ɵɵadvance(6),p.ɵɵpropertyInterpolate("data",t.org.name),p.ɵɵadvance(4),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(53,24,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(57,26,"save"))}}function D(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",3),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"h1"),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementStart(9,"p"),p.ɵɵtext(10),p.ɵɵpipe(11,"i18n"),p.ɵɵelementStart(12,"a",30),p.ɵɵtext(13),p.ɵɵpipe(14,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementStart(17,"button",31),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().viewApiKey()})),p.ɵɵtext(18),p.ɵɵpipe(19,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(20,"\n "),p.ɵɵelementStart(21,"button",31),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().rotateApiKey()})),p.ɵɵtext(22),p.ɵɵpipe(23,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(24,"\n"),p.ɵɵelementContainerEnd()}2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,5,"apiKey")),p.ɵɵadvance(5),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(11,7,"apiKeyDesc"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(14,9,"learnMore"),"\n "),p.ɵɵadvance(5),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(19,11,"viewApiKey"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(23,13,"rotateApiKey"),"\n "))}function R(e,t){1&e&&(p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",12),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",13),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",14,32),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submitTaxInfo()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"app-tax-info"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"button",28),p.ɵɵtext(6,"\n "),p.ɵɵelement(7,"i",29),p.ɵɵpipe(8,"i18n"),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"span"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("appApiAction",t.taxFormPromise),p.ɵɵadvance(5),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(8,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(12,6,"save"))}}function U(e,t){}function V(e,t){}function N(e,t){}function _(e,t){}class j{constructor(e,t,n,i,r,o,a,s,l,c){this.modalService=e,this.apiService=t,this.i18nService=n,this.route=i,this.syncService=r,this.platformUtilsService=o,this.cryptoService=a,this.logService=s,this.router=l,this.organizationService=c,this.selfHosted=!1,this.canManageBilling=!0,this.loading=!0,this.canUseApi=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.selfHosted=this.platformUtilsService.isSelfHost(),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.canManageBilling=(yield this.organizationService.get(this.organizationId)).canManageBilling;try{this.org=yield this.apiService.getOrganization(this.organizationId),this.canUseApi=this.org.useApi}catch(t){this.logService.error(t)}})))),this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new a.OrganizationUpdateRequest;if(e.name=this.org.name,e.businessName=this.org.businessName,e.billingEmail=this.org.billingEmail,e.identifier=this.org.identifier,!this.org.hasPublicAndPrivateKeys){const t=yield this.cryptoService.getOrgKey(this.organizationId),n=yield this.cryptoService.makeKeyPair(t);e.keys=new o.OrganizationKeysRequest(n[0],n[1].encryptedString)}this.formPromise=this.apiService.putOrganization(this.organizationId,e).then((()=>this.syncService.fullSync(!0))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationUpdated"))}catch(e){this.logService.error(e)}}))}submitTaxInfo(){return i(this,void 0,void 0,(function*(){this.taxFormPromise=this.taxInfo.submitTaxInfo(),yield this.taxFormPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("taxInfoUpdated"))}))}deleteOrganization(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(d.DeleteOrganizationComponent,this.deleteModalRef,(e=>{e.organizationId=this.organizationId,e.onSuccess.subscribe((()=>{this.router.navigate(["/"])}))}))}))}purgeVault(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.PurgeVaultComponent,this.purgeModalRef,(e=>{e.organizationId=this.organizationId}))}))}viewApiKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.ApiKeyComponent,this.apiKeyModalRef,(e=>{e.keyType="organization",e.entityId=this.organizationId,e.postKey=this.apiService.postOrganizationApiKey.bind(this.apiService),e.scope="api.organization",e.grantType="client_credentials",e.apiKeyTitle="apiKey",e.apiKeyWarning="apiKeyWarning",e.apiKeyDescription="apiKeyDesc"}))}))}rotateApiKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.ApiKeyComponent,this.rotateApiKeyModalRef,(e=>{e.keyType="organization",e.isRotation=!0,e.entityId=this.organizationId,e.postKey=this.apiService.postOrganizationRotateApiKey.bind(this.apiService),e.scope="api.organization",e.grantType="client_credentials",e.apiKeyTitle="apiKey",e.apiKeyWarning="apiKeyWarning",e.apiKeyDescription="apiKeyRotateDesc"}))}))}}t.AccountComponent=j,j.ɵfac=function(e){return new(e||j)(p.ɵɵdirectiveInject(u.ModalService),p.ɵɵdirectiveInject(m.ApiService),p.ɵɵdirectiveInject(h.I18nService),p.ɵɵdirectiveInject(v.ActivatedRoute),p.ɵɵdirectiveInject(g.SyncService),p.ɵɵdirectiveInject(f.PlatformUtilsService),p.ɵɵdirectiveInject(y.CryptoService),p.ɵɵdirectiveInject(x.LogService),p.ɵɵdirectiveInject(v.Router),p.ɵɵdirectiveInject(S.OrganizationService))},j.ɵcmp=p.ɵɵdefineComponent({type:j,selectors:[["app-org-account"]],viewQuery:function(e,t){if(1&e&&(p.ɵɵviewQuery(O,7,r.ViewContainerRef),p.ɵɵviewQuery(k,7,r.ViewContainerRef),p.ɵɵviewQuery(A,7,r.ViewContainerRef),p.ɵɵviewQuery(T,7,r.ViewContainerRef),p.ɵɵviewQuery(c.TaxInfoComponent,5)),2&e){let e;p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.deleteModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.purgeModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.apiKeyModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.rotateApiKeyModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.taxInfo=e.first)}},decls:65,vars:26,consts:[[1,"page-header"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[1,"secondary-header","border-0","mb-0"],[1,"secondary-header","text-danger","border-0","mb-0"],[1,"card","border-danger"],[1,"card-body"],["type","button",1,"btn","btn-outline-danger",3,"click"],["deleteOrganizationTemplate",""],["purgeOrganizationTemplate",""],["apiKeyTemplate",""],["rotateApiKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","businessName"],["id","businessName","type","text","name","BusinessName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","identifier"],["id","identifier","type","text","name","Identifier",1,"form-control",3,"ngModel","ngModelChange"],["dynamic","true","size","75","fontSize","35",3,"data"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["href","https://docs.bitwarden.com","target","_blank","rel","noopener"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["formTax",""]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n"),p.ɵɵtemplate(7,M,9,6,"div",1),p.ɵɵtext(8,"\n"),p.ɵɵtemplate(9,B,60,28,"form",2),p.ɵɵtext(10,"\n"),p.ɵɵtemplate(11,D,25,15,"ng-container",1),p.ɵɵtext(12,"\n"),p.ɵɵelementStart(13,"div",3),p.ɵɵtext(14,"\n "),p.ɵɵelementStart(15,"h1"),p.ɵɵtext(16),p.ɵɵpipe(17,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(18,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n"),p.ɵɵelementStart(20,"p"),p.ɵɵtext(21),p.ɵɵpipe(22,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n"),p.ɵɵtemplate(24,R,9,6,"div",1),p.ɵɵtext(25,"\n"),p.ɵɵtemplate(26,F,15,8,"form",2),p.ɵɵtext(27,"\n"),p.ɵɵelementStart(28,"div",4),p.ɵɵtext(29,"\n "),p.ɵɵelementStart(30,"h1"),p.ɵɵtext(31),p.ɵɵpipe(32,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(34,"\n"),p.ɵɵelementStart(35,"div",5),p.ɵɵtext(36,"\n "),p.ɵɵelementStart(37,"div",6),p.ɵɵtext(38,"\n "),p.ɵɵelementStart(39,"p"),p.ɵɵtext(40),p.ɵɵpipe(41,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(42,"\n "),p.ɵɵelementStart(43,"button",7),p.ɵɵlistener("click",(function(){return t.deleteOrganization()})),p.ɵɵtext(44),p.ɵɵpipe(45,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(46,"\n "),p.ɵɵelementStart(47,"button",7),p.ɵɵlistener("click",(function(){return t.purgeVault()})),p.ɵɵtext(48),p.ɵɵpipe(49,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(50,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(51,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(52,"\n"),p.ɵɵtemplate(53,U,0,0,"ng-template",null,8,p.ɵɵtemplateRefExtractor),p.ɵɵtext(55,"\n"),p.ɵɵtemplate(56,V,0,0,"ng-template",null,9,p.ɵɵtemplateRefExtractor),p.ɵɵtext(58,"\n"),p.ɵɵtemplate(59,N,0,0,"ng-template",null,10,p.ɵɵtemplateRefExtractor),p.ɵɵtext(61,"\n"),p.ɵɵtemplate(62,_,0,0,"ng-template",null,11,p.ɵɵtemplateRefExtractor),p.ɵɵtext(64,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,12,"myOrganization")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.org&&!t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.canUseApi),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(17,14,"taxInformation")),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(22,16,"taxInformationDesc")),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",!t.org||t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.org&&!t.loading),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(32,18,"dangerZone")),p.ɵɵadvance(9),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(41,20,"dangerZoneDesc")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(45,22,"deleteOrganization"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(49,24,"purgeVault"),"\n "))},directives:[b.NgIf,w.NgControlStatusGroup,w.NgForm,C.ApiActionDirective,w.DefaultValueAccessor,w.NgControlStatus,w.NgModel,I.AvatarComponent,E.TaxInfoComponent],pipes:[P.I18nPipe],encapsulation:2})},76137:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustSubscription=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(83828)),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(36631),p=n(96832),u=n(56820),m=n(17337),h=n(99729),v=n(57490);class g{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.seatPrice=0,this.interval="year",this.onAdjusted=new r.EventEmitter}ngOnInit(){this.limitSubscription=null!=this.maxAutoscaleSeats,this.newSeatCount=this.currentSeatCount,this.newMaxSeats=this.maxAutoscaleSeats}submit(){return i(this,void 0,void 0,(function*(){try{const e=this.newSeatCount-this.currentSeatCount,t=new o.OrganizationSubscriptionUpdateRequest(e,this.newMaxSeats);this.formPromise=this.apiService.postOrganizationUpdateSubscription(this.organizationId,t),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("subscriptionUpdated"))}catch(e){this.logService.error(e)}this.onAdjusted.emit()}))}limitSubscriptionChanged(){this.limitSubscription||(this.newMaxSeats=null)}get adjustedSeatTotal(){return this.newSeatCount*this.seatPrice}get maxSeatTotal(){return this.newMaxSeats*this.seatPrice}}t.AdjustSubscription=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["app-adjust-subscription"]],inputs:{organizationId:"organizationId",maxAutoscaleSeats:"maxAutoscaleSeats",currentSeatCount:"currentSeatCount",seatPrice:"seatPrice",interval:"interval"},outputs:{onAdjusted:"onAdjusted"},decls:82,vars:57,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"form-group","col-6"],["for","newSeatCount"],["id","newSeatCount","type","number","name","NewSeatCount","min","0","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-block","text-muted","mb-4"],[1,"row","mb-4"],[1,"form-group","col-sm"],[1,"form-check"],["id","limitSubscription","type","checkbox","name","LimitSubscription",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","limitSubscription"],[1,"d-block","text-muted"],[1,"row","mb-4",3,"hidden"],["for","maxAutoscaleSeats"],["id","maxAutoscaleSeats","type","number","name","MaxAutoscaleSeats","step","1",1,"form-control","col-6",3,"ngModel","min","required","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"showMethods"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",2),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",3),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"label",4),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"input",5),a.ɵɵlistener("ngModelChange",(function(e){return t.newSeatCount=e})),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"small",6),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"strong"),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵpipe(22,"currency"),a.ɵɵpipe(23,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"div",7),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"div",8),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",9),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"input",10),a.ɵɵlistener("ngModelChange",(function(e){return t.limitSubscription=e}))("change",(function(){return t.limitSubscriptionChanged()})),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"label",11),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementStart(40,"small",12),a.ɵɵtext(41),a.ɵɵpipe(42,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(45,"\n "),a.ɵɵelementStart(46,"div",13),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"div",8),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"label",14),a.ɵɵtext(51),a.ɵɵpipe(52,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(53,"\n "),a.ɵɵelementStart(54,"input",15),a.ɵɵlistener("ngModelChange",(function(e){return t.newMaxSeats=e})),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"small",12),a.ɵɵtext(57,"\n "),a.ɵɵelementStart(58,"strong"),a.ɵɵtext(59),a.ɵɵpipe(60,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(61),a.ɵɵpipe(62,"currency"),a.ɵɵpipe(63,"currency"),a.ɵɵpipe(64,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"button",16),a.ɵɵtext(69,"\n "),a.ɵɵelement(70,"i",17),a.ɵɵpipe(71,"i18n"),a.ɵɵtext(72,"\n "),a.ɵɵelementStart(73,"span"),a.ɵɵtext(74),a.ɵɵpipe(75,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(76,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(77,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(78,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(79,"\n"),a.ɵɵelement(80,"app-payment",18),a.ɵɵtext(81,"\n")),2&e){const e=a.ɵɵreference(1);a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,25,"subscriptionSeats")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.newSeatCount),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(19,27,"total"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate4(" ",t.newSeatCount||0," ×\n ",a.ɵɵpipeBind2(21,29,t.seatPrice,"$")," = ",a.ɵɵpipeBind2(22,32,t.adjustedSeatTotal,"$")," /\n ",a.ɵɵpipeBind1(23,35,t.interval),"\n "),a.ɵɵadvance(13),a.ɵɵproperty("ngModel",t.limitSubscription),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,37,"limitSubscription")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(42,39,"limitSubscriptionDesc")),a.ɵɵadvance(5),a.ɵɵproperty("hidden",!t.limitSubscription),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(52,41,"maxSeatLimit")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.newMaxSeats)("min",null==t.newSeatCount?1:t.newSeatCount)("required",t.limitSubscription),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(60,43,"maxSeatCost"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate4(" ",t.newMaxSeats||0," ×\n ",a.ɵɵpipeBind2(62,45,t.seatPrice,"$")," = ",a.ɵɵpipeBind2(63,48,t.maxSeatTotal,"$")," /\n ",a.ɵɵpipeBind1(64,51,t.interval),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(71,53,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(75,55,"save")),a.ɵɵadvance(6),a.ɵɵproperty("showMethods",!1)}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,p.MinValidator,p.NumberValueAccessor,p.DefaultValueAccessor,p.RequiredValidator,p.NgControlStatus,p.NgModel,p.CheckboxControlValueAccessor,m.PaymentComponent],pipes:[h.I18nPipe,v.CurrencyPipe],encapsulation:2})},73738:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncApiKeyComponent=void 0;n(91674),n(51554),n(73828),n(57055);const r=n(43497),o=n(32137),a=n(32621),s=n(57055),l=n(91674),c=n(73828),d=n(51554),p=n(96832),u=n(56820),m=n(8863),h=n(57490),v=n(4158),g=n(51626),f=n(99729);function y(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"app-user-verification",15),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().masterPassword=t})),a.ɵɵtext(1,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("ngModel",e.masterPassword)}}function x(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"app-callout",16),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"rotateBillingSyncTokenTitle")),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(8,4,"rotateBillingSyncTokenWarning"),"\n "))}function S(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",25),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"b",26),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5),a.ɵɵpipe(6,"date"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(3),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(4,2,"lastSync"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(6,4,e.lastSyncDate,"medium"),"\n ")}}function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",27),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",28),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(4,1,1===e.daysBetween?"awaitingSyncSingular":"awaitingSyncPlural",e.daysBetween),"\n ")}}function w(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"label",17),a.ɵɵtext(7,"Billing Sync Key"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",18),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"input",19),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().clientSecret=t})),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"div",20),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"button",21),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().copy()})),a.ɵɵpipe(16,"i18n"),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"i",22),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵtemplate(23,S,7,7,"div",23),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,b,5,4,"div",24),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,5,"copyPasteBillingSync")),a.ɵɵadvance(8),a.ɵɵproperty("ngModel",e.clientSecret),a.ɵɵadvance(4),a.ɵɵproperty("appA11yTitle",a.ɵɵpipeBind1(16,7,"copy")),a.ɵɵadvance(8),a.ɵɵproperty("ngIf",e.showLastSyncText),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.showAwaitingSyncText)}}function C(e,t){1&e&&(a.ɵɵelement(0,"i",31),a.ɵɵpipe(1,"i18n")),2&e&&a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,1,"loading"))}function I(e,t){if(1&e&&(a.ɵɵelementStart(0,"button",29),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,C,2,3,"i",30),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"span"),a.ɵɵtext(5),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(),t=a.ɵɵreference(5);a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",e.submitButtonText,"\n ")}}function E(e,t){1&e&&(a.ɵɵelementStart(0,"button",32),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"close"),"\n "))}function P(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",33),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().cancelRotate()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function O(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",33),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().rotateToken()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"rotateToken"),"\n "))}class k{constructor(e,t,n,i){this.userVerificationService=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.lastSyncDate=null}copy(){this.platformUtilsService.copyToClipboard(this.clientSecret)}submit(){return i(this,void 0,void 0,(function*(){if(this.showRotateScreen){this.formPromise=this.userVerificationService.buildRequest(this.masterPassword,o.OrganizationApiKeyRequest).then((e=>(e.type=r.OrganizationApiKeyType.BillingSync,this.apiService.postOrganizationRotateApiKey(this.organizationId,e))));const e=yield this.formPromise;yield this.load(e),this.showRotateScreen=!1,this.platformUtilsService.showToast("success",null,this.i18nService.t("billingSyncApiKeyRotated"))}else{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword,o.OrganizationApiKeyRequest).then((e=>(e.type=r.OrganizationApiKeyType.BillingSync,this.apiService.postOrganizationApiKey(this.organizationId,e))));const e=yield this.formPromise;yield this.load(e)}}))}load(e){return i(this,void 0,void 0,(function*(){this.clientSecret=e.apiKey,this.keyRevisionDate=e.revisionDate,this.hasBillingToken=!0;const t=yield this.apiService.getSponsorshipSyncStatus(this.organizationId);this.lastSyncDate=t.lastSyncDate}))}cancelRotate(){this.showRotateScreen=!1}rotateToken(){this.showRotateScreen=!0}dayDiff(e,t){const n=Math.abs(t.getTime()-e.getTime());return Math.round(n/864e5)}get submitButtonText(){return this.showRotateScreen?this.i18nService.t("rotateToken"):this.i18nService.t(this.hasBillingToken?"continue":"generateToken")}get showLastSyncText(){return this.lastSyncDate&&this.lastSyncDate>this.keyRevisionDate}get showAwaitingSyncText(){return this.lastSyncDate&&this.lastSyncDate<=this.keyRevisionDate}get daysBetween(){return this.dayDiff(this.keyRevisionDate,new Date)}}t.BillingSyncApiKeyComponent=k,k.ɵfac=function(e){return new(e||k)(a.ɵɵdirectiveInject(s.UserVerificationService),a.ɵɵdirectiveInject(l.ApiService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.I18nService))},k.ɵcmp=a.ɵɵdefineComponent({type:k,selectors:[["app-billing-sync-api-key"]],decls:44,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","billingSyncApiKeyTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","billingSyncApiKeyTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","class","btn btn-outline-secondary","data-dismiss","modal",4,"ngIf"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],["type","warning"],["for","clientSecret"],[1,"input-group"],["id","clientSecret","type","text","name","clientSecret","disabled","",1,"form-control","text-monospace",3,"ngModel","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["class","small text-muted mt-2",4,"ngIf"],["class","small text-danger mt-2",4,"ngIf"],[1,"small","text-muted","mt-2"],[1,"font-weight-semibold"],[1,"small","text-danger","mt-2"],[1,"bwi","bwi-error"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["class","bwi bwi-spinner bwi-spin",3,"title",4,"ngIf"],[1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"button",6),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span",7),a.ɵɵtext(17,"×"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"div",8),a.ɵɵtext(22,"\n "),a.ɵɵtemplate(23,y,2,1,"app-user-verification",9),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,x,10,6,"ng-container",10),a.ɵɵtext(26,"\n\n "),a.ɵɵtemplate(27,w,27,9,"div",10),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",11),a.ɵɵtext(31,"\n "),a.ɵɵtemplate(32,I,7,3,"button",12),a.ɵɵtext(33,"\n "),a.ɵɵtemplate(34,E,3,3,"button",13),a.ɵɵtext(35,"\n "),a.ɵɵtemplate(36,P,3,3,"button",14),a.ɵɵtext(37,"\n "),a.ɵɵtemplate(38,O,3,3,"button",14),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n")),2&e&&(a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,10,t.hasBillingToken?"viewBillingSyncToken":"generateBillingSyncToken"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(14,12,"close")),a.ɵɵadvance(10),a.ɵɵproperty("ngIf",!t.clientSecret),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&!t.showRotateScreen),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!t.clientSecret||t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&!t.showRotateScreen))},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.NgIf,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel,g.CalloutComponent],pipes:[f.I18nPipe,h.DatePipe],encapsulation:2})},61857:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePlanComponent=void 0;const r=n(32621),o=(n(36631),n(47937)),a=n(96066),s=n(32621),l=n(36631),c=n(8863),d=n(28360),p=n(99729);class u{constructor(e){this.logService=e,this.onChanged=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.defaultUpgradePlan=o.PlanType.FamiliesAnnually,this.defaultUpgradeProduct=a.ProductType.Families}submit(){return i(this,void 0,void 0,(function*(){try{this.onChanged.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}}t.ChangePlanComponent=u,u.ɵfac=function(e){return new(e||u)(s.ɵɵdirectiveInject(l.LogService))},u.ɵcmp=s.ɵɵdefineComponent({type:u,selectors:[["app-change-plan"]],inputs:{organizationId:"organizationId"},outputs:{onChanged:"onChanged",onCanceled:"onCanceled"},decls:24,vars:14,consts:[[1,"card","card-org-plans"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"mb-0"],[3,"showFree","showCancel","plan","product","organizationId","onCanceled"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"button",2),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(5,"i18n"),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"span",3),s.ɵɵtext(8,"×"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"h2",4),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"p",5),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"app-organization-plans",6),s.ɵɵlistener("onCanceled",(function(){return t.cancel()})),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(5,8,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,10,"changeBillingPlan")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,12,"changeBillingPlanUpgrade")),s.ɵɵadvance(3),s.ɵɵproperty("showFree",!1)("showCancel",!0)("plan",t.defaultUpgradePlan)("product",t.defaultUpgradeProduct)("organizationId",t.organizationId))},directives:[c.A11yTitleDirective,d.OrganizationPlansComponent],pipes:[p.I18nPipe],encapsulation:2})},5092:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteOrganizationComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(51554),n(36631),n(63513),n(73828),n(57055),n(32773)),a=n(82769),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(57055),u=n(36631),m=n(45330),h=n(63513),v=n(57490),g=n(96832),f=n(56820),y=n(8863),x=n(51626),S=n(4158),b=n(99729);function w(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"orgCreatedSponsorshipInvalid"),"\n "))}function C(e,t){if(1&e&&(s.ɵɵelementStart(0,"li"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(1),s.ɵɵtextInterpolate2("\n ",e.count," ",s.ɵɵpipeBind1(2,2,e.localizationKey),"\n ")}}function I(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementStart(3,"ul"),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,C,3,4,"li",20),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,3,"deletingOrganizationContentWarning",e.organizationName),"\n "),s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.organizationContentSummary.itemCountByType),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,6,"deletingOrganizationActiveUserAccountsWarning"),"\n ")}}function E(e,t){if(1&e&&(s.ɵɵtext(0,"\n "),s.ɵɵtemplate(1,I,9,8,"ng-container",19),s.ɵɵtext(2,"\n ")),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵproperty("ngIf",e.organizationContentSummary.totalItemCount>0)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",3,4),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",5),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"h2",6),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"button",7),s.ɵɵpipe(10,"i18n"),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"span",8),s.ɵɵtext(13,"×"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",9),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"app-callout",10),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"p",11),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,w,3,3,"ng-container",12),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,E,3,1,"ng-template",null,13,s.ɵɵtemplateRefExtractor),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"app-user-verification",14),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().masterPassword=t})),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"div",15),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"button",16),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"i",17),s.ɵɵpipe(40,"i18n"),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"span"),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"button",18),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵreference(28),n=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",n.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,11,"deleteOrganization")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(10,13,"close")),s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(21,15,"deletingOrganizationIsPermanentWarning",n.organizationName)),s.ɵɵadvance(5),s.ɵɵproperty("ngIf","InvalidFamiliesForEnterprise"===n.deleteOrganizationRequestType)("ngIfElse",t),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",n.masterPassword),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(40,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,20,"deleteOrganization")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(49,22,"close"),"\n ")}}class O{constructor(e,t){this.singular=e,this.plural=t}getKey(e){return 1==e?this.singular:this.plural}}class k{constructor(e,t){this.count=e,this.localizationKeyOptions=t}get localizationKey(){return this.localizationKeyOptions.getKey(this.count)}}class A{constructor(){this.totalItemCount=0,this.itemCountByType=[]}}class T{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.logService=o,this.cipherService=a,this.organizationService=s,this.deleteOrganizationRequestType="RegularDelete",this.organizationContentSummary=new A,this.onSuccess=new r.EventEmitter}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.deleteOrganization(this.organizationId,e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("organizationDeleted"),this.i18nService.t("organizationDeletedDesc")),this.onSuccess.emit()}catch(e){this.logService.error(e)}}))}load(){return i(this,void 0,void 0,(function*(){this.organizationName=(yield this.organizationService.get(this.organizationId)).name,this.organizationContentSummary=yield this.buildOrganizationContentSummary(),this.loaded=!0}))}buildOrganizationContentSummary(){return i(this,void 0,void 0,(function*(){const e=new A,t=(yield this.cipherService.getAllFromApiForOrganization(this.organizationId)).filter((e=>null==e.deletedDate));if(t.length<1)return e;e.totalItemCount=t.length;for(const n of a.Utils.iterateEnum(o.CipherType)){const i=this.getOrganizationItemCountByType(t,n);i>0&&e.itemCountByType.push(new k(i,this.getOrganizationItemLocalizationKeysByType(o.CipherType[n])))}return e}))}getOrganizationItemCountByType(e,t){return e.filter((e=>e.type==t)).length}getOrganizationItemLocalizationKeysByType(e){return new O(`type${e}`,`type${e}Plural`)}}t.DeleteOrganizationComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.UserVerificationService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.CipherService),s.ɵɵdirectiveInject(h.OrganizationService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-delete-organization"]],outputs:{onSuccess:"onSuccess"},decls:8,vars:1,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteOrganizationTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["class","modal-content","ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteOrganizationTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["id","organizationDeleteDescription"],[4,"ngIf","ngIfElse"],["regularDelete",""],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[4,"ngIf"],[4,"ngFor","ngForOf"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,P,52,24,"form",2),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loaded))},directives:[v.NgIf,g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.A11yTitleDirective,x.CalloutComponent,S.UserVerificationComponent,g.DefaultValueAccessor,g.NgControlStatus,g.NgModel,v.NgForOf],pipes:[b.I18nPipe],encapsulation:2})},24547:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DownloadLicenseComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(73828),n(32621)),a=n(91674),s=n(73828),l=n(36631),c=n(96832),d=n(56820),p=n(8863),u=n(99729);class m{constructor(e,t,n){this.apiService=e,this.platformUtilsService=t,this.logService=n,this.onDownloaded=new r.EventEmitter,this.onCanceled=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.installationId&&""!==this.installationId)try{this.formPromise=this.apiService.getOrganizationLicense(this.organizationId,this.installationId);const e=yield this.formPromise,t=JSON.stringify(e,null,2);this.platformUtilsService.saveFile(window,t,null,"bitwarden_organization_license.json"),this.onDownloaded.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}}t.DownloadLicenseComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.LogService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-download-license"]],inputs:{organizationId:"organizationId"},outputs:{onDownloaded:"onDownloaded",onCanceled:"onCanceled"},decls:53,vars:24,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"row"],[1,"form-group","col-6"],[1,"d-flex"],["for","installationId"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/licensing-on-premise/#organization-account-sharing",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","installationId","type","text","name","InstallationId","required","",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"button",3),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵpipe(6,"i18n"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"span",4),o.ɵɵtext(9,"×"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"h3",5),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",7),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",9),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"a",10),o.ɵɵpipe(27,"i18n"),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"i",11),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.installationId=e})),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"button",13),o.ɵɵtext(38,"\n "),o.ɵɵelement(39,"i",14),o.ɵɵpipe(40,"i18n"),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"span"),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"button",15),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵtext(48),o.ɵɵpipe(49,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(6,10,"cancel")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,12,"downloadLicense")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,14,"enterInstallationId")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(27,16,"learnMore")),o.ɵɵadvance(7),o.ɵɵproperty("ngModel",t.installationId),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(40,18,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(44,20,"submit")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(49,22,"cancel"),"\n ")}},directives:[c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective,c.DefaultValueAccessor,c.RequiredValidator,c.NgControlStatus,c.NgModel],pipes:[u.I18nPipe],encapsulation:2})},75051:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageSubscriptionHiddenComponent=void 0;const i=n(32621);class r{}t.ImageSubscriptionHiddenComponent=r,r.ɵfac=function(e){return new(e||r)},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["app-image-org-subscription-hidden"]],decls:38,vars:0,consts:[["width","216","height","231","viewBox","0 0 216 231","fill","none","xmlns","http://www.w3.org/2000/svg"],["d","M133.356 85.6618C133.136 85.43 132.871 85.2457 132.577 85.1198C132.283 84.9939 131.968 84.93 131.648 84.9318H87.8482C87.5289 84.93 87.2113 84.9939 86.9175 85.1198C86.6237 85.2457 86.359 85.43 86.14 85.6618C85.9083 85.8808 85.7239 86.1473 85.598 86.4411C85.4721 86.7349 85.4082 87.0506 85.41 87.37V116.57C85.4192 118.793 85.8499 120.994 86.6802 123.056C87.4705 125.091 88.5326 127.011 89.8375 128.761C91.1789 130.515 92.6808 132.137 94.3233 133.612C95.8472 135.01 97.4532 136.318 99.1304 137.528C100.59 138.565 102.123 139.547 103.729 140.474C105.335 141.401 106.469 142.027 107.131 142.354C107.799 142.682 108.339 142.941 108.741 143.113C109.055 143.264 109.4 143.339 109.748 143.332C110.091 143.337 110.431 143.257 110.737 143.102C111.146 142.923 111.679 142.671 112.354 142.343C113.03 142.014 114.179 141.386 115.756 140.463C117.333 139.539 118.884 138.554 120.355 137.517C122.034 136.306 123.642 134.999 125.169 133.601C126.814 132.128 128.316 130.504 129.655 128.75C130.958 126.998 132.021 125.08 132.813 123.045C133.645 120.983 134.075 118.782 134.083 116.559V87.3591C134.085 87.0415 134.021 86.7276 133.895 86.4356C133.769 86.1436 133.586 85.8808 133.356 85.6618ZM127.71 116.836C127.71 127.421 109.748 136.514 109.748 136.514V91.1879H127.71V116.836Z","fill","var(--color-secondary-700)"],["d","M24.6216 122.3C24.7144 123.4 25.6819 124.217 26.7825 124.125C27.8832 124.032 28.7002 123.064 28.6074 121.964L24.6216 122.3ZM151.501 45.7445C152.57 45.4679 153.213 44.3768 152.936 43.3074L148.429 25.8809C148.152 24.8115 147.061 24.1688 145.992 24.4454C144.922 24.722 144.28 25.8131 144.556 26.8825L148.563 42.3728L133.073 46.3793C132.003 46.6559 131.361 47.747 131.637 48.8164C131.914 49.8858 133.005 50.5285 134.074 50.2519L151.501 45.7445ZM28.6074 121.964C26.6788 99.0874 34.4658 75.5543 51.9661 58.054L49.1377 55.2256C30.7695 73.5938 22.5982 98.2999 24.6216 122.3L28.6074 121.964ZM51.9661 58.054C78.5404 31.4797 119.036 27.3026 149.985 45.5315L152.015 42.0849C119.534 22.9534 77.0327 27.3306 49.1377 55.2256L51.9661 58.054Z","fill","var(--color-secondary-700)"],["d","M67.4747 185.062C66.4089 185.352 65.7801 186.451 66.0701 187.517L70.797 204.885C71.0871 205.951 72.1862 206.58 73.252 206.29C74.3179 205.999 74.9467 204.9 74.6567 203.834L70.455 188.396L85.8934 184.194C86.9592 183.904 87.5881 182.805 87.298 181.739C87.008 180.674 85.9088 180.045 84.843 180.335L67.4747 185.062ZM192.478 100.283C192.286 99.1952 191.248 98.4697 190.16 98.6625C189.072 98.8552 188.347 99.8931 188.54 100.981L192.478 100.283ZM166.138 172.225C139.813 198.55 99.8271 202.897 68.9932 185.255L67.0068 188.727C99.3669 207.242 141.333 202.687 168.966 175.054L166.138 172.225ZM188.54 100.981C192.985 126.07 185.516 152.847 166.138 172.225L168.966 175.054C189.307 154.713 197.142 126.603 192.478 100.283L188.54 100.981Z","fill","var(--color-secondary-700)"],["d","M37.726 108.132C39.283 92.1931 46.1655 76.6765 58.3734 64.4686C75.2893 47.5527 98.5583 40.8618 120.5 44.396","stroke","var(--color-secondary-700)","stroke-width","2","stroke-linecap","round"],["d","M180.595 119.132C179.653 136.119 172.693 152.834 159.717 165.811C144.44 181.088 123.982 188.025 104 186.623","stroke","var(--color-secondary-700)","stroke-width","2","stroke-linecap","round"],["x","153.5","y","56.1317","width","49","height","34","rx","2.5","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M153.5 63.6317V63.6317C153.5 66.9454 156.186 69.6317 159.5 69.6317H172.509M202.5 63.6317V63.6317C202.5 66.9454 199.814 69.6317 196.5 69.6317H183.491","stroke","var(--color-secondary-700)","stroke-width","3"],["id","path-8-inside-1_1000_26057","fill","white"],["x","172","y","65.6317","width","12","height","9","rx","1.25"],["x","172","y","65.6317","width","12","height","9","rx","1.25","stroke","var(--color-secondary-700)","stroke-width","6","mask","url(#path-8-inside-1_1000_26057)"],["d","M187 54.6317C187 54.6317 187 53.6317 187 52.6317C187 51.6317 186.053 50.6317 185.105 50.6317C184.158 50.6317 171.842 50.6317 170.895 50.6317C169.947 50.6317 169 51.6317 169 52.6317C169 53.6317 169 54.6317 169 54.6317","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","48","cy","141","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M64.9935 168.5H64.9126H64.8318H64.7512H64.6708H64.5905H64.5104H64.4304H64.3506H64.2709H64.1914H64.1121H64.0329H63.9538H63.8749H63.7962H63.7176H63.6392H63.5609H63.4828H63.4048H63.3269H63.2492H63.1717H63.0943H63.017H62.9399H62.8629H62.7861H62.7094H62.6329H62.5565H62.4802H62.4041H62.3281H62.2523H62.1766H62.101H62.0256H61.9503H61.8751H61.8001H61.7252H61.6504H61.5758H61.5013H61.4269H61.3527H61.2786H61.2046H61.1308H61.0571H60.9835H60.91H60.8367H60.7635H60.6904H60.6175H60.5446H60.4719H60.3993H60.3269H60.2545H60.1823H60.1102H60.0382H59.9664H59.8946H59.823H59.7515H59.6801H59.6088H59.5376H59.4666H59.3956H59.3248H59.2541H59.1835H59.113H59.0426H58.9724H58.9022H58.8322H58.7622H58.6924H58.6226H58.553H58.4835H58.4141H58.3448H58.2756H58.2065H58.1375H58.0686H57.9998H57.9311H57.8625H57.794H57.7256H57.6572H57.589H57.5209H57.4529H57.385H57.3172H57.2494H57.1818H57.1142H57.0468H56.9794H56.9121H56.8449H56.7779H56.7108H56.6439H56.5771H56.5103H56.4437H56.3771H56.3106H56.2442H56.1779H56.1117H56.0455H55.9794H55.9134H55.8475H55.7817H55.7159H55.6502H55.5846H55.5191H55.4537H55.3883H55.323H55.2578H55.1926H55.1275H55.0625H54.9976H54.9328H54.868H54.8032H54.7386H54.674H54.6095H54.5451H54.4807H54.4164H54.3521H54.2879H54.2238H54.1598H54.0958H54.0318H53.968H53.9042H53.8404H53.7767H53.7131H53.6495H53.586H53.5226H53.4592H53.3958H53.3325H53.2693H53.2061H53.143H53.0799H53.0169H52.9539H52.891H52.8281H52.7653H52.7025H52.6398H52.5771H52.5145H52.4519H52.3894H52.3269H52.2645H52.202H52.1397H52.0774H52.0151H51.9528H51.8907H51.8285H51.7664H51.7043H51.6423H51.5803H51.5183H51.4564H51.3945H51.3326H51.2708H51.209H51.1472H51.0855H51.0238H50.9621H50.9005H50.8389H50.7773H50.7157H50.6542H50.5927H50.5312H50.4698H50.4084H50.347H50.2856H50.2243H50.1629H50.1016H50.0404H49.9791H49.9178H49.8566H49.7954H49.7342H49.6731H49.6119H49.5508H49.4896H49.4285H49.3674H49.3064H49.2453H49.1842H49.1232H49.0622H49.0011H48.9401H48.8791H48.8181H48.7571H48.6962H48.6352H48.5742H48.5133H48.4523H48.3913H48.3304H48.2694H48.2085H48.1475H48.0866H48.0257H47.9647H47.9038H47.8428H47.7819H47.7209H47.6599H47.599H47.538H47.477H47.416H47.3551H47.2941H47.2331H47.172H47.111H47.05H46.9889H46.9279H46.8668H46.8057H46.7446H46.6835H46.6224H46.5612H46.5001H46.4389H46.3777H46.3165H46.2553H46.194H46.1328H46.0715H46.0102H45.9489H45.8875H45.8261H45.7647H45.7033H45.6418H45.5804H45.5189H45.4573H45.3958H45.3342H45.2726H45.2109H45.1493H45.0876H45.0258H44.9641H44.9023H44.8404H44.7786H44.7166H44.6547H44.5927H44.5307H44.4687H44.4066H44.3445H44.2823H44.2201H44.1578H44.0956H44.0332H43.9709H43.9084H43.846H43.7835H43.7209H43.6583H43.5957H43.533H43.4703H43.4075H43.3447H43.2818H43.2189H43.1559H43.0929H43.0298H42.9666H42.9034H42.8402H42.7769H42.7135H42.6501H42.5867H42.5231H42.4596H42.3959H42.3322H42.2685H42.2046H42.1408H42.0768H42.0128H41.9487H41.8846H41.8204H41.7562H41.6918H41.6274H41.563H41.4985H41.4339H41.3692H41.3045H41.2397H41.1748H41.1098H41.0448H40.9797H40.9146H40.8493H40.784H40.7186H40.6532H40.5876H40.522H40.4563H40.3905H40.3247H40.2588H40.1928H40.1267H40.0605H39.9942H39.9279H39.8615H39.795H39.7284H39.6617H39.5949H39.5281H39.4611H39.3941H39.327H39.2598H39.1925H39.1251H39.0576H38.9901H38.9224H38.8547H38.7868H38.7189H38.6508H38.5827H38.5145H38.4461H38.3777H38.3092H38.2406H38.1719H38.103H38.0341H37.9651H37.896H37.8267H37.7574H37.688H37.6184H37.5488H37.479H37.4092H37.3392H37.2691H37.199H37.1287H37.0583H36.9878H36.9171H36.8464H36.7755H36.7046H36.6335H36.5623H36.491H36.4196H36.3481H36.2764H36.2046H36.1328H36.0607H35.9886H35.9164H35.844H35.7715H35.6989H35.6262H35.5533H35.4803H35.4072H35.334H35.2606H35.1872H35.1135H35.0398H34.9659H34.8919H34.8178H34.7436H34.6692H34.5947H34.52H34.4452H34.3703H34.2952H34.2201H34.1447H34.0693H33.9937H33.9179H33.8421H33.7661H33.6899H33.6136H33.5372H33.4606H33.3839H33.3071H33.2301H33.1529H33.0756H32.9982H32.9206H32.8429H32.765H32.687H32.6088H32.5305H32.452H32.3734H32.2946H32.2157H32.1367H32.0574H31.978H31.8985H31.8188H31.739H31.659H31.5788H31.4985H31.418H31.3374H31.2566H31.1757H31.0946H31.0133H30.9318H30.8503H30.7685H30.6866H30.6045H30.5222H30.4398H30.3572H30.2745H30.1915C30.0489 168.5 29.9693 168.466 29.9164 168.433C29.8553 168.394 29.7779 168.322 29.702 168.192C29.5361 167.906 29.4608 167.48 29.5197 167.111C30.9235 158.322 38.6474 151.574 47.9925 151.574C57.3375 151.574 65.0615 158.322 66.4652 167.111C66.5751 167.799 66.4037 168.054 66.3124 168.149C66.1888 168.278 65.8364 168.5 64.9935 168.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","20","cy","141","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M36.9935 168.5H36.9126H36.8318H36.7512H36.6708H36.5905H36.5104H36.4304H36.3506H36.2709H36.1914H36.1121H36.0329H35.9538H35.8749H35.7962H35.7176H35.6392H35.5609H35.4828H35.4048H35.3269H35.2492H35.1717H35.0943H35.017H34.9399H34.8629H34.7861H34.7094H34.6329H34.5565H34.4802H34.4041H34.3281H34.2523H34.1766H34.101H34.0256H33.9503H33.8751H33.8001H33.7252H33.6504H33.5758H33.5013H33.4269H33.3527H33.2786H33.2046H33.1308H33.0571H32.9835H32.91H32.8367H32.7635H32.6904H32.6175H32.5446H32.4719H32.3993H32.3269H32.2545H32.1823H32.1102H32.0382H31.9664H31.8946H31.823H31.7515H31.6801H31.6088H31.5376H31.4666H31.3956H31.3248H31.2541H31.1835H31.113H31.0426H30.9724H30.9022H30.8322H30.7622H30.6924H30.6226H30.553H30.4835H30.4141H30.3448H30.2756H30.2065H30.1375H30.0686H29.9998H29.9311H29.8625H29.794H29.7256H29.6572H29.589H29.5209H29.4529H29.385H29.3172H29.2494H29.1818H29.1142H29.0468H28.9794H28.9121H28.8449H28.7779H28.7108H28.6439H28.5771H28.5103H28.4437H28.3771H28.3106H28.2442H28.1779H28.1117H28.0455H27.9794H27.9134H27.8475H27.7817H27.7159H27.6502H27.5846H27.5191H27.4537H27.3883H27.323H27.2578H27.1926H27.1275H27.0625H26.9976H26.9328H26.868H26.8032H26.7386H26.674H26.6095H26.5451H26.4807H26.4164H26.3521H26.2879H26.2238H26.1598H26.0958H26.0318H25.968H25.9042H25.8404H25.7767H25.7131H25.6495H25.586H25.5226H25.4592H25.3958H25.3325H25.2693H25.2061H25.143H25.0799H25.0169H24.9539H24.891H24.8281H24.7653H24.7025H24.6398H24.5771H24.5145H24.4519H24.3894H24.3269H24.2645H24.202H24.1397H24.0774H24.0151H23.9528H23.8907H23.8285H23.7664H23.7043H23.6423H23.5803H23.5183H23.4564H23.3945H23.3326H23.2708H23.209H23.1472H23.0855H23.0238H22.9621H22.9005H22.8389H22.7773H22.7157H22.6542H22.5927H22.5312H22.4698H22.4084H22.347H22.2856H22.2243H22.1629H22.1016H22.0404H21.9791H21.9178H21.8566H21.7954H21.7342H21.6731H21.6119H21.5508H21.4896H21.4285H21.3674H21.3064H21.2453H21.1842H21.1232H21.0622H21.0011H20.9401H20.8791H20.8181H20.7571H20.6962H20.6352H20.5742H20.5133H20.4523H20.3913H20.3304H20.2694H20.2085H20.1475H20.0866H20.0257H19.9647H19.9038H19.8428H19.7819H19.7209H19.6599H19.599H19.538H19.477H19.416H19.3551H19.2941H19.2331H19.172H19.111H19.05H18.9889H18.9279H18.8668H18.8057H18.7446H18.6835H18.6224H18.5612H18.5001H18.4389H18.3777H18.3165H18.2553H18.194H18.1328H18.0715H18.0102H17.9489H17.8875H17.8261H17.7647H17.7033H17.6418H17.5804H17.5189H17.4573H17.3958H17.3342H17.2726H17.2109H17.1493H17.0876H17.0258H16.9641H16.9023H16.8404H16.7786H16.7166H16.6547H16.5927H16.5307H16.4687H16.4066H16.3445H16.2823H16.2201H16.1578H16.0956H16.0332H15.9709H15.9084H15.846H15.7835H15.7209H15.6583H15.5957H15.533H15.4703H15.4075H15.3447H15.2818H15.2189H15.1559H15.0929H15.0298H14.9666H14.9034H14.8402H14.7769H14.7135H14.6501H14.5867H14.5231H14.4596H14.3959H14.3322H14.2685H14.2046H14.1408H14.0768H14.0128H13.9487H13.8846H13.8204H13.7562H13.6918H13.6274H13.563H13.4985H13.4339H13.3692H13.3045H13.2397H13.1748H13.1098H13.0448H12.9797H12.9146H12.8493H12.784H12.7186H12.6532H12.5876H12.522H12.4563H12.3905H12.3247H12.2588H12.1928H12.1267H12.0605H11.9942H11.9279H11.8615H11.795H11.7284H11.6617H11.5949H11.5281H11.4611H11.3941H11.327H11.2598H11.1925H11.1251H11.0576H10.9901H10.9224H10.8547H10.7868H10.7189H10.6508H10.5827H10.5145H10.4461H10.3777H10.3092H10.2406H10.1719H10.103H10.0341H9.9651H9.89597H9.82674H9.75741H9.68798H9.61843H9.54879H9.47904H9.40918H9.33921H9.26914H9.19896H9.12867H9.05826H8.98775H8.91713H8.8464H8.77555H8.70459H8.63351H8.56232H8.49102H8.4196H8.34807H8.27641H8.20464H8.13276H8.06075H7.98862H7.91638H7.84401H7.77152H7.69891H7.62617H7.55332H7.48034H7.40723H7.334H7.26064H7.18716H7.11355H7.03981H6.96594H6.89195H6.81782H6.74356H6.66918H6.59466H6.52H6.44522H6.3703H6.29525H6.22006H6.14474H6.06928H5.99368H5.91795H5.84208H5.76607H5.68992H5.61363H5.5372H5.46062H5.38391H5.30705H5.23005H5.15291H5.07562H4.99819H4.92061H4.84288H4.76501H4.68699H4.60882H4.5305H4.45203H4.37342H4.29465H4.21573H4.13665H4.05743H3.97805H3.89851H3.81882H3.73898H3.65898H3.57882H3.49851H3.41804H3.33741H3.25662H3.17566H3.09455H3.01328H2.93185H2.85025H2.76849H2.68657H2.60448H2.52223H2.43981H2.35722H2.27447H2.19155C2.04893 168.5 1.96927 168.466 1.91645 168.433C1.85532 168.394 1.77792 168.322 1.702 168.192C1.53613 167.906 1.46078 167.48 1.51975 167.111C2.92347 158.322 10.6474 151.574 19.9925 151.574C29.3375 151.574 37.0615 158.322 38.4652 167.111C38.5751 167.799 38.4037 168.054 38.3124 168.149C38.1888 168.278 37.8364 168.5 36.9935 168.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","34","cy","154","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M50.9935 181.5H50.9126H50.8318H50.7512H50.6708H50.5905H50.5104H50.4304H50.3506H50.2709H50.1914H50.1121H50.0329H49.9538H49.8749H49.7962H49.7176H49.6392H49.5609H49.4828H49.4048H49.3269H49.2492H49.1717H49.0943H49.017H48.9399H48.8629H48.7861H48.7094H48.6329H48.5565H48.4802H48.4041H48.3281H48.2523H48.1766H48.101H48.0256H47.9503H47.8751H47.8001H47.7252H47.6504H47.5758H47.5013H47.4269H47.3527H47.2786H47.2046H47.1308H47.0571H46.9835H46.91H46.8367H46.7635H46.6904H46.6175H46.5446H46.4719H46.3993H46.3269H46.2545H46.1823H46.1102H46.0382H45.9664H45.8946H45.823H45.7515H45.6801H45.6088H45.5376H45.4666H45.3956H45.3248H45.2541H45.1835H45.113H45.0426H44.9724H44.9022H44.8322H44.7622H44.6924H44.6226H44.553H44.4835H44.4141H44.3448H44.2756H44.2065H44.1375H44.0686H43.9998H43.9311H43.8625H43.794H43.7256H43.6572H43.589H43.5209H43.4529H43.385H43.3172H43.2494H43.1818H43.1142H43.0468H42.9794H42.9121H42.8449H42.7779H42.7108H42.6439H42.5771H42.5103H42.4437H42.3771H42.3106H42.2442H42.1779H42.1117H42.0455H41.9794H41.9134H41.8475H41.7817H41.7159H41.6502H41.5846H41.5191H41.4537H41.3883H41.323H41.2578H41.1926H41.1275H41.0625H40.9976H40.9328H40.868H40.8032H40.7386H40.674H40.6095H40.5451H40.4807H40.4164H40.3521H40.2879H40.2238H40.1598H40.0958H40.0318H39.968H39.9042H39.8404H39.7767H39.7131H39.6495H39.586H39.5226H39.4592H39.3958H39.3325H39.2693H39.2061H39.143H39.0799H39.0169H38.9539H38.891H38.8281H38.7653H38.7025H38.6398H38.5771H38.5145H38.4519H38.3894H38.3269H38.2645H38.202H38.1397H38.0774H38.0151H37.9528H37.8907H37.8285H37.7664H37.7043H37.6423H37.5803H37.5183H37.4564H37.3945H37.3326H37.2708H37.209H37.1472H37.0855H37.0238H36.9621H36.9005H36.8389H36.7773H36.7157H36.6542H36.5927H36.5312H36.4698H36.4084H36.347H36.2856H36.2243H36.1629H36.1016H36.0404H35.9791H35.9178H35.8566H35.7954H35.7342H35.6731H35.6119H35.5508H35.4896H35.4285H35.3674H35.3064H35.2453H35.1842H35.1232H35.0622H35.0011H34.9401H34.8791H34.8181H34.7571H34.6962H34.6352H34.5742H34.5133H34.4523H34.3913H34.3304H34.2694H34.2085H34.1475H34.0866H34.0257H33.9647H33.9038H33.8428H33.7819H33.7209H33.6599H33.599H33.538H33.477H33.416H33.3551H33.2941H33.2331H33.172H33.111H33.05H32.9889H32.9279H32.8668H32.8057H32.7446H32.6835H32.6224H32.5612H32.5001H32.4389H32.3777H32.3165H32.2553H32.194H32.1328H32.0715H32.0102H31.9489H31.8875H31.8261H31.7647H31.7033H31.6418H31.5804H31.5189H31.4573H31.3958H31.3342H31.2726H31.2109H31.1493H31.0876H31.0258H30.9641H30.9023H30.8404H30.7786H30.7166H30.6547H30.5927H30.5307H30.4687H30.4066H30.3445H30.2823H30.2201H30.1578H30.0956H30.0332H29.9709H29.9084H29.846H29.7835H29.7209H29.6583H29.5957H29.533H29.4703H29.4075H29.3447H29.2818H29.2189H29.1559H29.0929H29.0298H28.9666H28.9034H28.8402H28.7769H28.7135H28.6501H28.5867H28.5231H28.4596H28.3959H28.3322H28.2685H28.2046H28.1408H28.0768H28.0128H27.9487H27.8846H27.8204H27.7562H27.6918H27.6274H27.563H27.4985H27.4339H27.3692H27.3045H27.2397H27.1748H27.1098H27.0448H26.9797H26.9146H26.8493H26.784H26.7186H26.6532H26.5876H26.522H26.4563H26.3905H26.3247H26.2588H26.1928H26.1267H26.0605H25.9942H25.9279H25.8615H25.795H25.7284H25.6617H25.5949H25.5281H25.4611H25.3941H25.327H25.2598H25.1925H25.1251H25.0576H24.9901H24.9224H24.8547H24.7868H24.7189H24.6508H24.5827H24.5145H24.4461H24.3777H24.3092H24.2406H24.1719H24.103H24.0341H23.9651H23.896H23.8267H23.7574H23.688H23.6184H23.5488H23.479H23.4092H23.3392H23.2691H23.199H23.1287H23.0583H22.9878H22.9171H22.8464H22.7755H22.7046H22.6335H22.5623H22.491H22.4196H22.3481H22.2764H22.2046H22.1328H22.0607H21.9886H21.9164H21.844H21.7715H21.6989H21.6262H21.5533H21.4803H21.4072H21.334H21.2606H21.1872H21.1135H21.0398H20.9659H20.8919H20.8178H20.7436H20.6692H20.5947H20.52H20.4452H20.3703H20.2952H20.2201H20.1447H20.0693H19.9937H19.9179H19.8421H19.7661H19.6899H19.6136H19.5372H19.4606H19.3839H19.3071H19.2301H19.1529H19.0756H18.9982H18.9206H18.8429H18.765H18.687H18.6088H18.5305H18.452H18.3734H18.2946H18.2157H18.1367H18.0574H17.978H17.8985H17.8188H17.739H17.659H17.5788H17.4985H17.418H17.3374H17.2566H17.1757H17.0946H17.0133H16.9318H16.8503H16.7685H16.6866H16.6045H16.5222H16.4398H16.3572H16.2745H16.1915C16.045 181.5 15.9628 181.465 15.9092 181.432C15.8479 181.394 15.772 181.324 15.6978 181.198C15.5354 180.922 15.4617 180.509 15.5193 180.153C16.9196 171.496 24.6325 164.823 33.9925 164.823C43.3524 164.823 51.0654 171.496 52.4657 180.153C52.574 180.823 52.4052 181.064 52.319 181.152C52.1962 181.279 51.8413 181.5 50.9935 181.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"]],template:function(e,t){1&e&&(i.ɵɵnamespaceSVG(),i.ɵɵelementStart(0,"svg",0),i.ɵɵtext(1,"\n "),i.ɵɵelement(2,"path",1),i.ɵɵtext(3,"\n "),i.ɵɵelement(4,"path",2),i.ɵɵtext(5,"\n "),i.ɵɵelement(6,"path",3),i.ɵɵtext(7,"\n "),i.ɵɵelement(8,"path",4),i.ɵɵtext(9,"\n "),i.ɵɵelement(10,"path",5),i.ɵɵtext(11,"\n "),i.ɵɵelement(12,"rect",6),i.ɵɵtext(13,"\n "),i.ɵɵelement(14,"path",7),i.ɵɵtext(15,"\n "),i.ɵɵelementStart(16,"mask",8),i.ɵɵtext(17,"\n "),i.ɵɵelement(18,"rect",9),i.ɵɵtext(19,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(20,"\n "),i.ɵɵelement(21,"rect",10),i.ɵɵtext(22,"\n "),i.ɵɵelement(23,"path",11),i.ɵɵtext(24,"\n "),i.ɵɵelement(25,"circle",12),i.ɵɵtext(26,"\n "),i.ɵɵelement(27,"path",13),i.ɵɵtext(28,"\n "),i.ɵɵelement(29,"circle",14),i.ɵɵtext(30,"\n "),i.ɵɵelement(31,"path",15),i.ɵɵtext(32,"\n "),i.ɵɵelement(33,"circle",16),i.ɵɵtext(34,"\n "),i.ɵɵelement(35,"path",17),i.ɵɵtext(36,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(37,"\n"))},encapsulation:2})},31627:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationBillingComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828);const r=n(98523),o=n(94285),a=n(85314),s=n(32621),l=n(91674),c=n(51554),d=n(68012),p=n(73828),u=n(36631),m=n(57490),h=n(449),v=n(51626),g=n(96832),f=n(56820),y=n(55732),x=n(8863),S=n(99729),b=function(e){return{"bwi-spin":e}};function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",3),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().load()})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(5,b,e.loading)),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",5),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",6),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",14),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).addCredit()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"addCredit"),"\n "))}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-add-credit",15),s.ɵɵlistener("onAdded",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closeAddCredit(!0)}))("onCanceled",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closeAddCredit(!1)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵproperty("organizationId",e.organizationId)}}function P(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noPaymentMethod")))}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-callout",18),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"p"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"form",19,20),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyBank()})),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"label",21),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",22),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",23),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",24),s.ɵɵtext(20,"$0."),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"input",25),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyAmount1=t})),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"label",26),s.ɵɵtext(27),s.ɵɵpipe(28,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",22),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",23),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",24),s.ɵɵtext(35,"$0."),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"input",27),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyAmount2=t})),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",28),s.ɵɵtext(42,"\n "),s.ɵɵelement(43,"i",29),s.ɵɵpipe(44,"i18n"),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"span"),s.ɵɵtext(47),s.ɵɵpipe(48,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(9),t=s.ɵɵnextContext(3);s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,11,"verifyBankAccount")),s.ɵɵadvance(4),s.ɵɵtextInterpolate2("",s.ɵɵpipeBind1(5,13,"verifyBankAccountDesc")," ",s.ɵɵpipeBind1(6,15,"verifyBankAccountFailureWarning"),""),s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.verifyBankPromise),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(13,17,"amount","1")),s.ɵɵadvance(11),s.ɵɵproperty("ngModel",t.verifyAmount1),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(28,20,"amount","2")),s.ɵɵadvance(11),s.ɵɵproperty("ngModel",t.verifyAmount2),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(44,23,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(48,25,"verifyBankAccount"))}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"inAppPurchase")))}const A=function(e,t,n,i,r,o){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-money":n,"bwi-paypal text-primary":i,"bwi-apple text-muted":r,"bwi-google text-muted":o}};function T(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,O,52,27,"app-callout",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",17),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,k,3,3,"span",2),s.ɵɵtext(9),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSource.type===e.paymentMethodType.BankAccount&&e.paymentSource.needsVerification),s.ɵɵadvance(4),s.ɵɵproperty("ngClass",s.ɵɵpureFunction6(4,A,e.paymentSource.type===e.paymentMethodType.Card,e.paymentSource.type===e.paymentMethodType.BankAccount,e.paymentSource.type===e.paymentMethodType.Check,e.paymentSource.type===e.paymentMethodType.PayPal,e.paymentSource.type===e.paymentMethodType.AppleInApp,e.paymentSource.type===e.paymentMethodType.GoogleInApp)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSourceInApp),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.paymentSource.description,"\n ")}}function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",14),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changePayment()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,e.paymentSource?"changePaymentMethod":"addPaymentMethod"),"\n ")}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-adjust-payment",30),s.ɵɵlistener("onAdjusted",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closePayment(!0)}))("onCanceled",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closePayment(!1)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵproperty("currentType",null!=e.paymentSource?e.paymentSource.type:null)("organizationId",e.organizationId)}}function D(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noInvoices")))}function R(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",36),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"paid"),"\n "))}function F(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",37),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"unpaid"),"\n "))}function U(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td"),s.ɵɵtext(3),s.ɵɵpipe(4,"date"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"td"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"a",33),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"i",34),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"a",35),s.ɵɵpipe(14,"i18n"),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"td"),s.ɵɵtext(20),s.ɵɵpipe(21,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"td"),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,R,5,3,"span",2),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,F,5,3,"span",2),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,9,e.date,"mediumDate")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("href",e.pdfUrl,s.ɵɵsanitizeUrl),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(9,12,"downloadInvoice")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("href",e.url,s.ɵɵsanitizeUrl),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(14,14,"viewInvoice")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(16,16,"invoiceNumber",e.number),""),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(21,19,e.amount,"$")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.paid),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.paid)}}function V(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,U,30,22,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.invoices)}}function N(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noTransactions")))}function _(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"chargeNoun"),"\n "))}function j(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"refundNoun")))}const z=function(e,t,n,i){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-bitcoin text-warning":n,"bwi-paypal text-primary":i}};function H(e,t){if(1&e&&s.ɵɵelement(0,"i",40),2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(3);s.ɵɵproperty("ngClass",s.ɵɵpureFunction4(1,z,e.paymentMethodType===t.paymentMethodType.Card,e.paymentMethodType===t.paymentMethodType.BankAccount||e.paymentMethodType===t.paymentMethodType.WireTransfer,e.paymentMethodType===t.paymentMethodType.BitPay,e.paymentMethodType===t.paymentMethodType.PayPal))}}const L=function(e){return{"text-strike":e}};function K(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td"),s.ɵɵtext(3),s.ɵɵpipe(4,"date"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"td"),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,_,3,3,"span",2),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,j,3,3,"span",2),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"td"),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,H,1,6,"i",38),s.ɵɵtext(16),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"td",39),s.ɵɵpipe(19,"i18n"),s.ɵɵtext(20),s.ɵɵpipe(21,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,8,e.createdDate,"mediumDate")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.type===n.transactionType.Charge||e.type===n.transactionType.Credit),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.type===n.transactionType.Refund),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.paymentMethodType),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.details,"\n "),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(19,11,e.refunded?"refunded":"")),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(16,L,e.refunded)),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(21,13,e.amount,"$"),"\n ")}}function q(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,K,23,18,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.transactions)}}function G(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h2"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"p",7),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"strong"),s.ɵɵtext(9),s.ɵɵpipe(10,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"p"),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,I,3,3,"button",8),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,E,2,1,"app-add-credit",9),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"h2",10),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,P,3,3,"p",2),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,T,11,11,"ng-container",2),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,M,3,3,"button",8),s.ɵɵtext(30,"\n "),s.ɵɵtemplate(31,B,2,2,"app-adjust-payment",11),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"h2",10),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵtemplate(37,D,3,3,"p",2),s.ɵɵtext(38,"\n "),s.ɵɵtemplate(39,V,7,1,"table",12),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"h2",10),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵtemplate(45,N,3,3,"p",2),s.ɵɵtext(46,"\n "),s.ɵɵtemplate(47,q,7,1,"table",12),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"small",13),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,17,e.isCreditBalance?"accountCredit":"accountBalance")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(10,19,e.creditOrBalance,"$")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,22,"creditAppliedDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.showAddCredit),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.showAddCredit),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,24,"paymentMethod")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.paymentSource),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSource),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.showAdjustPayment),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.showAdjustPayment),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,26,"invoices")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.invoices||!e.invoices.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.invoices&&e.invoices.length),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,28,"transactions")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.transactions||!e.transactions.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.transactions&&e.transactions.length),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("* ",s.ɵɵpipeBind2(51,30,"chargesStatement","BITWARDEN"),"")}}class W{constructor(e,t,n,i,a){this.apiService=e,this.i18nService=t,this.route=n,this.platformUtilsService=i,this.logService=a,this.loading=!1,this.firstLoaded=!1,this.showAdjustPayment=!1,this.showAddCredit=!1,this.paymentMethodType=r.PaymentMethodType,this.transactionType=o.TransactionType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.firstLoaded=!0}))))}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,null!=this.organizationId&&(this.billing=yield this.apiService.getOrganizationBilling(this.organizationId)),this.loading=!1)}))}verifyBank(){return i(this,void 0,void 0,(function*(){if(!this.loading)try{const e=new a.VerifyBankRequest;e.amount1=this.verifyAmount1,e.amount2=this.verifyAmount2,this.verifyBankPromise=this.apiService.postOrganizationVerifyBank(this.organizationId,e),yield this.verifyBankPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("verifiedBankAccount")),this.load()}catch(e){this.logService.error(e)}}))}addCredit(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("addCredit"),null,null,"warning"):this.showAddCredit=!0}closeAddCredit(e){this.showAddCredit=!1,e&&this.load()}changePayment(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("changePaymentMethod"),null,null,"warning"):this.showAdjustPayment=!0}closePayment(e){this.showAdjustPayment=!1,e&&this.load()}get isCreditBalance(){return null==this.billing||this.billing.balance<=0}get creditOrBalance(){return Math.abs(null!=this.billing?this.billing.balance:0)}get paymentSource(){return null!=this.billing?this.billing.paymentSource:null}get paymentSourceInApp(){return null!=this.paymentSource&&(this.paymentSource.type===r.PaymentMethodType.AppleInApp||this.paymentSource.type===r.PaymentMethodType.GoogleInApp)}get invoices(){return null!=this.billing?this.billing.invoices:null}get transactions(){return null!=this.billing?this.billing.transactions:null}}t.OrganizationBillingComponent=W,W.ɵfac=function(e){return new(e||W)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.ActivatedRoute),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.LogService))},W.ɵcmp=s.ɵɵdefineComponent({type:W,selectors:[["app-org-billing"]],decls:13,vars:6,consts:[[1,"page-header","d-flex"],["class","btn btn-sm btn-outline-primary ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],[1,"btn","btn-sm","btn-outline-primary","ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"text-lg"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[3,"organizationId","onAdded","onCanceled",4,"ngIf"],[1,"spaced-header"],[3,"currentType","organizationId","onAdjusted","onCanceled",4,"ngIf"],["class","table mb-2",4,"ngIf"],[1,"text-muted"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[3,"organizationId","onAdded","onCanceled"],["type","warning",3,"title",4,"ngIf"],[1,"bwi","bwi-fw",3,"ngClass"],["type","warning",3,"title"],["ngNativeValidate","",1,"form-inline",3,"appApiAction","ngSubmit"],["verifyForm",""],["for","verifyAmount1",1,"sr-only"],[1,"input-group","mr-2"],[1,"input-group-prepend"],[1,"input-group-text"],["type","number","id","verifyAmount1","placeholder","xx","name","Amount1","min","1","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","verifyAmount2",1,"sr-only"],["type","number","id","verifyAmount2","placeholder","xx","name","Amount2","min","1","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-outline-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"currentType","organizationId","onAdjusted","onCanceled"],[1,"table","mb-2"],[4,"ngFor","ngForOf"],["target","_blank","rel","noopener",1,"mr-2",3,"href","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-file-pdf"],["target","_blank","rel","noopener",3,"href","title"],["aria-hidden","true",1,"bwi","bwi-check","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle","text-muted"],["class","bwi bwi-fw","aria-hidden","true",3,"ngClass",4,"ngIf"],[3,"ngClass","title"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,w,5,7,"button",1),s.ɵɵtext(7,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,C,9,6,"ng-container",2),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,G,53,33,"ng-container",2),s.ɵɵtext(12,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,4,"billing"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.firstLoaded),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.billing))},directives:[m.NgIf,m.NgClass,h.AddCreditComponent,v.CalloutComponent,g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,g.MinValidator,g.MaxValidator,g.NumberValueAccessor,g.DefaultValueAccessor,g.RequiredValidator,g.NgControlStatus,g.NgModel,y.AdjustPaymentComponent,m.NgForOf,x.A11yTitleDirective],pipes:[S.I18nPipe,m.CurrencyPipe,m.DatePipe],encapsulation:2})},2516:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(51554),n(36631),n(45552),n(63513),n(73828),n(43497)),a=n(24643),s=n(47937),l=n(79977),c=n(6131),d=n(73738),p=n(32621),u=n(91674),m=n(73828),h=n(51554),v=n(45552),g=n(68012),f=n(63513),y=n(36631),x=n(64684),S=n(57490),b=n(75051),w=n(51626),C=n(56820),I=n(61857),E=n(76137),P=n(34959),O=n(24547),k=n(8863),A=n(13205),T=n(99729),M=["setupBillingSyncTemplate"],B=["rotateBillingSyncKeyTemplate"];function D(e,t){1&e&&(p.ɵɵelementStart(0,"small"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",4),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",5),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function R(e,t){1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",6),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",5),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementContainerEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",7),p.ɵɵtext(3,"\n "),p.ɵɵelement(4,"app-image-org-subscription-hidden"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"p",8),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"p"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n"),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext();p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind2(8,2,"billingManagedByProvider",e.userOrg.providerName)),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(12,5,"billingContactProviderForAssistance"))}}function U(e,t){1&e&&(p.ɵɵelementStart(0,"app-callout",10),p.ɵɵpipe(1,"i18n"),p.ɵɵtext(2),p.ɵɵpipe(3,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,2,"canceled")),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(3,4,"subscriptionCanceled"),""))}function V(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-callout",10),p.ɵɵpipe(1,"i18n"),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"p"),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"button",11,12),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).reinstate()})),p.ɵɵtext(9,"\n "),p.ɵɵelement(10,"i",13),p.ɵɵpipe(11,"i18n"),p.ɵɵtext(12,"\n "),p.ɵɵelementStart(13,"span"),p.ɵɵtext(14),p.ɵɵpipe(15,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(8),t=p.ɵɵnextContext(2);p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,6,"pendingCancellation")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(5,8,"subscriptionPendingCanceled")),p.ɵɵadvance(3),p.ɵɵproperty("appApiAction",t.reinstatePromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(11,10,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(15,12,"reinstateSubscription"))}}function N(e,t){1&e&&(p.ɵɵelementStart(0,"span",31),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(2,1,"pendingCancellation")))}function _(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"dt"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dd"),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"span",29),p.ɵɵtext(9),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵtemplate(11,N,3,3,"span",30),p.ɵɵtext(12,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementStart(14,"dt"),p.ɵɵtext(15),p.ɵɵpipe(16,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"dd"),p.ɵɵtext(19),p.ɵɵpipe(20,"date"),p.ɵɵpipe(21,"currency"),p.ɵɵelementEnd(),p.ɵɵtext(22,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,5,"status")),p.ɵɵadvance(6),p.ɵɵtextInterpolate(e.isSponsoredSubscription?"sponsored":e.subscription.status||"-"),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(16,7,"nextCharge")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",e.nextInvoice?p.ɵɵpipeBind2(20,9,e.nextInvoice.date,"mediumDate")+", "+p.ɵɵpipeBind2(21,12,e.nextInvoice.amount,"$"):"-","\n ")}}function j(e,t){if(1&e&&(p.ɵɵelementStart(0,"tr"),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"td"),p.ɵɵtext(3),p.ɵɵpipe(4,"currency"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"td"),p.ɵɵtext(7),p.ɵɵpipe(8,"currency"),p.ɵɵpipe(9,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementEnd()),2&e){const e=t.$implicit;p.ɵɵadvance(3),p.ɵɵtextInterpolate3("\n ",e.name," ",e.quantity>1?"×"+e.quantity:""," @\n ",p.ɵɵpipeBind2(4,5,e.amount,"$"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate2("",p.ɵɵpipeBind2(8,8,e.quantity*e.amount,"$")," /",p.ɵɵpipeBind1(9,11,e.interval),"")}}function z(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",32),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"strong",33),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"table",34),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"tbody"),p.ɵɵtext(9,"\n "),p.ɵɵtemplate(10,j,11,13,"tr",35),p.ɵɵtext(11,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(12,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,2,"details")),p.ɵɵadvance(7),p.ɵɵproperty("ngForOf",e.subscription.items)}}function H(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"dl"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dt"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"dd"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,2,"provider")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind2(12,4,"yourProviderIs",e.userOrg.providerName))}}function L(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).changePlan()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,"changeBillingPlan"),"\n "))}function K(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-change-plan",38),p.ɵɵlistener("onChanged",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeChangePlan(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeChangePlan(!1)})),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵproperty("organizationId",e.organizationId)}}function q(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",39),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"app-adjust-subscription",40),p.ɵɵlistener("onAdjusted",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).subscriptionAdjusted()})),p.ɵɵtext(5,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵproperty("seatPrice",e.seatPrice)("organizationId",e.organizationId)("interval",e.billingInterval)("currentSeatCount",e.seats)("maxAutoscaleSeats",e.maxAutoscaleSeats)}}function G(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",41,42),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).removeSponsorship()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",13),p.ɵɵpipe(4,"i18n"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"span"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext(3);p.ɵɵproperty("appApiAction",t.removeSponsorshipPromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(4,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,6,"removeSponsorship"))}}function W(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",24),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).adjustStorage(!0)})),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"button",45),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).adjustStorage(!1)})),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,2,"addStorage"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,4,"removeStorage"),"\n "))}function $(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-adjust-storage",46),p.ɵɵlistener("onAdjusted",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).closeStorage(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).closeStorage(!1)})),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(4);p.ɵɵproperty("storageGbPrice",e.storageGbPrice)("add",e.adjustStorageAdd)("organizationId",e.organizationId)("interval",e.billingInterval)}}function Y(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",39),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,W,10,6,"div",43),p.ɵɵtext(5,"\n "),p.ɵɵtemplate(6,$,1,4,"app-adjust-storage",44),p.ɵɵtext(7,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵproperty("ngIf",!e.showAdjustStorage),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showAdjustStorage)}}function Q(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",47),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).downloadLicense()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵproperty("disabled",e.showDownloadLicense),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,2,"downloadLicense"),"\n ")}}function J(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",45),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).manageBillingSync()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,e.hasBillingSyncToken?"manageBillingSync":"setUpBillingSync"),"\n ")}}function Z(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"app-download-license",48),p.ɵɵlistener("onDownloaded",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeDownloadLicense()}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeDownloadLicense()})),p.ɵɵelementEnd(),p.ɵɵtext(3,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(2),p.ɵɵproperty("organizationId",e.organizationId)}}function X(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",49,50),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).cancel()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",13),p.ɵɵpipe(4,"i18n"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"span"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext(3);p.ɵɵproperty("appApiAction",t.cancelPromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(4,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,6,"cancelSubscription"))}}const ee=function(e){return{width:e}};function te(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",14),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"div",15),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dl"),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"dt"),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(11,"\n "),p.ɵɵelementStart(12,"dd"),p.ɵɵtext(13),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵtemplate(15,_,23,15,"ng-container",1),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(18,"\n "),p.ɵɵtemplate(19,z,14,4,"div",16),p.ɵɵtext(20,"\n "),p.ɵɵtemplate(21,H,16,7,"ng-container",1),p.ɵɵtext(22,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n "),p.ɵɵelementContainerStart(24),p.ɵɵtext(25,"\n "),p.ɵɵtemplate(26,L,3,3,"button",17),p.ɵɵtext(27,"\n "),p.ɵɵtemplate(28,K,1,1,"app-change-plan",18),p.ɵɵtext(29,"\n "),p.ɵɵelementContainerEnd(),p.ɵɵtext(30,"\n "),p.ɵɵelementStart(31,"h2",19),p.ɵɵtext(32),p.ɵɵpipe(33,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(34,"\n "),p.ɵɵelementStart(35,"p",20),p.ɵɵtext(36),p.ɵɵelementEnd(),p.ɵɵtext(37,"\n "),p.ɵɵtemplate(38,q,8,5,"ng-container",1),p.ɵɵtext(39,"\n "),p.ɵɵtemplate(40,G,10,8,"button",21),p.ɵɵtext(41,"\n "),p.ɵɵelementStart(42,"h2",19),p.ɵɵtext(43),p.ɵɵpipe(44,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(45,"\n "),p.ɵɵelementStart(46,"p"),p.ɵɵtext(47),p.ɵɵpipe(48,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(49,"\n "),p.ɵɵelementStart(50,"div",22),p.ɵɵtext(51,"\n "),p.ɵɵelementStart(52,"div",23),p.ɵɵtext(53),p.ɵɵpipe(54,"percent"),p.ɵɵelementEnd(),p.ɵɵtext(55,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(56,"\n "),p.ɵɵtemplate(57,Y,9,2,"ng-container",1),p.ɵɵtext(58,"\n "),p.ɵɵtext(59,"\n "),p.ɵɵelementStart(60,"h2",19),p.ɵɵtext(61),p.ɵɵpipe(62,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(63,"\n "),p.ɵɵelementStart(64,"p",20),p.ɵɵtext(65),p.ɵɵpipe(66,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(67,"\n "),p.ɵɵelementStart(68,"div",24),p.ɵɵtext(69,"\n "),p.ɵɵtemplate(70,Q,3,4,"button",25),p.ɵɵtext(71,"\n "),p.ɵɵtemplate(72,J,3,3,"button",26),p.ɵɵtext(73,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(74,"\n "),p.ɵɵtemplate(75,Z,4,1,"div",27),p.ɵɵtext(76,"\n "),p.ɵɵelementStart(77,"h2",19),p.ɵɵtext(78),p.ɵɵpipe(79,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(80,"\n "),p.ɵɵelementStart(81,"p",20),p.ɵɵtext(82),p.ɵɵpipe(83,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(84,"\n "),p.ɵɵelementStart(85,"div",24),p.ɵɵtext(86,"\n "),p.ɵɵtemplate(87,X,10,8,"button",28),p.ɵɵtext(88,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(89,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(9),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(10,25,"billingPlan")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.sub.plan.name),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.subscription),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null!=(null==e.userOrg?null:e.userOrg.providerId)),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.showChangePlanButton),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showChangePlan),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(33,27,"manageSubscription")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.subscriptionDesc),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription&&e.canAdjustSeats&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.isSponsoredSubscription),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(44,29,"storage")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind3(48,31,"subscriptionStorage",e.sub.maxStorageGb||0,e.sub.storageName||"0 MB")),p.ɵɵadvance(5),p.ɵɵproperty("ngStyle",p.ɵɵpureFunction1(45,ee,e.storageProgressWidth+"%")),p.ɵɵattribute("aria-valuenow",e.storagePercentage),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(54,35,e.storagePercentage/100),"\n "),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(62,37,"selfHostingTitle")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(66,39,"selfHostingEnterpriseOrganizationSectionCopy"),"\n "),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.canDownloadLicense),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.canManageBillingSync),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.showDownloadLicense),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(79,41,"additionalOptions")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(83,43,"additionalOptionsDesc"),"\n "),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel)}}function ne(e,t){1&e&&(p.ɵɵelementStart(0,"span",54),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",55),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,1,"licenseIsExpired"),"\n "))}function ie(e,t){if(1&e&&(p.ɵɵelementStart(0,"dd"),p.ɵɵtext(1),p.ɵɵpipe(2,"date"),p.ɵɵtemplate(3,ne,5,3,"span",53),p.ɵɵtext(4,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(2,2,e.sub.expiration,"mediumDate"),"\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.isExpired)}}function re(e,t){1&e&&(p.ɵɵelementStart(0,"dd"),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(2,1,"neverExpires")))}function oe(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",56),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",57),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"button",58),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!1)})),p.ɵɵpipe(5,"i18n"),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"span",59),p.ɵɵtext(8,"×"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementStart(11,"h3",60),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementStart(15,"app-update-license",61),p.ɵɵlistener("onUpdated",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!1)})),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵpropertyInterpolate("appA11yTitle",p.ɵɵpipeBind1(5,3,"cancel")),p.ɵɵadvance(8),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(13,5,"updateLicense")),p.ɵɵadvance(3),p.ɵɵproperty("organizationId",e.organizationId)}}function ae(e,t){if(1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"date"),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(5);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(2,1,e.userOrg.familySponsorshipLastSyncDate,"medium"),"\n ")}}function se(e,t){1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"lowercase"),p.ɵɵpipe(3,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,p.ɵɵpipeBind1(3,3,"never")),"\n "))}function le(e,t){if(1&e&&(p.ɵɵelementStart(0,"small",64),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵtemplate(3,ae,3,4,"span",1),p.ɵɵtext(4,"\n "),p.ɵɵtemplate(5,se,4,5,"span",1),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(4);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,3,"lastSync"),":\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null!=e.userOrg.familySponsorshipLastSyncDate),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null==e.userOrg.familySponsorshipLastSyncDate)}}function ce(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h2",62),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"p"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).manageBillingSyncSelfHosted()})),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵtemplate(14,le,7,5,"small",63),p.ɵɵtext(15,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,4,"billingSync"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,6,"billingSyncDesc"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(12,8,"manageBillingSync"),"\n "),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.billingSyncSetUp)}}function de(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"dl"),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"dt"),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"dd"),p.ɵɵtext(9),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementStart(11,"dt"),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵtemplate(15,ie,5,5,"dd",1),p.ɵɵtext(16,"\n "),p.ɵɵtemplate(17,re,3,3,"dd",1),p.ɵɵtext(18,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n "),p.ɵɵelementStart(20,"div"),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).updateLicense()})),p.ɵɵtext(23),p.ɵɵpipe(24,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(25,"\n "),p.ɵɵelementStart(26,"a",51),p.ɵɵtext(27),p.ɵɵpipe(28,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵtemplate(31,oe,18,7,"div",52),p.ɵɵtext(32,"\n "),p.ɵɵtemplate(33,ce,16,10,"div",1),p.ɵɵtext(34,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,9,"billingPlan")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.sub.plan.name),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(13,11,"expiration")),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.sub.expiration),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.sub.expiration),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(24,13,"updateLicense"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(28,15,"manageSubscription"),"\n "),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.showUpdateLicense),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showBillingSyncKey)}}function pe(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵtemplate(2,U,4,6,"app-callout",9),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,V,18,14,"app-callout",9),p.ɵɵtext(5,"\n "),p.ɵɵtemplate(6,te,90,47,"ng-container",1),p.ɵɵtext(7,"\n "),p.ɵɵtemplate(8,de,35,17,"ng-container",1),p.ɵɵtext(9,"\n"),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext();p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription&&e.subscription.cancelled),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.selfHosted),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.selfHosted)}}function ue(e,t){}function me(e,t){}class he{constructor(e,t,n,i,r,o,a,s){this.apiService=e,this.platformUtilsService=t,this.i18nService=n,this.messagingService=i,this.route=r,this.organizationService=o,this.logService=a,this.modalService=s,this.loading=!1,this.firstLoaded=!1,this.adjustSeatsAdd=!0,this.showAdjustSeats=!1,this.showAdjustSeatAutoscale=!1,this.adjustStorageAdd=!0,this.showAdjustStorage=!1,this.showUpdateLicense=!1,this.showBillingSyncKey=!1,this.showDownloadLicense=!1,this.showChangePlan=!1,this.selfHosted=!1,this.selfHosted=t.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.firstLoaded=!0}))))}))}load(){return i(this,void 0,void 0,(function*(){if(this.loading)return;this.loading=!0,this.userOrg=yield this.organizationService.get(this.organizationId),this.userOrg.canManageBilling&&(this.sub=yield this.apiService.getOrganizationSubscription(this.organizationId));const e=yield this.apiService.getOrganizationApiKeyInformation(this.organizationId);this.hasBillingSyncToken=e.data.some((e=>e.keyType===o.OrganizationApiKeyType.BillingSync)),this.selfHosted&&(this.showBillingSyncKey=yield this.apiService.getCloudCommunicationsEnabled()),this.showBillingSyncKey&&(this.existingBillingSyncConnection=yield this.apiService.getOrganizationConnection(this.organizationId,a.OrganizationConnectionType.CloudBillingSync,l.BillingSyncConfigApi)),this.loading=!1}))}reinstate(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("reinstateConfirmation"),this.i18nService.t("reinstateSubscription"),this.i18nService.t("yes"),this.i18nService.t("cancel")))try{this.reinstatePromise=this.apiService.postOrganizationReinstate(this.organizationId),yield this.reinstatePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("reinstated")),this.load()}catch(e){this.logService.error(e)}}))}cancel(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("cancelConfirmation"),this.i18nService.t("cancelSubscription"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{this.cancelPromise=this.apiService.postOrganizationCancel(this.organizationId),yield this.cancelPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("canceledSubscription")),this.load()}catch(e){this.logService.error(e)}}))}changePlan(){return i(this,void 0,void 0,(function*(){this.showChangePlan=!this.showChangePlan}))}closeChangePlan(e){this.showChangePlan=!1}downloadLicense(){this.showDownloadLicense=!this.showDownloadLicense}manageBillingSync(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(d.BillingSyncApiKeyComponent,this.setupBillingSyncModalRef,(e=>{e.organizationId=this.organizationId,e.hasBillingToken=this.hasBillingSyncToken}));e.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.load()}))))}))}closeDownloadLicense(){this.showDownloadLicense=!1}updateLicense(){this.loading||(this.showUpdateLicense=!0)}closeUpdateLicense(e){this.showUpdateLicense=!1,e&&(this.load(),this.messagingService.send("updatedOrgLicense"))}subscriptionAdjusted(){this.load()}adjustStorage(e){this.adjustStorageAdd=e,this.showAdjustStorage=!0}closeStorage(e){this.showAdjustStorage=!1,e&&this.load()}removeSponsorship(){return i(this,void 0,void 0,(function*(){if(yield this.platformUtilsService.showDialog(this.i18nService.t("removeSponsorshipConfirmation"),this.i18nService.t("removeSponsorship"),this.i18nService.t("remove"),this.i18nService.t("cancel"),"warning"))try{this.removeSponsorshipPromise=this.apiService.deleteRemoveSponsorship(this.organizationId),yield this.removeSponsorshipPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removeSponsorshipSuccess")),yield this.load()}catch(e){this.logService.error(e)}}))}manageBillingSyncSelfHosted(){return i(this,void 0,void 0,(function*(){this.billingSyncKeyRef=yield this.modalService.openViewRef(c.BillingSyncKeyComponent,this.billingSyncKeyViewContainerRef,(e=>{var t,n,i;e.entityId=this.organizationId,e.existingConnectionId=null===(t=this.existingBillingSyncConnection)||void 0===t?void 0:t.id,e.billingSyncKey=null===(i=null===(n=this.existingBillingSyncConnection)||void 0===n?void 0:n.config)||void 0===i?void 0:i.billingSyncKey,e.setParentConnection=e=>{this.existingBillingSyncConnection=e,this.billingSyncKeyRef[0].close()}}))}))}get isExpired(){return null!=this.sub&&null!=this.sub.expiration&&new Date(this.sub.expiration)e.sponsoredSubscriptionItem))}get canDownloadLicense(){return this.sub.planType!==s.PlanType.Free&&null==this.subscription||null!=this.subscription&&!this.subscription.cancelled}get canManageBillingSync(){return!this.selfHosted&&(this.sub.planType===s.PlanType.EnterpriseAnnually||this.sub.planType===s.PlanType.EnterpriseMonthly||this.sub.planType===s.PlanType.EnterpriseAnnually2019||this.sub.planType===s.PlanType.EnterpriseMonthly2019)}get subscriptionDesc(){return this.sub.planType===s.PlanType.Free?this.i18nService.t("subscriptionFreePlan",this.sub.seats.toString()):this.sub.planType===s.PlanType.FamiliesAnnually||this.sub.planType===s.PlanType.FamiliesAnnually2019?this.isSponsoredSubscription?this.i18nService.t("subscriptionSponsoredFamiliesPlan",this.sub.seats.toString()):this.i18nService.t("subscriptionFamiliesPlan",this.sub.seats.toString()):this.sub.maxAutoscaleSeats===this.sub.seats&&null!=this.sub.seats?this.i18nService.t("subscriptionMaxReached",this.sub.seats.toString()):null==this.sub.maxAutoscaleSeats?this.i18nService.t("subscriptionUserSeatsUnlimitedAutoscale"):this.i18nService.t("subscriptionUserSeatsLimitedAutoscale",this.sub.maxAutoscaleSeats.toString())}get showChangePlanButton(){return null==this.subscription&&this.sub.planType===s.PlanType.Free&&!this.showChangePlan}get billingSyncSetUp(){var e;return null!=(null===(e=this.existingBillingSyncConnection)||void 0===e?void 0:e.id)}}t.OrganizationSubscriptionComponent=he,he.ɵfac=function(e){return new(e||he)(p.ɵɵdirectiveInject(u.ApiService),p.ɵɵdirectiveInject(m.PlatformUtilsService),p.ɵɵdirectiveInject(h.I18nService),p.ɵɵdirectiveInject(v.MessagingService),p.ɵɵdirectiveInject(g.ActivatedRoute),p.ɵɵdirectiveInject(f.OrganizationService),p.ɵɵdirectiveInject(y.LogService),p.ɵɵdirectiveInject(x.ModalService))},he.ɵcmp=p.ɵɵdefineComponent({type:he,selectors:[["app-org-subscription"]],viewQuery:function(e,t){if(1&e&&(p.ɵɵviewQuery(M,7,r.ViewContainerRef),p.ɵɵviewQuery(B,7,r.ViewContainerRef)),2&e){let e;p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.setupBillingSyncModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.billingSyncKeyViewContainerRef=e.first)}},decls:21,vars:7,consts:[[1,"page-header"],[4,"ngIf"],["setupBillingSyncTemplate",""],["rotateBillingSyncKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"tw-flex","tw-flex-col","tw-items-center","tw-text-info"],[1,"tw-font-bold"],["type","warning",3,"title",4,"ngIf"],["type","warning",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["reinstateBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"row"],[1,"col-4"],["class","col-8",4,"ngIf"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[3,"organizationId","onChanged","onCanceled",4,"ngIf"],[1,"spaced-header"],[1,"mb-4"],["type","button","class","btn btn-outline-danger btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","bg-success",3,"ngStyle"],[1,"d-flex"],["type","button","class","btn btn-outline-secondary",3,"disabled","click",4,"ngIf"],["type","button","class","btn btn-outline-secondary ml-1",3,"click",4,"ngIf"],["class","mt-3",4,"ngIf"],["type","button","class","btn btn-outline-danger btn-submit ml-1",3,"appApiAction","disabled","click",4,"ngIf"],[1,"text-capitalize"],["class","badge badge-warning",4,"ngIf"],[1,"badge","badge-warning"],[1,"col-8"],[1,"d-block","mb-1"],[1,"table"],[4,"ngFor","ngForOf"],[1,"col-sm"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[3,"organizationId","onChanged","onCanceled"],[1,"mt-3"],[3,"seatPrice","organizationId","interval","currentSeatCount","maxAutoscaleSeats","onAdjusted"],["type","button",1,"btn","btn-outline-danger","btn-submit",3,"appApiAction","disabled","click"],["removeSponsorshipBtn",""],["class","d-flex",4,"ngIf"],[3,"storageGbPrice","add","organizationId","interval","onAdjusted","onCanceled",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary","ml-1",3,"click"],[3,"storageGbPrice","add","organizationId","interval","onAdjusted","onCanceled"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],[3,"organizationId","onDownloaded","onCanceled"],["type","button",1,"btn","btn-outline-danger","btn-submit","ml-1",3,"appApiAction","disabled","click"],["cancelBtn",""],["href","https://vault.bitwarden.com","target","_blank","rel","noopener",1,"btn","btn-outline-secondary"],["class","card mt-3",4,"ngIf"],["class","text-danger ml-2",4,"ngIf"],[1,"text-danger","ml-2"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"card","mt-3"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"organizationId","onUpdated","onCanceled"],[1,"mt-5"],["class","form-text text-muted",4,"ngIf"],[1,"form-text","text-muted"]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵtemplate(5,D,9,6,"small",1),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵtemplate(9,R,9,6,"ng-container",1),p.ɵɵtext(10,"\n\n"),p.ɵɵtemplate(11,F,15,7,"ng-container",1),p.ɵɵtext(12,"\n\n"),p.ɵɵtemplate(13,pe,10,4,"ng-container",1),p.ɵɵtext(14,"\n"),p.ɵɵtemplate(15,ue,0,0,"ng-template",null,2,p.ɵɵtemplateRefExtractor),p.ɵɵtext(17,"\n"),p.ɵɵtemplate(18,me,0,0,"ng-template",null,3,p.ɵɵtemplateRefExtractor),p.ɵɵtext(20,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,5,"subscription"),"\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.firstLoaded&&t.loading),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.firstLoaded&&!t.userOrg.canManageBilling),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.sub))},directives:[S.NgIf,b.ImageSubscriptionHiddenComponent,w.CalloutComponent,C.ApiActionDirective,S.NgStyle,S.NgForOf,I.ChangePlanComponent,E.AdjustSubscription,P.AdjustStorageComponent,O.DownloadLicenseComponent,k.A11yTitleDirective,A.UpdateLicenseComponent],pipes:[T.I18nPipe,S.PercentPipe,S.DatePipe,S.CurrencyPipe,S.LowerCasePipe],encapsulation:2})},78027:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(68012),n(63513),n(73828);const r=n(32621),o=n(68012),a=n(63513),s=n(73828),l=n(57490),c=n(99729);function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",11),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"billing"),"\n "))}function p(e,t){1&e&&(r.ɵɵelementStart(0,"a",12),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"twoStepLogin"),"\n "))}class u{constructor(e,t,n){this.route=e,this.organizationService=t,this.platformUtilsService=n,this.access2fa=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){const t=yield this.organizationService.get(e.organizationId);this.showBilling=!this.platformUtilsService.isSelfHost()&&t.canManageBilling,this.access2fa=t.use2fa}))))}}t.SettingsComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService),r.ɵɵdirectiveInject(s.PlatformUtilsService))},u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["app-org-settings"]],decls:36,vars:11,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],["routerLink","subscription","routerLinkActive","active",1,"list-group-item"],["routerLink","billing","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","two-factor","class","list-group-item","routerLinkActive","active",4,"ngIf"],[1,"col-9"],["routerLink","billing","routerLinkActive","active",1,"list-group-item"],["routerLink","two-factor","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,d,3,3,"a",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,p,3,3,"a",9),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",10),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"router-outlet"),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,5,"settings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,7,"myOrganization"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,9,"subscription"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.showBilling),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.access2fa))},directives:[o.RouterLinkWithHref,o.RouterLinkActive,l.NgIf,o.RouterOutlet],pipes:[c.I18nPipe],encapsulation:2})},38359:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorSetupComponent=void 0;n(68012),n(64684),n(91674),n(45552),n(62166),n(73569);const r=n(97374),o=n(71790),a=n(35906),s=n(32621),l=n(91674),c=n(64684),d=n(45552),p=n(62166),u=n(68012),m=n(73569),h=n(57490),v=n(20138),g=n(52767),f=n(48403),y=n(99729);function x(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"twoStepLoginDesc")))}function S(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"twoStepLoginOrganizationDesc")))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"bit-callout",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"button",13),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().recoveryCode()})),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,2,"twoStepLoginRecoveryWarning")),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,4,"viewRecoveryCode"),"\n "))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",14),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",15),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function C(e,t){1&e&&(s.ɵɵelementStart(0,"bit-callout",12),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"twoStepLoginPolicyUserWarning"),"\n"))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",23),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",15),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"enabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"enabled")))}function E(e,t){1&e&&s.ɵɵelement(0,"app-premium-badge")}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"li",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",17),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"img",18),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",19),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h3",20),s.ɵɵtext(10),s.ɵɵtemplate(11,I,9,6,"ng-container",1),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,E,1,0,"app-premium-badge",1),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",21),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"button",22),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext().manage(t.type)})),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵclassMap("mfaType"+e.type),s.ɵɵproperty("alt",e.name+" logo"),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",e.name,"\n "),s.ɵɵadvance(1),s.ɵɵproperty("ngIf",e.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.premium),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",e.description,"\n "),s.ɵɵadvance(4),s.ɵɵproperty("disabled",!n.canAccessPremium&&e.premium),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(21,9,"manage"),"\n ")}}function O(e,t){}function k(e,t){}function A(e,t){}function T(e,t){}function M(e,t){}function B(e,t){}const D=function(e){return{"mt-5":e}};class R extends a.TwoFactorSetupComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.route=r}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organizationId=t.organizationId,yield e.ngOnInit.call(this)}))))}))}manage(e){return i(this,void 0,void 0,(function*(){switch(e){case r.TwoFactorProviderType.OrganizationDuo:{const e=yield this.openModal(this.duoModalRef,o.TwoFactorDuoComponent);e.type=r.TwoFactorProviderType.OrganizationDuo,e.organizationId=this.organizationId,e.onUpdated.subscribe((e=>{this.updateStatus(e,r.TwoFactorProviderType.OrganizationDuo)}));break}}}))}getTwoFactorProviders(){return this.apiService.getTwoFactorOrganizationProviders(this.organizationId)}filterProvider(e){return e!==r.TwoFactorProviderType.OrganizationDuo}}t.TwoFactorSetupComponent=R,R.ɵfac=function(e){return new(e||R)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ModalService),s.ɵɵdirectiveInject(d.MessagingService),s.ɵɵdirectiveInject(p.PolicyService),s.ɵɵdirectiveInject(u.ActivatedRoute),s.ɵɵdirectiveInject(m.StateService))},R.ɵcmp=s.ɵɵdefineComponent({type:R,selectors:[["app-two-factor-setup"]],features:[s.ɵɵInheritDefinitionFeature],decls:44,vars:15,consts:[[1,"tabbed-header"],[4,"ngIf"],["type","warning",4,"ngIf"],[3,"ngClass"],[1,"list-group","list-group-2fa"],["class","list-group-item d-flex align-items-center",4,"ngFor","ngForOf"],["authenticatorTemplate",""],["recoveryTemplate",""],["duoTemplate",""],["emailTemplate",""],["yubikeyTemplate",""],["webAuthnTemplate",""],["type","warning"],["bit-button","","buttonType","secondary",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-fw","text-muted",3,"title"],[1,"sr-only"],[1,"list-group-item","d-flex","align-items-center"],[1,"logo-2fa","d-flex","justify-content-center"],[3,"alt"],[1,"mx-4"],[1,"mb-0"],[1,"ml-auto"],["bit-button","","buttonType","secondary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-fw",3,"title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,x,3,3,"p",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,S,3,3,"p",1),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,b,10,6,"bit-callout",2),s.ɵɵtext(12,"\n"),s.ɵɵelementStart(13,"h2",3),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵtemplate(16,w,9,6,"small",1),s.ɵɵtext(17,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n"),s.ɵɵtemplate(19,C,3,3,"bit-callout",2),s.ɵɵtext(20,"\n"),s.ɵɵelementStart(21,"ul",4),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,P,24,11,"li",5),s.ɵɵtext(24,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n\n"),s.ɵɵtemplate(26,O,0,0,"ng-template",null,6,s.ɵɵtemplateRefExtractor),s.ɵɵtext(28,"\n"),s.ɵɵtemplate(29,k,0,0,"ng-template",null,7,s.ɵɵtemplateRefExtractor),s.ɵɵtext(31,"\n"),s.ɵɵtemplate(32,A,0,0,"ng-template",null,8,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n"),s.ɵɵtemplate(35,T,0,0,"ng-template",null,9,s.ɵɵtemplateRefExtractor),s.ɵɵtext(37,"\n"),s.ɵɵtemplate(38,M,0,0,"ng-template",null,10,s.ɵɵtemplateRefExtractor),s.ɵɵtext(40,"\n"),s.ɵɵtemplate(41,B,0,0,"ng-template",null,11,s.ɵɵtemplateRefExtractor),s.ɵɵtext(43,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,9,"twoStepLogin")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(13,D,!t.organizationId)),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(15,11,"providers"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showPolicyWarning),s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",t.providers))},directives:[h.NgIf,h.NgClass,h.NgForOf,v.CalloutComponent,g.ButtonComponent,f.PremiumBadgeComponent],pipes:[y.I18nPipe],encapsulation:2})},74155:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptFamilySponsorshipComponent=void 0;const r=n(50009),o=n(32621),a=n(57490),s=n(99729);function l(e,t){1&e&&(o.ɵɵelementStart(0,"div",1),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"img",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",3),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",4),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"span",5),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(8),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,4,"loading")))}class c extends r.BaseAcceptComponent{constructor(){super(...arguments),this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed",this.requiredParameters=["email","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){this.router.navigate(["/setup/families-for-enterprise"],{queryParams:e})}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){e.register?this.router.navigate(["/register"],{queryParams:{email:e.email}}):this.router.navigate(["/login"],{queryParams:{email:e.email}})}))}}t.AcceptFamilySponsorshipComponent=c,c.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(c)))(t||c)}}(),c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["app-accept-family-sponsorship"]],features:[o.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,l,17,6,"div",0),o.ɵɵtext(1,"\n")),2&e&&o.ɵɵproperty("ngIf",t.loading)},directives:[a.NgIf],pipes:[s.I18nPipe],encapsulation:2})},72855:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FamiliesForEnterpriseSetupComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(47594),n(91674),n(51554),n(63513),n(73828),n(9724),n(22931)),s=n(47937),l=n(96066),c=n(75118),d=n(5092),p=n(28360),u=n(32621),m=n(68012),h=n(73828),v=n(51554),g=n(91674),f=n(9724),y=n(47594),x=n(63513),S=n(64684),b=n(57490),w=n(96832),C=n(56820),I=n(28360),E=n(99729),P=["deleteOrganizationTemplate"];function O(e,t){1&e&&(u.ɵɵelementStart(0,"div",5),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",6),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",7),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function k(e,t){1&e&&(u.ɵɵelementStart(0,"div",5),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"span"),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(4,1,"badToken")))}function A(e,t){if(1&e&&(u.ɵɵelementStart(0,"option",18),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=t.$implicit;u.ɵɵproperty("ngValue",e.id),u.ɵɵadvance(1),u.ɵɵtextInterpolate(e.name)}}function T(e,t){1&e&&(u.ɵɵelementStart(0,"div",19),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"app-organization-plans"),u.ɵɵtext(3,"\n "),u.ɵɵelementEnd())}function M(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",10),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"button",20),u.ɵɵtext(3,"\n "),u.ɵɵelement(4,"i",21),u.ɵɵpipe(5,"i18n"),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"span"),u.ɵɵtext(8),u.ɵɵpipe(9,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(10,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(11,"\n "),u.ɵɵelementEnd()),2&e){u.ɵɵnextContext();const e=u.ɵɵreference(1);u.ɵɵadvance(2),u.ɵɵproperty("disabled",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(5,3,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(9,5,"acceptOffer"))}}function B(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"form",8,9),u.ɵɵlistener("ngSubmit",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().submit()})),u.ɵɵtext(2,"\n "),u.ɵɵelementStart(3,"p"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span"),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",10),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"label",11),u.ɵɵtext(13),u.ɵɵpipe(14,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n "),u.ɵɵelementStart(16,"select",12),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().selectedFamilyOrganizationId=t})),u.ɵɵtext(17,"\n "),u.ɵɵelementStart(18,"option",13),u.ɵɵtext(19),u.ɵɵpipe(20,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementStart(22,"option",14),u.ɵɵtext(23),u.ɵɵpipe(24,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(25,"\n "),u.ɵɵtemplate(26,A,2,2,"option",15),u.ɵɵtext(27,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(28,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(29,"\n "),u.ɵɵtemplate(30,T,4,0,"div",16),u.ɵɵtext(31,"\n "),u.ɵɵtemplate(32,M,12,7,"div",17),u.ɵɵtext(33,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵnextContext();u.ɵɵproperty("appApiAction",e.formPromise),u.ɵɵadvance(6),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,9,"acceptBitwardenFamiliesHelp")),u.ɵɵadvance(7),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(14,11,"sponsoredFamiliesSelectOffer")),u.ɵɵadvance(3),u.ɵɵproperty("ngModel",e.selectedFamilyOrganizationId),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("-- ",u.ɵɵpipeBind1(20,13,"select")," --"),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(24,15,"newFamiliesOrganization")),u.ɵɵadvance(3),u.ɵɵproperty("ngForOf",e.existingFamilyOrganizations),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",e.showNewOrganization),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.showNewOrganization)}}function D(e,t){}class R{constructor(e,t,n,i,r,o,a,s,l){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.apiService=r,this.syncService=o,this.validationService=a,this.organizationService=s,this.modalService=l,this.loading=!0,this.badToken=!1,this.showNewOrganization=!1,this._selectedFamilyOrganizationId=""}set organizationPlansComponent(e){e&&(e.plan=s.PlanType.FamiliesAnnually,e.product=l.ProductType.Families,e.acceptingSponsorship=!0,e.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this)))}ngOnInit(){return i(this,void 0,void 0,(function*(){document.body.classList.remove("layout_frontend"),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null==e.token)return this.platformUtilsService.showToast("error",null,this.i18nService.t("sponsoredFamiliesAcceptFailed"),{timeout:1e4}),void this.router.navigate(["/"]);this.token=e.token,yield this.syncService.fullSync(!0),this.badToken=!(yield this.apiService.postPreValidateSponsorshipToken(this.token)),this.loading=!1,this.existingFamilyOrganizations=(yield this.organizationService.getAll()).filter((e=>e.planProductType===l.ProductType.Families)),0===this.existingFamilyOrganizations.length&&(this.selectedFamilyOrganizationId="createNew")}))))}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.doSubmit(this._selectedFamilyOrganizationId),yield this.formPromise,this.formPromise=null}))}get selectedFamilyOrganizationId(){return this._selectedFamilyOrganizationId}set selectedFamilyOrganizationId(e){this._selectedFamilyOrganizationId=e,this.showNewOrganization="createNew"===e}doSubmit(e){return i(this,void 0,void 0,(function*(){try{const t=new c.OrganizationSponsorshipRedeemRequest;t.planSponsorshipType=a.PlanSponsorshipType.FamiliesForEnterprise,t.sponsoredOrganizationId=e,yield this.apiService.postRedeemSponsorship(this.token,t),this.platformUtilsService.showToast("success",null,this.i18nService.t("sponsoredFamiliesOfferRedeemed")),yield this.syncService.fullSync(!0),this.router.navigate(["/"])}catch(t){this.showNewOrganization&&(yield this.modalService.openViewRef(d.DeleteOrganizationComponent,this.deleteModalRef,(t=>{t.organizationId=e,t.deleteOrganizationRequestType="InvalidFamiliesForEnterprise",t.onSuccess.subscribe((()=>{this.router.navigate(["/"])}))}))),this.validationService.showError(this.i18nService.t("sponsorshipTokenHasExpired"))}}))}onOrganizationCreateSuccess(e){return i(this,void 0,void 0,(function*(){yield this.doSubmit(e.organizationId)}))}}t.FamiliesForEnterpriseSetupComponent=R,R.ɵfac=function(e){return new(e||R)(u.ɵɵdirectiveInject(m.Router),u.ɵɵdirectiveInject(h.PlatformUtilsService),u.ɵɵdirectiveInject(v.I18nService),u.ɵɵdirectiveInject(m.ActivatedRoute),u.ɵɵdirectiveInject(g.ApiService),u.ɵɵdirectiveInject(f.SyncService),u.ɵɵdirectiveInject(y.ValidationService),u.ɵɵdirectiveInject(x.OrganizationService),u.ɵɵdirectiveInject(S.ModalService))},R.ɵcmp=u.ɵɵdefineComponent({type:R,selectors:[["families-for-enterprise-setup"]],viewQuery:function(e,t){if(1&e&&(u.ɵɵviewQuery(p.OrganizationPlansComponent,5),u.ɵɵviewQuery(P,7,r.ViewContainerRef)),2&e){let e;u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.organizationPlansComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.deleteModalRef=e.first)}},decls:19,vars:6,consts:[[1,"container","page-content"],[1,"page-header"],["class","mt-5 d-flex justify-content-center",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["deleteOrganizationTemplate",""],[1,"mt-5","d-flex","justify-content-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group","col-6"],["for","availableSponsorshipOrg"],["id","availableSponsorshipOrg","name","Available Sponsorship Organization","required","",1,"form-control",3,"ngModel","ngModelChange"],["value","","disabled",""],["value","createNew"],[3,"ngValue",4,"ngFor","ngForOf"],["class","col-12",4,"ngIf"],["class","form-group col-6",4,"ngIf"],[3,"ngValue"],[1,"col-12"],["type","submit",1,"btn","btn-primary","mt-2","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"h1"),u.ɵɵtext(5),u.ɵɵpipe(6,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(7,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵtemplate(9,O,9,6,"div",2),u.ɵɵtext(10,"\n "),u.ɵɵtemplate(11,k,6,3,"div",2),u.ɵɵtext(12,"\n "),u.ɵɵtemplate(13,B,34,17,"form",3),u.ɵɵtext(14,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n"),u.ɵɵtemplate(16,D,0,0,"ng-template",null,4,u.ɵɵtemplateRefExtractor),u.ɵɵtext(18,"\n")),2&e&&(u.ɵɵadvance(5),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(6,4,"sponsoredFamiliesOffer")),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",t.loading),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading&&t.badToken),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading&&!t.badToken))},directives:[b.NgIf,w.NgControlStatusGroup,w.NgForm,C.ApiActionDirective,w.SelectControlValueAccessor,w.RequiredValidator,w.NgControlStatus,w.NgModel,w.NgSelectOption,w.ɵNgSelectMultipleOption,b.NgForOf,I.OrganizationPlansComponent],pipes:[E.I18nPipe],encapsulation:2})},79002:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;n(96832),n(68012),n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055);const r=n(26140),o=n(32621),a=n(85714),s=n(51554),l=n(73828),c=n(97445),d=n(32034),p=n(68012),u=n(62166),m=n(36631),h=n(57055),v=n(96832),g=n(56820),f=n(57490),y=n(4158),x=n(51626),S=n(44995),b=n(99729);function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",13),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"vaultExportDisabled")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"personalVaultExportPolicyInEffect"),"\n "))}function C(e,t){if(1&e&&o.ɵɵelement(0,"app-export-scope-callout",14),2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("organizationId",e.organizationId)}}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",15),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("value",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class E extends r.ExportComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,a,s,l,c),this.route=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId})))),yield e.ngOnInit.call(this)}))}checkExportDisabled(){return i(this,void 0,void 0,(function*(){}))}getExportData(){return this.exportService.getOrganizationExport(this.organizationId,this.format)}getFileName(){return super.getFileName("org")}collectEvent(){return i(this,void 0,void 0,(function*(){}))}}t.ExportComponent=E,E.ɵfac=function(e){return new(e||E)(o.ɵɵdirectiveInject(a.CryptoService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.ExportService),o.ɵɵdirectiveInject(d.EventService),o.ɵɵdirectiveInject(p.ActivatedRoute),o.ɵɵdirectiveInject(u.PolicyService),o.ɵɵdirectiveInject(m.LogService),o.ɵɵdirectiveInject(h.UserVerificationService),o.ɵɵdirectiveInject(v.FormBuilder))},E.ɵcmp=o.ɵɵdefineComponent({type:E,selectors:[["app-org-export"]],features:[o.ɵɵInheritDefinitionFeature],decls:49,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"page-header"],["type","error",3,"title",4,"ngIf"],[3,"organizationId",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","format"],["id","format","name","Format","formControlName","format",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["ngDefaultControl","","formControlName","secret","name","secret"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","error",3,"title"],[3,"organizationId"],[3,"value"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"h1"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n\n "),o.ɵɵtemplate(10,w,4,6,"app-callout",3),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,C,1,1,"app-export-scope-callout",4),o.ɵɵtext(13,"\n\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,I,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",5),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"div",6),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"app-user-verification",10),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"button",11),o.ɵɵtext(39,"\n "),o.ɵɵelement(40,"i",12),o.ɵɵpipe(41,"i18n"),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"span"),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.exportForm),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,10,"exportVault")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.disabledByPolicy),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.disabledByPolicy),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,12,"fileFormat")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.formatOptions),o.ɵɵadvance(14),o.ɵɵproperty("disabled",e.loading||t.exportForm.disabled),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(41,14,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(45,16,"exportVault"))}},directives:[v.NgControlStatusGroup,g.ApiActionDirective,v.FormGroupDirective,f.NgIf,v.SelectControlValueAccessor,v.NgControlStatus,v.FormControlName,f.NgForOf,y.UserVerificationComponent,v.DefaultValueAccessor,x.CalloutComponent,S.ExportScopeCalloutComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[b.I18nPipe],encapsulation:2})},44336:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExposedPasswordsReportComponent=void 0;n(68012),n(64684),n(42982),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(8489),o=n(32621),a=n(45330),s=n(42982),l=n(64684),c=n(45552),d=n(73569),p=n(63513),u=n(68012),m=n(44809),h=n(52767),v=n(57490),g=n(51626),f=n(18310),y=n(1142),x=n(39159),S=n(99729);function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noExposedPasswords"),"\n "))}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",19),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",21),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",22),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",21),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,w,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,C,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,I,9,6,"ng-container",7),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,E,9,6,"ng-container",7),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span",18),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵpipe(29,"number"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(28,7,"exposedXTimes",o.ɵɵpipeBind1(29,10,i.exposedPasswordMap.get(e.id))),"\n ")}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,32,12,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,4,"exposedPasswordsFound")),o.ɵɵproperty("useAlertRole",!0),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,6,"exposedPasswordsFoundDesc",o.ɵɵpipeBind1(6,9,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",5),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",6),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,11,"ng-container",7),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.ExposedPasswordsReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,r,s),this.organizationService=o,this.route=a}ngOnInit(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield this.checkAccess()}))))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.ExposedPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.AuditService),o.ɵɵdirectiveInject(l.ModalService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.StateService),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.ActivatedRoute),o.ɵɵdirectiveInject(m.PasswordRepromptService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-org-exposed-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:26,vars:14,consts:[[1,"page-header"],["bit-button","","buttonType","primary","type","button",1,"btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],[4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title","useAlertRole"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementStart(11,"button",1),o.ɵɵlistener("click",(function(){return t.load()})),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"i",2),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span"),o.ɵɵtext(17),o.ɵɵpipe(18,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n"),o.ɵɵtemplate(21,k,6,2,"div",3),o.ɵɵtext(22,"\n"),o.ɵɵtemplate(23,A,0,0,"ng-template",null,4,o.ɵɵtemplateRefExtractor),o.ɵɵtext(25,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,6,"exposedPasswordsReport")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,8,"exposedPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(14,10,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(18,12,"checkExposedPasswords")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.ButtonComponent,v.NgIf,g.CalloutComponent,v.NgForOf,f.IconComponent,y.StopClickDirective,x.StopPropDirective],pipes:[S.I18nPipe,v.DecimalPipe],encapsulation:2})},65347:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportComponent=void 0;n(68012),n(51554),n(11223),n(36631),n(63513),n(73828),n(62166);const r=n(56038),o=n(32621),a=n(51554),s=n(11223),l=n(68012),c=n(73828),d=n(62166),p=n(63513),u=n(36631),m=n(57490),h=n(96832),v=n(51626),g=n(99729);function f(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",18),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffectImports"),"\n"))}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",19),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",19),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"option",20),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,x,2,2,"option",9),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.importOptions)}}function b(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",22),o.ɵɵtext(3,"\n https://bitwarden.com/help/export-your-data/"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementContainerEnd())}function w(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",23),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-lastpass/"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementContainerEnd())}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the KeePassX desktop application, navigate to "Database" → "Export to CSV file" and\n save the CSV file.\n '),o.ɵɵelementContainerEnd())}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n In the Avira web vault, go to "Settings" → "My Data" → "Export data" and save the\n CSV file.\n '),o.ɵɵelementContainerEnd())}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n In the Blur web vault, click your username at the top and go to "Settings" → "Export\n Data", then click "Export CSV" for your "Accounts".\n '),o.ɵɵelementContainerEnd())}function P(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SaveInCloud desktop application, navigate to "File" → "Export" → "As XML"\n and save the XML file.\n '),o.ɵɵelementContainerEnd())}function O(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to "Settings" → "Export" button and save the file "As CSV".\n '),o.ɵɵelementContainerEnd())}function k(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the KeePass 2 desktop application, navigate to "File" → "Export" and select the\n "KeePass XML (2.x)" option.\n '),o.ɵɵelementContainerEnd())}function A(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Universal Password Manager desktop application, navigate to "Database" →\n "Export" and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function T(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to "Settings". Click the "Export accounts" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function M(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and\n click "Show me my data" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function B(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click\n "Export" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function D(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .json File" option. Click\n "Export" to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function R(e,t){1&e&&(o.ɵɵelementStart(0,"span"),o.ɵɵtext(1,"\n The process is exactly the same as importing from Google Chrome.\n "),o.ɵɵelementEnd())}function F(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,R,2,0,"span",10),o.ɵɵtext(3,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(4,"a",24),o.ɵɵtext(5,"\n https://bitwarden.com/help/import-from-chrome/"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("ngIf","chromecsv"!==e.format)}}function U(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",25),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-firefox/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function V(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",26),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-safari/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function N(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-1password/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function _(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Dragon desktop application, navigate to "File" → "Export" → "To\n XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export"\n button and save the XML file.\n '),o.ɵɵelementContainerEnd())}function j(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Enpass desktop application, navigate to "File" → "Export" → "As CSV".\n Select "OK" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n '),o.ɵɵelementContainerEnd())}function z(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Enpass 6 desktop application, click the menu button and navigate to "File" →\n "Export". Select the ".json" file format option and save the JSON file.\n '),o.ɵɵelementContainerEnd())}function H(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Safe desktop application, navigate to "File" → "Export To" → "XML\n format..." and save the XML file.\n '),o.ɵɵelementContainerEnd())}function L(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log in to Dashlane, click on "My Account" → "Settings" → "Export file" and select\n "Export as a CSV file". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n '),o.ɵɵelementContainerEnd())}function K(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n "),o.ɵɵelementContainerEnd())}function q(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the mSecure desktop application, navigate to "File" → "Export" → "CSV File..."\n and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function G(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Sticky Password desktop application, navigate to "Menu" (top right) → "Export"\n → "Export all". Select the unencrypted format XML option and save the XML file.\n '),o.ɵɵelementContainerEnd())}function W(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n "App Settings". Click the "Export" button, enter your password and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function $(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to "Data" → "Export". Click the\n "download HTML+JSON" button to save the HTML file.\n '),o.ɵɵelementContainerEnd())}function Y(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) →\n "Options" → "Account & Data" and click the "Export" button. Select all of your data,\n change the "Format" to "CSV file" and then click the "Export" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n '),o.ɵɵelementContainerEnd())}function Q(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Passbolt web vault and navigate to the "Passwords" listing. Select all of the\n passwords you would like to export and click the "Export" button at the top of the listing.\n Choose the "csv (lastpass)" export format and click the "Export" button.\n '),o.ɵɵelementContainerEnd())}function J(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Ascendo DataVault desktop application, navigate to "Tools" → "Export". In the\n dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save\n the CSV file.\n '),o.ɵɵelementContainerEnd())}function Z(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Boss desktop application, navigate to "File" → "Export data" →\n "Password Boss JSON - not encrypted" and save the JSON file.\n '),o.ɵɵelementContainerEnd())}function X(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" → "Export Secrets".\n Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n '),o.ɵɵelementStart(2,"code"),o.ɵɵtext(3,"zoho_export.csv"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function ee(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to "Export" → "Export as CSV" and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function te(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore"\n section and click "Backup to CSV" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ne(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n "),o.ɵɵelementStart(2,"a",28),o.ɵɵtext(3,"GNOME Keyring Import/Export"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n python script to your desktop as "),o.ɵɵelementStart(5,"code"),o.ɵɵtext(6,"pw_helper.py"),o.ɵɵelementEnd(),o.ɵɵtext(7,". Open terminal and run\n "),o.ɵɵelementStart(8,"code"),o.ɵɵtext(9,"chmod +rx Desktop/pw_helper.py"),o.ɵɵelementEnd(),o.ɵɵtext(10," and then\n "),o.ɵɵelementStart(11,"code"),o.ɵɵtext(12,"python Desktop/pw_helper.py export Desktop/my_passwords.json"),o.ɵɵelementEnd(),o.ɵɵtext(13,". Then upload the\n resulting "),o.ɵɵelementStart(14,"code"),o.ɵɵtext(15,"my_passwords.json"),o.ɵɵelementEnd(),o.ɵɵtext(16," file here to Bitwarden.\n "),o.ɵɵelementContainerEnd())}function ie(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Agent desktop application navigate to "File" → "Export", select the\n "Fields to export" button and check all of the fields, change the "Output format" to "CSV",\n and then click the "Start" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function re(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Passpack website vault and navigate to "Settings" → "Export", then click the\n "Download" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function oe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open your Passman vault and click on "Settings" in the bottom left corner. In the "Settings"\n window switch to the "Export credentials" tab and choose "JSON" as the export type. Enter your\n vault\'s passphrase and click the "Export" button to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function ae(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to CSV file" option to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function se(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to JSON file" option to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function le(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the F-Secure KEY desktop application and navigate to "Settings" → "Export\n Passwords". Select the "Export" button, enter your master password, and save the FSK file.\n '),o.ɵɵelementContainerEnd())}function ce(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Kaspersky Password Manager desktop application and navigate to "Settings" →\n "Import/Export". Locate the "Export to text file" section and select the "Export" button to\n save the TXT file.\n '),o.ɵɵelementContainerEnd())}function de(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the RememBear desktop application and navigate to "Settings" → "Account" →\n "Export". Enter your master password and select the "Export Anyway" button to save the CSV\n file.\n '),o.ɵɵelementContainerEnd())}function pe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the PasswordWallet desktop application and navigate to "File" → "Export" →\n "Visible entries to text file". Enter your password and select the "Ok" button to save the TXT\n file.\n '),o.ɵɵelementContainerEnd())}function ue(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Myki desktop browser extension and navigate to "Advanced" → "Export Accounts"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer\'s downloads folder.\n '),o.ɵɵelementContainerEnd())}function me(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n "),o.ɵɵelementContainerEnd())}function he(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the LogMeOnce browser extension, then navigate to "Open Menu" → "Export To" and\n select "CSV File" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ve(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the BlackBerry Password Keeper application, then navigate to "Settings" →\n "Import/Export". Select "Export Passwords" and follow the instructions on screen to save the\n unencrypted CSV file.\n '),o.ɵɵelementContainerEnd())}function ge(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Buttercup desktop application and unlock your vault. Right click on your vault\'s icon\n and select "Export" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function fe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Codebook desktop application and log in. Navigate to "File" → "Export all", then\n click "Yes" on the dialog and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ye(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n "),o.ɵɵelementContainerEnd())}function xe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n From the Yoti browser extension, click on "Settings", then "Export Saved Logins" and save the\n CSV file.\n '),o.ɵɵelementContainerEnd())}function Se(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",21),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,5,0,"ng-container",10),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,w,5,0,"ng-container",10),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,C,2,0,"ng-container",10),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,I,2,0,"ng-container",10),o.ɵɵtext(9,"\n "),o.ɵɵtemplate(10,E,2,0,"ng-container",10),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,2,0,"ng-container",10),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,O,2,0,"ng-container",10),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,k,2,0,"ng-container",10),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,A,2,0,"ng-container",10),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,T,2,0,"ng-container",10),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,M,2,0,"ng-container",10),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,B,2,0,"ng-container",10),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,D,2,0,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,F,7,1,"ng-container",10),o.ɵɵtext(29,"\n "),o.ɵɵtemplate(30,U,5,0,"ng-container",10),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,V,5,0,"ng-container",10),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,N,5,0,"ng-container",10),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,_,2,0,"ng-container",10),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,j,2,0,"ng-container",10),o.ɵɵtext(39,"\n "),o.ɵɵtemplate(40,z,2,0,"ng-container",10),o.ɵɵtext(41,"\n "),o.ɵɵtemplate(42,H,2,0,"ng-container",10),o.ɵɵtext(43,"\n "),o.ɵɵtemplate(44,L,2,0,"ng-container",10),o.ɵɵtext(45,"\n "),o.ɵɵtemplate(46,K,2,0,"ng-container",10),o.ɵɵtext(47,"\n "),o.ɵɵtemplate(48,q,2,0,"ng-container",10),o.ɵɵtext(49,"\n "),o.ɵɵtemplate(50,G,2,0,"ng-container",10),o.ɵɵtext(51,"\n "),o.ɵɵtemplate(52,W,2,0,"ng-container",10),o.ɵɵtext(53,"\n "),o.ɵɵtemplate(54,$,2,0,"ng-container",10),o.ɵɵtext(55,"\n "),o.ɵɵtemplate(56,Y,2,0,"ng-container",10),o.ɵɵtext(57,"\n "),o.ɵɵtemplate(58,Q,2,0,"ng-container",10),o.ɵɵtext(59,"\n "),o.ɵɵtemplate(60,J,2,0,"ng-container",10),o.ɵɵtext(61,"\n "),o.ɵɵtemplate(62,Z,2,0,"ng-container",10),o.ɵɵtext(63,"\n "),o.ɵɵtemplate(64,X,5,0,"ng-container",10),o.ɵɵtext(65,"\n "),o.ɵɵtemplate(66,ee,2,0,"ng-container",10),o.ɵɵtext(67,"\n "),o.ɵɵtemplate(68,te,2,0,"ng-container",10),o.ɵɵtext(69,"\n "),o.ɵɵtemplate(70,ne,17,0,"ng-container",10),o.ɵɵtext(71,"\n "),o.ɵɵtemplate(72,ie,2,0,"ng-container",10),o.ɵɵtext(73,"\n "),o.ɵɵtemplate(74,re,2,0,"ng-container",10),o.ɵɵtext(75,"\n "),o.ɵɵtemplate(76,oe,2,0,"ng-container",10),o.ɵɵtext(77,"\n "),o.ɵɵtemplate(78,ae,2,0,"ng-container",10),o.ɵɵtext(79,"\n "),o.ɵɵtemplate(80,se,2,0,"ng-container",10),o.ɵɵtext(81,"\n "),o.ɵɵtemplate(82,le,2,0,"ng-container",10),o.ɵɵtext(83,"\n "),o.ɵɵtemplate(84,ce,2,0,"ng-container",10),o.ɵɵtext(85,"\n "),o.ɵɵtemplate(86,de,2,0,"ng-container",10),o.ɵɵtext(87,"\n "),o.ɵɵtemplate(88,pe,2,0,"ng-container",10),o.ɵɵtext(89,"\n "),o.ɵɵtemplate(90,ue,2,0,"ng-container",10),o.ɵɵtext(91,"\n "),o.ɵɵtemplate(92,me,2,0,"ng-container",10),o.ɵɵtext(93,"\n "),o.ɵɵtemplate(94,he,2,0,"ng-container",10),o.ɵɵtext(95,"\n "),o.ɵɵtemplate(96,ve,2,0,"ng-container",10),o.ɵɵtext(97,"\n "),o.ɵɵtemplate(98,ge,2,0,"ng-container",10),o.ɵɵtext(99,"\n "),o.ɵɵtemplate(100,fe,2,0,"ng-container",10),o.ɵɵtext(101,"\n "),o.ɵɵtemplate(102,ye,2,0,"ng-container",10),o.ɵɵtext(103,"\n "),o.ɵɵtemplate(104,xe,2,0,"ng-container",10),o.ɵɵtext(105,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵpropertyInterpolate("title",e.getFormatInstructionTitle()),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","bitwardencsv"===e.format||"bitwardenjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","lastpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepassxcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","aviracsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","blurcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","safeincloudxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","padlockcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepass2xml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","upmcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","saferpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","meldiumcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepercsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keeperjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","chromecsv"===e.format||"operacsv"===e.format||"vivaldicsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","firefoxcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","safaricsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","1password1pux"===e.format||"1password1pif"===e.format||"1passwordwincsv"===e.format||"1passwordmaccsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passworddragonxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","enpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","enpassjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","pwsafexml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","dashlanecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","dashlanejson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","msecurecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","stickypasswordxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","truekeycsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","clipperzhtml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","roboformcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passboltcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","ascendocsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordbossjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","zohovaultcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","splashidcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passkeepcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","gnomejson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordagentcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passpackcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passmanjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","avastcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","avastjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","fsecurefsk"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","kasperskytxt"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","remembearcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordwallettxt"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","mykicsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","securesafecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","logmeoncecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","blackberrycsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","buttercupcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","codebookcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","encryptrcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","yoticsv"===e.format)}}const be=function(e){return{manual:e}};class we extends r.ImportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,r,o,s),this.route=i,this.organizationService=a}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organizationId=t.organizationId,this.successNavigate=["organizations",this.organizationId,"vault"],yield e.ngOnInit.call(this),this.importBlockedByPolicy=!1}))));const t=yield this.organizationService.get(this.organizationId);this.organizationName=t.name}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("importWarning",this.organizationName),this.i18nService.t("warning"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))&&e.submit.call(this)}))}}t.ImportComponent=we,we.ɵfac=function(e){return new(e||we)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.ImportService),o.ɵɵdirectiveInject(l.Router),o.ɵɵdirectiveInject(l.ActivatedRoute),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.PolicyService),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.LogService))},we.ɵcmp=o.ɵɵdefineComponent({type:we,selectors:[["app-org-import"]],features:[o.ɵɵInheritDefinitionFeature],decls:69,vars:31,consts:[[1,"page-header"],["type","info",4,"ngIf"],["ngNativeValidate","",3,"ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","type"],["id","type","name","Format","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[4,"ngIf"],["type","info",3,"title",4,"ngIf"],["for","file"],["type","file","id","file","name","file",1,"form-control-file",3,"disabled"],["for","fileContents"],["id","fileContents","name","FileContents",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info"],[3,"ngValue"],["value","-","disabled",""],["type","info",3,"title"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/export-your-data/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-lastpass/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-chrome/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-firefox/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-safari/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-1password/"],["target","_blank","rel","noopener","href","https://bit.ly/2GpOMTg"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵtemplate(7,f,3,3,"app-callout",1),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"div",4),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵlistener("ngModelChange",(function(e){return t.format=e})),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,y,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,S,6,1,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,Se,106,53,"app-callout",11),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"div",4),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",5),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",6),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"label",12),o.ɵɵtext(41),o.ɵɵpipe(42,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"input",13),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",6),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"label",14),o.ɵɵtext(52),o.ɵɵpipe(53,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"textarea",15),o.ɵɵlistener("ngModelChange",(function(e){return t.fileContents=e})),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"button",16),o.ɵɵtext(59,"\n "),o.ɵɵelement(60,"i",17),o.ɵɵpipe(61,"i18n"),o.ɵɵtext(62,"\n "),o.ɵɵelementStart(63,"span"),o.ɵɵtext(64),o.ɵɵpipe(65,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"importData")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.importBlockedByPolicy),o.ɵɵadvance(12),o.ɵɵtextInterpolate1("1. ",o.ɵɵpipeBind1(20,19,"selectFormat"),""),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.format)("disabled",t.importBlockedByPolicy),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",t.featuredImportOptions),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.importOptions&&t.importOptions.length),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",t.format),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("2. ",o.ɵɵpipeBind1(42,21,"selectImportFile"),""),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.importBlockedByPolicy),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(53,23,"orCopyPasteFileContents")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.fileContents)("disabled",t.importBlockedByPolicy),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loading||t.importBlockedByPolicy)("ngClass",o.ɵɵpureFunction1(29,be,t.importBlockedByPolicy)),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(61,25,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(65,27,"importData")))},directives:[m.NgIf,h.NgControlStatusGroup,h.NgForm,h.SelectControlValueAccessor,h.RequiredValidator,h.NgControlStatus,h.NgModel,m.NgForOf,h.DefaultValueAccessor,m.NgClass,v.CalloutComponent,h.NgSelectOption,h.ɵNgSelectMultipleOption],pipes:[g.I18nPipe],encapsulation:2})},86661:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InactiveTwoFactorReportComponent=void 0;n(68012),n(64684),n(45330),n(36631),n(45552),n(63513),n(44809),n(73569);const r=n(66916),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(36631),u=n(44809),m=n(63513),h=n(57490),v=n(51626),g=n(18310),f=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noInactive2fa"),"\n "))}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",18),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",19),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"a",20),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit,t=o.ɵɵnextContext(3);o.ɵɵpropertyInterpolate("href",t.cipherDocs.get(e.id),o.ɵɵsanitizeUrl),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,2,"instructions"),"")}}function P(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",15),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,C,9,6,"ng-container",1),o.ɵɵtext(14,"\n "),o.ɵɵtemplate(15,I,9,6,"ng-container",1),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"br"),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"td",16),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,3,4,"a",17),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(10,7,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",n.cipherDocs.has(e.id))}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,28,9,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"inactive2faFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"inactive2faFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.InactiveTwoFactorReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,o,a),this.route=r,this.organizationService=s}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}}t.InactiveTwoFactorReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.LogService),o.ɵɵdirectiveInject(u.PasswordRepromptService),o.ɵɵdirectiveInject(m.OrganizationService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-inactive-two-factor-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"text-right"],["class","badge badge-primary","target","_blank","rel","noopener",3,"href",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["target","_blank","rel","noopener",1,"badge","badge-primary",3,"href"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,S,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,b,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,k,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,A,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"inactive2faReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"inactive2faReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,g.IconComponent,f.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},1128:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReusedPasswordsReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(99997),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(63513),u=n(44809),m=n(57490),h=n(51626),v=n(18310),g=n(1142),f=n(39159),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noReusedPasswords"),"\n "))}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",19),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",21),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,w,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,C,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,I,9,6,"ng-container",1),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,E,9,6,"ng-container",1),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span",18),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(28,7,"reusedXTimes",i.passwordUseMap.get(e.login.password)),"\n ")}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,31,10,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"reusedPasswordsFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"reusedPasswordsFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.ReusedPasswordsReportComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,a),this.route=r,this.organizationService=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.ReusedPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.PasswordRepromptService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-reused-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,x,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,S,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,k,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,A,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"reusedPasswordsReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"reusedPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,g.StopClickDirective,f.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},706:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ToolsComponent=void 0;n(68012),n(45552),n(63513);const r=n(32621),o=n(68012),a=n(63513),s=n(45552),l=n(57490),c=n(1142),d=n(99729);function p(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function u(e,t){1&e&&(r.ɵɵelementStart(0,"div",9),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",10),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",11),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",12),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"a",13),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"tools")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"importData"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(14,7,"exportVault"),"\n "))}function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"a",23),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).upgradeOrganization()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",15),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementStart(5,"div",16),r.ɵɵtext(6,"\n "),r.ɵɵtemplate(7,m,3,3,"a",17),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",11),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"a",18),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"a",19),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"a",20),r.ɵɵtext(22),r.ɵɵpipe(23,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"a",21),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"a",22),r.ɵɵtext(30),r.ɵɵpipe(31,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,7,"reports"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.accessReports),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,9,"exposedPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(19,11,"reusedPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(23,13,"weakPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(27,15,"unsecuredWebsitesReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(31,17,"inactive2faReport"),"\n ")}}function v(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",4),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",5),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,u,17,9,"div",6),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,h,34,19,"div",7),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",8),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"router-outlet"),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.organization.canAccessImportExport),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canAccessReports)}}class g{constructor(e,t,n){this.route=e,this.organizationService=t,this.messagingService=n,this.accessReports=!1,this.loading=!0}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.accessReports=this.organization.useTotp,this.loading=!1}))))}upgradeOrganization(){this.messagingService.send("upgradeOrganization",{organizationId:this.organization.id})}}t.ToolsComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService),r.ɵɵdirectiveInject(s.MessagingService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-org-tools"]],decls:7,vars:2,consts:[[1,"container","page-content"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"row"],[1,"col-3"],["class","card mb-4",4,"ngIf"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card","mb-4"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","import","routerLinkActive","active",1,"list-group-item"],["routerLink","export","routerLinkActive","active",1,"list-group-item"],[1,"card"],[1,"card-header","d-flex"],[1,"ml-auto"],["href","#","appStopClick","","class","badge badge-primary",3,"click",4,"ngIf"],["routerLink","exposed-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","reused-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","weak-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","unsecured-websites-report","routerLinkActive","active",1,"list-group-item"],["routerLink","inactive-two-factor-report","routerLinkActive","active",1,"list-group-item"],["href","#","appStopClick","",1,"badge","badge-primary",3,"click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,p,9,6,"ng-container",1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,v,17,2,"ng-container",1),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.loading))},directives:[l.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive,c.StopClickDirective],pipes:[d.I18nPipe],encapsulation:2})},43850:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnsecuredWebsitesReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(51948),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(63513),u=n(44809),m=n(57490),h=n(51626),v=n(18310),g=n(1142),f=n(39159),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noUnsecuredWebsites"),"\n "))}function w(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",17),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",15),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,w,9,6,"ng-container",1),o.ɵɵtext(14,"\n "),o.ɵɵtemplate(15,C,9,6,"ng-container",1),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"br"),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(10,6,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle)}}function E(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,I,23,8,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"unsecuredWebsitesFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"unsecuredWebsitesFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,E,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function O(e,t){}class k extends r.UnsecuredWebsitesReportComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,a),this.route=r,this.organizationService=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}}t.UnsecuredWebsitesReportComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.PasswordRepromptService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-unsecured-websites-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,x,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,S,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,P,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,O,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"unsecuredWebsitesReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"unsecuredWebsitesReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,g.StopClickDirective,f.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},57785:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WeakPasswordsReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(84275),n(44809),n(73569);const r=n(64021),o=n(32621),a=n(45330),s=n(84275),l=n(64684),c=n(45552),d=n(73569),p=n(68012),u=n(63513),m=n(44809),h=n(57490),v=n(51626),g=n(18310),f=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noWeakPasswords"),"\n "))}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",18),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",19),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function P(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,C,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,I,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,E,9,6,"ng-container",1),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,P,9,6,"ng-container",1),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span"),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("badge badge-",i.passwordStrengthMap.get(e.id)[1],""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,10,i.passwordStrengthMap.get(e.id)[0]),"\n ")}}function k(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,O,31,12,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"weakPasswordsFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"weakPasswordsFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function A(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,k,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function T(e,t){}class M extends r.WeakPasswordsReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,r,s),this.route=o,this.organizationService=a}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.WeakPasswordsReportComponent=M,M.ɵfac=function(e){return new(e||M)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PasswordGenerationService),o.ɵɵdirectiveInject(l.ModalService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.StateService),o.ɵɵdirectiveInject(p.ActivatedRoute),o.ɵɵdirectiveInject(u.OrganizationService),o.ɵɵdirectiveInject(m.PasswordRepromptService))},M.ɵcmp=o.ɵɵdefineComponent({type:M,selectors:[["app-weak-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,S,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,b,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,A,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,T,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"weakPasswordsReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"weakPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,g.IconComponent,f.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},93880:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(91674),n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344);const r=n(82789),o=n(49624),a=n(62415),s=n(16391),l=n(41141),c=n(32621),d=n(45330),p=n(88308),u=n(51554),m=n(73828),h=n(42982),v=n(73569),g=n(3174),f=n(52344),y=n(84275),x=n(91674),S=n(45552),b=n(32034),w=n(62166),C=n(36631),I=n(44809),E=n(63513),P=n(96832),O=n(56820),k=n(8863),A=n(57490),T=n(95746),M=n(51626),B=n(45728),D=n(48198),R=n(1142),F=n(48403),U=n(99729);function V(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",26),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function N(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",16),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",17),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",27),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"select",28),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.type=t})),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,N,2,2,"option",29),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,4,"whatTypeOfItem")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.typeOptions)}}function j(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.id),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"label",31),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"select",32),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.folderId=t})),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,j,2,2,"option",29),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,4,"folder")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.folders)}}function H(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelement(5,"i",44),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(3,1,"copyUsername")))}function L(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",57),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).generatePassword()})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",58),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}2&e&&c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,1,"generatePassword"))}function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",51),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,L,5,3,"a",52),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"a",53,54),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).checkPassword()})),c.ɵɵpipe(6,"i18n"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"i",55),c.ɵɵtext(9,"\n "),c.ɵɵelement(10,"i",56),c.ɵɵpipe(11,"i18n"),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(5),t=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.cipher.viewPassword),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(6,6,"checkPassword")),c.ɵɵproperty("appApiAction",t.checkPasswordPromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(11,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function q(e,t){1&e&&c.ɵɵelement(0,"app-premium-badge",62)}function G(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",63),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).upgradeOrganization()})),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function W(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",59),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,q,1,0,"app-premium-badge",60),c.ɵɵtext(6,"\n "),c.ɵɵtemplate(7,G,3,3,"a",61),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"verificationCodeTotp")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const $=function(e){return{"stroke-dashoffset.px":e}};function Y(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",64),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"span",65),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"span",66),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵnamespaceSVG(),c.ɵɵelementStart(7,"svg"),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"g"),c.ɵɵtext(10,"\n "),c.ɵɵelement(11,"circle",67),c.ɵɵtext(12,"\n "),c.ɵɵelement(13,"circle",68),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵnamespaceHTML(),c.ɵɵelementStart(18,"span",69),c.ɵɵpipe(19,"i18n"),c.ɵɵtext(20),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"button",70),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),c.ɵɵpipe(23,"i18n"),c.ɵɵtext(24,"\n "),c.ɵɵelement(25,"i",71),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(5),c.ɵɵtextInterpolate(e.totpSec),c.ɵɵadvance(6),c.ɵɵproperty("ngStyle",c.ɵɵpureFunction1(9,$,e.totpDash)),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(19,5,"verificationCodeTotp")),c.ɵɵadvance(2),c.ɵɵtextInterpolate(e.totpCodeFormatted),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function Q(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function J(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",82),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(4).removeUri(t)})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",83),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}2&e&&c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,1,"remove"))}function Z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",16),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",73),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",74),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",34),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",75),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.uri=t})),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"div",41),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"button",42),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).launch(t)})),c.ɵɵpipe(16,"i18n"),c.ɵɵtext(17,"\n "),c.ɵɵelement(18,"i",76),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementStart(21,"button",50),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),c.ɵɵpipe(22,"i18n"),c.ɵɵtext(23,"\n "),c.ɵɵelement(24,"i",44),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"div",77),c.ɵɵtext(31,"\n "),c.ɵɵelementStart(32,"div",37),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"label",74),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"a",78),c.ɵɵpipe(39,"i18n"),c.ɵɵtext(40,"\n "),c.ɵɵelement(41,"i",79),c.ɵɵtext(42,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(43,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"div",37),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"select",80),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).loginUriMatchChanged(t)})),c.ɵɵtext(48,"\n "),c.ɵɵtemplate(49,Q,2,2,"option",29),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵtemplate(52,J,5,3,"button",81),c.ɵɵtext(53,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(55,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("for","loginUri",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(6,19,"uriPosition",n+1)),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("id","loginUri",n,""),c.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),c.ɵɵpropertyInterpolate1("placeholder","",c.ɵɵpipeBind1(11,22,"ex")," https://google.com"),c.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(16,24,"launch")),c.ɵɵproperty("disabled",!e.canLaunch),c.ɵɵadvance(6),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(22,26,"copyUri")),c.ɵɵadvance(13),c.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(39,30,"learnMore")),c.ɵɵadvance(9),c.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),c.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),c.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",i.uriMatchOptions),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function X(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Z,56,32,"div",72),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function ee(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",84),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).addUri()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",85),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1(" ",c.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const te=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},ne=function(e){return{low:e}};function ie(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",33),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",34),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",35),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.username=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,H,8,3,"div",36),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"div",17),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"div",37),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"label",38),c.ɵɵtext(23),c.ɵɵpipe(24,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,K,14,10,"div",39),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",34),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"input",40),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.password=t})),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementStart(33,"div",41),c.ɵɵtext(34,"\n "),c.ɵɵelementStart(35,"button",42),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).togglePassword()})),c.ɵɵpipe(36,"i18n"),c.ɵɵtext(37,"\n "),c.ɵɵelement(38,"i",43),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"button",42),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),c.ɵɵpipe(42,"i18n"),c.ɵɵtext(43,"\n "),c.ɵɵelement(44,"i",44),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n "),c.ɵɵelementStart(51,"div",16),c.ɵɵtext(52,"\n "),c.ɵɵelementStart(53,"div",17),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"label",45),c.ɵɵtext(56),c.ɵɵpipe(57,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(58,"\n "),c.ɵɵelementStart(59,"input",46),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.totp=t})),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(61,"\n "),c.ɵɵelementStart(62,"div",47),c.ɵɵtext(63,"\n "),c.ɵɵtemplate(64,W,9,5,"div",21),c.ɵɵtext(65,"\n "),c.ɵɵtemplate(66,Y,28,11,"div",48),c.ɵɵtext(67,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(68,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵtemplate(70,X,4,2,"ng-container",21),c.ɵɵtext(71,"\n "),c.ɵɵtemplate(72,ee,5,3,"a",49),c.ɵɵtext(73,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,23,"username")),c.ɵɵadvance(5),c.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.isDeleted),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(24,25,"password")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(36,27,"toggleVisibility")),c.ɵɵproperty("disabled",!e.cipher.viewPassword),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(33,te,!e.showPassword,e.showPassword)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(42,29,"copyPassword")),c.ɵɵproperty("disabled",!e.cipher.viewPassword),c.ɵɵadvance(15),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(36,ne,e.totpLow)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.cipher.login.hasUris),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function re(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function oe(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ae(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",86),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",87),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.cardholderName=t})),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"div",17),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"label",88),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"select",89),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.brand=t})),c.ɵɵtext(20,"\n "),c.ɵɵtemplate(21,re,2,2,"option",29),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",16),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"div",17),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"label",90),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"div",34),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"input",91),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.number=t})),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"div",41),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleCardNumber()})),c.ɵɵpipe(41,"i18n"),c.ɵɵtext(42,"\n "),c.ɵɵelement(43,"i",43),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementStart(46,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),c.ɵɵpipe(47,"i18n"),c.ɵɵtext(48,"\n "),c.ɵɵelement(49,"i",44),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(52,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(53,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"div",92),c.ɵɵtext(56,"\n "),c.ɵɵelementStart(57,"label",93),c.ɵɵtext(58),c.ɵɵpipe(59,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementStart(61,"select",94),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.expMonth=t})),c.ɵɵtext(62,"\n "),c.ɵɵtemplate(63,oe,2,2,"option",29),c.ɵɵtext(64,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(66,"\n "),c.ɵɵelementStart(67,"div",92),c.ɵɵtext(68,"\n "),c.ɵɵelementStart(69,"label",95),c.ɵɵtext(70),c.ɵɵpipe(71,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(72,"\n "),c.ɵɵelementStart(73,"input",96),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.expYear=t})),c.ɵɵpipe(74,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(75,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(76,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelementStart(78,"div",16),c.ɵɵtext(79,"\n "),c.ɵɵelementStart(80,"div",17),c.ɵɵtext(81,"\n "),c.ɵɵelementStart(82,"label",97),c.ɵɵtext(83),c.ɵɵpipe(84,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(85,"\n "),c.ɵɵelementStart(86,"div",34),c.ɵɵtext(87,"\n "),c.ɵɵelementStart(88,"input",98),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.code=t})),c.ɵɵelementEnd(),c.ɵɵtext(89,"\n "),c.ɵɵelementStart(90,"div",41),c.ɵɵtext(91,"\n "),c.ɵɵelementStart(92,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleCardCode()})),c.ɵɵpipe(93,"i18n"),c.ɵɵtext(94,"\n "),c.ɵɵelement(95,"i",43),c.ɵɵtext(96,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(97,"\n "),c.ɵɵelementStart(98,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),c.ɵɵpipe(99,"i18n"),c.ɵɵtext(100,"\n "),c.ɵɵelement(101,"i",44),c.ɵɵtext(102,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(103,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(104,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(105,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(106,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(107,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,29,"cardholderName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,31,"brand")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cardBrandOptions),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(32,33,"number")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(41,35,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(51,te,!e.showCardNumber,e.showCardNumber)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(47,37,"copyNumber")),c.ɵɵadvance(12),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(59,39,"expirationMonth")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cardExpMonthOptions),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(71,41,"expirationYear")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate1("placeholder","",c.ɵɵpipeBind1(74,43,"ex")," 2019"),c.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(84,45,"securityCode")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(93,47,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(54,te,!e.showCardCode,e.showCardCode)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(99,49,"securityCode"))}}function se(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function le(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",99),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",100),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"select",101),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.title=t})),c.ɵɵtext(11,"\n "),c.ɵɵtemplate(12,se,2,2,"option",29),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"div",16),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"div",99),c.ɵɵtext(20,"\n "),c.ɵɵelementStart(21,"label",102),c.ɵɵtext(22),c.ɵɵpipe(23,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"input",103),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.firstName=t})),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"div",99),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"label",104),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"input",105),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.middleName=t})),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementStart(37,"div",99),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"label",106),c.ɵɵtext(40),c.ɵɵpipe(41,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(42,"\n "),c.ɵɵelementStart(43,"input",107),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.lastName=t})),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"div",16),c.ɵɵtext(48,"\n "),c.ɵɵelementStart(49,"div",99),c.ɵɵtext(50,"\n "),c.ɵɵelementStart(51,"label",108),c.ɵɵtext(52),c.ɵɵpipe(53,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"input",109),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.username=t})),c.ɵɵelementEnd(),c.ɵɵtext(56,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(57,"\n "),c.ɵɵelementStart(58,"div",99),c.ɵɵtext(59,"\n "),c.ɵɵelementStart(60,"label",110),c.ɵɵtext(61),c.ɵɵpipe(62,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(63,"\n "),c.ɵɵelementStart(64,"input",111),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.company=t})),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(66,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(67,"\n "),c.ɵɵelementStart(68,"div",16),c.ɵɵtext(69,"\n "),c.ɵɵelementStart(70,"div",99),c.ɵɵtext(71,"\n "),c.ɵɵelementStart(72,"label",112),c.ɵɵtext(73),c.ɵɵpipe(74,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(75,"\n "),c.ɵɵelementStart(76,"input",113),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.ssn=t})),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(78,"\n "),c.ɵɵelementStart(79,"div",99),c.ɵɵtext(80,"\n "),c.ɵɵelementStart(81,"label",114),c.ɵɵtext(82),c.ɵɵpipe(83,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(84,"\n "),c.ɵɵelementStart(85,"input",115),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.passportNumber=t})),c.ɵɵelementEnd(),c.ɵɵtext(86,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(87,"\n "),c.ɵɵelementStart(88,"div",99),c.ɵɵtext(89,"\n "),c.ɵɵelementStart(90,"label",116),c.ɵɵtext(91),c.ɵɵpipe(92,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(93,"\n "),c.ɵɵelementStart(94,"input",117),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),c.ɵɵelementEnd(),c.ɵɵtext(95,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(96,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(97,"\n "),c.ɵɵelementStart(98,"div",16),c.ɵɵtext(99,"\n "),c.ɵɵelementStart(100,"div",17),c.ɵɵtext(101,"\n "),c.ɵɵelementStart(102,"label",118),c.ɵɵtext(103),c.ɵɵpipe(104,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(105,"\n "),c.ɵɵelementStart(106,"input",119),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.email=t})),c.ɵɵelementEnd(),c.ɵɵtext(107,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(108,"\n "),c.ɵɵelementStart(109,"div",17),c.ɵɵtext(110,"\n "),c.ɵɵelementStart(111,"label",120),c.ɵɵtext(112),c.ɵɵpipe(113,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(114,"\n "),c.ɵɵelementStart(115,"input",121),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.phone=t})),c.ɵɵelementEnd(),c.ɵɵtext(116,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(117,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(118,"\n "),c.ɵɵelementStart(119,"div",16),c.ɵɵtext(120,"\n "),c.ɵɵelementStart(121,"div",17),c.ɵɵtext(122,"\n "),c.ɵɵelementStart(123,"label",122),c.ɵɵtext(124),c.ɵɵpipe(125,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(126,"\n "),c.ɵɵelementStart(127,"input",123),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address1=t})),c.ɵɵelementEnd(),c.ɵɵtext(128,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(129,"\n "),c.ɵɵelementStart(130,"div",17),c.ɵɵtext(131,"\n "),c.ɵɵelementStart(132,"label",124),c.ɵɵtext(133),c.ɵɵpipe(134,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(135,"\n "),c.ɵɵelementStart(136,"input",125),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address2=t})),c.ɵɵelementEnd(),c.ɵɵtext(137,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(138,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(139,"\n "),c.ɵɵelementStart(140,"div",16),c.ɵɵtext(141,"\n "),c.ɵɵelementStart(142,"div",17),c.ɵɵtext(143,"\n "),c.ɵɵelementStart(144,"label",126),c.ɵɵtext(145),c.ɵɵpipe(146,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(147,"\n "),c.ɵɵelementStart(148,"input",127),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address3=t})),c.ɵɵelementEnd(),c.ɵɵtext(149,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(150,"\n "),c.ɵɵelementStart(151,"div",17),c.ɵɵtext(152,"\n "),c.ɵɵelementStart(153,"label",128),c.ɵɵtext(154),c.ɵɵpipe(155,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(156,"\n "),c.ɵɵelementStart(157,"input",129),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.city=t})),c.ɵɵelementEnd(),c.ɵɵtext(158,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(159,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(160,"\n "),c.ɵɵelementStart(161,"div",16),c.ɵɵtext(162,"\n "),c.ɵɵelementStart(163,"div",17),c.ɵɵtext(164,"\n "),c.ɵɵelementStart(165,"label",130),c.ɵɵtext(166),c.ɵɵpipe(167,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(168,"\n "),c.ɵɵelementStart(169,"input",131),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.state=t})),c.ɵɵelementEnd(),c.ɵɵtext(170,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(171,"\n "),c.ɵɵelementStart(172,"div",17),c.ɵɵtext(173,"\n "),c.ɵɵelementStart(174,"label",132),c.ɵɵtext(175),c.ɵɵpipe(176,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(177,"\n "),c.ɵɵelementStart(178,"input",133),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.postalCode=t})),c.ɵɵelementEnd(),c.ɵɵtext(179,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(180,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(181,"\n "),c.ɵɵelementStart(182,"div",16),c.ɵɵtext(183,"\n "),c.ɵɵelementStart(184,"div",17),c.ɵɵtext(185,"\n "),c.ɵɵelementStart(186,"label",134),c.ɵɵtext(187),c.ɵɵpipe(188,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(189,"\n "),c.ɵɵelementStart(190,"input",135),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.country=t})),c.ɵɵelementEnd(),c.ɵɵtext(191,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(192,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(193,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,55,"title")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.identityTitleOptions),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(23,57,"firstName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(32,59,"middleName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(41,61,"lastName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(53,63,"username")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(62,65,"company")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(74,67,"ssn")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(83,69,"passportNumber")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(92,71,"licenseNumber")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(104,73,"email")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(113,75,"phone")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(125,77,"address1")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(134,79,"address2")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(146,81,"address3")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(155,83,"cityTown")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(167,85,"stateProvince")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(176,87,"zipPostalCode")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(188,89,"country")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function ce(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function de(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",16),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",137),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",138),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"select",139),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).organizationChanged()})),c.ɵɵtext(15,"\n "),c.ɵɵtemplate(16,ce,2,2,"option",29),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,5,"ownership")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.ownershipOptions)}}function pe(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function ue(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",141),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",142),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",143),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("id","collection-",n,""),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("for","collection-",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function me(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,ue,7,6,"div",140),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.collections)}}function he(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,pe,3,3,"div",21),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,me,4,1,"ng-container",21),c.ɵɵtext(9,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,3,"collections")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.collections||!e.collections.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function ve(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"b",145),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5),c.ɵɵpipe(6,"date"),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function ge(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"b",145),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"a",146),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).viewHistory()})),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,3,"passwordHistory"),":"),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,5,"view")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function fe(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"date"),c.ɵɵelementStart(3,"span",148),c.ɵɵtext(4),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(e.password)}}function ye(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",62),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,fe,6,5,"div",147),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function xe(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",144),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"b",145),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9),c.ɵɵpipe(10,"date"),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵtemplate(12,ve,7,7,"div",21),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,ge,10,7,"div",21),c.ɵɵtext(15,"\n "),c.ɵɵtemplate(16,ye,4,1,"div",60),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(8,5,"dateUpdated"),":"),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.showRevisionDate),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.hasPasswordHistory),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function Se(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",141),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",149),c.ɵɵlistener("change",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).repromptChanged()})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",150),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"a",151),c.ɵɵpipe(15,"i18n"),c.ɵɵtext(16,"\n "),c.ɵɵelement(17,"i",79),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,5,"options")),c.ɵɵadvance(5),c.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,7,"passwordPrompt")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(15,9,"learnMore"))}}function be(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,V,3,3,"app-callout",14),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,_,14,6,"div",15),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",16),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",17),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",18),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",19),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().cipher.name=t})),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵtemplate(17,z,11,6,"div",20),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtext(20,"\n "),c.ɵɵtemplate(21,ie,74,38,"ng-container",21),c.ɵɵtext(22,"\n "),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,ae,108,57,"ng-container",21),c.ɵɵtext(25,"\n "),c.ɵɵtext(26,"\n "),c.ɵɵtemplate(27,le,194,91,"ng-container",21),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",22),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"label",23),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementStart(35,"textarea",24),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().cipher.notes=t})),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),c.ɵɵtext(39,"\n "),c.ɵɵtemplate(40,de,21,9,"ng-container",21),c.ɵɵtext(41,"\n "),c.ɵɵtemplate(42,he,10,5,"ng-container",21),c.ɵɵtext(43,"\n "),c.ɵɵtemplate(44,xe,19,10,"ng-container",21),c.ɵɵtext(45,"\n "),c.ɵɵtemplate(46,Se,21,11,"ng-container",21),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,20,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.organization),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(33,22,"notes")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.canUseReprompt)}}function we(e,t){if(1&e&&(c.ɵɵelementStart(0,"button",152),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",153),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span"),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(),t=c.ɵɵreference(5);c.ɵɵproperty("disabled",t.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const Ce=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function Ie(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",70),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleFavorite()})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",43),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(4,Ce,e.cipher.favorite,!e.cipher.favorite))}}function Ee(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",157,158),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",159),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",160),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function Pe(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",154),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Ie,5,7,"button",155),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,Ee,9,10,"button",156),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class Oe extends l.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h,v){super(e,t,n,i,r,o,a,s,l,d,p,u,v,m,h),this.apiService=c,this.originalCipher=null}allowOwnershipAssignment(){return null!=this.ownershipOptions&&(this.ownershipOptions.length>1||!this.allowPersonal)&&(null!=this.organization?this.cloneMode&&this.organization.canEditAnyCollection:!this.editMode||this.cloneMode)}loadCollections(){return this.organization.canEditAnyCollection?Promise.resolve(this.collections):super.loadCollections()}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId),n=new r.CipherData(t);return this.originalCipher=new o.Cipher(n),new o.Cipher(n)}))}encryptCipher(){return this.organization.canEditAnyCollection?this.cipherService.encrypt(this.cipher,null,this.originalCipher):super.encryptCipher()}saveCipher(e){const t=Object.create(null,{saveCipher:{get:()=>super.saveCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection||null==e.organizationId)return t.saveCipher.call(this,e);if(this.editMode&&!this.cloneMode){const t=new s.CipherRequest(e);return this.apiService.putCipherAdmin(this.cipherId,t)}{const t=new a.CipherCreateRequest(e);return this.apiService.postCipherAdmin(t)}}))}deleteCipher(){const e=Object.create(null,{deleteCipher:{get:()=>super.deleteCipher}});return i(this,void 0,void 0,(function*(){return this.organization.canEditAnyCollection?this.cipher.isDeleted?this.apiService.deleteCipherAdmin(this.cipherId):this.apiService.putDeleteCipherAdmin(this.cipherId):e.deleteCipher.call(this)}))}}t.AddEditComponent=Oe,Oe.ɵfac=function(e){return new(e||Oe)(c.ɵɵdirectiveInject(d.CipherService),c.ɵɵdirectiveInject(p.FolderService),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.PlatformUtilsService),c.ɵɵdirectiveInject(h.AuditService),c.ɵɵdirectiveInject(v.StateService),c.ɵɵdirectiveInject(g.CollectionService),c.ɵɵdirectiveInject(f.TotpService),c.ɵɵdirectiveInject(y.PasswordGenerationService),c.ɵɵdirectiveInject(x.ApiService),c.ɵɵdirectiveInject(S.MessagingService),c.ɵɵdirectiveInject(b.EventService),c.ɵɵdirectiveInject(w.PolicyService),c.ɵɵdirectiveInject(C.LogService),c.ɵɵdirectiveInject(I.PasswordRepromptService),c.ɵɵdirectiveInject(E.OrganizationService))},Oe.ɵcmp=c.ɵɵdefineComponent({type:Oe,selectors:[["app-org-vault-add-edit"]],features:[c.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,be,48,24,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"div",9),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,we,9,7,"button",10),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"button",11),c.ɵɵtext(27),c.ɵɵpipe(28,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵtemplate(30,Pe,6,2,"div",12),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n")),2&e&&(c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,7,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.cipher),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",!t.viewOnly),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[P.NgControlStatusGroup,P.NgForm,O.ApiActionDirective,k.A11yTitleDirective,A.NgIf,P.DefaultValueAccessor,P.RequiredValidator,P.NgControlStatus,P.NgModel,T.AddEditCustomFieldsComponent,M.CalloutComponent,P.SelectControlValueAccessor,B.AutofocusDirective,A.NgForOf,P.NgSelectOption,P.ɵNgSelectMultipleOption,D.InputVerbatimDirective,A.NgClass,R.StopClickDirective,F.PremiumBadgeComponent,A.NgStyle,P.CheckboxControlValueAccessor],pipes:[U.I18nPipe,A.DatePipe],encapsulation:2})},31597:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569);const r=n(82789),o=n(49624),a=n(94652),s=n(32621),l=n(45330),c=n(51554),d=n(85714),p=n(73569),u=n(73828),m=n(91674),h=n(36631),v=n(96832),g=n(56820),f=n(57490),y=n(8863),x=n(1142),S=n(99729);function b(e,t){if(1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.cipher.name)}}function w(e,t){1&e&&s.ɵɵelement(0,"i",24)}function C(e,t){1&e&&s.ɵɵelement(0,"i",25)}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",26),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"a",27),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",28),s.ɵɵpipe(5,"i18n"),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"span",29),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"button",30,31),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).reupload(t)})),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(12),t=s.ɵɵnextContext().$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(5,5,"attachmentFixDesc")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(9,7,"attachmentFixDesc")),s.ɵɵadvance(3),s.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"td",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"button",33,34),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).delete(t)})),s.ɵɵpipe(4,"i18n"),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",35),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",36),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(3),t=s.ɵɵnextContext().$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(4,6,"delete")),s.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(9,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",16),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,w,1,0,"i",17),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,1,0,"i",18),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"td",19),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",20),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"a",21),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).download(t)})),s.ɵɵtext(14),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,I,16,11,"div",22),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"small"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,E,12,10,"td",23),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!e.downloading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.downloading),s.ɵɵadvance(8),s.ɵɵtextInterpolate(e.fileName),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),s.ɵɵadvance(4),s.ɵɵtextInterpolate(e.sizeName),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!n.viewOnly)}}function O(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",14),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,P,25,6,"tr",15),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.cipher.attachments)}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",37),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"input",38),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"small",39),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"newAttachment")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,5,"file")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,7,"maxFileSize")))}function A(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",40),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",41),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){s.ɵɵnextContext();const e=s.ɵɵreference(5);s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,5,"save"))}}class T extends a.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,r,o,a),this.viewOnly=!1}reupload(e){const t=Object.create(null,{reuploadCipherAttachment:{get:()=>super.reuploadCipherAttachment}});return i(this,void 0,void 0,(function*(){this.organization.canEditAnyCollection&&this.showFixOldAttachments(e)&&(yield t.reuploadCipherAttachment.call(this,e,!0))}))}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId);return new o.Cipher(new r.CipherData(t))}))}saveCipherAttachment(e){return this.cipherService.saveAttachmentWithServer(this.cipherDomain,e,this.organization.canEditAnyCollection)}deleteCipherAttachment(e){return this.organization.canEditAnyCollection?this.apiService.deleteCipherAttachmentAdmin(this.cipherId,e):super.deleteCipherAttachment(e)}showFixOldAttachments(e){return null==e.key&&this.organization.canEditAnyCollection}}t.AttachmentsComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.CryptoService),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.ApiService),s.ɵɵdirectiveInject(h.LogService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-org-vault-attachments"]],features:[s.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵtemplate(12,b,2,1,"small",6),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",7),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",8),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"div",9),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,O,7,1,"table",10),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,k,16,9,"div",6),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",11),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,A,9,7,"button",12),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"button",13),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(11,8,"attachments"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.cipher),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,10,"close")),s.ɵɵadvance(10),s.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.NgIf,y.A11yTitleDirective,f.NgForOf,x.StopClickDirective],pipes:[S.I18nPipe],encapsulation:2})},7203:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CiphersComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(32034),n(51554),n(36631),n(63513),n(44809),n(73828),n(60421),n(73569),n(30694),n(52344),n(91434)),a=n(32621),s=n(60421),l=n(51554),c=n(73828),d=n(45330),p=n(32034),u=n(52344),m=n(44809),h=n(36631),v=n(73569),g=n(63513),f=n(30694),y=n(91674),x=n(57490),S=n(37407),b=n(96832),w=n(39159),C=n(18310),I=n(68012),E=n(6373),P=n(8863),O=n(44653),k=n(62985),A=n(99237),T=n(99729),M=n(53397);function B(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",24),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachmentsNeedFix")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachmentsNeedFix")))}function D(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",22),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,B,9,6,"ng-container",0),a.ɵɵtext(10,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,5,"attachments")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.showFixOldAttachments(e))}}function R(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"td",25),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-org-badge",26),a.ɵɵlistener("onOrganizationClicked",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).onOrganizationClicked(t.organizationId)})),a.ɵɵpipe(3,"orgNameFromId"),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("organizationName",a.ɵɵpipeBind2(3,2,e.organizationId,t.organizations)),a.ɵɵpropertyInterpolate("profileName",t.profileName)}}function F(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).copy(t,t.login.password,"password","Password")})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",27),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"copyPassword"),"\n "))}function U(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).copy(t,t.login.totp,"verificationCodeTotp","TOTP")})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",27),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"copyVerificationCode"),"\n "))}function V(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).launch(t.login.launchUri)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",28),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"launch"),"\n "))}function N(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).copy(t,t.login.username,"username","Username")})),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",27),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,F,5,3,"button",19),a.ɵɵtext(9,"\n "),a.ɵɵtemplate(10,U,5,3,"button",19),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,V,5,3,"button",19),a.ɵɵtext(13,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(6,4,"copyUsername"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",e.viewPassword),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.displayTotpCopyButton(e)),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.login.canLaunch)}}function _(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).clone(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",29),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"clone"),"\n "))}function j(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).share(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"moveToOrganization"),"\n "))}function z(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).collections(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",31),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"collections"),"\n "))}function H(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).events(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",32),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function L(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).restore(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",33),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"restore"),"\n "))}const K=function(){return[]},q=function(e){return{cipherId:e}};function G(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",5),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"input",6),a.ɵɵlistener("ngModelChange",(function(t){return a.ɵɵrestoreView(e).$implicit.checked=t})),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",7),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(8,"\n "),a.ɵɵelement(9,"app-vault-icon",8),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"td",9),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"a",10),a.ɵɵpipe(15,"i18n"),a.ɵɵtext(16),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵtemplate(18,D,11,7,"ng-container",0),a.ɵɵtext(19,"\n "),a.ɵɵelement(20,"br"),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"small",11),a.ɵɵtext(23),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,R,6,5,"td",12),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"td",13),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"button",14),a.ɵɵpipe(31,"i18n"),a.ɵɵtext(32,"\n "),a.ɵɵelement(33,"i",15),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"bit-menu",null,16),a.ɵɵtext(38,"\n "),a.ɵɵtemplate(39,N,14,6,"ng-container",0),a.ɵɵtext(40,"\n "),a.ɵɵelementStart(41,"button",17),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).attachments(t)})),a.ɵɵtext(42,"\n "),a.ɵɵelement(43,"i",18),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵtemplate(47,_,5,3,"button",19),a.ɵɵtext(48,"\n "),a.ɵɵtemplate(49,j,5,3,"button",19),a.ɵɵtext(50,"\n "),a.ɵɵtemplate(51,z,5,3,"button",19),a.ɵɵtext(52,"\n "),a.ɵɵtemplate(53,H,5,3,"button",19),a.ɵɵtext(54,"\n "),a.ɵɵtemplate(55,L,5,3,"button",19),a.ɵɵtext(56,"\n "),a.ɵɵelementStart(57,"button",17),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).delete(t)})),a.ɵɵtext(58,"\n "),a.ɵɵelementStart(59,"span",20),a.ɵɵtext(60,"\n "),a.ɵɵelement(61,"i",21),a.ɵɵtext(62),a.ɵɵpipe(63,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=a.ɵɵreference(37),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("ngModel",e.checked),a.ɵɵadvance(5),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(15,19,"editItem")),a.ɵɵproperty("routerLink",a.ɵɵpureFunction0(27,K))("queryParams",a.ɵɵpureFunction1(28,q,e.id)),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",i.organizations.length>0&&!i.organization),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(31,21,"options")),a.ɵɵproperty("bitMenuTriggerFor",n),a.ɵɵadvance(9),a.ɵɵproperty("ngIf",e.type===i.cipherType.Login&&!e.isDeleted),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,23,"attachments"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",(!i.organization&&!e.organizationId||i.organization)&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!i.organization&&!e.organizationId&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.organizationId&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.organizationId&&i.accessEvents),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.isDeleted),a.ɵɵadvance(7),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(63,25,e.isDeleted?"permanentlyDelete":"delete"),"\n ")}}function W(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"table",3),a.ɵɵlistener("scrolled",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).loadMore()})),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,G,68,30,"tr",4),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext().ngIf,t=a.ɵɵnextContext();a.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e)}}function $(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",35),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function Y(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",37),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(4).addCipher()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",38),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function Q(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,Y,5,3,"button",36),a.ɵɵtext(7,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(3);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"noItemsInList")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",e.showAddNew)}}function J(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",34),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,$,9,6,"ng-container",0),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,Q,8,4,"ng-container",0),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.loaded),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.loaded)}}function Z(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,W,7,3,"table",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,J,6,2,"div",2),a.ɵɵtext(5,"\n"),a.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.length)}}class X extends o.CiphersComponent{constructor(e,t,n,i,o,a,s,l,c,d,p,u){super(e,t,n,i,o,a,c,s,l,d,p),this.apiService=u,this.onEventsClicked=new r.EventEmitter,this.accessEvents=!1,this.allCiphers=[]}load(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.deleted=t||!1,this.organization.canEditAnyCollection?(this.accessEvents=this.organization.useEvents,this.allCiphers=yield this.cipherService.getAllFromApiForOrganization(this.organization.id)):this.allCiphers=(yield this.cipherService.getAllDecrypted()).filter((e=>e.organizationId===this.organization.id)),yield this.searchService.indexCiphers(this.organization.id,this.allCiphers),yield this.applyFilter(e),this.loaded=!0}))}applyFilter(e=null){const t=Object.create(null,{applyFilter:{get:()=>super.applyFilter}});return i(this,void 0,void 0,(function*(){if(this.organization.canViewAllCollections)yield t.applyFilter.call(this,e);else{const n=t=>t.organizationId===this.organization.id&&(null==e||e(t));yield t.applyFilter.call(this,n)}}))}search(e=null){const t=Object.create(null,{search:{get:()=>super.search}});return i(this,void 0,void 0,(function*(){yield t.search.call(this,e,this.allCiphers)}))}events(e){this.onEventsClicked.emit(e)}deleteCipher(e){return this.organization.canEditAnyCollection?this.deleted?this.apiService.deleteCipherAdmin(e):this.apiService.putDeleteCipherAdmin(e):super.deleteCipher(e,this.deleted)}showFixOldAttachments(e){return this.organization.canEditAnyCollection&&e.hasOldAttachments}}t.CiphersComponent=X,X.ɵfac=function(e){return new(e||X)(a.ɵɵdirectiveInject(s.SearchService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.CipherService),a.ɵɵdirectiveInject(p.EventService),a.ɵɵdirectiveInject(u.TotpService),a.ɵɵdirectiveInject(m.PasswordRepromptService),a.ɵɵdirectiveInject(h.LogService),a.ɵɵdirectiveInject(v.StateService),a.ɵɵdirectiveInject(g.OrganizationService),a.ɵɵdirectiveInject(f.TokenService),a.ɵɵdirectiveInject(y.ApiService))},X.ɵcmp=a.ɵɵdefineComponent({type:X,selectors:[["app-org-vault-ciphers"]],outputs:{onEventsClicked:"onEventsClicked"},features:[a.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],["class","table table-hover table-list table-ciphers","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["class","no-items",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list","table-ciphers",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],[1,"table-list-icon",3,"click"],[3,"cipher"],[1,"reduced-lh","wrap",3,"click"],["appStopProp","","queryParamsHandling","merge",3,"routerLink","queryParams","title"],["appStopProp",""],["class","tw-w-28",4,"ngIf"],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["cipherOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"tw-w-28"],[3,"organizationName","profileName","onOrganizationClicked"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-share-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-files"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-collection"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],[1,"no-items"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],["class","btn btn-outline-primary",3,"click",4,"ngIf"],[1,"btn","btn-outline-primary",3,"click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,Z,6,2,"ng-container",0),a.ɵɵtext(1,"\n")),2&e&&a.ɵɵproperty("ngIf",t.isPaging()?t.pagedCiphers:t.ciphers)},directives:[x.NgIf,S.InfiniteScrollDirective,x.NgForOf,b.CheckboxControlValueAccessor,w.StopPropDirective,b.NgControlStatus,b.NgModel,C.IconComponent,I.RouterLinkWithHref,E.MenuTriggerForDirective,P.A11yTitleDirective,O.MenuComponent,k.MenuItemComponent,A.OrganizationNameBadgeComponent],pipes:[T.I18nPipe,M.GetOrgNameFromIdPipe],encapsulation:2})},60962:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;n(91674),n(45330),n(3174),n(51554),n(36631),n(73828);const r=n(82789),o=n(49624),a=n(53994),s=n(86305),l=n(32621),c=n(3174),d=n(73828),p=n(51554),u=n(45330),m=n(91674),h=n(36631),v=n(96832),g=n(56820),f=n(57490),y=n(8863),x=n(39159),S=n(99729);function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"small"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.cipher.name)}}function w(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"div",17),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"button",18),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().selectAll(!0)})),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"button",18),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().selectAll(!1)})),l.ɵɵtext(7),l.ɵɵpipe(8,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd()}2&e&&(l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,2,"selectAll"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function C(e,t){1&e&&(l.ɵɵelementStart(0,"div"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function I(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"tr",21),l.ɵɵlistener("click",(function(){const t=l.ɵɵrestoreView(e).$implicit;return l.ɵɵnextContext(2).check(t)})),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",22),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"input",23),l.ɵɵlistener("ngModelChange",(function(t){return l.ɵɵrestoreView(e).$implicit.checked=t})),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"td"),l.ɵɵtext(8),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;l.ɵɵadvance(4),l.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),l.ɵɵproperty("ngModel",e.checked),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementStart(0,"table",19),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"tbody"),l.ɵɵtext(3,"\n "),l.ɵɵtemplate(4,I,10,3,"tr",20),l.ɵɵtext(5,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(4),l.ɵɵproperty("ngForOf",e.collections)}}class P extends s.CollectionsComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.apiService=r,this.allowSelectNone=!0}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canViewAllCollections)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId);return new o.Cipher(new r.CipherData(t))}))}loadCipherCollections(){return this.organization.canViewAllCollections?this.collectionIds:super.loadCipherCollections()}loadCollections(){return this.organization.canViewAllCollections?Promise.resolve(this.collections):super.loadCollections()}saveCollections(){if(this.organization.canEditAnyCollection){const e=new a.CipherCollectionsRequest(this.cipherDomain.collectionIds);return this.apiService.putCipherCollectionsAdmin(this.cipherId,e)}return super.saveCollections()}}t.CollectionsComponent=P,P.ɵfac=function(e){return new(e||P)(l.ɵɵdirectiveInject(c.CollectionService),l.ɵɵdirectiveInject(d.PlatformUtilsService),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(u.CipherService),l.ɵɵdirectiveInject(m.ApiService),l.ɵɵdirectiveInject(h.LogService))},P.ɵcmp=l.ɵɵdefineComponent({type:P,selectors:[["app-org-vault-collections"]],features:[l.ɵɵInheritDefinitionFeature],decls:63,vars:27,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵtemplate(12,b,2,1,"small",6),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"button",7),l.ɵɵpipe(16,"i18n"),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"span",8),l.ɵɵtext(19,"×"),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"div",9),l.ɵɵtext(24,"\n "),l.ɵɵelementStart(25,"p"),l.ɵɵtext(26),l.ɵɵpipe(27,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"div",10),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"h3"),l.ɵɵtext(32),l.ɵɵpipe(33,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,w,10,6,"div",11),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵtemplate(38,C,3,3,"div",6),l.ɵɵtext(39,"\n "),l.ɵɵtemplate(40,E,7,1,"table",12),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementStart(43,"div",13),l.ɵɵtext(44,"\n "),l.ɵɵelementStart(45,"button",14),l.ɵɵtext(46,"\n "),l.ɵɵelement(47,"i",15),l.ɵɵpipe(48,"i18n"),l.ɵɵtext(49,"\n "),l.ɵɵelementStart(50,"span"),l.ɵɵtext(51),l.ɵɵpipe(52,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(53,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementStart(55,"button",16),l.ɵɵtext(56),l.ɵɵpipe(57,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(58,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(59,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(60,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(61,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(62,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(11,13,"collections"),"\n "),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.cipher),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(16,15,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(27,17,"collectionsDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(33,19,"collections")),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.collections&&t.collections.length),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",!t.collections||!t.collections.length),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.collections&&t.collections.length),l.ɵɵadvance(5),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(48,21,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(52,23,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(57,25,"cancel"),"\n ")}},directives:[v.ɵNgNoValidate,v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.NgIf,y.A11yTitleDirective,f.NgForOf,v.CheckboxControlValueAccessor,x.StopPropDirective,v.NgControlStatus,v.NgModel],pipes:[S.I18nPipe],encapsulation:2})},49173:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OssRoutingModule=void 0;const r=n(68012),o=n(76299),a=n(10517),s=n(2821),l=n(33642),c=n(4802),d=n(33154),p=n(79346),u=n(36729),m=n(39253),h=n(85175),v=n(48229),g=n(66686),f=n(12579),y=n(23291),x=n(27359),S=n(37565),b=n(6745),w=n(85002),C=n(52e3),I=n(61841),E=n(16823),P=n(53767),O=n(74155),k=n(72855),A=n(78482),T=n(82813),M=n(58728),B=n(532),D=n(10116),R=n(12721),F=n(41764),U=n(28964),V=n(82477),N=n(21362),_=n(26140),j=n(8042),z=n(56038),H=n(44118),L=n(32621),K=(n(68012),[{path:"",component:E.FrontendLayoutComponent,data:{doNotSaveUrl:!0},children:[{path:"",pathMatch:"full",children:[],canActivate:[I.HomeGuard]},{path:"login",component:u.LoginComponent,canActivate:[s.UnauthGuard]},{path:"2fa",component:x.TwoFactorComponent,canActivate:[s.UnauthGuard]},{path:"register",component:v.RegisterComponent,canActivate:[s.UnauthGuard],data:{titleId:"createAccount"}},{path:"sso",component:y.SsoComponent,canActivate:[s.UnauthGuard],data:{titleId:"enterpriseSingleSignOn"}},{path:"set-password",component:f.SetPasswordComponent,data:{titleId:"setMasterPassword"}},{path:"hint",component:d.HintComponent,canActivate:[s.UnauthGuard],data:{titleId:"passwordHint"}},{path:"lock",component:p.LockComponent,canActivate:[a.LockGuard]},{path:"verify-email",component:w.VerifyEmailTokenComponent},{path:"accept-organization",component:c.AcceptOrganizationComponent,data:{titleId:"joinOrganization",doNotSaveUrl:!1}},{path:"accept-emergency",component:l.AcceptEmergencyComponent,data:{titleId:"acceptEmergency",doNotSaveUrl:!1}},{path:"accept-families-for-enterprise",component:O.AcceptFamilySponsorshipComponent,data:{titleId:"acceptFamilySponsorship",doNotSaveUrl:!1}},{path:"recover",pathMatch:"full",redirectTo:"recover-2fa"},{path:"recover-2fa",component:h.RecoverTwoFactorComponent,canActivate:[s.UnauthGuard],data:{titleId:"recoverAccountTwoStep"}},{path:"recover-delete",component:m.RecoverDeleteComponent,canActivate:[s.UnauthGuard],data:{titleId:"deleteAccount"}},{path:"verify-recover-delete",component:C.VerifyRecoverDeleteComponent,canActivate:[s.UnauthGuard],data:{titleId:"deleteAccount"}},{path:"send/:sendId/:key",component:A.AccessComponent,data:{title:"Bitwarden Send"}},{path:"update-temp-password",component:b.UpdateTempPasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"updateTempPassword"}},{path:"update-password",component:S.UpdatePasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"updatePassword"}},{path:"remove-password",component:g.RemovePasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"removeMasterPassword"}}]},{path:"",component:P.UserLayoutComponent,canActivate:[o.AuthGuard],children:[{path:"vault",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(85006)))).IndividualVaultModule}))},{path:"sends",component:T.SendComponent,data:{title:"Send"}},{path:"create-organization",component:B.CreateOrganizationComponent,data:{titleId:"newOrganization"}},{path:"settings",component:V.SettingsComponent,children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:M.AccountComponent,data:{titleId:"myAccount"}},{path:"preferences",component:U.PreferencesComponent,data:{titleId:"preferences"}},{path:"security",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(17587)))).SecurityRoutingModule}))},{path:"domain-rules",component:D.DomainRulesComponent,data:{titleId:"domainRules"}},{path:"subscription",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(63067)))).SubscriptionRoutingModule}))},{path:"emergency-access",children:[{path:"",component:F.EmergencyAccessComponent,data:{titleId:"emergencyAccess"}},{path:":id",component:R.EmergencyAccessViewComponent,data:{titleId:"emergencyAccess"}}]},{path:"sponsored-families",component:N.SponsoredFamiliesComponent,data:{titleId:"sponsoredFamilies"}}]},{path:"tools",component:H.ToolsComponent,canActivate:[o.AuthGuard],children:[{path:"",pathMatch:"full",redirectTo:"generator"},{path:"import",component:z.ImportComponent,data:{titleId:"importData"}},{path:"export",component:_.ExportComponent,data:{titleId:"exportVault"}},{path:"generator",component:j.GeneratorComponent,data:{titleId:"generator"}}]},{path:"reports",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(26627)))).ReportsRoutingModule}))},{path:"setup/families-for-enterprise",component:k.FamiliesForEnterpriseSetupComponent}]},{path:"organizations",loadChildren:()=>Promise.resolve().then((()=>n(64525))).then((e=>e.OrganizationsRoutingModule))}]);class q{}t.OssRoutingModule=q,q.ɵfac=function(e){return new(e||q)},q.ɵmod=L.ɵɵdefineNgModule({type:q}),q.ɵinj=L.ɵɵdefineInjector({imports:[[r.RouterModule.forRoot(K,{useHash:!0,paramsInheritanceStrategy:"always"})],r.RouterModule]})},77537:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OssModule=void 0;const i=n(30322),r=n(65691),o=n(84696),a=n(38595),s=n(98528),l=n(32621);class c{}t.OssModule=c,c.ɵfac=function(e){return new(e||c)},c.ɵmod=l.ɵɵdefineNgModule({type:c}),c.ɵinj=l.ɵɵdefineInjector({imports:[[o.SharedModule,i.LooseComponentsModule,a.VaultFilterModule,s.OrganizationBadgeModule,r.PipesModule],i.LooseComponentsModule,a.VaultFilterModule,s.OrganizationBadgeModule,r.PipesModule]})},30773:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersComponent=void 0;n(51554),n(68291);const r=n(82769),o=n(32621),a=n(68291),s=n(51554),l=n(53280),c=n(57490),d=n(59964),p=n(15370),u=n(68012),m=n(99729);function h(e,t){1&e&&(o.ɵɵelementStart(0,"p",4),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function v(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",13),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"providerIsDisabled")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"providerIsDisabled")))}const g=function(e){return["/providers",e]};function f(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-avatar",11),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",12),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,v,9,6,"ng-container",3),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(4),o.ɵɵproperty("data",e.name)("circle",!0)("fontSize",14),o.ɵɵadvance(5),o.ɵɵproperty("routerLink",o.ɵɵpureFunction1(6,g,e.id)),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.enabled)}}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",8),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,f,15,8,"tr",9),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.providers)}}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,y,7,1,"table",7),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.providers&&e.providers.length)}}class S{constructor(e,t){this.providerService=e,this.i18nService=t,this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){document.body.classList.remove("layout_frontend"),yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.providerService.getAll();e.sort(r.Utils.getSortFunction(this.i18nService,"name")),this.providers=e,this.loaded=!0}))}}t.ProvidersComponent=S,S.ɵfac=function(e){return new(e||S)(o.ɵɵdirectiveInject(a.ProviderService),o.ɵɵdirectiveInject(s.I18nService))},S.ɵcmp=o.ɵɵdefineComponent({type:S,selectors:[["app-providers"]],decls:18,vars:5,consts:[[1,"container","page-content"],[1,"page-header","d-flex"],["class","text-muted",4,"ngIf"],[4,"ngIf"],[1,"text-muted"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"sr-only"],["class","table table-hover table-list",4,"ngIf"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],["href","#",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-danger",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelement(0,"app-navbar"),o.ɵɵtext(1,"\n"),o.ɵɵelementStart(2,"div",0),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"h1"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,h,9,6,"p",2),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,x,4,1,"ng-container",3),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelement(16,"app-footer"),o.ɵɵtext(17,"\n")),2&e&&(o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,3,"providers")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded))},directives:[l.NavbarComponent,c.NgIf,d.FooterComponent,c.NgForOf,p.AvatarComponent,u.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},80446:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BreachReportComponent=void 0;n(42982),n(73569);const r=n(32621),o=n(42982),a=n(73569),s=n(96832),l=n(56820),c=n(52767),d=n(57490),p=n(51626),u=n(99729);function m(e,t){1&e&&(r.ɵɵelementStart(0,"p"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(2,1,"reportError"),"..."))}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",16),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"goodNews")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(3,4,"breachUsernameNotFound",e.checkedUsername),"\n ")}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",17),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"breachFound")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind3(3,4,"breachUsernameFound",e.checkedUsername,e.breachedAccounts.length),"\n ")}}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"li"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵtextInterpolate(e)}}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"li",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"img",22),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",23),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",24),r.ɵɵtext(12),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelement(14,"p",25),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"p",26),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"ul"),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,g,2,1,"li",27),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",28),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"dl"),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"dt"),r.ɵɵtext(31),r.ɵɵpipe(32,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"dd"),r.ɵɵtext(35),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"dt"),r.ɵɵtext(38),r.ɵɵpipe(39,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"dd"),r.ɵɵtext(42),r.ɵɵpipe(43,"number"),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"dt"),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"dd"),r.ɵɵtext(50),r.ɵɵpipe(51,"date"),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementStart(53,"dt"),r.ɵɵtext(54),r.ɵɵpipe(55,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"dd"),r.ɵɵtext(58),r.ɵɵpipe(59,"date"),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(63,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(6),r.ɵɵproperty("src",e.logoPath,r.ɵɵsanitizeUrl),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.title),r.ɵɵadvance(2),r.ɵɵproperty("innerHTML",e.description,r.ɵɵsanitizeHtml),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(18,13,"compromisedData"),":"),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",e.dataClasses),r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(32,15,"website")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(e.domain),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(39,17,"affectedUsers")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(43,19,e.pwnCount)),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,21,"breachOccurred")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(51,23,e.breachDate,"mediumDate")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(55,26,"breachReported")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(59,28,e.addedDate,"mediumDate"))}}function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",18),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,f,64,31,"li",19),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.breachedAccounts)}}function x(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,h,4,7,"app-callout",13),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,v,4,8,"app-callout",14),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,y,4,1,"ul",15),r.ɵɵtext(7,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.breachedAccounts.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.breachedAccounts.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.breachedAccounts.length)}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",11),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,m,3,3,"p",12),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,x,8,3,"ng-container",12),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.error),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.error)}}class b{constructor(e,t){this.auditService=e,this.stateService=t,this.error=!1,this.breachedAccounts=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.username=yield this.stateService.getEmail()}))}submit(){return i(this,void 0,void 0,(function*(){this.error=!1,this.username=this.username.toLowerCase();try{this.formPromise=this.auditService.breachedAccounts(this.username),this.breachedAccounts=yield this.formPromise}catch(e){this.error=!0}this.checkedUsername=this.username}))}}t.BreachReportComponent=b,b.ɵfac=function(e){return new(e||b)(r.ɵɵdirectiveInject(o.AuditService),r.ɵɵdirectiveInject(a.StateService))},b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-breach-report"]],decls:43,vars:22,consts:[[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"form-group","col-6"],["for","username"],["id","username","type","text","name","Username","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],["bit-button","","buttonType","primary","type","submit",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],[1,"mt-4"],[4,"ngIf"],["type","success",3,"title",4,"ngIf"],["type","danger",3,"title",4,"ngIf"],["class","list-group list-group-breach",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"list-group","list-group-breach"],["class","list-group-item min-height-fix",4,"ngFor","ngForOf"],[1,"list-group-item","min-height-fix"],[1,"col-2","text-center"],["alt","",1,"img-fluid",3,"src"],[1,"col-7"],[1,"text-lg"],[3,"innerHTML"],[1,"mb-1"],[4,"ngFor","ngForOf"],[1,"col-3"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementStart(7,"p"),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n"),r.ɵɵelementStart(11,"form",1,2),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"div",3),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",4),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"label",5),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"input",6),r.ɵɵlistener("ngModelChange",(function(e){return t.username=e})),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"small",7),r.ɵɵtext(25),r.ɵɵpipe(26,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"button",8),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"i",9),r.ɵɵpipe(33,"i18n"),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"span"),r.ɵɵtext(36),r.ɵɵpipe(37,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n"),r.ɵɵtemplate(41,S,6,2,"div",10),r.ɵɵtext(42,"\n")),2&e){const e=r.ɵɵreference(12);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,10,"dataBreachReport")),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,12,"breachDesc")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,14,"username")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.username),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(26,16,"breachCheckUsernameEmail")),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(33,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(37,20,"checkBreaches")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!e.loading&&t.checkedUsername)}},directives:[s.NgControlStatusGroup,s.NgForm,l.ApiActionDirective,s.DefaultValueAccessor,s.RequiredValidator,s.NgControlStatus,s.NgModel,c.ButtonComponent,d.NgIf,p.CalloutComponent,d.NgForOf],pipes:[u.I18nPipe,d.DecimalPipe,d.DatePipe],encapsulation:2})},84507:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CipherReportComponent=void 0;const r=n(32621),o=(n(64684),n(45552),n(44809),n(73569),n(34453)),a=n(93880),s=n(41141),l=n(32621),c=(n(64684),n(45552),n(73569),n(44809),["cipherAddEdit"]);class d{constructor(e,t,n,i,r){this.modalService=e,this.messagingService=t,this.requiresPaid=n,this.stateService=i,this.passwordRepromptService=r,this.loading=!1,this.hasLoaded=!1,this.ciphers=[]}load(){return i(this,void 0,void 0,(function*(){this.loading=!0,yield this.setCiphers(),this.loading=!1,this.hasLoaded=!0}))}selectCipher(e){return i(this,void 0,void 0,(function*(){if(!(yield this.repromptCipher(e)))return;const t=null!=this.organization?a.AddEditComponent:s.AddEditComponent,[n,r]=yield this.modalService.openViewRef(t,this.cipherAddEditModalRef,(t=>{null!=this.organization&&(t.organization=this.organization,t.organizationId=this.organization.id),t.cipherId=null==e?null:e.id,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()}))))}));return r}))}checkAccess(){return i(this,void 0,void 0,(function*(){if(null!=this.organization){if(this.requiresPaid&&!this.organization.useTotp)return this.messagingService.send("upgradeOrganization",{organizationId:this.organization.id}),!1}else{const e=yield this.stateService.getCanAccessPremium();if(this.requiresPaid&&!e)return this.messagingService.send("premiumRequired"),this.loading=!1,!1}return!0}))}setCiphers(){return i(this,void 0,void 0,(function*(){this.ciphers=[]}))}repromptCipher(e){return i(this,void 0,void 0,(function*(){return e.reprompt===o.CipherRepromptType.None||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.CipherReportComponent=d,d.ɵfac=function(e){l.ɵɵinvalidFactory()},d.ɵdir=l.ɵɵdefineDirective({type:d,viewQuery:function(e,t){if(1&e&&l.ɵɵviewQuery(c,7,r.ViewContainerRef),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first)}}})},8489:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExposedPasswordsReportComponent=void 0;n(64684),n(42982),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(42982),c=n(64684),d=n(45552),p=n(73569),u=n(44809),m=n(52767),h=n(57490),v=n(51626),g=n(18310),f=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noExposedPasswords"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",19),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",21),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",22),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",21),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,b,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,9,6,"ng-container",7),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,I,9,6,"ng-container",7),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span",18),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵpipe(29,"number"),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(28,7,"exposedXTimes",a.ɵɵpipeBind1(29,10,i.exposedPasswordMap.get(e.id))),"\n ")}}function P(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,E,32,12,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,4,"exposedPasswordsFound")),a.ɵɵproperty("useAlertRole",!0),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,6,"exposedPasswordsFoundDesc",a.ɵɵpipeBind1(6,9,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function O(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",5),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",6),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,P,16,11,"ng-container",7),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function k(e,t){}class A extends o.CipherReportComponent{constructor(e,t,n,i,r,o){super(n,i,!0,r,o),this.cipherService=e,this.auditService=t,this.exposedPasswordMap=new Map}ngOnInit(){this.checkAccess()}load(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&e.load.call(this)}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[],n=[];e.forEach((e=>{if(e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted)return;const i=this.auditService.passwordLeaked(e.login.password).then((n=>{n>0&&(t.push(e),this.exposedPasswordMap.set(e.id,n))}));n.push(i)})),yield Promise.all(n),this.ciphers=t}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}}t.ExposedPasswordsReportComponent=A,A.ɵfac=function(e){return new(e||A)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.AuditService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.MessagingService),a.ɵɵdirectiveInject(p.StateService),a.ɵɵdirectiveInject(u.PasswordRepromptService))},A.ɵcmp=a.ɵɵdefineComponent({type:A,selectors:[["app-exposed-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:26,vars:14,consts:[[1,"page-header"],["bit-button","","buttonType","primary","type","button",1,"btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],[4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title","useAlertRole"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n"),a.ɵɵelementStart(7,"p"),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementStart(11,"button",1),a.ɵɵlistener("click",(function(){return t.load()})),a.ɵɵtext(12,"\n "),a.ɵɵelement(13,"i",2),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span"),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n"),a.ɵɵtemplate(21,O,6,2,"div",3),a.ɵɵtext(22,"\n"),a.ɵɵtemplate(23,k,0,0,"ng-template",null,4,a.ɵɵtemplateRefExtractor),a.ɵɵtext(25,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,6,"exposedPasswordsReport")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,8,"exposedPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(14,10,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(18,12,"checkExposedPasswords")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.ButtonComponent,h.NgIf,v.CalloutComponent,h.NgForOf,g.IconComponent,f.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},66916:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InactiveTwoFactorReportComponent=void 0;n(64684),n(45330),n(36631),n(45552),n(44809),n(73569);const r=n(32773),o=n(82769),a=n(84507),s=n(32621),l=n(45330),c=n(64684),d=n(45552),p=n(73569),u=n(36631),m=n(44809),h=n(57490),v=n(51626),g=n(18310),f=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",8),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"goodNews")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"noInactive2fa"),"\n "))}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",18),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"shared")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",19),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"attachments")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(s.ɵɵelementStart(0,"a",20),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(3);s.ɵɵpropertyInterpolate("href",t.cipherDocs.get(e.id),s.ɵɵsanitizeUrl),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,2,"instructions"),"")}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",12),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"app-vault-icon",13),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"td",14),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"a",15),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).selectCipher(t)})),s.ɵɵpipe(10,"i18n"),s.ɵɵtext(11),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,C,9,6,"ng-container",1),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,I,9,6,"ng-container",1),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"br"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"small"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"td",16),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,E,3,4,"a",17),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(4),s.ɵɵproperty("cipher",e),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(10,7,"editItem")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.name),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!n.organization&&e.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.hasAttachments),s.ɵɵadvance(5),s.ɵɵtextInterpolate(e.subTitle),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",n.cipherDocs.has(e.id))}}function O(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",9),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"number"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"table",10),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"tbody"),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,P,28,9,"tr",11),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"inactive2faFound")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(5,5,"inactive2faFoundDesc",s.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),s.ɵɵadvance(8),s.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",6),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,w,4,6,"app-callout",7),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,O,16,10,"ng-container",1),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.ciphers.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends a.CipherReportComponent{constructor(e,t,n,i,r,o){super(t,n,!0,i,o),this.cipherService=e,this.logService=r,this.services=new Map,this.cipherDocs=new Map}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){try{yield this.load2fa()}catch(e){this.logService.error(e)}if(this.services.size>0){const e=yield this.getAllCiphers(),t=[],n=[],i=new Map;e.forEach((e=>{if(e.type===r.CipherType.Login&&(null==e.login.totp||""===e.login.totp)&&e.login.hasUris&&!e.isDeleted)for(let n=0;n0)return;const e=yield fetch(new Request("https://2fa.directory/api/v3/totp.json"));if(200!==e.status)throw new Error;const t=yield e.json();for(const n of t){const e=n[1];if(null!=e.domain&&null!=e.documentation){if(null!=e["additional-domains"])for(const t of e["additional-domains"])this.services.set(t,e.documentation);this.services.set(e.domain,e.documentation)}}}))}}t.InactiveTwoFactorReportComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.ModalService),s.ɵɵdirectiveInject(d.MessagingService),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.PasswordRepromptService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-inactive-two-factor-report"]],features:[s.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"text-right"],["class","badge badge-primary","target","_blank","rel","noopener",3,"href",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["target","_blank","rel","noopener",1,"badge","badge-primary",3,"href"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵtemplate(5,S,9,6,"small",1),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"p"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n"),s.ɵɵtemplate(13,b,9,6,"div",1),s.ɵɵtext(14,"\n"),s.ɵɵtemplate(15,k,6,2,"div",2),s.ɵɵtext(16,"\n"),s.ɵɵtemplate(17,A,0,0,"ng-template",null,3,s.ɵɵtemplateRefExtractor),s.ɵɵtext(19,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,5,"inactive2faReport"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,7,"inactive2faReportDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,g.IconComponent,f.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},50702:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReportCardComponent=t.ReportTypes=void 0;n(61248),n(45552),n(73569);const r=n(32621),o=n(73569),a=n(45552),s=n(61248),l=n(68012),c=n(57490),d=n(25108),p=n(99729);function u(e,t){1&e&&(r.ɵɵelementStart(0,"span",8),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"premium")))}const m=function(e){return{"tw-grayscale":e}};!function(e){e.exposedPasswords="exposedPasswords",e.reusedPasswords="reusedPasswords",e.weakPasswords="weakPasswords",e.unsecuredWebsites="unsecuredWebsites",e.inactive2fa="inactive2fa",e.dataBreach="dataBreach"}(t.ReportTypes||(t.ReportTypes={}));const h={exposedPasswords:{title:"exposedPasswordsReport",description:"exposedPasswordsReportDesc",route:"exposed-passwords-report",icon:'\n \n \n \n \n \n \n \n \n \n \n \n \n ',requiresPremium:!0},reusedPasswords:{title:"reusedPasswordsReport",description:"reusedPasswordsReportDesc",route:"reused-passwords-report",icon:'\n \n \n \n \n \n ',requiresPremium:!0},weakPasswords:{title:"weakPasswordsReport",description:"weakPasswordsReportDesc",route:"weak-passwords-report",icon:'\n \n \n \n \n \n \n ',requiresPremium:!0},unsecuredWebsites:{title:"unsecuredWebsitesReport",description:"unsecuredWebsitesReportDesc",route:"unsecured-websites-report",icon:'\n \n \n \n \n \n \n \n \n ',requiresPremium:!0},inactive2fa:{title:"inactive2faReport",description:"inactive2faReportDesc",route:"inactive-two-factor-report",icon:'\n \n \n \n \n \n \n ',requiresPremium:!0},dataBreach:{title:"dataBreachReport",description:"breachDesc",route:"breach-report",icon:'\n \n \n \n \n \n \n \n \n \n \n ',requiresPremium:!1}};class v{constructor(e,t,n){this.stateService=e,this.messagingService=t,this.sanitizer=n}ngOnInit(){return i(this,void 0,void 0,(function*(){this.report=h[this.type],this.hasPremium=yield this.stateService.getCanAccessPremium()}))}get premium(){return this.report.requiresPremium&&!this.hasPremium}get route(){return this.premium?null:this.report.route}get icon(){return this.sanitizer.bypassSecurityTrustHtml(this.report.icon)}click(){this.premium&&this.messagingService.send("premiumRequired")}}t.ReportCardComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.StateService),r.ɵɵdirectiveInject(a.MessagingService),r.ɵɵdirectiveInject(s.DomSanitizer))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-report-card"]],inputs:{type:"type"},decls:24,vars:15,consts:[[1,"tw-border","tw-border-solid","tw-border-secondary-300","tw-rounded","tw-overflow-hidden","tw-h-full","tw-w-72","tw-block","!tw-text-main","hover:tw-no-underline","hover:tw-scale-105","tw-transition-all","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700",3,"routerLink","click"],[1,"tw-relative"],[1,"tw-text-center","tw-h-28","tw-flex","tw-bg-background-alt2","tw-text-primary-300",3,"ngClass"],[1,"tw-m-auto",3,"innerHtml"],[1,"tw-p-5",3,"ngClass"],[1,"tw-text-xl","tw-font-bold","tw-mb-4"],[1,"tw-mb-0"],["bit-badge","","badgeType","success","class","tw-absolute tw-left-2 tw-top-2 tw-leading-none",4,"ngIf"],["bit-badge","","badgeType","success",1,"tw-absolute","tw-left-2","tw-top-2","tw-leading-none"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"a",0),r.ɵɵlistener("click",(function(){return t.click()})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",5),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"p",6),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,u,3,3,"span",7),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n")),2&e&&(r.ɵɵproperty("routerLink",t.route),r.ɵɵadvance(4),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(11,m,t.premium)),r.ɵɵadvance(2),r.ɵɵproperty("innerHtml",t.icon,r.ɵɵsanitizeHtml),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,t.report.requiresPremium)),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,7,t.report.title)),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(17,9,t.report.description)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.premium))},directives:[l.RouterLinkWithHref,c.NgClass,c.NgIf,d.BadgeComponent],pipes:[p.I18nPipe],encapsulation:2})},9539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportListComponent=void 0;const i=n(50702),r=n(32621),o=n(57490),a=n(50702),s=n(99729);function l(e,t){if(1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"app-report-card",3),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(2),r.ɵɵproperty("type",e)}}class c{constructor(){this.reports=[i.ReportTypes.exposedPasswords,i.ReportTypes.reusedPasswords,i.ReportTypes.weakPasswords,i.ReportTypes.unsecuredWebsites,i.ReportTypes.inactive2fa,i.ReportTypes.dataBreach]}}t.ReportListComponent=c,c.ɵfac=function(e){return new(e||c)},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-report-list"]],decls:16,vars:7,consts:[[1,"page-header"],[1,"tw-inline-grid","tw-grid-cols-3","tw-gap-4"],[4,"ngFor","ngForOf"],[3,"type"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n\n"),r.ɵɵelementStart(7,"p"),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n\n"),r.ɵɵelementStart(11,"div",1),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,l,4,1,"div",2),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"reports")),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,5,"reportsDesc")),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",t.reports))},directives:[o.NgForOf,a.ReportCardComponent],pipes:[s.I18nPipe],encapsulation:2})},26627:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportsRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(80446),a=n(8489),s=n(66916),l=n(9539),c=n(8351),d=n(99997),p=n(51948),u=n(64021),m=n(32621),h=(n(68012),[{path:"",component:c.ReportsComponent,canActivate:[r.AuthGuard],children:[{path:"",pathMatch:"full",component:l.ReportListComponent,data:{homepage:!0}},{path:"breach-report",component:o.BreachReportComponent,data:{titleId:"dataBreachReport"}},{path:"reused-passwords-report",component:d.ReusedPasswordsReportComponent,data:{titleId:"reusedPasswordsReport"}},{path:"unsecured-websites-report",component:p.UnsecuredWebsitesReportComponent,data:{titleId:"unsecuredWebsitesReport"}},{path:"weak-passwords-report",component:u.WeakPasswordsReportComponent,data:{titleId:"weakPasswordsReport"}},{path:"exposed-passwords-report",component:a.ExposedPasswordsReportComponent,data:{titleId:"exposedPasswordsReport"}},{path:"inactive-two-factor-report",component:s.InactiveTwoFactorReportComponent,data:{titleId:"inactive2faReport"}}]}]);class v{}t.ReportsRoutingModule=v,v.ɵfac=function(e){return new(e||v)},v.ɵmod=m.ɵɵdefineNgModule({type:v}),v.ɵinj=m.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(h)],i.RouterModule]})},8351:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportsComponent=void 0;const i=n(68012),r=n(14857),o=n(32621),a=n(68012),s=n(57490),l=n(52767),c=n(99729);function d(e,t){1&e&&(o.ɵɵelementStart(0,"a",4),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"backToReports"),"\n "))}class p{constructor(e){this.homepage=!0,this.subscription=e.events.pipe(r.filter((e=>e instanceof i.NavigationEnd))).subscribe((e=>{this.homepage="/reports"==e.url}))}ngOnDestroy(){var e;null===(e=this.subscription)||void 0===e||e.unsubscribe()}}t.ReportsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.Router))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["app-reports"]],decls:13,vars:1,consts:[[1,"container","page-content"],[1,"row","mt-4"],[1,"col"],["bit-button","","routerLink","./",4,"ngIf"],["bit-button","","routerLink","./"],["aria-hidden","true",1,"bwi","bwi-angle-left"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"router-outlet"),o.ɵɵtext(3,"\n\n "),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,d,5,3,"a",3),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(8),o.ɵɵproperty("ngIf",!t.homepage))},directives:[a.RouterOutlet,s.NgIf,l.ButtonComponent,a.RouterLinkWithHref],pipes:[c.I18nPipe],encapsulation:2})},99997:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReusedPasswordsReportComponent=void 0;n(64684),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(64684),c=n(45552),d=n(73569),p=n(44809),u=n(57490),m=n(51626),h=n(18310),v=n(1142),g=n(39159),f=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noReusedPasswords"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",19),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",21),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,b,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,9,6,"ng-container",1),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,I,9,6,"ng-container",1),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span",18),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(28,7,"reusedXTimes",i.passwordUseMap.get(e.login.password)),"\n ")}}function P(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,E,31,10,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"reusedPasswordsFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"reusedPasswordsFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function O(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,P,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function k(e,t){}class A extends o.CipherReportComponent{constructor(e,t,n,i,r){super(t,n,!0,i,r),this.cipherService=e}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[];this.passwordUseMap=new Map,e.forEach((e=>{e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted||(t.push(e),this.passwordUseMap.has(e.login.password)?this.passwordUseMap.set(e.login.password,this.passwordUseMap.get(e.login.password)+1):this.passwordUseMap.set(e.login.password,1))}));const n=t.filter((e=>this.passwordUseMap.has(e.login.password)&&this.passwordUseMap.get(e.login.password)>1));this.ciphers=n}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}}t.ReusedPasswordsReportComponent=A,A.ɵfac=function(e){return new(e||A)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.ModalService),a.ɵɵdirectiveInject(c.MessagingService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PasswordRepromptService))},A.ɵcmp=a.ɵɵdefineComponent({type:A,selectors:[["app-reused-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,y,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,x,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,O,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,k,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"reusedPasswordsReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"reusedPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[u.NgIf,m.CalloutComponent,u.NgForOf,h.IconComponent,v.StopClickDirective,g.StopPropDirective],pipes:[f.I18nPipe,u.DecimalPipe],encapsulation:2})},51948:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnsecuredWebsitesReportComponent=void 0;n(64684),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(64684),c=n(45552),d=n(73569),p=n(44809),u=n(57490),m=n(51626),h=n(18310),v=n(1142),g=n(39159),f=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noUnsecuredWebsites"),"\n "))}function b(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",16),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function w(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",17),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function C(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"a",15),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(10,"i18n"),a.ɵɵtext(11),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵtemplate(13,b,9,6,"ng-container",1),a.ɵɵtext(14,"\n "),a.ɵɵtemplate(15,w,9,6,"ng-container",1),a.ɵɵtext(16,"\n "),a.ɵɵelement(17,"br"),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"small"),a.ɵɵtext(20),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(10,6,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!n.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle)}}function I(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,C,23,8,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"unsecuredWebsitesFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"unsecuredWebsitesFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,I,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function P(e,t){}class O extends o.CipherReportComponent{constructor(e,t,n,i,r){super(t,n,!0,i,r),this.cipherService=e}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=(yield this.getAllCiphers()).filter((e=>!(e.type!==r.CipherType.Login||!e.login.hasUris||e.isDeleted)&&e.login.uris.some((e=>null!=e.uri&&0===e.uri.indexOf("http://")))));this.ciphers=e}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}}t.UnsecuredWebsitesReportComponent=O,O.ɵfac=function(e){return new(e||O)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.ModalService),a.ɵɵdirectiveInject(c.MessagingService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PasswordRepromptService))},O.ɵcmp=a.ɵɵdefineComponent({type:O,selectors:[["app-unsecured-websites-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,y,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,x,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,E,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,P,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"unsecuredWebsitesReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"unsecuredWebsitesReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[u.NgIf,m.CalloutComponent,u.NgForOf,h.IconComponent,v.StopClickDirective,g.StopPropDirective],pipes:[f.I18nPipe,u.DecimalPipe],encapsulation:2})},64021:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WeakPasswordsReportComponent=void 0;n(64684),n(45330),n(45552),n(84275),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(84275),c=n(64684),d=n(45552),p=n(73569),u=n(44809),m=n(57490),h=n(51626),v=n(18310),g=n(1142),f=n(39159),y=n(99729);function x(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noWeakPasswords"),"\n "))}function w(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",18),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",19),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,w,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,C,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,I,9,6,"ng-container",1),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,E,9,6,"ng-container",1),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span"),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(5),a.ɵɵclassMapInterpolate1("badge badge-",i.passwordStrengthMap.get(e.id)[1],""),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(28,10,i.passwordStrengthMap.get(e.id)[0]),"\n ")}}function O(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,P,31,12,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"weakPasswordsFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"weakPasswordsFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,b,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,O,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends o.CipherReportComponent{constructor(e,t,n,i,r,o){super(n,i,!0,r,o),this.cipherService=e,this.passwordGenerationService=t,this.passwordStrengthMap=new Map,this.passwordStrengthCache=new Map}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[],n=e=>null!=e.login.username&&""!==e.login.username.trim(),i=e=>e.login.password+"_____"+(n(e)?e.login.username:"");e.forEach((e=>{if(e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted)return;const o=n(e),a=i(e);if(!this.passwordStrengthCache.has(a)){let t=[];if(o){const n=e.login.username.indexOf("@");t=n>-1?t.concat(e.login.username.substr(0,n).trim().toLowerCase().split(/[^A-Za-z0-9]/)).filter((e=>e.length>=3)):e.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/).filter((e=>e.length>=3))}const n=this.passwordGenerationService.passwordStrength(e.login.password,t.length>0?t:null);this.passwordStrengthCache.set(a,n.score)}const s=this.passwordStrengthCache.get(a);null!=s&&s<=2&&(this.passwordStrengthMap.set(e.id,this.scoreKey(s)),t.push(e))})),t.sort(((e,t)=>this.passwordStrengthCache.get(i(e))-this.passwordStrengthCache.get(i(t)))),this.ciphers=t}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}scoreKey(e){switch(e){case 4:return["strong","success"];case 3:return["good","primary"];case 2:return["weak","warning"];default:return["veryWeak","danger"]}}}t.WeakPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.PasswordGenerationService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.MessagingService),a.ɵɵdirectiveInject(p.StateService),a.ɵɵdirectiveInject(u.PasswordRepromptService))},T.ɵcmp=a.ɵɵdefineComponent({type:T,selectors:[["app-weak-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,x,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,S,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,k,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,A,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"weakPasswordsReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"weakPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,g.StopClickDirective,f.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},78482:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessComponent=void 0;n(68012),n(91674),n(85714),n(1659),n(51554),n(73828);const r=n(20971),o=n(70149),a=n(82769),s=n(95708),l=n(74012),c=n(33018),d=n(32621),p=n(51554),u=n(1659),m=n(91674),h=n(73828),v=n(68012),g=n(85714),f=n(96832),y=n(56820),x=n(57490),S=n(51626),b=n(48198),w=n(45728),C=n(99729);function I(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",16),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind2(4,1,"sendCreatorIdentifier",e.creatorIdentifier))}}function E(e,t){1&e&&(d.ɵɵelementStart(0,"div",17),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"app-callout",18),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4),d.ɵɵpipe(5,"i18n"),d.ɵɵelementStart(6,"a",19),d.ɵɵtext(7),d.ɵɵpipe(8,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(9,".\n "),d.ɵɵelementEnd(),d.ɵɵtext(10,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,3,"warning")),d.ɵɵadvance(2),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(5,5,"viewSendHiddenEmailWarning"),"\n "),d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(8,7,"learnMore")))}function P(e,t){1&e&&(d.ɵɵelementStart(0,"div",20),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",21),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",22),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function O(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"p"),d.ɵɵtext(7),d.ɵɵpipe(8,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"div",24),d.ɵɵtext(11,"\n "),d.ɵɵelementStart(12,"label",25),d.ɵɵtext(13),d.ɵɵpipe(14,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"input",26),d.ɵɵlistener("ngModelChange",(function(t){d.ɵɵrestoreView(e);return d.ɵɵnextContext().password=t})),d.ɵɵelementEnd(),d.ɵɵtext(17,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(18,"\n "),d.ɵɵelementStart(19,"div",27),d.ɵɵtext(20,"\n "),d.ɵɵelementStart(21,"button",28),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"span"),d.ɵɵtext(24,"\n "),d.ɵɵelement(25,"i",29),d.ɵɵtext(26),d.ɵɵpipe(27,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(28,"\n "),d.ɵɵelement(29,"i",30),d.ɵɵpipe(30,"i18n"),d.ɵɵtext(31,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(32,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(33,"\n "),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(),t=d.ɵɵreference(1);d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,7,"sendProtectedPassword")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(8,9,"sendProtectedPasswordDontKnow")),d.ɵɵadvance(6),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(14,11,"password")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",e.password),d.ɵɵadvance(5),d.ɵɵproperty("disabled",t.loading),d.ɵɵadvance(5),d.ɵɵtextInterpolate1(" ",d.ɵɵpipeBind1(27,13,"continue"),"\n "),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(30,15,"loading"))}}function k(e,t){1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(2,1,"sendAccessUnavailable"),"\n "))}function A(e,t){1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(2,1,"unexpectedError"),"\n "))}function T(e,t){1&e&&(d.ɵɵelementStart(0,"app-callout",38),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(2,1,"sendHiddenByDefault")))}const M=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function B(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",36),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(3).toggleText()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",39),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(3);d.ɵɵadvance(2),d.ɵɵproperty("ngClass",d.ɵɵpureFunction2(4,M,!e.showText,e.showText)),d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,2,"toggleVisibility"),"\n ")}}function D(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵtemplate(2,T,3,3,"app-callout",33),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"div",24),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"textarea",34),d.ɵɵlistener("ngModelChange",(function(t){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).sendText=t})),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵtemplate(9,B,5,7,"button",35),d.ɵɵtext(10,"\n "),d.ɵɵelementStart(11,"button",36),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).copyText()})),d.ɵɵtext(12,"\n "),d.ɵɵelement(13,"i",37),d.ɵɵtext(14),d.ɵɵpipe(15,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementContainerEnd()}if(2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.send.text.hidden),d.ɵɵadvance(4),d.ɵɵproperty("ngModel",e.sendText),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",e.send.text.hidden),d.ɵɵadvance(5),d.ɵɵtextInterpolate1(" ",d.ɵɵpipeBind1(15,4,"copyValue"),"\n ")}}function R(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",42),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(3).download()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",43),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(3);d.ɵɵadvance(3),d.ɵɵtextInterpolate2("\n ",d.ɵɵpipeBind1(4,2,"downloadFile")," (",e.send.file.sizeName,")\n ")}}function F(e,t){1&e&&(d.ɵɵelementStart(0,"button",44),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",30),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,1,"loading")))}function U(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵelementEnd(),d.ɵɵtext(4,"\n "),d.ɵɵtemplate(5,R,5,4,"button",40),d.ɵɵtext(6,"\n "),d.ɵɵtemplate(7,F,5,3,"button",41),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(3),d.ɵɵtextInterpolate(e.send.file.fileName),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!e.downloading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.downloading)}}function V(e,t){if(1&e&&(d.ɵɵelementStart(0,"p",45),d.ɵɵtext(1),d.ɵɵpipe(2,"date"),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n Expires: ",d.ɵɵpipeBind2(2,1,e.expirationDate,"medium"),"\n ")}}function N(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p",20),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"b"),d.ɵɵtext(5),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelement(8,"hr"),d.ɵɵtext(9,"\n "),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,D,17,6,"ng-container",31),d.ɵɵtext(12,"\n "),d.ɵɵtext(13,"\n "),d.ɵɵtemplate(14,U,9,3,"ng-container",31),d.ɵɵtext(15,"\n "),d.ɵɵtemplate(16,V,3,4,"p",32),d.ɵɵtext(17,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.send.name),d.ɵɵadvance(6),d.ɵɵproperty("ngIf",e.send.type===e.sendType.Text),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",e.send.type===e.sendType.File),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.expirationDate)}}class _{constructor(e,t,n,i,r,a){this.i18nService=e,this.cryptoFunctionService=t,this.apiService=n,this.platformUtilsService=i,this.route=r,this.cryptoService=a,this.sendType=o.SendType,this.downloading=!1,this.loading=!0,this.passwordRequired=!1,this.showText=!1,this.unavailable=!1,this.error=!1,this.hideEmail=!1}get sendText(){return null==this.send||null==this.send.text?null:this.showText?this.send.text.text:this.send.text.maskedText}get expirationDate(){return null==this.send||null==this.send.expirationDate?null:this.send.expirationDate}get creatorIdentifier(){return null==this.send||null==this.send.creatorIdentifier?null:this.send.creatorIdentifier}ngOnInit(){this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.id=e.sendId,this.key=e.key,null!=this.key&&null!=this.id&&(yield this.load())}))))}download(){return i(this,void 0,void 0,(function*(){if(null==this.send||null==this.decKey)return;if(this.downloading)return;const e=yield this.apiService.getSendFileDownloadData(this.send,this.accessRequest);if(a.Utils.isNullOrWhitespace(e.url))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("missingSendFile"));this.downloading=!0;const t=yield fetch(new Request(e.url,{cache:"no-store"}));if(200!==t.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(this.downloading=!1);try{const e=yield t.arrayBuffer(),n=yield this.cryptoService.decryptFromBytes(e,this.decKey);this.platformUtilsService.saveFile(window,n,null,this.send.file.fileName)}catch(n){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}this.downloading=!1}))}copyText(){this.platformUtilsService.copyToClipboard(this.send.text.text),this.platformUtilsService.showToast("success",null,this.i18nService.t("valueCopied",this.i18nService.t("sendTypeText")))}toggleText(){this.showText=!this.showText}load(){return i(this,void 0,void 0,(function*(){this.unavailable=!1,this.error=!1,this.hideEmail=!1;const e=a.Utils.fromUrlB64ToArray(this.key);if(this.accessRequest=new l.SendAccessRequest,null!=this.password){const t=yield this.cryptoFunctionService.pbkdf2(this.password,e,"sha256",r.SEND_KDF_ITERATIONS);this.accessRequest.password=a.Utils.fromBufferToB64(t)}try{let t=null;this.loading?t=yield this.apiService.postSendAccess(this.id,this.accessRequest):(this.formPromise=this.apiService.postSendAccess(this.id,this.accessRequest),t=yield this.formPromise),this.passwordRequired=!1;const n=new s.SendAccess(t);this.decKey=yield this.cryptoService.makeSendKey(e),this.send=yield n.decrypt(this.decKey),this.showText=null==this.send.text||!this.send.text.hidden}catch(t){t instanceof c.ErrorResponse&&(401===t.statusCode?this.passwordRequired=!0:404===t.statusCode?this.unavailable=!0:this.error=!0)}this.loading=!1,this.hideEmail=null==this.creatorIdentifier&&!this.passwordRequired&&!this.loading&&!this.unavailable}))}}t.AccessComponent=_,_.ɵfac=function(e){return new(e||_)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.CryptoFunctionService),d.ɵɵdirectiveInject(m.ApiService),d.ɵɵdirectiveInject(h.PlatformUtilsService),d.ɵɵdirectiveInject(v.ActivatedRoute),d.ɵɵdirectiveInject(g.CryptoService))},_.ɵcmp=d.ɵɵdefineComponent({type:_,selectors:[["app-send-access"]],decls:55,vars:23,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-center","mt-5"],[1,"col-12"],[1,"lead","text-center","mb-4"],["class","col-12 text-center",4,"ngIf"],["class","col-8",4,"ngIf"],[1,"row","justify-content-center"],[1,"col-5"],[1,"card","d-block"],["class","card-body","class","text-center",4,"ngIf"],["class","card-body",4,"ngIf"],[1,"col-12","text-center","mt-5","text-muted"],[1,"mb-0"],["href","https://www.bitwarden.com/products/send?source=web-vault","target","_blank"],["href","https://vault.bitwarden.com/#/register","target","_blank"],[1,"col-12","text-center"],[1,"col-8"],["type","warning",3,"title"],["href","https://bitwarden.com/help/receive-send/","target","_blank"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"card-body"],[1,"form-group"],["for","password"],["id","password","type","password","name","Password","required","","appInputVerbatim","","appAutofocus","",1,"text-monospace","form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[4,"ngIf"],["class","text-center text-muted",4,"ngIf"],["type","tip",4,"ngIf"],["id","text","rows","8","name","Text","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["class","btn btn-block btn-link","type","button",3,"click",4,"ngIf"],["type","button",1,"btn","btn-block","btn-link",3,"click"],["aria-hidden","true",1,"bwi","bwi-copy"],["type","tip"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["class","btn btn-primary btn-block","type","button",3,"click",4,"ngIf"],["class","btn btn-primary btn-block","type","button","disabled","true",4,"ngIf"],["type","button",1,"btn","btn-primary","btn-block",3,"click"],["aria-hidden","true",1,"bwi","bwi-download"],["type","button","disabled","true",1,"btn","btn-primary","btn-block"],[1,"text-center","text-muted"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"form",0,1),d.ɵɵlistener("ngSubmit",(function(){return t.load()})),d.ɵɵtext(2,"\n "),d.ɵɵelementStart(3,"div",2),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"div",3),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"p",4),d.ɵɵtext(8,"Bitwarden Send"),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,I,6,4,"div",5),d.ɵɵtext(12,"\n "),d.ɵɵtemplate(13,E,11,9,"div",6),d.ɵɵtext(14,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"div",7),d.ɵɵtext(17,"\n "),d.ɵɵelementStart(18,"div",8),d.ɵɵtext(19,"\n "),d.ɵɵelementStart(20,"div",9),d.ɵɵtext(21,"\n "),d.ɵɵtemplate(22,P,9,6,"div",10),d.ɵɵtext(23,"\n "),d.ɵɵtemplate(24,O,34,17,"div",11),d.ɵɵtext(25,"\n "),d.ɵɵtemplate(26,k,3,3,"div",11),d.ɵɵtext(27,"\n "),d.ɵɵtemplate(28,A,3,3,"div",11),d.ɵɵtext(29,"\n "),d.ɵɵtemplate(30,N,18,4,"div",11),d.ɵɵtext(31,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(32,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(33,"\n "),d.ɵɵelementStart(34,"div",12),d.ɵɵtext(35,"\n "),d.ɵɵelementStart(36,"p",13),d.ɵɵtext(37),d.ɵɵpipe(38,"i18n"),d.ɵɵelement(39,"br"),d.ɵɵtext(40),d.ɵɵpipe(41,"i18n"),d.ɵɵelementStart(42,"a",14),d.ɵɵtext(43,"Bitwarden Send"),d.ɵɵelementEnd(),d.ɵɵtext(44),d.ɵɵpipe(45,"i18n"),d.ɵɵelementStart(46,"a",15),d.ɵɵtext(47),d.ɵɵpipe(48,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(49),d.ɵɵpipe(50,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(51,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(52,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(53,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(54,"\n")),2&e&&(d.ɵɵproperty("appApiAction",t.formPromise),d.ɵɵadvance(11),d.ɵɵproperty("ngIf",null!=t.creatorIdentifier),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.hideEmail),d.ɵɵadvance(9),d.ɵɵproperty("ngIf",t.loading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.passwordRequired),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.unavailable),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.error),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&!t.passwordRequired&&t.send),d.ɵɵadvance(7),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(38,13,"sendAccessTaglineProductDesc"),""),d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(41,15,"sendAccessTaglineLearnMore"),"\n "),d.ɵɵadvance(4),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(45,17,"sendAccessTaglineOr"),"\n "),d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(48,19,"sendAccessTaglineSignUp")),d.ɵɵadvance(2),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(50,21,"sendAccessTaglineTryToday"),"\n "))},directives:[f.NgControlStatusGroup,f.NgForm,y.ApiActionDirective,x.NgIf,S.CalloutComponent,f.DefaultValueAccessor,f.RequiredValidator,b.InputVerbatimDirective,w.AutofocusDirective,f.NgControlStatus,f.NgModel,x.NgClass],pipes:[C.I18nPipe,x.DatePipe],encapsulation:2})},167:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(57490);const r=n(83810),o=(n(56071),n(51554),n(36631),n(45552),n(73828),n(62166),n(76532),n(73569),n(32621)),a=n(51554),s=n(73828),l=n(56071),c=n(57490),d=n(76532),p=n(73569),u=n(45552),m=n(62166),h=n(36631),v=n(96832),g=n(56820),f=n(8863),y=n(1142),x=n(70452),S=n(51626),b=n(99729);function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,1,"sendDisabledWarning")))}function C(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"ul",50),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"li"),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"sendOptionsPolicyInEffect")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,4,"sendDisableHideEmailInEffect")))}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",25),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",52),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).send.type=t}))("change",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).typeChanged(t)})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",53),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("name","Type_",e.value,""),o.ɵɵpropertyInterpolate1("id","type_",e.value,""),o.ɵɵproperty("ngModel",n.send.type)("value",e.value)("checked",n.send.type===e.value),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("for","type_",e.value,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label"),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,I,7,7,"div",51),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,2,"whatTypeOfSend")),o.ɵɵadvance(3),o.ɵɵproperty("ngForOf",e.typeOptions)}}function P(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",24),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",54),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"textarea",55),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.text.text=t})),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"small",20),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",24),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",25),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"input",56),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.text.hidden=t})),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",57),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,7,"sendTypeText")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.text.text)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,9,"sendTextDesc")),o.ɵɵadvance(8),o.ɵɵproperty("ngModel",e.send.text.hidden)("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"textHiddenByDefault"))}}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"strong",58),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"file")),o.ɵɵadvance(2),o.ɵɵtextInterpolate2("\n ",e.send.file.fileName," (",e.send.file.sizeName,")\n ")}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",59),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",60),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"small",20),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,4,"file")),o.ɵɵadvance(3),o.ɵɵproperty("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",o.ɵɵpipeBind1(10,6,"sendFileDesc")," ",o.ɵɵpipeBind1(11,8,"maxFileSize"),"")}}function A(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",24),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,6,5,"div",15),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,k,13,10,"div",15),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.editMode)}}function T(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",24),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",61),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",62),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).link=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"sendLinkLabel")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.link)}}function M(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",17),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",63),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",64),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.accessCount=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"currentAccessCount")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.accessCount)}}function B(e,t){1&e&&(o.ɵɵelementStart(0,"label",65),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"password")))}function D(e,t){1&e&&(o.ɵɵelementStart(0,"label",65),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"newPassword")))}const R=function(e,t){return{"bwi-angle-down":e,"bwi-chevron-up":t}},F=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function U(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",14),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,6,3,"app-callout",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,13,6,"app-callout",15),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",17),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"small",20),o.ɵɵtext(17),o.ɵɵpipe(18,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,E,11,4,"div",21),o.ɵɵtext(23,"\n "),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,P,27,13,"ng-container",15),o.ɵɵtext(26,"\n "),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,A,9,2,"ng-container",15),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"h3",22),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,T,8,4,"div",23),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",24),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",25),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"input",26),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().copyLink=t})),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"label",27),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"div",28),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleOptions()})),o.ɵɵtext(49,"\n "),o.ɵɵelementStart(50,"h3",29),o.ɵɵtext(51),o.ɵɵpipe(52,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelementStart(54,"a",30),o.ɵɵtext(55,"\n "),o.ɵɵelement(56,"i",31),o.ɵɵtext(57,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelementStart(60,"div",32),o.ɵɵtext(61,"\n "),o.ɵɵelementStart(62,"app-send-efflux-dates",33),o.ɵɵlistener("datesChanged",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().setDates(t)})),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementStart(65,"div",16),o.ɵɵtext(66,"\n "),o.ɵɵelementStart(67,"div",17),o.ɵɵtext(68,"\n "),o.ɵɵelementStart(69,"label",34),o.ɵɵtext(70),o.ɵɵpipe(71,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementStart(73,"input",35),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.maxAccessCount=t})),o.ɵɵelementEnd(),o.ɵɵtext(74,"\n "),o.ɵɵelementStart(75,"div",36),o.ɵɵtext(76),o.ɵɵpipe(77,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(78,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(79,"\n "),o.ɵɵtemplate(80,M,8,4,"div",37),o.ɵɵtext(81,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(82,"\n "),o.ɵɵelementStart(83,"div",16),o.ɵɵtext(84,"\n "),o.ɵɵelementStart(85,"div",17),o.ɵɵtext(86,"\n "),o.ɵɵtemplate(87,B,3,3,"label",38),o.ɵɵtext(88,"\n "),o.ɵɵtemplate(89,D,3,3,"label",38),o.ɵɵtext(90,"\n "),o.ɵɵelementStart(91,"div",39),o.ɵɵtext(92,"\n "),o.ɵɵelementStart(93,"input",40),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().password=t})),o.ɵɵelementEnd(),o.ɵɵtext(94,"\n "),o.ɵɵelementStart(95,"div",41),o.ɵɵtext(96,"\n "),o.ɵɵelementStart(97,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().togglePasswordVisible()})),o.ɵɵpipe(98,"i18n"),o.ɵɵtext(99,"\n "),o.ɵɵelement(100,"i",43),o.ɵɵtext(101,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(102,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(103,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(104,"\n "),o.ɵɵelementStart(105,"div",36),o.ɵɵtext(106),o.ɵɵpipe(107,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(108,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(109,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(110,"\n "),o.ɵɵelementStart(111,"div",24),o.ɵɵtext(112,"\n "),o.ɵɵelementStart(113,"label",44),o.ɵɵtext(114),o.ɵɵpipe(115,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(116,"\n "),o.ɵɵelementStart(117,"textarea",45),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.notes=t})),o.ɵɵelementEnd(),o.ɵɵtext(118,"\n "),o.ɵɵelementStart(119,"div",36),o.ɵɵtext(120),o.ɵɵpipe(121,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(122,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(123,"\n "),o.ɵɵelementStart(124,"div",24),o.ɵɵtext(125,"\n "),o.ɵɵelementStart(126,"div",25),o.ɵɵtext(127,"\n "),o.ɵɵelementStart(128,"input",46),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.hideEmail=t})),o.ɵɵelementEnd(),o.ɵɵtext(129,"\n "),o.ɵɵelementStart(130,"label",47),o.ɵɵtext(131),o.ɵɵpipe(132,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(133,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(134,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(135,"\n "),o.ɵɵelementStart(136,"div",24),o.ɵɵtext(137,"\n "),o.ɵɵelementStart(138,"div",25),o.ɵɵtext(139,"\n "),o.ɵɵelementStart(140,"input",48),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.disabled=t})),o.ɵɵelementEnd(),o.ɵɵtext(141,"\n "),o.ɵɵelementStart(142,"label",49),o.ɵɵtext(143),o.ɵɵpipe(144,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(145,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(146,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(147,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(148,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.disableSend&&e.disableHideEmail),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,43,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.name)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(18,45,"sendNameDesc")),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!e.editMode),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.send.type===e.sendType.Text),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.send.type===e.sendType.File),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,47,"share")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.link),o.ɵɵadvance(6),o.ɵɵproperty("ngModel",e.copyLink),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(44,49,"copySendLinkOnSave")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(52,51,"options")),o.ɵɵadvance(5),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(69,R,!e.showOptions,e.showOptions)),o.ɵɵadvance(4),o.ɵɵproperty("hidden",!e.showOptions),o.ɵɵadvance(2),o.ɵɵproperty("initialDeletionDate",e.send.deletionDate)("initialExpirationDate",e.send.expirationDate)("editMode",e.editMode)("disabled",e.disableSend),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(71,53,"maxAccessCount")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.maxAccessCount)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(77,55,"maxAccessCountDesc")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!e.hasPassword),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasPassword),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),o.ɵɵproperty("ngModel",e.password)("readOnly",e.disableSend),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(98,57,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(72,F,!e.showPassword,e.showPassword)),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(107,59,"sendPasswordDesc")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(115,61,"notes")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.notes)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(121,63,"sendNotesDesc")),o.ɵɵadvance(8),o.ɵɵproperty("ngModel",e.send.hideEmail)("disabled",e.disableHideEmail&&!e.send.hideEmail||e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(132,65,"hideEmail"),"\n "),o.ɵɵadvance(9),o.ɵɵproperty("ngModel",e.send.disabled)("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(144,67,"disableThisSend"))}}function V(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",68,69),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).delete()})),o.ɵɵpipe(2,"i18n"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",70),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",71),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(2,6,"delete")),o.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function N(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",66),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,V,9,10,"button",67),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode)}}const _=function(e){return{loading:e}};class j extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,r,a,s,l,o)}copyLinkToClipboard(e){const t=Object.create(null,{copyLinkToClipboard:{get:()=>super.copyLinkToClipboard}});return i(this,void 0,void 0,(function*(){return new Promise((n=>{window.setTimeout((()=>n(t.copyLinkToClipboard.call(this,e))),500)}))}))}}t.AddEditComponent=j,j.ɵfac=function(e){return new(e||j)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.EnvironmentService),o.ɵɵdirectiveInject(c.DatePipe),o.ɵɵdirectiveInject(d.SendService),o.ɵɵdirectiveInject(p.StateService),o.ɵɵdirectiveInject(u.MessagingService),o.ɵɵdirectiveInject(m.PolicyService),o.ɵɵdirectiveInject(h.LogService))},j.ɵcmp=o.ɵɵdefineComponent({type:j,selectors:[["app-send-add-edit"]],features:[o.ɵɵInheritDefinitionFeature],decls:44,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","sendAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","sendAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit","manual",3,"ngClass","disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],[4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","readOnly","ngModelChange"],[1,"form-text","text-muted"],["class","row",4,"ngIf"],[1,"mt-5"],["class","form-group",4,"ngIf"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","copy-link","name","CopyLink",1,"form-check-input",3,"ngModel","ngModelChange"],["for","copy-link",1,"form-check-label"],["id","options-header",1,"section-header","d-flex","flex-row","align-items-center","mt-5",3,"click"],[1,"mb-0","mr-2"],["href","#","appStopClick","","role","button",1,"mb-1"],["aria-hidden","true",1,"bwi",3,"ngClass"],["id","options",3,"hidden"],[3,"initialDeletionDate","initialExpirationDate","editMode","disabled","datesChanged"],["for","maxAccessCount"],["id","maxAccessCount","type","number","name","MaxAccessCount","min","1",1,"form-control",3,"ngModel","readOnly","ngModelChange"],[1,"form-text","text-muted","small"],["class","col-6 form-group",4,"ngIf"],["for","password",4,"ngIf"],[1,"input-group"],["id","password","name","Password",1,"form-control","text-monospace",3,"type","ngModel","readOnly","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","readOnly","ngModelChange"],["type","checkbox","id","hideEmail","name","HideEmail",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","hideEmail",1,"form-check-label"],["type","checkbox","id","disabled","name","Disabled",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","disabled",1,"form-check-label"],[1,"mb-0"],["class","form-check",4,"ngFor","ngForOf"],["type","radio",1,"form-check-input",3,"ngModel","name","id","value","checked","ngModelChange","change"],[1,"form-check-label",3,"for"],["for","text"],["id","text","name","Text.Text","rows","6",1,"form-control",3,"ngModel","readOnly","ngModelChange"],["type","checkbox","id","text-hidden","name","Text.Hidden",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","text-hidden",1,"form-check-label"],[1,"d-block"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file",3,"disabled"],["for","link"],["type","text","readonly","","id","link","name","Link",1,"form-control",3,"ngModel","ngModelChange"],["for","accessCount"],["id","accessCount","type","text","name","AccessCount","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["for","password"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",6),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",7),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,U,149,75,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",9),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"button",10),o.ɵɵtext(25,"\n "),o.ɵɵelement(26,"i",11),o.ɵɵpipe(27,"i18n"),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"span"),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",12),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,N,4,1,"div",13),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(t.title),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,10,"close")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",t.send),o.ɵɵadvance(4),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(18,_,e.loading))("disabled",e.loading||t.disableSend),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(27,12,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,14,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,16,"cancel"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.send)}},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.A11yTitleDirective,c.NgIf,c.NgClass,v.DefaultValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,v.CheckboxControlValueAccessor,y.StopClickDirective,x.EffluxDatesComponent,v.MinValidator,v.NumberValueAccessor,S.CalloutComponent,c.NgForOf,v.RadioControlValueAccessor],pipes:[b.I18nPipe],encapsulation:2})},70452:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EffluxDatesComponent=void 0;n(57490);const i=n(96832),r=n(95546),o=(n(51554),n(73828),n(32621)),a=n(51554),s=n(73828),l=n(57490),c=n(96832),d=n(1142),p=n(99729);function u(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",14),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",15),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("readOnly",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disableSend)}}function m(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.twentyFourHour),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.twelveHour,"\n ")}}function h(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",14),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"select",16),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,m,2,2,"option",17),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("readOnly",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.safariDeletionTimePresetOptions)}}function v(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",19),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disabled)}}function g(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementContainerStart(1,10),o.ɵɵtext(2,"\n "),o.ɵɵtemplate(3,u,9,2,"ng-container",11),o.ɵɵtext(4,"\n "),o.ɵɵtemplate(5,h,12,3,"ng-container",11),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,v,4,1,"ng-container",12),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd(),o.ɵɵtext(9,"\n ")),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵproperty("ngSwitch",e.browserPath),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","firefox"),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","safari")}}function f(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function y(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,y,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){o.ɵɵnextContext(2);const e=o.ɵɵreference(9);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function S(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"select",20),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,f,2,2,"option",17),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,x,4,1,"ng-container",4),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.deletionDatePresets),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",0===e.selectedDeletionDatePreset.value)}}function b(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(9);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",22),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().clearExpiration()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"clear"),"\n "))}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",24),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",25),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.twentyFourHour),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.twelveHour,"\n ")}}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",24),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"select",26),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,E,2,2,"option",17),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.safariExpirationTimePresetOptions)}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",27),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disabled)}}function k(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementContainerStart(1,10),o.ɵɵtext(2,"\n "),o.ɵɵtemplate(3,I,6,4,"div",23),o.ɵɵtext(4,"\n "),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,P,9,4,"div",23),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,O,4,1,"ng-container",12),o.ɵɵtext(9,"\n "),o.ɵɵelementContainerEnd(),o.ɵɵtext(10,"\n ")),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵproperty("ngSwitch",e.browserPath),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","firefox"),o.ɵɵadvance(3),o.ɵɵproperty("ngSwitchCase","safari")}}function A(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function T(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function M(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,T,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){o.ɵɵnextContext(2);const e=o.ɵɵreference(32);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function B(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"select",28),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,A,2,2,"option",17),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,M,4,1,"ng-container",4),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.expirationDatePresets),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",0===e.selectedExpirationDatePreset.value)}}function D(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function R(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,D,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(32);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}class F extends r.EffluxDatesComponent{constructor(e,t,n){super(e,t,n),this.i18nService=e,this.platformUtilsService=t,this.datePipe=n}}t.EffluxDatesComponent=F,F.ɵfac=function(e){return new(e||F)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.DatePipe))},F.ɵcmp=o.ɵɵdefineComponent({type:F,selectors:[["app-send-efflux-dates"]],features:[o.ɵɵProvidersFeature([],[{provide:i.ControlContainer,useExisting:i.NgForm}]),o.ɵɵInheritDefinitionFeature],decls:44,vars:18,consts:[[1,"row",3,"formGroup"],[1,"col-6","form-group"],["for","deletionDate"],["deletionDateCustom",""],[4,"ngIf"],[1,"form-text","text-muted","small"],[1,"d-flex"],["for","expirationDate"],["href","#","appStopClick","","class","ml-auto",3,"click",4,"ngIf"],["expirationDateCustom",""],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],[1,"d-flex","justify-content-around"],["id","deletionDateCustomFallback","type","date","name","DeletionDateFallback","formControlName","fallbackDeletionDate","required","","placeholder","MM/DD/YYYY","data-date-format","mm/dd/yyyy",1,"form-control","mt-1",3,"readOnly"],["id","deletionTimeCustomFallback","type","time","name","DeletionTimeDate","formControlName","fallbackDeletionTime","required","","placeholder","HH:MM AM/PM",1,"form-control","mt-1","ml-1",3,"readOnly"],["id","deletionTimeCustomFallback","formControlName","fallbackDeletionTime","name","SafariDeletionTime",1,"form-control","mt-1","ml-1",3,"required"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["id","deletionDateCustom","type","datetime-local","name","DeletionDate","formControlName","defaultDeletionDateTime","required","","placeholder","MM/DD/YYYY HH:MM AM/PM",1,"form-control","mt-1",3,"readOnly"],["id","deletionDate","name","SelectedDeletionDatePreset","formControlName","selectedDeletionDatePreset","required","",1,"form-control"],[4,"ngTemplateOutlet"],["href","#","appStopClick","",1,"ml-auto",3,"click"],["class","d-flex justify-content-around",4,"ngSwitchCase"],["id","expirationDateCustomFallback","type","date","name","ExpirationDateFallback","formControlName","fallbackExpirationDate","placeholder","MM/DD/YYYY","data-date-format","mm/dd/yyyy",1,"form-control","mt-1",3,"required","readOnly"],["id","expirationTimeCustomFallback","type","time","name","ExpirationTimeFallback","formControlName","fallbackExpirationTime","placeholder","HH:MM AM/PM",1,"form-control","mt-1","ml-1",3,"required","readOnly"],["id","expirationTimeCustomFallback","formControlName","fallbackExpirationTime","name","SafariExpirationTime",1,"form-control","mt-1","ml-1",3,"required"],["id","expirationDateCustom","type","datetime-local","name","ExpirationDate","formControlName","defaultExpirationDateTime","placeholder","MM/DD/YYYY HH:MM AM/PM",1,"form-control","mt-1",3,"readOnly"],["id","expirationDate","name","SelectedExpirationDatePreset","formControlName","selectedExpirationDatePreset","required","",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",2),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,g,10,3,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,S,9,2,"div",4),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,w,4,1,"div",4),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",5),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",1),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",6),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"label",7),o.ɵɵtext(25),o.ɵɵpipe(26,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,C,3,3,"a",8),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵtemplate(31,k,11,3,"ng-template",null,9,o.ɵɵtemplateRefExtractor),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,B,9,2,"div",4),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,R,4,1,"div",4),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",5),o.ɵɵtext(39),o.ɵɵpipe(40,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n")),2&e&&(o.ɵɵproperty("formGroup",t.datesForm),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,10,"deletionDate")),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",!t.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.editMode),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,12,"deletionDateDesc")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(26,14,"expirationDate")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.editMode&&!t.disabled),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",!t.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.editMode),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(40,16,"expirationDateDesc")))},directives:[c.NgControlStatusGroup,c.FormGroupDirective,l.NgIf,l.NgSwitch,l.NgSwitchCase,l.NgSwitchDefault,c.DefaultValueAccessor,c.NgControlStatus,c.FormControlName,c.RequiredValidator,c.SelectControlValueAccessor,l.NgForOf,c.NgSelectOption,c.ɵNgSelectMultipleOption,l.NgTemplateOutlet,d.StopClickDirective],pipes:[p.I18nPipe],encapsulation:2})},82813:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendComponent=void 0;const r=n(32621),o=n(23446),a=(n(64684),n(8470),n(56071),n(51554),n(36631),n(73828),n(62166),n(60421),n(76532),n(167)),s=n(32621),l=n(76532),c=n(51554),d=n(73828),p=n(56071),u=n(60421),m=n(62166),h=n(64684),v=n(8470),g=n(36631),f=n(57490),y=n(96832),x=n(45728),S=n(52767),b=n(1142),w=n(56820),C=n(51626),I=n(39159),E=n(6373),P=n(8863),O=n(44653),k=n(62985),A=n(99729),T=["sendAddEdit"];function M(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",28),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"span"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"sendDisabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(5,4,"sendDisabledWarning")))}function B(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function D(e,t){1&e&&s.ɵɵelement(0,"i",49)}function R(e,t){1&e&&s.ɵɵelement(0,"i",50)}function F(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",51),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"disabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"disabled")))}function U(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",52),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"password")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"password")))}function V(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",53),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"maxAccessCountReached")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"maxAccessCountReached")))}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",54),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"expired")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"expired")))}function _(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",55),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"pendingDeletion")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"pendingDeletion")))}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",44),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).removePassword(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",56),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"removePassword"),"\n "))}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",33),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",34),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,D,1,0,"i",35),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,R,1,0,"i",36),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"td",37),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"a",38),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).editSend(t)})),s.ɵɵtext(15),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,F,9,6,"ng-container",21),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,U,9,6,"ng-container",21),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,V,9,6,"ng-container",21),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,N,9,6,"ng-container",21),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,_,9,6,"ng-container",21),s.ɵɵtext(26,"\n "),s.ɵɵelement(27,"br"),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"small",39),s.ɵɵtext(30),s.ɵɵpipe(31,"date"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"td",40),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"button",41),s.ɵɵpipe(37,"i18n"),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"i",42),s.ɵɵtext(40,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"bit-menu",null,43),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"button",44),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).copy(t)})),s.ɵɵtext(46,"\n "),s.ɵɵelement(47,"i",45),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵtemplate(51,j,5,3,"button",46),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"button",44),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).delete(t)})),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"span",47),s.ɵɵtext(56,"\n "),s.ɵɵelement(57,"i",48),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(62,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵreference(43),i=s.ɵɵnextContext(2);s.ɵɵadvance(6),s.ɵɵproperty("ngIf",e.type==i.sendType.File),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.type==i.sendType.Text),s.ɵɵadvance(7),s.ɵɵtextInterpolate(e.name),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.disabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.password),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.maxAccessCountReached),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.expired),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.pendingDelete),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(31,14,e.deletionDate,"medium")),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(37,17,"options")),s.ɵɵproperty("bitMenuTriggerFor",n),s.ɵɵadvance(12),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(49,19,"copySendLink"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.password&&!i.disableSend),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(59,21,"delete"),"\n ")}}function H(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,z,64,23,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.filteredSends)}}function L(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function K(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"button",58),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).addSend()})),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",59),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"noSendsInList")),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.disableSend),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(10,5,"createSend"),"\n ")}}function q(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",57),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,L,9,6,"ng-container",21),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,K,12,7,"ng-container",21),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.loaded),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.loaded)}}function G(e,t){}const W=function(e){return{active:e}},$="SendComponent";class Y extends o.SendComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,c),this.modalService=s,this.broadcasterService=l}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield e.ngOnInit.call(this),yield this.load(),this.broadcasterService.subscribe($,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield this.load())}))))}))}))}ngOnDestroy(){this.broadcasterService.unsubscribe($)}addSend(){return i(this,void 0,void 0,(function*(){if(this.disableSend)return;(yield this.editSend(null)).type=this.type}))}editSend(e){return i(this,void 0,void 0,(function*(){const[t,n]=yield this.modalService.openViewRef(a.AddEditComponent,this.sendAddEditModalRef,(n=>{n.sendId=null==e?null:e.id,n.onSavedSend.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.load()})))),n.onDeletedSend.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.load()}))))}));return n}))}}t.SendComponent=Y,Y.ɵfac=function(e){return new(e||Y)(s.ɵɵdirectiveInject(l.SendService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.EnvironmentService),s.ɵɵdirectiveInject(s.NgZone),s.ɵɵdirectiveInject(u.SearchService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(h.ModalService),s.ɵɵdirectiveInject(v.BroadcasterService),s.ɵɵdirectiveInject(g.LogService))},Y.ɵcmp=s.ɵɵdefineComponent({type:Y,selectors:[["app-send"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(T,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.sendAddEditModalRef=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:112,vars:40,consts:[[1,"container","page-content"],["type","warning",3,"title",4,"ngIf"],[1,"row"],[1,"col-3","groupings"],[1,"card","vault-filters"],[1,"card-header","d-flex"],[1,"card-body"],["type","search","id","search","autocomplete","off","appAutofocus","",1,"form-control",3,"placeholder","ngModel","ngModelChange","input"],[1,"filter"],[1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["bit-button","","appStopClick","",1,"filter-button",3,"click"],[1,"bwi","bwi-fw","bwi-filter"],[1,"filter-heading"],[1,"bwi","bwi-fw","bwi-file-text"],[1,"bwi","bwi-fw","bwi-file"],[1,"col-9"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-outline-primary","btn-sm",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["class","table table-hover table-list",4,"ngIf"],["class","no-items",4,"ngIf"],["sendAddEdit",""],["type","warning",3,"title"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["aria-hidden","true",1,"icon"],["class","bwi bwi-fw bwi-lg bwi-file",4,"ngIf"],["class","bwi bwi-fw bwi-lg bwi-file-text",4,"ngIf"],[1,"reduced-lh","wrap"],["href","#","appStopClick","","appStopProp","",3,"click"],["appStopProp",""],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["sendOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],[1,"bwi","bwi-fw","bwi-lg","bwi-file"],[1,"bwi","bwi-fw","bwi-lg","bwi-file-text"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-key",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-ban",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-clock",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-trash",3,"title"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"no-items"],[1,"btn","btn-outline-primary",3,"disabled","click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,M,7,6,"app-callout",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",4),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",5),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",6),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e}))("input",(function(){return t.searchTextChanged()})),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",8),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"ul",9),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"li",10),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"span",11),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"button",12),s.ɵɵlistener("click",(function(){return t.selectAll()})),s.ɵɵtext(28,"\n "),s.ɵɵelement(29,"i",13),s.ɵɵtext(30),s.ɵɵpipe(31,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",8),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"div",14),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"h3"),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"ul",9),s.ɵɵtext(47,"\n "),s.ɵɵelementStart(48,"li",10),s.ɵɵtext(49,"\n "),s.ɵɵelementStart(50,"span",11),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"button",12),s.ɵɵlistener("click",(function(){return t.selectType(t.sendType.Text)})),s.ɵɵtext(53,"\n "),s.ɵɵelement(54,"i",15),s.ɵɵtext(55),s.ɵɵpipe(56,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"li",10),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"span",11),s.ɵɵtext(63,"\n "),s.ɵɵelementStart(64,"button",12),s.ɵɵlistener("click",(function(){return t.selectType(t.sendType.File)})),s.ɵɵtext(65,"\n "),s.ɵɵelement(66,"i",16),s.ɵɵtext(67),s.ɵɵpipe(68,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(70,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(71,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(74,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"div",17),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"div",18),s.ɵɵtext(80,"\n "),s.ɵɵelementStart(81,"h1"),s.ɵɵtext(82),s.ɵɵpipe(83,"i18n"),s.ɵɵelementStart(84,"small",19,20),s.ɵɵtext(86,"\n "),s.ɵɵtemplate(87,B,9,6,"ng-container",21),s.ɵɵtext(88,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(90,"\n "),s.ɵɵelementStart(91,"div",22),s.ɵɵtext(92,"\n "),s.ɵɵelementStart(93,"button",23),s.ɵɵlistener("click",(function(){return t.addSend()})),s.ɵɵtext(94,"\n "),s.ɵɵelement(95,"i",24),s.ɵɵtext(96),s.ɵɵpipe(97,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(98,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(99,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵtext(101,"\n "),s.ɵɵtemplate(102,H,7,1,"table",25),s.ɵɵtext(103,"\n "),s.ɵɵtemplate(104,q,6,2,"div",26),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(108,"\n"),s.ɵɵtemplate(109,G,0,0,"ng-template",null,27,s.ɵɵtemplateRefExtractor),s.ɵɵtext(111,"\n")),2&e){const e=s.ɵɵreference(85);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.disableSend),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(12,18,"filters"),"\n "),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("placeholder",t.searchPlaceholder||s.ɵɵpipeBind1(17,20,"searchSends")),s.ɵɵproperty("ngModel",t.searchText),s.ɵɵadvance(7),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(34,W,t.selectedAll)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(31,22,"allSends"),"\n "),s.ɵɵadvance(12),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,24,"types")),s.ɵɵadvance(6),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(36,W,t.selectedType===t.sendType.Text)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(56,26,"sendTypeText"),"\n "),s.ɵɵadvance(5),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(38,W,t.selectedType===t.sendType.File)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(68,28,"sendTypeFile"),"\n "),s.ɵɵadvance(15),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(83,30,"send"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("appApiAction",t.actionPromise),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.loading),s.ɵɵadvance(6),s.ɵɵproperty("disabled",t.disableSend),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(97,32,"createSend"),"\n "),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.filteredSends&&t.filteredSends.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.filteredSends&&!t.filteredSends.length)}},directives:[f.NgIf,y.DefaultValueAccessor,x.AutofocusDirective,y.NgControlStatus,y.NgModel,f.NgClass,S.ButtonComponent,b.StopClickDirective,w.ApiActionDirective,C.CalloutComponent,f.NgForOf,I.StopPropDirective,E.MenuTriggerForDirective,P.A11yTitleDirective,O.MenuComponent,k.MenuItemComponent],pipes:[A.I18nPipe,f.DatePipe],encapsulation:2})},3202:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventOptions=t.EventInfo=t.EventService=void 0;n(51554),n(62166);const r=n(2779),o=n(80253),a=n(49906),s=n(32621),l=n(51554),c=n(62166);class d{constructor(e,t){this.i18nService=e,this.policyService=t}getDefaultDateFilters(){const e=new Date,t=new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59);e.setDate(e.getDate()-30);const n=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0);return[this.toDateTimeLocalString(n),this.toDateTimeLocalString(t)]}formatDateFilters(e,t){const n=new Date(e),i=new Date(t+":59.999");if(isNaN(n.getTime())||isNaN(i.getTime())||it.id===e.policyId))[0];let r=this.getShortId(e.policyId);null!=t&&(r=a.PolicyType[t.type]),i=this.i18nService.t("modifiedPolicyId",r);break}case o.EventType.ProviderUser_Invited:n=this.i18nService.t("invitedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("invitedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Confirmed:n=this.i18nService.t("confirmedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("confirmedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Updated:n=this.i18nService.t("editedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("editedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Removed:n=this.i18nService.t("removedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("removedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderOrganization_Created:n=this.i18nService.t("createdOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("createdOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_Added:n=this.i18nService.t("addedOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("addedOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_Removed:n=this.i18nService.t("removedOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("removedOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_VaultAccessed:n=this.i18nService.t("accessedClientVault",this.formatProviderOrganizationId(e)),i=this.i18nService.t("accessedClientVault",this.getShortId(e.providerOrganizationId))}return{message:""===n?null:n,humanReadableMessage:""===i?null:i}}))}getAppInfo(e){switch(e){case r.DeviceType.Android:return["bwi-android",this.i18nService.t("mobile")+" - Android"];case r.DeviceType.iOS:return["bwi-apple",this.i18nService.t("mobile")+" - iOS"];case r.DeviceType.UWP:return["bwi-windows",this.i18nService.t("mobile")+" - Windows"];case r.DeviceType.ChromeExtension:return["bwi-chrome",this.i18nService.t("extension")+" - Chrome"];case r.DeviceType.FirefoxExtension:return["bwi-firefox",this.i18nService.t("extension")+" - Firefox"];case r.DeviceType.OperaExtension:return["bwi-opera",this.i18nService.t("extension")+" - Opera"];case r.DeviceType.EdgeExtension:return["bwi-edge",this.i18nService.t("extension")+" - Edge"];case r.DeviceType.VivaldiExtension:return["bwi-puzzle",this.i18nService.t("extension")+" - Vivaldi"];case r.DeviceType.SafariExtension:return["bwi-safari",this.i18nService.t("extension")+" - Safari"];case r.DeviceType.WindowsDesktop:return["bwi-windows",this.i18nService.t("desktop")+" - Windows"];case r.DeviceType.MacOsDesktop:return["bwi-apple",this.i18nService.t("desktop")+" - macOS"];case r.DeviceType.LinuxDesktop:return["bwi-linux",this.i18nService.t("desktop")+" - Linux"];case r.DeviceType.ChromeBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Chrome"];case r.DeviceType.FirefoxBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Firefox"];case r.DeviceType.OperaBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Opera"];case r.DeviceType.SafariBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Safari"];case r.DeviceType.VivaldiBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Vivaldi"];case r.DeviceType.EdgeBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Edge"];case r.DeviceType.IEBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - IE"];case r.DeviceType.UnknownBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - "+this.i18nService.t("unknown")];default:return["bwi-globe",this.i18nService.t("unknown")]}}formatCipherId(e,t){const n=this.getShortId(e.cipherId);if(null==e.organizationId||!t.cipherInfo)return""+n+"";const i=this.makeAnchor(n);return i.setAttribute("href","#/organizations/"+e.organizationId+"/vault?search="+n+"&viewEvents="+e.cipherId),i.outerHTML}formatGroupId(e){const t=this.getShortId(e.groupId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/groups?search="+t),n.outerHTML}formatCollectionId(e){const t=this.getShortId(e.collectionId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/collections?search="+t),n.outerHTML}formatOrgUserId(e){const t=this.getShortId(e.organizationUserId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/people?search="+t+"&viewEvents="+e.organizationUserId),n.outerHTML}formatProviderUserId(e){const t=this.getShortId(e.providerUserId),n=this.makeAnchor(t);return n.setAttribute("href","#/providers/"+e.providerId+"/manage/people?search="+t+"&viewEvents="+e.providerUserId),n.outerHTML}formatProviderOrganizationId(e){const t=this.getShortId(e.providerOrganizationId),n=this.makeAnchor(t);return n.setAttribute("href","#/providers/"+e.providerId+"/clients?search="+t),n.outerHTML}formatPolicyId(e){const t=this.getShortId(e.policyId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/policies?policyId="+e.policyId),n.outerHTML}makeAnchor(e){const t=document.createElement("a");return t.title=this.i18nService.t("view"),t.innerHTML=""+e+"",t}getShortId(e){return null==e?void 0:e.substring(0,8)}toDateTimeLocalString(e){return e.getFullYear()+"-"+this.pad(e.getMonth()+1)+"-"+this.pad(e.getDate())+"T"+this.pad(e.getHours())+":"+this.pad(e.getMinutes())}pad(e){const t=Math.floor(Math.abs(e));return(t<10?"0":"")+t}}t.EventService=d,d.ɵfac=function(e){return new(e||d)(s.ɵɵinject(l.I18nService),s.ɵɵinject(c.PolicyService))},d.ɵprov=s.ɵɵdefineInjectable({token:d,factory:d.ɵfac});t.EventInfo=class{};class p{constructor(){this.cipherInfo=!0}}t.EventOptions=p},8674:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InitService=void 0;const r=n(41058),o=(n(85714),n(56071),n(32034),n(51554),n(38249),n(73828),n(73569),n(27458),n(82656),n(14538)),a=n(74901),s=n(32621),l=n(56071),c=n(38249),d=n(82656),p=n(51554),u=n(32034),m=n(27458),h=n(73569),v=n(73828),g=n(85714);class f{constructor(e,t,n,i,r,o,a,s,l,c){this.win=e,this.environmentService=t,this.notificationsService=n,this.vaultTimeoutService=i,this.i18nService=r,this.eventLoggingService=o,this.twoFactorService=a,this.stateService=s,this.platformUtilsService=l,this.cryptoService=c}init(){return()=>i(this,void 0,void 0,(function*(){var e;yield this.stateService.init();const t={icons:"https://icons.bitwarden.net",notifications:"https://notifications.bitwarden.com"};null!==(e=t.base)&&void 0!==e||(t.base=this.win.location.origin),this.environmentService.setUrls(t),setTimeout((()=>this.notificationsService.init()),3e3),this.vaultTimeoutService.init(!0);const n=yield this.stateService.getLocale();yield this.i18nService.init(n),this.eventLoggingService.init(!0),this.twoFactorService.init();const r=this.win.document.documentElement;r.classList.add("locale_"+this.i18nService.translationLocale),this.platformUtilsService.onDefaultSystemThemeChange((e=>i(this,void 0,void 0,(function*(){(yield this.stateService.getTheme())===o.ThemeType.System&&(r.classList.remove("theme_"+o.ThemeType.Light,"theme_"+o.ThemeType.Dark),r.classList.add("theme_"+e))}))));new a.ContainerService(this.cryptoService).attachToWindow(this.win)}))}}t.InitService=f,f.ɵfac=function(e){return new(e||f)(s.ɵɵinject(r.WINDOW),s.ɵɵinject(l.EnvironmentService),s.ɵɵinject(c.NotificationsService),s.ɵɵinject(d.VaultTimeoutService),s.ɵɵinject(p.I18nService),s.ɵɵinject(u.EventService),s.ɵɵinject(m.TwoFactorService),s.ɵɵinject(h.StateService),s.ɵɵinject(v.PlatformUtilsService),s.ɵɵinject(g.CryptoService))},f.ɵprov=s.ɵɵdefineInjectable({token:f,factory:f.ɵfac})},93817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalService=void 0;n(32621);const i=n(19755),r=n(14857),o=n(64684),a=(n(45552),n(82769)),s=n(32621),l=n(45552);class c extends o.ModalService{constructor(e,t,n,i){super(e,t,n),this.messagingService=i,this.el=null,this.modalOpen=!1}setupHandlers(e){e.onCreated.pipe(r.first()).subscribe((()=>{const t=Array.from(document.querySelectorAll(".modal"));t.length>0&&(this.el=i(t[0]),this.el.modal("show"),this.el.on("show.bs.modal",(()=>{e.show(),this.messagingService.send("modalShow")})),this.el.on("shown.bs.modal",(()=>{e.shown(),this.messagingService.send("modalShown"),a.Utils.isMobileBrowser||this.el.find("*[appAutoFocus]").focus()})),this.el.on("hide.bs.modal",(()=>{this.messagingService.send("modalClose")})),this.el.on("hidden.bs.modal",(()=>{e.closed(),this.messagingService.send("modalClosed")})))})),e.onClose.pipe(r.first()).subscribe((()=>{null!=this.el&&this.el.modal("hide")}))}}t.ModalService=c,c.ɵfac=function(e){return new(e||c)(s.ɵɵinject(s.ComponentFactoryResolver),s.ɵɵinject(s.ApplicationRef),s.ɵɵinject(s.Injector),s.ɵɵinject(l.MessagingService))},c.ɵprov=s.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},55453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyListService=void 0;t.PolicyListService=class{constructor(){this.policies=[]}addPolicies(e){this.policies.push(...e)}getPolicies(){return this.policies}}},77459:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RouterService=void 0;n(61248);const i=n(68012),r=n(72872),o=(n(51554),n(32621)),a=n(68012),s=n(61248),l=n(51554);class c{constructor(e,t,n,o){this.router=e,this.activatedRoute=t,this.titleService=n,this.previousUrl=void 0,this.currentUrl=void 0,this.currentUrl=this.router.url,e.events.pipe(r.filter((e=>e instanceof i.NavigationEnd))).subscribe((e=>{var t,n,i,r,a,s,l;this.currentUrl=e.url;let c=o.t("pageTitle","Bitwarden"),d=this.activatedRoute.firstChild;for(;d.firstChild;)d=d.firstChild;const p=null===(n=null===(t=null==d?void 0:d.snapshot)||void 0===t?void 0:t.data)||void 0===n?void 0:n.titleId,u=null===(r=null===(i=null==d?void 0:d.snapshot)||void 0===i?void 0:i.data)||void 0===r?void 0:r.title,m=null===(l=!(null===(s=null===(a=null==d?void 0:d.snapshot)||void 0===a?void 0:a.data)||void 0===s?void 0:s.doNotSaveUrl))||void 0===l||l;if(null!=p||null!=u){const e=null!=u?u:o.t(p);null!=e&&""!==e&&(c=e+" | "+c)}this.titleService.setTitle(c),m&&this.setPreviousUrl(this.currentUrl)}))}getPreviousUrl(){return this.previousUrl}setPreviousUrl(e){this.previousUrl=e}}t.RouterService=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵinject(a.Router),o.ɵɵinject(a.ActivatedRoute),o.ɵɵinject(s.Title),o.ɵɵinject(l.I18nService))},c.ɵprov=o.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},52976:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ServicesModule=void 0;const i=n(32621),r=n(68290),o=n(41058),a=n(64684),s=n(91674),l=n(45330),c=n(3174),d=n(85714),p=n(88308),u=n(51554),m=n(11223),h=n(36631),v=n(45552),g=n(44809),f=n(73828),y=n(73569),x=n(6924),S=n(39566),b=n(35266),w=n(12514),C=n(15156),I=n(74657),E=n(82062),P=n(79046),O=n(57096),k=n(28455),A=n(97853),T=n(14020),M=n(91621),B=n(31113),D=n(51601),R=n(61841),F=n(70734),U=n(13637),V=n(3202),N=n(8674),_=n(93817),j=n(55453),z=n(77459),H=n(32621);class L{}t.ServicesModule=L,L.ɵfac=function(e){return new(e||L)},L.ɵmod=H.ɵɵdefineNgModule({type:L}),L.ɵinj=H.ɵɵdefineInjector({providers:[U.NavigationPermissionsService,F.PermissionsGuard,N.InitService,z.RouterService,V.EventService,j.PolicyListService,{provide:i.APP_INITIALIZER,useFactory:e=>e.init(),deps:[N.InitService],multi:!0},{provide:o.STATE_FACTORY,useValue:new b.StateFactory(E.GlobalState,I.Account)},{provide:o.STATE_SERVICE_USE_CACHE,useValue:!1},{provide:u.I18nService,useClass:k.I18nService,deps:[o.SYSTEM_LANGUAGE,o.LOCALES_DIRECTORY]},{provide:S.StorageService,useClass:O.HtmlStorageService},{provide:o.SECURE_STORAGE,useClass:A.MemoryStorageService},{provide:f.PlatformUtilsService,useClass:D.WebPlatformUtilsService},{provide:v.MessagingService,useClass:P.BroadcasterMessagingService},{provide:a.ModalService,useClass:_.ModalService},{provide:m.ImportService,useClass:w.ImportService,deps:[l.CipherService,p.FolderService,s.ApiService,u.I18nService,c.CollectionService,f.PlatformUtilsService,d.CryptoService]},{provide:x.StateMigrationService,useClass:B.StateMigrationService,deps:[S.StorageService,o.SECURE_STORAGE,o.STATE_FACTORY]},{provide:C.StateService,useClass:M.StateService,deps:[S.StorageService,o.SECURE_STORAGE,h.LogService,x.StateMigrationService,o.STATE_FACTORY,o.STATE_SERVICE_USE_CACHE]},{provide:y.StateService,useExisting:C.StateService},{provide:g.PasswordRepromptService,useClass:T.PasswordRepromptService},R.HomeGuard],imports:[[r.ToastrModule,o.JslibServicesModule]]})},58728:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(72277),n(73569),n(26083)),a=n(6430),s=n(56796),l=n(32621),c=n(64684),d=n(91674),p=n(72277),u=n(73569),m=n(93276),h=n(57490),v=n(52767),g=n(74939),f=n(99729),y=["deauthorizeSessionsTemplate"],x=["purgeVaultTemplate"],S=["deleteAccountTemplate"];function b(e,t){1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",11),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"h1"),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelement(9,"app-change-email"),l.ɵɵtext(10,"\n"),l.ɵɵelementContainerEnd()),2&e&&(l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(6,1,"changeEmail")))}function w(e,t){}function C(e,t){}function I(e,t){}function E(e,t){}function P(e,t){}class O{constructor(e,t,n,i){this.modalService=e,this.apiService=t,this.keyConnectorService=n,this.stateService=i,this.showChangeEmail=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangeEmail=!(yield this.keyConnectorService.getUsesKeyConnector())}))}deauthorizeSessions(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(o.DeauthorizeSessionsComponent,this.deauthModalRef)}))}purgeVault(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.PurgeVaultComponent,this.purgeModalRef)}))}deleteAccount(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(a.DeleteAccountComponent,this.deleteModalRef)}))}}t.AccountComponent=O,O.ɵfac=function(e){return new(e||O)(l.ɵɵdirectiveInject(c.ModalService),l.ɵɵdirectiveInject(d.ApiService),l.ɵɵdirectiveInject(p.KeyConnectorService),l.ɵɵdirectiveInject(u.StateService))},O.ɵcmp=l.ɵɵdefineComponent({type:O,selectors:[["app-account"]],viewQuery:function(e,t){if(1&e&&(l.ɵɵviewQuery(y,7,r.ViewContainerRef),l.ɵɵviewQuery(x,7,r.ViewContainerRef),l.ɵɵviewQuery(S,7,r.ViewContainerRef)),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.deauthModalRef=e.first),l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.purgeModalRef=e.first),l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.deleteModalRef=e.first)}},decls:55,vars:19,consts:[[1,"page-header"],[4,"ngIf"],[1,"secondary-header","text-danger","border-0","mb-0"],[1,"card","border-danger"],[1,"card-body"],["bit-button","","buttonType","danger",3,"click"],["deauthorizeSessionsTemplate",""],["purgeVaultTemplate",""],["deleteAccountTemplate",""],["viewUserApiKeyTemplate",""],["rotateUserApiKeyTemplate",""],[1,"secondary-header"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"h1"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n"),l.ɵɵelement(7,"app-profile"),l.ɵɵtext(8,"\n"),l.ɵɵtemplate(9,b,11,3,"ng-container",1),l.ɵɵtext(10,"\n"),l.ɵɵelementStart(11,"div",2),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"h1"),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n"),l.ɵɵelementStart(18,"div",3),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",4),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"p"),l.ɵɵtext(23),l.ɵɵpipe(24,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementStart(26,"button",5),l.ɵɵlistener("click",(function(){return t.deauthorizeSessions()})),l.ɵɵtext(27),l.ɵɵpipe(28,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(29,"\n "),l.ɵɵelementStart(30,"button",5),l.ɵɵlistener("click",(function(){return t.purgeVault()})),l.ɵɵtext(31),l.ɵɵpipe(32,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(33,"\n "),l.ɵɵelementStart(34,"button",5),l.ɵɵlistener("click",(function(){return t.deleteAccount()})),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n"),l.ɵɵtemplate(40,w,0,0,"ng-template",null,6,l.ɵɵtemplateRefExtractor),l.ɵɵtext(42,"\n"),l.ɵɵtemplate(43,C,0,0,"ng-template",null,7,l.ɵɵtemplateRefExtractor),l.ɵɵtext(45,"\n"),l.ɵɵtemplate(46,I,0,0,"ng-template",null,8,l.ɵɵtemplateRefExtractor),l.ɵɵtext(48,"\n"),l.ɵɵtemplate(49,E,0,0,"ng-template",null,9,l.ɵɵtemplateRefExtractor),l.ɵɵtext(51,"\n"),l.ɵɵtemplate(52,P,0,0,"ng-template",null,10,l.ɵɵtemplateRefExtractor),l.ɵɵtext(54,"\n")),2&e&&(l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(4,7,"myAccount")),l.ɵɵadvance(6),l.ɵɵproperty("ngIf",t.showChangeEmail),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(15,9,"dangerZone")),l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(24,11,"dangerZoneDesc")),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(28,13,"deauthorizeSessions"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(32,15,"purgeVault"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(36,17,"deleteAccount"),"\n "))},directives:[m.ProfileComponent,h.NgIf,v.ButtonComponent,g.ChangeEmailComponent],pipes:[f.I18nPipe],encapsulation:2})},449:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddCreditComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(63513),n(73828),n(73569),n(98523)),a=n(34191),s=n(32621),l=n(73569),c=n(91674),d=n(73828),p=n(63513),u=n(36631),m=n(96832),h=n(56820),v=n(8863),g=n(57490),f=n(99729),y=["ppButtonForm"];function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",36),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",37),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",38),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",39),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",40),s.ɵɵtext(9," PayPal"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",37),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",41),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"label",42),s.ɵɵtext(17,"\n "),s.ɵɵelement(18,"i",43),s.ɵɵtext(19," Bitcoin"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("value",e.paymentMethodType.PayPal)("ngModel",e.method),s.ɵɵadvance(10),s.ɵɵproperty("value",e.paymentMethodType.BitPay)("ngModel",e.method)}}class S{constructor(e,t,n,i,a){this.stateService=e,this.apiService=t,this.platformUtilsService=n,this.organizationService=i,this.logService=a,this.showOptions=!0,this.method=o.PaymentMethodType.PayPal,this.onAdded=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.paymentMethodType=o.PaymentMethodType,this.ppLoading=!1;const s="4ZDA7DLUUJGMN",l="https://www.paypal.com/cgi-bin/webscr";this.ppButtonFormAction=l,this.ppButtonBusinessId=s}ngOnInit(){return i(this,void 0,void 0,(function*(){if(null!=this.organizationId){null==this.creditAmount&&(this.creditAmount="20.00"),this.ppButtonCustomField="organization_id:"+this.organizationId;const e=yield this.organizationService.get(this.organizationId);null!=e&&(this.subject=e.name,this.name=e.name)}else null==this.creditAmount&&(this.creditAmount="10.00"),this.userId=yield this.stateService.getUserId(),this.subject=yield this.stateService.getEmail(),this.email=this.subject,this.ppButtonCustomField="user_id:"+this.userId;this.ppButtonCustomField+=",account_credit:1",this.returnUrl=window.location.href}))}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.creditAmount&&""!==this.creditAmount){if(this.method===o.PaymentMethodType.PayPal)return this.ppButtonFormRef.nativeElement.submit(),void(this.ppLoading=!0);if(this.method!==o.PaymentMethodType.BitPay)try{this.onAdded.emit()}catch(e){this.logService.error(e)}else try{const e=new a.BitPayInvoiceRequest;e.email=this.email,e.name=this.name,e.credit=!0,e.amount=this.creditAmountNumber,e.organizationId=this.organizationId,e.userId=this.userId,e.returnUrl=this.returnUrl,this.formPromise=this.apiService.postBitPayInvoice(e);const t=yield this.formPromise;this.platformUtilsService.launchUri(t)}catch(e){this.logService.error(e)}}}))}cancel(){this.onCanceled.emit()}formatAmount(){try{if(null!=this.creditAmount&&""!==this.creditAmount){const e=Math.abs(parseFloat(this.creditAmount));if(e>0)return void(this.creditAmount=parseFloat((Math.round(100*e)/100).toString()).toFixed(2).toString())}}catch(e){this.logService.error(e)}this.creditAmount=""}get creditAmountNumber(){if(null!=this.creditAmount&&""!==this.creditAmount)try{return parseFloat(this.creditAmount)}catch(e){this.logService.error(e)}return null}}t.AddCreditComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.StateService),s.ɵɵdirectiveInject(c.ApiService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.OrganizationService),s.ɵɵdirectiveInject(u.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-add-credit"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(y,7,r.ElementRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.ppButtonFormRef=e.first)}},inputs:{creditAmount:"creditAmount",showOptions:"showOptions",method:"method",organizationId:"organizationId"},outputs:{onAdded:"onAdded",onCanceled:"onCanceled"},decls:94,vars:32,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],["class","mb-4 text-lg",4,"ngIf"],[1,"form-group"],[1,"row"],[1,"col-4"],["for","creditAmount"],[1,"input-group"],[1,"input-group-prepend"],[1,"input-group-text"],["id","creditAmount","type","text","name","CreditAmount","required","",1,"form-control",3,"ngModel","ngModelChange","blur"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["method","post","target","_top",3,"action"],["ppButtonForm",""],["type","hidden","name","cmd","value","_xclick"],["type","hidden","name","business",3,"value"],["type","hidden","name","button_subtype","value","services"],["type","hidden","name","no_note","value","1"],["type","hidden","name","no_shipping","value","1"],["type","hidden","name","rm","value","1"],["type","hidden","name","return",3,"value"],["type","hidden","name","cancel_return",3,"value"],["type","hidden","name","currency_code","value","USD"],["type","hidden","name","image_url","value","https://bitwarden.com/images/paypal-banner.png"],["type","hidden","name","bn","value","PP-BuyNowBF:btn_buynow_LG.gif:NonHosted"],["type","hidden","name","amount",3,"value"],["type","hidden","name","custom",3,"value"],["type","hidden","name","item_name","value","Bitwarden Account Credit"],["type","hidden","name","item_number",3,"value"],[1,"mb-4","text-lg"],[1,"form-check","form-check-inline"],["type","radio","name","Method","id","credit-method-paypal",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","credit-method-paypal",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paypal"],["type","radio","name","Method","id","credit-method-bitcoin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","credit-method-bitcoin",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-bitcoin"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",3),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"span",4),s.ɵɵtext(9,"×"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"h3",5),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,x,22,4,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",7),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"div",8),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",9),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label",10),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",11),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",12),s.ɵɵelementStart(31,"span",13),s.ɵɵtext(32,"$USD"),s.ɵɵelementEnd(),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",14),s.ɵɵlistener("ngModelChange",(function(e){return t.creditAmount=e}))("blur",(function(){return t.formatAmount()})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"small",15),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"button",16),s.ɵɵtext(45,"\n "),s.ɵɵelement(46,"i",17),s.ɵɵpipe(47,"i18n"),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"span"),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementStart(54,"button",18),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵtext(55),s.ɵɵpipe(56,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n"),s.ɵɵelementStart(60,"form",19,20),s.ɵɵtext(62,"\n "),s.ɵɵelement(63,"input",21),s.ɵɵtext(64,"\n "),s.ɵɵelement(65,"input",22),s.ɵɵtext(66,"\n "),s.ɵɵelement(67,"input",23),s.ɵɵtext(68,"\n "),s.ɵɵelement(69,"input",24),s.ɵɵtext(70,"\n "),s.ɵɵelement(71,"input",25),s.ɵɵtext(72,"\n "),s.ɵɵelement(73,"input",26),s.ɵɵtext(74,"\n "),s.ɵɵelement(75,"input",27),s.ɵɵtext(76,"\n "),s.ɵɵelement(77,"input",28),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"input",29),s.ɵɵtext(80,"\n "),s.ɵɵelement(81,"input",30),s.ɵɵtext(82,"\n "),s.ɵɵelement(83,"input",31),s.ɵɵtext(84,"\n "),s.ɵɵelement(85,"input",32),s.ɵɵtext(86,"\n "),s.ɵɵelement(87,"input",33),s.ɵɵtext(88,"\n "),s.ɵɵelement(89,"input",34),s.ɵɵtext(90,"\n "),s.ɵɵelement(91,"input",35),s.ɵɵtext(92,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,18,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,20,"addCredit")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showOptions),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,22,"amount")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",t.creditAmount),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,24,"creditDelayed")),s.ɵɵadvance(4),s.ɵɵproperty("disabled",e.loading||t.ppLoading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(47,26,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(51,28,"submit")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(56,30,"cancel"),"\n "),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("action",t.ppButtonFormAction,s.ɵɵsanitizeUrl),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("value",t.ppButtonBusinessId),s.ɵɵadvance(10),s.ɵɵpropertyInterpolate("value",t.returnUrl),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("value",t.returnUrl),s.ɵɵadvance(8),s.ɵɵpropertyInterpolate("value",t.creditAmount),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("value",t.ppButtonCustomField),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("value",t.subject)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.A11yTitleDirective,g.NgIf,m.DefaultValueAccessor,m.RequiredValidator,m.NgControlStatus,m.NgModel,m.ɵNgNoValidate,m.RadioControlValueAccessor],pipes:[f.I18nPipe],encapsulation:2})},55732:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustPaymentComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(98523)),a=n(84707),s=n(17337),l=n(41799),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),g=n(8863),f=n(17337),y=n(41799),x=n(99729);class S{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onAdjusted=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.paymentMethodType=o.PaymentMethodType}submit(){return i(this,void 0,void 0,(function*(){try{const e=new a.PaymentRequest;this.formPromise=this.paymentComponent.createPaymentToken().then((t=>(e.paymentToken=t[0],e.paymentMethodType=t[1],e.postalCode=this.taxInfoComponent.taxInfo.postalCode,e.country=this.taxInfoComponent.taxInfo.country,null==this.organizationId?this.apiService.postAccountPayment(e):(e.taxId=this.taxInfoComponent.taxInfo.taxId,e.state=this.taxInfoComponent.taxInfo.state,e.line1=this.taxInfoComponent.taxInfo.line1,e.line2=this.taxInfoComponent.taxInfo.line2,e.city=this.taxInfoComponent.taxInfo.city,e.state=this.taxInfoComponent.taxInfo.state,this.apiService.postOrganizationPayment(this.organizationId,e))))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedPaymentMethod")),this.onAdjusted.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}changeCountry(){"US"===this.taxInfoComponent.taxInfo.country?this.paymentComponent.hideBank=!this.organizationId:(this.paymentComponent.hideBank=!0,this.paymentComponent.method===o.PaymentMethodType.BankAccount&&(this.paymentComponent.method=o.PaymentMethodType.Card,this.paymentComponent.changeMethod()))}}t.AdjustPaymentComponent=S,S.ɵfac=function(e){return new(e||S)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},S.ɵcmp=c.ɵɵdefineComponent({type:S,selectors:[["app-adjust-payment"]],viewQuery:function(e,t){if(1&e&&(c.ɵɵviewQuery(s.PaymentComponent,7),c.ɵɵviewQuery(l.TaxInfoComponent,7)),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.paymentComponent=e.first),c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.taxInfoComponent=e.first)}},inputs:{currentType:"currentType",organizationId:"organizationId"},outputs:{onAdjusted:"onAdjusted",onCanceled:"onCanceled"},decls:36,vars:19,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"hideBank","hideCredit"],[3,"onCountryChanged"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"form",0,1),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(2,"\n "),c.ɵɵelementStart(3,"div",2),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"button",3),c.ɵɵlistener("click",(function(){return t.cancel()})),c.ɵɵpipe(6,"i18n"),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"span",4),c.ɵɵtext(9,"×"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"h3",5),c.ɵɵtext(13),c.ɵɵpipe(14,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelement(16,"app-payment",6),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"app-tax-info",7),c.ɵɵlistener("onCountryChanged",(function(){return t.changeCountry()})),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"button",8),c.ɵɵtext(21,"\n "),c.ɵɵelement(22,"i",9),c.ɵɵpipe(23,"i18n"),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"span"),c.ɵɵtext(26),c.ɵɵpipe(27,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"button",10),c.ɵɵlistener("click",(function(){return t.cancel()})),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n")),2&e){const e=c.ɵɵreference(1);c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(6,9,"cancel")),c.ɵɵadvance(8),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(14,11,null!=t.currentType?"changePaymentMethod":"addPaymentMethod"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("hideBank",!t.organizationId)("hideCredit",!0),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(23,13,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(27,15,"submit")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(32,17,"cancel"),"\n ")}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,g.A11yTitleDirective,f.PaymentComponent,y.TaxInfoComponent],pipes:[x.I18nPipe],encapsulation:2})},34959:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustStorageComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(51554),n(36631),n(73828),n(78703)),a=n(17337),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(68012),u=n(36631),m=n(96832),h=n(56820),v=n(8863),g=n(57490),f=n(17337),y=n(99729);function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"strong"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5),s.ɵɵpipe(6,"currency"),s.ɵɵpipe(7,"currency"),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,5,"total"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate4(" ",e.storageAdjustment||0," GB ×\n ",s.ɵɵpipeBind2(6,7,e.storageGbPrice,"$")," = ",s.ɵɵpipeBind2(7,10,e.adjustedStorageTotal,"$")," /",s.ɵɵpipeBind1(8,13,e.interval),"\n ")}}class S{constructor(e,t,n,i,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.activatedRoute=o,this.logService=a,this.storageGbPrice=0,this.add=!0,this.interval="year",this.onAdjusted=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.storageAdjustment=0}submit(){return i(this,void 0,void 0,(function*(){try{const e=new o.StorageRequest;e.storageGbAdjustment=this.storageAdjustment,this.add||(e.storageGbAdjustment*=-1);let t=!1;const n=()=>i(this,void 0,void 0,(function*(){let n;n=null==this.organizationId?this.formPromise=this.apiService.postAccountStorage(e):this.formPromise=this.apiService.postOrganizationStorage(this.organizationId,e);const i=yield n;if(null!=i&&null!=i.paymentIntentClientSecret)try{yield this.paymentComponent.handleStripeCardPayment(i.paymentIntentClientSecret,null)}catch(r){t=!0}}));this.formPromise=n(),yield this.formPromise,this.onAdjusted.emit(this.storageAdjustment),t?(this.platformUtilsService.showToast("warning",null,this.i18nService.t("couldNotChargeCardPayInvoice"),{timeout:1e4}),this.router.navigate(["../billing"],{relativeTo:this.activatedRoute})):this.platformUtilsService.showToast("success",null,this.i18nService.t("adjustedStorage",e.storageGbAdjustment.toString()))}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}get adjustedStorageTotal(){return this.storageGbPrice*this.storageAdjustment}}t.AdjustStorageComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.Router),s.ɵɵdirectiveInject(p.ActivatedRoute),s.ɵɵdirectiveInject(u.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-adjust-storage"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(a.PaymentComponent,7),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.paymentComponent=e.first)}},inputs:{storageGbPrice:"storageGbPrice",add:"add",organizationId:"organizationId",interval:"interval"},outputs:{onAdjusted:"onAdjusted",onCanceled:"onCanceled"},decls:52,vars:26,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"row"],[1,"form-group","col-6"],["for","storageAdjustment"],["id","storageAdjustment","type","number","name","StroageGbAdjustment","min","0","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["class","mb-3",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[1,"d-block","text-muted","mt-3"],[3,"showMethods"],[1,"mb-3"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",3),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"span",4),s.ɵɵtext(9,"×"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"h3",5),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",7),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",8),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"input",9),s.ɵɵlistener("ngModelChange",(function(e){return t.storageAdjustment=e})),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,x,9,15,"div",10),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"button",11),s.ɵɵtext(31,"\n "),s.ɵɵelement(32,"i",12),s.ɵɵpipe(33,"i18n"),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"span"),s.ɵɵtext(36),s.ɵɵpipe(37,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"button",13),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵtext(41),s.ɵɵpipe(42,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"small",14),s.ɵɵtext(45),s.ɵɵpipe(46,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n"),s.ɵɵelement(50,"app-payment",15),s.ɵɵtext(51,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,12,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,14,t.add?"addStorage":"removeStorage")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,16,t.add?"gbStorageAdd":"gbStorageRemove")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.storageAdjustment),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.add),s.ɵɵadvance(2),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(33,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(37,20,"submit")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(42,22,"cancel"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(46,24,t.add?"storageAddNote":"storageRemoveNote"),"\n "),s.ɵɵadvance(5),s.ɵɵproperty("showMethods",!1)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.A11yTitleDirective,m.MinValidator,m.MaxValidator,m.NumberValueAccessor,m.DefaultValueAccessor,m.RequiredValidator,m.NgControlStatus,m.NgModel,g.NgIf,f.PaymentComponent],pipes:[y.I18nPipe,g.CurrencyPipe],encapsulation:2})},83011:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiKeyComponent=void 0;n(36631),n(57055);const r=n(32621),o=n(57055),a=n(36631),s=n(96832),l=n(56820),c=n(8863),d=n(57490),p=n(4158),u=n(51626),m=n(99729);function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-user-verification",15),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPassword=t})),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("ngModel",e.masterPassword)}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",16),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,e.apiKeyWarning))}}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",17),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"p",18),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"strong"),r.ɵɵtext(6,"client_id:"),r.ɵɵelementEnd(),r.ɵɵelement(7,"br"),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"code"),r.ɵɵtext(10),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"p",18),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"strong"),r.ɵɵtext(16,"client_secret:"),r.ɵɵelementEnd(),r.ɵɵelement(17,"br"),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"code"),r.ɵɵtext(20),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p",18),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"strong"),r.ɵɵtext(26,"scope:"),r.ɵɵelementEnd(),r.ɵɵelement(27,"br"),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"code"),r.ɵɵtext(30),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"p",19),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"strong"),r.ɵɵtext(36,"grant_type:"),r.ɵɵelementEnd(),r.ɵɵelement(37,"br"),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"code"),r.ɵɵtext(40),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,5,"oauth2ClientCredentials")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.clientId),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.clientSecret),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.scope),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.grantType)}}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"button",20),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",21),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(5);r.ɵɵproperty("disabled",t.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,3,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,5,e.isRotation?"rotateApiKey":"viewApiKey"))}}class y{constructor(e,t){this.userVerificationService=e,this.logService=t}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.postKey(this.entityId,e)));const e=yield this.formPromise;this.clientSecret=e.apiKey,this.clientId=`${this.keyType}.${this.entityId}`}catch(e){this.logService.error(e)}}))}}t.ApiKeyComponent=y,y.ɵfac=function(e){return new(e||y)(r.ɵɵdirectiveInject(o.UserVerificationService),r.ɵɵdirectiveInject(a.LogService))},y.ɵcmp=r.ɵɵdefineComponent({type:y,selectors:[["app-api-key"]],decls:46,vars:17,consts:[["role","dialog","aria-modal","true","aria-labelledby","apiKeyTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","apiKeyTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange",4,"ngIf"],["type","warning",4,"ngIf"],["type","info","icon","bwi bwi-key",3,"title",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],["type","warning"],["type","info","icon","bwi bwi-key",3,"title"],[1,"mb-1"],[1,"mb-0"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,h,2,1,"app-user-verification",9),r.ɵɵtext(28,"\n\n "),r.ɵɵtemplate(29,v,3,3,"app-callout",10),r.ɵɵtext(30,"\n "),r.ɵɵtemplate(31,g,43,7,"app-callout",11),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"div",12),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,f,9,7,"button",13),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"button",14),r.ɵɵtext(39),r.ɵɵpipe(40,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(43,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,9,t.apiKeyTitle)),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,11,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,13,t.apiKeyDescription)),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.clientSecret),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.clientSecret),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.clientSecret),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!t.clientSecret),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(40,15,"close"),"\n "))},directives:[s.NgControlStatusGroup,s.NgForm,l.ApiActionDirective,c.A11yTitleDirective,d.NgIf,p.UserVerificationComponent,s.DefaultValueAccessor,s.NgControlStatus,s.NgModel,u.CalloutComponent],pipes:[m.I18nPipe],encapsulation:2})},6131:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncKeyComponent=void 0;n(91674),n(36631);const r=n(24643),o=n(79977),a=n(29602),s=n(19036),l=n(32621),c=n(91674),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(45728),v=n(48198),g=n(99729);class f{constructor(e,t){this.apiService=e,this.logService=t}submit(){var e;return i(this,void 0,void 0,(function*(){try{const t=new s.OrganizationConnectionRequest(this.entityId,r.OrganizationConnectionType.CloudBillingSync,!0,new a.BillingSyncConfigRequest(this.billingSyncKey));null==this.existingConnectionId?this.formPromise=this.apiService.createOrganizationConnection(t,o.BillingSyncConfigApi):this.formPromise=this.apiService.updateOrganizationConnection(t,o.BillingSyncConfigApi,this.existingConnectionId);const n=yield this.formPromise;this.existingConnectionId=null==n?void 0:n.id,this.billingSyncKey=null===(e=null==n?void 0:n.config)||void 0===e?void 0:e.billingSyncKey,this.setParentConnection(n)}catch(t){this.logService.error(t)}}))}deleteConnection(){return i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.deleteOrganizationConnection(this.existingConnectionId),yield this.formPromise,this.setParentConnection(null)}))}}t.BillingSyncKeyComponent=f,f.ɵfac=function(e){return new(e||f)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=l.ɵɵdefineComponent({type:f,selectors:[["app-billing-sync-key"]],decls:77,vars:36,consts:[["role","dialog","aria-modal","true","aria-labelledby","billingSyncTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","billingSyncTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","billingSyncKey"],["id","billingSyncKey","type","input","name","billingSyncKey","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"button",6),l.ɵɵpipe(14,"i18n"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"span",7),l.ɵɵtext(17,"×"),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementStart(21,"div",8),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"p"),l.ɵɵtext(24),l.ɵɵpipe(25,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementStart(27,"div",9),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"label",10),l.ɵɵtext(30),l.ɵɵpipe(31,"i18n"),l.ɵɵelementStart(32,"small"),l.ɵɵtext(33,"("),l.ɵɵelementEnd(),l.ɵɵelementStart(34,"small"),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵelementStart(37,"small"),l.ɵɵtext(38,")"),l.ɵɵelementEnd(),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementStart(40,"input",11),l.ɵɵlistener("ngModelChange",(function(e){return t.billingSyncKey=e})),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n "),l.ɵɵelementStart(44,"div",12),l.ɵɵtext(45,"\n "),l.ɵɵelementStart(46,"button",13),l.ɵɵtext(47,"\n "),l.ɵɵelement(48,"i",14),l.ɵɵpipe(49,"i18n"),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"span"),l.ɵɵtext(52),l.ɵɵpipe(53,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(55,"\n "),l.ɵɵelementStart(56,"button",15),l.ɵɵtext(57),l.ɵɵpipe(58,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(59,"\n "),l.ɵɵelementStart(60,"div",16),l.ɵɵtext(61,"\n "),l.ɵɵelementStart(62,"button",17,18),l.ɵɵlistener("click",(function(){return t.deleteConnection()})),l.ɵɵpipe(64,"i18n"),l.ɵɵtext(65,"\n "),l.ɵɵelement(66,"i",19),l.ɵɵtext(67,"\n "),l.ɵɵelement(68,"i",20),l.ɵɵpipe(69,"i18n"),l.ɵɵtext(70,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(71,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(72,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(73,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(74,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(75,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(76,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(11,16,"manageBillingSync")),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(14,18,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(25,20,"billingSyncKeyDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind1(31,22,"billingSyncKey")," "),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(36,24,"required")),l.ɵɵadvance(5),l.ɵɵproperty("ngModel",t.billingSyncKey),l.ɵɵadvance(6),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(49,26,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(53,28,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(58,30,"cancel"),"\n "),l.ɵɵadvance(5),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(64,32,"delete")),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(4),l.ɵɵproperty("hidden",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(69,34,"loading")),l.ɵɵproperty("hidden",!e.loading)}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,p.DefaultValueAccessor,p.RequiredValidator,h.AutofocusDirective,v.InputVerbatimDirective,p.NgControlStatus,p.NgModel],pipes:[g.I18nPipe],encapsulation:2})},74939:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeEmailComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(73828),n(73569);const r=n(97374),o=n(79669),a=n(8283),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(85714),u=n(45552),m=n(36631),h=n(73569),v=n(96832),g=n(56820),f=n(57490),y=n(48198),x=n(51626),S=n(99729);function b(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",14),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"changeEmailTwoFactorWarning"),"\n "))}function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"hr"),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"app-callout",14),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",3),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",4),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",5),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",15),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"input",16),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(6,4,"changeEmailDesc",e.newEmail)),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,7,"loggedOutWarning")),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,9,"code")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function C(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"continue")))}function I(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"changeEmail")))}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",17),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().reset()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"cancel"),"\n "))}class P{constructor(e,t,n,i,r,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.messagingService=r,this.logService=o,this.stateService=a,this.tokenSent=!1,this.showTwoFactorEmailWarning=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getTwoFactorProviders();this.showTwoFactorEmailWarning=e.data.some((e=>e.type===r.TwoFactorProviderType.Email&&e.enabled))}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.cryptoService.hasEncKey())if(this.newEmail=this.newEmail.trim().toLowerCase(),this.tokenSent){const t=new o.EmailRequest;t.token=this.token,t.newEmail=this.newEmail,t.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);const n=yield this.stateService.getKdfType(),i=yield this.stateService.getKdfIterations(),r=yield this.cryptoService.makeKey(this.masterPassword,this.newEmail,n,i);t.newMasterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,r);const a=yield this.cryptoService.remakeEncKey(r);t.key=a[1].encryptedString;try{this.formPromise=this.apiService.postEmail(t),yield this.formPromise,this.reset(),this.platformUtilsService.showToast("success",this.i18nService.t("emailChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}else{const t=new a.EmailTokenRequest;t.newEmail=this.newEmail,t.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);try{this.formPromise=this.apiService.postEmailToken(t),yield this.formPromise,this.tokenSent=!0}catch(e){this.logService.error(e)}}else this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"))}))}reset(){this.token=this.newEmail=this.masterPassword=null,this.tokenSent=!1}}t.ChangeEmailComponent=P,P.ɵfac=function(e){return new(e||P)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.CryptoService),s.ɵɵdirectiveInject(u.MessagingService),s.ɵɵdirectiveInject(m.LogService),s.ɵɵdirectiveInject(h.StateService))},P.ɵcmp=s.ɵɵdefineComponent({type:P,selectors:[["app-change-email"]],decls:44,vars:20,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],["type","warning",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","readonly","ngModelChange"],["for","newEmail"],["id","newEmail","type","text","name","NewEmail","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","readonly","ngModelChange"],[4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["type","warning"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵtemplate(3,b,3,3,"app-callout",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"div",5),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"label",6),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",5),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",8),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"input",9),s.ɵɵlistener("ngModelChange",(function(e){return t.newEmail=e})),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,w,27,11,"ng-container",10),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"button",11),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",12),s.ɵɵpipe(34,"i18n"),s.ɵɵtext(35,"\n "),s.ɵɵtemplate(36,C,3,3,"span",10),s.ɵɵtext(37,"\n "),s.ɵɵtemplate(38,I,3,3,"span",10),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵtemplate(41,E,3,3,"button",13),s.ɵɵtext(42,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showTwoFactorEmailWarning),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,14,"masterPass")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.masterPassword)("readonly",t.tokenSent),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,16,"newEmail")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.newEmail)("readonly",t.tokenSent),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.tokenSent),s.ɵɵadvance(2),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(34,18,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.tokenSent),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.tokenSent),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.tokenSent)}},directives:[v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,f.NgIf,v.DefaultValueAccessor,v.RequiredValidator,y.InputVerbatimDirective,v.NgControlStatus,v.NgModel,x.CalloutComponent],pipes:[S.I18nPipe],encapsulation:2})},48381:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeKdfComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(73828),n(73569);const r=n(20971),o=n(17287),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(85714),p=n(45552),u=n(36631),m=n(73569),h=n(20138),v=n(96832),g=n(56820),f=n(48198),y=n(8863),x=n(57490),S=n(52767),b=n(99729);function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"option",22),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵproperty("ngValue",e.value),a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class C{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.messagingService=o,this.logService=a,this.stateService=s,this.kdf=r.KdfType.PBKDF2_SHA256,this.kdfOptions=[],this.recommendedKdfIterations=r.DEFAULT_KDF_ITERATIONS,this.kdfOptions=[{name:"PBKDF2 SHA-256",value:r.KdfType.PBKDF2_SHA256}]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations()}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasEncKey()))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"));const e=new o.KdfRequest;e.kdf=this.kdf,e.kdfIterations=this.kdfIterations,e.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);const t=yield this.stateService.getEmail(),n=yield this.cryptoService.makeKey(this.masterPassword,t,this.kdf,this.kdfIterations);e.newMasterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,n);const i=yield this.cryptoService.remakeEncKey(n);e.key=i[1].encryptedString;try{this.formPromise=this.apiService.postAccountKdf(e),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("encKeySettingsChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(r){this.logService.error(r)}}))}}t.ChangeKdfComponent=C,C.ɵfac=function(e){return new(e||C)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.CryptoService),a.ɵɵdirectiveInject(p.MessagingService),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.StateService))},C.ɵcmp=a.ɵɵdefineComponent({type:C,selectors:[["app-change-kdf"]],decls:102,vars:48,consts:[[1,"tabbed-header"],["type","warning"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","kdfMasterPassword"],["id","kdfMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-group","mb-0"],["for","kdf"],["href","https://en.wikipedia.org/wiki/Key_derivation_function","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","kdf","name","Kdf","required","",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],["for","kdfIterations"],["href","https://bitwarden.com/help/what-encryption-is-used/#pbkdf2","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["id","kdfIterations","type","number","min","5000","max","2000000","name","KdfIterations","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"col-12"],[1,"small","form-text","text-muted"],["bit-button","","buttonType","primary",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"ngValue"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n"),a.ɵɵelementStart(7,"bit-callout",1),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementStart(11,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"div",4),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"div",5),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",6),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",7),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"input",8),a.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"div",4),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",5),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"div",9),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"label",10),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"a",11),a.ɵɵpipe(40,"i18n"),a.ɵɵtext(41,"\n "),a.ɵɵelement(42,"i",12),a.ɵɵtext(43,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n "),a.ɵɵelementStart(45,"select",13),a.ɵɵlistener("ngModelChange",(function(e){return t.kdf=e})),a.ɵɵtext(46,"\n "),a.ɵɵtemplate(47,w,2,2,"option",14),a.ɵɵtext(48,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"div",5),a.ɵɵtext(53,"\n "),a.ɵɵelementStart(54,"div",9),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"label",15),a.ɵɵtext(57),a.ɵɵpipe(58,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementStart(60,"a",16),a.ɵɵpipe(61,"i18n"),a.ɵɵtext(62,"\n "),a.ɵɵelement(63,"i",12),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementStart(66,"input",17),a.ɵɵlistener("ngModelChange",(function(e){return t.kdfIterations=e})),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(68,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(69,"\n "),a.ɵɵelementStart(70,"div",18),a.ɵɵtext(71,"\n "),a.ɵɵelementStart(72,"div",6),a.ɵɵtext(73,"\n "),a.ɵɵelementStart(74,"div",19),a.ɵɵtext(75,"\n "),a.ɵɵelementStart(76,"p"),a.ɵɵtext(77),a.ɵɵpipe(78,"i18n"),a.ɵɵpipe(79,"number"),a.ɵɵelementEnd(),a.ɵɵtext(80,"\n "),a.ɵɵelementStart(81,"strong"),a.ɵɵtext(82),a.ɵɵpipe(83,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(84),a.ɵɵpipe(85,"i18n"),a.ɵɵpipe(86,"number"),a.ɵɵelementEnd(),a.ɵɵtext(87,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(88,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(89,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(90,"\n "),a.ɵɵelementStart(91,"button",20),a.ɵɵtext(92,"\n "),a.ɵɵelement(93,"i",21),a.ɵɵpipe(94,"i18n"),a.ɵɵtext(95,"\n "),a.ɵɵelementStart(96,"span"),a.ɵɵtext(97),a.ɵɵpipe(98,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(99,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(100,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(101,"\n")),2&e){const e=a.ɵɵreference(12);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,18,"encKeySettings")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,20,"loggedOutWarning")),a.ɵɵadvance(3),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,22,"masterPass")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.masterPassword),a.ɵɵadvance(12),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,24,"kdfAlgorithm")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(40,26,"learnMore")),a.ɵɵadvance(6),a.ɵɵproperty("ngModel",t.kdf),a.ɵɵadvance(2),a.ɵɵproperty("ngForOf",t.kdfOptions),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(58,28,"kdfIterations")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(61,30,"learnMore")),a.ɵɵadvance(6),a.ɵɵproperty("ngModel",t.kdfIterations),a.ɵɵadvance(11),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(78,32,"kdfIterationsDesc",a.ɵɵpipeBind1(79,35,t.recommendedKdfIterations))),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(83,37,"warning")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1(": ",a.ɵɵpipeBind2(85,39,"kdfIterationsWarning",a.ɵɵpipeBind1(86,42,5e4)),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(94,44,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(98,46,"changeKdf"))}},directives:[h.CalloutComponent,v.NgControlStatusGroup,v.NgForm,g.ApiActionDirective,v.DefaultValueAccessor,v.RequiredValidator,f.InputVerbatimDirective,v.NgControlStatus,v.NgModel,y.A11yTitleDirective,v.SelectControlValueAccessor,x.NgForOf,v.MinValidator,v.MaxValidator,v.NumberValueAccessor,S.ButtonComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[b.I18nPipe,x.DecimalPipe],encapsulation:2})},11676:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePasswordComponent=void 0;n(68012);const r=n(16545),o=(n(91674),n(45330),n(85714),n(88308),n(51554),n(72277),n(45552),n(63513),n(84275),n(73828),n(62166),n(76532),n(73569),n(9724),n(47200)),a=n(82769),s=n(24906),l=n(8468),c=n(49586),d=n(27784),p=n(49472),u=n(12909),m=n(93357),h=n(32621),v=n(51554),g=n(85714),f=n(45552),y=n(73569),x=n(84275),S=n(73828),b=n(62166),w=n(88308),C=n(45330),I=n(9724),E=n(91674),P=n(76532),O=n(63513),k=n(72277),A=n(68012),T=n(20138),M=n(57490),B=n(96832),D=n(56820),R=n(48198),F=n(40946),U=n(8863),V=n(52767),N=n(51626),_=n(99729);function j(e,t){if(1&e&&(h.ɵɵelementStart(0,"app-callout",22),h.ɵɵtext(1,"\n"),h.ɵɵelementEnd()),2&e){const e=h.ɵɵnextContext();h.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class z extends r.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,r,o,a,i),this.folderService=s,this.cipherService=l,this.syncService=c,this.apiService=d,this.sendService=p,this.organizationService=u,this.keyConnectorService=m,this.router=h,this.rotateEncKey=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){(yield this.keyConnectorService.getUsesKeyConnector())&&this.router.navigate(["/settings/security/two-factor"]),yield e.ngOnInit.call(this)}))}rotateEncKeyClicked(){return i(this,void 0,void 0,(function*(){if(this.rotateEncKey){const e=yield this.cipherService.getAllDecrypted();let t=!1;if(null!=e)for(let n=0;nsuper.submit}});return i(this,void 0,void 0,(function*(){(yield this.cryptoService.hasEncKey())?yield e.submit.call(this):this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"))}))}setupSubmitActions(){const e=Object.create(null,{setupSubmitActions:{get:()=>super.setupSubmitActions}});return i(this,void 0,void 0,(function*(){return null==this.currentMasterPassword||""===this.currentMasterPassword?(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1):(this.rotateEncKey&&(yield this.syncService.fullSync(!0)),e.setupSubmitActions.call(this))}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){const i=new p.PasswordRequest;i.masterPasswordHash=yield this.cryptoService.hashPassword(this.currentMasterPassword,null),i.newMasterPasswordHash=e,i.key=n[1].encryptedString;try{this.rotateEncKey?this.formPromise=this.apiService.postPassword(i).then((()=>this.updateKey(t,i.newMasterPasswordHash))):this.formPromise=this.apiService.postPassword(i),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("masterPasswordChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}}))}updateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.makeEncKey(e),r=yield this.cryptoService.getPrivateKey();let o=null;null!=r&&(o=yield this.cryptoService.encrypt(r,n[0]));const a=new m.UpdateKeyRequest;a.privateKey=null!=o?o.encryptedString:null,a.key=n[1].encryptedString,a.masterPasswordHash=t;const l=yield this.folderService.getAllDecrypted();for(let e=0;ei(this,void 0,void 0,(function*(){var t;const i=yield this.cryptoService.decryptToBytes(e.key,null);e.key=null!==(t=yield this.cryptoService.encrypt(i,n[0]))&&void 0!==t?t:e.key,a.sends.push(new u.SendWithIdRequest(e))}))))),yield this.apiService.postAccountKey(a),yield this.updateEmergencyAccesses(n[0]),yield this.updateAllResetPasswordKeys(n[0])}))}updateEmergencyAccesses(e){return i(this,void 0,void 0,(function*(){const t=yield this.apiService.getEmergencyAccessTrusted(),n=[o.EmergencyAccessStatusType.Confirmed,o.EmergencyAccessStatusType.RecoveryInitiated,o.EmergencyAccessStatusType.RecoveryApproved],i=t.data.filter((e=>n.includes(e.status)));for(const r of i){const t=yield this.apiService.getUserPublicKey(r.granteeId),n=a.Utils.fromB64ToArray(t.publicKey),i=yield this.cryptoService.rsaEncrypt(e.key,n.buffer),o=new l.EmergencyAccessUpdateRequest;o.type=r.type,o.waitTimeDays=r.waitTimeDays,o.keyEncrypted=i.encryptedString,yield this.apiService.putEmergencyAccess(r.id,o)}}))}updateAllResetPasswordKeys(e){return i(this,void 0,void 0,(function*(){const t=yield this.organizationService.getAll();for(const n of t){if(!n.resetPasswordEnrolled)continue;const t=yield this.apiService.getOrganizationKeys(n.id),i=a.Utils.fromB64ToArray(null==t?void 0:t.publicKey),r=yield this.cryptoService.rsaEncrypt(e.key,i.buffer),o=new d.OrganizationUserResetPasswordEnrollmentRequest;o.resetPasswordKey=r.encryptedString,yield this.apiService.putOrganizationUserResetPasswordEnrollment(n.id,n.userId,o)}}))}}t.ChangePasswordComponent=z,z.ɵfac=function(e){return new(e||z)(h.ɵɵdirectiveInject(v.I18nService),h.ɵɵdirectiveInject(g.CryptoService),h.ɵɵdirectiveInject(f.MessagingService),h.ɵɵdirectiveInject(y.StateService),h.ɵɵdirectiveInject(x.PasswordGenerationService),h.ɵɵdirectiveInject(S.PlatformUtilsService),h.ɵɵdirectiveInject(b.PolicyService),h.ɵɵdirectiveInject(w.FolderService),h.ɵɵdirectiveInject(C.CipherService),h.ɵɵdirectiveInject(I.SyncService),h.ɵɵdirectiveInject(E.ApiService),h.ɵɵdirectiveInject(P.SendService),h.ɵɵdirectiveInject(O.OrganizationService),h.ɵɵdirectiveInject(k.KeyConnectorService),h.ɵɵdirectiveInject(A.Router))},z.ɵcmp=h.ɵɵdefineComponent({type:z,selectors:[["app-change-password"]],features:[h.ɵɵInheritDefinitionFeature],decls:89,vars:36,consts:[[1,"tabbed-header"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","currentMasterPassword"],["id","currentMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","newMasterPassword"],["id","newMasterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-check"],["type","checkbox","id","rotateEncKey","name","RotateEncKey",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","rotateEncKey",1,"form-check-label"],["href","https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key","target","_blank","rel","noopener",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["bit-button","","buttonType","primary",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(h.ɵɵelementStart(0,"div",0),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"h1"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n\n"),h.ɵɵelementStart(7,"bit-callout",1),h.ɵɵtext(8),h.ɵɵpipe(9,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(10,"\n"),h.ɵɵtemplate(11,j,2,1,"app-callout",2),h.ɵɵtext(12,"\n\n"),h.ɵɵelementStart(13,"form",3,4),h.ɵɵlistener("ngSubmit",(function(){return t.submit()})),h.ɵɵtext(15,"\n "),h.ɵɵelementStart(16,"div",5),h.ɵɵtext(17,"\n "),h.ɵɵelementStart(18,"div",6),h.ɵɵtext(19,"\n "),h.ɵɵelementStart(20,"div",7),h.ɵɵtext(21,"\n "),h.ɵɵelementStart(22,"label",8),h.ɵɵtext(23),h.ɵɵpipe(24,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(25,"\n "),h.ɵɵelementStart(26,"input",9),h.ɵɵlistener("ngModelChange",(function(e){return t.currentMasterPassword=e})),h.ɵɵelementEnd(),h.ɵɵtext(27,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(28,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(29,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(30,"\n "),h.ɵɵelementStart(31,"div",5),h.ɵɵtext(32,"\n "),h.ɵɵelementStart(33,"div",6),h.ɵɵtext(34,"\n "),h.ɵɵelementStart(35,"div",7),h.ɵɵtext(36,"\n "),h.ɵɵelementStart(37,"label",10),h.ɵɵtext(38),h.ɵɵpipe(39,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(40,"\n "),h.ɵɵelementStart(41,"input",11),h.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),h.ɵɵelementEnd(),h.ɵɵtext(42,"\n "),h.ɵɵelement(43,"app-password-strength",12),h.ɵɵtext(44,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(45,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(46,"\n "),h.ɵɵelementStart(47,"div",6),h.ɵɵtext(48,"\n "),h.ɵɵelementStart(49,"div",7),h.ɵɵtext(50,"\n "),h.ɵɵelementStart(51,"label",13),h.ɵɵtext(52),h.ɵɵpipe(53,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(54,"\n "),h.ɵɵelementStart(55,"input",14),h.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),h.ɵɵelementEnd(),h.ɵɵtext(56,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(57,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(58,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(59,"\n "),h.ɵɵelementStart(60,"div",7),h.ɵɵtext(61,"\n "),h.ɵɵelementStart(62,"div",15),h.ɵɵtext(63,"\n "),h.ɵɵelementStart(64,"input",16),h.ɵɵlistener("ngModelChange",(function(e){return t.rotateEncKey=e}))("change",(function(){return t.rotateEncKeyClicked()})),h.ɵɵelementEnd(),h.ɵɵtext(65,"\n "),h.ɵɵelementStart(66,"label",17),h.ɵɵtext(67),h.ɵɵpipe(68,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(69,"\n "),h.ɵɵelementStart(70,"a",18),h.ɵɵpipe(71,"i18n"),h.ɵɵtext(72,"\n "),h.ɵɵelement(73,"i",19),h.ɵɵtext(74,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(75,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(76,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(77,"\n "),h.ɵɵelementStart(78,"button",20),h.ɵɵtext(79,"\n "),h.ɵɵelement(80,"i",21),h.ɵɵpipe(81,"i18n"),h.ɵɵtext(82,"\n "),h.ɵɵelementStart(83,"span"),h.ɵɵtext(84),h.ɵɵpipe(85,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(86,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(87,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(88,"\n")),2&e){const e=h.ɵɵreference(14);h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,18,"changeMasterPassword")),h.ɵɵadvance(5),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(9,20,"loggedOutWarning")),h.ɵɵadvance(3),h.ɵɵproperty("ngIf",t.enforcedPolicyOptions),h.ɵɵadvance(2),h.ɵɵproperty("appApiAction",t.formPromise),h.ɵɵadvance(10),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(24,22,"currentMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.currentMasterPassword),h.ɵɵadvance(12),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(39,24,"newMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.masterPassword),h.ɵɵadvance(2),h.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),h.ɵɵadvance(9),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(53,26,"confirmNewMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.masterPasswordRetype),h.ɵɵadvance(9),h.ɵɵproperty("ngModel",t.rotateEncKey),h.ɵɵadvance(3),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(68,28,"rotateAccountEncKey"),"\n "),h.ɵɵadvance(3),h.ɵɵpropertyInterpolate("appA11yTitle",h.ɵɵpipeBind1(71,30,"learnMore")),h.ɵɵadvance(8),h.ɵɵproperty("disabled",e.loading),h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(81,32,"loading")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(85,34,"changeMasterPassword"))}},directives:[T.CalloutComponent,M.NgIf,B.NgControlStatusGroup,B.NgForm,D.ApiActionDirective,B.DefaultValueAccessor,B.RequiredValidator,R.InputVerbatimDirective,B.NgControlStatus,B.NgModel,F.PasswordStrengthComponent,B.CheckboxControlValueAccessor,U.A11yTitleDirective,V.ButtonComponent,N.CalloutComponent],pipes:[_.I18nPipe],encapsulation:2})},532:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CreateOrganizationComponent=void 0;n(68012);const r=n(14857),o=n(47937),a=n(96066),s=n(28360),l=n(32621),c=n(68012),d=n(28360),p=n(99729);class u{constructor(e){this.route=e}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){"families"===e.plan?(this.orgPlansComponent.plan=o.PlanType.FamiliesAnnually,this.orgPlansComponent.product=a.ProductType.Families):"teams"===e.plan?(this.orgPlansComponent.plan=o.PlanType.TeamsAnnually,this.orgPlansComponent.product=a.ProductType.Teams):"enterprise"===e.plan&&(this.orgPlansComponent.plan=o.PlanType.EnterpriseAnnually,this.orgPlansComponent.product=a.ProductType.Enterprise)}))))}}t.CreateOrganizationComponent=u,u.ɵfac=function(e){return new(e||u)(l.ɵɵdirectiveInject(c.ActivatedRoute))},u.ɵcmp=l.ɵɵdefineComponent({type:u,selectors:[["app-create-organization"]],viewQuery:function(e,t){if(1&e&&l.ɵɵviewQuery(s.OrganizationPlansComponent,7),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.orgPlansComponent=e.first)}},decls:22,vars:6,consts:[[1,"container","page-content"],[1,"row"],[1,"col-12"],[1,"page-header"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h1"),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"p"),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelement(17,"app-organization-plans"),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,2,"newOrganization")),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(15,4,"newOrganizationDesc")))},directives:[d.OrganizationPlansComponent],pipes:[p.I18nPipe],encapsulation:2})},26083:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeauthorizeSessionsComponent=void 0;n(91674),n(51554),n(36631),n(45552),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(45552),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),g=n(99729);class f{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.messagingService=r,this.logService=o}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.postSecurityStamp(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("sessionsDeauthorized"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}))}}t.DeauthorizeSessionsComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.MessagingService),r.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-deauthorize-sessions"]],decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","deAuthTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deAuthTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"deauthorizeSessions")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"deauthorizeSessionsDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"deauthorizeSessionsWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"deauthorizeSessions")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[g.I18nPipe],encapsulation:2})},6430:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteAccountComponent=void 0;n(91674),n(51554),n(36631),n(45552),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(45552),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),g=n(99729);class f{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.messagingService=r,this.logService=o}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.deleteAccount(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("accountDeleted"),this.i18nService.t("accountDeletedDesc")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}))}}t.DeleteAccountComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.MessagingService),r.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-delete-account"]],decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteAccountTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteAccountTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"deleteAccount")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"deleteAccountDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"deleteAccountWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"deleteAccount")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[g.I18nPipe],encapsulation:2})},10116:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DomainRulesComponent=void 0;n(91674),n(51554),n(36631),n(73828);const r=n(55785),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(36631),d=n(96832),p=n(56820),u=n(57490),m=n(8863),h=n(1142),v=n(99729);function g(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",8),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",9),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function f(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",15),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",16),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"textarea",17),o.ɵɵlistener("ngModelChange",(function(t){const n=o.ɵɵrestoreView(e).index;return o.ɵɵnextContext(2).custom[n]=t})),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",18),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).index;return o.ɵɵnextContext(2).remove(t)})),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelement(15,"i",19),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.index,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("for","customDomain_",e,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(6,7,"customDomainX",e+1)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate1("name","CustomDomain[",e,"]"),o.ɵɵpropertyInterpolate1("id","customDomain_",e,""),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(9,10,"ex")," google.com, gmail.com"),o.ɵɵproperty("ngModel",n.custom[e]),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,12,"remove"))}}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,f,18,14,"div",10),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"button",11),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().add()})),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",12),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"small",13),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.custom)("ngForTrackBy",e.indexTrackBy),o.ɵɵadvance(5),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(8,4,"newCustomDomain"),"\n "),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,6,"newCustomDomainDesc"))}}function x(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",8),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",9),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",29),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).toggleExcluded(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",31),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"exclude"),"\n "))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",29),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).toggleExcluded(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",32),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"include"),"\n "))}const w=function(e){return{"table-list-strike":e}};function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",22),o.ɵɵtext(3),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"td",23),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",24),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"button",25),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11,"\n "),o.ɵɵelement(12,"i",26),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",27),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,S,5,3,"a",28),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,b,5,3,"a",28),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"a",29),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).customize(t)})),o.ɵɵtext(22,"\n "),o.ɵɵelement(23,"i",30),o.ɵɵtext(24),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit;o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(10,w,e.excluded)),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.domains),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(10,6,"options")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",!e.excluded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.excluded),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(25,8,"customize"),"\n ")}}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,30,12,"tr",21),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.global)}}class E{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.loading=!0,this.custom=[],this.global=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getSettingsDomains();this.loading=!1,null!=e.equivalentDomains&&(this.custom=e.equivalentDomains.map((e=>e.join(", ")))),null!=e.globalEquivalentDomains&&(this.global=e.globalEquivalentDomains.map((e=>({domains:e.domains.join(", "),excluded:e.excluded,key:e.type}))))}))}toggleExcluded(e){e.excluded=!e.excluded}customize(e){e.excluded=!0,this.custom.push(e.domains)}remove(e){this.custom.splice(e,1)}add(){this.custom.push("")}submit(){return i(this,void 0,void 0,(function*(){const e=new r.UpdateDomainsRequest;e.excludedGlobalEquivalentDomains=this.global.filter((e=>e.excluded)).map((e=>e.key)),0===e.excludedGlobalEquivalentDomains.length&&(e.excludedGlobalEquivalentDomains=null),e.equivalentDomains=this.custom.filter((e=>null!=e&&""!==e.trim())).map((e=>e.split(",").map((e=>e.trim())))),0===e.equivalentDomains.length&&(e.equivalentDomains=null);try{this.formPromise=this.apiService.putSettingsDomains(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("domainsUpdated"))}catch(t){this.logService.error(t)}}))}indexTrackBy(e,t){return e}}t.DomainRulesComponent=E,E.ɵfac=function(e){return new(e||E)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.LogService))},E.ɵcmp=o.ɵɵdefineComponent({type:E,selectors:[["app-domain-rules"]],decls:51,vars:31,consts:[[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"spaced-header"],["class","table table-hover table-list",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","form-group d-flex",4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"btn","btn-outline-secondary","btn-sm","mb-2",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"text-muted","d-block","mb-3"],[1,"form-group","d-flex"],[1,"flex-fill"],[1,"sr-only",3,"for"],["required","",1,"form-control",3,"name","id","ngModel","placeholder","ngModelChange"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[3,"ngClass"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-cut"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-plus"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementStart(11,"form",1,2),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"h2"),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,g,9,6,"p",3),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,y,14,8,"ng-container",3),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"button",4),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"i",5),o.ɵɵpipe(25,"i18n"),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"span"),o.ɵɵtext(28),o.ɵɵpipe(29,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"h2",6),o.ɵɵtext(33),o.ɵɵpipe(34,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,x,9,6,"p",3),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,I,7,1,"table",7),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"button",4),o.ɵɵtext(41,"\n "),o.ɵɵelement(42,"i",5),o.ɵɵpipe(43,"i18n"),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n")),2&e){const e=o.ɵɵreference(12);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,15,"domainRules")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,17,"domainRulesDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(16,19,"customEqDomains")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading),o.ɵɵadvance(2),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(25,21,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(29,23,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(34,25,"globalEqDomains")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading&&t.global.length>0),o.ɵɵadvance(2),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(43,27,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"save"))}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.NgIf,u.NgForOf,d.DefaultValueAccessor,d.RequiredValidator,d.NgControlStatus,d.NgModel,m.A11yTitleDirective,u.NgClass,h.StopClickDirective],pipes:[v.I18nPipe],encapsulation:2})},36894:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(82838)),a=n(85985),s=n(8468),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(36631),m=n(96832),h=n(56820),v=n(57490),g=n(8863),f=n(48403),y=n(99729);function x(e,t){1&e&&l.ɵɵelement(0,"app-premium-badge")}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function b(e,t){1&e&&(l.ɵɵelementStart(0,"div",19),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",20),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span",21),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",33),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"label",34),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"input",35),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).email=t})),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementContainerEnd()}if(2&e){const e=l.ɵɵnextContext(2);l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(4,3,"inviteEmergencyContactDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,5,"email")),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",e.email)}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"option",36),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵproperty("ngValue",e.value),l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"div",19),l.ɵɵtext(1,"\n "),l.ɵɵtemplate(2,w,15,7,"ng-container",6),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"h3"),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementStart(7,"a",22),l.ɵɵpipe(8,"i18n"),l.ɵɵtext(9,"\n "),l.ɵɵelement(10,"i",23),l.ɵɵtext(11,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"div",24),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"input",25),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().type=t})),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"label",26),l.ɵɵtext(19),l.ɵɵpipe(20,"i18n"),l.ɵɵelementStart(21,"small"),l.ɵɵtext(22),l.ɵɵpipe(23,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementStart(27,"div",24),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"input",27),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().type=t})),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"label",28),l.ɵɵtext(32),l.ɵɵpipe(33,"i18n"),l.ɵɵelementStart(34,"small"),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementStart(40,"div",29),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"label",30),l.ɵɵtext(43),l.ɵɵpipe(44,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(45,"\n "),l.ɵɵelementStart(46,"select",31),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().waitTime=t})),l.ɵɵtext(47,"\n "),l.ɵɵtemplate(48,C,2,2,"option",32),l.ɵɵtext(49,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"small",18),l.ɵɵtext(52),l.ɵɵpipe(53,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(55,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!e.editMode),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(6,17,"userAccess"),"\n "),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(8,19,"learnMore")),l.ɵɵadvance(9),l.ɵɵproperty("value",e.emergencyAccessType.View)("ngModel",e.type),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(20,21,"view"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(23,23,"viewDesc")),l.ɵɵadvance(7),l.ɵɵproperty("value",e.emergencyAccessType.Takeover)("ngModel",e.type)("disabled",e.readOnly),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(33,25,"takeover"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(36,27,"takeoverDesc")),l.ɵɵadvance(8),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(44,29,"waitTime")),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",e.waitTime)("disabled",e.readOnly),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.waitTimes),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(53,31,"waitTimeDesc"))}}function E(e,t){1&e&&(l.ɵɵelement(0,"i",37),l.ɵɵpipe(1,"i18n")),2&e&&l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(1,1,"loading"))}function P(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"save")))}function O(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",38,39),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().delete()})),l.ɵɵpipe(2,"i18n"),l.ɵɵtext(3,"\n "),l.ɵɵelement(4,"i",40),l.ɵɵtext(5,"\n "),l.ɵɵelement(6,"i",41),l.ɵɵpipe(7,"i18n"),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵreference(1);l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(2,5,"delete")),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(4),l.ɵɵproperty("hidden",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(7,7,"loading")),l.ɵɵproperty("hidden",!e.loading)}}class k{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSaved=new r.EventEmitter,this.onDeleted=new r.EventEmitter,this.loading=!0,this.readOnly=!1,this.editMode=!1,this.type=o.EmergencyAccessType.View,this.emergencyAccessType=o.EmergencyAccessType}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.emergencyAccessId,this.waitTimes=[{name:this.i18nService.t("oneDay"),value:1},{name:this.i18nService.t("days","2"),value:2},{name:this.i18nService.t("days","7"),value:7},{name:this.i18nService.t("days","14"),value:14},{name:this.i18nService.t("days","30"),value:30},{name:this.i18nService.t("days","90"),value:90}],this.editMode){this.editMode=!0,this.title=this.i18nService.t("editEmergencyContact");try{const e=yield this.apiService.getEmergencyAccess(this.emergencyAccessId);this.type=e.type,this.waitTime=e.waitTimeDays}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteEmergencyContact"),this.waitTime=this.waitTimes[2].value;this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{if(this.editMode){const e=new s.EmergencyAccessUpdateRequest;e.type=this.type,e.waitTimeDays=this.waitTime,this.formPromise=this.apiService.putEmergencyAccess(this.emergencyAccessId,e)}else{const e=new a.EmergencyAccessInviteRequest;e.email=this.email.trim(),e.type=this.type,e.waitTimeDays=this.waitTime,this.formPromise=this.apiService.postEmergencyAccessInvite(e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSaved.emit()}catch(e){this.logService.error(e)}}))}delete(){return i(this,void 0,void 0,(function*(){this.onDeleted.emit()}))}}t.EmergencyAccessAddEditComponent=k,k.ɵfac=function(e){return new(e||k)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=l.ɵɵdefineComponent({type:k,selectors:[["emergency-access-add-edit"]],inputs:{name:"name",emergencyAccessId:"emergencyAccessId"},outputs:{onSaved:"onSaved",onDeleted:"onDeleted"},decls:51,vars:16,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],[4,"ngIf"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary",3,"disabled"],["submitBtn",""],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/emergency-access/#user-access",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","emergencyTypeView",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","emergencyTypeView",1,"form-check-label"],["type","radio","name","userType","id","emergencyTypeTakeover",1,"form-check-input",3,"value","ngModel","disabled","ngModelChange"],["for","emergencyTypeTakeover",1,"form-check-label"],[1,"form-group","col-6","mt-4"],["for","waitTime"],["id","waitTime","name","waitTime",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-group","mb-4"],["for","email"],["id","email","type","text","name","Email","required","",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10,"\n "),l.ɵɵtemplate(11,x,1,0,"app-premium-badge",6),l.ɵɵtext(12),l.ɵɵtemplate(13,S,2,1,"small",7),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"button",8),l.ɵɵpipe(17,"i18n"),l.ɵɵtext(18,"\n "),l.ɵɵelementStart(19,"span",9),l.ɵɵtext(20,"×"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,b,9,6,"div",10),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,I,56,33,"div",10),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"div",11),l.ɵɵtext(29,"\n "),l.ɵɵelementStart(30,"button",12,13),l.ɵɵtext(32,"\n "),l.ɵɵtemplate(33,E,2,3,"i",14),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,P,3,3,"span",6),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementStart(38,"button",15),l.ɵɵtext(39),l.ɵɵpipe(40,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"div",16),l.ɵɵtext(43,"\n "),l.ɵɵtemplate(44,O,9,9,"button",17),l.ɵɵtext(45,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(46,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(47,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(48,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(49,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n")),2&e){const e=l.ɵɵreference(31);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(7),l.ɵɵproperty("ngIf",t.readOnly),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.title,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",t.name),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(17,12,"close")),l.ɵɵadvance(8),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading),l.ɵɵadvance(4),l.ɵɵproperty("disabled",t.loading||e.loading||t.readOnly),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.loading||e.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!e.loading),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(40,14,"cancel"),"\n "),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",t.editMode)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,g.A11yTitleDirective,f.PremiumBadgeComponent,m.RadioControlValueAccessor,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,m.SelectControlValueAccessor,v.NgForOf,m.RequiredValidator,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[y.I18nPipe],encapsulation:2})},4034:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAttachmentsComponent=void 0;const r=n(93705),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(32621)),a=n(45330),s=n(51554),l=n(85714),c=n(73569),d=n(73828),p=n(91674),u=n(36631),m=n(96832),h=n(56820),v=n(57490),g=n(8863),f=n(1142),y=n(99729);function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.cipher.name)}}function S(e,t){1&e&&o.ɵɵelement(0,"i",24)}function b(e,t){1&e&&o.ɵɵelement(0,"i",25)}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",26),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",28),o.ɵɵpipe(5,"i18n"),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"span",29),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"button",30,31),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).reupload(t)})),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(12),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(5,5,"attachmentFixDesc")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,7,"attachmentFixDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"td",32),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",33,34),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).delete(t)})),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",35),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",36),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(3),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,6,"delete")),o.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",16),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,S,1,0,"i",17),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,1,0,"i",18),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td",19),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",20),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"a",21),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).download(t)})),o.ɵɵtext(14),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,16,11,"div",22),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,C,12,10,"td",23),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!e.downloading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.downloading),o.ɵɵadvance(8),o.ɵɵtextInterpolate(e.fileName),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),o.ɵɵadvance(4),o.ɵɵtextInterpolate(e.sizeName),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!n.viewOnly)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,I,25,6,"tr",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.cipher.attachments)}}function P(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",37),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",38),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small",39),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newAttachment")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"file")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"maxFileSize")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",40),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",41),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(5);o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"save"))}}class k extends r.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,r,o,window,a,i),this.viewOnly=!0,this.canAccessAttachments=!0}init(){return i(this,void 0,void 0,(function*(){}))}showFixOldAttachments(e){return!1}}t.EmergencyAccessAttachmentsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.CryptoService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.ApiService),o.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["emergency-access-attachments"]],features:[o.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,x,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,7,1,"table",10),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,P,16,9,"div",6),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",11),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,O,9,7,"button",12),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",13),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"attachments"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,g.A11yTitleDirective,v.NgForOf,f.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},94423:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessConfirmComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(36631),n(73569),n(82769)),a=n(32621),s=n(91674),l=n(85714),c=n(73569),d=n(36631),p=n(96832),u=n(56820),m=n(57490),h=n(8863),v=n(99729);function g(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",18),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class f{constructor(e,t,n,i){this.apiService=e,this.cryptoService=t,this.stateService=n,this.logService=i,this.onConfirmed=new r.EventEmitter,this.dontAskAgain=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){try{const e=yield this.apiService.getUserPublicKey(this.userId);if(null!=e){const t=o.Utils.fromB64ToArray(e.publicKey),n=yield this.cryptoService.getFingerprint(this.userId,t.buffer);null!=n&&(this.fingerprint=n.join("-"))}}catch(e){this.logService.error(e)}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){if(!this.loading){this.dontAskAgain&&(yield this.stateService.setAutoConfirmFingerprints(!0));try{this.onConfirmed.emit()}catch(e){this.logService.error(e)}}}))}}t.EmergencyAccessConfirmComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.CryptoService),a.ɵɵdirectiveInject(c.StateService),a.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["emergency-access-confirm"]],inputs:{name:"name",userId:"userId",emergencyAccessId:"emergencyAccessId",formPromise:"formPromise"},outputs:{onConfirmed:"onConfirmed"},decls:69,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"form-check"],["type","checkbox","id","dontAskAgain","name","DontAskAgain",1,"form-check-input",3,"ngModel","ngModelChange"],["for","dontAskAgain",1,"form-check-label"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵtemplate(12,g,2,1,"small",6),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"button",7),a.ɵɵpipe(16,"i18n"),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"span",8),a.ɵɵtext(19,"×"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"div",9),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"p"),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementStart(28,"a",10),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"p"),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"code"),a.ɵɵtext(36),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"div",11),a.ɵɵtext(40,"\n "),a.ɵɵelementStart(41,"input",12),a.ɵɵlistener("ngModelChange",(function(e){return t.dontAskAgain=e})),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementStart(43,"label",13),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(48,"\n "),a.ɵɵelementStart(49,"div",14),a.ɵɵtext(50,"\n "),a.ɵɵelementStart(51,"button",15),a.ɵɵtext(52,"\n "),a.ɵɵelement(53,"i",16),a.ɵɵpipe(54,"i18n"),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"span"),a.ɵɵtext(57),a.ɵɵpipe(58,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(60,"\n "),a.ɵɵelementStart(61,"button",17),a.ɵɵtext(62),a.ɵɵpipe(63,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(68,"\n")),2&e){const e=a.ɵɵreference(5);a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,13,"confirmUser"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.name),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(16,15,"close")),a.ɵɵadvance(11),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(27,17,"fingerprintEnsureIntegrityVerify"),"\n "),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,19,"learnMore"),""),a.ɵɵadvance(7),a.ɵɵtextInterpolate(t.fingerprint),a.ɵɵadvance(5),a.ɵɵproperty("ngModel",t.dontAskAgain),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,21,"dontAskFingerprintAgain"),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(54,23,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(58,25,"confirm")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(63,27,"cancel"),"\n ")}},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.NgIf,h.A11yTitleDirective,p.CheckboxControlValueAccessor,p.NgControlStatus,p.NgModel],pipes:[v.I18nPipe],encapsulation:2})},36485:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessTakeoverComponent=void 0;const r=n(32621),o=n(16545),a=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(20971),n(34144)),s=n(41317),l=n(69731),c=n(64288),d=n(32621),p=n(51554),u=n(85714),m=n(45552),h=n(73569),v=n(84275),g=n(73828),f=n(62166),y=n(91674),x=n(36631),S=n(96832),b=n(56820),w=n(57490),C=n(8863),I=n(51626),E=n(48198),P=n(40946),O=n(99729);function k(e,t){if(1&e&&(d.ɵɵelementStart(0,"small",24),d.ɵɵtext(1),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(1),d.ɵɵtextInterpolate(e.name)}}function A(e,t){if(1&e&&(d.ɵɵelementStart(0,"app-callout",25),d.ɵɵtext(1,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class T extends o.ChangePasswordComponent{constructor(e,t,n,i,o,a,s,l,c){super(e,t,n,o,a,s,i),this.apiService=l,this.logService=c,this.onDone=new r.EventEmitter}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);if(null!=e.data&&e.data.length>0){const t=e.data.map((e=>new s.Policy(new a.PolicyData(e))));this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(t)}}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.strongPassword()))return;const e=yield this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId),t=yield this.cryptoService.rsaDecrypt(e.keyEncrypted),n=new l.SymmetricCryptoKey(t);if(null==n)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unexpectedError"));const i=yield this.cryptoService.makeKey(this.masterPassword,this.email,e.kdf,e.kdfIterations),r=yield this.cryptoService.hashPassword(this.masterPassword,i),o=yield this.cryptoService.remakeEncKey(i,n),a=new c.EmergencyAccessPasswordRequest;a.newMasterPasswordHash=r,a.key=o[1].encryptedString,this.apiService.postEmergencyAccessPassword(this.emergencyAccessId,a);try{this.onDone.emit()}catch(s){this.logService.error(s)}}))}}t.EmergencyAccessTakeoverComponent=T,T.ɵfac=function(e){return new(e||T)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.CryptoService),d.ɵɵdirectiveInject(m.MessagingService),d.ɵɵdirectiveInject(h.StateService),d.ɵɵdirectiveInject(v.PasswordGenerationService),d.ɵɵdirectiveInject(g.PlatformUtilsService),d.ɵɵdirectiveInject(f.PolicyService),d.ɵɵdirectiveInject(y.ApiService),d.ɵɵdirectiveInject(x.LogService))},T.ɵcmp=d.ɵɵdefineComponent({type:T,selectors:[["emergency-access-takeover"]],inputs:{emergencyAccessId:"emergencyAccessId",name:"name",email:"email",kdf:"kdf",kdfIterations:"kdfIterations"},outputs:{onDone:"onDone"},features:[d.ɵɵInheritDefinitionFeature],decls:82,vars:32,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","masterPassword"],["id","masterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"div",1),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"form",2,3),d.ɵɵlistener("ngSubmit",(function(){return t.submit()})),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"div",4),d.ɵɵtext(8,"\n "),d.ɵɵelementStart(9,"h2",5),d.ɵɵtext(10),d.ɵɵpipe(11,"i18n"),d.ɵɵtemplate(12,k,2,1,"small",6),d.ɵɵtext(13,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(14,"\n "),d.ɵɵelementStart(15,"button",7),d.ɵɵpipe(16,"i18n"),d.ɵɵtext(17,"\n "),d.ɵɵelementStart(18,"span",8),d.ɵɵtext(19,"×"),d.ɵɵelementEnd(),d.ɵɵtext(20,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"div",9),d.ɵɵtext(24,"\n "),d.ɵɵelementStart(25,"app-callout",10),d.ɵɵtext(26),d.ɵɵpipe(27,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(28,"\n "),d.ɵɵtemplate(29,A,2,1,"app-callout",11),d.ɵɵtext(30,"\n "),d.ɵɵelementStart(31,"div",12),d.ɵɵtext(32,"\n "),d.ɵɵelementStart(33,"div",13),d.ɵɵtext(34,"\n "),d.ɵɵelementStart(35,"div",14),d.ɵɵtext(36,"\n "),d.ɵɵelementStart(37,"label",15),d.ɵɵtext(38),d.ɵɵpipe(39,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(40,"\n "),d.ɵɵelementStart(41,"input",16),d.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),d.ɵɵelementEnd(),d.ɵɵtext(42,"\n "),d.ɵɵelementStart(43,"app-password-strength",17),d.ɵɵtext(44,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(45,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(46,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(47,"\n "),d.ɵɵelementStart(48,"div",13),d.ɵɵtext(49,"\n "),d.ɵɵelementStart(50,"div",14),d.ɵɵtext(51,"\n "),d.ɵɵelementStart(52,"label",18),d.ɵɵtext(53),d.ɵɵpipe(54,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(55,"\n "),d.ɵɵelementStart(56,"input",19),d.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),d.ɵɵelementEnd(),d.ɵɵtext(57,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(58,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(59,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(60,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(61,"\n "),d.ɵɵelementStart(62,"div",20),d.ɵɵtext(63,"\n "),d.ɵɵelementStart(64,"button",21),d.ɵɵtext(65,"\n "),d.ɵɵelement(66,"i",22),d.ɵɵpipe(67,"i18n"),d.ɵɵtext(68,"\n "),d.ɵɵelementStart(69,"span"),d.ɵɵtext(70),d.ɵɵpipe(71,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(72,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(73,"\n "),d.ɵɵelementStart(74,"button",23),d.ɵɵtext(75),d.ɵɵpipe(76,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(77,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(78,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(79,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(80,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(81,"\n")),2&e){const e=d.ɵɵreference(5);d.ɵɵadvance(4),d.ɵɵproperty("appApiAction",t.formPromise),d.ɵɵadvance(6),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(11,16,"takeover"),"\n "),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.name),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(16,18,"close")),d.ɵɵadvance(11),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(27,20,"loggedOutWarning")),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",t.enforcedPolicyOptions),d.ɵɵadvance(9),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(39,22,"newMasterPass")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",t.masterPassword),d.ɵɵadvance(2),d.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),d.ɵɵadvance(10),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(54,24,"confirmNewMasterPass")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",t.masterPasswordRetype),d.ɵɵadvance(8),d.ɵɵproperty("disabled",e.loading),d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(67,26,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(71,28,"save")),d.ɵɵadvance(5),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(76,30,"cancel"),"\n ")}},directives:[S.NgControlStatusGroup,S.NgForm,b.ApiActionDirective,w.NgIf,C.A11yTitleDirective,I.CalloutComponent,S.DefaultValueAccessor,S.RequiredValidator,E.InputVerbatimDirective,S.NgControlStatus,S.NgModel,P.PasswordStrengthComponent],pipes:[O.I18nPipe],encapsulation:2})},12721:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessViewComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(45330),n(85714),n(82789)),a=n(49624),s=n(69731),l=n(4034),c=n(19733),d=n(32621),p=n(45330),u=n(85714),m=n(64684),h=n(68012),v=n(91674),g=n(57490),f=n(18310),y=n(1142),x=n(39159),S=n(8863),b=n(99729),w=["cipherAddEdit"],C=["attachments"];function I(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",13),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"shared")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",15),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"attachments")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"div",16),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",17),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",18),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",19),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"a",20),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext().$implicit;return d.ɵɵnextContext(2).viewAttachments(t)})),d.ɵɵtext(11,"\n "),d.ɵɵelement(12,"i",21),d.ɵɵtext(13),d.ɵɵpipe(14,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,2,"options")),d.ɵɵadvance(11),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(14,4,"attachments"),"\n "))}function O(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"tr"),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"td",7),d.ɵɵtext(3,"\n "),d.ɵɵelement(4,"app-vault-icon",8),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"td",9),d.ɵɵtext(8,"\n "),d.ɵɵelementStart(9,"a",10),d.ɵɵlistener("click",(function(){const t=d.ɵɵrestoreView(e).$implicit;return d.ɵɵnextContext(2).selectCipher(t)})),d.ɵɵpipe(10,"i18n"),d.ɵɵtext(11),d.ɵɵelementEnd(),d.ɵɵtext(12,"\n "),d.ɵɵtemplate(13,I,9,6,"ng-container",2),d.ɵɵtext(14,"\n "),d.ɵɵtemplate(15,E,9,6,"ng-container",2),d.ɵɵtext(16,"\n "),d.ɵɵelement(17,"br"),d.ɵɵtext(18,"\n "),d.ɵɵelementStart(19,"small"),d.ɵɵtext(20),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"td",11),d.ɵɵtext(24,"\n "),d.ɵɵtemplate(25,P,17,6,"div",12),d.ɵɵtext(26,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(27,"\n "),d.ɵɵelementEnd()}if(2&e){const e=t.$implicit;d.ɵɵadvance(4),d.ɵɵproperty("cipher",e),d.ɵɵadvance(5),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(10,7,"editItem")),d.ɵɵadvance(2),d.ɵɵtextInterpolate(e.name),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.organizationId),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.hasAttachments),d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.subTitle),d.ɵɵadvance(5),d.ɵɵproperty("ngIf",e.hasAttachments)}}function k(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"table",5),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"tbody"),d.ɵɵtext(5,"\n "),d.ɵɵtemplate(6,O,28,9,"tr",6),d.ɵɵtext(7,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementContainerEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(6),d.ɵɵproperty("ngForOf",e.ciphers)}}function A(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",22),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function T(e,t){}function M(e,t){}class B{constructor(e,t,n,i,r,o){this.cipherService=e,this.cryptoService=t,this.modalService=n,this.router=i,this.route=r,this.apiService=o,this.ciphers=[],this.loaded=!1}ngOnInit(){this.route.params.subscribe((e=>{if(null==e.id)return this.router.navigate(["settings/emergency-access"]);this.id=e.id,this.load()}))}selectCipher(e){return i(this,void 0,void 0,(function*(){const[t,n]=yield this.modalService.openViewRef(c.EmergencyAddEditComponent,this.cipherAddEditModalRef,(t=>{t.cipherId=null==e?null:e.id,t.cipher=e}));return n}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.postEmergencyAccessView(this.id);this.ciphers=yield this.getAllCiphers(e),this.loaded=!0}))}viewAttachments(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.EmergencyAccessAttachmentsComponent,this.attachmentsModalRef,(t=>{t.cipher=e,t.emergencyAccessId=this.id}))}))}getAllCiphers(e){return i(this,void 0,void 0,(function*(){const t=e.ciphers,n=[],i=yield this.cryptoService.rsaDecrypt(e.keyEncrypted),r=new s.SymmetricCryptoKey(i),l=[];return t.forEach((e=>{const t=new o.CipherData(e),i=new a.Cipher(t);l.push(i.decrypt(r).then((e=>n.push(e))))})),yield Promise.all(l),n.sort(this.cipherService.getLocaleSortingFunction()),n}))}}t.EmergencyAccessViewComponent=B,B.ɵfac=function(e){return new(e||B)(d.ɵɵdirectiveInject(p.CipherService),d.ɵɵdirectiveInject(u.CryptoService),d.ɵɵdirectiveInject(m.ModalService),d.ɵɵdirectiveInject(h.Router),d.ɵɵdirectiveInject(h.ActivatedRoute),d.ɵɵdirectiveInject(v.ApiService))},B.ɵcmp=d.ɵɵdefineComponent({type:B,selectors:[["emergency-access-view"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(w,7,r.ViewContainerRef),d.ɵɵviewQuery(C,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first)}},decls:20,vars:5,consts:[[1,"page-header"],[1,"mt-4"],[4,"ngIf"],["cipherAddEdit",""],["attachments",""],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"table-list-options"],["class","dropdown","appListDropdown","",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["appListDropdown","",1,"dropdown"],["type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],["aria-labelledby","dropdownMenuButton",1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"h1"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n"),d.ɵɵelementStart(7,"div",1),d.ɵɵtext(8,"\n "),d.ɵɵtemplate(9,k,10,1,"ng-container",2),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,A,9,6,"ng-container",2),d.ɵɵtext(12,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(13,"\n"),d.ɵɵtemplate(14,T,0,0,"ng-template",null,3,d.ɵɵtemplateRefExtractor),d.ɵɵtext(16,"\n"),d.ɵɵtemplate(17,M,0,0,"ng-template",null,4,d.ɵɵtemplateRefExtractor),d.ɵɵtext(19,"\n")),2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,3,"vault")),d.ɵɵadvance(6),d.ɵɵproperty("ngIf",t.ciphers.length),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loaded))},directives:[g.NgIf,g.NgForOf,f.IconComponent,y.StopClickDirective,x.StopPropDirective,S.A11yTitleDirective],pipes:[b.I18nPipe],encapsulation:2})},41764:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessComponent=void 0;const r=n(32621),o=(n(52080),n(64684),n(91674),n(85714),n(51554),n(36631),n(45552),n(63513),n(73828),n(73569),n(47200)),a=n(82838),s=n(82769),l=n(16657),c=n(50881),d=n(36894),p=n(94423),u=n(36485),m=n(32621),h=n(91674),v=n(51554),g=n(64684),f=n(73828),y=n(85714),x=n(45552),S=n(52080),b=n(36631),w=n(73569),C=n(63513),I=n(57490),E=n(48403),P=n(15370),O=n(1142),k=n(8863),A=n(68012),T=n(99729),M=n(52080),B=["addEdit"],D=["takeoverTemplate"],R=["confirmTemplate"];function F(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"b"),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(5),m.ɵɵpipe(6,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("",m.ɵɵpipeBind1(4,2,"warning"),":"),m.ɵɵadvance(2),m.ɵɵtextInterpolate1(" ",m.ɵɵpipeBind1(6,4,"emergencyAccessOwnerWarning"),"\n"))}function U(e,t){1&e&&(m.ɵɵelementStart(0,"span",32),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"invited")))}function V(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"accepted")))}function N(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryInitiated")))}function _(e,t){1&e&&(m.ɵɵelementStart(0,"span",34),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryApproved")))}function j(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"view")))}function z(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"takeover")))}function H(e,t){if(1&e&&(m.ɵɵelementStart(0,"small",36),m.ɵɵtext(1),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵadvance(1),m.ɵɵtextInterpolate(e.name)}}function L(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).reinvite(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",38),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function K(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",39),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).confirm(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",40),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function q(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",39),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).approve(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",40),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"approve"),"\n "))}function G(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",41),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).reject(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",31),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"reject"),"\n "))}function W(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"tr"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"td",14),m.ɵɵtext(3,"\n "),m.ɵɵelementStart(4,"app-avatar",15),m.ɵɵpipe(5,"userName"),m.ɵɵtext(6,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(7,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(8,"\n "),m.ɵɵelementStart(9,"td"),m.ɵɵtext(10,"\n "),m.ɵɵelementStart(11,"a",16),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).edit(t)})),m.ɵɵtext(12),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n "),m.ɵɵtemplate(14,U,3,3,"span",17),m.ɵɵtext(15,"\n "),m.ɵɵtemplate(16,V,3,3,"span",18),m.ɵɵtext(17,"\n "),m.ɵɵtemplate(18,N,3,3,"span",18),m.ɵɵtext(19,"\n "),m.ɵɵtemplate(20,_,3,3,"span",19),m.ɵɵtext(21,"\n\n "),m.ɵɵtemplate(22,j,3,3,"span",20),m.ɵɵtext(23,"\n "),m.ɵɵtemplate(24,z,3,3,"span",20),m.ɵɵtext(25,"\n\n "),m.ɵɵtemplate(26,H,2,1,"small",21),m.ɵɵtext(27,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(28,"\n "),m.ɵɵelementStart(29,"td",22),m.ɵɵtext(30,"\n "),m.ɵɵelementStart(31,"div",23),m.ɵɵtext(32,"\n "),m.ɵɵelementStart(33,"button",24),m.ɵɵpipe(34,"i18n"),m.ɵɵtext(35,"\n "),m.ɵɵelement(36,"i",25),m.ɵɵtext(37,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(38,"\n "),m.ɵɵelementStart(39,"div",26),m.ɵɵtext(40,"\n "),m.ɵɵtemplate(41,L,5,3,"a",27),m.ɵɵtext(42,"\n "),m.ɵɵtemplate(43,K,5,3,"a",28),m.ɵɵtext(44,"\n "),m.ɵɵtemplate(45,q,5,3,"a",28),m.ɵɵtext(46,"\n "),m.ɵɵtemplate(47,G,5,3,"a",29),m.ɵɵtext(48,"\n "),m.ɵɵelementStart(49,"a",30),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).remove(t)})),m.ɵɵtext(50,"\n "),m.ɵɵelement(51,"i",31),m.ɵɵtext(52),m.ɵɵpipe(53,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(54,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(55,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(56,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(57,"\n "),m.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=m.ɵɵnextContext(2);m.ɵɵadvance(4),m.ɵɵproperty("data",m.ɵɵpipeBind1(5,18,e))("email",e.email)("circle",!0)("fontSize",14),m.ɵɵadvance(8),m.ɵɵtextInterpolate(e.email),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.View),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.name),m.ɵɵadvance(7),m.ɵɵpropertyInterpolate("appA11yTitle",m.ɵɵpipeBind1(34,20,"options")),m.ɵɵadvance(8),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated||e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(53,22,"remove"),"\n ")}}function $(e,t){if(1&e&&(m.ɵɵelementStart(0,"table",12),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"tbody"),m.ɵɵtext(3,"\n "),m.ɵɵtemplate(4,W,58,24,"tr",13),m.ɵɵtext(5,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext();m.ɵɵadvance(4),m.ɵɵproperty("ngForOf",e.trustedContacts)}}function Y(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"noTrustedContacts")))}function Q(e,t){1&e&&(m.ɵɵelementStart(0,"span",32),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"invited")))}function J(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"accepted")))}function Z(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryInitiated")))}function X(e,t){1&e&&(m.ɵɵelementStart(0,"span",34),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryApproved")))}function ee(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"view")))}function te(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"takeover")))}function ne(e,t){if(1&e&&(m.ɵɵelementStart(0,"small",36),m.ɵɵtext(1),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵadvance(1),m.ɵɵtextInterpolate(e.name)}}function ie(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).requestAccess(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",38),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"requestAccess"),"\n "))}function re(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).takeover(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",43),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"takeover"),"\n "))}function oe(e,t){if(1&e&&(m.ɵɵelementStart(0,"a",44),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",45),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵproperty("routerLink",e.id),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,2,"view"),"\n ")}}function ae(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"tr"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"td",14),m.ɵɵtext(3,"\n "),m.ɵɵelementStart(4,"app-avatar",15),m.ɵɵpipe(5,"userName"),m.ɵɵtext(6,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(7,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(8,"\n "),m.ɵɵelementStart(9,"td"),m.ɵɵtext(10,"\n "),m.ɵɵelementStart(11,"span"),m.ɵɵtext(12),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n "),m.ɵɵtemplate(14,Q,3,3,"span",17),m.ɵɵtext(15,"\n "),m.ɵɵtemplate(16,J,3,3,"span",18),m.ɵɵtext(17,"\n "),m.ɵɵtemplate(18,Z,3,3,"span",18),m.ɵɵtext(19,"\n "),m.ɵɵtemplate(20,X,3,3,"span",19),m.ɵɵtext(21,"\n\n "),m.ɵɵtemplate(22,ee,3,3,"span",20),m.ɵɵtext(23,"\n "),m.ɵɵtemplate(24,te,3,3,"span",20),m.ɵɵtext(25,"\n\n "),m.ɵɵtemplate(26,ne,2,1,"small",21),m.ɵɵtext(27,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(28,"\n "),m.ɵɵelementStart(29,"td",22),m.ɵɵtext(30,"\n "),m.ɵɵelementStart(31,"div",23),m.ɵɵtext(32,"\n "),m.ɵɵelementStart(33,"button",24),m.ɵɵpipe(34,"i18n"),m.ɵɵtext(35,"\n "),m.ɵɵelement(36,"i",25),m.ɵɵtext(37,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(38,"\n "),m.ɵɵelementStart(39,"div",26),m.ɵɵtext(40,"\n "),m.ɵɵtemplate(41,ie,5,3,"a",27),m.ɵɵtext(42,"\n "),m.ɵɵtemplate(43,re,5,3,"a",27),m.ɵɵtext(44,"\n "),m.ɵɵtemplate(45,oe,5,4,"a",42),m.ɵɵtext(46,"\n "),m.ɵɵelementStart(47,"a",30),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).remove(t)})),m.ɵɵtext(48,"\n "),m.ɵɵelement(49,"i",31),m.ɵɵtext(50),m.ɵɵpipe(51,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(52,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(53,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(54,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(55,"\n "),m.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=m.ɵɵnextContext(2);m.ɵɵadvance(4),m.ɵɵproperty("data",m.ɵɵpipeBind1(5,17,e))("email",e.email)("circle",!0)("fontSize",14),m.ɵɵadvance(8),m.ɵɵtextInterpolate(e.email),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.View),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.name),m.ɵɵadvance(7),m.ɵɵpropertyInterpolate("appA11yTitle",m.ɵɵpipeBind1(34,19,"options")),m.ɵɵadvance(8),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Confirmed),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved&&e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved&&e.type===n.emergencyAccessType.View),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(51,21,"remove"),"\n ")}}function se(e,t){if(1&e&&(m.ɵɵelementStart(0,"table",12),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"tbody"),m.ɵɵtext(3,"\n "),m.ɵɵtemplate(4,ae,56,23,"tr",13),m.ɵɵtext(5,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext();m.ɵɵadvance(4),m.ɵɵproperty("ngForOf",e.grantedContacts)}}function le(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"noGrantedAccess")))}function ce(e,t){}function de(e,t){}function pe(e,t){}class ue{constructor(e,t,n,i,r,s,l,c,d,p){this.apiService=e,this.i18nService=t,this.modalService=n,this.platformUtilsService=i,this.cryptoService=r,this.messagingService=s,this.userNamePipe=l,this.logService=c,this.stateService=d,this.organizationService=p,this.emergencyAccessType=a.EmergencyAccessType,this.emergencyAccessStatusType=o.EmergencyAccessStatusType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();const e=yield this.organizationService.getAll();this.isOrganizationOwner=e.some((e=>e.isOwner)),this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.trustedContacts=(yield this.apiService.getEmergencyAccessTrusted()).data,this.grantedContacts=(yield this.apiService.getEmergencyAccessGranted()).data}))}premiumRequired(){return i(this,void 0,void 0,(function*(){this.canAccessPremium||this.messagingService.send("premiumRequired")}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(d.EmergencyAccessAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.emergencyAccessId=null==e?void 0:e.id,n.readOnly=!this.canAccessPremium,n.onSaved.subscribe((()=>{t.close(),this.load()})),n.onDeleted.subscribe((()=>{t.close(),this.remove(e)}))}))}))}invite(){this.edit(null)}reinvite(e){return i(this,void 0,void 0,(function*(){null==this.actionPromise&&(this.actionPromise=this.apiService.postEmergencyAccessReinvite(e.id),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenReinvited",e.email)),this.actionPromise=null)}))}confirm(e){return i(this,void 0,void 0,(function*(){function t(){e.status=o.EmergencyAccessStatusType.Confirmed}if(null!=this.actionPromise)return;const n=yield this.stateService.getAutoConfirmFingerPrints();if(null!=n&&n)this.actionPromise=this.doConfirmation(e),yield this.actionPromise,t(),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e))),this.actionPromise=null;else{const[n]=yield this.modalService.openViewRef(p.EmergencyAccessConfirmComponent,this.confirmModalRef,(r=>{r.name=this.userNamePipe.transform(e),r.emergencyAccessId=e.id,r.userId=null==e?void 0:e.granteeId,r.onConfirmed.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),r.formPromise=this.doConfirmation(e),yield r.formPromise,t(),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e)))}))))}))}}))}remove(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeUserConfirmation"),this.userNamePipe.transform(e),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteEmergencyAccess(e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.userNamePipe.transform(e))),e instanceof c.EmergencyAccessGranteeDetailsResponse?this.removeGrantee(e):this.removeGrantor(e)}catch(t){this.logService.error(t)}}))}requestAccess(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("requestAccessConfirmation",e.waitTimeDays.toString()),this.userNamePipe.transform(e),this.i18nService.t("requestAccess"),this.i18nService.t("no"),"warning")))return!1;yield this.apiService.postEmergencyAccessInitiate(e.id),e.status=o.EmergencyAccessStatusType.RecoveryInitiated,this.platformUtilsService.showToast("success",null,this.i18nService.t("requestSent",this.userNamePipe.transform(e)))}))}approve(e){return i(this,void 0,void 0,(function*(){const t=this.i18nService.t(e.type===a.EmergencyAccessType.View?"view":"takeover");if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("approveAccessConfirmation",this.userNamePipe.transform(e),t),this.userNamePipe.transform(e),this.i18nService.t("approve"),this.i18nService.t("no"),"warning")))return!1;yield this.apiService.postEmergencyAccessApprove(e.id),e.status=o.EmergencyAccessStatusType.RecoveryApproved,this.platformUtilsService.showToast("success",null,this.i18nService.t("emergencyApproved",this.userNamePipe.transform(e)))}))}reject(e){return i(this,void 0,void 0,(function*(){yield this.apiService.postEmergencyAccessReject(e.id),e.status=o.EmergencyAccessStatusType.Confirmed,this.platformUtilsService.showToast("success",null,this.i18nService.t("emergencyRejected",this.userNamePipe.transform(e)))}))}takeover(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(u.EmergencyAccessTakeoverComponent,this.takeoverModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.email=e.email,n.emergencyAccessId=null!=e?e.id:null,n.onDone.subscribe((()=>{t.close(),this.platformUtilsService.showToast("success",null,this.i18nService.t("passwordResetFor",this.userNamePipe.transform(e)))}))}))}))}removeGrantee(e){const t=this.trustedContacts.indexOf(e);t>-1&&this.trustedContacts.splice(t,1)}removeGrantor(e){const t=this.grantedContacts.indexOf(e);t>-1&&this.grantedContacts.splice(t,1)}doConfirmation(e){return i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.getEncKey(),n=yield this.apiService.getUserPublicKey(e.granteeId),i=s.Utils.fromB64ToArray(n.publicKey);try{this.logService.debug("User's fingerprint: "+(yield this.cryptoService.getFingerprint(e.granteeId,i.buffer)).join("-"))}catch(a){}const r=yield this.cryptoService.rsaEncrypt(t.key,i.buffer),o=new l.EmergencyAccessConfirmRequest;o.key=r.encryptedString,yield this.apiService.postEmergencyAccessConfirm(e.id,o)}))}}t.EmergencyAccessComponent=ue,ue.ɵfac=function(e){return new(e||ue)(m.ɵɵdirectiveInject(h.ApiService),m.ɵɵdirectiveInject(v.I18nService),m.ɵɵdirectiveInject(g.ModalService),m.ɵɵdirectiveInject(f.PlatformUtilsService),m.ɵɵdirectiveInject(y.CryptoService),m.ɵɵdirectiveInject(x.MessagingService),m.ɵɵdirectiveInject(S.UserNamePipe),m.ɵɵdirectiveInject(b.LogService),m.ɵɵdirectiveInject(w.StateService),m.ɵɵdirectiveInject(C.OrganizationService))},ue.ɵcmp=m.ɵɵdefineComponent({type:ue,selectors:[["emergency-access"]],viewQuery:function(e,t){if(1&e&&(m.ɵɵviewQuery(B,7,r.ViewContainerRef),m.ɵɵviewQuery(D,7,r.ViewContainerRef),m.ɵɵviewQuery(R,7,r.ViewContainerRef)),2&e){let e;m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.addEditModalRef=e.first),m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.takeoverModalRef=e.first),m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.confirmModalRef=e.first)}},decls:59,vars:24,consts:[[1,"page-header"],["href","https://bitwarden.com/help/emergency-access/","target","_blank","rel","noopener"],[4,"ngIf"],[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"page-header","spaced-header"],["addEdit",""],["takeoverTemplate",""],["confirmTemplate",""],[1,"table","table-hover","table-list","mb-0"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","badge badge-success",4,"ngIf"],["class","badge badge-primary",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-warning","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"badge","badge-success"],[1,"badge","badge-primary"],[1,"text-muted","d-block"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["href","#","appStopClick","",1,"dropdown-item","text-warning",3,"click"],["class","dropdown-item",3,"routerLink",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"],[1,"dropdown-item",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-eye"]],template:function(e,t){1&e&&(m.ɵɵelementStart(0,"div",0),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"h1"),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(5,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementStart(7,"p"),m.ɵɵtext(8),m.ɵɵpipe(9,"i18n"),m.ɵɵelementStart(10,"a",1),m.ɵɵtext(11),m.ɵɵpipe(12,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(14,"\n\n"),m.ɵɵtemplate(15,F,7,6,"p",2),m.ɵɵtext(16,"\n\n"),m.ɵɵelementStart(17,"div",3),m.ɵɵtext(18,"\n "),m.ɵɵelementStart(19,"h2"),m.ɵɵtext(20),m.ɵɵpipe(21,"i18n"),m.ɵɵelement(22,"app-premium-badge"),m.ɵɵtext(23,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(24,"\n "),m.ɵɵelementStart(25,"div",4),m.ɵɵtext(26,"\n "),m.ɵɵelementStart(27,"button",5),m.ɵɵlistener("click",(function(){return t.invite()})),m.ɵɵtext(28,"\n "),m.ɵɵelement(29,"i",6),m.ɵɵtext(30),m.ɵɵpipe(31,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(32,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(33,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(34,"\n\n"),m.ɵɵtemplate(35,$,7,1,"table",7),m.ɵɵtext(36,"\n\n"),m.ɵɵtemplate(37,Y,3,3,"p",2),m.ɵɵtext(38,"\n\n"),m.ɵɵelementStart(39,"div",8),m.ɵɵtext(40,"\n "),m.ɵɵelementStart(41,"h2"),m.ɵɵtext(42),m.ɵɵpipe(43,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(44,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(45,"\n\n"),m.ɵɵtemplate(46,se,7,1,"table",7),m.ɵɵtext(47,"\n\n"),m.ɵɵtemplate(48,le,3,3,"p",2),m.ɵɵtext(49,"\n\n"),m.ɵɵtemplate(50,ce,0,0,"ng-template",null,9,m.ɵɵtemplateRefExtractor),m.ɵɵtext(52,"\n"),m.ɵɵtemplate(53,de,0,0,"ng-template",null,10,m.ɵɵtemplateRefExtractor),m.ɵɵtext(55,"\n"),m.ɵɵtemplate(56,pe,0,0,"ng-template",null,11,m.ɵɵtemplateRefExtractor),m.ɵɵtext(58,"\n")),2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(4,12,"emergencyAccess")),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(9,14,"emergencyAccessDesc"),"\n "),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(12,16,"learnMore"),".\n "),m.ɵɵadvance(4),m.ɵɵproperty("ngIf",t.isOrganizationOwner),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(21,18,"trustedEmergencyContacts"),"\n "),m.ɵɵadvance(7),m.ɵɵproperty("disabled",!t.canAccessPremium),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(31,20,"addEmergencyContact"),"\n "),m.ɵɵadvance(5),m.ɵɵproperty("ngIf",t.trustedContacts&&t.trustedContacts.length),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",!t.trustedContacts||!t.trustedContacts.length),m.ɵɵadvance(5),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(43,22,"designatedEmergencyContacts")),m.ɵɵadvance(4),m.ɵɵproperty("ngIf",t.grantedContacts&&t.grantedContacts.length),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",!t.grantedContacts||!t.grantedContacts.length))},directives:[I.NgIf,E.PremiumBadgeComponent,I.NgForOf,P.AvatarComponent,O.StopClickDirective,k.A11yTitleDirective,A.RouterLinkWithHref],pipes:[T.I18nPipe,M.UserNamePipe],encapsulation:2})},19733:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAddEditComponent=void 0;n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344);const r=n(41141),o=n(32621),a=n(45330),s=n(88308),l=n(51554),c=n(73828),d=n(42982),p=n(73569),u=n(3174),m=n(52344),h=n(84275),v=n(45552),g=n(32034),f=n(62166),y=n(44809),x=n(63513),S=n(36631),b=n(96832),w=n(56820),C=n(8863),I=n(57490),E=n(95746),P=n(51626),O=n(45728),k=n(48198),A=n(1142),T=n(48403),M=n(99729);function B(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",26),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function D(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function R(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",27),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"select",28),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.type=t})),o.ɵɵtext(9,"\n "),o.ɵɵtemplate(10,D,2,2,"option",29),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,4,"whatTypeOfItem")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.typeOptions)}}function F(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function U(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",17),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",31),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"select",32),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.folderId=t})),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,F,2,2,"option",29),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,4,"folder")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.folders)}}function V(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",41),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelement(5,"i",44),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(3,1,"copyUsername")))}function N(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",57),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(4).generatePassword()})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",58),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}2&e&&o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,1,"generatePassword"))}function _(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",51),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,N,5,3,"a",52),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"a",53,54),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).checkPassword()})),o.ɵɵpipe(6,"i18n"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",55),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"i",56),o.ɵɵpipe(11,"i18n"),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(5),t=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher.viewPassword),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(6,6,"checkPassword")),o.ɵɵproperty("appApiAction",t.checkPasswordPromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(11,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function j(e,t){1&e&&o.ɵɵelement(0,"app-premium-badge",62)}function z(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",63),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(4).upgradeOrganization()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function H(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"img",59),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵtemplate(5,j,1,0,"app-premium-badge",60),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,z,3,3,"a",61),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"verificationCodeTotp")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const L=function(e){return{"stroke-dashoffset.px":e}};function K(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",64),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span",65),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"span",66),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵnamespaceSVG(),o.ɵɵelementStart(7,"svg"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"g"),o.ɵɵtext(10,"\n "),o.ɵɵelement(11,"circle",67),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"circle",68),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵnamespaceHTML(),o.ɵɵelementStart(18,"span",69),o.ɵɵpipe(19,"i18n"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"button",70),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),o.ɵɵpipe(23,"i18n"),o.ɵɵtext(24,"\n "),o.ɵɵelement(25,"i",71),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.totpSec),o.ɵɵadvance(6),o.ɵɵproperty("ngStyle",o.ɵɵpureFunction1(9,L,e.totpDash)),o.ɵɵadvance(7),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(19,5,"verificationCodeTotp")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.totpCodeFormatted),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function q(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function G(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",82),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(4).removeUri(t)})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",83),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}2&e&&o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,1,"remove"))}function W(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",73),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",74),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",34),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"input",75),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.uri=t})),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",41),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",42),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).launch(t)})),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"i",76),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"button",50),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),o.ɵɵpipe(22,"i18n"),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"i",44),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",77),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"div",37),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"label",74),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"a",78),o.ɵɵpipe(39,"i18n"),o.ɵɵtext(40,"\n "),o.ɵɵelement(41,"i",79),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"div",37),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"select",80),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).loginUriMatchChanged(t)})),o.ɵɵtext(48,"\n "),o.ɵɵtemplate(49,q,2,2,"option",29),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵtemplate(52,G,5,3,"button",81),o.ɵɵtext(53,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=o.ɵɵnextContext(4);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("for","loginUri",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(6,19,"uriPosition",n+1)),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate1("id","loginUri",n,""),o.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(11,22,"ex")," https://google.com"),o.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,24,"launch")),o.ɵɵproperty("disabled",!e.canLaunch),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(22,26,"copyUri")),o.ɵɵadvance(13),o.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(39,30,"learnMore")),o.ɵɵadvance(9),o.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),o.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),o.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",i.uriMatchOptions),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function $(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,W,56,32,"div",72),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function Y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",84),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).addUri()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",85),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const Q=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},J=function(e){return{low:e}};function Z(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",33),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"div",34),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"input",35),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.username=t})),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,V,8,3,"div",36),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",17),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",37),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",38),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,_,14,10,"div",39),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",34),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"input",40),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.password=t})),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"div",41),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).togglePassword()})),o.ɵɵpipe(36,"i18n"),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"i",43),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),o.ɵɵpipe(42,"i18n"),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"i",44),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"div",16),o.ɵɵtext(52,"\n "),o.ɵɵelementStart(53,"div",17),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"label",45),o.ɵɵtext(56),o.ɵɵpipe(57,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n "),o.ɵɵelementStart(59,"input",46),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.totp=t})),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelementStart(62,"div",47),o.ɵɵtext(63,"\n "),o.ɵɵtemplate(64,H,9,5,"div",21),o.ɵɵtext(65,"\n "),o.ɵɵtemplate(66,K,28,11,"div",48),o.ɵɵtext(67,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(69,"\n "),o.ɵɵtemplate(70,$,4,2,"ng-container",21),o.ɵɵtext(71,"\n "),o.ɵɵtemplate(72,Y,5,3,"a",49),o.ɵɵtext(73,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,23,"username")),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.isDeleted),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,25,"password")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(36,27,"toggleVisibility")),o.ɵɵproperty("disabled",!e.cipher.viewPassword),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(33,Q,!e.showPassword,e.showPassword)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(42,29,"copyPassword")),o.ɵɵproperty("disabled",!e.cipher.viewPassword),o.ɵɵadvance(15),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(36,J,e.totpLow)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.cipher.login.hasUris),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function X(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function ee(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function te(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",86),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"input",87),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.cardholderName=t})),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",17),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"label",88),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"select",89),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.brand=t})),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,X,2,2,"option",29),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",16),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",17),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"label",90),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"div",34),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"input",91),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.number=t})),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",41),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleCardNumber()})),o.ɵɵpipe(41,"i18n"),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",43),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementStart(46,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),o.ɵɵpipe(47,"i18n"),o.ɵɵtext(48,"\n "),o.ɵɵelement(49,"i",44),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"div",92),o.ɵɵtext(56,"\n "),o.ɵɵelementStart(57,"label",93),o.ɵɵtext(58),o.ɵɵpipe(59,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementStart(61,"select",94),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.expMonth=t})),o.ɵɵtext(62,"\n "),o.ɵɵtemplate(63,ee,2,2,"option",29),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementStart(67,"div",92),o.ɵɵtext(68,"\n "),o.ɵɵelementStart(69,"label",95),o.ɵɵtext(70),o.ɵɵpipe(71,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementStart(73,"input",96),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.expYear=t})),o.ɵɵpipe(74,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(75,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(76,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(77,"\n "),o.ɵɵelementStart(78,"div",16),o.ɵɵtext(79,"\n "),o.ɵɵelementStart(80,"div",17),o.ɵɵtext(81,"\n "),o.ɵɵelementStart(82,"label",97),o.ɵɵtext(83),o.ɵɵpipe(84,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(85,"\n "),o.ɵɵelementStart(86,"div",34),o.ɵɵtext(87,"\n "),o.ɵɵelementStart(88,"input",98),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.code=t})),o.ɵɵelementEnd(),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"div",41),o.ɵɵtext(91,"\n "),o.ɵɵelementStart(92,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleCardCode()})),o.ɵɵpipe(93,"i18n"),o.ɵɵtext(94,"\n "),o.ɵɵelement(95,"i",43),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),o.ɵɵpipe(99,"i18n"),o.ɵɵtext(100,"\n "),o.ɵɵelement(101,"i",44),o.ɵɵtext(102,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(103,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(104,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(105,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(106,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(107,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,29,"cardholderName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,31,"brand")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cardBrandOptions),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,33,"number")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(41,35,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(51,Q,!e.showCardNumber,e.showCardNumber)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(47,37,"copyNumber")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(59,39,"expirationMonth")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cardExpMonthOptions),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(71,41,"expirationYear")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(74,43,"ex")," 2019"),o.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(84,45,"securityCode")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(93,47,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(54,Q,!e.showCardCode,e.showCardCode)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(99,49,"securityCode"))}}function ne(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ie(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",99),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",100),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"select",101),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.title=t})),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,ne,2,2,"option",29),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",16),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",99),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",102),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"input",103),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.firstName=t})),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",99),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"label",104),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"input",105),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.middleName=t})),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"div",99),o.ɵɵtext(38,"\n "),o.ɵɵelementStart(39,"label",106),o.ɵɵtext(40),o.ɵɵpipe(41,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"input",107),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.lastName=t})),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"div",16),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",99),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"label",108),o.ɵɵtext(52),o.ɵɵpipe(53,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"input",109),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.username=t})),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"div",99),o.ɵɵtext(59,"\n "),o.ɵɵelementStart(60,"label",110),o.ɵɵtext(61),o.ɵɵpipe(62,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementStart(64,"input",111),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.company=t})),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n "),o.ɵɵelementStart(68,"div",16),o.ɵɵtext(69,"\n "),o.ɵɵelementStart(70,"div",99),o.ɵɵtext(71,"\n "),o.ɵɵelementStart(72,"label",112),o.ɵɵtext(73),o.ɵɵpipe(74,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(75,"\n "),o.ɵɵelementStart(76,"input",113),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.ssn=t})),o.ɵɵelementEnd(),o.ɵɵtext(77,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(78,"\n "),o.ɵɵelementStart(79,"div",99),o.ɵɵtext(80,"\n "),o.ɵɵelementStart(81,"label",114),o.ɵɵtext(82),o.ɵɵpipe(83,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(84,"\n "),o.ɵɵelementStart(85,"input",115),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.passportNumber=t})),o.ɵɵelementEnd(),o.ɵɵtext(86,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(87,"\n "),o.ɵɵelementStart(88,"div",99),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"label",116),o.ɵɵtext(91),o.ɵɵpipe(92,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(93,"\n "),o.ɵɵelementStart(94,"input",117),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),o.ɵɵelementEnd(),o.ɵɵtext(95,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"div",16),o.ɵɵtext(99,"\n "),o.ɵɵelementStart(100,"div",17),o.ɵɵtext(101,"\n "),o.ɵɵelementStart(102,"label",118),o.ɵɵtext(103),o.ɵɵpipe(104,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(105,"\n "),o.ɵɵelementStart(106,"input",119),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.email=t})),o.ɵɵelementEnd(),o.ɵɵtext(107,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(108,"\n "),o.ɵɵelementStart(109,"div",17),o.ɵɵtext(110,"\n "),o.ɵɵelementStart(111,"label",120),o.ɵɵtext(112),o.ɵɵpipe(113,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(114,"\n "),o.ɵɵelementStart(115,"input",121),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.phone=t})),o.ɵɵelementEnd(),o.ɵɵtext(116,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(117,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(118,"\n "),o.ɵɵelementStart(119,"div",16),o.ɵɵtext(120,"\n "),o.ɵɵelementStart(121,"div",17),o.ɵɵtext(122,"\n "),o.ɵɵelementStart(123,"label",122),o.ɵɵtext(124),o.ɵɵpipe(125,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(126,"\n "),o.ɵɵelementStart(127,"input",123),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address1=t})),o.ɵɵelementEnd(),o.ɵɵtext(128,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(129,"\n "),o.ɵɵelementStart(130,"div",17),o.ɵɵtext(131,"\n "),o.ɵɵelementStart(132,"label",124),o.ɵɵtext(133),o.ɵɵpipe(134,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(135,"\n "),o.ɵɵelementStart(136,"input",125),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address2=t})),o.ɵɵelementEnd(),o.ɵɵtext(137,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(138,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(139,"\n "),o.ɵɵelementStart(140,"div",16),o.ɵɵtext(141,"\n "),o.ɵɵelementStart(142,"div",17),o.ɵɵtext(143,"\n "),o.ɵɵelementStart(144,"label",126),o.ɵɵtext(145),o.ɵɵpipe(146,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(147,"\n "),o.ɵɵelementStart(148,"input",127),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address3=t})),o.ɵɵelementEnd(),o.ɵɵtext(149,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(150,"\n "),o.ɵɵelementStart(151,"div",17),o.ɵɵtext(152,"\n "),o.ɵɵelementStart(153,"label",128),o.ɵɵtext(154),o.ɵɵpipe(155,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(156,"\n "),o.ɵɵelementStart(157,"input",129),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.city=t})),o.ɵɵelementEnd(),o.ɵɵtext(158,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(159,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(160,"\n "),o.ɵɵelementStart(161,"div",16),o.ɵɵtext(162,"\n "),o.ɵɵelementStart(163,"div",17),o.ɵɵtext(164,"\n "),o.ɵɵelementStart(165,"label",130),o.ɵɵtext(166),o.ɵɵpipe(167,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(168,"\n "),o.ɵɵelementStart(169,"input",131),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.state=t})),o.ɵɵelementEnd(),o.ɵɵtext(170,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(171,"\n "),o.ɵɵelementStart(172,"div",17),o.ɵɵtext(173,"\n "),o.ɵɵelementStart(174,"label",132),o.ɵɵtext(175),o.ɵɵpipe(176,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(177,"\n "),o.ɵɵelementStart(178,"input",133),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.postalCode=t})),o.ɵɵelementEnd(),o.ɵɵtext(179,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(180,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(181,"\n "),o.ɵɵelementStart(182,"div",16),o.ɵɵtext(183,"\n "),o.ɵɵelementStart(184,"div",17),o.ɵɵtext(185,"\n "),o.ɵɵelementStart(186,"label",134),o.ɵɵtext(187),o.ɵɵpipe(188,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(189,"\n "),o.ɵɵelementStart(190,"input",135),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.country=t})),o.ɵɵelementEnd(),o.ɵɵtext(191,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(192,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(193,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,55,"title")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.identityTitleOptions),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,57,"firstName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,59,"middleName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(41,61,"lastName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(53,63,"username")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(62,65,"company")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(74,67,"ssn")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(83,69,"passportNumber")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(92,71,"licenseNumber")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(104,73,"email")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(113,75,"phone")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(125,77,"address1")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(134,79,"address2")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(146,81,"address3")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(155,83,"cityTown")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(167,85,"stateProvince")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(176,87,"zipPostalCode")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(188,89,"country")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function re(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function oe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",137),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",138),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"select",139),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).organizationChanged()})),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,re,2,2,"option",29),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,5,"ownership")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.ownershipOptions)}}function ae(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function se(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",141),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",142),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.checked=t})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",143),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=o.ɵɵnextContext(4);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("id","collection-",n,""),o.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),o.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("for","collection-",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function le(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,se,7,6,"div",140),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.collections)}}function ce(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,ae,3,3,"div",21),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,le,4,1,"ng-container",21),o.ɵɵtext(9,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"collections")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.collections||!e.collections.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function de(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"b",145),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5),o.ɵɵpipe(6,"date"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function pe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"b",145),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"a",146),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).viewHistory()})),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(4,3,"passwordHistory"),":"),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,5,"view")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function ue(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"date"),o.ɵɵelementStart(3,"span",148),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate(e.password)}}function me(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",62),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,ue,6,5,"div",147),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function he(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",144),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"b",145),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9),o.ɵɵpipe(10,"date"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,de,7,7,"div",21),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,pe,10,7,"div",21),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,me,4,1,"div",60),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(8,5,"dateUpdated"),":"),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.showRevisionDate),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasPasswordHistory),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function ve(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",141),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"input",149),o.ɵɵlistener("change",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).repromptChanged()})),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",150),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"a",151),o.ɵɵpipe(15,"i18n"),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"i",79),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,5,"options")),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,7,"passwordPrompt")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(15,9,"learnMore"))}}function ge(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,B,3,3,"app-callout",14),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,R,14,6,"div",15),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",17),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().cipher.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,U,11,6,"div",20),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,Z,74,38,"ng-container",21),o.ɵɵtext(22,"\n "),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,te,108,57,"ng-container",21),o.ɵɵtext(25,"\n "),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,ie,194,91,"ng-container",21),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",22),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"label",23),o.ɵɵtext(32),o.ɵɵpipe(33,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"textarea",24),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().cipher.notes=t})),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),o.ɵɵtext(39,"\n "),o.ɵɵtemplate(40,oe,21,9,"ng-container",21),o.ɵɵtext(41,"\n "),o.ɵɵtemplate(42,ce,10,5,"ng-container",21),o.ɵɵtext(43,"\n "),o.ɵɵtemplate(44,he,19,10,"ng-container",21),o.ɵɵtext(45,"\n "),o.ɵɵtemplate(46,ve,21,11,"ng-container",21),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,20,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.organization),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(33,22,"notes")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.canUseReprompt)}}function fe(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",152),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",153),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(),t=o.ɵɵreference(5);o.ɵɵproperty("disabled",t.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const ye=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function xe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",70),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleFavorite()})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",43),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(4,ye,e.cipher.favorite,!e.cipher.favorite))}}function Se(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",157,158),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).delete()})),o.ɵɵpipe(2,"i18n"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",159),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",160),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),o.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function be(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",154),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,xe,5,7,"button",155),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,Se,9,10,"button",156),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class we extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,i,r,o,a,s,l,c,d,p,m,h,u),this.originalCipher=null,this.viewOnly=!0}load(){return i(this,void 0,void 0,(function*(){this.title=this.i18nService.t("viewItem")}))}loadCipher(){return i(this,void 0,void 0,(function*(){return Promise.resolve(this.originalCipher)}))}}t.EmergencyAddEditComponent=we,we.ɵfac=function(e){return new(e||we)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.FolderService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.AuditService),o.ɵɵdirectiveInject(p.StateService),o.ɵɵdirectiveInject(u.CollectionService),o.ɵɵdirectiveInject(m.TotpService),o.ɵɵdirectiveInject(h.PasswordGenerationService),o.ɵɵdirectiveInject(v.MessagingService),o.ɵɵdirectiveInject(g.EventService),o.ɵɵdirectiveInject(f.PolicyService),o.ɵɵdirectiveInject(y.PasswordRepromptService),o.ɵɵdirectiveInject(x.OrganizationService),o.ɵɵdirectiveInject(S.LogService))},we.ɵcmp=o.ɵɵdefineComponent({type:we,selectors:[["app-org-vault-add-edit"]],features:[o.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",6),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",7),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,ge,48,24,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",9),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,fe,9,7,"button",10),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"button",11),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵtemplate(30,be,6,2,"div",12),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(t.title),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,7,"close")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[b.NgControlStatusGroup,b.NgForm,w.ApiActionDirective,C.A11yTitleDirective,I.NgIf,b.DefaultValueAccessor,b.RequiredValidator,b.NgControlStatus,b.NgModel,E.AddEditCustomFieldsComponent,P.CalloutComponent,b.SelectControlValueAccessor,O.AutofocusDirective,I.NgForOf,b.NgSelectOption,b.ɵNgSelectMultipleOption,k.InputVerbatimDirective,I.NgClass,A.StopClickDirective,T.PremiumBadgeComponent,I.NgStyle,b.CheckboxControlValueAccessor],pipes:[M.I18nPipe,I.DatePipe],encapsulation:2})},28360:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationPlansComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(85714),n(51554),n(36631),n(45552),n(63513),n(73828),n(62166),n(9724),n(98523)),a=n(47937),s=n(49906),l=n(96066),c=n(7017),d=n(39950),p=n(80006),u=n(16567),m=n(17337),h=n(41799),v=n(32621),g=n(91674),f=n(51554),y=n(73828),x=n(85714),S=n(68012),b=n(9724),w=n(62166),C=n(63513),I=n(36631),E=n(45552),P=n(57490),O=n(96832),k=n(56820),A=n(41799),T=n(17337),M=n(51626),B=n(99729);function D(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",2),v.ɵɵpipe(3,"i18n"),v.ɵɵtext(4,"\n "),v.ɵɵelementStart(5,"span",3),v.ɵɵtext(6),v.ɵɵpipe(7,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(8,"\n"),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(3,2,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(7,4,"loading")))}function R(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"p"),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"form",4,5),v.ɵɵlistener("ngSubmit",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().submit()})),v.ɵɵtext(8,"\n "),v.ɵɵelementStart(9,"div",6),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"label",7),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵelement(15,"input",8),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"small",9),v.ɵɵtext(18),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(21,"\n "),v.ɵɵelementStart(22,"button",10),v.ɵɵtext(23,"\n "),v.ɵɵelement(24,"i",11),v.ɵɵpipe(25,"i18n"),v.ɵɵtext(26,"\n "),v.ɵɵelementStart(27,"span"),v.ɵɵtext(28),v.ɵɵpipe(29,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(30,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n"),v.ɵɵelementContainerEnd()}if(2&e){const e=v.ɵɵreference(7),t=v.ɵɵnextContext();v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,7,"uploadLicenseFileOrg")),v.ɵɵadvance(3),v.ɵɵproperty("appApiAction",t.formPromise),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(13,9,"licenseFile")),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(19,11,"licenseFileDesc","bitwarden_organization_license.json")),v.ɵɵadvance(4),v.ɵɵproperty("disabled",e.loading),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(25,14,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(29,16,"submit"))}}function F(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",19),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"label",25),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"input",26),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).clientOwnerEmail=t})),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"small",27),v.ɵɵtext(9),v.ɵɵpipe(10,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(11,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,3,"clientOwnerEmail")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.clientOwnerEmail),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(10,5,"clientOwnerDesc","20"))}}function U(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",20),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",21),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).name=t})),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"div",19),v.ɵɵtext(12,"\n "),v.ɵɵelementStart(13,"label",22),v.ɵɵtext(14),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"input",23),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).billingEmail=t})),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(19,"\n "),v.ɵɵtemplate(20,F,12,8,"div",24),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,5,"organizationName")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.name),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(15,7,"billingEmail")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.billingEmail),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",!!e.providerId)}}function V(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",31),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",32),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).businessName=t})),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,2,"businessName")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.businessName)}}function N(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div"),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",28),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"input",29),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).ownedBusiness=t}))("change",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedOwnedBusiness()})),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"label",30),v.ɵɵtext(7),v.ɵɵpipe(8,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,V,11,4,"div",13),v.ɵɵtext(12,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(4),v.ɵɵproperty("ngModel",e.ownedBusiness),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(8,3,"accountOwnedBusiness")),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",e.ownedBusiness)}}function _(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"onPremHostingOptional"),""))}function j(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"includeSsoAuthentication"),""))}function z(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"includeEnterprisePolicies"),""))}function H(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("•\n ",v.ɵɵpipeBind2(2,1,"xDayFreeTrial",e.trialPeriodDays),"\n ")}}function L(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"small"),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵtemplate(6,_,3,3,"small",0),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,j,3,3,"small",0),v.ɵɵtext(9,"\n "),v.ɵɵtemplate(10,z,3,3,"small",0),v.ɵɵtext(11,"\n "),v.ɵɵtemplate(12,H,3,4,"small",0),v.ɵɵtext(13,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(3),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(4,5,"includeAllTeamsFeatures"),""),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.hasSelfHost),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasSso),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPolicies),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.trialPeriodDays&&t.createOrganization)}}function K(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"limitedUsers",e.maxUsers),"")}}function q(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"addShareLimitedUsers",e.maxUsers),"")}}function G(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"addShareUnlimitedUsers"),""))}function W(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"limitedCollections",e.maxCollections),"")}}function $(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"addShareLimitedUsers",e.maxAdditionalSeats),"")}}function Y(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"createUnlimitedCollections"),""))}function Q(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"gbEncryptedFileStorage",e.baseStorageGb+"GB"),"")}}function J(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"controlAccessWithGroups"),""))}function Z(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"trackAuditLogs"),""))}function X(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"syncUsersFromDirectory"),""))}function ee(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"onPremHostingOptional"),""))}function te(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"usersGetPremium"),""))}function ne(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"priorityCustomerSupport"),""))}function ie(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("•\n ",v.ɵɵpipeBind2(2,1,"xDayFreeTrial",e.trialPeriodDays),"\n ")}}function re(e,t){if(1&e&&(v.ɵɵtext(0,"\n "),v.ɵɵtemplate(1,K,3,4,"small",0),v.ɵɵtext(2,"\n "),v.ɵɵtemplate(3,q,3,4,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,G,3,3,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,W,3,4,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,$,3,4,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,Y,3,3,"small",0),v.ɵɵtext(12,"\n "),v.ɵɵtemplate(13,Q,3,4,"small",0),v.ɵɵtext(14,"\n "),v.ɵɵtemplate(15,J,3,3,"small",0),v.ɵɵtext(16,"\n "),v.ɵɵtemplate(17,Z,3,3,"small",0),v.ɵɵtext(18,"\n "),v.ɵɵtemplate(19,X,3,3,"small",0),v.ɵɵtext(20,"\n "),v.ɵɵtemplate(21,ee,3,3,"small",0),v.ɵɵtext(22,"\n "),v.ɵɵtemplate(23,te,3,3,"small",0),v.ɵɵtext(24,"\n "),v.ɵɵtemplate(25,ne,3,3,"small",0),v.ɵɵtext(26,"\n "),v.ɵɵtemplate(27,ie,3,4,"small",0),v.ɵɵtext(28,"\n ")),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(1),v.ɵɵproperty("ngIf",e.product==t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product!=t.productTypes.Free&&e.maxUsers),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.maxUsers),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.maxCollections),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.maxAdditionalSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.maxCollections),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseStorageGb),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasGroups),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasApi),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasDirectory),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasSelfHost),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.usersGetPremium),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product!=t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.trialPeriodDays&&t.createOrganization)}}function oe(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind1(2,3,"additionalUsers").toLowerCase(),"\n ",v.ɵɵpipeBind2(3,5,e.seatPrice/12,"$")," /",v.ɵɵpipeBind1(4,8,"month"),"\n ")}}function ae(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"currency"),v.ɵɵpipe(3,"i18n"),v.ɵɵpipe(4,"i18n"),v.ɵɵtemplate(5,oe,5,10,"ng-container",0),v.ɵɵtext(6,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind2(2,4,e.basePrice/12,"$")," /",v.ɵɵpipeBind1(3,7,"month"),",\n ",v.ɵɵpipeBind2(4,9,"includesXUsers",e.baseSeats),"\n "),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption)}}function se(e,t){if(1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,ae,7,12,"ng-container",0),v.ɵɵtext(3,"\n "),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice&&!t.acceptingSponsorship)}}function le(e,t){if(1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext().$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind2(2,2,"costPerUser",v.ɵɵpipeBind2(3,5,e.seatPrice/12,"$"))," /",v.ɵɵpipeBind1(4,8,"month"),"\n ")}}function ce(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(2,1,"freeForever")))}function de(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",33),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"input",34),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).product=t}))("change",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedProduct()})),v.ɵɵelementEnd(),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",35),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementStart(7,"small",36),v.ɵɵtext(8),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,L,14,7,"ng-container",37),v.ɵɵtext(12,"\n "),v.ɵɵtemplate(13,re,29,14,"ng-template",null,38,v.ɵɵtemplateRefExtractor),v.ɵɵtext(15,"\n "),v.ɵɵtemplate(16,se,4,1,"span",0),v.ɵɵtext(17,"\n "),v.ɵɵtemplate(18,le,5,10,"span",0),v.ɵɵtext(19,"\n "),v.ɵɵtemplate(20,ce,3,3,"span",0),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(22,"\n "),v.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=v.ɵɵreference(14),i=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("id","product",e.product,""),v.ɵɵproperty("value",e.product)("ngModel",i.product),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("for","product",e.product,""),v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,11,e.nameLocalizationKey),"\n "),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(9,13,e.descriptionLocalizationKey,"1")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.product===i.productTypes.Enterprise)("ngIfElse",n),v.ɵɵadvance(5),v.ɵɵproperty("ngIf",e.product!=i.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.basePrice&&e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product==i.productTypes.Free)}}function pe(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"h2",12),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"div",18),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",52),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"label",53),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"input",54),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).additionalSeats=t})),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"small",41),v.ɵɵtext(18),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(22,"\n "),v.ɵɵelementContainerEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,5,"users")),v.ɵɵadvance(8),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,7,"userSeats")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(15,9,"userSeatsDesc")),v.ɵɵproperty("ngModel",e.additionalSeats),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(19,11,"userSeatsHowManyDesc"))}}function ue(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",53),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",55),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).additionalSeats=t})),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"small",41),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵpipe(14,"currency"),v.ɵɵelementEnd(),v.ɵɵtext(15,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,4,"additionalUserSeats")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(9,6,"userSeatsDesc")),v.ɵɵproperty("ngModel",e.additionalSeats),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind3(13,8,"userSeatsAdditionalDesc",e.selectedPlan.baseSeats,v.ɵɵpipeBind2(14,12,e.seatPriceMonthly(e.selectedPlan),"$")))}}function me(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",19),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",56),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"input",57),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).premiumAccessAddon=t})),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"label",58),v.ɵɵtext(7),v.ɵɵpipe(8,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"small",41),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵpipe(14,"currency"),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(4),v.ɵɵproperty("ngModel",e.premiumAccessAddon),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(8,3,"premiumAccess")),v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind3(13,5,"premiumAccessDesc",v.ɵɵpipeBind2(14,9,3.33,"$"),v.ɵɵpipeBind1(15,12,"month")))}}function he(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"span",61),v.ɵɵtext(3),v.ɵɵpipe(4,"currency"),v.ɵɵelementEnd(),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(4,2,e.basePrice,"$")),v.ɵɵadvance(2),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,5,"freeWithSponsorship"),"\n ")}}function ve(e,t){if(1&e&&(v.ɵɵtext(0),v.ɵɵpipe(1,"currency"),v.ɵɵpipe(2,"i18n")),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind2(1,2,e.basePrice,"$"),"\n /",v.ɵɵpipeBind1(2,5,"year"),"\n ")}}function ge(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵtemplate(5,he,7,7,"ng-container",37),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,ve,3,7,"ng-template",null,60,v.ɵɵtemplateRefExtractor),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd()),2&e){const e=v.ɵɵreference(8),t=v.ɵɵnextContext(2).$implicit,n=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind1(2,5,"basePrice"),": ",v.ɵɵpipeBind2(3,7,t.basePrice/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n "),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",n.acceptingSponsorship)("ngIfElse",e)}}function fe(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"additionalUsers"),":"))}function ye(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"users"),":"))}function xe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,fe,3,3,"span",0),v.ɵɵtext(3,"\n "),v.ɵɵtemplate(4,ye,3,3,"span",0),v.ɵɵtext(5),v.ɵɵpipe(6,"currency"),v.ɵɵpipe(7,"i18n"),v.ɵɵpipe(8,"currency"),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.baseSeats),v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",t.additionalSeats||0," ×\n ",v.ɵɵpipeBind2(6,7,e.seatPrice/12,"$")," × 12\n ",v.ɵɵpipeBind1(7,10,"monthAbbr")," = ",v.ɵɵpipeBind2(8,12,t.seatTotal(e),"$")," /",v.ɵɵpipeBind1(9,15,"year"),"\n ")}}function Se(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate6("\n ",v.ɵɵpipeBind1(2,6,"additionalStorageGb"),": ",t.additionalStorage||0," ×\n ",v.ɵɵpipeBind2(3,8,e.additionalStoragePricePerGb/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,11,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,13,t.additionalStorageTotal(e),"$")," /",v.ɵɵpipeBind1(6,16,"year"),"\n ")}}function be(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"premiumAccess"),":\n ",v.ɵɵpipeBind2(3,7,e.premiumAccessOptionCost/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n ",v.ɵɵpipeBind2(5,12,40,"$"),"\n /",v.ɵɵpipeBind1(6,15,"year"),"\n ")}}function we(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵtemplate(3,ge,10,12,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,xe,10,17,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,Se,7,18,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,be,7,17,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,5,"annually"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalStorageOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPremiumAccessOption&&t.premiumAccessAddon)}}function Ce(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"basePrice"),": ",v.ɵɵpipeBind2(3,7,e.basePrice,"$"),"\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n ",v.ɵɵpipeBind2(5,12,e.basePrice,"$"),"\n /",v.ɵɵpipeBind1(6,15,"month"),"\n ")}}function Ie(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"additionalUsers"),":"))}function Ee(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"users"),":"))}function Pe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,Ie,3,3,"span",0),v.ɵɵtext(3,"\n "),v.ɵɵtemplate(4,Ee,3,3,"span",0),v.ɵɵtext(5),v.ɵɵpipe(6,"currency"),v.ɵɵpipe(7,"i18n"),v.ɵɵpipe(8,"currency"),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.baseSeats),v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",t.additionalSeats||0," × ",v.ɵɵpipeBind2(6,7,e.seatPrice,"$"),"\n ",v.ɵɵpipeBind1(7,10,"monthAbbr")," = ",v.ɵɵpipeBind2(8,12,t.seatTotal(e),"$")," /",v.ɵɵpipeBind1(9,15,"month"),"\n ")}}function Oe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate6("\n ",v.ɵɵpipeBind1(2,6,"additionalStorageGb"),": ",t.additionalStorage||0," ×\n ",v.ɵɵpipeBind2(3,8,e.additionalStoragePricePerGb,"$"),"\n ",v.ɵɵpipeBind1(4,11,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,13,t.additionalStorageTotal(e),"$")," /",v.ɵɵpipeBind1(6,16,"month"),"\n ")}}function ke(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"premiumAccess"),":\n ",v.ɵɵpipeBind2(3,7,e.premiumAccessOptionCost,"$")," ",v.ɵɵpipeBind1(4,10,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,12,40,"$"),"\n /",v.ɵɵpipeBind1(6,15,"month"),"\n ")}}function Ae(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵtemplate(3,Ce,7,17,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,Pe,10,17,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,Oe,7,18,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,ke,7,17,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,5,"monthly"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalStorageOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPremiumAccessOption&&t.premiumAccessAddon)}}function Te(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",33),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"input",59),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).plan=t})),v.ɵɵelementEnd(),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",35),v.ɵɵtext(5,"\n "),v.ɵɵtemplate(6,we,11,7,"ng-container",0),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,Ae,11,7,"ng-container",0),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("id","interval",e.type,""),v.ɵɵproperty("value",e.type)("ngModel",n.plan),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("for","interval",e.type,""),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.isAnnual),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.isAnnual)}}function Me(e,t){1&e&&v.ɵɵelement(0,"app-payment",62),2&e&&v.ɵɵproperty("hideCredit",!0)}function Be(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"app-payment",63),v.ɵɵtext(3,"\n "),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵproperty("showMethods",!1))}function De(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,pe,23,13,"ng-container",0),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"h2",12),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,ue,17,15,"div",13),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"div",18),v.ɵɵtext(11,"\n "),v.ɵɵelementStart(12,"div",19),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"label",39),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementStart(18,"input",40),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).additionalStorage=t})),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"small",41),v.ɵɵtext(22),v.ɵɵpipe(23,"i18n"),v.ɵɵpipe(24,"currency"),v.ɵɵpipe(25,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(26,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(27,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(28,"\n "),v.ɵɵelementStart(29,"div",18),v.ɵɵtext(30,"\n "),v.ɵɵtemplate(31,me,17,14,"div",24),v.ɵɵtext(32,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(33,"\n "),v.ɵɵelementStart(34,"h2",42),v.ɵɵtext(35),v.ɵɵpipe(36,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(37,"\n "),v.ɵɵtemplate(38,Te,11,6,"div",14),v.ɵɵtext(39,"\n "),v.ɵɵelement(40,"hr",43),v.ɵɵtext(41,"\n "),v.ɵɵelementStart(42,"h2",44),v.ɵɵtext(43),v.ɵɵpipe(44,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(45,"\n "),v.ɵɵelementStart(46,"small",45),v.ɵɵtext(47),v.ɵɵelementEnd(),v.ɵɵtext(48,"\n "),v.ɵɵtemplate(49,Me,1,1,"app-payment",46),v.ɵɵtext(50,"\n "),v.ɵɵelementStart(51,"app-tax-info",47),v.ɵɵlistener("onCountryChanged",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedCountry()})),v.ɵɵelementEnd(),v.ɵɵtext(52,"\n "),v.ɵɵelementStart(53,"div",48),v.ɵɵtext(54,"\n "),v.ɵɵelementStart(55,"div",49),v.ɵɵtext(56),v.ɵɵpipe(57,"i18n"),v.ɵɵpipe(58,"currency"),v.ɵɵelement(59,"br"),v.ɵɵtext(60,"\n "),v.ɵɵelementContainerStart(61),v.ɵɵtext(62),v.ɵɵpipe(63,"i18n"),v.ɵɵpipe(64,"currency"),v.ɵɵelementContainerEnd(),v.ɵɵtext(65,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(66,"\n "),v.ɵɵelement(67,"hr",50),v.ɵɵtext(68,"\n "),v.ɵɵelementStart(69,"p",51),v.ɵɵtext(70,"\n "),v.ɵɵelementStart(71,"strong"),v.ɵɵtext(72),v.ɵɵpipe(73,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(74),v.ɵɵpipe(75,"currency"),v.ɵɵpipe(76,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(77,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(78,"\n "),v.ɵɵtemplate(79,Be,4,1,"ng-container",0),v.ɵɵtext(80,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.selectedPlan.hasAdditionalSeatsOption&&!e.selectedPlan.baseSeats),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,21,"addons")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.selectedPlan.hasAdditionalSeatsOption&&e.selectedPlan.baseSeats),v.ɵɵadvance(7),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(16,23,"additionalStorageGb")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(19,25,"additionalStorageGbDesc")),v.ɵɵproperty("ngModel",e.additionalStorage),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind4(23,27,"additionalStorageIntervalDesc","1 GB",v.ɵɵpipeBind2(24,32,e.additionalStoragePriceMonthly(e.selectedPlan),"$"),v.ɵɵpipeBind1(25,35,"month"))),v.ɵɵadvance(9),v.ɵɵproperty("ngIf",e.selectedPlan.hasPremiumAccessOption),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(36,37,"summary")),v.ɵɵadvance(3),v.ɵɵproperty("ngForOf",e.selectablePlans),v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(44,39,e.createOrganization?"paymentInformation":"billingInformation"),"\n "),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",e.paymentDesc,"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.createOrganization),v.ɵɵadvance(7),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind1(57,41,"planPrice"),": ",v.ɵɵpipeBind2(58,43,e.subtotal,"USD $"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind1(63,46,"estimatedTax"),": ",v.ɵɵpipeBind2(64,48,e.taxCharges,"USD $"),"\n "),v.ɵɵadvance(10),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(73,51,"total"),":"),v.ɵɵadvance(2),v.ɵɵtextInterpolate2(" ",v.ɵɵpipeBind2(75,53,e.total,"USD $"),"/",v.ɵɵpipeBind1(76,56,e.selectedPlanInterval),"\n "),v.ɵɵadvance(5),v.ɵɵproperty("ngIf",!e.createOrganization)}}function Re(e,t){1&e&&(v.ɵɵelementStart(0,"div",16),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"app-callout",64),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵproperty("type","error"),v.ɵɵadvance(1),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,2,"singleOrgBlockCreateMessage")))}function Fe(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"button",65),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).cancel()})),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function Ue(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"form",4,5),v.ɵɵlistener("ngSubmit",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().submit()})),v.ɵɵtext(2,"\n "),v.ɵɵelementStart(3,"h2",12),v.ɵɵtext(4),v.ɵɵpipe(5,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,U,22,9,"div",13),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,N,13,5,"div",0),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"h2",12),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵtemplate(15,de,23,16,"div",14),v.ɵɵtext(16,"\n "),v.ɵɵtemplate(17,De,81,58,"div",0),v.ɵɵtext(18,"\n "),v.ɵɵtemplate(19,Re,6,4,"div",15),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"div",16),v.ɵɵtext(22,"\n "),v.ɵɵelementStart(23,"button",10),v.ɵɵtext(24,"\n "),v.ɵɵelement(25,"i",11),v.ɵɵpipe(26,"i18n"),v.ɵɵtext(27,"\n "),v.ɵɵelementStart(28,"span"),v.ɵɵtext(29),v.ɵɵpipe(30,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n "),v.ɵɵtemplate(33,Fe,3,3,"button",17),v.ɵɵtext(34,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(35,"\n"),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵreference(1),t=v.ɵɵnextContext();v.ɵɵproperty("appApiAction",t.formPromise),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(5,12,"generalInformation")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",t.createOrganization),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!t.providerId&&!t.acceptingSponsorship),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(13,14,"chooseYourPlan")),v.ɵɵadvance(3),v.ɵɵproperty("ngForOf",t.selectableProducts),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.product!==t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.singleOrgPolicyBlock),v.ɵɵadvance(4),v.ɵɵproperty("disabled",e.loading),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(26,16,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(30,18,"submit")),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",t.showCancel)}}class Ve{constructor(e,t,n,i,o,s,c,d,p,u){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.router=o,this.syncService=s,this.policyService=c,this.organizationService=d,this.logService=p,this.messagingService=u,this.showFree=!0,this.showCancel=!1,this.acceptingSponsorship=!1,this.product=l.ProductType.Free,this.plan=a.PlanType.Free,this.onSuccess=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.loading=!0,this.selfHosted=!1,this.ownedBusiness=!1,this.premiumAccessAddon=!1,this.additionalStorage=0,this.additionalSeats=0,this.productTypes=l.ProductType,this.singleOrgPolicyBlock=!1,this.discount=0,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){if(!this.selfHosted){const e=yield this.apiService.getPlans();this.plans=e.data,this.product!==l.ProductType.Enterprise&&this.product!==l.ProductType.Teams||(this.ownedBusiness=!0)}this.providerId&&(this.ownedBusiness=!0,this.changedOwnedBusiness()),this.loading=!1}))}get createOrganization(){return null==this.organizationId}get selectedPlan(){return this.plans.find((e=>e.type===this.plan))}get selectedPlanInterval(){return this.selectedPlan.isAnnual?"year":"month"}get selectableProducts(){let e=this.plans.filter((e=>e.type!==a.PlanType.Custom));if(this.ownedBusiness&&(e=e.filter((e=>e.canBeUsedByBusiness))),this.showFree||(e=e.filter((e=>e.product!==l.ProductType.Free))),e=e.filter((e=>!e.legacyYear&&!e.disabled&&(e.isAnnual||e.product===this.productTypes.Free))),this.acceptingSponsorship){const t=this.plans.find((e=>e.type===a.PlanType.FamiliesAnnually));this.discount=t.basePrice,e=[t]}return e}get selectablePlans(){return this.plans.filter((e=>!e.legacyYear&&!e.disabled&&e.product===this.product))}additionalStoragePriceMonthly(e){return e.isAnnual?e.additionalStoragePricePerGb/12:e.additionalStoragePricePerGb}seatPriceMonthly(e){return e.isAnnual?e.seatPrice/12:e.seatPrice}additionalStorageTotal(e){return e.hasAdditionalStorageOption?e.additionalStoragePricePerGb*Math.abs(this.additionalStorage||0):0}seatTotal(e){return e.hasAdditionalSeatsOption?e.seatPrice*Math.abs(this.additionalSeats||0):0}get subtotal(){let e=this.selectedPlan.basePrice;return this.selectedPlan.hasAdditionalSeatsOption&&this.additionalSeats&&(e+=this.seatTotal(this.selectedPlan)),this.selectedPlan.hasAdditionalStorageOption&&this.additionalStorage&&(e+=this.additionalStorageTotal(this.selectedPlan)),this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon&&(e+=this.selectedPlan.premiumAccessOptionPrice),e-this.discount}get freeTrial(){return null!=this.selectedPlan.trialPeriodDays}get taxCharges(){return null!=this.taxComponent&&null!=this.taxComponent.taxRate?this.taxComponent.taxRate/100*this.subtotal:0}get total(){return this.subtotal+this.taxCharges||0}get paymentDesc(){return this.acceptingSponsorship?this.i18nService.t("paymentSponsored"):this.freeTrial&&this.createOrganization?this.i18nService.t("paymentChargedWithTrial"):this.i18nService.t("paymentCharged",this.i18nService.t(this.selectedPlanInterval))}changedProduct(){this.plan=this.selectablePlans[0].type,this.selectedPlan.hasPremiumAccessOption||(this.premiumAccessAddon=!1),this.selectedPlan.hasAdditionalStorageOption||(this.additionalStorage=0),this.selectedPlan.hasAdditionalSeatsOption?this.additionalSeats||this.selectedPlan.baseSeats||!this.selectedPlan.hasAdditionalSeatsOption||(this.additionalSeats=1):this.additionalSeats=0}changedOwnedBusiness(){this.ownedBusiness&&!this.selectedPlan.canBeUsedByBusiness&&(this.product=l.ProductType.Teams,this.plan=a.PlanType.TeamsAnnually)}changedCountry(){this.paymentComponent.hideBank="US"!==this.taxComponent.taxInfo.country,this.paymentComponent.hideBank&&this.paymentComponent.method===o.PaymentMethodType.BankAccount&&(this.paymentComponent.method=o.PaymentMethodType.Card,this.paymentComponent.changeMethod())}cancel(){this.onCanceled.emit()}submit(){return i(this,void 0,void 0,(function*(){if(this.singleOrgPolicyBlock=yield this.userHasBlockingSingleOrgPolicy(),!this.singleOrgPolicyBlock)try{const e=()=>i(this,void 0,void 0,(function*(){let e=null;if(this.createOrganization){const t=yield this.cryptoService.makeShareKey(),n=t[0].encryptedString,i=(yield this.cryptoService.encrypt(this.i18nService.t("defaultCollection"),t[1])).encryptedString,r=yield this.cryptoService.makeKeyPair(t[1]);e=this.selfHosted?yield this.createSelfHosted(n,i,r):yield this.createCloudHosted(n,i,r,t[1]),this.platformUtilsService.showToast("success",this.i18nService.t("organizationCreated"),this.i18nService.t("organizationReadyToGo"))}else e=yield this.updateOrganization(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationUpgraded"));return yield this.apiService.refreshIdentityToken(),yield this.syncService.fullSync(!0),this.acceptingSponsorship||this.router.navigate(["/organizations/"+e]),e}));this.formPromise=e();const t=yield this.formPromise;this.onSuccess.emit({organizationId:t}),this.messagingService.send("organizationCreated",t)}catch(e){this.logService.error(e)}}))}userHasBlockingSingleOrgPolicy(){return i(this,void 0,void 0,(function*(){return this.policyService.policyAppliesToUser(s.PolicyType.SingleOrg)}))}updateOrganization(e){return i(this,void 0,void 0,(function*(){const e=new p.OrganizationUpgradeRequest;e.businessName=this.ownedBusiness?this.businessName:null,e.additionalSeats=this.additionalSeats,e.additionalStorageGb=this.additionalStorage,e.premiumAccessAddon=this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon,e.planType=this.selectedPlan.type,e.billingAddressCountry=this.taxComponent.taxInfo.country,e.billingAddressPostalCode=this.taxComponent.taxInfo.postalCode;if(!(yield this.organizationService.get(this.organizationId)).hasPublicAndPrivateKeys){const t=yield this.cryptoService.getOrgKey(this.organizationId),n=yield this.cryptoService.makeKeyPair(t);e.keys=new d.OrganizationKeysRequest(n[0],n[1].encryptedString)}const t=yield this.apiService.postOrganizationUpgrade(this.organizationId,e);return t.success||null==t.paymentIntentClientSecret||(yield this.paymentComponent.handleStripeCardPayment(t.paymentIntentClientSecret,null)),this.organizationId}))}createCloudHosted(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=new c.OrganizationCreateRequest;if(i.key=e,i.collectionName=t,i.name=this.name,i.billingEmail=this.billingEmail,i.keys=new d.OrganizationKeysRequest(n[0],n[1].encryptedString),this.selectedPlan.type===a.PlanType.Free)i.planType=a.PlanType.Free;else{const e=yield this.paymentComponent.createPaymentToken();i.paymentToken=e[0],i.paymentMethodType=e[1],i.businessName=this.ownedBusiness?this.businessName:null,i.additionalSeats=this.additionalSeats,i.additionalStorageGb=this.additionalStorage,i.premiumAccessAddon=this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon,i.planType=this.selectedPlan.type,i.billingAddressPostalCode=this.taxComponent.taxInfo.postalCode,i.billingAddressCountry=this.taxComponent.taxInfo.country,this.taxComponent.taxInfo.includeTaxId&&(i.taxIdNumber=this.taxComponent.taxInfo.taxId,i.billingAddressLine1=this.taxComponent.taxInfo.line1,i.billingAddressLine2=this.taxComponent.taxInfo.line2,i.billingAddressCity=this.taxComponent.taxInfo.city,i.billingAddressState=this.taxComponent.taxInfo.state)}if(this.providerId){const e=new u.ProviderOrganizationCreateRequest(this.clientOwnerEmail,i),t=yield this.cryptoService.getProviderKey(this.providerId);e.organizationCreateRequest.key=(yield this.cryptoService.encrypt(r.key,t)).encryptedString;return(yield this.apiService.postProviderCreateOrganization(this.providerId,e)).organizationId}return(yield this.apiService.postOrganization(i)).id}))}createSelfHosted(e,t,n){return i(this,void 0,void 0,(function*(){const i=document.getElementById("file").files;if(null==i||0===i.length)throw new Error(this.i18nService.t("selectFile"));const r=new FormData;r.append("license",i[0]),r.append("key",e),r.append("collectionName",t);const o=(yield this.apiService.postOrganizationLicense(r)).id,a=new d.OrganizationKeysRequest(n[0],n[1].encryptedString);return yield this.apiService.postOrganizationKeys(o,a),o}))}}t.OrganizationPlansComponent=Ve,Ve.ɵfac=function(e){return new(e||Ve)(v.ɵɵdirectiveInject(g.ApiService),v.ɵɵdirectiveInject(f.I18nService),v.ɵɵdirectiveInject(y.PlatformUtilsService),v.ɵɵdirectiveInject(x.CryptoService),v.ɵɵdirectiveInject(S.Router),v.ɵɵdirectiveInject(b.SyncService),v.ɵɵdirectiveInject(w.PolicyService),v.ɵɵdirectiveInject(C.OrganizationService),v.ɵɵdirectiveInject(I.LogService),v.ɵɵdirectiveInject(E.MessagingService))},Ve.ɵcmp=v.ɵɵdefineComponent({type:Ve,selectors:[["app-organization-plans"]],viewQuery:function(e,t){if(1&e&&(v.ɵɵviewQuery(m.PaymentComponent,5),v.ɵɵviewQuery(h.TaxInfoComponent,5)),2&e){let e;v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.paymentComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.taxComponent=e.first)}},inputs:{organizationId:"organizationId",showFree:"showFree",showCancel:"showCancel",acceptingSponsorship:"acceptingSponsorship",product:"product",plan:"plan",providerId:"providerId"},outputs:{onSuccess:"onSuccess",onCanceled:"onCanceled"},decls:6,vars:3,consts:[[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"mt-5"],["class","row",4,"ngIf"],["class","form-check form-check-block",4,"ngFor","ngForOf"],["class","mt-4",4,"ngIf"],[1,"mt-4"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail","required","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-group col-6",4,"ngIf"],["for","email"],["id","email","type","text","name","Email","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"text-muted"],[1,"form-group","form-check"],["id","ownedBusiness","type","checkbox","name","OwnedBusiness",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","ownedBusiness",1,"form-check-label"],["for","businessName"],["id","businessName","type","text","name","BusinessName",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-check","form-check-block"],["type","radio","name","product",1,"form-check-input",3,"id","value","ngModel","ngModelChange","change"],[1,"form-check-label",3,"for"],[1,"mb-1"],[4,"ngIf","ngIfElse"],["fullFeatureList",""],["for","additionalStorage"],["id","additionalStorage","type","number","name","AdditionalStorageGb","min","0","max","99","step","1",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"text-muted","form-text"],[1,"spaced-header"],[1,"my-3"],[1,"spaced-header","mb-4"],[1,"text-muted","font-italic","mb-3","d-block"],[3,"hideCredit",4,"ngIf"],[3,"onCountryChanged"],["id","price",1,"my-4"],[1,"text-muted","text-sm"],[1,"my-1","col-3","ml-0"],[1,"text-lg"],[1,"col-6"],["for","additionalSeats"],["id","additionalSeats","type","number","name","AdditionalSeats","min","1","max","100000","required","",1,"form-control",3,"ngModel","placeholder","ngModelChange"],["id","additionalSeats","type","number","name","AdditionalSeats","min","0","max","100000",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"form-check"],["id","premiumAccess","type","checkbox","name","PremiumAccessAddon",1,"form-check-input",3,"ngModel","ngModelChange"],["for","premiumAccess",1,"form-check-label","bold"],["type","radio","name","BillingInterval",1,"form-check-input",3,"id","value","ngModel","ngModelChange"],["notAcceptingSponsorship",""],[2,"text-decoration","line-through"],[3,"hideCredit"],[3,"showMethods"],[3,"type"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(v.ɵɵtemplate(0,D,9,6,"ng-container",0),v.ɵɵtext(1,"\n"),v.ɵɵtemplate(2,R,33,18,"ng-container",0),v.ɵɵtext(3,"\n"),v.ɵɵtemplate(4,Ue,36,20,"form",1),v.ɵɵtext(5,"\n")),2&e&&(v.ɵɵproperty("ngIf",t.loading),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.createOrganization&&t.selfHosted),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!t.loading&&!t.selfHosted&&t.plans))},directives:[P.NgIf,O.NgControlStatusGroup,O.NgForm,k.ApiActionDirective,P.NgForOf,O.DefaultValueAccessor,O.RequiredValidator,O.NgControlStatus,O.NgModel,O.CheckboxControlValueAccessor,O.RadioControlValueAccessor,O.MinValidator,O.MaxValidator,O.NumberValueAccessor,A.TaxInfoComponent,T.PaymentComponent,M.CalloutComponent],pipes:[B.I18nPipe,P.CurrencyPipe],encapsulation:2})},88691:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentMethodComponent=void 0;n(68012),n(91674),n(51554),n(73828);const r=n(98523),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(68012),d=n(57490),p=n(52767),u=n(449),m=n(55732),h=n(99729),v=function(e){return{"bwi-spin":e}};function g(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",3),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().load()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(5,v,e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function f(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",12),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).addCredit()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"addCredit"),"\n "))}function x(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"app-add-credit",13),o.ɵɵlistener("onAdded",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closeAddCredit(!0)}))("onCanceled",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closeAddCredit(!1)})),o.ɵɵtext(1,"\n "),o.ɵɵelementEnd()}}function S(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noPaymentMethod")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"span"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"inAppPurchase")))}const w=function(e,t,n,i,r,o){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-money":n,"bwi-paypal text-primary":i,"bwi-apple text-muted":r,"bwi-google text-muted":o}};function C(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"p"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",14),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,3,3,"span",2),o.ɵɵtext(7),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngClass",o.ɵɵpureFunction6(3,w,e.paymentSource.type===e.paymentMethodType.Card,e.paymentSource.type===e.paymentMethodType.BankAccount,e.paymentSource.type===e.paymentMethodType.Check,e.paymentSource.type===e.paymentMethodType.PayPal,e.paymentSource.type===e.paymentMethodType.AppleInApp,e.paymentSource.type===e.paymentMethodType.GoogleInApp)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.paymentSourceInApp),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.paymentSource.description,"\n ")}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",12),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).changePayment()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,e.paymentSource?"changePaymentMethod":"addPaymentMethod"),"\n ")}}function E(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"app-adjust-payment",15),o.ɵɵlistener("onAdjusted",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closePayment(!0)}))("onCanceled",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closePayment(!1)})),o.ɵɵtext(1,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵproperty("currentType",null!=e.paymentSource?e.paymentSource.type:null)}}function P(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h2"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",7),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"strong"),o.ɵɵtext(9),o.ɵɵpipe(10,"currency"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"p"),o.ɵɵtext(14),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,y,3,3,"button",8),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,x,2,0,"app-add-credit",9),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"h2",10),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,S,3,3,"p",2),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,C,9,10,"ng-container",2),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,I,3,3,"button",8),o.ɵɵtext(30,"\n "),o.ɵɵtemplate(31,E,2,1,"app-adjust-payment",11),o.ɵɵtext(32,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,10,e.isCreditBalance?"accountCredit":"accountBalance")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(10,12,e.creditOrBalance,"$")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(15,15,"creditAppliedDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.showAddCredit),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showAddCredit),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,17,"paymentMethod")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.paymentSource),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.paymentSource),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.showAdjustPayment),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showAdjustPayment)}}class O{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.loading=!1,this.firstLoaded=!1,this.showAdjustPayment=!1,this.showAddCredit=!1,this.paymentMethodType=r.PaymentMethodType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.platformUtilsService.isSelfHost()&&this.router.navigate(["/settings/subscription"]),yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,this.billing=yield this.apiService.getUserBillingPayment(),this.loading=!1)}))}addCredit(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("addCredit"),null,null,"warning"):this.showAddCredit=!0}closeAddCredit(e){this.showAddCredit=!1,e&&this.load()}changePayment(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("changePaymentMethod"),null,null,"warning"):this.showAdjustPayment=!0}closePayment(e){this.showAdjustPayment=!1,e&&this.load()}get isCreditBalance(){return null==this.billing||this.billing.balance<=0}get creditOrBalance(){return Math.abs(null!=this.billing?this.billing.balance:0)}get paymentSource(){return null!=this.billing?this.billing.paymentSource:null}get paymentSourceInApp(){return null!=this.paymentSource&&(this.paymentSource.type===r.PaymentMethodType.AppleInApp||this.paymentSource.type===r.PaymentMethodType.GoogleInApp)}}t.PaymentMethodComponent=O,O.ɵfac=function(e){return new(e||O)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.Router))},O.ɵcmp=o.ɵɵdefineComponent({type:O,selectors:[["app-payment-method"]],decls:13,vars:6,consts:[[1,"tabbed-header","d-flex"],["bit-button","","buttonType","secondary","class","tw-ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],["bit-button","","buttonType","secondary",1,"tw-ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"text-lg"],["bit-button","","buttonType","secondary",3,"click",4,"ngIf"],[3,"onAdded","onCanceled",4,"ngIf"],[1,"spaced-header"],[3,"currentType","onAdjusted","onCanceled",4,"ngIf"],["bit-button","","buttonType","secondary",3,"click"],[3,"onAdded","onCanceled"],[1,"bwi","bwi-fw",3,"ngClass"],[3,"currentType","onAdjusted","onCanceled"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,g,5,7,"button",1),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵtemplate(9,f,9,6,"ng-container",2),o.ɵɵtext(10,"\n"),o.ɵɵtemplate(11,P,33,19,"ng-container",2),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,4,"paymentMethod"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.firstLoaded),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.billing))},directives:[d.NgIf,p.ButtonComponent,d.NgClass,u.AddCreditComponent,m.AdjustPaymentComponent],pipes:[h.I18nPipe,d.CurrencyPipe],encapsulation:2})},17337:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentComponent=void 0;n(91674),n(36631),n(73828);const r=n(98523),o=n(14538),a=n(83706),s=n(32621),l=n(73828),c=n(91674),d=n(36631),p=n(57490),u=n(96832),m=n(8863),h=n(51626),v=n(48198),g=n(99729);function f(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",3),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",9),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",10),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",11),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.BankAccount)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(8,3,"bankAccount"),"")}}function y(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",13),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",15),s.ɵɵtext(7," PayPal"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.PayPal)("ngModel",e.method)}}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",16),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",17),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",18),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.Credit)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(8,3,"accountCredit"),"")}}function S(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",2),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",3),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",4),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",5),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",6),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,f,10,5,"div",7),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,y,9,2,"div",8),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,x,10,5,"div",8),s.ɵɵtext(18,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("value",e.paymentMethodType.Card)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(10,6,"creditCard"),""),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!e.hideBank),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.hidePaypal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.hideCredit)}}function b(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",19),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",20),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",21),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"div",22),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",23),s.ɵɵtext(14,"\n "),s.ɵɵelement(15,"img",24),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",20),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",25),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelement(24,"div",26),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",20),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",27),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"label",28),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"a",29),s.ɵɵpipe(36,"i18n"),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"i",30),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelement(42,"div",31),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,4,"number")),s.ɵɵadvance(14),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,6,"expiration")),s.ɵɵadvance(11),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(33,8,"securityCode"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(36,10,"learnMore")))}function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",32),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",19),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",33),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"label",34),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.routing_number=t})),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",33),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",36),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",37),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_number=t})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",33),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",38),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",39),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_holder_name=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",33),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"label",40),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"select",41),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_holder_type=t})),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"option",42),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"option",43),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"option",44),s.ɵɵtext(54),s.ɵɵpipe(55,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,14,"verifyBankAccount")),s.ɵɵadvance(2),s.ɵɵtextInterpolate2("\n ",s.ɵɵpipeBind1(5,16,"verifyBankAccountInitialDesc")," ",s.ɵɵpipeBind1(6,18,"verifyBankAccountFailureWarning"),"\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,20,"routingNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.routing_number),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,22,"accountNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_number),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,24,"accountHolderName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_holder_name),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,26,"bankAccountType")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_holder_type),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("-- ",s.ɵɵpipeBind1(47,28,"select")," --"),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(51,30,"bankAccountTypeCompany")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(55,32,"bankAccountTypeIndividual"))}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",45),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"div",46),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"small",47),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,1,"paypalClickSubmit")))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",48),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"makeSureEnoughCredit"),"\n "))}const E=a.default.lightInputColor,P=a.default.lightInputPlaceholderColor,O=a.default.darkInputColor,k=a.default.darkInputPlaceholderColor;class A{constructor(e,t,n){this.platformUtilsService=e,this.apiService=t,this.logService=n,this.showMethods=!0,this.showOptions=!0,this.method=r.PaymentMethodType.Card,this.hideBank=!1,this.hidePaypal=!1,this.hideCredit=!1,this.bank={routing_number:null,account_number:null,account_holder_name:null,account_holder_type:"",currency:"USD",country:"US"},this.paymentMethodType=r.PaymentMethodType,this.btInstance=null,this.stripe=null,this.stripeElements=null,this.stripeCardNumberElement=null,this.stripeCardExpiryElement=null,this.stripeCardCvcElement=null,this.stripeScript=window.document.createElement("script"),this.stripeScript.src="https://js.stripe.com/v3/",this.stripeScript.async=!0,this.stripeScript.onload=()=>{this.stripe=window.Stripe("pk_live_bpN0P37nMxrMQkcaHXtAybJk"),this.stripeElements=this.stripe.elements(),this.setStripeElement()},this.btScript=window.document.createElement("script"),this.btScript.src="scripts/dropin.js?cache=aqtaj",this.btScript.async=!0,this.StripeElementStyle={base:{color:null,fontFamily:'"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontSmoothing:"antialiased","::placeholder":{color:null}},invalid:{color:null}},this.StripeElementClasses={focus:"is-focused",empty:"is-empty",invalid:"is-invalid"}}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showOptions||(this.hidePaypal=this.method!==r.PaymentMethodType.PayPal,this.hideBank=this.method!==r.PaymentMethodType.BankAccount,this.hideCredit=this.method!==r.PaymentMethodType.Credit),yield this.setTheme(),window.document.head.appendChild(this.stripeScript),this.hidePaypal||window.document.head.appendChild(this.btScript)}))}ngOnDestroy(){window.document.head.removeChild(this.stripeScript),window.setTimeout((()=>{Array.from(window.document.querySelectorAll("iframe")).forEach((e=>{if(null!=e.src&&e.src.indexOf("stripe")>-1)try{window.document.body.removeChild(e)}catch(t){this.logService.error(t)}}))}),500),this.hidePaypal||(window.document.head.removeChild(this.btScript),window.setTimeout((()=>{Array.from(window.document.head.querySelectorAll("script")).forEach((e=>{if(null!=e.src&&e.src.indexOf("paypal")>-1)try{window.document.head.removeChild(e)}catch(t){this.logService.error(t)}}));const e=window.document.head.querySelector("#braintree-dropin-stylesheet");if(null!=e)try{window.document.head.removeChild(e)}catch(t){this.logService.error(t)}}),500))}changeMethod(){this.btInstance=null,this.method===r.PaymentMethodType.PayPal?window.setTimeout((()=>{window.braintree.dropin.create({authorization:"production_qfbsv8kc_njj2zjtyngtjmbjd",container:"#bt-dropin-container",paymentOptionPriority:["paypal"],paypal:{flow:"vault",buttonStyle:{label:"pay",size:"medium",shape:"pill",color:"blue",tagline:"false"}}},((e,t)=>{null==e?this.btInstance=t:console.error(e)}))}),250):this.setStripeElement()}createPaymentToken(){return new Promise(((e,t)=>{this.method===r.PaymentMethodType.Credit?e([null,this.method]):this.method===r.PaymentMethodType.PayPal?this.btInstance.requestPaymentMethod().then((t=>{e([t.nonce,this.method])})).catch((e=>{t(e.message)})):this.method!==r.PaymentMethodType.Card&&this.method!==r.PaymentMethodType.BankAccount||(this.method===r.PaymentMethodType.Card?this.apiService.postSetupPayment().then((e=>this.stripe.handleCardSetup(e,this.stripeCardNumberElement))).then((n=>{n.error?t(n.error.message):n.setupIntent&&"succeeded"===n.setupIntent.status?e([n.setupIntent.payment_method,this.method]):t()})):this.stripe.createToken("bank_account",this.bank).then((n=>{n.error?t(n.error.message):n.token&&null!=n.token.id?e([n.token.id,this.method]):t()})))}))}handleStripeCardPayment(e,t){return new Promise(((n,r)=>{if(this.showMethods&&null==this.stripeCardNumberElement)return void r();return(()=>this.showMethods?this.stripe.handleCardSetup(e,this.stripeCardNumberElement):this.stripe.handleCardSetup(e))().then((e=>i(this,void 0,void 0,(function*(){e.error?r(e.error.message):e.paymentIntent&&"succeeded"===e.paymentIntent.status?(null!=t&&(yield t()),n()):r()}))))}))}setStripeElement(){window.setTimeout((()=>{this.showMethods&&this.method===r.PaymentMethodType.Card&&(null==this.stripeCardNumberElement&&(this.stripeCardNumberElement=this.stripeElements.create("cardNumber",{style:this.StripeElementStyle,classes:this.StripeElementClasses,placeholder:""})),null==this.stripeCardExpiryElement&&(this.stripeCardExpiryElement=this.stripeElements.create("cardExpiry",{style:this.StripeElementStyle,classes:this.StripeElementClasses})),null==this.stripeCardCvcElement&&(this.stripeCardCvcElement=this.stripeElements.create("cardCvc",{style:this.StripeElementStyle,classes:this.StripeElementClasses,placeholder:""})),this.stripeCardNumberElement.mount("#stripe-card-number-element"),this.stripeCardExpiryElement.mount("#stripe-card-expiry-element"),this.stripeCardCvcElement.mount("#stripe-card-cvc-element"))}),50)}setTheme(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.getEffectiveTheme())===o.ThemeType.Dark?(this.StripeElementStyle.base.color=O,this.StripeElementStyle.base["::placeholder"].color=k,this.StripeElementStyle.invalid.color=O):(this.StripeElementStyle.base.color=E,this.StripeElementStyle.base["::placeholder"].color=P,this.StripeElementStyle.invalid.color=E)}))}}t.PaymentComponent=A,A.ɵfac=function(e){return new(e||A)(s.ɵɵdirectiveInject(l.PlatformUtilsService),s.ɵɵdirectiveInject(c.ApiService),s.ɵɵdirectiveInject(d.LogService))},A.ɵcmp=s.ɵɵdefineComponent({type:A,selectors:[["app-payment"]],inputs:{showMethods:"showMethods",showOptions:"showOptions",method:"method",hideBank:"hideBank",hidePaypal:"hidePaypal",hideCredit:"hideCredit"},decls:10,vars:5,consts:[["class","mb-4 text-lg",4,"ngIf"],[4,"ngIf"],[1,"mb-4","text-lg"],[1,"form-check","form-check-inline","mr-4"],["type","radio","name","Method","id","method-card",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-card",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-credit-card"],["class","form-check form-check-inline mr-4",4,"ngIf"],["class","form-check form-check-inline",4,"ngIf"],["type","radio","name","Method","id","method-bank",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-bank",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-bank"],[1,"form-check","form-check-inline"],["type","radio","name","Method","id","method-paypal",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-paypal",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paypal"],["type","radio","name","Method","id","method-credit",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-credit",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-dollar"],[1,"row"],[1,"form-group","col-4"],["for","stripe-card-number-element"],["id","stripe-card-number-element",1,"form-control","stripe-form-control"],[1,"form-group","col-8","d-flex","align-items-end"],["src","../../images/cards.png","alt","Visa, MasterCard, Discover, AmEx, JCB, Diners Club, UnionPay","width","323","height","32"],["for","stripe-card-expiry-element"],["id","stripe-card-expiry-element",1,"form-control","stripe-form-control"],[1,"d-flex"],["for","stripe-card-cvc-element"],["href","https://www.cvvnumber.com/cvv.html","tabindex","-1","target","_blank","rel","noopener noreferrer",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","stripe-card-cvc-element",1,"form-control","stripe-form-control"],["type","warning",3,"title"],[1,"form-group","col-6"],["for","routing_number"],["id","routing_number","type","text","name","routing_number","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_number"],["id","account_number","type","text","name","account_number","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_holder_name"],["id","account_holder_name","type","text","name","account_holder_name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_holder_type"],["id","account_holder_type","name","account_holder_type","required","",1,"form-control",3,"ngModel","ngModelChange"],["value",""],["value","company"],["value","individual"],[1,"mb-3"],["id","bt-dropin-container",1,"mb-1"],[1,"text-muted"],["type","note"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,S,19,8,"div",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,b,46,12,"ng-container",1),s.ɵɵtext(3,"\n"),s.ɵɵtemplate(4,w,60,34,"ng-container",1),s.ɵɵtext(5,"\n"),s.ɵɵtemplate(6,C,11,3,"ng-container",1),s.ɵɵtext(7,"\n"),s.ɵɵtemplate(8,I,6,3,"ng-container",1),s.ɵɵtext(9,"\n")),2&e&&(s.ɵɵproperty("ngIf",t.showOptions&&t.showMethods),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.Card),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.BankAccount),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.PayPal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.Credit))},directives:[p.NgIf,u.RadioControlValueAccessor,u.DefaultValueAccessor,u.NgControlStatus,u.NgModel,m.A11yTitleDirective,h.CalloutComponent,u.RequiredValidator,v.InputVerbatimDirective,u.SelectControlValueAccessor,u.NgSelectOption,u.ɵNgSelectMultipleOption],pipes:[g.I18nPipe],encapsulation:2})},28964:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PreferencesComponent=void 0;const r=n(96832),o=(n(51554),n(45552),n(73828),n(73569),n(82656),n(14538)),a=n(82769),s=n(32621),l=n(73569),c=n(51554),d=n(82656),p=n(73828),u=n(45552),m=n(96832),h=n(81397),v=n(8863),g=n(57490),f=n(99729);function y(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",31),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",31),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}class S{constructor(e,t,n,i,s){this.stateService=e,this.i18nService=t,this.vaultTimeoutService=n,this.platformUtilsService=i,this.messagingService=s,this.vaultTimeoutAction="lock",this.vaultTimeout=new r.FormControl(null),this.vaultTimeouts=[{name:t.t("oneMinute"),value:1},{name:t.t("fiveMinutes"),value:5},{name:t.t("fifteenMinutes"),value:15},{name:t.t("thirtyMinutes"),value:30},{name:t.t("oneHour"),value:60},{name:t.t("fourHours"),value:240},{name:t.t("onRefresh"),value:-1}],this.platformUtilsService.isDev()&&this.vaultTimeouts.push({name:t.t("never"),value:null});const l=[];t.supportedTranslationLocales.forEach((e=>{let n=e;t.localeNames.has(e)&&(n+=" - "+t.localeNames.get(e)),l.push({name:n,value:e})})),l.sort(a.Utils.getSortFunction(t,"name")),l.splice(0,0,{name:t.t("default"),value:null}),this.localeOptions=l,this.themeOptions=[{name:t.t("themeLight"),value:o.ThemeType.Light},{name:t.t("themeDark"),value:o.ThemeType.Dark},{name:t.t("themeSystem"),value:o.ThemeType.System}]}ngOnInit(){var e;return i(this,void 0,void 0,(function*(){this.vaultTimeout.setValue(yield this.vaultTimeoutService.getVaultTimeout()),this.vaultTimeoutAction=yield this.stateService.getVaultTimeoutAction(),this.disableIcons=yield this.stateService.getDisableFavicon(),this.enableGravatars=yield this.stateService.getEnableGravitars(),this.enableFullWidth=yield this.stateService.getEnableFullWidth(),this.locale=null!==(e=yield this.stateService.getLocale())&&void 0!==e?e:null,this.startingLocale=this.locale,this.theme=yield this.stateService.getTheme(),this.startingTheme=this.theme}))}submit(){return i(this,void 0,void 0,(function*(){if(this.vaultTimeout.valid){if(yield this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout.value,this.vaultTimeoutAction),yield this.stateService.setDisableFavicon(this.disableIcons),yield this.stateService.setEnableGravitars(this.enableGravatars),yield this.stateService.setEnableFullWidth(this.enableFullWidth),this.messagingService.send("setFullWidth"),this.theme!==this.startingTheme){yield this.stateService.setTheme(this.theme),this.startingTheme=this.theme;const e=yield this.platformUtilsService.getEffectiveTheme(),t=window.document.documentElement;t.classList.remove("theme_"+o.ThemeType.Light,"theme_"+o.ThemeType.Dark),t.classList.add("theme_"+e)}yield this.stateService.setLocale(this.locale),this.locale!==this.startingLocale?window.location.reload():this.platformUtilsService.showToast("success",null,this.i18nService.t("preferencesUpdated"))}else this.platformUtilsService.showToast("error",null,this.i18nService.t("vaultTimeoutToLarge"))}))}vaultTimeoutActionChanged(e){return i(this,void 0,void 0,(function*(){if("logOut"===e){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("vaultTimeoutLogOutConfirmation"),this.i18nService.t("vaultTimeoutLogOutConfirmationTitle"),this.i18nService.t("yes"),this.i18nService.t("cancel"),"warning")))return void(this.vaultTimeoutAction="lock")}this.vaultTimeoutAction=e}))}}t.PreferencesComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.StateService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.VaultTimeoutService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.MessagingService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-preferences"]],decls:173,vars:74,consts:[[1,"page-header"],["ngNativeValidate","",3,"ngSubmit"],[1,"row"],[1,"col-6"],["ngDefaultControl","",3,"vaultTimeouts","formControl"],[1,"form-group"],[1,"form-check","form-check-block"],["type","radio","name","vaultTimeoutAction","id","vaultTimeoutActionLock","value","lock",1,"form-check-input",3,"ngModel","ngModelChange"],["for","vaultTimeoutActionLock",1,"form-check-label"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","vaultTimeoutAction","id","vaultTimeoutActionLogOut","value","logOut",1,"form-check-input",3,"ngModel","ngModelChange"],["for","vaultTimeoutActionLogOut",1,"form-check-label"],[1,"d-flex"],["for","locale"],["href","https://bitwarden.com/help/localization/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","locale","name","Locale",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-text","text-muted"],[1,"form-check"],["type","checkbox","id","disableIcons","name","DisableIcons",1,"form-check-input",3,"ngModel","ngModelChange"],["for","disableIcons",1,"form-check-label"],["href","https://bitwarden.com/help/website-icons/","target","_blank","rel","noopener",3,"appA11yTitle"],["type","checkbox","id","enableGravatars","name","enableGravatars",1,"form-check-input",3,"ngModel","ngModelChange"],["for","enableGravatars",1,"form-check-label"],["href","https://gravatar.com/","target","_blank","rel","noopener",3,"appA11yTitle"],["type","checkbox","id","enableFullWidth","name","enableFullWidth",1,"form-check-input",3,"ngModel","ngModelChange"],["for","enableFullWidth",1,"form-check-label"],["for","theme"],["id","theme","name","theme",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary"],[3,"ngValue"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementStart(7,"p"),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n"),s.ɵɵelementStart(11,"form",1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",2),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",3),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"app-vault-timeout-input",4),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",5),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label"),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",6),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.vaultTimeoutAction=e})),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"label",8),s.ɵɵtext(33),s.ɵɵpipe(34,"i18n"),s.ɵɵelementStart(35,"small"),s.ɵɵtext(36),s.ɵɵpipe(37,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"div",9),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"input",10),s.ɵɵlistener("ngModelChange",(function(e){return t.vaultTimeoutAction=e}))("ngModelChange",(function(e){return t.vaultTimeoutActionChanged(e)})),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"label",11),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementStart(48,"small"),s.ɵɵtext(49),s.ɵɵpipe(50,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"div",2),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"div",3),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"div",5),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"div",12),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"label",13),s.ɵɵtext(64),s.ɵɵpipe(65,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"a",14),s.ɵɵpipe(68,"i18n"),s.ɵɵtext(69,"\n "),s.ɵɵelement(70,"i",15),s.ɵɵtext(71,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"select",16),s.ɵɵlistener("ngModelChange",(function(e){return t.locale=e})),s.ɵɵtext(75,"\n "),s.ɵɵtemplate(76,y,2,2,"option",17),s.ɵɵtext(77,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"small",18),s.ɵɵtext(80),s.ɵɵpipe(81,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(83,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(84,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"div",5),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"div",19),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"input",20),s.ɵɵlistener("ngModelChange",(function(e){return t.disableIcons=e})),s.ɵɵelementEnd(),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"label",21),s.ɵɵtext(93),s.ɵɵpipe(94,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(95,"\n "),s.ɵɵelementStart(96,"a",22),s.ɵɵpipe(97,"i18n"),s.ɵɵtext(98,"\n "),s.ɵɵelement(99,"i",15),s.ɵɵtext(100,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(101,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(102,"\n "),s.ɵɵelementStart(103,"small",18),s.ɵɵtext(104),s.ɵɵpipe(105,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementStart(108,"div",5),s.ɵɵtext(109,"\n "),s.ɵɵelementStart(110,"div",19),s.ɵɵtext(111,"\n "),s.ɵɵelementStart(112,"input",23),s.ɵɵlistener("ngModelChange",(function(e){return t.enableGravatars=e})),s.ɵɵelementEnd(),s.ɵɵtext(113,"\n "),s.ɵɵelementStart(114,"label",24),s.ɵɵtext(115),s.ɵɵpipe(116,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(117,"\n "),s.ɵɵelementStart(118,"a",25),s.ɵɵpipe(119,"i18n"),s.ɵɵtext(120,"\n "),s.ɵɵelement(121,"i",15),s.ɵɵtext(122,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(123,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(124,"\n "),s.ɵɵelementStart(125,"small",18),s.ɵɵtext(126),s.ɵɵpipe(127,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(128,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(129,"\n "),s.ɵɵelementStart(130,"div",5),s.ɵɵtext(131,"\n "),s.ɵɵelementStart(132,"div",19),s.ɵɵtext(133,"\n "),s.ɵɵelementStart(134,"input",26),s.ɵɵlistener("ngModelChange",(function(e){return t.enableFullWidth=e})),s.ɵɵelementEnd(),s.ɵɵtext(135,"\n "),s.ɵɵelementStart(136,"label",27),s.ɵɵtext(137),s.ɵɵpipe(138,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(140,"\n "),s.ɵɵelementStart(141,"small",18),s.ɵɵtext(142),s.ɵɵpipe(143,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(144,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(145,"\n "),s.ɵɵelementStart(146,"div",2),s.ɵɵtext(147,"\n "),s.ɵɵelementStart(148,"div",3),s.ɵɵtext(149,"\n "),s.ɵɵelementStart(150,"div",5),s.ɵɵtext(151,"\n "),s.ɵɵelementStart(152,"label",28),s.ɵɵtext(153),s.ɵɵpipe(154,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(155,"\n "),s.ɵɵelementStart(156,"select",29),s.ɵɵlistener("ngModelChange",(function(e){return t.theme=e})),s.ɵɵtext(157,"\n "),s.ɵɵtemplate(158,x,2,2,"option",17),s.ɵɵtext(159,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"small",18),s.ɵɵtext(162),s.ɵɵpipe(163,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(164,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(165,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(166,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(167,"\n "),s.ɵɵelementStart(168,"button",30),s.ɵɵtext(169),s.ɵɵpipe(170,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(171,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(172,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,32,"preferences")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(9,34,"preferencesDesc")),s.ɵɵadvance(9),s.ɵɵproperty("vaultTimeouts",t.vaultTimeouts)("formControl",t.vaultTimeout),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,36,"vaultTimeoutAction")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",t.vaultTimeoutAction),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(34,38,"lock"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(37,40,"vaultTimeoutActionLockDesc")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.vaultTimeoutAction),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(47,42,"logOut"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(50,44,"vaultTimeoutActionLogOutDesc")),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(65,46,"language")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(68,48,"learnMore")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.locale),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.localeOptions),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(81,50,"languageDesc")),s.ɵɵadvance(10),s.ɵɵproperty("ngModel",t.disableIcons),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(94,52,"disableIcons"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(97,54,"learnMore")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(105,56,"disableIconsDesc")),s.ɵɵadvance(8),s.ɵɵproperty("ngModel",t.enableGravatars),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(116,58,"enableGravatars"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(119,60,"learnMore")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(127,62,"enableGravatarsDesc")),s.ɵɵadvance(8),s.ɵɵproperty("ngModel",t.enableFullWidth),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(138,64,"enableFullWidth"),"\n "),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(143,66,"enableFullWidthDesc")),s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(154,68,"theme")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.theme),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.themeOptions),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(163,70,"themeDesc")),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(170,72,"save"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.VaultTimeoutInputComponent,m.DefaultValueAccessor,m.NgControlStatus,m.FormControlDirective,m.RadioControlValueAccessor,m.NgModel,v.A11yTitleDirective,m.SelectControlValueAccessor,g.NgForOf,m.CheckboxControlValueAccessor,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[f.I18nPipe],encapsulation:2})},28800:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PremiumComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(45552),n(73828),n(73569),n(9724),n(30694);const r=n(17337),o=n(41799),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(30694),p=n(68012),u=n(45552),m=n(9724),h=n(36631),v=n(73569),g=n(57490),f=n(20138),y=n(52767),x=n(96832),S=n(56820),b=n(17337),w=n(41799),C=n(99729);function I(e,t){1&e&&(a.ɵɵelementStart(0,"div",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"subscription")))}function E(e,t){1&e&&(a.ɵɵelementStart(0,"div",11),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"goPremium")))}function P(e,t){1&e&&(a.ɵɵelementStart(0,"bit-callout",12),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"youHavePremiumAccess")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"alreadyPremiumFromOrg"),"\n"))}function O(e,t){1&e&&(a.ɵɵelementStart(0,"a",13),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"purchasePremium"),"\n "))}function k(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"form",14,15),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",16),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",17),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelement(15,"input",18),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"small",19),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"button",20),a.ɵɵtext(23,"\n "),a.ɵɵelement(24,"i",21),a.ɵɵpipe(25,"i18n"),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"span"),a.ɵɵtext(28),a.ɵɵpipe(29,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n"),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵreference(7),t=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"uploadLicenseFilePremium")),a.ɵɵadvance(3),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,9,"licenseFile")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(19,11,"licenseFileDesc","bitwarden_premium_license.json")),a.ɵɵadvance(4),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(25,14,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(29,16,"submit"))}}function A(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"form",14,15),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"h2",22),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",23),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",24),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",25),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"input",26),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().additionalStorage=t})),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"small",27),a.ɵɵtext(19),a.ɵɵpipe(20,"i18n"),a.ɵɵpipe(21,"currency"),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"h2",28),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵpipe(31,"currency"),a.ɵɵelement(32,"br"),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵpipe(35,"currency"),a.ɵɵpipe(36,"currency"),a.ɵɵelement(37,"hr",29),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"h2",30),a.ɵɵtext(40),a.ɵɵpipe(41,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelement(43,"app-payment",31),a.ɵɵtext(44,"\n "),a.ɵɵelement(45,"app-tax-info"),a.ɵɵtext(46,"\n "),a.ɵɵelementStart(47,"div",32),a.ɵɵtext(48,"\n "),a.ɵɵelementStart(49,"div",33),a.ɵɵtext(50),a.ɵɵpipe(51,"i18n"),a.ɵɵpipe(52,"currency"),a.ɵɵelement(53,"br"),a.ɵɵtext(54,"\n "),a.ɵɵelementContainerStart(55),a.ɵɵtext(56),a.ɵɵpipe(57,"i18n"),a.ɵɵpipe(58,"currency"),a.ɵɵelementContainerEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(60,"\n "),a.ɵɵelement(61,"hr",34),a.ɵɵtext(62,"\n "),a.ɵɵelementStart(63,"p",35),a.ɵɵtext(64,"\n "),a.ɵɵelementStart(65,"strong"),a.ɵɵtext(66),a.ɵɵpipe(67,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(68),a.ɵɵpipe(69,"currency"),a.ɵɵpipe(70,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(71,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(72,"\n "),a.ɵɵelementStart(73,"small",36),a.ɵɵtext(74),a.ɵɵpipe(75,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(76,"\n "),a.ɵɵelementStart(77,"button",20),a.ɵɵtext(78,"\n "),a.ɵɵelement(79,"i",21),a.ɵɵpipe(80,"i18n"),a.ɵɵtext(81,"\n "),a.ɵɵelementStart(82,"span"),a.ɵɵtext(83),a.ɵɵpipe(84,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(85,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(86,"\n"),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(5,26,"addons")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,28,"additionalStorageGb")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("placeholder",a.ɵɵpipeBind1(16,30,"additionalStorageGbDesc")),a.ɵɵproperty("ngModel",t.additionalStorage),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind4(20,32,"additionalStorageIntervalDesc","1 GB",a.ɵɵpipeBind2(21,37,t.storageGbPrice,"$"),a.ɵɵpipeBind1(22,40,"year"))),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(28,42,"summary")),a.ɵɵadvance(2),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(30,44,"premiumMembership"),": ",a.ɵɵpipeBind2(31,46,t.premiumPrice,"$")," "),a.ɵɵadvance(4),a.ɵɵtextInterpolate4("\n ",a.ɵɵpipeBind1(34,49,"additionalStorageGb"),": ",t.additionalStorage||0," GB ×\n ",a.ɵɵpipeBind2(35,51,t.storageGbPrice,"$")," =\n ",a.ɵɵpipeBind2(36,54,t.additionalStorageTotal,"$"),"\n "),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(41,57,"paymentInformation")),a.ɵɵadvance(3),a.ɵɵproperty("hideBank",!0),a.ɵɵadvance(7),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(51,59,"planPrice"),": ",a.ɵɵpipeBind2(52,61,t.subtotal,"USD $"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(57,64,"estimatedTax"),": ",a.ɵɵpipeBind2(58,66,t.taxCharges,"USD $"),"\n "),a.ɵɵadvance(10),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(67,69,"total"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate2(" ",a.ɵɵpipeBind2(69,71,t.total,"USD $"),"/",a.ɵɵpipeBind1(70,74,"year"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(75,76,"paymentChargedAnnually")),a.ɵɵadvance(3),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(80,78,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(84,80,"submit"))}}const T=function(e){return{"mb-0":e}};class M{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.tokenService=i,this.router=r,this.messagingService=o,this.syncService=a,this.logService=s,this.stateService=l,this.canAccessPremium=!1,this.selfHosted=!1,this.premiumPrice=10,this.storageGbPrice=4,this.additionalStorage=0,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();(yield this.tokenService.getPremium())&&this.router.navigate(["/settings/subscription/user-subscription"])}))}submit(){return i(this,void 0,void 0,(function*(){let e=null;if(this.selfHosted){if(e=document.getElementById("file").files,null==e||0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}try{if(this.selfHosted){if(!this.tokenService.getEmailVerified())return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("verifyEmailFirst"));const t=new FormData;t.append("license",e[0]),this.formPromise=this.apiService.postAccountLicense(t).then((()=>this.finalizePremium()))}else this.formPromise=this.paymentComponent.createPaymentToken().then((e=>{const t=new FormData;return t.append("paymentMethodType",e[1].toString()),null!=e[0]&&t.append("paymentToken",e[0]),t.append("additionalStorageGb",(this.additionalStorage||0).toString()),t.append("country",this.taxInfoComponent.taxInfo.country),t.append("postalCode",this.taxInfoComponent.taxInfo.postalCode),this.apiService.postPremium(t)})).then((e=>e.success||null==e.paymentIntentClientSecret?this.finalizePremium():this.paymentComponent.handleStripeCardPayment(e.paymentIntentClientSecret,(()=>this.finalizePremium()))));yield this.formPromise}catch(t){this.logService.error(t)}}))}finalizePremium(){return i(this,void 0,void 0,(function*(){yield this.apiService.refreshIdentityToken(),yield this.syncService.fullSync(!0),this.platformUtilsService.showToast("success",null,this.i18nService.t("premiumUpdated")),this.messagingService.send("purchasedPremium"),this.router.navigate(["/settings/subscription/user-subscription"])}))}get additionalStorageTotal(){return this.storageGbPrice*Math.abs(this.additionalStorage||0)}get subtotal(){return this.premiumPrice+this.additionalStorageTotal}get taxCharges(){return null!=this.taxInfoComponent&&null!=this.taxInfoComponent.taxRate?this.taxInfoComponent.taxRate/100*this.subtotal:0}get total(){return this.subtotal+this.taxCharges||0}}t.PremiumComponent=M,M.ɵfac=function(e){return new(e||M)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.TokenService),a.ɵɵdirectiveInject(p.Router),a.ɵɵdirectiveInject(u.MessagingService),a.ɵɵdirectiveInject(m.SyncService),a.ɵɵdirectiveInject(h.LogService),a.ɵɵdirectiveInject(v.StateService))},M.ɵcmp=a.ɵɵdefineComponent({type:M,selectors:[["app-premium"]],viewQuery:function(e,t){if(1&e&&(a.ɵɵviewQuery(r.PaymentComponent,5),a.ɵɵviewQuery(o.TaxInfoComponent,5)),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.paymentComponent=e.first),a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.taxInfoComponent=e.first)}},decls:69,vars:40,consts:[["class","page-header",4,"ngIf"],["class","tabbed-header",4,"ngIf"],["type","info","icon","bwi bwi-star-f",3,"title",4,"ngIf"],["type","success"],[1,"bwi-ul"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-li"],[1,"text-lg",3,"ngClass"],["bit-button","","href","https://vault.bitwarden.com/#/settings/premium","target","_blank","rel","noopener","buttonType","secondary",4,"ngIf"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[1,"page-header"],[1,"tabbed-header"],["type","info","icon","bwi bwi-star-f",3,"title"],["bit-button","","href","https://vault.bitwarden.com/#/settings/premium","target","_blank","rel","noopener","buttonType","secondary"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["bit-button","","buttonType","primary","type","submit",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"mt-5"],[1,"row"],[1,"form-group","col-6"],["for","additionalStorage"],["id","additionalStorage","type","number","name","AdditionalStorageGb","min","0","max","99","step","1",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"text-muted","form-text"],[1,"spaced-header"],[1,"my-3"],[1,"spaced-header","mb-4"],[3,"hideBank"],["id","price",1,"my-4"],[1,"text-muted","text-sm"],[1,"my-1","col-3","ml-0"],[1,"text-lg"],[1,"text-muted","font-italic"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,I,6,3,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,E,6,3,"div",1),a.ɵɵtext(3,"\n"),a.ɵɵtemplate(4,P,4,6,"bit-callout",2),a.ɵɵtext(5,"\n"),a.ɵɵelementStart(6,"bit-callout",3),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"p"),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"ul",4),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"li"),a.ɵɵtext(15,"\n "),a.ɵɵelement(16,"i",5),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"li"),a.ɵɵtext(21,"\n "),a.ɵɵelement(22,"i",5),a.ɵɵtext(23),a.ɵɵpipe(24,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"li"),a.ɵɵtext(27,"\n "),a.ɵɵelement(28,"i",5),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"li"),a.ɵɵtext(33,"\n "),a.ɵɵelement(34,"i",5),a.ɵɵtext(35),a.ɵɵpipe(36,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementStart(38,"li"),a.ɵɵtext(39,"\n "),a.ɵɵelement(40,"i",5),a.ɵɵtext(41),a.ɵɵpipe(42,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"li"),a.ɵɵtext(45,"\n "),a.ɵɵelement(46,"i",5),a.ɵɵtext(47),a.ɵɵpipe(48,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"li"),a.ɵɵtext(51,"\n "),a.ɵɵelement(52,"i",5),a.ɵɵtext(53),a.ɵɵpipe(54,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(56,"\n "),a.ɵɵelementStart(57,"p",6),a.ɵɵtext(58),a.ɵɵpipe(59,"i18n"),a.ɵɵpipe(60,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(61,"\n "),a.ɵɵtemplate(62,O,3,3,"a",7),a.ɵɵtext(63,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n"),a.ɵɵtemplate(65,k,33,18,"ng-container",8),a.ɵɵtext(66,"\n"),a.ɵɵtemplate(67,A,87,82,"form",9),a.ɵɵtext(68,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.canAccessPremium),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,16,"premiumUpgradeUnlockFeatures")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(18,18,"premiumSignUpStorage"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(24,20,"premiumSignUpTwoStep"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,22,"premiumSignUpEmergency"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(36,24,"premiumSignUpReports"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(42,26,"premiumSignUpTotp"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(48,28,"premiumSignUpSupport"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(54,30,"premiumSignUpFuture"),"\n "),a.ɵɵadvance(4),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(38,T,!t.selfHosted)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(59,32,"premiumPrice",a.ɵɵpipeBind2(60,35,t.premiumPrice,"$")),"\n "),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.selfHosted))},directives:[g.NgIf,f.CalloutComponent,g.NgClass,y.ButtonComponent,x.NgControlStatusGroup,x.NgForm,S.ApiActionDirective,x.MinValidator,x.MaxValidator,x.NumberValueAccessor,x.DefaultValueAccessor,x.NgControlStatus,x.NgModel,b.PaymentComponent,w.TaxInfoComponent],pipes:[C.I18nPipe,g.CurrencyPipe],encapsulation:2})},93276:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileComponent=void 0;n(91674),n(85714),n(51554),n(72277),n(36631),n(73828),n(73569);const r=n(82567),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(85714),d=n(36631),p=n(72277),u=n(73569),m=n(57490),h=n(96832),v=n(56820),g=n(15370),f=n(8863),y=n(99729),x=n(52080);function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",2),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",3),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",8),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",18),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).profile.masterPasswordHint=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"masterPassHintLabel")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.profile.masterPasswordHint)}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementStart(3,"a",20),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",21),o.ɵɵelementEnd(),o.ɵɵelement(7,"br"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"code"),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"yourAccountsFingerprint"),":\n "),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,5,"learnMore")),o.ɵɵadvance(7),o.ɵɵtextInterpolate(e.fingerprint)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"form",4,5),o.ɵɵlistener("ngSubmit",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",6),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",7),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",8),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"label",9),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"input",10),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().profile.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",8),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",11),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"input",12),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().profile.email=t})),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,b,8,4,"div",13),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",7),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",14),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"app-avatar",15),o.ɵɵpipe(33,"userName"),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelement(37,"hr"),o.ɵɵtext(38,"\n "),o.ɵɵtemplate(39,w,12,7,"p",0),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"button",16),o.ɵɵtext(44,"\n "),o.ɵɵelement(45,"i",17),o.ɵɵpipe(46,"i18n"),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"span"),o.ɵɵtext(49),o.ɵɵpipe(50,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext();o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,12,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.profile.name),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,14,"email")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.profile.email),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hidePasswordHint),o.ɵɵadvance(7),o.ɵɵpropertyInterpolate("data",o.ɵɵpipeBind1(33,16,t.profile)),o.ɵɵproperty("email",t.profile.email),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",t.fingerprint),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(46,18,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(50,20,"save"))}}class I{constructor(e,t,n,i,r,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.logService=r,this.keyConnectorService=o,this.stateService=a,this.loading=!0,this.hidePasswordHint=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.profile=yield this.apiService.getProfile(),this.loading=!1;const e=yield this.cryptoService.getFingerprint(yield this.stateService.getUserId());null!=e&&(this.fingerprint=e.join("-")),this.hidePasswordHint=yield this.keyConnectorService.getUsesKeyConnector()}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.UpdateProfileRequest(this.profile.name,this.profile.masterPasswordHint);this.formPromise=this.apiService.putProfile(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("accountUpdated"))}catch(e){this.logService.error(e)}}))}}t.ProfileComponent=I,I.ɵfac=function(e){return new(e||I)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.CryptoService),o.ɵɵdirectiveInject(d.LogService),o.ɵɵdirectiveInject(p.KeyConnectorService),o.ɵɵdirectiveInject(u.StateService))},I.ɵcmp=o.ɵɵdefineComponent({type:I,selectors:[["app-profile"]],decls:4,vars:2,consts:[[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","ngModelChange"],["for","email"],["id","email","type","text","name","Email","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-group",4,"ngIf"],[1,"mb-3"],["dynamic","true","size","75","fontSize","35",3,"data","email"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["for","masterPasswordHint"],["id","masterPasswordHint","type","text","name","MasterPasswordHint",1,"form-control",3,"ngModel","ngModelChange"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,S,9,6,"div",0),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,C,53,22,"form",1),o.ɵɵtext(3,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.profile&&!t.loading))},directives:[m.NgIf,h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,g.AvatarComponent,f.A11yTitleDirective],pipes:[y.I18nPipe,x.UserNamePipe],encapsulation:2})},56796:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PurgeVaultComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(68012),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),g=n(99729);class f{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.router=r,this.logService=o,this.organizationId=null}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.postPurgeCiphers(e,this.organizationId))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("vaultPurged")),null!=this.organizationId?this.router.navigate(["organizations",this.organizationId,"vault"]):this.router.navigate(["vault"])}catch(e){this.logService.error(e)}}))}}t.PurgeVaultComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.Router),r.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-purge-vault"]],inputs:{organizationId:"organizationId"},decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","purgeVaultTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","purgeVaultTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"purgeVault")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,t.organizationId?"purgeOrgVaultDesc":"purgeVaultDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"purgeVaultWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"purgeVault")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[g.I18nPipe],encapsulation:2})},80793:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityKeysComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(72277),n(73569),n(83011)),a=n(32621),s=n(72277),l=n(73569),c=n(64684),d=n(91674),p=n(57490),u=n(52767),m=n(48381),h=n(99729),v=["viewUserApiKeyTemplate"],g=["rotateUserApiKeyTemplate"];function f(e,t){1&e&&a.ɵɵelement(0,"app-change-kdf")}function y(e,t){}function x(e,t){}const S=function(e,t){return{"tabbed-header":e,"secondary-header":t}};class b{constructor(e,t,n,i){this.keyConnectorService=e,this.stateService=t,this.modalService=n,this.apiService=i,this.showChangeKdf=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangeKdf=!(yield this.keyConnectorService.getUsesKeyConnector())}))}viewUserApiKey(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getUserId();yield this.modalService.openViewRef(o.ApiKeyComponent,this.viewUserApiKeyModalRef,(t=>{t.keyType="user",t.entityId=e,t.postKey=this.apiService.postUserApiKey.bind(this.apiService),t.scope="api",t.grantType="client_credentials",t.apiKeyTitle="apiKey",t.apiKeyWarning="userApiKeyWarning",t.apiKeyDescription="userApiKeyDesc"}))}))}rotateUserApiKey(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getUserId();yield this.modalService.openViewRef(o.ApiKeyComponent,this.rotateUserApiKeyModalRef,(t=>{t.keyType="user",t.isRotation=!0,t.entityId=e,t.postKey=this.apiService.postUserRotateApiKey.bind(this.apiService),t.scope="api",t.grantType="client_credentials",t.apiKeyTitle="apiKey",t.apiKeyWarning="userApiKeyWarning",t.apiKeyDescription="apiKeyRotateDesc"}))}))}}t.SecurityKeysComponent=b,b.ɵfac=function(e){return new(e||b)(a.ɵɵdirectiveInject(s.KeyConnectorService),a.ɵɵdirectiveInject(l.StateService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.ApiService))},b.ɵcmp=a.ɵɵdefineComponent({type:b,selectors:[["app-security-keys"]],viewQuery:function(e,t){if(1&e&&(a.ɵɵviewQuery(v,7,r.ViewContainerRef),a.ɵɵviewQuery(g,7,r.ViewContainerRef)),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.viewUserApiKeyModalRef=e.first),a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.rotateUserApiKeyModalRef=e.first)}},decls:27,vars:17,consts:[[4,"ngIf"],[1,"border-0","mb-0",3,"ngClass"],["bit-button","","buttonType","secondary",3,"click"],["viewUserApiKeyTemplate",""],["rotateUserApiKeyTemplate",""]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,f,1,0,"app-change-kdf",0),a.ɵɵtext(1,"\n"),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"h1"),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵelementStart(13,"button",2),a.ɵɵlistener("click",(function(){return t.viewUserApiKey()})),a.ɵɵtext(14),a.ɵɵpipe(15,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementStart(17,"button",2),a.ɵɵlistener("click",(function(){return t.rotateUserApiKey()})),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n"),a.ɵɵtemplate(21,y,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(23,"\n"),a.ɵɵtemplate(24,x,0,0,"ng-template",null,4,a.ɵɵtemplateRefExtractor),a.ɵɵtext(26,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showChangeKdf),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",a.ɵɵpureFunction2(14,S,!t.showChangeKdf,t.showChangeKdf)),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(6,6,"apiKey")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,8,"userApiKeyDesc"),"\n"),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(15,10,"viewApiKey"),"\n"),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(19,12,"rotateApiKey"),"\n"))},directives:[p.NgIf,p.NgClass,u.ButtonComponent,m.ChangeKdfComponent],pipes:[h.I18nPipe],encapsulation:2})},17587:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityRoutingModule=void 0;const i=n(68012),r=n(11676),o=n(80793),a=n(75024),s=n(35906),l=n(32621),c=(n(68012),[{path:"",component:a.SecurityComponent,data:{titleId:"security"},children:[{path:"",pathMatch:"full",redirectTo:"change-password"},{path:"change-password",component:r.ChangePasswordComponent,data:{titleId:"masterPassword"}},{path:"two-factor",component:s.TwoFactorSetupComponent,data:{titleId:"twoStepLogin"}},{path:"security-keys",component:o.SecurityKeysComponent,data:{titleId:"keys"}}]}]);class d{}t.SecurityRoutingModule=d,d.ɵfac=function(e){return new(e||d)},d.ɵmod=l.ɵɵdefineNgModule({type:d}),d.ɵinj=l.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(c)],i.RouterModule]})},75024:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityComponent=void 0;n(72277);const r=n(32621),o=n(72277),a=n(57490),s=n(68012),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",6),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"masterPassword"),"\n "))}class d{constructor(e){this.keyConnectorService=e,this.showChangePassword=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangePassword=!(yield this.keyConnectorService.getUsesKeyConnector())}))}}t.SecurityComponent=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵdirectiveInject(o.KeyConnectorService))},d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-security"]],decls:24,vars:7,consts:[[1,"tabbed-nav","d-flex","flex-column"],[1,"nav","nav-tabs"],[4,"ngIf"],[1,"nav-item"],["routerLink","two-factor","routerLinkActive","active",1,"nav-link"],["routerLink","security-keys","routerLinkActive","active",1,"nav-link"],["routerLink","change-password","routerLinkActive","active",1,"nav-link"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,c,9,3,"ng-container",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"li",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"li",3),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"a",5),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n"),r.ɵɵelement(22,"router-outlet"),r.ɵɵtext(23,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.showChangePassword),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,3,"twoStepLogin"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(17,5,"keys"),"\n "))},directives:[a.NgIf,s.RouterLinkWithHref,s.RouterLinkActive,s.RouterOutlet],pipes:[l.I18nPipe],encapsulation:2})},82477:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(32621),n(91674),n(8470),n(63513),n(73828),n(30694),n(15156);const r=n(32621),o=n(30694),a=n(8470),s=n(73828),l=n(63513),c=n(15156),d=n(91674),p=n(68012),u=n(57490),m=n(99729);function h(e,t){1&e&&(r.ɵɵelementStart(0,"a",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"subscription"),"\n "))}function v(e,t){1&e&&(r.ɵɵelementStart(0,"a",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"sponsoredFamilies"),"\n "))}const g="SettingsComponent";class f{constructor(e,t,n,i,r,o,a){this.tokenService=e,this.broadcasterService=t,this.ngZone=n,this.platformUtilsService=i,this.organizationService=r,this.stateService=o,this.apiService=a}ngOnInit(){return i(this,void 0,void 0,(function*(){this.broadcasterService.subscribe(g,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("purchasedPremium"===e.command)yield this.load()}))))})))),this.selfHosted=yield this.platformUtilsService.isSelfHost(),yield this.load()}))}ngOnDestroy(){this.broadcasterService.unsubscribe(g)}load(){return i(this,void 0,void 0,(function*(){this.premium=yield this.tokenService.getPremium(),this.hasFamilySponsorshipAvailable=yield this.organizationService.canManageSponsorships();const e=yield this.stateService.getCanAccessPremium();let t=null;this.selfHosted||(t=yield this.apiService.getUserBillingHistory()),this.hideSubscription=!this.premium&&e&&(this.selfHosted||(null==t?void 0:t.hasNoHistory))}))}}t.SettingsComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.BroadcasterService),r.ɵɵdirectiveInject(r.NgZone),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.OrganizationService),r.ɵɵdirectiveInject(c.StateService),r.ɵɵdirectiveInject(d.ApiService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-settings"]],decls:48,vars:20,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],["routerLink","security","routerLinkActive","active",1,"list-group-item"],["routerLink","preferences","routerLinkActive","active",1,"list-group-item"],["routerLink","subscription","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","domain-rules","routerLinkActive","active",1,"list-group-item"],["routerLink","emergency-access","routerLinkActive","active",1,"list-group-item"],["routerLink","sponsored-families","class","list-group-item","routerLinkActive","active",4,"ngIf"],[1,"col-9"],["routerLink","subscription","routerLinkActive","active",1,"list-group-item"],["routerLink","sponsored-families","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"a",8),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵtemplate(26,h,3,3,"a",9),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"a",10),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"a",11),r.ɵɵtext(33),r.ɵɵpipe(34,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,v,3,3,"a",12),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"div",13),r.ɵɵtext(42,"\n "),r.ɵɵelement(43,"router-outlet"),r.ɵɵtext(44,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,8,"accountSettings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,10,"myAccount"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,12,"security"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,14,"preferences"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.hideSubscription),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,16,"domainRules"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(34,18,"emergencyAccess"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.hasFamilySponsorshipAvailable))},directives:[p.RouterLinkWithHref,p.RouterLinkActive,u.NgIf,p.RouterOutlet],pipes:[m.I18nPipe],encapsulation:2})},21362:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SponsoredFamiliesComponent=void 0;const r=n(96832),o=n(55939),a=(n(91674),n(51554),n(63513),n(73828),n(73569),n(9724),n(22931)),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(9724),u=n(63513),m=n(96832),h=n(73569),v=n(57490),g=n(56820),f=n(73618),y=n(99729);function x(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",2),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",3),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",18),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function b(e,t){1&e&&(s.ɵɵelementStart(0,"small",19),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",20),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"cannotSponsorSelf"),"\n "))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"small",19),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",20),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"invalidEmail"),"\n "))}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",6,7),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",8),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"label",9),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"select",10),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"option",11),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,S,2,2,"option",12),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",8),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",13),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"input",14),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,b,5,3,"small",15),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,w,5,3,"small",15),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",8),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"button",16),s.ɵɵtext(35,"\n "),s.ɵɵelement(36,"i",17),s.ɵɵpipe(37,"i18n"),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"span"),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.sponsorshipForm),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,12,"familiesSponsoringOrgSelect")),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("-- ",s.ɵɵpipeBind1(13,14,"select")," --"),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",t.availableSponsorshipOrgs),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(23,16,"sponsoredFamiliesEmail"),":"),s.ɵɵadvance(3),s.ɵɵattribute("aria-invalid",t.sponsorshipEmailControl.invalid),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.sponsorshipEmailControl.errors?null:t.sponsorshipEmailControl.errors.notAllowedValue),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.sponsorshipEmailControl.errors?null:t.sponsorshipEmailControl.errors.email),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(37,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,20,"redeem"))}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tr",24),s.ɵɵlistener("sponsorshipRemoved",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).load(!0)})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("sponsoringOrg",e)("isSelfHosted",n.isSelfHosted)}}function E(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",21),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"table",22),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"thead"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"tr"),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"th"),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"th"),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"th"),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelement(22,"th"),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"tbody"),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,I,4,2,"ng-container",23),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"small"),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,5,"recipient")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(16,7,"sponsoringOrg")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,9,"status")),s.ɵɵadvance(9),s.ɵɵproperty("ngForOf",e.activeSponsorshipOrgs),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,11,"sponsoredFamiliesLeaveCopy"))}}function P(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementStart(9,"ul",4),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"li"),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"li"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,C,45,22,"form",5),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,E,37,13,"ng-container",1),s.ɵɵtext(24,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,6,"sponsoredFamiliesEligible"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,8,"sponsoredFamiliesInclude"),":\n "),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,10,"sponsoredFamiliesPremiumAccess")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,12,"sponsoredFamiliesSharedCollections")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.anyOrgsAvailable),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.anyActiveSponsorships)}}class O{constructor(e,t,n,a,s,l,c){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.syncService=a,this.organizationService=s,this.formBuilder=l,this.stateService=c,this.loading=!1,this.availableSponsorshipOrgs=[],this.activeSponsorshipOrgs=[],this.sponsorshipForm=this.formBuilder.group({selectedSponsorshipOrgId:["",{validators:[r.Validators.required]}],sponsorshipEmail:["",{validators:[r.Validators.email],asyncValidators:[o.notAllowedValueAsync((()=>i(this,void 0,void 0,(function*(){return yield this.stateService.getEmail()}))),!0)],updateOn:"blur"}]})}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.postCreateSponsorship(this.sponsorshipForm.value.selectedSponsorshipOrgId,{sponsoredEmail:this.sponsorshipForm.value.sponsorshipEmail,planSponsorshipType:a.PlanSponsorshipType.FamiliesForEnterprise,friendlyName:this.sponsorshipForm.value.sponsorshipEmail}),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("sponsorshipCreated")),this.formPromise=null,this.resetForm(),yield this.load(!0)}))}load(e=!1){return i(this,void 0,void 0,(function*(){if(this.loading)return;this.loading=!0,e&&(yield this.syncService.fullSync(!0));const t=yield this.organizationService.getAll();this.availableSponsorshipOrgs=t.filter((e=>e.familySponsorshipAvailable)),this.activeSponsorshipOrgs=t.filter((e=>null!==e.familySponsorshipFriendlyName)),1===this.availableSponsorshipOrgs.length&&this.sponsorshipForm.patchValue({selectedSponsorshipOrgId:this.availableSponsorshipOrgs[0].id}),this.loading=!1}))}get sponsorshipEmailControl(){return this.sponsorshipForm.controls.sponsorshipEmail}resetForm(){return i(this,void 0,void 0,(function*(){this.sponsorshipForm.reset()}))}get anyActiveSponsorships(){return this.activeSponsorshipOrgs.length>0}get anyOrgsAvailable(){return this.availableSponsorshipOrgs.length>0}get isSelfHosted(){return this.platformUtilsService.isSelfHost()}}t.SponsoredFamiliesComponent=O,O.ɵfac=function(e){return new(e||O)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.SyncService),s.ɵɵdirectiveInject(u.OrganizationService),s.ɵɵdirectiveInject(m.FormBuilder),s.ɵɵdirectiveInject(h.StateService))},O.ɵcmp=s.ɵɵdefineComponent({type:O,selectors:[["app-sponsored-families"]],decls:11,vars:5,consts:[[1,"page-header"],[4,"ngIf"],[1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"inset-list"],["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"form-group","col-7"],["for","availableSponsorshipOrg"],["id","availableSponsorshipOrg","name","Available Sponsorship Organization","formControlName","selectedSponsorshipOrgId","required","",1,"form-control"],["disabled","true","value",""],[3,"ngValue",4,"ngFor","ngForOf"],["for","sponsorshipEmail"],["id","sponsorshipEmail","inputmode","email","formControlName","sponsorshipEmail","name","sponsorshipEmail","required","",1,"form-control"],["aria-errormessage","sponsorshipEmail","class","error-inline","role","alert",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit","mt-2",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"ngValue"],["aria-errormessage","sponsorshipEmail","role","alert",1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-error"],[1,"border-bottom"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["sponsoring-org-row","",3,"sponsoringOrg","isSelfHosted","sponsorshipRemoved"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,x,9,6,"ng-container",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,P,25,14,"ng-container",1),s.ɵɵtext(10,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"sponsoredFamilies")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading))},directives:[v.NgIf,m.NgControlStatusGroup,g.ApiActionDirective,m.FormGroupDirective,m.SelectControlValueAccessor,m.NgControlStatus,m.FormControlName,m.RequiredValidator,m.NgSelectOption,m.ɵNgSelectMultipleOption,v.NgForOf,m.DefaultValueAccessor,f.SponsoringOrgRowComponent],pipes:[y.I18nPipe],encapsulation:2})},73618:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SponsoringOrgRowComponent=void 0;const r=n(57490),o=n(32621),a=(n(91674),n(51554),n(36631),n(73828),n(27957),n(32621)),s=n(91674),l=n(51554),c=n(36631),d=n(73828),p=n(57490),u=n(56820),m=n(8863),h=n(99729);function v(e,t){1&e&&(a.ɵɵelementStart(0,"button",9),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2,"\n "),a.ɵɵelement(3,"i",10),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd()),2&e&&a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(1,1,"options"))}function g(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",11,12),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().resendEmail()})),a.ɵɵpipe(2,"i18n"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",8),a.ɵɵpipe(5,"i18n"),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"span"),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.resendEmailPromise)("disabled",e.loading),a.ɵɵattribute("aria-label",a.ɵɵpipeBind2(2,5,"resendEmailLabel",t.sponsoringOrg.familySponsorshipFriendlyName)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(5,8,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,10,"resendEmail"))}}class f{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.logService=n,this.platformUtilsService=i,this.sponsoringOrg=null,this.isSelfHosted=!1,this.sponsorshipRemoved=new o.EventEmitter,this.statusMessage="loading",this.statusClass="text-success"}ngOnInit(){this.setStatus(this.isSelfHosted,this.sponsoringOrg.familySponsorshipToDelete,this.sponsoringOrg.familySponsorshipValidUntil,this.sponsoringOrg.familySponsorshipLastSyncDate)}revokeSponsorship(){return i(this,void 0,void 0,(function*(){try{this.revokeSponsorshipPromise=this.doRevokeSponsorship(),yield this.revokeSponsorshipPromise}catch(e){this.logService.error(e)}this.revokeSponsorshipPromise=null}))}resendEmail(){return i(this,void 0,void 0,(function*(){this.resendEmailPromise=this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id),yield this.resendEmailPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("emailSent")),this.resendEmailPromise=null}))}get isSentAwaitingSync(){return this.isSelfHosted&&!this.sponsoringOrg.familySponsorshipLastSyncDate}doRevokeSponsorship(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("revokeSponsorshipConfirmation"),`${this.i18nService.t("remove")} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`,this.i18nService.t("remove"),this.i18nService.t("cancel"),"warning"))&&(yield this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("reclaimedFreePlan")),this.sponsorshipRemoved.emit())}))}setStatus(e,t,n,i){t&&n?(this.statusMessage=this.i18nService.t("revokeWhenExpired",r.formatDate(n,"MM/dd/yyyy",this.i18nService.locale)),this.statusClass="text-danger"):t?(this.statusMessage=this.i18nService.t("requestRemoved"),this.statusClass="text-danger"):n?(this.statusMessage=this.i18nService.t("active"),this.statusClass="text-success"):e&&i?(this.statusMessage=this.i18nService.t("sent"),this.statusClass="text-success"):e?(this.statusMessage=this.i18nService.t("requested"),this.statusClass="text-success"):(this.statusMessage=this.i18nService.t("sent"),this.statusClass="text-success")}}t.SponsoringOrgRowComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.LogService),a.ɵɵdirectiveInject(d.PlatformUtilsService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["","sponsoring-org-row",""]],inputs:{sponsoringOrg:"sponsoringOrg",isSelfHosted:"isSelfHosted"},outputs:{sponsorshipRemoved:"sponsorshipRemoved"},attrs:["sponsoring-org-row",""],decls:37,vars:18,consts:[[3,"ngClass"],[1,"table-action-right"],["appListDropdown","",1,"dropdown"],["class","btn btn-outline-secondary dropdown-toggle","type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",3,"appA11yTitle",4,"ngIf"],["aria-labelledby","dropdownMenuButton",1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"dropdown-item","text-danger","btn-submit",3,"appApiAction","disabled","click"],["revokeSponsorshipBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-item","btn-submit",3,"appApiAction","disabled","click"],["resendEmailBtn",""]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵelementEnd(),a.ɵɵtext(2,"\n"),a.ɵɵelementStart(3,"td"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"span",0),a.ɵɵtext(9),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n"),a.ɵɵelementStart(12,"td",1),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"div",2),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,v,5,3,"button",3),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",4),a.ɵɵtext(19,"\n "),a.ɵɵtemplate(20,g,11,12,"button",5),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"button",6,7),a.ɵɵlistener("click",(function(){return t.revokeSponsorship()})),a.ɵɵpipe(24,"i18n"),a.ɵɵtext(25,"\n "),a.ɵɵelement(26,"i",8),a.ɵɵpipe(27,"i18n"),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"span"),a.ɵɵtext(30),a.ɵɵpipe(31,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n")),2&e){const e=a.ɵɵreference(23);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",t.sponsoringOrg.familySponsorshipFriendlyName,"\n"),a.ɵɵadvance(3),a.ɵɵtextInterpolate(t.sponsoringOrg.name),a.ɵɵadvance(4),a.ɵɵproperty("ngClass",t.statusClass),a.ɵɵadvance(1),a.ɵɵtextInterpolate(t.statusMessage),a.ɵɵadvance(7),a.ɵɵproperty("ngIf",!t.sponsoringOrg.familySponsorshipToDelete),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",!t.isSelfHosted&&!t.sponsoringOrg.familySponsorshipValidUntil),a.ɵɵadvance(2),a.ɵɵproperty("appApiAction",t.revokeSponsorshipPromise)("disabled",e.loading),a.ɵɵattribute("aria-label",a.ɵɵpipeBind2(24,11,"revokeAccount",t.sponsoringOrg.familySponsorshipFriendlyName)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(27,14,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(31,16,"remove"))}},directives:[p.NgClass,p.NgIf,u.ApiActionDirective,m.A11yTitleDirective],pipes:[h.I18nPipe],encapsulation:2})},63067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SubscriptionRoutingModule=void 0;const i=n(68012),r=n(88691),o=n(28800),a=n(31960),s=n(89805),l=n(67562),c=n(32621),d=(n(68012),[{path:"",component:a.SubscriptionComponent,data:{titleId:"subscription"},children:[{path:"",pathMatch:"full",redirectTo:"premium"},{path:"user-subscription",component:l.UserSubscriptionComponent,data:{titleId:"premiumMembership"}},{path:"premium",component:o.PremiumComponent,data:{titleId:"goPremium"}},{path:"payment-method",component:r.PaymentMethodComponent,data:{titleId:"paymentMethod"}},{path:"billing-history",component:s.UserBillingHistoryComponent,data:{titleId:"billingHistory"}}]}]);class p{}t.SubscriptionRoutingModule=p,p.ɵfac=function(e){return new(e||p)},p.ɵmod=c.ɵɵdefineNgModule({type:p}),p.ɵinj=c.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(d)],i.RouterModule]})},31960:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SubscriptionComponent=void 0;n(73828),n(30694);const r=n(32621),o=n(30694),a=n(73828),s=n(57490),l=n(68012),c=n(99729);function d(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",1),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",2),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",3),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"a",4),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"li",3),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"a",5),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"li",3),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"a",6),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(6),r.ɵɵproperty("routerLink",e.subscriptionRoute),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"subscription"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,6,"paymentMethod"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,8,"billingHistory"),"\n ")}}class p{constructor(e,t){this.tokenService=e,this.platformUtilsService=t}ngOnInit(){return i(this,void 0,void 0,(function*(){this.hasPremium=yield this.tokenService.getPremium(),this.selfHosted=this.platformUtilsService.isSelfHost()}))}get subscriptionRoute(){return this.hasPremium?"user-subscription":"premium"}}t.SubscriptionComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.PlatformUtilsService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-subscription"]],decls:4,vars:1,consts:[["class","tabbed-nav d-flex flex-column",4,"ngIf"],[1,"tabbed-nav","d-flex","flex-column"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["routerLink","payment-method","routerLinkActive","active",1,"nav-link"],["routerLink","billing-history","routerLinkActive","active",1,"nav-link"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,26,10,"div",0),r.ɵɵtext(1,"\n"),r.ɵɵelement(2,"router-outlet"),r.ɵɵtext(3,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.selfHosted)},directives:[s.NgIf,l.RouterOutlet,l.RouterLinkWithHref,l.RouterLinkActive],pipes:[c.I18nPipe],encapsulation:2})},41799:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(36631),n(91260)),a=n(26374),s=n(32621),l=n(91674),c=n(68012),d=n(36631),p=n(96832),u=n(57490),m=n(99729);function h(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",1),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",261),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",262),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.includeTaxId=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",263),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngModel",e.taxInfo.includeTaxId),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,2,"includeVAT"))}}function v(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",264),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",265),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.taxId=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,2,"taxIdNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.taxId)}}function g(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",266),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",267),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.line1=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",1),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",2),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",268),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"input",269),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.line2=t})),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",1),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",2),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",270),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",271),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.city=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",1),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"div",2),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"label",272),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"input",273),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.state=t})),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,8,"address1")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.line1),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,10,"address2")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.line2),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,12,"cityTown")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.city),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,14,"stateProvince")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.state)}}class f{constructor(e,t,n){this.apiService=e,this.route=t,this.logService=n,this.onCountryChanged=new r.EventEmitter,this.loading=!0,this.taxInfo={taxId:null,line1:null,line2:null,city:null,state:null,postalCode:null,country:"US",includeTaxId:!1},this.pristine={taxId:null,line1:null,line2:null,city:null,state:null,postalCode:null,country:"US",includeTaxId:!1}}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){if(this.organizationId=e.organizationId,this.organizationId)try{const e=yield this.apiService.getOrganizationTaxInfo(this.organizationId);e&&(this.taxInfo.taxId=e.taxId,this.taxInfo.state=e.state,this.taxInfo.line1=e.line1,this.taxInfo.line2=e.line2,this.taxInfo.city=e.city,this.taxInfo.state=e.state,this.taxInfo.postalCode=e.postalCode,this.taxInfo.country=e.country||"US",this.taxInfo.includeTaxId=!("US"===this.taxInfo.country||!e.taxId&&!e.line1&&!e.line2&&!e.city&&!e.state))}catch(t){this.logService.error(t)}else{const e=yield this.apiService.getTaxInfo();e&&(this.taxInfo.postalCode=e.postalCode,this.taxInfo.country=e.country||"US")}this.pristine=Object.assign({},this.taxInfo),"US"!==this.taxInfo.country&&this.onCountryChanged.emit()}))));const e=yield this.apiService.getTaxRates();this.taxRates=e.data,this.loading=!1}))}get taxRate(){var e;if(null!=this.taxRates){const t=this.taxRates.find((e=>e.country===this.taxInfo.country&&e.postalCode===this.taxInfo.postalCode));return null!==(e=null==t?void 0:t.rate)&&void 0!==e?e:null}}getTaxInfoRequest(){if(this.organizationId){const e=new o.OrganizationTaxInfoUpdateRequest;return e.taxId=this.taxInfo.taxId,e.state=this.taxInfo.state,e.line1=this.taxInfo.line1,e.line2=this.taxInfo.line2,e.city=this.taxInfo.city,e.state=this.taxInfo.state,e.postalCode=this.taxInfo.postalCode,e.country=this.taxInfo.country,e}{const e=new a.TaxInfoUpdateRequest;return e.postalCode=this.taxInfo.postalCode,e.country=this.taxInfo.country,e}}submitTaxInfo(){if(!this.hasChanged())return new Promise((e=>{e()}));const e=this.getTaxInfoRequest();return this.organizationId?this.apiService.putOrganizationTaxInfo(this.organizationId,e):this.apiService.putTaxInfo(e)}changeCountry(){"US"===this.taxInfo.country&&(this.taxInfo.includeTaxId=!1,this.taxInfo.taxId=null,this.taxInfo.line1=null,this.taxInfo.line2=null,this.taxInfo.city=null,this.taxInfo.state=null),this.onCountryChanged.emit()}hasChanged(){for(const e in this.taxInfo)if(this.pristine.hasOwnProperty(e)&&this.pristine[e]!==this.taxInfo[e])return!0;return!1}}t.TaxInfoComponent=f,f.ɵfac=function(e){return new(e||f)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=s.ɵɵdefineComponent({type:f,selectors:[["app-tax-info"]],outputs:{onCountryChanged:"onCountryChanged"},decls:786,vars:12,consts:[[1,"row"],[1,"col-6"],[1,"form-group"],["for","addressCountry"],["id","addressCountry","required","","name","addressCountry","autocomplete","country",1,"form-control",3,"ngModel","ngModelChange","change"],["value",""],["value","US"],["value","CN"],["value","FR"],["value","DE"],["value","CA"],["value","GB"],["value","AU"],["value","IN"],["value","-","disabled",""],["value","AF"],["value","AX"],["value","AL"],["value","DZ"],["value","AS"],["value","AD"],["value","AO"],["value","AI"],["value","AQ"],["value","AG"],["value","AR"],["value","AM"],["value","AW"],["value","AT"],["value","AZ"],["value","BS"],["value","BH"],["value","BD"],["value","BB"],["value","BY"],["value","BE"],["value","BZ"],["value","BJ"],["value","BM"],["value","BT"],["value","BO"],["value","BQ"],["value","BA"],["value","BW"],["value","BV"],["value","BR"],["value","IO"],["value","BN"],["value","BG"],["value","BF"],["value","BI"],["value","KH"],["value","CM"],["value","CV"],["value","KY"],["value","CF"],["value","TD"],["value","CL"],["value","CX"],["value","CC"],["value","CO"],["value","KM"],["value","CG"],["value","CD"],["value","CK"],["value","CR"],["value","CI"],["value","HR"],["value","CU"],["value","CW"],["value","CY"],["value","CZ"],["value","DK"],["value","DJ"],["value","DM"],["value","DO"],["value","EC"],["value","EG"],["value","SV"],["value","GQ"],["value","ER"],["value","EE"],["value","ET"],["value","FK"],["value","FO"],["value","FJ"],["value","FI"],["value","GF"],["value","PF"],["value","TF"],["value","GA"],["value","GM"],["value","GE"],["value","GH"],["value","GI"],["value","GR"],["value","GL"],["value","GD"],["value","GP"],["value","GU"],["value","GT"],["value","GG"],["value","GN"],["value","GW"],["value","GY"],["value","HT"],["value","HM"],["value","VA"],["value","HN"],["value","HK"],["value","HU"],["value","IS"],["value","ID"],["value","IR"],["value","IQ"],["value","IE"],["value","IM"],["value","IL"],["value","IT"],["value","JM"],["value","JP"],["value","JE"],["value","JO"],["value","KZ"],["value","KE"],["value","KI"],["value","KP"],["value","KR"],["value","KW"],["value","KG"],["value","LA"],["value","LV"],["value","LB"],["value","LS"],["value","LR"],["value","LY"],["value","LI"],["value","LT"],["value","LU"],["value","MO"],["value","MK"],["value","MG"],["value","MW"],["value","MY"],["value","MV"],["value","ML"],["value","MT"],["value","MH"],["value","MQ"],["value","MR"],["value","MU"],["value","YT"],["value","MX"],["value","FM"],["value","MD"],["value","MC"],["value","MN"],["value","ME"],["value","MS"],["value","MA"],["value","MZ"],["value","MM"],["value","NA"],["value","NR"],["value","NP"],["value","NL"],["value","NC"],["value","NZ"],["value","NI"],["value","NE"],["value","NG"],["value","NU"],["value","NF"],["value","MP"],["value","NO"],["value","OM"],["value","PK"],["value","PW"],["value","PS"],["value","PA"],["value","PG"],["value","PY"],["value","PE"],["value","PH"],["value","PN"],["value","PL"],["value","PT"],["value","PR"],["value","QA"],["value","RE"],["value","RO"],["value","RU"],["value","RW"],["value","BL"],["value","SH"],["value","KN"],["value","LC"],["value","MF"],["value","PM"],["value","VC"],["value","WS"],["value","SM"],["value","ST"],["value","SA"],["value","SN"],["value","RS"],["value","SC"],["value","SL"],["value","SG"],["value","SX"],["value","SK"],["value","SI"],["value","SB"],["value","SO"],["value","ZA"],["value","GS"],["value","SS"],["value","ES"],["value","LK"],["value","SD"],["value","SR"],["value","SJ"],["value","SZ"],["value","SE"],["value","CH"],["value","SY"],["value","TW"],["value","TJ"],["value","TZ"],["value","TH"],["value","TL"],["value","TG"],["value","TK"],["value","TO"],["value","TT"],["value","TN"],["value","TR"],["value","TM"],["value","TC"],["value","TV"],["value","UG"],["value","UA"],["value","AE"],["value","UM"],["value","UY"],["value","UZ"],["value","VU"],["value","VE"],["value","VN"],["value","VG"],["value","VI"],["value","WF"],["value","EH"],["value","YE"],["value","ZM"],["value","ZW"],[1,"col-3"],["for","addressPostalCode"],["id","addressPostalCode","type","text","name","addressPostalCode","autocomplete","postal-code",1,"form-control",3,"ngModel","required","ngModelChange"],["class","col-6",4,"ngIf"],["class","row",4,"ngIf"],[1,"form-group","form-check"],["id","addressIncludeTaxId","name","addressIncludeTaxId","type","checkbox",1,"form-check-input",3,"ngModel","ngModelChange"],["for","addressIncludeTaxId",1,"form-check-label"],["for","taxId"],["id","taxId","type","text","name","taxId",1,"form-control",3,"ngModel","ngModelChange"],["for","addressLine1"],["id","addressLine1","type","text","name","addressLine1","autocomplete","address-line1",1,"form-control",3,"ngModel","ngModelChange"],["for","addressLine2"],["id","addressLine2","type","text","name","addressLine2","autocomplete","address-line2",1,"form-control",3,"ngModel","ngModelChange"],["for","addressCity"],["id","addressCity","type","text","name","addressCity","autocomplete","address-level2",1,"form-control",3,"ngModel","ngModelChange"],["for","addressState"],["id","addressState","type","text","name","addressState","autocomplete","address-level1",1,"form-control",3,"ngModel","ngModelChange"]],template:function(e,t){if(1&e){s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",3),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"select",4),s.ɵɵlistener("ngModelChange",(function(e){return t.taxInfo.country=e}))("change",(function(){return t.changeCountry()})),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"option",5),s.ɵɵtext(13,"-- Select --"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"option",6),s.ɵɵtext(16,"United States"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"option",7),s.ɵɵtext(19,"China"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"option",8),s.ɵɵtext(22,"France"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"option",9),s.ɵɵtext(25,"Germany"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"option",10),s.ɵɵtext(28,"Canada"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"option",11),s.ɵɵtext(31,"United Kingdom"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"option",12),s.ɵɵtext(34,"Australia"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"option",13),s.ɵɵtext(37,"India"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"option",14),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"option",15),s.ɵɵtext(42,"Afghanistan"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"option",16),s.ɵɵtext(45,"Åland Islands"),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"option",17),s.ɵɵtext(48,"Albania"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementStart(50,"option",18),s.ɵɵtext(51,"Algeria"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"option",19),s.ɵɵtext(54,"American Samoa"),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementStart(56,"option",20),s.ɵɵtext(57,"Andorra"),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"option",21),s.ɵɵtext(60,"Angola"),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"option",22),s.ɵɵtext(63,"Anguilla"),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"option",23),s.ɵɵtext(66,"Antarctica"),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n "),s.ɵɵelementStart(68,"option",24),s.ɵɵtext(69,"Antigua and Barbuda"),s.ɵɵelementEnd(),s.ɵɵtext(70,"\n "),s.ɵɵelementStart(71,"option",25),s.ɵɵtext(72,"Argentina"),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"option",26),s.ɵɵtext(75,"Armenia"),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"option",27),s.ɵɵtext(78,"Aruba"),s.ɵɵelementEnd(),s.ɵɵtext(79,"\n "),s.ɵɵelementStart(80,"option",28),s.ɵɵtext(81,"Austria"),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementStart(83,"option",29),s.ɵɵtext(84,"Azerbaijan"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"option",30),s.ɵɵtext(87,"Bahamas"),s.ɵɵelementEnd(),s.ɵɵtext(88,"\n "),s.ɵɵelementStart(89,"option",31),s.ɵɵtext(90,"Bahrain"),s.ɵɵelementEnd(),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"option",32),s.ɵɵtext(93,"Bangladesh"),s.ɵɵelementEnd(),s.ɵɵtext(94,"\n "),s.ɵɵelementStart(95,"option",33),s.ɵɵtext(96,"Barbados"),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"option",34),s.ɵɵtext(99,"Belarus"),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵelementStart(101,"option",35),s.ɵɵtext(102,"Belgium"),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n "),s.ɵɵelementStart(104,"option",36),s.ɵɵtext(105,"Belize"),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementStart(107,"option",37),s.ɵɵtext(108,"Benin"),s.ɵɵelementEnd(),s.ɵɵtext(109,"\n "),s.ɵɵelementStart(110,"option",38),s.ɵɵtext(111,"Bermuda"),s.ɵɵelementEnd(),s.ɵɵtext(112,"\n "),s.ɵɵelementStart(113,"option",39),s.ɵɵtext(114,"Bhutan"),s.ɵɵelementEnd(),s.ɵɵtext(115,"\n "),s.ɵɵelementStart(116,"option",40),s.ɵɵtext(117,"Bolivia, Plurinational State of"),s.ɵɵelementEnd(),s.ɵɵtext(118,"\n "),s.ɵɵelementStart(119,"option",41),s.ɵɵtext(120,"Bonaire, Sint Eustatius and Saba"),s.ɵɵelementEnd(),s.ɵɵtext(121,"\n "),s.ɵɵelementStart(122,"option",42),s.ɵɵtext(123,"Bosnia and Herzegovina"),s.ɵɵelementEnd(),s.ɵɵtext(124,"\n "),s.ɵɵelementStart(125,"option",43),s.ɵɵtext(126,"Botswana"),s.ɵɵelementEnd(),s.ɵɵtext(127,"\n "),s.ɵɵelementStart(128,"option",44),s.ɵɵtext(129,"Bouvet Island"),s.ɵɵelementEnd(),s.ɵɵtext(130,"\n "),s.ɵɵelementStart(131,"option",45),s.ɵɵtext(132,"Brazil"),s.ɵɵelementEnd(),s.ɵɵtext(133,"\n "),s.ɵɵelementStart(134,"option",46),s.ɵɵtext(135,"British Indian Ocean Territory"),s.ɵɵelementEnd(),s.ɵɵtext(136,"\n "),s.ɵɵelementStart(137,"option",47),s.ɵɵtext(138,"Brunei Darussalam"),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementStart(140,"option",48),s.ɵɵtext(141,"Bulgaria"),s.ɵɵelementEnd(),s.ɵɵtext(142,"\n "),s.ɵɵelementStart(143,"option",49),s.ɵɵtext(144,"Burkina Faso"),s.ɵɵelementEnd(),s.ɵɵtext(145,"\n "),s.ɵɵelementStart(146,"option",50),s.ɵɵtext(147,"Burundi"),s.ɵɵelementEnd(),s.ɵɵtext(148,"\n "),s.ɵɵelementStart(149,"option",51),s.ɵɵtext(150,"Cambodia"),s.ɵɵelementEnd(),s.ɵɵtext(151,"\n "),s.ɵɵelementStart(152,"option",52),s.ɵɵtext(153,"Cameroon"),s.ɵɵelementEnd(),s.ɵɵtext(154,"\n "),s.ɵɵelementStart(155,"option",53),s.ɵɵtext(156,"Cape Verde"),s.ɵɵelementEnd(),s.ɵɵtext(157,"\n "),s.ɵɵelementStart(158,"option",54),s.ɵɵtext(159,"Cayman Islands"),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"option",55),s.ɵɵtext(162,"Central African Republic"),s.ɵɵelementEnd(),s.ɵɵtext(163,"\n "),s.ɵɵelementStart(164,"option",56),s.ɵɵtext(165,"Chad"),s.ɵɵelementEnd(),s.ɵɵtext(166,"\n "),s.ɵɵelementStart(167,"option",57),s.ɵɵtext(168,"Chile"),s.ɵɵelementEnd(),s.ɵɵtext(169,"\n "),s.ɵɵelementStart(170,"option",58),s.ɵɵtext(171,"Christmas Island"),s.ɵɵelementEnd(),s.ɵɵtext(172,"\n "),s.ɵɵelementStart(173,"option",59),s.ɵɵtext(174,"Cocos (Keeling) Islands"),s.ɵɵelementEnd(),s.ɵɵtext(175,"\n "),s.ɵɵelementStart(176,"option",60),s.ɵɵtext(177,"Colombia"),s.ɵɵelementEnd(),s.ɵɵtext(178,"\n "),s.ɵɵelementStart(179,"option",61),s.ɵɵtext(180,"Comoros"),s.ɵɵelementEnd(),s.ɵɵtext(181,"\n "),s.ɵɵelementStart(182,"option",62),s.ɵɵtext(183,"Congo"),s.ɵɵelementEnd(),s.ɵɵtext(184,"\n "),s.ɵɵelementStart(185,"option",63),s.ɵɵtext(186,"Congo, the Democratic Republic of the"),s.ɵɵelementEnd(),s.ɵɵtext(187,"\n "),s.ɵɵelementStart(188,"option",64),s.ɵɵtext(189,"Cook Islands"),s.ɵɵelementEnd(),s.ɵɵtext(190,"\n "),s.ɵɵelementStart(191,"option",65),s.ɵɵtext(192,"Costa Rica"),s.ɵɵelementEnd(),s.ɵɵtext(193,"\n "),s.ɵɵelementStart(194,"option",66),s.ɵɵtext(195,"Côte d'Ivoire"),s.ɵɵelementEnd(),s.ɵɵtext(196,"\n "),s.ɵɵelementStart(197,"option",67),s.ɵɵtext(198,"Croatia"),s.ɵɵelementEnd(),s.ɵɵtext(199,"\n "),s.ɵɵelementStart(200,"option",68),s.ɵɵtext(201,"Cuba"),s.ɵɵelementEnd(),s.ɵɵtext(202,"\n "),s.ɵɵelementStart(203,"option",69),s.ɵɵtext(204,"Curaçao"),s.ɵɵelementEnd(),s.ɵɵtext(205,"\n "),s.ɵɵelementStart(206,"option",70),s.ɵɵtext(207,"Cyprus"),s.ɵɵelementEnd(),s.ɵɵtext(208,"\n "),s.ɵɵelementStart(209,"option",71),s.ɵɵtext(210,"Czech Republic"),s.ɵɵelementEnd(),s.ɵɵtext(211,"\n "),s.ɵɵelementStart(212,"option",72),s.ɵɵtext(213,"Denmark"),s.ɵɵelementEnd(),s.ɵɵtext(214,"\n "),s.ɵɵelementStart(215,"option",73),s.ɵɵtext(216,"Djibouti"),s.ɵɵelementEnd(),s.ɵɵtext(217,"\n "),s.ɵɵelementStart(218,"option",74),s.ɵɵtext(219,"Dominica"),s.ɵɵelementEnd(),s.ɵɵtext(220,"\n "),s.ɵɵelementStart(221,"option",75),s.ɵɵtext(222,"Dominican Republic"),s.ɵɵelementEnd(),s.ɵɵtext(223,"\n "),s.ɵɵelementStart(224,"option",76),s.ɵɵtext(225,"Ecuador"),s.ɵɵelementEnd(),s.ɵɵtext(226,"\n "),s.ɵɵelementStart(227,"option",77),s.ɵɵtext(228,"Egypt"),s.ɵɵelementEnd(),s.ɵɵtext(229,"\n "),s.ɵɵelementStart(230,"option",78),s.ɵɵtext(231,"El Salvador"),s.ɵɵelementEnd(),s.ɵɵtext(232,"\n "),s.ɵɵelementStart(233,"option",79),s.ɵɵtext(234,"Equatorial Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(235,"\n "),s.ɵɵelementStart(236,"option",80),s.ɵɵtext(237,"Eritrea"),s.ɵɵelementEnd(),s.ɵɵtext(238,"\n "),s.ɵɵelementStart(239,"option",81),s.ɵɵtext(240,"Estonia"),s.ɵɵelementEnd(),s.ɵɵtext(241,"\n "),s.ɵɵelementStart(242,"option",82),s.ɵɵtext(243,"Ethiopia"),s.ɵɵelementEnd(),s.ɵɵtext(244,"\n "),s.ɵɵelementStart(245,"option",83),s.ɵɵtext(246,"Falkland Islands (Malvinas)"),s.ɵɵelementEnd(),s.ɵɵtext(247,"\n "),s.ɵɵelementStart(248,"option",84),s.ɵɵtext(249,"Faroe Islands"),s.ɵɵelementEnd(),s.ɵɵtext(250,"\n "),s.ɵɵelementStart(251,"option",85),s.ɵɵtext(252,"Fiji"),s.ɵɵelementEnd(),s.ɵɵtext(253,"\n "),s.ɵɵelementStart(254,"option",86),s.ɵɵtext(255,"Finland"),s.ɵɵelementEnd(),s.ɵɵtext(256,"\n "),s.ɵɵelementStart(257,"option",87),s.ɵɵtext(258,"French Guiana"),s.ɵɵelementEnd(),s.ɵɵtext(259,"\n "),s.ɵɵelementStart(260,"option",88),s.ɵɵtext(261,"French Polynesia"),s.ɵɵelementEnd(),s.ɵɵtext(262,"\n "),s.ɵɵelementStart(263,"option",89),s.ɵɵtext(264,"French Southern Territories"),s.ɵɵelementEnd(),s.ɵɵtext(265,"\n "),s.ɵɵelementStart(266,"option",90),s.ɵɵtext(267,"Gabon"),s.ɵɵelementEnd(),s.ɵɵtext(268,"\n "),s.ɵɵelementStart(269,"option",91),s.ɵɵtext(270,"Gambia"),s.ɵɵelementEnd(),s.ɵɵtext(271,"\n "),s.ɵɵelementStart(272,"option",92),s.ɵɵtext(273,"Georgia"),s.ɵɵelementEnd(),s.ɵɵtext(274,"\n "),s.ɵɵelementStart(275,"option",93),s.ɵɵtext(276,"Ghana"),s.ɵɵelementEnd(),s.ɵɵtext(277,"\n "),s.ɵɵelementStart(278,"option",94),s.ɵɵtext(279,"Gibraltar"),s.ɵɵelementEnd(),s.ɵɵtext(280,"\n "),s.ɵɵelementStart(281,"option",95),s.ɵɵtext(282,"Greece"),s.ɵɵelementEnd(),s.ɵɵtext(283,"\n "),s.ɵɵelementStart(284,"option",96),s.ɵɵtext(285,"Greenland"),s.ɵɵelementEnd(),s.ɵɵtext(286,"\n "),s.ɵɵelementStart(287,"option",97),s.ɵɵtext(288,"Grenada"),s.ɵɵelementEnd(),s.ɵɵtext(289,"\n "),s.ɵɵelementStart(290,"option",98),s.ɵɵtext(291,"Guadeloupe"),s.ɵɵelementEnd(),s.ɵɵtext(292,"\n "),s.ɵɵelementStart(293,"option",99),s.ɵɵtext(294,"Guam"),s.ɵɵelementEnd(),s.ɵɵtext(295,"\n "),s.ɵɵelementStart(296,"option",100),s.ɵɵtext(297,"Guatemala"),s.ɵɵelementEnd(),s.ɵɵtext(298,"\n "),s.ɵɵelementStart(299,"option",101),s.ɵɵtext(300,"Guernsey"),s.ɵɵelementEnd(),s.ɵɵtext(301,"\n "),s.ɵɵelementStart(302,"option",102),s.ɵɵtext(303,"Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(304,"\n "),s.ɵɵelementStart(305,"option",103),s.ɵɵtext(306,"Guinea-Bissau"),s.ɵɵelementEnd(),s.ɵɵtext(307,"\n "),s.ɵɵelementStart(308,"option",104),s.ɵɵtext(309,"Guyana"),s.ɵɵelementEnd(),s.ɵɵtext(310,"\n "),s.ɵɵelementStart(311,"option",105),s.ɵɵtext(312,"Haiti"),s.ɵɵelementEnd(),s.ɵɵtext(313,"\n "),s.ɵɵelementStart(314,"option",106),s.ɵɵtext(315,"Heard Island and McDonald Islands"),s.ɵɵelementEnd(),s.ɵɵtext(316,"\n "),s.ɵɵelementStart(317,"option",107),s.ɵɵtext(318,"Holy See (Vatican City State)"),s.ɵɵelementEnd(),s.ɵɵtext(319,"\n "),s.ɵɵelementStart(320,"option",108),s.ɵɵtext(321,"Honduras"),s.ɵɵelementEnd(),s.ɵɵtext(322,"\n "),s.ɵɵelementStart(323,"option",109),s.ɵɵtext(324,"Hong Kong"),s.ɵɵelementEnd(),s.ɵɵtext(325,"\n "),s.ɵɵelementStart(326,"option",110),s.ɵɵtext(327,"Hungary"),s.ɵɵelementEnd(),s.ɵɵtext(328,"\n "),s.ɵɵelementStart(329,"option",111),s.ɵɵtext(330,"Iceland"),s.ɵɵelementEnd(),s.ɵɵtext(331,"\n "),s.ɵɵelementStart(332,"option",112),s.ɵɵtext(333,"Indonesia"),s.ɵɵelementEnd(),s.ɵɵtext(334,"\n "),s.ɵɵelementStart(335,"option",113),s.ɵɵtext(336,"Iran, Islamic Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(337,"\n "),s.ɵɵelementStart(338,"option",114),s.ɵɵtext(339,"Iraq"),s.ɵɵelementEnd(),s.ɵɵtext(340,"\n "),s.ɵɵelementStart(341,"option",115),s.ɵɵtext(342,"Ireland"),s.ɵɵelementEnd(),s.ɵɵtext(343,"\n "),s.ɵɵelementStart(344,"option",116),s.ɵɵtext(345,"Isle of Man"),s.ɵɵelementEnd(),s.ɵɵtext(346,"\n "),s.ɵɵelementStart(347,"option",117),s.ɵɵtext(348,"Israel"),s.ɵɵelementEnd(),s.ɵɵtext(349,"\n "),s.ɵɵelementStart(350,"option",118),s.ɵɵtext(351,"Italy"),s.ɵɵelementEnd(),s.ɵɵtext(352,"\n "),s.ɵɵelementStart(353,"option",119),s.ɵɵtext(354,"Jamaica"),s.ɵɵelementEnd(),s.ɵɵtext(355,"\n "),s.ɵɵelementStart(356,"option",120),s.ɵɵtext(357,"Japan"),s.ɵɵelementEnd(),s.ɵɵtext(358,"\n "),s.ɵɵelementStart(359,"option",121),s.ɵɵtext(360,"Jersey"),s.ɵɵelementEnd(),s.ɵɵtext(361,"\n "),s.ɵɵelementStart(362,"option",122),s.ɵɵtext(363,"Jordan"),s.ɵɵelementEnd(),s.ɵɵtext(364,"\n "),s.ɵɵelementStart(365,"option",123),s.ɵɵtext(366,"Kazakhstan"),s.ɵɵelementEnd(),s.ɵɵtext(367,"\n "),s.ɵɵelementStart(368,"option",124),s.ɵɵtext(369,"Kenya"),s.ɵɵelementEnd(),s.ɵɵtext(370,"\n "),s.ɵɵelementStart(371,"option",125),s.ɵɵtext(372,"Kiribati"),s.ɵɵelementEnd(),s.ɵɵtext(373,"\n "),s.ɵɵelementStart(374,"option",126),s.ɵɵtext(375,"Korea, Democratic People's Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(376,"\n "),s.ɵɵelementStart(377,"option",127),s.ɵɵtext(378,"Korea, Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(379,"\n "),s.ɵɵelementStart(380,"option",128),s.ɵɵtext(381,"Kuwait"),s.ɵɵelementEnd(),s.ɵɵtext(382,"\n "),s.ɵɵelementStart(383,"option",129),s.ɵɵtext(384,"Kyrgyzstan"),s.ɵɵelementEnd(),s.ɵɵtext(385,"\n "),s.ɵɵelementStart(386,"option",130),s.ɵɵtext(387,"Lao People's Democratic Republic"),s.ɵɵelementEnd(),s.ɵɵtext(388,"\n "),s.ɵɵelementStart(389,"option",131),s.ɵɵtext(390,"Latvia"),s.ɵɵelementEnd(),s.ɵɵtext(391,"\n "),s.ɵɵelementStart(392,"option",132),s.ɵɵtext(393,"Lebanon"),s.ɵɵelementEnd(),s.ɵɵtext(394,"\n "),s.ɵɵelementStart(395,"option",133),s.ɵɵtext(396,"Lesotho"),s.ɵɵelementEnd(),s.ɵɵtext(397,"\n "),s.ɵɵelementStart(398,"option",134),s.ɵɵtext(399,"Liberia"),s.ɵɵelementEnd(),s.ɵɵtext(400,"\n "),s.ɵɵelementStart(401,"option",135),s.ɵɵtext(402,"Libya"),s.ɵɵelementEnd(),s.ɵɵtext(403,"\n "),s.ɵɵelementStart(404,"option",136),s.ɵɵtext(405,"Liechtenstein"),s.ɵɵelementEnd(),s.ɵɵtext(406,"\n "),s.ɵɵelementStart(407,"option",137),s.ɵɵtext(408,"Lithuania"),s.ɵɵelementEnd(),s.ɵɵtext(409,"\n "),s.ɵɵelementStart(410,"option",138),s.ɵɵtext(411,"Luxembourg"),s.ɵɵelementEnd(),s.ɵɵtext(412,"\n "),s.ɵɵelementStart(413,"option",139),s.ɵɵtext(414,"Macao"),s.ɵɵelementEnd(),s.ɵɵtext(415,"\n "),s.ɵɵelementStart(416,"option",140),s.ɵɵtext(417,"Macedonia, the former Yugoslav Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(418,"\n "),s.ɵɵelementStart(419,"option",141),s.ɵɵtext(420,"Madagascar"),s.ɵɵelementEnd(),s.ɵɵtext(421,"\n "),s.ɵɵelementStart(422,"option",142),s.ɵɵtext(423,"Malawi"),s.ɵɵelementEnd(),s.ɵɵtext(424,"\n "),s.ɵɵelementStart(425,"option",143),s.ɵɵtext(426,"Malaysia"),s.ɵɵelementEnd(),s.ɵɵtext(427,"\n "),s.ɵɵelementStart(428,"option",144),s.ɵɵtext(429,"Maldives"),s.ɵɵelementEnd(),s.ɵɵtext(430,"\n "),s.ɵɵelementStart(431,"option",145),s.ɵɵtext(432,"Mali"),s.ɵɵelementEnd(),s.ɵɵtext(433,"\n "),s.ɵɵelementStart(434,"option",146),s.ɵɵtext(435,"Malta"),s.ɵɵelementEnd(),s.ɵɵtext(436,"\n "),s.ɵɵelementStart(437,"option",147),s.ɵɵtext(438,"Marshall Islands"),s.ɵɵelementEnd(),s.ɵɵtext(439,"\n "),s.ɵɵelementStart(440,"option",148),s.ɵɵtext(441,"Martinique"),s.ɵɵelementEnd(),s.ɵɵtext(442,"\n "),s.ɵɵelementStart(443,"option",149),s.ɵɵtext(444,"Mauritania"),s.ɵɵelementEnd(),s.ɵɵtext(445,"\n "),s.ɵɵelementStart(446,"option",150),s.ɵɵtext(447,"Mauritius"),s.ɵɵelementEnd(),s.ɵɵtext(448,"\n "),s.ɵɵelementStart(449,"option",151),s.ɵɵtext(450,"Mayotte"),s.ɵɵelementEnd(),s.ɵɵtext(451,"\n "),s.ɵɵelementStart(452,"option",152),s.ɵɵtext(453,"Mexico"),s.ɵɵelementEnd(),s.ɵɵtext(454,"\n "),s.ɵɵelementStart(455,"option",153),s.ɵɵtext(456,"Micronesia, Federated States of"),s.ɵɵelementEnd(),s.ɵɵtext(457,"\n "),s.ɵɵelementStart(458,"option",154),s.ɵɵtext(459,"Moldova, Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(460,"\n "),s.ɵɵelementStart(461,"option",155),s.ɵɵtext(462,"Monaco"),s.ɵɵelementEnd(),s.ɵɵtext(463,"\n "),s.ɵɵelementStart(464,"option",156),s.ɵɵtext(465,"Mongolia"),s.ɵɵelementEnd(),s.ɵɵtext(466,"\n "),s.ɵɵelementStart(467,"option",157),s.ɵɵtext(468,"Montenegro"),s.ɵɵelementEnd(),s.ɵɵtext(469,"\n "),s.ɵɵelementStart(470,"option",158),s.ɵɵtext(471,"Montserrat"),s.ɵɵelementEnd(),s.ɵɵtext(472,"\n "),s.ɵɵelementStart(473,"option",159),s.ɵɵtext(474,"Morocco"),s.ɵɵelementEnd(),s.ɵɵtext(475,"\n "),s.ɵɵelementStart(476,"option",160),s.ɵɵtext(477,"Mozambique"),s.ɵɵelementEnd(),s.ɵɵtext(478,"\n "),s.ɵɵelementStart(479,"option",161),s.ɵɵtext(480,"Myanmar"),s.ɵɵelementEnd(),s.ɵɵtext(481,"\n "),s.ɵɵelementStart(482,"option",162),s.ɵɵtext(483,"Namibia"),s.ɵɵelementEnd(),s.ɵɵtext(484,"\n "),s.ɵɵelementStart(485,"option",163),s.ɵɵtext(486,"Nauru"),s.ɵɵelementEnd(),s.ɵɵtext(487,"\n "),s.ɵɵelementStart(488,"option",164),s.ɵɵtext(489,"Nepal"),s.ɵɵelementEnd(),s.ɵɵtext(490,"\n "),s.ɵɵelementStart(491,"option",165),s.ɵɵtext(492,"Netherlands"),s.ɵɵelementEnd(),s.ɵɵtext(493,"\n "),s.ɵɵelementStart(494,"option",166),s.ɵɵtext(495,"New Caledonia"),s.ɵɵelementEnd(),s.ɵɵtext(496,"\n "),s.ɵɵelementStart(497,"option",167),s.ɵɵtext(498,"New Zealand"),s.ɵɵelementEnd(),s.ɵɵtext(499,"\n "),s.ɵɵelementStart(500,"option",168),s.ɵɵtext(501,"Nicaragua"),s.ɵɵelementEnd(),s.ɵɵtext(502,"\n "),s.ɵɵelementStart(503,"option",169),s.ɵɵtext(504,"Niger"),s.ɵɵelementEnd(),s.ɵɵtext(505,"\n "),s.ɵɵelementStart(506,"option",170),s.ɵɵtext(507,"Nigeria"),s.ɵɵelementEnd(),s.ɵɵtext(508,"\n "),s.ɵɵelementStart(509,"option",171),s.ɵɵtext(510,"Niue"),s.ɵɵelementEnd(),s.ɵɵtext(511,"\n "),s.ɵɵelementStart(512,"option",172),s.ɵɵtext(513,"Norfolk Island"),s.ɵɵelementEnd(),s.ɵɵtext(514,"\n "),s.ɵɵelementStart(515,"option",173),s.ɵɵtext(516,"Northern Mariana Islands"),s.ɵɵelementEnd(),s.ɵɵtext(517,"\n "),s.ɵɵelementStart(518,"option",174),s.ɵɵtext(519,"Norway"),s.ɵɵelementEnd(),s.ɵɵtext(520,"\n "),s.ɵɵelementStart(521,"option",175),s.ɵɵtext(522,"Oman"),s.ɵɵelementEnd(),s.ɵɵtext(523,"\n "),s.ɵɵelementStart(524,"option",176),s.ɵɵtext(525,"Pakistan"),s.ɵɵelementEnd(),s.ɵɵtext(526,"\n "),s.ɵɵelementStart(527,"option",177),s.ɵɵtext(528,"Palau"),s.ɵɵelementEnd(),s.ɵɵtext(529,"\n "),s.ɵɵelementStart(530,"option",178),s.ɵɵtext(531,"Palestinian Territory, Occupied"),s.ɵɵelementEnd(),s.ɵɵtext(532,"\n "),s.ɵɵelementStart(533,"option",179),s.ɵɵtext(534,"Panama"),s.ɵɵelementEnd(),s.ɵɵtext(535,"\n "),s.ɵɵelementStart(536,"option",180),s.ɵɵtext(537,"Papua New Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(538,"\n "),s.ɵɵelementStart(539,"option",181),s.ɵɵtext(540,"Paraguay"),s.ɵɵelementEnd(),s.ɵɵtext(541,"\n "),s.ɵɵelementStart(542,"option",182),s.ɵɵtext(543,"Peru"),s.ɵɵelementEnd(),s.ɵɵtext(544,"\n "),s.ɵɵelementStart(545,"option",183),s.ɵɵtext(546,"Philippines"),s.ɵɵelementEnd(),s.ɵɵtext(547,"\n "),s.ɵɵelementStart(548,"option",184),s.ɵɵtext(549,"Pitcairn"),s.ɵɵelementEnd(),s.ɵɵtext(550,"\n "),s.ɵɵelementStart(551,"option",185),s.ɵɵtext(552,"Poland"),s.ɵɵelementEnd(),s.ɵɵtext(553,"\n "),s.ɵɵelementStart(554,"option",186),s.ɵɵtext(555,"Portugal"),s.ɵɵelementEnd(),s.ɵɵtext(556,"\n "),s.ɵɵelementStart(557,"option",187),s.ɵɵtext(558,"Puerto Rico"),s.ɵɵelementEnd(),s.ɵɵtext(559,"\n "),s.ɵɵelementStart(560,"option",188),s.ɵɵtext(561,"Qatar"),s.ɵɵelementEnd(),s.ɵɵtext(562,"\n "),s.ɵɵelementStart(563,"option",189),s.ɵɵtext(564,"Réunion"),s.ɵɵelementEnd(),s.ɵɵtext(565,"\n "),s.ɵɵelementStart(566,"option",190),s.ɵɵtext(567,"Romania"),s.ɵɵelementEnd(),s.ɵɵtext(568,"\n "),s.ɵɵelementStart(569,"option",191),s.ɵɵtext(570,"Russian Federation"),s.ɵɵelementEnd(),s.ɵɵtext(571,"\n "),s.ɵɵelementStart(572,"option",192),s.ɵɵtext(573,"Rwanda"),s.ɵɵelementEnd(),s.ɵɵtext(574,"\n "),s.ɵɵelementStart(575,"option",193),s.ɵɵtext(576,"Saint Barthélemy"),s.ɵɵelementEnd(),s.ɵɵtext(577,"\n "),s.ɵɵelementStart(578,"option",194),s.ɵɵtext(579,"Saint Helena, Ascension and Tristan da Cunha"),s.ɵɵelementEnd(),s.ɵɵtext(580,"\n "),s.ɵɵelementStart(581,"option",195),s.ɵɵtext(582,"Saint Kitts and Nevis"),s.ɵɵelementEnd(),s.ɵɵtext(583,"\n "),s.ɵɵelementStart(584,"option",196),s.ɵɵtext(585,"Saint Lucia"),s.ɵɵelementEnd(),s.ɵɵtext(586,"\n "),s.ɵɵelementStart(587,"option",197),s.ɵɵtext(588,"Saint Martin (French part)"),s.ɵɵelementEnd(),s.ɵɵtext(589,"\n "),s.ɵɵelementStart(590,"option",198),s.ɵɵtext(591,"Saint Pierre and Miquelon"),s.ɵɵelementEnd(),s.ɵɵtext(592,"\n "),s.ɵɵelementStart(593,"option",199),s.ɵɵtext(594,"Saint Vincent and the Grenadines"),s.ɵɵelementEnd(),s.ɵɵtext(595,"\n "),s.ɵɵelementStart(596,"option",200),s.ɵɵtext(597,"Samoa"),s.ɵɵelementEnd(),s.ɵɵtext(598,"\n "),s.ɵɵelementStart(599,"option",201),s.ɵɵtext(600,"San Marino"),s.ɵɵelementEnd(),s.ɵɵtext(601,"\n ");s.ɵɵelementStart(602,"option",202),s.ɵɵtext(603,"Sao Tome and Principe"),s.ɵɵelementEnd(),s.ɵɵtext(604,"\n "),s.ɵɵelementStart(605,"option",203),s.ɵɵtext(606,"Saudi Arabia"),s.ɵɵelementEnd(),s.ɵɵtext(607,"\n "),s.ɵɵelementStart(608,"option",204),s.ɵɵtext(609,"Senegal"),s.ɵɵelementEnd(),s.ɵɵtext(610,"\n "),s.ɵɵelementStart(611,"option",205),s.ɵɵtext(612,"Serbia"),s.ɵɵelementEnd(),s.ɵɵtext(613,"\n "),s.ɵɵelementStart(614,"option",206),s.ɵɵtext(615,"Seychelles"),s.ɵɵelementEnd(),s.ɵɵtext(616,"\n "),s.ɵɵelementStart(617,"option",207),s.ɵɵtext(618,"Sierra Leone"),s.ɵɵelementEnd(),s.ɵɵtext(619,"\n "),s.ɵɵelementStart(620,"option",208),s.ɵɵtext(621,"Singapore"),s.ɵɵelementEnd(),s.ɵɵtext(622,"\n "),s.ɵɵelementStart(623,"option",209),s.ɵɵtext(624,"Sint Maarten (Dutch part)"),s.ɵɵelementEnd(),s.ɵɵtext(625,"\n "),s.ɵɵelementStart(626,"option",210),s.ɵɵtext(627,"Slovakia"),s.ɵɵelementEnd(),s.ɵɵtext(628,"\n "),s.ɵɵelementStart(629,"option",211),s.ɵɵtext(630,"Slovenia"),s.ɵɵelementEnd(),s.ɵɵtext(631,"\n "),s.ɵɵelementStart(632,"option",212),s.ɵɵtext(633,"Solomon Islands"),s.ɵɵelementEnd(),s.ɵɵtext(634,"\n "),s.ɵɵelementStart(635,"option",213),s.ɵɵtext(636,"Somalia"),s.ɵɵelementEnd(),s.ɵɵtext(637,"\n "),s.ɵɵelementStart(638,"option",214),s.ɵɵtext(639,"South Africa"),s.ɵɵelementEnd(),s.ɵɵtext(640,"\n "),s.ɵɵelementStart(641,"option",215),s.ɵɵtext(642,"South Georgia and the South Sandwich Islands"),s.ɵɵelementEnd(),s.ɵɵtext(643,"\n "),s.ɵɵelementStart(644,"option",216),s.ɵɵtext(645,"South Sudan"),s.ɵɵelementEnd(),s.ɵɵtext(646,"\n "),s.ɵɵelementStart(647,"option",217),s.ɵɵtext(648,"Spain"),s.ɵɵelementEnd(),s.ɵɵtext(649,"\n "),s.ɵɵelementStart(650,"option",218),s.ɵɵtext(651,"Sri Lanka"),s.ɵɵelementEnd(),s.ɵɵtext(652,"\n "),s.ɵɵelementStart(653,"option",219),s.ɵɵtext(654,"Sudan"),s.ɵɵelementEnd(),s.ɵɵtext(655,"\n "),s.ɵɵelementStart(656,"option",220),s.ɵɵtext(657,"Suriname"),s.ɵɵelementEnd(),s.ɵɵtext(658,"\n "),s.ɵɵelementStart(659,"option",221),s.ɵɵtext(660,"Svalbard and Jan Mayen"),s.ɵɵelementEnd(),s.ɵɵtext(661,"\n "),s.ɵɵelementStart(662,"option",222),s.ɵɵtext(663,"Swaziland"),s.ɵɵelementEnd(),s.ɵɵtext(664,"\n "),s.ɵɵelementStart(665,"option",223),s.ɵɵtext(666,"Sweden"),s.ɵɵelementEnd(),s.ɵɵtext(667,"\n "),s.ɵɵelementStart(668,"option",224),s.ɵɵtext(669,"Switzerland"),s.ɵɵelementEnd(),s.ɵɵtext(670,"\n "),s.ɵɵelementStart(671,"option",225),s.ɵɵtext(672,"Syrian Arab Republic"),s.ɵɵelementEnd(),s.ɵɵtext(673,"\n "),s.ɵɵelementStart(674,"option",226),s.ɵɵtext(675,"Taiwan"),s.ɵɵelementEnd(),s.ɵɵtext(676,"\n "),s.ɵɵelementStart(677,"option",227),s.ɵɵtext(678,"Tajikistan"),s.ɵɵelementEnd(),s.ɵɵtext(679,"\n "),s.ɵɵelementStart(680,"option",228),s.ɵɵtext(681,"Tanzania, United Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(682,"\n "),s.ɵɵelementStart(683,"option",229),s.ɵɵtext(684,"Thailand"),s.ɵɵelementEnd(),s.ɵɵtext(685,"\n "),s.ɵɵelementStart(686,"option",230),s.ɵɵtext(687,"Timor-Leste"),s.ɵɵelementEnd(),s.ɵɵtext(688,"\n "),s.ɵɵelementStart(689,"option",231),s.ɵɵtext(690,"Togo"),s.ɵɵelementEnd(),s.ɵɵtext(691,"\n "),s.ɵɵelementStart(692,"option",232),s.ɵɵtext(693,"Tokelau"),s.ɵɵelementEnd(),s.ɵɵtext(694,"\n "),s.ɵɵelementStart(695,"option",233),s.ɵɵtext(696,"Tonga"),s.ɵɵelementEnd(),s.ɵɵtext(697,"\n "),s.ɵɵelementStart(698,"option",234),s.ɵɵtext(699,"Trinidad and Tobago"),s.ɵɵelementEnd(),s.ɵɵtext(700,"\n "),s.ɵɵelementStart(701,"option",235),s.ɵɵtext(702,"Tunisia"),s.ɵɵelementEnd(),s.ɵɵtext(703,"\n "),s.ɵɵelementStart(704,"option",236),s.ɵɵtext(705,"Turkey"),s.ɵɵelementEnd(),s.ɵɵtext(706,"\n "),s.ɵɵelementStart(707,"option",237),s.ɵɵtext(708,"Turkmenistan"),s.ɵɵelementEnd(),s.ɵɵtext(709,"\n "),s.ɵɵelementStart(710,"option",238),s.ɵɵtext(711,"Turks and Caicos Islands"),s.ɵɵelementEnd(),s.ɵɵtext(712,"\n "),s.ɵɵelementStart(713,"option",239),s.ɵɵtext(714,"Tuvalu"),s.ɵɵelementEnd(),s.ɵɵtext(715,"\n "),s.ɵɵelementStart(716,"option",240),s.ɵɵtext(717,"Uganda"),s.ɵɵelementEnd(),s.ɵɵtext(718,"\n "),s.ɵɵelementStart(719,"option",241),s.ɵɵtext(720,"Ukraine"),s.ɵɵelementEnd(),s.ɵɵtext(721,"\n "),s.ɵɵelementStart(722,"option",242),s.ɵɵtext(723,"United Arab Emirates"),s.ɵɵelementEnd(),s.ɵɵtext(724,"\n "),s.ɵɵelementStart(725,"option",243),s.ɵɵtext(726,"United States Minor Outlying Islands"),s.ɵɵelementEnd(),s.ɵɵtext(727,"\n "),s.ɵɵelementStart(728,"option",244),s.ɵɵtext(729,"Uruguay"),s.ɵɵelementEnd(),s.ɵɵtext(730,"\n "),s.ɵɵelementStart(731,"option",245),s.ɵɵtext(732,"Uzbekistan"),s.ɵɵelementEnd(),s.ɵɵtext(733,"\n "),s.ɵɵelementStart(734,"option",246),s.ɵɵtext(735,"Vanuatu"),s.ɵɵelementEnd(),s.ɵɵtext(736,"\n "),s.ɵɵelementStart(737,"option",247),s.ɵɵtext(738,"Venezuela, Bolivarian Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(739,"\n "),s.ɵɵelementStart(740,"option",248),s.ɵɵtext(741,"Viet Nam"),s.ɵɵelementEnd(),s.ɵɵtext(742,"\n "),s.ɵɵelementStart(743,"option",249),s.ɵɵtext(744,"Virgin Islands, British"),s.ɵɵelementEnd(),s.ɵɵtext(745,"\n "),s.ɵɵelementStart(746,"option",250),s.ɵɵtext(747,"Virgin Islands, U.S."),s.ɵɵelementEnd(),s.ɵɵtext(748,"\n "),s.ɵɵelementStart(749,"option",251),s.ɵɵtext(750,"Wallis and Futuna"),s.ɵɵelementEnd(),s.ɵɵtext(751,"\n "),s.ɵɵelementStart(752,"option",252),s.ɵɵtext(753,"Western Sahara"),s.ɵɵelementEnd(),s.ɵɵtext(754,"\n "),s.ɵɵelementStart(755,"option",253),s.ɵɵtext(756,"Yemen"),s.ɵɵelementEnd(),s.ɵɵtext(757,"\n "),s.ɵɵelementStart(758,"option",254),s.ɵɵtext(759,"Zambia"),s.ɵɵelementEnd(),s.ɵɵtext(760,"\n "),s.ɵɵelementStart(761,"option",255),s.ɵɵtext(762,"Zimbabwe"),s.ɵɵelementEnd(),s.ɵɵtext(763,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(764,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(765,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(766,"\n "),s.ɵɵelementStart(767,"div",256),s.ɵɵtext(768,"\n "),s.ɵɵelementStart(769,"div",2),s.ɵɵtext(770,"\n "),s.ɵɵelementStart(771,"label",257),s.ɵɵtext(772),s.ɵɵpipe(773,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(774,"\n "),s.ɵɵelementStart(775,"input",258),s.ɵɵlistener("ngModelChange",(function(e){return t.taxInfo.postalCode=e})),s.ɵɵelementEnd(),s.ɵɵtext(776,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(777,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(778,"\n "),s.ɵɵtemplate(779,h,11,4,"div",259),s.ɵɵtext(780,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(781,"\n"),s.ɵɵtemplate(782,v,14,4,"div",260),s.ɵɵtext(783,"\n"),s.ɵɵtemplate(784,g,50,16,"div",260),s.ɵɵtext(785,"\n")}2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,8,"country")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.taxInfo.country),s.ɵɵadvance(762),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(773,10,"zipPostalCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.taxInfo.postalCode)("required","US"===t.taxInfo.country),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.organizationId&&"US"!==t.taxInfo.country),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.organizationId&&t.taxInfo.includeTaxId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organizationId&&t.taxInfo.includeTaxId))},directives:[p.SelectControlValueAccessor,p.RequiredValidator,p.NgControlStatus,p.NgModel,p.NgSelectOption,p.ɵNgSelectMultipleOption,p.DefaultValueAccessor,u.NgIf,p.CheckboxControlValueAccessor],pipes:[m.I18nPipe],encapsulation:2})},59751:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticatorComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(73569),n(57055);const r=n(97374),o=n(57952),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(57055),p=n(73828),u=n(36631),m=n(73569),h=n(8863),v=n(57490),g=n(12720),f=n(96832),y=n(56820),x=n(51626),S=n(48198),b=n(99729);function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",28),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"p"),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"strong"),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"twoStepAuthenticatorDesc")),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("1. ",s.ɵɵpipeBind1(12,4,"twoStepAuthenticatorDownloadApp"),""))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"p"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"img",28),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"p"),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,4,"enabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,6,"twoStepLoginProviderEnabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(9,8,"twoStepAuthenticatorReaddDesc"),"\n "),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,10,"twoStepAuthenticatorNeedApp")))}function E(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"strong"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("2. ",s.ɵɵpipeBind1(4,1,"twoStepAuthenticatorScanCode"),""))}function P(e,t){1&e&&s.ɵɵelement(0,"hr")}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",30),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"input",31),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).token=t})),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("3. ",s.ɵɵpipeBind1(4,2,"twoStepAuthenticatorEnterCode"),""),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enable")))}function A(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"disable")))}const T=function(e){return{"mb-0":e}};function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,C,15,6,"ng-container",13),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,I,17,12,"ng-container",13),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"ul",14),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"li"),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"i",15),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementStart(16,"a",16),s.ɵɵtext(17,"Authy"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"li"),s.ɵɵtext(21,"\n "),s.ɵɵelement(22,"i",17),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementStart(25,"a",18),s.ɵɵtext(26,"Authy"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"li"),s.ɵɵtext(30,"\n "),s.ɵɵelement(31,"i",19),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementStart(34,"a",20),s.ɵɵtext(35,"Microsoft Authenticator"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"p"),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵtemplate(43,E,6,3,"p",13),s.ɵɵtext(44,"\n "),s.ɵɵtemplate(45,P,1,0,"hr",13),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"p",21),s.ɵɵtext(48,"\n "),s.ɵɵelement(49,"canvas",22),s.ɵɵelement(50,"br"),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"code",23),s.ɵɵpipe(53,"i18n"),s.ɵɵtext(54),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵtemplate(57,O,8,4,"ng-container",13),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"div",24),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"button",25),s.ɵɵtext(63,"\n "),s.ɵɵelement(64,"i",26),s.ɵɵpipe(65,"i18n"),s.ɵɵtext(66,"\n "),s.ɵɵtemplate(67,k,3,3,"span",13),s.ɵɵtext(68,"\n "),s.ɵɵtemplate(69,A,3,3,"span",13),s.ɵɵtext(70,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(71,"\n "),s.ɵɵelementStart(72,"button",27),s.ɵɵtext(73),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(15,18,"iosDevices"),":\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(24,20,"androidDevices"),":\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(33,22,"windowsDevices"),":\n "),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,24,"twoStepAuthenticatorAppsRecommended")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(32,T,t.enabled)),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(53,26,"key")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(t.key),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(65,28,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(74,30,"close"),"\n ")}}class B extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,i,o,n),this.stateService=a,this.type=r.TwoFactorProviderType.Authenticator,this.qrScript=window.document.createElement("script"),this.qrScript.src="scripts/qrious.min.js",this.qrScript.async=!0}ngOnInit(){window.document.body.appendChild(this.qrScript)}ngOnDestroy(){window.document.body.removeChild(this.qrScript)}auth(e){return super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorAuthenticatorRequest);return t.token=this.token,t.key=this.key,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorAuthenticator(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){return i(this,void 0,void 0,(function*(){this.token=null,this.enabled=e.enabled,this.key=e.key;const t=yield this.stateService.getEmail();window.setTimeout((()=>{new window.QRious({element:document.getElementById("qr"),value:"otpauth://totp/Bitwarden:"+encodeURIComponent(t)+"?secret="+encodeURIComponent(this.key)+"&issuer=Bitwarden",size:160})}),100)}))}}t.TwoFactorAuthenticatorComponent=B,B.ɵfac=function(e){return new(e||B)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.UserVerificationService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.StateService))},B.ɵcmp=s.ɵɵdefineComponent({type:B,selectors:[["app-two-factor-authenticator"]],features:[s.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faAuthenticatorTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faAuthenticatorTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"bwi-ul"],[1,"bwi","bwi-li","bwi-apple"],["href","https://itunes.apple.com/us/app/authy/id494168017?mt=8","target","_blank","rel","noopener"],[1,"bwi","bwi-li","bwi-android"],["href","https://play.google.com/store/apps/details?id=com.authy.authy","target","_blank","rel","noopener"],[1,"bwi","bwi-li","bwi-windows"],["href","https://www.microsoft.com/p/authenticator/9wzdncrfj3rj","target","_blank","rel","noopener"],[1,"text-center",3,"ngClass"],["id","qr"],[3,"appA11yTitle"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["alt","Authenticator app logo",1,"float-right","mfaType0"],["type","success","icon","bwi bwi-check-circle",3,"title"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"h2",4),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementStart(11,"small"),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"button",5),s.ɵɵpipe(17,"i18n"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"span",6),s.ɵɵtext(20,"×"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,w,2,2,"app-two-factor-verify",7),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,M,77,34,"form",8),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n")),2&e&&(s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,7,"authenticatorAppTitle")),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(17,9,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",!t.authed),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.authed))},directives:[h.A11yTitleDirective,v.NgIf,g.TwoFactorVerifyComponent,f.NgControlStatusGroup,f.NgForm,y.ApiActionDirective,v.NgClass,x.CalloutComponent,f.DefaultValueAccessor,f.RequiredValidator,S.InputVerbatimDirective,f.NgControlStatus,f.NgModel],pipes:[b.I18nPipe],encapsulation:2})},40906:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorBaseComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(57055),n(97374)),a=n(40205),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055);class m{constructor(e,t,n,i,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.userVerificationService=a,this.onUpdated=new r.EventEmitter,this.twoFactorProviderType=o.TwoFactorProviderType,this.enabled=!1,this.authed=!1}auth(e){this.hashedSecret=e.secret,this.verificationType=e.verificationType,this.authed=!0}enable(e){return i(this,void 0,void 0,(function*(){try{yield e(),this.onUpdated.emit(!0)}catch(t){this.logService.error(t)}}))}disable(e){return i(this,void 0,void 0,(function*(){if(yield this.platformUtilsService.showDialog(this.i18nService.t("twoStepDisableDesc"),this.i18nService.t("disable"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{const t=yield this.buildRequestModel(a.TwoFactorProviderRequest);t.type=this.type,e=null!=this.organizationId?this.apiService.putTwoFactorOrganizationDisable(this.organizationId,t):this.apiService.putTwoFactorDisable(t),yield e,this.enabled=!1,this.platformUtilsService.showToast("success",null,this.i18nService.t("twoStepDisabled")),this.onUpdated.emit(!1)}catch(t){this.logService.error(t)}}))}buildRequestModel(e){return i(this,void 0,void 0,(function*(){return this.userVerificationService.buildRequest({secret:this.hashedSecret,type:this.verificationType},e,!0)}))}}t.TwoFactorBaseComponent=m,m.ɵfac=function(e){return new(e||m)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService),s.ɵɵdirectiveInject(u.UserVerificationService))},m.ɵdir=s.ɵɵdefineDirective({type:m,outputs:{onUpdated:"onUpdated"}})},71790:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorDuoComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(37682),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055),m=n(8863),h=n(57490),v=n(12720),g=n(96832),f=n(56820),y=n(51626),x=n(48198),S=n(99729);function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function w(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",18),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelement(7,"img",19),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"strong"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12),s.ɵɵelement(13,"br"),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"strong"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18),s.ɵɵelement(19,"br"),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"strong"),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,8,"enabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(5,10,"twoStepLoginProviderEnabled"),"\n "),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(11,12,"twoFactorDuoIntegrationKey"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.ikey,"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(17,14,"twoFactorDuoSecretKey"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.skey,"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(23,16,"twoFactorDuoApiHostname"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.host,"\n ")}}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",19),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",20),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",21),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",22),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).ikey=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",20),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"label",23),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"input",24),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).skey=t})),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",20),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"label",25),s.ɵɵtext(29),s.ɵɵpipe(30,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"input",26),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).host=t})),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,8,"twoFactorDuoDesc")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,10,"twoFactorDuoIntegrationKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.ikey),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(21,12,"twoFactorDuoSecretKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.skey),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(30,14,"twoFactorDuoApiHostname")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(33,16,"ex")," api-xxxxxxxx.duosecurity.com"),s.ɵɵproperty("ngModel",e.host)}}function I(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enable")))}function E(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"disable")))}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,w,25,18,"ng-container",13),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,C,36,18,"ng-container",13),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",14),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"button",15),s.ɵɵtext(13,"\n "),s.ɵɵelement(14,"i",16),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,I,3,3,"span",13),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,E,3,3,"span",13),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"button",17),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(15,8,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(24,10,"close"),"\n ")}}class O extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o){super(e,t,n,i,o),this.type=r.TwoFactorProviderType.Duo}auth(e){super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorDuoRequest);return t.integrationKey=this.ikey,t.secretKey=this.skey,t.host=this.host,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){null!=this.organizationId?this.formPromise=this.apiService.putTwoFactorOrganizationDuo(this.organizationId,t):this.formPromise=this.apiService.putTwoFactorDuo(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){this.ikey=e.integrationKey,this.skey=e.secretKey,this.host=e.host,this.enabled=e.enabled}}t.TwoFactorDuoComponent=O,O.ɵfac=function(e){return new(e||O)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService),s.ɵɵdirectiveInject(u.UserVerificationService))},O.ɵcmp=s.ɵɵdefineComponent({type:O,selectors:[["app-two-factor-duo"]],features:[s.ɵɵInheritDefinitionFeature],decls:30,vars:8,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faDuoTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["title","2faDuoTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],["alt","Duo logo",1,"float-right","ml-3","mfaType2"],[1,"form-group"],["for","ikey"],["id","ikey","type","text","name","IntegrationKey","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","skey"],["id","skey","type","password","name","SecretKey","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["for","host"],["id","host","type","text","name","Host","required","","appInputVerbatim","",1,"form-control",3,"ngModel","placeholder","ngModelChange"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"h2",4),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementStart(11,"small"),s.ɵɵtext(12,"Duo"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",5),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",6),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,b,2,2,"app-two-factor-verify",7),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,P,27,12,"form",8),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n")),2&e&&(s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,4,"twoStepLogin"),"\n "),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,6,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",!t.authed),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.authed))},directives:[m.A11yTitleDirective,h.NgIf,v.TwoFactorVerifyComponent,g.NgControlStatusGroup,g.NgForm,f.ApiActionDirective,y.CalloutComponent,g.DefaultValueAccessor,g.RequiredValidator,x.InputVerbatimDirective,g.NgControlStatus,g.NgModel],pipes:[S.I18nPipe],encapsulation:2})},96055:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(73569),n(57055);const r=n(97374),o=n(88307),a=n(3191),s=n(40906),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(36631),m=n(57055),h=n(73569),v=n(8863),g=n(57490),f=n(12720),y=n(96832),x=n(56820),S=n(51626),b=n(48198),w=n(99729);function C(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"app-two-factor-verify",9),l.ɵɵlistener("onAuthed",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().auth(t)})),l.ɵɵtext(1,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function I(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"app-callout",18),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"strong"),l.ɵɵtext(8),l.ɵɵpipe(9,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(10),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext(2);l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,4,"enabled")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,6,"twoStepLoginProviderEnabled"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind1(9,8,"email"),":"),l.ɵɵadvance(2),l.ɵɵtextInterpolate1(" ",e.email,"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementStart(0,"span",31),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext(3);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind2(2,1,"verificationCodeEmailSent",e.sentEmail),"\n ")}}function P(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p",19),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"span",20),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelement(8,"img",21),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(10,"\n "),l.ɵɵelementStart(11,"div",22),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"label",23),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementStart(17,"input",24),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).email=t})),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",25),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"button",26,27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).sendEmail()})),l.ɵɵtext(24,"\n "),l.ɵɵelement(25,"i",16),l.ɵɵpipe(26,"i18n"),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"span"),l.ɵɵtext(29),l.ɵɵpipe(30,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵtemplate(33,E,3,4,"span",28),l.ɵɵtext(34,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(35,"\n "),l.ɵɵelementStart(36,"div",22),l.ɵɵtext(37,"\n "),l.ɵɵelementStart(38,"label",29),l.ɵɵtext(39),l.ɵɵpipe(40,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"input",30),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).token=t})),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n "),l.ɵɵelementContainerEnd()}if(2&e){const e=l.ɵɵreference(23),t=l.ɵɵnextContext(2);l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(6,10,"twoFactorEmailDesc")),l.ɵɵadvance(9),l.ɵɵtextInterpolate1("1. ",l.ɵɵpipeBind1(15,12,"twoFactorEmailEnterEmail"),""),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",t.email),l.ɵɵadvance(5),l.ɵɵproperty("appApiAction",t.emailPromise)("disabled",e.loading),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(26,14,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(30,16,"sendEmail")),l.ɵɵadvance(4),l.ɵɵproperty("ngIf",t.sentEmail),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("2. ",l.ɵɵpipeBind1(40,18,"twoFactorEmailEnterCode"),""),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",t.token)}}function O(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"enable")))}function k(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"disable")))}function A(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"form",10,11),l.ɵɵlistener("ngSubmit",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(2,"\n "),l.ɵɵelementStart(3,"div",12),l.ɵɵtext(4,"\n "),l.ɵɵtemplate(5,I,11,10,"ng-container",13),l.ɵɵtext(6,"\n "),l.ɵɵtemplate(7,P,45,20,"ng-container",13),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"div",14),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",15),l.ɵɵtext(13,"\n "),l.ɵɵelement(14,"i",16),l.ɵɵpipe(15,"i18n"),l.ɵɵtext(16,"\n "),l.ɵɵtemplate(17,O,3,3,"span",13),l.ɵɵtext(18,"\n "),l.ɵɵtemplate(19,k,3,3,"span",13),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"button",17),l.ɵɵtext(23),l.ɵɵpipe(24,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵreference(1),t=l.ɵɵnextContext();l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",t.enabled),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.enabled),l.ɵɵadvance(5),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(15,8,"loading")),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",!t.enabled),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.enabled),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(24,10,"close"),"\n ")}}class T extends s.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,n,i,o),this.stateService=a,this.type=r.TwoFactorProviderType.Email}auth(e){return super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}sendEmail(){return i(this,void 0,void 0,(function*(){try{const e=yield this.buildRequestModel(o.TwoFactorEmailRequest);e.email=this.email,this.emailPromise=this.apiService.postTwoFactorEmailSetup(e),yield this.emailPromise,this.sentEmail=this.email}catch(e){this.logService.error(e)}}))}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(a.UpdateTwoFactorEmailRequest);return t.email=this.email,t.token=this.token,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorEmail(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){return i(this,void 0,void 0,(function*(){this.token=null,this.email=e.email,this.enabled=e.enabled,this.enabled||null!=this.email&&""!==this.email||(this.email=yield this.stateService.getEmail())}))}}t.TwoFactorEmailComponent=T,T.ɵfac=function(e){return new(e||T)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.LogService),l.ɵɵdirectiveInject(m.UserVerificationService),l.ɵɵdirectiveInject(h.StateService))},T.ɵcmp=l.ɵɵdefineComponent({type:T,selectors:[["app-two-factor-email"]],features:[l.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faEmailTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faEmailTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],[1,"d-flex"],[1,"mr-3"],["alt","Email logo",1,"float-right","ml-auto","mfaType1"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"mb-3","d-flex"],["type","button",1,"btn","btn-outline-primary","btn-sm","btn-submit","align-self-start",3,"appApiAction","disabled","click"],["sendBtn",""],["class","text-success ml-3",4,"ngIf"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"text-success","ml-3"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementStart(11,"small"),l.ɵɵtext(12),l.ɵɵpipe(13,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"button",5),l.ɵɵpipe(17,"i18n"),l.ɵɵtext(18,"\n "),l.ɵɵelementStart(19,"span",6),l.ɵɵtext(20,"×"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,C,2,2,"app-two-factor-verify",7),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,A,27,12,"form",8),l.ɵɵtext(27,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(29,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(13,7,"emailTitle")),l.ɵɵadvance(4),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(17,9,"close")),l.ɵɵadvance(8),l.ɵɵproperty("ngIf",!t.authed),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.authed))},directives:[v.A11yTitleDirective,g.NgIf,f.TwoFactorVerifyComponent,y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.CalloutComponent,y.DefaultValueAccessor,y.RequiredValidator,b.InputVerbatimDirective,y.NgControlStatus,y.NgModel],pipes:[w.I18nPipe],encapsulation:2})},64542:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoveryComponent=void 0;n(51554);const i=n(97374),r=n(32621),o=n(51554),a=n(8863),s=n(57490),l=n(12720),c=n(99729);function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-two-factor-verify",9),r.ɵɵlistener("onAuthed",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().auth(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function p(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"p"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"code",14),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(4,2,"twoFactorRecoveryYourCode"),":"),r.ɵɵadvance(4),r.ɵɵtextInterpolate(e.code)}}function u(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"twoFactorRecoveryNoCode"),"\n "))}function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).print()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"printCode"),"\n "))}function h(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",10),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,p,9,4,"ng-container",8),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,u,3,3,"ng-container",8),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",11),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,m,3,3,"button",12),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",13),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.code),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.code),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.code),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,4,"close"),"\n ")}}class v{constructor(e){this.i18nService=e,this.type=-1,this.twoFactorProviderType=i.TwoFactorProviderType}auth(e){this.authed=!0,this.processResponse(e.response)}print(){const e=window.open();e.document.write('

'+this.i18nService.t("twoFactorRecoveryYourCode")+":

"+this.code+'

'+new Date+"

"),e.onafterprint=()=>e.close(),e.print()}formatString(e){return null==e?null:e.replace(/(.{4})/g,"$1 ").trim().toUpperCase()}processResponse(e){this.code=this.formatString(e.code)}}t.TwoFactorRecoveryComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.I18nService))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-two-factor-recovery"]],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faRecoveryTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faRecoveryTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],[4,"ngIf"],[3,"organizationId","type","onAuthed"],[1,"modal-body","text-center"],[1,"modal-footer"],["type","button","class","btn btn-primary",3,"click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-lg"],["type","button",1,"btn","btn-primary",3,"click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementStart(11,"small"),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"button",5),r.ɵɵpipe(17,"i18n"),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"span",6),r.ɵɵtext(20,"×"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,d,2,2,"app-two-factor-verify",7),r.ɵɵtext(25,"\n "),r.ɵɵtemplate(26,h,18,6,"ng-container",8),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,7,"recoveryCodeTitle")),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(17,9,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.authed),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.authed))},directives:[a.A11yTitleDirective,s.NgIf,l.TwoFactorVerifyComponent],pipes:[c.I18nPipe],encapsulation:2})},35906:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorSetupComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(45552),n(62166),n(73569),n(49906)),a=n(97374),s=n(96837),l=n(59751),c=n(71790),d=n(96055),p=n(64542),u=n(84472),m=n(80445),h=n(32621),v=n(91674),g=n(64684),f=n(45552),y=n(62166),x=n(73569),S=n(57490),b=n(20138),w=n(52767),C=n(48403),I=n(99729),E=["recoveryTemplate"],P=["authenticatorTemplate"],O=["yubikeyTemplate"],k=["duoTemplate"],A=["emailTemplate"],T=["webAuthnTemplate"];function M(e,t){1&e&&(h.ɵɵelementStart(0,"p"),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(2,1,"twoStepLoginDesc")))}function B(e,t){1&e&&(h.ɵɵelementStart(0,"p"),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(2,1,"twoStepLoginOrganizationDesc")))}function D(e,t){if(1&e){const e=h.ɵɵgetCurrentView();h.ɵɵelementStart(0,"bit-callout",12),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"p"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n "),h.ɵɵelementStart(6,"button",13),h.ɵɵlistener("click",(function(){h.ɵɵrestoreView(e);return h.ɵɵnextContext().recoveryCode()})),h.ɵɵtext(7),h.ɵɵpipe(8,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(9,"\n"),h.ɵɵelementEnd()}2&e&&(h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,2,"twoStepLoginRecoveryWarning")),h.ɵɵadvance(4),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(8,4,"viewRecoveryCode"),"\n "))}function R(e,t){1&e&&(h.ɵɵelementStart(0,"small"),h.ɵɵtext(1,"\n "),h.ɵɵelement(2,"i",14),h.ɵɵpipe(3,"i18n"),h.ɵɵtext(4,"\n "),h.ɵɵelementStart(5,"span",15),h.ɵɵtext(6),h.ɵɵpipe(7,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(8,"\n "),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(3,2,"loading")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){1&e&&(h.ɵɵelementStart(0,"bit-callout",12),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(2,1,"twoStepLoginPolicyUserWarning"),"\n"))}function U(e,t){1&e&&(h.ɵɵelementContainerStart(0),h.ɵɵtext(1,"\n "),h.ɵɵelement(2,"i",23),h.ɵɵpipe(3,"i18n"),h.ɵɵtext(4,"\n "),h.ɵɵelementStart(5,"span",15),h.ɵɵtext(6),h.ɵɵpipe(7,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(8,"\n "),h.ɵɵelementContainerEnd()),2&e&&(h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(3,2,"enabled")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(7,4,"enabled")))}function V(e,t){1&e&&h.ɵɵelement(0,"app-premium-badge")}function N(e,t){if(1&e){const e=h.ɵɵgetCurrentView();h.ɵɵelementStart(0,"li",16),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"div",17),h.ɵɵtext(3,"\n "),h.ɵɵelement(4,"img",18),h.ɵɵtext(5,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n "),h.ɵɵelementStart(7,"div",19),h.ɵɵtext(8,"\n "),h.ɵɵelementStart(9,"h3",20),h.ɵɵtext(10),h.ɵɵtemplate(11,U,9,6,"ng-container",1),h.ɵɵtext(12,"\n "),h.ɵɵtemplate(13,V,1,0,"app-premium-badge",1),h.ɵɵtext(14,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(15),h.ɵɵelementEnd(),h.ɵɵtext(16,"\n "),h.ɵɵelementStart(17,"div",21),h.ɵɵtext(18,"\n "),h.ɵɵelementStart(19,"button",22),h.ɵɵlistener("click",(function(){const t=h.ɵɵrestoreView(e).$implicit;return h.ɵɵnextContext().manage(t.type)})),h.ɵɵtext(20),h.ɵɵpipe(21,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(22,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(23,"\n "),h.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=h.ɵɵnextContext();h.ɵɵadvance(4),h.ɵɵclassMap("mfaType"+e.type),h.ɵɵproperty("alt",e.name+" logo"),h.ɵɵadvance(6),h.ɵɵtextInterpolate1("\n ",e.name,"\n "),h.ɵɵadvance(1),h.ɵɵproperty("ngIf",e.enabled),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",e.premium),h.ɵɵadvance(2),h.ɵɵtextInterpolate1("\n ",e.description,"\n "),h.ɵɵadvance(4),h.ɵɵproperty("disabled",!n.canAccessPremium&&e.premium),h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(21,9,"manage"),"\n ")}}function _(e,t){}function j(e,t){}function z(e,t){}function H(e,t){}function L(e,t){}function K(e,t){}const q=function(e){return{"mt-5":e}};class G{constructor(e,t,n,i,r){this.apiService=e,this.modalService=t,this.messagingService=n,this.policyService=i,this.stateService=r,this.providers=[],this.showPolicyWarning=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();for(const e in s.TwoFactorProviders){if(!s.TwoFactorProviders.hasOwnProperty(e))continue;const t=s.TwoFactorProviders[e];this.filterProvider(t.type)||this.providers.push({type:t.type,name:t.name,description:t.description,enabled:!1,premium:t.premium,sort:t.sort})}this.providers.sort(((e,t)=>e.sort-t.sort)),yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.loading=!0;(yield this.getTwoFactorProviders()).data.forEach((e=>{this.providers.forEach((t=>{e.type===t.type&&(t.enabled=e.enabled)}))})),this.evaluatePolicies(),this.loading=!1}))}manage(e){return i(this,void 0,void 0,(function*(){switch(e){case a.TwoFactorProviderType.Authenticator:(yield this.openModal(this.authenticatorModalRef,l.TwoFactorAuthenticatorComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Authenticator)}));break;case a.TwoFactorProviderType.Yubikey:(yield this.openModal(this.yubikeyModalRef,m.TwoFactorYubiKeyComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Yubikey)}));break;case a.TwoFactorProviderType.Duo:(yield this.openModal(this.duoModalRef,c.TwoFactorDuoComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Duo)}));break;case a.TwoFactorProviderType.Email:(yield this.openModal(this.emailModalRef,d.TwoFactorEmailComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Email)}));break;case a.TwoFactorProviderType.WebAuthn:(yield this.openModal(this.webAuthnModalRef,u.TwoFactorWebAuthnComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.WebAuthn)}));break}}))}recoveryCode(){this.openModal(this.recoveryModalRef,p.TwoFactorRecoveryComponent)}premiumRequired(){return i(this,void 0,void 0,(function*(){this.canAccessPremium||this.messagingService.send("premiumRequired")}))}getTwoFactorProviders(){return this.apiService.getTwoFactorProviders()}filterProvider(e){return e===a.TwoFactorProviderType.OrganizationDuo}openModal(e,t){return i(this,void 0,void 0,(function*(){const[n,i]=yield this.modalService.openViewRef(t,e);return this.modal=n,i}))}updateStatus(e,t){e||null==this.modal||this.modal.close(),this.providers.forEach((n=>{n.type===t&&(n.enabled=e)})),this.evaluatePolicies()}evaluatePolicies(){return i(this,void 0,void 0,(function*(){null==this.organizationId&&1===this.providers.filter((e=>e.enabled)).length?this.showPolicyWarning=yield this.policyService.policyAppliesToUser(o.PolicyType.TwoFactorAuthentication):this.showPolicyWarning=!1}))}}t.TwoFactorSetupComponent=G,G.ɵfac=function(e){return new(e||G)(h.ɵɵdirectiveInject(v.ApiService),h.ɵɵdirectiveInject(g.ModalService),h.ɵɵdirectiveInject(f.MessagingService),h.ɵɵdirectiveInject(y.PolicyService),h.ɵɵdirectiveInject(x.StateService))},G.ɵcmp=h.ɵɵdefineComponent({type:G,selectors:[["app-two-factor-setup"]],viewQuery:function(e,t){if(1&e&&(h.ɵɵviewQuery(E,7,r.ViewContainerRef),h.ɵɵviewQuery(P,7,r.ViewContainerRef),h.ɵɵviewQuery(O,7,r.ViewContainerRef),h.ɵɵviewQuery(k,7,r.ViewContainerRef),h.ɵɵviewQuery(A,7,r.ViewContainerRef),h.ɵɵviewQuery(T,7,r.ViewContainerRef)),2&e){let e;h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.recoveryModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.authenticatorModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.yubikeyModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.duoModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.emailModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.webAuthnModalRef=e.first)}},decls:44,vars:15,consts:[[1,"tabbed-header"],[4,"ngIf"],["type","warning",4,"ngIf"],[3,"ngClass"],[1,"list-group","list-group-2fa"],["class","list-group-item d-flex align-items-center",4,"ngFor","ngForOf"],["authenticatorTemplate",""],["recoveryTemplate",""],["duoTemplate",""],["emailTemplate",""],["yubikeyTemplate",""],["webAuthnTemplate",""],["type","warning"],["bit-button","","buttonType","secondary",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-fw","text-muted",3,"title"],[1,"sr-only"],[1,"list-group-item","d-flex","align-items-center"],[1,"logo-2fa","d-flex","justify-content-center"],[3,"alt"],[1,"mx-4"],[1,"mb-0"],[1,"ml-auto"],["bit-button","","buttonType","secondary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-fw",3,"title"]],template:function(e,t){1&e&&(h.ɵɵelementStart(0,"div",0),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"h1"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n"),h.ɵɵtemplate(7,M,3,3,"p",1),h.ɵɵtext(8,"\n"),h.ɵɵtemplate(9,B,3,3,"p",1),h.ɵɵtext(10,"\n"),h.ɵɵtemplate(11,D,10,6,"bit-callout",2),h.ɵɵtext(12,"\n"),h.ɵɵelementStart(13,"h2",3),h.ɵɵtext(14),h.ɵɵpipe(15,"i18n"),h.ɵɵtemplate(16,R,9,6,"small",1),h.ɵɵtext(17,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(18,"\n"),h.ɵɵtemplate(19,F,3,3,"bit-callout",2),h.ɵɵtext(20,"\n"),h.ɵɵelementStart(21,"ul",4),h.ɵɵtext(22,"\n "),h.ɵɵtemplate(23,N,24,11,"li",5),h.ɵɵtext(24,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(25,"\n\n"),h.ɵɵtemplate(26,_,0,0,"ng-template",null,6,h.ɵɵtemplateRefExtractor),h.ɵɵtext(28,"\n"),h.ɵɵtemplate(29,j,0,0,"ng-template",null,7,h.ɵɵtemplateRefExtractor),h.ɵɵtext(31,"\n"),h.ɵɵtemplate(32,z,0,0,"ng-template",null,8,h.ɵɵtemplateRefExtractor),h.ɵɵtext(34,"\n"),h.ɵɵtemplate(35,H,0,0,"ng-template",null,9,h.ɵɵtemplateRefExtractor),h.ɵɵtext(37,"\n"),h.ɵɵtemplate(38,L,0,0,"ng-template",null,10,h.ɵɵtemplateRefExtractor),h.ɵɵtext(40,"\n"),h.ɵɵtemplate(41,K,0,0,"ng-template",null,11,h.ɵɵtemplateRefExtractor),h.ɵɵtext(43,"\n")),2&e&&(h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,9,"twoStepLogin")),h.ɵɵadvance(4),h.ɵɵproperty("ngIf",!t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",!t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngClass",h.ɵɵpureFunction1(13,q,!t.organizationId)),h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(15,11,"providers"),"\n "),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",t.loading),h.ɵɵadvance(3),h.ɵɵproperty("ngIf",t.showPolicyWarning),h.ɵɵadvance(4),h.ɵɵproperty("ngForOf",t.providers))},directives:[S.NgIf,S.NgClass,S.NgForOf,b.CalloutComponent,w.ButtonComponent,C.PremiumBadgeComponent],pipes:[I.I18nPipe],encapsulation:2})},12720:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorVerifyComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(57055),n(97374)),a=n(44254),s=n(32621),l=n(91674),c=n(36631),d=n(57055),p=n(96832),u=n(56820),m=n(4158),h=n(99729);class v{constructor(e,t,n){this.apiService=e,this.logService=t,this.userVerificationService=n,this.onAuthed=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){let e;try{this.formPromise=this.userVerificationService.buildRequest(this.secret).then((t=>(e=this.secret.type===a.VerificationType.MasterPassword?t.masterPasswordHash:t.otp,this.apiCall(t))));const t=yield this.formPromise;this.onAuthed.emit({response:t,secret:e,verificationType:this.secret.type})}catch(t){this.logService.error(t)}}))}apiCall(e){switch(this.type){case-1:return this.apiService.getTwoFactorRecover(e);case o.TwoFactorProviderType.Duo:case o.TwoFactorProviderType.OrganizationDuo:return null!=this.organizationId?this.apiService.getTwoFactorOrganizationDuo(this.organizationId,e):this.apiService.getTwoFactorDuo(e);case o.TwoFactorProviderType.Email:return this.apiService.getTwoFactorEmail(e);case o.TwoFactorProviderType.WebAuthn:return this.apiService.getTwoFactorWebAuthn(e);case o.TwoFactorProviderType.Authenticator:return this.apiService.getTwoFactorAuthenticator(e);case o.TwoFactorProviderType.Yubikey:return this.apiService.getTwoFactorYubiKey(e)}}}t.TwoFactorVerifyComponent=v,v.ɵfac=function(e){return new(e||v)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.LogService),s.ɵɵdirectiveInject(d.UserVerificationService))},v.ɵcmp=s.ɵɵdefineComponent({type:v,selectors:[["app-two-factor-verify"]],inputs:{type:"type",organizationId:"organizationId"},outputs:{onAuthed:"onAuthed"},decls:31,vars:15,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"p"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"app-user-verification",3),s.ɵɵlistener("ngModelChange",(function(e){return t.secret=e})),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",4),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",5),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"i",6),s.ɵɵpipe(18,"i18n"),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"span"),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"button",7),s.ɵɵtext(26),s.ɵɵpipe(27,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,7,"twoStepLoginAuthDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.secret),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(18,9,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,11,"continue")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(27,13,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[h.I18nPipe],encapsulation:2})},84472:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorWebAuthnComponent=void 0;n(32621),n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(36119),a=n(40088),s=n(72842),l=n(40906),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(57055),v=n(8863),g=n(57490),f=n(12720),y=n(96832),x=n(56820),S=n(51626),b=n(1142),w=n(99729);function C(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"app-two-factor-verify",9),c.ɵɵlistener("onAuthed",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().auth(t)})),c.ɵɵtext(1,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function I(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",31),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2),c.ɵɵpipe(3,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,2,"enabled")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(3,4,"twoStepLoginProviderEnabled"),"\n "))}function E(e,t){if(1&e&&(c.ɵɵelementStart(0,"strong"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().index;c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(2,1,"webAuthnkeyX",e+1))}}function P(e,t){if(1&e&&(c.ɵɵelementStart(0,"strong"),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function O(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"span"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,1,"webAuthnMigrated")))}function k(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,O,6,3,"ng-container",25),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.migrated)}}function A(e,t){1&e&&(c.ɵɵelement(0,"i",37),c.ɵɵpipe(1,"i18n")),2&e&&c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,1,"loading"))}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,A,2,3,"i",35),c.ɵɵtext(3,"\n -\n "),c.ɵɵelementStart(4,"a",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(2).remove(t)})),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()}if(2&e){c.ɵɵnextContext();const e=c.ɵɵreference(1);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loading),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,2,"remove"))}}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"li",32,33),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",34),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,E,3,4,"strong",25),c.ɵɵtext(6,"\n "),c.ɵɵtemplate(7,P,2,1,"strong",25),c.ɵɵtext(8,"\n "),c.ɵɵtemplate(9,k,4,1,"ng-container",25),c.ɵɵtext(10,"\n "),c.ɵɵtemplate(11,T,8,4,"ng-container",25),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit,n=c.ɵɵreference(1),i=c.ɵɵnextContext(2);c.ɵɵproperty("appApiAction",e.removePromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",!e.configured||!e.name),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.configured&&e.name),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.configured&&!n.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",i.keysConfiguredCount>1&&e.configured)}}function B(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd())}function D(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fWaiting"),"...\n "))}function R(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",39),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fClickSave"),"\n "))}function F(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",40),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fProblemReadingTryAgain"),"\n "))}function U(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,D,5,3,"ng-container",25),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,R,5,3,"ng-container",25),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,F,5,3,"ng-container",25),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnListening),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnResponse),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnError)}}function V(e,t){1&e&&(c.ɵɵelement(0,"i",41),c.ɵɵpipe(1,"i18n")),2&e&&c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,1,"loading"))}function N(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"save")))}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",42,43),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).disable()})),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",41),c.ɵɵpipe(4,"i18n"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"span"),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵproperty("appApiAction",t.disablePromise)("disabled",e.loading),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(4,4,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,6,"disableAllKeys"))}}function j(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"form",10,11),c.ɵɵlistener("ngSubmit",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().submit()})),c.ɵɵtext(2,"\n "),c.ɵɵelementStart(3,"div",12),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,I,4,6,"app-callout",13),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"app-callout",14),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"p"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"ul",15),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"li"),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelement(21,"img",16),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"ul",17),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,M,13,5,"li",18),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"hr"),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"p"),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"ol"),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"li"),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"li"),c.ɵɵtext(41),c.ɵɵpipe(42,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(43,"\n "),c.ɵɵelementStart(44,"li"),c.ɵɵtext(45),c.ɵɵpipe(46,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementStart(48,"li"),c.ɵɵtext(49),c.ɵɵpipe(50,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(52,"\n "),c.ɵɵelementStart(53,"div",19),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"div",20),c.ɵɵtext(56,"\n "),c.ɵɵelementStart(57,"label",21),c.ɵɵtext(58),c.ɵɵpipe(59,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementStart(61,"input",22),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(62,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(63,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(64,"\n "),c.ɵɵelementStart(65,"button",23,24),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().readKey()})),c.ɵɵtext(67),c.ɵɵpipe(68,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵtemplate(70,B,4,0,"ng-container",25),c.ɵɵtext(71,"\n "),c.ɵɵtemplate(72,U,8,3,"ng-container",25),c.ɵɵtext(73,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(74,"\n "),c.ɵɵelementStart(75,"div",26),c.ɵɵtext(76,"\n "),c.ɵɵelementStart(77,"button",27),c.ɵɵtext(78,"\n "),c.ɵɵtemplate(79,V,2,3,"i",28),c.ɵɵtext(80,"\n "),c.ɵɵtemplate(81,N,3,3,"span",25),c.ɵɵtext(82,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(83,"\n "),c.ɵɵtemplate(84,_,10,8,"button",29),c.ɵɵtext(85,"\n "),c.ɵɵelementStart(86,"button",30),c.ɵɵtext(87),c.ɵɵpipe(88,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(89,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(90,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵreference(66),n=c.ɵɵnextContext();c.ɵɵproperty("appApiAction",n.formPromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",n.enabled),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,23,"twoFactorWebAuthnWarning")),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,25,"twoFactorWebAuthnSupportWeb")),c.ɵɵadvance(9),c.ɵɵproperty("ngForOf",n.keys),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(32,27,"twoFactorWebAuthnAdd"),":"),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(38,29,"twoFactorU2fGiveName")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(42,31,"twoFactorU2fPlugInReadKey")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(46,33,"twoFactorU2fTouchButton")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(50,35,"twoFactorU2fSaveForm")),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(59,37,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",n.name)("disabled",!n.keyIdAvailable),c.ɵɵadvance(4),c.ɵɵproperty("disabled",t.loading||n.webAuthnListening||!n.keyIdAvailable)("appApiAction",n.challengePromise),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(68,39,"readKey"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(5),c.ɵɵproperty("disabled",e.loading||!n.webAuthnResponse),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.loading),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",n.enabled),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(88,41,"close"),"\n ")}}class z extends l.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,n,o,a),this.ngZone=i,this.type=r.TwoFactorProviderType.WebAuthn,this.keyIdAvailable=null,this.keysConfiguredCount=0}auth(e){super.auth(e),this.processResponse(e.response)}submit(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){if(null==this.webAuthnResponse||null==this.keyIdAvailable)return Promise.reject();const t=yield this.buildRequestModel(s.UpdateTwoFactorWebAuthnRequest);return t.deviceResponse=this.webAuthnResponse,t.id=this.keyIdAvailable,t.name=this.name,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorWebAuthn(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}disable(){return super.disable(this.formPromise)}remove(e){return i(this,void 0,void 0,(function*(){if(this.keysConfiguredCount<=1||null!=e.removePromise)return;const t=null!=e.name?e.name:this.i18nService.t("webAuthnkeyX",e.id);if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeU2fConfirmation"),t,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return;const n=yield this.buildRequestModel(a.UpdateTwoFactorWebAuthnDeleteRequest);n.id=e.id;try{e.removePromise=this.apiService.deleteTwoFactorWebAuthn(n);const t=yield e.removePromise;e.removePromise=null,yield this.processResponse(t)}catch(i){this.logService.error(i)}}))}readKey(){return i(this,void 0,void 0,(function*(){if(null==this.keyIdAvailable)return;const e=yield this.buildRequestModel(o.SecretVerificationRequest);try{this.challengePromise=this.apiService.getTwoFactorWebAuthnChallenge(e);const t=yield this.challengePromise;this.readDevice(t)}catch(t){this.logService.error(t)}}))}readDevice(e){console.log("listening for key..."),this.resetWebAuthn(!0),navigator.credentials.create({publicKey:e}).then((e=>{this.ngZone.run((()=>{this.webAuthnListening=!1,this.webAuthnResponse=e}))})).catch((e=>{console.error(e),this.resetWebAuthn(!1),this.webAuthnError=!0}))}resetWebAuthn(e=!1){this.webAuthnResponse=null,this.webAuthnError=!1,this.webAuthnListening=e}processResponse(e){this.resetWebAuthn(),this.keys=[],this.keyIdAvailable=null,this.name=null,this.keysConfiguredCount=0;for(let t=1;t<=5;t++){if(null!=e.keys){const n=e.keys.filter((e=>e.id===t));if(n.length>0){this.keysConfiguredCount++,this.keys.push({id:t,name:n[0].name,configured:!0,migrated:n[0].migrated,removePromise:null});continue}}this.keys.push({id:t,name:null,configured:!1,removePromise:null}),null==this.keyIdAvailable&&(this.keyIdAvailable=t)}this.enabled=e.enabled}}t.TwoFactorWebAuthnComponent=z,z.ɵfac=function(e){return new(e||z)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(c.NgZone),c.ɵɵdirectiveInject(m.LogService),c.ɵɵdirectiveInject(h.UserVerificationService))},z.ɵcmp=c.ɵɵdefineComponent({type:z,selectors:[["app-two-factor-webauthn"]],features:[c.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faU2fTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","2faU2fTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],["type","success","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["type","warning"],[1,"mb-0"],["alt","FIDO2 WebAuthn logo'",1,"float-right","ml-5","mfaType7"],[1,"bwi-ul"],[3,"appApiAction",4,"ngFor","ngForOf"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-secondary","mr-2",3,"disabled","appApiAction","click"],["readKeyBtn",""],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary",3,"disabled"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button","class","btn btn-outline-secondary btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],[3,"appApiAction"],["removeKeyBtn",""],[1,"bwi","bwi-li","bwi-key"],["class","bwi bwi-spin bwi-spinner text-muted bwi-fw","aria-hidden","true",3,"title",4,"ngIf"],["href","#","appStopClick","",3,"click"],["aria-hidden","true",1,"bwi","bwi-spin","bwi-spinner","text-muted","bwi-fw",3,"title"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted"],["aria-hidden","true",1,"bwi","bwi-check-circle","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-danger"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["disableBtn",""]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",2),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",3),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2",4),c.ɵɵtext(9),c.ɵɵpipe(10,"i18n"),c.ɵɵelementStart(11,"small"),c.ɵɵtext(12),c.ɵɵpipe(13,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",5),c.ɵɵpipe(17,"i18n"),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"span",6),c.ɵɵtext(20,"×"),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,C,2,2,"app-two-factor-verify",7),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,j,91,43,"form",8),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(30,"\n")),2&e&&(c.ɵɵadvance(9),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(13,7,"webAuthnTitle")),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(17,9,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",!t.authed),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.authed))},directives:[v.A11yTitleDirective,g.NgIf,f.TwoFactorVerifyComponent,y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.CalloutComponent,g.NgForOf,y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,b.StopClickDirective],pipes:[w.I18nPipe],encapsulation:2})},80445:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorYubiKeyComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(17128),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055),m=n(8863),h=n(57490),v=n(12720),g=n(96832),f=n(56820),y=n(51626),x=n(48198),S=n(99729);function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function w(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",29),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"enabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"twoStepLoginProviderEnabled"),"\n "))}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"input",34),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().$implicit.key=t})),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(),t=e.index,n=e.$implicit;s.ɵɵpropertyInterpolate1("id","key",t+1,""),s.ɵɵpropertyInterpolate1("name","Key",t+1,""),s.ɵɵproperty("ngModel",n.key)}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",35),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span",36),s.ɵɵtext(3),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",37),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).remove(t)})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",38),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext().$implicit;s.ɵɵadvance(3),s.ɵɵtextInterpolate(e.existingKey),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,2,"remove"))}}function E(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",30),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",31),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,1,3,"input",32),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,I,11,4,"div",33),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=t.index;s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","key",n+1,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,4,"yubikeyX",n+1)),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.existingKey),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.existingKey)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",39,40),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).disable()})),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",26),s.ɵɵpipe(4,"i18n"),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"span"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵproperty("appApiAction",t.disablePromise)("disabled",e.loading),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(4,4,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,6,"disableAllKeys"))}}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,w,4,6,"app-callout",13),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"app-callout",14),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"p"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"ul",15),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"li"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"li"),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"img",16),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"p"),s.ɵɵtext(28),s.ɵɵpipe(29,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"ol"),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"li"),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"li"),s.ɵɵtext(38),s.ɵɵpipe(39,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"li"),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"li"),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelement(50,"hr"),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"div",17),s.ɵɵtext(53,"\n "),s.ɵɵtemplate(54,E,10,7,"div",18),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"strong",19),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"div",20),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"input",21),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().nfc=t})),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"label",22),s.ɵɵtext(66),s.ɵɵpipe(67,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"small",23),s.ɵɵtext(71),s.ɵɵpipe(72,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(74,"\n "),s.ɵɵelementStart(75,"div",24),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"button",25),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"i",26),s.ɵɵpipe(80,"i18n"),s.ɵɵtext(81,"\n "),s.ɵɵelementStart(82,"span"),s.ɵɵtext(83),s.ɵɵpipe(84,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(86,"\n "),s.ɵɵtemplate(87,P,10,8,"button",27),s.ɵɵtext(88,"\n "),s.ɵɵelementStart(89,"button",28),s.ɵɵtext(90),s.ɵɵpipe(91,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(92,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,20,"twoFactorYubikeyWarning")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,22,"twoFactorYubikeySupportUsb")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(21,24,"twoFactorYubikeySupportMobile")),s.ɵɵadvance(8),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(29,26,"twoFactorYubikeyAdd"),":"),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,28,"twoFactorYubikeyPlugIn")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(39,30,"twoFactorYubikeySelectKey")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,32,"twoFactorYubikeyTouchButton")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(47,34,"twoFactorYubikeySaveForm")),s.ɵɵadvance(8),s.ɵɵproperty("ngForOf",t.keys),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,36,"nfcSupport")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",t.nfc),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(67,38,"twoFactorYubikeySupportsNfc")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(72,40,"twoFactorYubikeySupportsNfcDesc")),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(80,42,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(84,44,"save")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(91,46,"close"),"\n ")}}class k extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o){super(e,t,n,i,o),this.type=r.TwoFactorProviderType.Yubikey,this.nfc=!1}auth(e){super.auth(e),this.processResponse(e.response)}submit(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorYubioOtpRequest);return t.key1=null!=this.keys&&this.keys.length>0?this.keys[0].key:null,t.key2=null!=this.keys&&this.keys.length>1?this.keys[1].key:null,t.key3=null!=this.keys&&this.keys.length>2?this.keys[2].key:null,t.key4=null!=this.keys&&this.keys.length>3?this.keys[3].key:null,t.key5=null!=this.keys&&this.keys.length>4?this.keys[4].key:null,t.nfc=this.nfc,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorYubiKey(t);const e=yield this.formPromise;yield this.processResponse(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("yubikeysUpdated"))}))))}))}disable(){return super.disable(this.disablePromise)}remove(e){e.existingKey=null,e.key=null}processResponse(e){this.enabled=e.enabled,this.keys=[{key:e.key1,existingKey:this.padRight(e.key1)},{key:e.key2,existingKey:this.padRight(e.key2)},{key:e.key3,existingKey:this.padRight(e.key3)},{key:e.key4,existingKey:this.padRight(e.key4)},{key:e.key5,existingKey:this.padRight(e.key5)}],this.nfc=e.nfc||!e.enabled}padRight(e,t="•",n=44){if(null==e||null==t||e.length>=n)return e;const i=(n-e.length)/t.length;for(let r=0;rthis.apiService.postAccountKey(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("keyUpdated"),this.i18nService.t("logBackInOthersToo"),{timeout:15e3}),this.messagingService.send("logout")}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"))}))}makeRequest(){return i(this,void 0,void 0,(function*(){const e=yield this.cryptoService.getKey(),t=yield this.cryptoService.makeEncKey(e),n=yield this.cryptoService.getPrivateKey();let i=null;null!=n&&(i=yield this.cryptoService.encrypt(n,t[0]));const s=new a.UpdateKeyRequest;s.privateKey=null!=i?i.encryptedString:null,s.key=t[1].encryptedString,s.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null),yield this.syncService.fullSync(!0);const l=yield this.folderService.getAllDecrypted();for(let r=0;rthis.apiService.refreshIdentityToken())),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedLicense")),this.onUpdated.emit()}catch(t){this.logService.error(t)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}))}cancel(){this.onCanceled.emit()}}t.UpdateLicenseComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.LogService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-update-license"]],inputs:{organizationId:"organizationId"},outputs:{onUpdated:"onUpdated",onCanceled:"onCanceled"},decls:31,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"label",3),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"input",4),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"small",5),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"button",6),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"i",7),o.ɵɵpipe(19,"i18n"),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"span"),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"button",8),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,7,"licenseFile")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(13,9,"licenseFileDesc",t.organizationId?"bitwarden_organization_license.json":"bitwarden_premium_license.json")),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(19,12,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,14,"submit")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,16,"cancel"),"\n ")}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective],pipes:[u.I18nPipe],encapsulation:2})},89805:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserBillingHistoryComponent=void 0;n(68012),n(91674),n(51554),n(73828);const r=n(98523),o=n(94285),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(68012),p=n(57490),u=n(52767),m=n(8863),h=n(99729),v=function(e){return{"bwi-spin":e}};function g(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",3),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().load()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(5,v,e.loading)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function f(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",5),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",6),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(a.ɵɵelementStart(0,"p"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"noInvoices")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",15),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"paid"),"\n "))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",16),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"unpaid"),"\n "))}function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td"),a.ɵɵtext(3),a.ɵɵpipe(4,"date"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"a",12),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelement(11,"i",13),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"a",14),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"td"),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"td"),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,x,5,3,"span",2),a.ɵɵtext(26,"\n "),a.ɵɵtemplate(27,S,5,3,"span",2),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(4,9,e.date,"mediumDate")),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("href",e.pdfUrl,a.ɵɵsanitizeUrl),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(9,12,"downloadInvoice")),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("href",e.url,a.ɵɵsanitizeUrl),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(14,14,"viewInvoice")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(16,16,"invoiceNumber",e.number),""),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(21,19,e.amount,"$")),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.paid),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.paid)}}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"table",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,b,30,22,"tr",11),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e.invoices)}}function C(e,t){1&e&&(a.ɵɵelementStart(0,"p"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"noTransactions")))}function I(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"chargeNoun"),"\n "))}function E(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"refundNoun")))}const P=function(e,t,n,i){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-bitcoin text-warning":n,"bwi-paypal text-primary":i}};function O(e,t){if(1&e&&a.ɵɵelement(0,"i",19),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵproperty("ngClass",a.ɵɵpureFunction4(1,P,e.paymentMethodType===t.paymentMethodType.Card,e.paymentMethodType===t.paymentMethodType.BankAccount||e.paymentMethodType===t.paymentMethodType.WireTransfer,e.paymentMethodType===t.paymentMethodType.BitPay,e.paymentMethodType===t.paymentMethodType.PayPal))}}const k=function(e){return{"text-strike":e}};function A(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td"),a.ɵɵtext(3),a.ɵɵpipe(4,"date"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,I,3,3,"span",2),a.ɵɵtext(9,"\n "),a.ɵɵtemplate(10,E,3,3,"span",2),a.ɵɵtext(11,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"td"),a.ɵɵtext(14,"\n "),a.ɵɵtemplate(15,O,1,6,"i",17),a.ɵɵtext(16),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"td",18),a.ɵɵpipe(19,"i18n"),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(3);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(4,8,e.createdDate,"mediumDate")),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.type===n.transactionType.Charge||e.type===n.transactionType.Credit),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.type===n.transactionType.Refund),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.paymentMethodType),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",e.details,"\n "),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(19,11,e.refunded?"refunded":"")),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(16,k,e.refunded)),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(21,13,e.amount,"$"),"\n ")}}function T(e,t){if(1&e&&(a.ɵɵelementStart(0,"table",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,A,23,18,"tr",11),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e.transactions)}}function M(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h2"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,y,3,3,"p",2),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,w,7,1,"table",7),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"h2",8),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,3,3,"p",2),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,T,7,1,"table",7),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"small",9),a.ɵɵtext(19),a.ɵɵpipe(20,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n"),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"invoices")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!e.invoices||!e.invoices.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.invoices&&e.invoices.length),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,9,"transactions")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!e.transactions||!e.transactions.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.transactions&&e.transactions.length),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("* ",a.ɵɵpipeBind2(20,11,"chargesStatement","BITWARDEN"),"")}}class B{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.loading=!1,this.firstLoaded=!1,this.paymentMethodType=r.PaymentMethodType,this.transactionType=o.TransactionType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.platformUtilsService.isSelfHost()&&this.router.navigate(["/settings/subscription"]),yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,this.billing=yield this.apiService.getUserBillingHistory(),this.loading=!1)}))}get invoices(){return null!=this.billing?this.billing.invoices:null}get transactions(){return null!=this.billing?this.billing.transactions:null}}t.UserBillingHistoryComponent=B,B.ɵfac=function(e){return new(e||B)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.Router))},B.ɵcmp=a.ɵɵdefineComponent({type:B,selectors:[["app-user-billing"]],decls:13,vars:6,consts:[[1,"tabbed-header","d-flex"],["bit-button","","buttonType","secondary","class","tw-ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],["bit-button","","buttonType","secondary",1,"tw-ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table mb-2",4,"ngIf"],[1,"spaced-header"],[1,"text-muted"],[1,"table","mb-2"],[4,"ngFor","ngForOf"],["target","_blank","rel","noopener",1,"mr-2",3,"href","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-file-pdf"],["target","_blank","rel","noopener",3,"href","title"],["aria-hidden","true",1,"bwi","bwi-check","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle","text-muted"],["class","bwi bwi-fw","aria-hidden","true",3,"ngClass",4,"ngIf"],[3,"ngClass","title"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,g,5,7,"button",1),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵtemplate(9,f,9,6,"ng-container",2),a.ɵɵtext(10,"\n"),a.ɵɵtemplate(11,M,22,14,"ng-container",2),a.ɵɵtext(12,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,4,"billingHistory"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.firstLoaded),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.billing))},directives:[p.NgIf,u.ButtonComponent,p.NgClass,p.NgForOf,m.A11yTitleDirective],pipes:[h.I18nPipe,p.DatePipe,p.CurrencyPipe],encapsulation:2})},67562:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserSubscriptionComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(30694);const r=n(32621),o=n(30694),a=n(91674),s=n(73828),l=n(51554),c=n(68012),d=n(36631),p=n(57490),u=n(20138),m=n(52767),h=n(56820),v=n(25108),g=n(8863),f=n(13205),y=n(34959),x=n(99729);function S(e,t){1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n"),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(r.ɵɵelementStart(0,"bit-callout",6),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"canceled")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"subscriptionCanceled"),""))}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"bit-callout",6),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"p"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"button",7,8),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).reinstate()})),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",9),r.ɵɵpipe(11,"i18n"),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"span"),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(8),t=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,6,"pendingCancellation")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(5,8,"subscriptionPendingCanceled")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.reinstatePromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(11,10,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(15,12,"reinstateSubscription"))}}function I(e,t){if(1&e&&(r.ɵɵelementStart(0,"dd"),r.ɵɵtext(1),r.ɵɵpipe(2,"date"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(2,1,e.sub.expiration,"mediumDate"))}}function E(e,t){1&e&&(r.ɵɵelementStart(0,"dd"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"neverExpires")))}function P(e,t){if(1&e&&(r.ɵɵelementStart(0,"dl"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"dt"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,I,3,4,"dd",1),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,E,3,3,"dd",1),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"expiration")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.sub.expiration),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.sub.expiration)}}function O(e,t){1&e&&(r.ɵɵelementStart(0,"span",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"pendingCancellation")))}function k(e,t){if(1&e&&(r.ɵɵelementStart(0,"tr"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td"),r.ɵɵtext(3),r.ɵɵpipe(4,"currency"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"td"),r.ɵɵtext(7),r.ɵɵpipe(8,"currency"),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(3),r.ɵɵtextInterpolate3("\n ",e.name," ",e.quantity>1?"×"+e.quantity:""," @\n ",r.ɵɵpipeBind2(4,5,e.amount,"$"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate2("",r.ɵɵpipeBind2(8,8,e.quantity*e.amount,"$")," /",r.ɵɵpipeBind1(9,11,e.interval),"")}}function A(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",16),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"strong",17),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"table",18),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"tbody"),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,k,11,13,"tr",19),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,2,"details")),r.ɵɵadvance(7),r.ɵɵproperty("ngForOf",e.subscription.items)}}function T(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",11),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"dl"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"dt"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"dd"),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span",12),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,O,3,3,"span",13),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"dt"),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"dd"),r.ɵɵtext(23),r.ɵɵpipe(24,"date"),r.ɵɵpipe(25,"currency"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,A,14,4,"div",14),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"status")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.subscription&&e.subscription.status||"-"),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,8,"nextCharge")),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.nextInvoice?r.ɵɵpipeBind2(24,10,e.nextInvoice.date,"mediumDate")+", "+r.ɵɵpipeBind2(25,13,e.nextInvoice.amount,"$"):"-","\n "),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.subscription)}}function M(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",23),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",24),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!1)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"span",26),r.ɵɵtext(8,"×"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",27),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-update-license",28),r.ɵɵlistener("onUpdated",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!0)}))("onCanceled",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!1)})),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(5,2,"cancel")),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,4,"updateLicense")))}function B(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div"),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).updateLicense()})),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",21),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,M,19,6,"div",22),r.ɵɵtext(14,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,3,"updateLicense"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"manageSubscription"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showUpdateLicense)}}function D(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",35),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).downloadLicense()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"downloadLicense"),"\n "))}function R(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",36,37),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).cancel()})),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",9),r.ɵɵpipe(4,"i18n"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext(3);r.ɵɵproperty("appApiAction",t.cancelPromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(4,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"cancelSubscription"))}}function F(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",29),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",35),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).adjustStorage(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",41),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).adjustStorage(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"addStorage"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"removeStorage"),"\n "))}function U(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-adjust-storage",42),r.ɵɵlistener("onAdjusted",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).closeStorage(!0)}))("onCanceled",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).closeStorage(!1)})),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(4);r.ɵɵproperty("storageGbPrice",4)("add",e.adjustStorageAdd)}}function V(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",38),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,F,10,6,"div",39),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,U,1,2,"app-adjust-storage",40),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.showAdjustStorage),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.showAdjustStorage)}}const N=function(e){return{width:e}};function _(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",29),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,D,3,3,"button",30),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,R,10,8,"button",31),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",32),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"p"),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"div",33),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"div",34),r.ɵɵtext(20),r.ɵɵpipe(21,"percent"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,V,9,2,"ng-container",1),r.ɵɵtext(25,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.subscription||!e.subscription.cancelled),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,8,"storage")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind3(15,10,"subscriptionStorage",e.sub.maxStorageGb||0,e.sub.storageName||"0 MB")),r.ɵɵadvance(5),r.ɵɵproperty("ngStyle",r.ɵɵpureFunction1(16,N,e.storageProgressWidth+"%")),r.ɵɵattribute("aria-valuenow",e.storagePercentage),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(21,14,e.storagePercentage/100),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel)}}function j(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,w,4,6,"bit-callout",4),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,C,18,14,"bit-callout",4),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,P,10,5,"dl",1),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,T,31,16,"div",5),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,B,15,7,"ng-container",1),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,_,26,18,"ng-container",1),r.ɵɵtext(13,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscription&&e.subscription.cancelled),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.selfHosted)}}const z=function(e,t){return{"page-header":e,"tabbed-header":t}};class H{constructor(e,t,n,i,r,o){this.tokenService=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.router=r,this.logService=o,this.loading=!1,this.firstLoaded=!1,this.adjustStorageAdd=!0,this.showAdjustStorage=!1,this.showUpdateLicense=!1,this.selfHosted=!1,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.tokenService.getPremium()?(this.loading=!0,this.sub=yield this.apiService.getUserSubscription(),this.loading=!1):this.router.navigate(["/settings/subscription/premium"]))}))}reinstate(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(this.usingInAppPurchase)return void this.platformUtilsService.showDialog(this.i18nService.t("manageSubscriptionFromStore"),this.i18nService.t("cancelSubscription"),null,null,"warning");if(yield this.platformUtilsService.showDialog(this.i18nService.t("reinstateConfirmation"),this.i18nService.t("reinstateSubscription"),this.i18nService.t("yes"),this.i18nService.t("cancel")))try{this.reinstatePromise=this.apiService.postReinstatePremium(),yield this.reinstatePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("reinstated")),this.load()}catch(e){this.logService.error(e)}}))}cancel(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(this.usingInAppPurchase)return void this.platformUtilsService.showDialog(this.i18nService.t("manageSubscriptionFromStore"),this.i18nService.t("cancelSubscription"),null,null,"warning");if(yield this.platformUtilsService.showDialog(this.i18nService.t("cancelConfirmation"),this.i18nService.t("cancelSubscription"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{this.cancelPromise=this.apiService.postCancelPremium(),yield this.cancelPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("canceledSubscription")),this.load()}catch(e){this.logService.error(e)}}))}downloadLicense(){if(this.loading)return;const e=JSON.stringify(this.sub.license,null,2);this.platformUtilsService.saveFile(window,e,null,"bitwarden_premium_license.json")}updateLicense(){this.loading||(this.showUpdateLicense=!0)}closeUpdateLicense(e){this.showUpdateLicense=!1,e&&this.load()}adjustStorage(e){this.usingInAppPurchase?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t(e?"addStorage":"removeStorage"),null,null,"warning"):(this.adjustStorageAdd=e,this.showAdjustStorage=!0)}closeStorage(e){this.showAdjustStorage=!1,e&&this.load()}get subscriptionMarkedForCancel(){return null!=this.subscription&&!this.subscription.cancelled&&this.subscription.cancelAtEndDate}get subscription(){return null!=this.sub?this.sub.subscription:null}get nextInvoice(){return null!=this.sub?this.sub.upcomingInvoice:null}get storagePercentage(){return null!=this.sub&&this.sub.maxStorageGb?+(this.sub.storageGb/this.sub.maxStorageGb*100).toFixed(2):0}get storageProgressWidth(){return this.storagePercentage<5?5:0}get usingInAppPurchase(){return null!=this.sub&&this.sub.usingInAppPurchase}get title(){return this.i18nService.t(this.selfHosted?"subscription":"premiumMembership")}}t.UserSubscriptionComponent=H,H.ɵfac=function(e){return new(e||H)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.ApiService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.I18nService),r.ɵɵdirectiveInject(c.Router),r.ɵɵdirectiveInject(d.LogService))},H.ɵcmp=r.ɵɵdefineComponent({type:H,selectors:[["app-user-subscription"]],decls:12,vars:8,consts:[[3,"ngClass"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","warning",3,"title",4,"ngIf"],["class","row",4,"ngIf"],["type","warning",3,"title"],["bit-button","","type","button","buttonType","secondary",1,"btn-submit",3,"appApiAction","disabled","click"],["reinstateBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"row"],[1,"col-4"],[1,"text-capitalize"],["bit-badge","","badgeType","warning",4,"ngIf"],["class","col-8",4,"ngIf"],["bit-badge","","badgeType","warning"],[1,"col-8"],[1,"d-block","mb-1"],[1,"table"],[4,"ngFor","ngForOf"],["type","button","bit-button","","buttonType","secondary",3,"click"],["bit-button","","buttonType","secondary","href","https://vault.bitwarden.com/#/settings/subscription","target","_blank","rel","noopener"],["class","card mt-3",4,"ngIf"],[1,"card","mt-3"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"onUpdated","onCanceled"],[1,"d-flex"],["bit-button","","type","button","buttonType","secondary",3,"click",4,"ngIf"],["bit-button","","type","button","buttonType","danger","class","btn-submit tw-ml-auto",3,"appApiAction","disabled","click",4,"ngIf"],[1,"spaced-header"],[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","bg-success",3,"ngStyle"],["bit-button","","type","button","buttonType","secondary",3,"click"],["bit-button","","type","button","buttonType","danger",1,"btn-submit","tw-ml-auto",3,"appApiAction","disabled","click"],["cancelBtn",""],[1,"mt-3"],["class","d-flex",4,"ngIf"],[3,"storageGbPrice","add","onAdjusted","onCanceled",4,"ngIf"],["bit-button","","type","button","buttonType","secondary",1,"tw-ml-1",3,"click"],[3,"storageGbPrice","add","onAdjusted","onCanceled"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵtemplate(4,S,9,6,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n"),r.ɵɵtemplate(8,b,9,6,"ng-container",1),r.ɵɵtext(9,"\n"),r.ɵɵtemplate(10,j,14,6,"ng-container",1),r.ɵɵtext(11,"\n")),2&e&&(r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(5,z,t.selfHosted,!t.selfHosted)),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",t.title,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.firstLoaded&&t.loading),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.sub))},directives:[p.NgClass,p.NgIf,u.CalloutComponent,m.ButtonComponent,h.ApiActionDirective,v.BadgeComponent,p.NgForOf,g.A11yTitleDirective,f.UpdateLicenseComponent,p.NgStyle,y.AdjustStorageComponent],pipes:[x.I18nPipe,p.DatePipe,p.CurrencyPipe,p.PercentPipe],encapsulation:2})},81397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutInputComponent=void 0;const i=n(96832),r=n(96853),o=n(32621),a=n(57490),s=n(96832),l=n(51626),c=n(99729);function d(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind3(2,1,"vaultTimeoutPolicyInEffect",e.vaultTimeoutPolicyHours,e.vaultTimeoutPolicyMinutes),"\n")}}function p(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",9),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function u(e,t){1&e&&(o.ɵɵelementStart(0,"div",10),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",11),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",12),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",13),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",14),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small"),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",13),o.ɵɵtext(18,"\n "),o.ɵɵelement(19,"input",15),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"small"),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"customVaultTimeout")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,5,"hours")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,7,"minutes")))}class m extends r.VaultTimeoutInputComponent{}t.VaultTimeoutInputComponent=m,m.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(m)))(t||m)}}(),m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-vault-timeout-input"]],features:[o.ɵɵProvidersFeature([{provide:i.NG_VALUE_ACCESSOR,multi:!0,useExisting:m},{provide:i.NG_VALIDATORS,multi:!0,useExisting:m}]),o.ɵɵInheritDefinitionFeature],decls:23,vars:10,consts:[["type","info",4,"ngIf"],[3,"formGroup"],[1,"form-group"],["for","vaultTimeout"],["id","vaultTimeout","name","VaultTimeout","formControlName","vaultTimeout",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-text","text-muted"],["class","form-group","formGroupName","custom",4,"ngIf"],["type","info"],[3,"ngValue"],["formGroupName","custom",1,"form-group"],["for","customVaultTimeout"],[1,"row"],[1,"col-6"],["id","hours","type","number","min","0","name","hours","formControlName","hours",1,"form-control"],["id","minutes","type","number","min","0","name","minutes","formControlName","minutes",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,d,3,5,"app-callout",0),o.ɵɵtext(1,"\n\n"),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"select",4),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,p,2,2,"option",5),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"small",6),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,u,27,9,"div",7),o.ɵɵtext(21,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.vaultTimeoutPolicy),o.ɵɵadvance(2),o.ɵɵproperty("formGroup",t.form),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"vaultTimeout")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.vaultTimeouts),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,8,"vaultTimeoutDesc")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.showCustom))},directives:[a.NgIf,s.NgControlStatusGroup,s.FormGroupDirective,s.SelectControlValueAccessor,s.NgControlStatus,s.FormControlName,a.NgForOf,l.CalloutComponent,s.NgSelectOption,s.ɵNgSelectMultipleOption,s.FormGroupName,s.MinValidator,s.NumberValueAccessor,s.DefaultValueAccessor],pipes:[c.I18nPipe],encapsulation:2})},80945:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailComponent=void 0;n(91674),n(51554),n(36631),n(73828);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(36631),c=n(56820),d=n(99729);class p{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i}send(){return i(this,void 0,void 0,(function*(){if(null==this.actionPromise){try{this.actionPromise=this.apiService.postAccountVerifyEmail(),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("checkInboxForVerification"))}catch(e){this.logService.error(e)}this.actionPromise=null}}))}}t.VerifyEmailComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.LogService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-verify-email"]],decls:27,vars:14,consts:[[1,"card","border-warning"],[1,"card-header","bg-warning","text-white"],["aria-hidden","true",1,"bwi","bwi-envelope","bwi-fw"],[1,"card-body"],["type","button",1,"btn","btn-block","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["sendBtn",""],["aria-hidden","true",1,"bwi","bwi-spin","bwi-spinner",3,"title"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",2),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",3),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"p"),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",4,5),r.ɵɵlistener("click",(function(){return t.send()})),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",6),r.ɵɵpipe(18,"i18n"),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"span"),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n")),2&e){const e=r.ɵɵreference(15);r.ɵɵadvance(5),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(6,6,"verifyEmail"),"\n "),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(12,8,"verifyEmailDesc")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.actionPromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(18,10,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,12,"sendEmail"),"\n ")}},directives:[c.ApiActionDirective],pipes:[d.I18nPipe],encapsulation:2})},26140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;n(96832);const i=n(21748),r=(n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055),n(32621)),o=n(85714),a=n(51554),s=n(73828),l=n(97445),c=n(32034),d=n(62166),p=n(36631),u=n(57055),m=n(96832),h=n(56820),v=n(57490),g=n(4158),f=n(51626),y=n(44995),x=n(99729);function S(e,t){1&e&&(r.ɵɵelementStart(0,"app-callout",13),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"vaultExportDisabled")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"personalVaultExportPolicyInEffect"),"\n "))}function b(e,t){if(1&e&&r.ɵɵelement(0,"app-export-scope-callout",14),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("organizationId",e.organizationId)}}function w(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",15),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("value",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}class C extends i.ExportComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,r,o,window,a,s,l)}saved(){super.saved(),this.platformUtilsService.showToast("success",null,this.i18nService.t("exportSuccess"))}}t.ExportComponent=C,C.ɵfac=function(e){return new(e||C)(r.ɵɵdirectiveInject(o.CryptoService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.ExportService),r.ɵɵdirectiveInject(c.EventService),r.ɵɵdirectiveInject(d.PolicyService),r.ɵɵdirectiveInject(p.LogService),r.ɵɵdirectiveInject(u.UserVerificationService),r.ɵɵdirectiveInject(m.FormBuilder))},C.ɵcmp=r.ɵɵdefineComponent({type:C,selectors:[["app-export"]],features:[r.ɵɵInheritDefinitionFeature],decls:49,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"page-header"],["type","error",3,"title",4,"ngIf"],[3,"organizationId",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","format"],["id","format","name","Format","formControlName","format",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["ngDefaultControl","","formControlName","secret","name","secret"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","error",3,"title"],[3,"organizationId"],[3,"value"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"h1"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n\n "),r.ɵɵtemplate(10,S,4,6,"app-callout",3),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,b,1,1,"app-export-scope-callout",4),r.ɵɵtext(13,"\n\n "),r.ɵɵelementStart(14,"div",5),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",6),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"label",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"select",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,w,2,2,"option",9),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",5),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"div",6),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"app-user-verification",10),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"button",11),r.ɵɵtext(39,"\n "),r.ɵɵelement(40,"i",12),r.ɵɵpipe(41,"i18n"),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"span"),r.ɵɵtext(44),r.ɵɵpipe(45,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.exportForm),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,10,"exportVault")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.disabledByPolicy),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.disabledByPolicy),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,12,"fileFormat")),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",t.formatOptions),r.ɵɵadvance(14),r.ɵɵproperty("disabled",e.loading||t.exportForm.disabled),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(41,14,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(45,16,"exportVault"))}},directives:[m.NgControlStatusGroup,h.ApiActionDirective,m.FormGroupDirective,v.NgIf,m.SelectControlValueAccessor,m.NgControlStatus,m.FormControlName,v.NgForOf,g.UserVerificationComponent,m.DefaultValueAccessor,f.CalloutComponent,y.ExportScopeCalloutComponent,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[x.I18nPipe],encapsulation:2})},8042:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratorComponent=void 0;const r=n(32621),o=(n(68012),n(5675)),a=(n(64684),n(51554),n(36631),n(84275),n(73828),n(73569),n(13444),n(4184)),s=n(32621),l=n(84275),c=n(13444),d=n(73569),p=n(73828),u=n(51554),m=n(36631),h=n(68012),v=n(64684),g=n(57490),f=n(51626),y=n(31161),x=n(96832),S=n(8863),b=n(56820),w=n(99729),C=n(86758),I=["historyTemplate"];function E(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",10),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"passwordGeneratorPolicyInEffect"),"\n"))}function P(e,t){if(1&e&&(s.ɵɵelement(0,"div",11),s.ɵɵpipe(1,"colorPassword")),2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("innerHTML",s.ɵɵpipeBind1(1,1,e.password),s.ɵɵsanitizeHtml)}}function O(e,t){if(1&e&&(s.ɵɵelement(0,"div",11),s.ɵɵpipe(1,"colorPassword")),2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("innerHTML",s.ɵɵpipeBind1(1,1,e.username),s.ɵɵsanitizeHtml)}}function k(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",13),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().typeChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","type_",e.value,""),s.ɵɵproperty("ngModel",n.type)("value",e.value)("checked",n.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","type_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function A(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",23),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","passwordType_",e.value,""),s.ɵɵproperty("ngModel",n.passwordOptions.type)("value",e.value)("checked",n.passwordOptions.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","passwordType_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function T(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",24),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",25),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",26),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",27),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.numWords=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",25),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",28),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"input",29),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.wordSeparator=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"label",30),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",31),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",32),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"input",33),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.capitalize=t})),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"label",34),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",32),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"input",35),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.includeNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"label",36),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,11,"numWords")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.numWords),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,13,"wordSeparator")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.wordSeparator),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,15,"options")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",e.passwordOptions.capitalize)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.capitalize),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,17,"capitalize")),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",e.passwordOptions.includeNumber)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.includeNumber),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,19,"includeNumber"))}}function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",24),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",25),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",37),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",38),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.length=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).lengthChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",25),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",39),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"input",40),s.ɵɵlistener("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.minNumber=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).minNumberChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",25),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label",41),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"input",42),s.ɵɵlistener("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.minSpecial=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).minSpecialChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"label",30),s.ɵɵtext(33),s.ɵɵpipe(34,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"div",31),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",32),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"input",43),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.uppercase=t})),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"label",44),s.ɵɵtext(44,"A-Z"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"div",32),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"input",45),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.lowercase=t})),s.ɵɵpipe(50,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"label",46),s.ɵɵtext(53,"a-z"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementStart(56,"div",32),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"input",47),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.number=t})),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"label",48),s.ɵɵtext(62,"0-9"),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"div",32),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"input",49),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.special=t})),s.ɵɵpipe(68,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"label",50),s.ɵɵtext(71,"!@#$%^&*"),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"div",32),s.ɵɵtext(75,"\n "),s.ɵɵelementStart(76,"input",51),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).avoidAmbiguous=t})),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementStart(78,"label",52),s.ɵɵtext(79),s.ɵɵpipe(80,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(81,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(83,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,21,"length")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.length),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,23,"minNumbers")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.minNumber),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,25,"minSpecial")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.minSpecial),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(34,27,"options")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",e.passwordOptions.uppercase)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useUppercase),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(41,29,"uppercase")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.lowercase)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useLowercase),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(50,31,"lowercase")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.number)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useNumbers),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(59,33,"numbers")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.special)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useSpecial),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(68,35,"specialCharacters")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.avoidAmbiguous),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(80,37,"ambiguous"))}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",15),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",16),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,A,7,6,"div",7),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵtemplate(11,T,48,21,"ng-container",8),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,M,84,39,"ng-container",8),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",17),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"button",18),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().regenerate()})),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"button",19),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().copy()})),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",20),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"button",21),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().history()})),s.ɵɵpipe(31,"i18n"),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",22),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,7,"passwordType")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",e.passTypeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","passphrase"===e.passwordOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","password"===e.passwordOptions.type),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(21,9,"regeneratePassword"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(25,11,"copyPassword"),"\n "),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(31,13,"passwordHistory"))}}function D(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",63),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementStart(6,"div",64),s.ɵɵtext(7),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","usernameType_",e.value,""),s.ɵɵproperty("ngModel",n.usernameOptions.type)("value",e.value)("checked",n.usernameOptions.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","usernameType_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n "),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.desc)}}function R(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",65),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedService=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","forwardtype_",e.value,""),s.ɵɵproperty("ngModel",n.usernameOptions.forwardedService)("value",e.value)("checked",n.usernameOptions.forwardedService===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","forwardtype_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function F(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",66),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",67),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedSimpleLoginApiKey=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"apiKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedSimpleLoginApiKey)}}function U(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",68),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",69),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedAnonAddyApiToken=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",25),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"label",70),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"input",71),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedAnonAddyDomain=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,4,"apiAccessToken")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedAnonAddyApiToken),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,6,"domainName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedAnonAddyDomain)}}function V(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",72),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",73),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedFirefoxApiToken=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"apiAccessToken")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedFirefoxApiToken)}}function N(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",31),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",30),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,R,7,6,"div",57),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵtemplate(11,F,11,4,"div",58),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,U,20,8,"div",58),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,V,11,4,"div",58),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,5,"service")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",e.forwardOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","simplelogin"===e.usernameOptions.forwardedService),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","anonaddy"===e.usernameOptions.forwardedService),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","firefoxrelay"===e.usernameOptions.forwardedService)}}function _(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",74),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",75),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.subaddressEmail=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"emailAddress")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.subaddressEmail)}}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",76),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",77),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.catchallDomain=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"domainName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.catchallDomain)}}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",30),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",24),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",31),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",32),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",78),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.wordCapitalize=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"label",79),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",32),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"input",80),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.wordIncludeNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"label",81),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"options")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.usernameOptions.wordCapitalize),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(16,7,"capitalize")),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",e.usernameOptions.wordIncludeNumber),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,9,"includeNumber"))}}function H(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",53),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",30),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",54),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"a",55),s.ɵɵpipe(11,"i18n"),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"i",56),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,D,10,7,"div",57),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,N,17,7,"ng-container",8),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,_,11,4,"div",58),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,j,11,4,"div",58),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,z,30,11,"ng-container",8),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",59,60),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"button",61),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().regenerate()})),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",62),s.ɵɵpipe(34,"i18n"),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"span"),s.ɵɵtext(37),s.ɵɵpipe(38,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",19),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().copy()})),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵreference(29),t=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,12,"usernameType")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(11,14,"learnMore")),s.ɵɵadvance(7),s.ɵɵproperty("ngForOf",t.usernameTypeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","forwarded"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","subaddress"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","catchall"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","word"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("appApiAction",t.usernameGeneratingPromise),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(34,16,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(38,18,"regenerateUsername")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(43,20,"copyUsername"),"\n ")}}function L(e,t){}class K extends o.GeneratorComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,i,n,r,o,a,window),this.modalService=s,this.forwardOptions.splice(this.forwardOptions.findIndex((e=>"firefoxrelay"===e.value)),1)}history(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(a.PasswordGeneratorHistoryComponent,this.historyModalRef)}))}lengthChanged(){document.getElementById("length").focus()}minNumberChanged(){document.getElementById("min-number").focus()}minSpecialChanged(){document.getElementById("min-special").focus()}}t.GeneratorComponent=K,K.ɵfac=function(e){return new(e||K)(s.ɵɵdirectiveInject(l.PasswordGenerationService),s.ɵɵdirectiveInject(c.UsernameGenerationService),s.ɵɵdirectiveInject(d.StateService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.I18nService),s.ɵɵdirectiveInject(m.LogService),s.ɵɵdirectiveInject(h.ActivatedRoute),s.ɵɵdirectiveInject(v.ModalService))},K.ɵcmp=s.ɵɵdefineComponent({type:K,selectors:[["app-generator"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(I,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.historyModalRef=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:35,vars:12,consts:[[1,"page-header"],["type","info",4,"ngIf"],[1,"card","card-generated","bg-light","my-4"],[1,"card-body"],["class","generated-wrapper","appSelectCopy","",3,"innerHTML",4,"ngIf"],["role","radiogroup","aria-labelledby","typeHeading",1,"form-group"],["id","typeHeading",1,"d-block"],["class","form-check form-check-inline",4,"ngFor","ngForOf"],[4,"ngIf"],["historyTemplate",""],["type","info"],["appSelectCopy","",1,"generated-wrapper",3,"innerHTML"],[1,"form-check","form-check-inline"],["type","radio","name","Type",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"form-check-label",3,"for"],["aria-labelledby","passwordTypeHeading","role","radiogroup",1,"form-group"],["id","passwordTypeHeading",1,"d-block"],[1,"d-flex"],["type","button",1,"btn","btn-primary",3,"click"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clock","bwi-lg"],["type","radio","name","PasswordType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"row"],[1,"form-group","col-4"],["for","num-words"],["id","num-words","type","number","min","3","max","20",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","word-separator"],["id","word-separator","type","text","maxlength","1",1,"form-control",3,"ngModel","ngModelChange","blur"],[1,"d-block"],[1,"form-group"],[1,"form-check"],["id","capitalize","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","capitalize",1,"form-check-label"],["id","include-number","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","include-number",1,"form-check-label"],["for","length"],["id","length","type","number","min","5","max","128",1,"form-control",3,"ngModel","ngModelChange","blur","change"],["for","min-number"],["id","min-number","type","number","min","0","max","9",1,"form-control",3,"ngModel","blur","ngModelChange","change"],["for","min-special"],["id","min-special","type","number","min","0","max","9",1,"form-control",3,"ngModel","blur","ngModelChange","change"],["id","uppercase","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","uppercase",1,"form-check-label"],["id","lowercase","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","lowercase",1,"form-check-label"],["id","numbers","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","numbers",1,"form-check-label"],["id","special","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","special",1,"form-check-label"],["id","ambiguous","type","checkbox",1,"form-check-input",3,"ngModel","change","ngModelChange"],["for","ambiguous",1,"form-check-label"],["aria-labelledby","usernameTypeHeading","role","radiogroup",1,"form-group"],["id","usernameTypeHeading"],["href","https://bitwarden.com/help/generator/#username-types","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["class","form-check",4,"ngFor","ngForOf"],["class","row",4,"ngIf"],[3,"appApiAction"],["form",""],["type","button",1,"btn","btn-submit","btn-primary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","radio","name","UsernameType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"small","text-muted"],["type","radio","name","ForwardType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],["for","simplelogin-apikey"],["id","simplelogin-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","anonaddy-apikey"],["id","anonaddy-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","anonaddy-domain"],["id","anonaddy-domain","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","firefox-apikey"],["id","firefox-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","subaddress-email"],["id","subaddress-email","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","catchall-domain"],["id","catchall-domain","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["id","capitalizeUsername","type","checkbox",3,"ngModel","change","ngModelChange"],["for","capitalizeUsername",1,"form-check-label"],["id","includeNumberUsername","type","checkbox",3,"ngModel","change","ngModelChange"],["for","includeNumberUsername",1,"form-check-label"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,E,3,3,"app-callout",1),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"div",2),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",3),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,P,2,3,"div",4),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,O,2,3,"div",4),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n"),s.ɵɵelementStart(19,"div",5),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",6),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,k,7,6,"div",7),s.ɵɵtext(26,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n"),s.ɵɵtemplate(28,B,38,15,"ng-container",8),s.ɵɵtext(29,"\n"),s.ɵɵtemplate(30,H,46,22,"ng-container",8),s.ɵɵtext(31,"\n"),s.ɵɵtemplate(32,L,0,0,"ng-template",null,9,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,8,"generator")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",(null==t.enforcedPasswordPolicyOptions?null:t.enforcedPasswordPolicyOptions.inEffect())&&"password"===t.type),s.ɵɵadvance(6),s.ɵɵproperty("ngIf","password"===t.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","username"===t.type),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,10,"whatWouldYouLikeToGenerate")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",t.typeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","password"===t.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","username"===t.type))},directives:[g.NgIf,g.NgForOf,f.CalloutComponent,y.SelectCopyDirective,x.RadioControlValueAccessor,x.DefaultValueAccessor,x.NgControlStatus,x.NgModel,S.A11yTitleDirective,x.MinValidator,x.MaxValidator,x.NumberValueAccessor,x.MaxLengthValidator,x.CheckboxControlValueAccessor,b.ApiActionDirective],pipes:[w.I18nPipe,C.ColorPasswordPipe],encapsulation:2})},56038:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportComponent=void 0;n(68012);const r=n(55733),o=n(78764),a=(n(51554),n(11223),n(36631),n(73828),n(62166),n(49906)),s=n(32621),l=n(51554),c=n(11223),d=n(68012),p=n(73828),u=n(62166),m=n(36631),h=n(57490),v=n(96832),g=n(51626),f=n(99729);function y(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",18),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffectImports"),"\n"))}function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",19),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",19),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"option",20),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,2,2,"option",9),s.ɵɵtext(5,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.importOptions)}}function w(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",22),s.ɵɵtext(3,"\n https://bitwarden.com/help/export-your-data/"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementContainerEnd())}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",23),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-lastpass/"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementContainerEnd())}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the KeePassX desktop application, navigate to "Database" → "Export to CSV file" and\n save the CSV file.\n '),s.ɵɵelementContainerEnd())}function E(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n In the Avira web vault, go to "Settings" → "My Data" → "Export data" and save the\n CSV file.\n '),s.ɵɵelementContainerEnd())}function P(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n In the Blur web vault, click your username at the top and go to "Settings" → "Export\n Data", then click "Export CSV" for your "Accounts".\n '),s.ɵɵelementContainerEnd())}function O(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SaveInCloud desktop application, navigate to "File" → "Export" → "As XML"\n and save the XML file.\n '),s.ɵɵelementContainerEnd())}function k(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to "Settings" → "Export" button and save the file "As CSV".\n '),s.ɵɵelementContainerEnd())}function A(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the KeePass 2 desktop application, navigate to "File" → "Export" and select the\n "KeePass XML (2.x)" option.\n '),s.ɵɵelementContainerEnd())}function T(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Universal Password Manager desktop application, navigate to "Database" →\n "Export" and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function M(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to "Settings". Click the "Export accounts" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function B(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and\n click "Show me my data" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function D(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click\n "Export" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function R(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .json File" option. Click\n "Export" to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function F(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n The process is exactly the same as importing from Google Chrome.\n "),s.ɵɵelementEnd())}function U(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,F,2,0,"span",10),s.ɵɵtext(3,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(4,"a",24),s.ɵɵtext(5,"\n https://bitwarden.com/help/import-from-chrome/"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf","chromecsv"!==e.format)}}function V(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",25),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-firefox/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",26),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-safari/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function _(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",27),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-1password/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function j(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Dragon desktop application, navigate to "File" → "Export" → "To\n XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export"\n button and save the XML file.\n '),s.ɵɵelementContainerEnd())}function z(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Enpass desktop application, navigate to "File" → "Export" → "As CSV".\n Select "OK" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n '),s.ɵɵelementContainerEnd())}function H(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Enpass 6 desktop application, click the menu button and navigate to "File" →\n "Export". Select the ".json" file format option and save the JSON file.\n '),s.ɵɵelementContainerEnd())}function L(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Safe desktop application, navigate to "File" → "Export To" → "XML\n format..." and save the XML file.\n '),s.ɵɵelementContainerEnd())}function K(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log in to Dashlane, click on "My Account" → "Settings" → "Export file" and select\n "Export as a CSV file". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n '),s.ɵɵelementContainerEnd())}function q(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n "),s.ɵɵelementContainerEnd())}function G(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the mSecure desktop application, navigate to "File" → "Export" → "CSV File..."\n and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function W(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Sticky Password desktop application, navigate to "Menu" (top right) → "Export"\n → "Export all". Select the unencrypted format XML option and save the XML file.\n '),s.ɵɵelementContainerEnd())}function $(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n "App Settings". Click the "Export" button, enter your password and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function Y(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to "Data" → "Export". Click the\n "download HTML+JSON" button to save the HTML file.\n '),s.ɵɵelementContainerEnd())}function Q(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) →\n "Options" → "Account & Data" and click the "Export" button. Select all of your data,\n change the "Format" to "CSV file" and then click the "Export" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n '),s.ɵɵelementContainerEnd())}function J(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Passbolt web vault and navigate to the "Passwords" listing. Select all of the\n passwords you would like to export and click the "Export" button at the top of the listing.\n Choose the "csv (lastpass)" export format and click the "Export" button.\n '),s.ɵɵelementContainerEnd())}function Z(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Ascendo DataVault desktop application, navigate to "Tools" → "Export". In the\n dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save\n the CSV file.\n '),s.ɵɵelementContainerEnd())}function X(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Boss desktop application, navigate to "File" → "Export data" →\n "Password Boss JSON - not encrypted" and save the JSON file.\n '),s.ɵɵelementContainerEnd())}function ee(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" → "Export Secrets".\n Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n '),s.ɵɵelementStart(2,"code"),s.ɵɵtext(3,"zoho_export.csv"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function te(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to "Export" → "Export as CSV" and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ne(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore"\n section and click "Backup to CSV" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ie(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n "),s.ɵɵelementStart(2,"a",28),s.ɵɵtext(3,"GNOME Keyring Import/Export"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n python script to your desktop as "),s.ɵɵelementStart(5,"code"),s.ɵɵtext(6,"pw_helper.py"),s.ɵɵelementEnd(),s.ɵɵtext(7,". Open terminal and run\n "),s.ɵɵelementStart(8,"code"),s.ɵɵtext(9,"chmod +rx Desktop/pw_helper.py"),s.ɵɵelementEnd(),s.ɵɵtext(10," and then\n "),s.ɵɵelementStart(11,"code"),s.ɵɵtext(12,"python Desktop/pw_helper.py export Desktop/my_passwords.json"),s.ɵɵelementEnd(),s.ɵɵtext(13,". Then upload the\n resulting "),s.ɵɵelementStart(14,"code"),s.ɵɵtext(15,"my_passwords.json"),s.ɵɵelementEnd(),s.ɵɵtext(16," file here to Bitwarden.\n "),s.ɵɵelementContainerEnd())}function re(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Agent desktop application navigate to "File" → "Export", select the\n "Fields to export" button and check all of the fields, change the "Output format" to "CSV",\n and then click the "Start" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function oe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Passpack website vault and navigate to "Settings" → "Export", then click the\n "Download" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ae(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open your Passman vault and click on "Settings" in the bottom left corner. In the "Settings"\n window switch to the "Export credentials" tab and choose "JSON" as the export type. Enter your\n vault\'s passphrase and click the "Export" button to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function se(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to CSV file" option to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function le(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to JSON file" option to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function ce(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the F-Secure KEY desktop application and navigate to "Settings" → "Export\n Passwords". Select the "Export" button, enter your master password, and save the FSK file.\n '),s.ɵɵelementContainerEnd())}function de(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Kaspersky Password Manager desktop application and navigate to "Settings" →\n "Import/Export". Locate the "Export to text file" section and select the "Export" button to\n save the TXT file.\n '),s.ɵɵelementContainerEnd())}function pe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the RememBear desktop application and navigate to "Settings" → "Account" →\n "Export". Enter your master password and select the "Export Anyway" button to save the CSV\n file.\n '),s.ɵɵelementContainerEnd())}function ue(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the PasswordWallet desktop application and navigate to "File" → "Export" →\n "Visible entries to text file". Enter your password and select the "Ok" button to save the TXT\n file.\n '),s.ɵɵelementContainerEnd())}function me(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Myki desktop browser extension and navigate to "Advanced" → "Export Accounts"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer\'s downloads folder.\n '),s.ɵɵelementContainerEnd())}function he(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n "),s.ɵɵelementContainerEnd())}function ve(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the LogMeOnce browser extension, then navigate to "Open Menu" → "Export To" and\n select "CSV File" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ge(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the BlackBerry Password Keeper application, then navigate to "Settings" →\n "Import/Export". Select "Export Passwords" and follow the instructions on screen to save the\n unencrypted CSV file.\n '),s.ɵɵelementContainerEnd())}function fe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Buttercup desktop application and unlock your vault. Right click on your vault\'s icon\n and select "Export" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ye(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Codebook desktop application and log in. Navigate to "File" → "Export all", then\n click "Yes" on the dialog and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function xe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n "),s.ɵɵelementContainerEnd())}function Se(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n From the Yoti browser extension, click on "Settings", then "Export Saved Logins" and save the\n CSV file.\n '),s.ɵɵelementContainerEnd())}function be(e,t){if(1&e&&(s.ɵɵelementStart(0,"app-callout",21),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,w,5,0,"ng-container",10),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,C,5,0,"ng-container",10),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,I,2,0,"ng-container",10),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,E,2,0,"ng-container",10),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,P,2,0,"ng-container",10),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,O,2,0,"ng-container",10),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,k,2,0,"ng-container",10),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,A,2,0,"ng-container",10),s.ɵɵtext(17,"\n "),s.ɵɵtemplate(18,T,2,0,"ng-container",10),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,M,2,0,"ng-container",10),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,B,2,0,"ng-container",10),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,D,2,0,"ng-container",10),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,R,2,0,"ng-container",10),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,U,7,1,"ng-container",10),s.ɵɵtext(29,"\n "),s.ɵɵtemplate(30,V,5,0,"ng-container",10),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,N,5,0,"ng-container",10),s.ɵɵtext(33,"\n "),s.ɵɵtemplate(34,_,5,0,"ng-container",10),s.ɵɵtext(35,"\n "),s.ɵɵtemplate(36,j,2,0,"ng-container",10),s.ɵɵtext(37,"\n "),s.ɵɵtemplate(38,z,2,0,"ng-container",10),s.ɵɵtext(39,"\n "),s.ɵɵtemplate(40,H,2,0,"ng-container",10),s.ɵɵtext(41,"\n "),s.ɵɵtemplate(42,L,2,0,"ng-container",10),s.ɵɵtext(43,"\n "),s.ɵɵtemplate(44,K,2,0,"ng-container",10),s.ɵɵtext(45,"\n "),s.ɵɵtemplate(46,q,2,0,"ng-container",10),s.ɵɵtext(47,"\n "),s.ɵɵtemplate(48,G,2,0,"ng-container",10),s.ɵɵtext(49,"\n "),s.ɵɵtemplate(50,W,2,0,"ng-container",10),s.ɵɵtext(51,"\n "),s.ɵɵtemplate(52,$,2,0,"ng-container",10),s.ɵɵtext(53,"\n "),s.ɵɵtemplate(54,Y,2,0,"ng-container",10),s.ɵɵtext(55,"\n "),s.ɵɵtemplate(56,Q,2,0,"ng-container",10),s.ɵɵtext(57,"\n "),s.ɵɵtemplate(58,J,2,0,"ng-container",10),s.ɵɵtext(59,"\n "),s.ɵɵtemplate(60,Z,2,0,"ng-container",10),s.ɵɵtext(61,"\n "),s.ɵɵtemplate(62,X,2,0,"ng-container",10),s.ɵɵtext(63,"\n "),s.ɵɵtemplate(64,ee,5,0,"ng-container",10),s.ɵɵtext(65,"\n "),s.ɵɵtemplate(66,te,2,0,"ng-container",10),s.ɵɵtext(67,"\n "),s.ɵɵtemplate(68,ne,2,0,"ng-container",10),s.ɵɵtext(69,"\n "),s.ɵɵtemplate(70,ie,17,0,"ng-container",10),s.ɵɵtext(71,"\n "),s.ɵɵtemplate(72,re,2,0,"ng-container",10),s.ɵɵtext(73,"\n "),s.ɵɵtemplate(74,oe,2,0,"ng-container",10),s.ɵɵtext(75,"\n "),s.ɵɵtemplate(76,ae,2,0,"ng-container",10),s.ɵɵtext(77,"\n "),s.ɵɵtemplate(78,se,2,0,"ng-container",10),s.ɵɵtext(79,"\n "),s.ɵɵtemplate(80,le,2,0,"ng-container",10),s.ɵɵtext(81,"\n "),s.ɵɵtemplate(82,ce,2,0,"ng-container",10),s.ɵɵtext(83,"\n "),s.ɵɵtemplate(84,de,2,0,"ng-container",10),s.ɵɵtext(85,"\n "),s.ɵɵtemplate(86,pe,2,0,"ng-container",10),s.ɵɵtext(87,"\n "),s.ɵɵtemplate(88,ue,2,0,"ng-container",10),s.ɵɵtext(89,"\n "),s.ɵɵtemplate(90,me,2,0,"ng-container",10),s.ɵɵtext(91,"\n "),s.ɵɵtemplate(92,he,2,0,"ng-container",10),s.ɵɵtext(93,"\n "),s.ɵɵtemplate(94,ve,2,0,"ng-container",10),s.ɵɵtext(95,"\n "),s.ɵɵtemplate(96,ge,2,0,"ng-container",10),s.ɵɵtext(97,"\n "),s.ɵɵtemplate(98,fe,2,0,"ng-container",10),s.ɵɵtext(99,"\n "),s.ɵɵtemplate(100,ye,2,0,"ng-container",10),s.ɵɵtext(101,"\n "),s.ɵɵtemplate(102,xe,2,0,"ng-container",10),s.ɵɵtext(103,"\n "),s.ɵɵtemplate(104,Se,2,0,"ng-container",10),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵpropertyInterpolate("title",e.getFormatInstructionTitle()),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","bitwardencsv"===e.format||"bitwardenjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","lastpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepassxcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","aviracsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","blurcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","safeincloudxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","padlockcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepass2xml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","upmcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","saferpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","meldiumcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepercsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keeperjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","chromecsv"===e.format||"operacsv"===e.format||"vivaldicsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","firefoxcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","safaricsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","1password1pux"===e.format||"1password1pif"===e.format||"1passwordwincsv"===e.format||"1passwordmaccsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passworddragonxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","enpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","enpassjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","pwsafexml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","dashlanecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","dashlanejson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","msecurecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","stickypasswordxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","truekeycsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","clipperzhtml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","roboformcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passboltcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","ascendocsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordbossjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","zohovaultcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","splashidcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passkeepcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","gnomejson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordagentcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passpackcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passmanjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","avastcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","avastjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","fsecurefsk"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","kasperskytxt"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","remembearcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordwallettxt"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","mykicsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","securesafecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","logmeoncecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","blackberrycsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","buttercupcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","codebookcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","encryptrcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","yoticsv"===e.format)}}const we=function(e){return{manual:e}};class Ce{constructor(e,t,n,i,r,o){this.i18nService=e,this.importService=t,this.router=n,this.platformUtilsService=i,this.policyService=r,this.logService=o,this.format=null,this.loading=!1,this.importBlockedByPolicy=!1,this.organizationId=null,this.successNavigate=["vault"]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.setImportOptions(),this.importBlockedByPolicy=yield this.policyService.policyAppliesToUser(a.PolicyType.PersonalOwnership)}))}submit(){return i(this,void 0,void 0,(function*(){if(this.importBlockedByPolicy)return void this.platformUtilsService.showToast("error",null,this.i18nService.t("personalOwnershipPolicyInEffectImports"));this.loading=!0;const e=this.importService.getImporter(this.format,this.organizationId);if(null===e)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFormat")),void(this.loading=!1);const t=document.getElementById("file").files;if(!(null!=t&&0!==t.length||null!=this.fileContents&&""!==this.fileContents))return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile")),void(this.loading=!1);let n=this.fileContents;if(null!=t&&t.length>0)try{const e=yield this.getFileContents(t[0]);null!=e&&(n=e)}catch(i){this.logService.error(i)}if(null==n||""===n)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile")),void(this.loading=!1);try{this.formPromise=this.importService.import(e,n,this.organizationId);const t=yield this.formPromise;if(null!=t)return this.error(t),void(this.loading=!1);this.platformUtilsService.showToast("success",null,this.i18nService.t("importSuccess")),this.router.navigate(this.successNavigate)}catch(i){this.logService.error(i)}this.loading=!1}))}getFormatInstructionTitle(){if(null==this.format)return null;const e=this.featuredImportOptions.concat(this.importOptions).filter((e=>e.id===this.format));return e.length>0?this.i18nService.t("instructionsFor",e[0].name):null}setImportOptions(){this.featuredImportOptions=[{id:null,name:"-- "+this.i18nService.t("select")+" --"},...this.importService.featuredImportOptions],this.importOptions=[...this.importService.regularImportOptions].sort(((e,t)=>null==e.name&&null!=t.name?-1:null!=e.name&&null==t.name?1:null==e.name&&null==t.name?0:this.i18nService.collator?this.i18nService.collator.compare(e.name,t.name):e.name.localeCompare(t.name)))}error(e){return i(this,void 0,void 0,(function*(){yield o.default.fire({heightAuto:!1,buttonsStyling:!1,icon:"error",iconHtml:'',input:"textarea",inputValue:e.message,inputAttributes:{readonly:"true"},titleText:this.i18nService.t("importError"),text:this.i18nService.t("importErrorDesc"),showConfirmButton:!0,confirmButtonText:this.i18nService.t("ok"),onOpen:e=>{e.querySelector(".swal2-textarea").scrollTo(0,0)}})}))}getFileContents(e){return"1password1pux"===this.format?this.extract1PuxContent(e):new Promise(((t,n)=>{const i=new FileReader;i.readAsText(e,"utf-8"),i.onload=i=>{if("lastpasscsv"===this.format&&"text/html"===e.type){const e=(new DOMParser).parseFromString(i.target.result,"text/html").querySelector("pre");return null!=e?void t(e.textContent):void n()}t(i.target.result)},i.onerror=()=>{n()}}))}extract1PuxContent(e){return(new r).loadAsync(e).then((e=>e.file("export.data").async("string"))).then((function(e){return e}),(function(e){return""}))}}t.ImportComponent=Ce,Ce.ɵfac=function(e){return new(e||Ce)(s.ɵɵdirectiveInject(l.I18nService),s.ɵɵdirectiveInject(c.ImportService),s.ɵɵdirectiveInject(d.Router),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.PolicyService),s.ɵɵdirectiveInject(m.LogService))},Ce.ɵcmp=s.ɵɵdefineComponent({type:Ce,selectors:[["app-import"]],decls:69,vars:31,consts:[[1,"page-header"],["type","info",4,"ngIf"],["ngNativeValidate","",3,"ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","type"],["id","type","name","Format","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[4,"ngIf"],["type","info",3,"title",4,"ngIf"],["for","file"],["type","file","id","file","name","file",1,"form-control-file",3,"disabled"],["for","fileContents"],["id","fileContents","name","FileContents",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info"],[3,"ngValue"],["value","-","disabled",""],["type","info",3,"title"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/export-your-data/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-lastpass/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-chrome/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-firefox/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-safari/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-1password/"],["target","_blank","rel","noopener","href","https://bit.ly/2GpOMTg"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,y,3,3,"app-callout",1),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",4),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",5),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",7),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"select",8),s.ɵɵlistener("ngModelChange",(function(e){return t.format=e})),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,x,2,2,"option",9),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,b,6,1,"ng-container",10),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,be,106,53,"app-callout",11),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",4),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"div",5),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",6),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"label",12),s.ɵɵtext(41),s.ɵɵpipe(42,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelement(44,"input",13),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"div",6),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"label",14),s.ɵɵtext(52),s.ɵɵpipe(53,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"textarea",15),s.ɵɵlistener("ngModelChange",(function(e){return t.fileContents=e})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"button",16),s.ɵɵtext(59,"\n "),s.ɵɵelement(60,"i",17),s.ɵɵpipe(61,"i18n"),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"span"),s.ɵɵtext(64),s.ɵɵpipe(65,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,17,"importData")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.importBlockedByPolicy),s.ɵɵadvance(12),s.ɵɵtextInterpolate1("1. ",s.ɵɵpipeBind1(20,19,"selectFormat"),""),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.format)("disabled",t.importBlockedByPolicy),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.featuredImportOptions),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.importOptions&&t.importOptions.length),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.format),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("2. ",s.ɵɵpipeBind1(42,21,"selectImportFile"),""),s.ɵɵadvance(3),s.ɵɵproperty("disabled",t.importBlockedByPolicy),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(53,23,"orCopyPasteFileContents")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.fileContents)("disabled",t.importBlockedByPolicy),s.ɵɵadvance(3),s.ɵɵproperty("disabled",t.loading||t.importBlockedByPolicy)("ngClass",s.ɵɵpureFunction1(29,we,t.importBlockedByPolicy)),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(61,25,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(65,27,"importData")))},directives:[h.NgIf,v.NgControlStatusGroup,v.NgForm,v.SelectControlValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,h.NgForOf,v.DefaultValueAccessor,h.NgClass,g.CalloutComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[f.I18nPipe],encapsulation:2})},4184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorHistoryComponent=void 0;const i=n(61738),r=(n(51554),n(84275),n(73828),n(32621)),o=n(84275),a=n(73828),s=n(51554),l=n(8863),c=n(57490),d=n(31161),p=n(99729),u=n(86758);function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",16),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",17),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"div",18),r.ɵɵpipe(5,"colorPassword"),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"small",19),r.ɵɵtext(8),r.ɵɵpipe(9,"date"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",10),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(2).copy(t.password)})),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",21),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit;r.ɵɵadvance(4),r.ɵɵproperty("innerHTML",r.ɵɵpipeBind1(5,3,e.password),r.ɵɵsanitizeHtml),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(9,5,e.date,"medium")),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,8,"copyPassword"))}}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",13),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",14),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,m,21,10,"li",15),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.history)}}function v(e,t){1&e&&(r.ɵɵelementStart(0,"div",13),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noPasswordsInList"),"\n "))}class g extends i.PasswordGeneratorHistoryComponent{constructor(e,t,n){super(e,t,n,window)}}t.PasswordGeneratorHistoryComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.PasswordGenerationService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-password-generator-history"]],features:[r.ɵɵInheritDefinitionFeature],decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","passHistoryTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content"],[1,"modal-header"],["id","passHistoryTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw"],[1,"modal-body"],[1,"list-group","list-group-flush"],["class","list-group-item d-flex",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex"],[1,"password-row"],["appSelectCopy","",1,"text-monospace","generated-wrapper",3,"innerHTML"],[1,"text-muted"],[1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",5),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",6),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,h,7,1,"div",7),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,v,3,3,"div",7),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"div",8),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"button",9),r.ɵɵtext(27),r.ɵɵpipe(28,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",10),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"button",11),r.ɵɵlistener("click",(function(){return t.clear()})),r.ɵɵpipe(33,"i18n"),r.ɵɵtext(34,"\n "),r.ɵɵelement(35,"i",12),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,6,"passwordHistory")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,8,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",t.history.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.history.length),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(28,10,"close"),"\n "),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(33,12,"clear")))},directives:[l.A11yTitleDirective,c.NgIf,c.NgForOf,d.SelectCopyDirective],pipes:[p.I18nPipe,u.ColorPasswordPipe,c.DatePipe],encapsulation:2})},44118:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ToolsComponent=void 0;n(45552),n(73569);const r=n(32621),o=n(73569),a=n(45552),s=n(68012),l=n(99729);class c{constructor(e,t){this.stateService=e,this.messagingService=t,this.canAccessPremium=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium()}))}premiumRequired(){this.canAccessPremium||this.messagingService.send("premiumRequired")}}t.ToolsComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.StateService),r.ɵɵdirectiveInject(a.MessagingService))},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-tools"]],decls:36,vars:12,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card","mb-4"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","generator","routerLinkActive","active",1,"list-group-item"],["routerLink","import","routerLinkActive","active",1,"list-group-item"],["routerLink","export","routerLinkActive","active",1,"list-group-item"],[1,"col-9"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"a",8),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",9),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"router-outlet"),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,4,"tools")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,6,"generator"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,8,"importData"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,10,"exportVault"),"\n "))},directives:[s.RouterLinkWithHref,s.RouterLinkActive,s.RouterOutlet],pipes:[l.I18nPipe],encapsulation:2})},95746:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditCustomFieldsComponent=void 0;const i=n(4758),r=(n(32034),n(51554),n(32621)),o=n(51554),a=n(32034),s=n(57490),l=n(83072),c=n(8863),d=n(96832),p=n(48198),u=n(13803),m=n(1142),h=n(99729);function v(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"input",12),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",22),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).copy(t.value,"value","Field")})),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelement(9,"i",23),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(7,5,"copyValue"))}}const g=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function f(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"input",24),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).toggleFieldValue(t)})),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"i",26),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit,n=r.ɵɵnextContext(2);return n.copy(t.value,"value",t.type===n.fieldType.Hidden?"H_Field":"Field")})),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelement(16,"i",23),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate("type",n.showValue?"text":"password"),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly||!i.cipher.viewPassword&&!n.newField),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(7,10,"toggleVisibility")),r.ɵɵproperty("disabled",!i.cipher.viewPassword&&!n.newField),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(14,g,!n.showValue,n.showValue)),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"copyValue")),r.ɵɵproperty("disabled",!i.cipher.viewPassword&&!n.newField)}}function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"select",28),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).$implicit.linkedId=t})),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,y,2,2,"option",29),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.linkedId)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",i.linkedFieldOptions)}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,x,4,5,"select",27),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.type===t.fieldType.Linked&&null!=t.cipher.linkedFieldOptions)}}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"input",31),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly)}}function w(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",32),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).removeField(t)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",33),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"remove"))}function C(e,t){1&e&&(r.ɵɵelementStart(0,"button",34),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",35),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()),2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"dragToSort"))}function I(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",6),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",7),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",8),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",9),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"a",10),r.ɵɵpipe(11,"i18n"),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"i",11),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"input",12),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.name=t})),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",13),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"label",9),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",14),r.ɵɵtext(27,"\n "),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,v,13,7,"div",15),r.ɵɵtext(30,"\n "),r.ɵɵtext(31,"\n "),r.ɵɵtemplate(32,f,20,17,"div",15),r.ɵɵtext(33,"\n "),r.ɵɵtext(34,"\n "),r.ɵɵtemplate(35,S,4,1,"div",15),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"div",16),r.ɵɵtext(38,"\n "),r.ɵɵtext(39,"\n "),r.ɵɵtemplate(40,b,1,4,"input",17),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵtemplate(43,w,5,3,"button",18),r.ɵɵtext(44,"\n "),r.ɵɵtemplate(45,C,5,3,"button",19),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=r.ɵɵnextContext(2);r.ɵɵadvance(6),r.ɵɵpropertyInterpolate1("for","fieldName",n,""),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,15,"name")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(11,17,"learnMore")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate1("id","fieldName",n,""),r.ɵɵpropertyInterpolate1("name","Field.Name",n,""),r.ɵɵproperty("ngModel",e.name)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate1("for","fieldValue",n,""),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(24,19,"value")),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.type===i.fieldType.Text),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.type===i.fieldType.Hidden),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.type===i.fieldType.Linked),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.type===i.fieldType.Boolean),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",4),r.ɵɵlistener("cdkDropListDropped",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().drop(t)})),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,I,49,21,"div",5),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.cipher.fields)("ngForTrackBy",e.trackByFunction)}}function P(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"a",36),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addField()})),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",37),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(4,1,"newCustomField"),"\n "))}function O(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function k(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngValue",e.addFieldLinkedTypeOption.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.addFieldLinkedTypeOption.name,"\n ")}}function A(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",38),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",39),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"label",40),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"select",41),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addFieldType=t})),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,O,2,2,"option",29),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,k,2,2,"option",42),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(6,4,"type")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.addFieldType),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.addFieldTypeOptions),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",null!=e.cipher.linkedFieldOptions)}}class T extends i.AddEditCustomFieldsComponent{constructor(e,t){super(e,t)}}t.AddEditCustomFieldsComponent=T,T.ɵfac=function(e){return new(e||T)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.EventService))},T.ɵcmp=r.ɵɵdefineComponent({type:T,selectors:[["app-vault-add-edit-custom-fields"]],inputs:{viewOnly:"viewOnly",copy:"copy"},features:[r.ɵɵInheritDefinitionFeature],decls:14,vars:6,consts:[[1,"mt-4"],["cdkDropList","",3,"cdkDropListDropped",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-2",3,"click",4,"ngIf"],["class","row",4,"ngIf"],["cdkDropList","",3,"cdkDropListDropped"],["class","row","cdkDrag","",4,"ngFor","ngForOf","ngForTrackBy"],["cdkDrag","",1,"row"],[1,"col-5","form-group"],[1,"d-flex"],[3,"for"],["href","https://bitwarden.com/help/custom-fields/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","ngModelChange"],[1,"col-7","form-group"],[1,"d-flex","align-items-center"],["class","input-group",4,"ngIf"],[1,"flex-fill"],["type","checkbox","appTrueFalseValue","","trueValue","true","falseValue","false",3,"id","name","ngModel","disabled","ngModelChange",4,"ngIf"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-link text-muted cursor-move",3,"appA11yTitle",4,"ngIf"],[1,"input-group"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"id","type","name","ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["class","form-control",3,"id","name","ngModel","disabled","ngModelChange",4,"ngIf"],[1,"form-control",3,"id","name","ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["type","checkbox","appTrueFalseValue","","trueValue","true","falseValue","false",3,"id","name","ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["type","button",1,"btn","btn-link","text-muted","cursor-move",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-hamburger","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-2",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],[1,"row"],[1,"col-5"],["for","addFieldType",1,"sr-only"],["id","addFieldType","name","AddFieldType",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngIf"]],template:function(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h3",0),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,E,4,2,"div",1),r.ɵɵtext(7,"\n "),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,P,5,3,"a",2),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,A,16,6,"div",3),r.ɵɵtext(12,"\n"),r.ɵɵelementContainerEnd(),r.ɵɵtext(13,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,4,"customFields")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.cipher.hasFields),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.cipher.isDeleted&&!t.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.cipher.isDeleted&&!t.viewOnly))},directives:[s.NgIf,l.CdkDropList,s.NgForOf,l.CdkDrag,c.A11yTitleDirective,d.DefaultValueAccessor,p.InputVerbatimDirective,d.NgControlStatus,d.NgModel,s.NgClass,d.SelectControlValueAccessor,d.NgSelectOption,d.ɵNgSelectMultipleOption,u.TrueFalseValueDirective,d.CheckboxControlValueAccessor,m.StopClickDirective],pipes:[h.I18nPipe],encapsulation:2})},41141:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;const r=n(7481),o=(n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344),n(32773)),a=n(80253),s=n(32621),l=n(45330),c=n(88308),d=n(51554),p=n(73828),u=n(42982),m=n(73569),h=n(3174),v=n(52344),g=n(84275),f=n(45552),y=n(32034),x=n(62166),S=n(63513),b=n(36631),w=n(44809),C=n(96832),I=n(56820),E=n(8863),P=n(57490),O=n(95746),k=n(51626),A=n(45728),T=n(48198),M=n(1142),B=n(48403),D=n(99729);function R(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",26),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function F(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function U(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",17),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",27),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"select",28),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.type=t})),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,F,2,2,"option",29),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,4,"whatTypeOfItem")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.typeOptions)}}function V(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function N(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",17),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",31),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"select",32),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.folderId=t})),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,V,2,2,"option",29),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,4,"folder")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.folders)}}function _(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",41),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelement(5,"i",44),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(3,1,"copyUsername")))}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",57),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(4).generatePassword()})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",58),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}2&e&&s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,1,"generatePassword"))}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",51),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,j,5,3,"a",52),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"a",53,54),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).checkPassword()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",55),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"i",56),s.ɵɵpipe(11,"i18n"),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(5),t=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.cipher.viewPassword),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,6,"checkPassword")),s.ɵɵproperty("appApiAction",t.checkPasswordPromise),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(11,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function H(e,t){1&e&&s.ɵɵelement(0,"app-premium-badge",62)}function L(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",63),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(4).upgradeOrganization()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function K(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",59),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,H,1,0,"app-premium-badge",60),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,L,3,3,"a",61),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"verificationCodeTotp")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const q=function(e){return{"stroke-dashoffset.px":e}};function G(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",64),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span",65),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"span",66),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵnamespaceSVG(),s.ɵɵelementStart(7,"svg"),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"g"),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"circle",67),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"circle",68),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵnamespaceHTML(),s.ɵɵelementStart(18,"span",69),s.ɵɵpipe(19,"i18n"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"button",70),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),s.ɵɵpipe(23,"i18n"),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"i",71),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(e.totpSec),s.ɵɵadvance(6),s.ɵɵproperty("ngStyle",s.ɵɵpureFunction1(9,q,e.totpDash)),s.ɵɵadvance(7),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(19,5,"verificationCodeTotp")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.totpCodeFormatted),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function W(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function $(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",82),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(4).removeUri(t)})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",83),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}2&e&&s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,1,"remove"))}function Y(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",73),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",74),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",34),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",75),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.uri=t})),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",41),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",42),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).launch(t)})),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelement(18,"i",76),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"button",50),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),s.ɵɵpipe(22,"i18n"),s.ɵɵtext(23,"\n "),s.ɵɵelement(24,"i",44),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",77),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",37),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"label",74),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"a",78),s.ɵɵpipe(39,"i18n"),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",79),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"div",37),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"select",80),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).loginUriMatchChanged(t)})),s.ɵɵtext(48,"\n "),s.ɵɵtemplate(49,W,2,2,"option",29),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵtemplate(52,$,5,3,"button",81),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=s.ɵɵnextContext(4);s.ɵɵadvance(4),s.ɵɵpropertyInterpolate1("for","loginUri",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(6,19,"uriPosition",n+1)),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate1("id","loginUri",n,""),s.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(11,22,"ex")," https://google.com"),s.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,24,"launch")),s.ɵɵproperty("disabled",!e.canLaunch),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(22,26,"copyUri")),s.ɵɵadvance(13),s.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(39,30,"learnMore")),s.ɵɵadvance(9),s.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),s.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),s.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",i.uriMatchOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function Q(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,Y,56,32,"div",72),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function J(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",84),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).addUri()})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",85),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const Z=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},X=function(e){return{low:e}};function ee(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",17),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",33),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",34),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.username=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,_,8,3,"div",36),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",17),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"div",37),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"label",38),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,z,14,10,"div",39),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",34),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"input",40),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.password=t})),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"div",41),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"button",42),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).togglePassword()})),s.ɵɵpipe(36,"i18n"),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"i",43),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",42),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),s.ɵɵpipe(42,"i18n"),s.ɵɵtext(43,"\n "),s.ɵɵelement(44,"i",44),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"div",16),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"div",17),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"label",45),s.ɵɵtext(56),s.ɵɵpipe(57,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"input",46),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.totp=t})),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"div",47),s.ɵɵtext(63,"\n "),s.ɵɵtemplate(64,K,9,5,"div",21),s.ɵɵtext(65,"\n "),s.ɵɵtemplate(66,G,28,11,"div",48),s.ɵɵtext(67,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵtemplate(70,Q,4,2,"ng-container",21),s.ɵɵtext(71,"\n "),s.ɵɵtemplate(72,J,5,3,"a",49),s.ɵɵtext(73,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,23,"username")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.isDeleted),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(24,25,"password")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(36,27,"toggleVisibility")),s.ɵɵproperty("disabled",!e.cipher.viewPassword),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(33,Z,!e.showPassword,e.showPassword)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(42,29,"copyPassword")),s.ɵɵproperty("disabled",!e.cipher.viewPassword),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(36,X,e.totpLow)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",e.cipher.login.hasUris),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function te(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function ne(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ie(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",17),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",86),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",87),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.cardholderName=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",17),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",88),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"select",89),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.brand=t})),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,te,2,2,"option",29),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",16),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",17),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",90),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",34),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"input",91),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.number=t})),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",41),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleCardNumber()})),s.ɵɵpipe(41,"i18n"),s.ɵɵtext(42,"\n "),s.ɵɵelement(43,"i",43),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),s.ɵɵpipe(47,"i18n"),s.ɵɵtext(48,"\n "),s.ɵɵelement(49,"i",44),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"div",92),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"label",93),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"select",94),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.expMonth=t})),s.ɵɵtext(62,"\n "),s.ɵɵtemplate(63,ne,2,2,"option",29),s.ɵɵtext(64,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"div",92),s.ɵɵtext(68,"\n "),s.ɵɵelementStart(69,"label",95),s.ɵɵtext(70),s.ɵɵpipe(71,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementStart(73,"input",96),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.expYear=t})),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementStart(78,"div",16),s.ɵɵtext(79,"\n "),s.ɵɵelementStart(80,"div",17),s.ɵɵtext(81,"\n "),s.ɵɵelementStart(82,"label",97),s.ɵɵtext(83),s.ɵɵpipe(84,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"div",34),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"input",98),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.code=t})),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"div",41),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleCardCode()})),s.ɵɵpipe(93,"i18n"),s.ɵɵtext(94,"\n "),s.ɵɵelement(95,"i",43),s.ɵɵtext(96,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),s.ɵɵpipe(99,"i18n"),s.ɵɵtext(100,"\n "),s.ɵɵelement(101,"i",44),s.ɵɵtext(102,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(104,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,29,"cardholderName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,31,"brand")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cardBrandOptions),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,33,"number")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(41,35,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(51,Z,!e.showCardNumber,e.showCardNumber)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(47,37,"copyNumber")),s.ɵɵadvance(12),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,39,"expirationMonth")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cardExpMonthOptions),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(71,41,"expirationYear")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(74,43,"ex")," 2019"),s.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(84,45,"securityCode")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(93,47,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(54,Z,!e.showCardCode,e.showCardCode)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(99,49,"securityCode"))}}function re(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function oe(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",99),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",100),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"select",101),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.title=t})),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,re,2,2,"option",29),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",16),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",99),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",102),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",103),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.firstName=t})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",99),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",104),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",105),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.middleName=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",99),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"label",106),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"input",107),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.lastName=t})),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"div",16),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"div",99),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"label",108),s.ɵɵtext(52),s.ɵɵpipe(53,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"input",109),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.username=t})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"div",99),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"label",110),s.ɵɵtext(61),s.ɵɵpipe(62,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementStart(64,"input",111),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.company=t})),s.ɵɵelementEnd(),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n "),s.ɵɵelementStart(68,"div",16),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"div",99),s.ɵɵtext(71,"\n "),s.ɵɵelementStart(72,"label",112),s.ɵɵtext(73),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementStart(76,"input",113),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.ssn=t})),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"div",99),s.ɵɵtext(80,"\n "),s.ɵɵelementStart(81,"label",114),s.ɵɵtext(82),s.ɵɵpipe(83,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(84,"\n "),s.ɵɵelementStart(85,"input",115),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.passportNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(86,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"div",99),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"label",116),s.ɵɵtext(91),s.ɵɵpipe(92,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n "),s.ɵɵelementStart(94,"input",117),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(95,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(96,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"div",16),s.ɵɵtext(99,"\n "),s.ɵɵelementStart(100,"div",17),s.ɵɵtext(101,"\n "),s.ɵɵelementStart(102,"label",118),s.ɵɵtext(103),s.ɵɵpipe(104,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(105,"\n "),s.ɵɵelementStart(106,"input",119),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.email=t})),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(108,"\n "),s.ɵɵelementStart(109,"div",17),s.ɵɵtext(110,"\n "),s.ɵɵelementStart(111,"label",120),s.ɵɵtext(112),s.ɵɵpipe(113,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(114,"\n "),s.ɵɵelementStart(115,"input",121),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.phone=t})),s.ɵɵelementEnd(),s.ɵɵtext(116,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(117,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(118,"\n "),s.ɵɵelementStart(119,"div",16),s.ɵɵtext(120,"\n "),s.ɵɵelementStart(121,"div",17),s.ɵɵtext(122,"\n "),s.ɵɵelementStart(123,"label",122),s.ɵɵtext(124),s.ɵɵpipe(125,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(126,"\n "),s.ɵɵelementStart(127,"input",123),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address1=t})),s.ɵɵelementEnd(),s.ɵɵtext(128,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(129,"\n "),s.ɵɵelementStart(130,"div",17),s.ɵɵtext(131,"\n "),s.ɵɵelementStart(132,"label",124),s.ɵɵtext(133),s.ɵɵpipe(134,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(135,"\n "),s.ɵɵelementStart(136,"input",125),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address2=t})),s.ɵɵelementEnd(),s.ɵɵtext(137,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(138,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementStart(140,"div",16),s.ɵɵtext(141,"\n "),s.ɵɵelementStart(142,"div",17),s.ɵɵtext(143,"\n "),s.ɵɵelementStart(144,"label",126),s.ɵɵtext(145),s.ɵɵpipe(146,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(147,"\n "),s.ɵɵelementStart(148,"input",127),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address3=t})),s.ɵɵelementEnd(),s.ɵɵtext(149,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(150,"\n "),s.ɵɵelementStart(151,"div",17),s.ɵɵtext(152,"\n "),s.ɵɵelementStart(153,"label",128),s.ɵɵtext(154),s.ɵɵpipe(155,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(156,"\n "),s.ɵɵelementStart(157,"input",129),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.city=t})),s.ɵɵelementEnd(),s.ɵɵtext(158,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(159,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"div",16),s.ɵɵtext(162,"\n "),s.ɵɵelementStart(163,"div",17),s.ɵɵtext(164,"\n "),s.ɵɵelementStart(165,"label",130),s.ɵɵtext(166),s.ɵɵpipe(167,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(168,"\n "),s.ɵɵelementStart(169,"input",131),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.state=t})),s.ɵɵelementEnd(),s.ɵɵtext(170,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(171,"\n "),s.ɵɵelementStart(172,"div",17),s.ɵɵtext(173,"\n "),s.ɵɵelementStart(174,"label",132),s.ɵɵtext(175),s.ɵɵpipe(176,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(177,"\n "),s.ɵɵelementStart(178,"input",133),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.postalCode=t})),s.ɵɵelementEnd(),s.ɵɵtext(179,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(180,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(181,"\n "),s.ɵɵelementStart(182,"div",16),s.ɵɵtext(183,"\n "),s.ɵɵelementStart(184,"div",17),s.ɵɵtext(185,"\n "),s.ɵɵelementStart(186,"label",134),s.ɵɵtext(187),s.ɵɵpipe(188,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(189,"\n "),s.ɵɵelementStart(190,"input",135),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.country=t})),s.ɵɵelementEnd(),s.ɵɵtext(191,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(192,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(193,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,55,"title")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.identityTitleOptions),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,57,"firstName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,59,"middleName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,61,"lastName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(53,63,"username")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(62,65,"company")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(74,67,"ssn")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(83,69,"passportNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(92,71,"licenseNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(104,73,"email")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(113,75,"phone")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(125,77,"address1")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(134,79,"address2")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(146,81,"address3")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(155,83,"cityTown")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(167,85,"stateProvince")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(176,87,"zipPostalCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(188,89,"country")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function ae(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function se(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",16),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",137),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",138),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"select",139),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).organizationChanged()})),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,ae,2,2,"option",29),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"ownership")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.ownershipOptions)}}function le(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function ce(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",141),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",142),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.checked=t})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",143),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=s.ɵɵnextContext(4);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","collection-",n,""),s.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),s.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","collection-",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function de(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,ce,7,6,"div",140),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.collections)}}function pe(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,le,3,3,"div",21),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,de,4,1,"ng-container",21),s.ɵɵtext(9,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"collections")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.collections||!e.collections.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function ue(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"b",145),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5),s.ɵɵpipe(6,"date"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function me(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"b",145),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"a",146),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).viewHistory()})),s.ɵɵpipe(7,"i18n"),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,3,"passwordHistory"),":"),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(7,5,"view")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function he(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"date"),s.ɵɵelementStart(3,"span",148),s.ɵɵtext(4),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(e.password)}}function ve(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",62),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,he,6,5,"div",147),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function ge(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",144),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div"),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"b",145),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9),s.ɵɵpipe(10,"date"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,ue,7,7,"div",21),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,me,10,7,"div",21),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,ve,4,1,"div",60),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(8,5,"dateUpdated"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.showRevisionDate),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.hasPasswordHistory),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function fe(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",141),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",149),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).repromptChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",150),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"a",151),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"i",79),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"options")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,7,"passwordPrompt")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(15,9,"learnMore"))}}function ye(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",13),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,R,3,3,"app-callout",14),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,U,14,6,"div",15),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",16),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",17),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",18),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",19),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().cipher.name=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,N,11,6,"div",20),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,ee,74,38,"ng-container",21),s.ɵɵtext(22,"\n "),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,ie,108,57,"ng-container",21),s.ɵɵtext(25,"\n "),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,oe,194,91,"ng-container",21),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",22),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"label",23),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"textarea",24),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().cipher.notes=t})),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),s.ɵɵtext(39,"\n "),s.ɵɵtemplate(40,se,21,9,"ng-container",21),s.ɵɵtext(41,"\n "),s.ɵɵtemplate(42,pe,10,5,"ng-container",21),s.ɵɵtext(43,"\n "),s.ɵɵtemplate(44,ge,19,10,"ng-container",21),s.ɵɵtext(45,"\n "),s.ɵɵtemplate(46,fe,21,11,"ng-container",21),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,20,"name")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.organization),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(33,22,"notes")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.editMode),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.canUseReprompt)}}function xe(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",152),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",153),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(),t=s.ɵɵreference(5);s.ɵɵproperty("disabled",t.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const Se=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function be(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",70),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleFavorite()})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",43),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(4,Se,e.cipher.favorite,!e.cipher.favorite))}}function we(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",157,158),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).delete()})),s.ɵɵpipe(2,"i18n"),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",159),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",160),s.ɵɵpipe(7,"i18n"),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),s.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(7,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function Ce(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",154),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,be,5,7,"button",155),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,we,9,10,"button",156),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class Ie extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,i,r,o,a,c,d,p,m,h,u),this.totpService=s,this.passwordGenerationService=l,this.messagingService=c,this.policyService=p,this.showRevisionDate=!1,this.hasPasswordHistory=!1,this.viewingPasswordHistory=!1,this.viewOnly=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){if(yield e.ngOnInit.call(this),yield this.load(),this.showRevisionDate=null!=this.cipher.passwordRevisionDisplayDate,this.hasPasswordHistory=this.cipher.hasPasswordHistory,this.cleanUp(),this.canAccessPremium=yield this.stateService.getCanAccessPremium(),this.cipher.type===o.CipherType.Login&&this.cipher.login.totp&&(this.cipher.organizationUseTotp||this.canAccessPremium)){yield this.totpUpdateCode();const e=this.totpService.getTimeInterval(this.cipher.login.totp);yield this.totpTick(e),this.totpInterval=window.setInterval((()=>i(this,void 0,void 0,(function*(){yield this.totpTick(e)}))),1e3)}}))}toggleFavorite(){this.cipher.favorite=!this.cipher.favorite}launch(e){e.canLaunch&&this.platformUtilsService.launchUri(e.launchUri)}copy(e,t,n){null!=e&&(this.platformUtilsService.copyToClipboard(e,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(t))),this.editMode&&("password"===t?this.eventService.collect(a.EventType.Cipher_ClientToggledHiddenFieldVisible,this.cipherId):"securityCode"===t?this.eventService.collect(a.EventType.Cipher_ClientCopiedCardCode,this.cipherId):"H_Field"===n&&this.eventService.collect(a.EventType.Cipher_ClientCopiedHiddenField,this.cipherId)))}generatePassword(){const e=Object.create(null,{generatePassword:{get:()=>super.generatePassword}});return i(this,void 0,void 0,(function*(){const t=yield e.generatePassword.call(this);if(t){const e=(yield this.passwordGenerationService.getOptions())[0];this.cipher.login.password=yield this.passwordGenerationService.generatePassword(e)}return t}))}premiumRequired(){this.canAccessPremium||this.messagingService.send("premiumRequired")}upgradeOrganization(){this.messagingService.send("upgradeOrganization",{organizationId:this.cipher.organizationId})}viewHistory(){this.viewingPasswordHistory=!this.viewingPasswordHistory}cleanUp(){this.totpInterval&&window.clearInterval(this.totpInterval)}totpUpdateCode(){return i(this,void 0,void 0,(function*(){if(null!=this.cipher&&this.cipher.type===o.CipherType.Login&&null!=this.cipher.login.totp)if(this.totpCode=yield this.totpService.getCode(this.cipher.login.totp),null!=this.totpCode)if(this.totpCode.length>4){const e=Math.floor(this.totpCode.length/2);this.totpCodeFormatted=this.totpCode.substring(0,e)+" "+this.totpCode.substring(e)}else this.totpCodeFormatted=this.totpCode;else this.totpCodeFormatted=null,this.totpInterval&&window.clearInterval(this.totpInterval);else this.totpInterval&&window.clearInterval(this.totpInterval)}))}allowOwnershipAssignment(){return(!this.editMode||this.cloneMode)&&null!=this.ownershipOptions&&(this.ownershipOptions.length>1||!this.allowPersonal)}totpTick(e){return i(this,void 0,void 0,(function*(){const t=Math.round((new Date).getTime()/1e3)%e;this.totpSec=e-t,this.totpDash=+(Math.round(78.6/e*t+"e+2")+"e-2"),this.totpLow=this.totpSec<=7,0===t&&(yield this.totpUpdateCode())}))}}t.AddEditComponent=Ie,Ie.ɵfac=function(e){return new(e||Ie)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.FolderService),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.AuditService),s.ɵɵdirectiveInject(m.StateService),s.ɵɵdirectiveInject(h.CollectionService),s.ɵɵdirectiveInject(v.TotpService),s.ɵɵdirectiveInject(g.PasswordGenerationService),s.ɵɵdirectiveInject(f.MessagingService),s.ɵɵdirectiveInject(y.EventService),s.ɵɵdirectiveInject(x.PolicyService),s.ɵɵdirectiveInject(S.OrganizationService),s.ɵɵdirectiveInject(b.LogService),s.ɵɵdirectiveInject(w.PasswordRepromptService))},Ie.ɵcmp=s.ɵɵdefineComponent({type:Ie,selectors:[["app-vault-add-edit"]],features:[s.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"button",6),s.ɵɵpipe(13,"i18n"),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"span",7),s.ɵɵtext(16,"×"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,ye,48,24,"div",8),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",9),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,xe,9,7,"button",10),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"button",11),s.ɵɵtext(27),s.ɵɵpipe(28,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵtemplate(30,Ce,6,2,"div",12),s.ɵɵtext(31,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(t.title),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(13,7,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",t.cipher),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[C.NgControlStatusGroup,C.NgForm,I.ApiActionDirective,E.A11yTitleDirective,P.NgIf,C.DefaultValueAccessor,C.RequiredValidator,C.NgControlStatus,C.NgModel,O.AddEditCustomFieldsComponent,k.CalloutComponent,C.SelectControlValueAccessor,A.AutofocusDirective,P.NgForOf,C.NgSelectOption,C.ɵNgSelectMultipleOption,T.InputVerbatimDirective,P.NgClass,M.StopClickDirective,B.PremiumBadgeComponent,P.NgStyle,C.CheckboxControlValueAccessor],pipes:[D.I18nPipe,P.DatePipe],encapsulation:2})},94652:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;const r=n(93705),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(32621)),a=n(45330),s=n(51554),l=n(85714),c=n(73569),d=n(73828),p=n(91674),u=n(36631),m=n(96832),h=n(56820),v=n(57490),g=n(8863),f=n(1142),y=n(99729);function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.cipher.name)}}function S(e,t){1&e&&o.ɵɵelement(0,"i",24)}function b(e,t){1&e&&o.ɵɵelement(0,"i",25)}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",26),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",28),o.ɵɵpipe(5,"i18n"),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"span",29),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"button",30,31),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).reupload(t)})),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(12),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(5,5,"attachmentFixDesc")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,7,"attachmentFixDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"td",32),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",33,34),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).delete(t)})),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",35),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",36),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(3),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,6,"delete")),o.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",16),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,S,1,0,"i",17),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,1,0,"i",18),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td",19),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",20),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"a",21),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).download(t)})),o.ɵɵtext(14),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,16,11,"div",22),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,C,12,10,"td",23),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!e.downloading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.downloading),o.ɵɵadvance(8),o.ɵɵtextInterpolate(e.fileName),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),o.ɵɵadvance(4),o.ɵɵtextInterpolate(e.sizeName),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!n.viewOnly)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,I,25,6,"tr",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.cipher.attachments)}}function P(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",37),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",38),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small",39),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newAttachment")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"file")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"maxFileSize")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",40),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",41),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(5);o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"save"))}}class k extends r.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,r,o,window,a,i),this.viewOnly=!1}reupload(e){return i(this,void 0,void 0,(function*(){this.showFixOldAttachments(e)&&(yield this.reuploadCipherAttachment(e,!1))}))}showFixOldAttachments(e){return null==e.key&&null==this.cipher.organizationId}}t.AttachmentsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.CryptoService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.ApiService),o.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-vault-attachments"]],features:[o.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,x,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,7,1,"table",10),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,P,16,9,"div",6),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",11),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,O,9,7,"button",12),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",13),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"attachments"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,g.A11yTitleDirective,v.NgForOf,f.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},23582:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkActionsComponent=void 0;const r=n(32621),o=(n(64684),n(51554),n(44809),n(73828),n(34453)),a=(n(27957),n(33865)),s=n(63683),l=n(77996),c=n(27838),d=(n(91434),n(32621)),p=n(73828),u=n(51554),m=n(64684),h=n(44809),v=n(8863),g=n(57490),f=n(1142),y=n(99729),x=["bulkDeleteTemplate"],S=["bulkRestoreTemplate"],b=["bulkMoveTemplate"],w=["bulkShareTemplate"];function C(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",9),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkMove()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",16),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"moveSelected"),"\n "))}function I(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",9),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkShare()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",17),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"moveSelectedToOrg"),"\n "))}function E(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",18),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkRestore()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",19),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"restoreSelected"),"\n "))}function P(e,t){}function O(e,t){}function k(e,t){}function A(e,t){}class T{constructor(e,t,n,i){this.platformUtilsService=e,this.i18nService=t,this.modalService=n,this.passwordRepromptService=i}bulkDelete(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(a.BulkDeleteComponent,this.bulkDeleteModalRef,(n=>{n.permanent=this.deleted,n.cipherIds=e,n.organization=this.organization,n.onDeleted.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkRestore(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(l.BulkRestoreComponent,this.bulkRestoreModalRef,(n=>{n.cipherIds=e,n.onRestored.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkShare(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelected();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(c.BulkShareComponent,this.bulkShareModalRef,(n=>{n.ciphers=e,n.onShared.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkMove(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(s.BulkMoveComponent,this.bulkMoveModalRef,(n=>{n.cipherIds=e,n.onMoved.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}selectAll(e){this.ciphersComponent.selectAll(e)}promptPassword(){return i(this,void 0,void 0,(function*(){return!this.ciphersComponent.getSelected().find((e=>e.reprompt!==o.CipherRepromptType.None))||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.BulkActionsComponent=T,T.ɵfac=function(e){return new(e||T)(d.ɵɵdirectiveInject(p.PlatformUtilsService),d.ɵɵdirectiveInject(u.I18nService),d.ɵɵdirectiveInject(m.ModalService),d.ɵɵdirectiveInject(h.PasswordRepromptService))},T.ɵcmp=d.ɵɵdefineComponent({type:T,selectors:[["app-vault-bulk-actions"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(x,7,r.ViewContainerRef),d.ɵɵviewQuery(S,7,r.ViewContainerRef),d.ɵɵviewQuery(b,7,r.ViewContainerRef),d.ɵɵviewQuery(w,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkDeleteModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkRestoreModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkMoveModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkShareModalRef=e.first)}},inputs:{ciphersComponent:"ciphersComponent",deleted:"deleted",organization:"organization"},decls:50,vars:15,consts:[["appListDropdown","",1,"dropdown","mr-2"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item",3,"click",4,"ngIf"],[1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],[1,"dropdown-divider"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["bulkDeleteTemplate",""],["bulkRestoreTemplate",""],["bulkMoveTemplate",""],["bulkShareTemplate",""],["aria-hidden","true",1,"bwi","bwi-fw","bwi-folder"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],[1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",1),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",2),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",3),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,C,5,3,"button",4),d.ɵɵtext(11,"\n "),d.ɵɵtemplate(12,I,5,3,"button",4),d.ɵɵtext(13,"\n "),d.ɵɵtemplate(14,E,5,3,"button",5),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"button",6),d.ɵɵlistener("click",(function(){return t.bulkDelete()})),d.ɵɵtext(17,"\n "),d.ɵɵelement(18,"i",7),d.ɵɵtext(19),d.ɵɵpipe(20,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelement(22,"div",8),d.ɵɵtext(23,"\n "),d.ɵɵelementStart(24,"button",9),d.ɵɵlistener("click",(function(){return t.selectAll(!0)})),d.ɵɵtext(25,"\n "),d.ɵɵelement(26,"i",10),d.ɵɵtext(27),d.ɵɵpipe(28,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(29,"\n "),d.ɵɵelementStart(30,"button",9),d.ɵɵlistener("click",(function(){return t.selectAll(!1)})),d.ɵɵtext(31,"\n "),d.ɵɵelement(32,"i",11),d.ɵɵtext(33),d.ɵɵpipe(34,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(35,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(36,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(37,"\n\n"),d.ɵɵtemplate(38,P,0,0,"ng-template",null,12,d.ɵɵtemplateRefExtractor),d.ɵɵtext(40,"\n"),d.ɵɵtemplate(41,O,0,0,"ng-template",null,13,d.ɵɵtemplateRefExtractor),d.ɵɵtext(43,"\n"),d.ɵɵtemplate(44,k,0,0,"ng-template",null,14,d.ɵɵtemplateRefExtractor),d.ɵɵtext(46,"\n"),d.ɵɵtemplate(47,A,0,0,"ng-template",null,15,d.ɵɵtemplateRefExtractor),d.ɵɵtext(49,"\n")),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,7,"options")),d.ɵɵadvance(8),d.ɵɵproperty("ngIf",!t.deleted&&!t.organization),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.deleted&&!t.organization),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.deleted&&!t.organization),d.ɵɵadvance(5),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(20,9,t.deleted?"permanentlyDeleteSelected":"deleteSelected"),"\n "),d.ɵɵadvance(8),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(28,11,"selectAll"),"\n "),d.ɵɵadvance(6),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(34,13,"unselectAll"),"\n "))},directives:[v.A11yTitleDirective,g.NgIf,f.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},33865:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkDeleteComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(51554),n(73828),n(27957),n(82890)),a=n(32621),s=n(45330),l=n(73828),c=n(51554),d=n(91674),p=n(96832),u=n(56820),m=n(8863),h=n(99729);class v{constructor(e,t,n,i){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.apiService=i,this.cipherIds=[],this.permanent=!1,this.onDeleted=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){this.organization&&this.organization.canEditAnyCollection?yield this.deleteCiphersAdmin():yield this.deleteCiphers(),yield this.formPromise,this.onDeleted.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t(this.permanent?"permanentlyDeletedItems":"deletedItems"))}))}deleteCiphers(){return i(this,void 0,void 0,(function*(){this.permanent?this.formPromise=yield this.cipherService.deleteManyWithServer(this.cipherIds):this.formPromise=yield this.cipherService.softDeleteManyWithServer(this.cipherIds)}))}deleteCiphersAdmin(){return i(this,void 0,void 0,(function*(){const e=new o.CipherBulkDeleteRequest(this.cipherIds,this.organization.id);this.permanent?this.formPromise=yield this.apiService.deleteManyCiphersAdmin(e):this.formPromise=yield this.apiService.putDeleteManyCiphersAdmin(e)}))}}t.BulkDeleteComponent=v,v.ɵfac=function(e){return new(e||v)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(d.ApiService))},v.ɵcmp=a.ɵɵdefineComponent({type:v,selectors:[["app-vault-bulk-delete"]],inputs:{cipherIds:"cipherIds",permanent:"permanent",organization:"organization"},outputs:{onDeleted:"onDeleted"},decls:45,vars:21,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"modal-footer"],["appAutoFocus","","type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"button",6),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span",7),a.ɵɵtext(17,"×"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"div",8),a.ɵɵtext(22),a.ɵɵpipe(23,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"div",9),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"button",10),a.ɵɵtext(28,"\n "),a.ɵɵelement(29,"i",11),a.ɵɵpipe(30,"i18n"),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"span"),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"button",12),a.ɵɵtext(38),a.ɵɵpipe(39,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n")),2&e){const e=a.ɵɵreference(5);a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,8,t.permanent?"permanentlyDeleteSelected":"deleteSelected"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(14,10,"close")),a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(23,12,t.permanent?"permanentlyDeleteSelectedItemsDesc":"deleteSelectedItemsDesc",t.cipherIds.length),"\n "),a.ɵɵadvance(5),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(30,15,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(34,17,t.permanent?"permanentlyDelete":"delete")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(39,19,"cancel"),"\n ")}},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective],pipes:[h.I18nPipe],encapsulation:2})},63683:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkMoveComponent=void 0;const r=n(32621),o=(n(45330),n(88308),n(51554),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(88308),d=n(96832),p=n(56820),u=n(8863),m=n(57490),h=n(99729);function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",17),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class g{constructor(e,t,n,i){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.folderService=i,this.cipherIds=[],this.onMoved=new r.EventEmitter,this.folderId=null,this.folders=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.folders=yield this.folderService.getAllDecrypted(),this.folderId=this.folders[0].id}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.cipherService.moveManyWithServer(this.cipherIds,this.folderId),yield this.formPromise,this.onMoved.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItems"))}))}}t.BulkMoveComponent=g,g.ɵfac=function(e){return new(e||g)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.FolderService))},g.ɵcmp=o.ɵɵdefineComponent({type:g,selectors:[["app-vault-bulk-move"]],inputs:{cipherIds:"cipherIds"},outputs:{onMoved:"onMoved"},decls:60,vars:26,consts:[["role","dialog","aria-modal","true","aria-labelledby","moveSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","moveSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[3,"ngValue"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"button",6),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",7),o.ɵɵtext(17,"×"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"div",8),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"p"),o.ɵɵtext(24),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"div",9),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"label",10),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"select",11),o.ɵɵlistener("ngModelChange",(function(e){return t.folderId=e})),o.ɵɵtext(34,"\n "),o.ɵɵtemplate(35,v,2,2,"option",12),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"div",13),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"button",14),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"i",15),o.ɵɵpipe(45,"i18n"),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"span"),o.ɵɵtext(48),o.ɵɵpipe(49,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementStart(52,"button",16),o.ɵɵtext(53),o.ɵɵpipe(54,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,11,"moveSelected"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(14,13,"close")),o.ɵɵadvance(11),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(25,15,"moveSelectedItemsDesc",t.cipherIds.length)),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,18,"folder")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.folderId),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",t.folders),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(45,20,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(49,22,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(54,24,"cancel"),"\n ")}},directives:[d.ɵNgNoValidate,d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.A11yTitleDirective,d.SelectControlValueAccessor,d.NgControlStatus,d.NgModel,m.NgForOf,d.NgSelectOption,d.ɵNgSelectMultipleOption],pipes:[h.I18nPipe],encapsulation:2})},77996:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRestoreComponent=void 0;const r=n(32621),o=(n(45330),n(51554),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(96832),d=n(56820),p=n(8863),u=n(99729);class m{constructor(e,t,n){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.cipherIds=[],this.onRestored=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.cipherService.restoreManyWithServer(this.cipherIds),yield this.formPromise,this.onRestored.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItems"))}))}}t.BulkRestoreComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-vault-bulk-restore"]],inputs:{cipherIds:"cipherIds"},outputs:{onRestored:"onRestored"},decls:45,vars:21,consts:[["role","dialog","aria-modal","true","aria-labelledby","restoreSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","restoreSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"modal-footer"],["appAutoFocus","","type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"button",6),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",7),o.ɵɵtext(17,"×"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"div",8),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"div",9),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"button",10),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"i",11),o.ɵɵpipe(30,"i18n"),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"span"),o.ɵɵtext(33),o.ɵɵpipe(34,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"button",12),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"restoreSelected"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(14,10,"close")),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(23,12,"restoreSelectedItemsDesc",t.cipherIds.length),"\n "),o.ɵɵadvance(5),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(30,15,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(34,17,"restore")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(39,19,"cancel"),"\n ")}},directives:[c.ɵNgNoValidate,c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective],pipes:[u.I18nPipe],encapsulation:2})},27838:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkShareComponent=void 0;const r=n(32621),o=(n(45330),n(3174),n(51554),n(36631),n(63513),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(3174),d=n(63513),p=n(36631),u=n(96832),m=n(56820),h=n(8863),v=n(57490),g=n(39159),f=n(99729);function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",21),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",22),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",23),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().selectAll(!0)})),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"button",23),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().selectAll(!1)})),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,2,"selectAll"),"\n "),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr",26),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).check(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",27),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"input",28),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.checked=t})),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),o.ɵɵproperty("ngModel",e.checked),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",24),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,b,10,3,"tr",25),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.collections)}}const C=function(e){return{loading:e}};class I{constructor(e,t,n,i,o,a){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.collectionService=i,this.organizationService=o,this.logService=a,this.ciphers=[],this.onShared=new r.EventEmitter,this.nonShareableCount=0,this.collections=[],this.organizations=[],this.shareableCiphers=[],this.writeableCollections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.shareableCiphers=this.ciphers.filter((e=>!e.hasOldAttachments&&null==e.organizationId)),this.nonShareableCount=this.ciphers.length-this.shareableCiphers.length;const e=yield this.collectionService.getAllDecrypted();this.writeableCollections=e.filter((e=>!e.readOnly)),this.organizations=yield this.organizationService.getAll(),null==this.organizationId&&this.organizations.length>0&&(this.organizationId=this.organizations[0].id),this.filterCollections()}))}ngOnDestroy(){this.selectAll(!1)}filterCollections(){this.selectAll(!1),null==this.organizationId||0===this.writeableCollections.length?this.collections=[]:this.collections=this.writeableCollections.filter((e=>e.organizationId===this.organizationId))}submit(){var e,t;return i(this,void 0,void 0,(function*(){const n=this.collections.filter((e=>e.checked)).map((e=>e.id));try{this.formPromise=this.cipherService.shareManyWithServer(this.shareableCiphers,this.organizationId,n),yield this.formPromise,this.onShared.emit();const i=null!==(t=null===(e=this.organizations.find((e=>e.id===this.organizationId)))||void 0===e?void 0:e.name)&&void 0!==t?t:this.i18nService.t("organization");this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItemsToOrg",i))}catch(i){this.logService.error(i)}}))}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){(e?this.collections:this.writeableCollections).forEach((t=>this.check(t,e)))}get canSave(){if(null!=this.shareableCiphers&&this.shareableCiphers.length>0&&null!=this.collections)for(let e=0;e0&&!i.organization),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(31,21,"options")),c.ɵɵproperty("bitMenuTriggerFor",n),c.ɵɵadvance(9),c.ɵɵproperty("ngIf",e.type===i.cipherType.Login&&!e.isDeleted),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(45,23,"attachments"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",(!i.organization&&!e.organizationId||i.organization)&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!i.organization&&!e.organizationId&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organizationId&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organizationId&&i.accessEvents),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.isDeleted),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(63,25,e.isDeleted?"permanentlyDelete":"delete"),"\n ")}}function Y(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"table",3),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"tbody"),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,$,68,30,"tr",4),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function Q(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",35),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",23),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function J(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",37),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).addCipher()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function Z(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"p"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,J,5,3,"button",36),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,2,"noItemsInList")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.showAddNew)}}function X(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",34),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Q,9,6,"ng-container",0),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,Z,8,4,"ng-container",0),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.loaded),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loaded)}}function ee(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Y,7,3,"table",1),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,X,6,2,"div",2),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length)}}class te extends o.CiphersComponent{constructor(e,t,n,i,o,a,l,c,d,p,u){super(e),this.i18nService=t,this.platformUtilsService=n,this.cipherService=i,this.eventService=o,this.totpService=a,this.stateService=l,this.passwordRepromptService=c,this.logService=d,this.organizationService=p,this.tokenService=u,this.showAddNew=!0,this.onAttachmentsClicked=new r.EventEmitter,this.onShareClicked=new r.EventEmitter,this.onCollectionsClicked=new r.EventEmitter,this.onCloneClicked=new r.EventEmitter,this.onOrganzationBadgeClicked=new r.EventEmitter,this.pagedCiphers=[],this.pageSize=200,this.cipherType=s.CipherType,this.userHasPremiumAccess=!1,this.organizations=[],this.didScroll=!1,this.pagedCiphersCount=0,this.refreshing=!1}ngOnDestroy(){this.selectAll(!1)}load(e=null,t=!1){const n=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){yield n.load.call(this,e,t),this.profileName=yield this.tokenService.getName(),this.organizations=yield this.organizationService.getAll(),this.userHasPremiumAccess=yield this.stateService.getCanAccessPremium()}))}loadMore(){if(this.ciphers.length<=this.pageSize)return;const e=this.pagedCiphers.length;let t=this.pageSize;this.refreshing&&0===e&&this.pagedCiphersCount>this.pageSize&&(t=this.pagedCiphersCount),this.ciphers.length>e&&(this.pagedCiphers=this.pagedCiphers.concat(this.ciphers.slice(e,e+t))),this.pagedCiphersCount=this.pagedCiphers.length,this.didScroll=this.pagedCiphers.length>this.pageSize}refresh(){return i(this,void 0,void 0,(function*(){try{this.refreshing=!0,yield this.reload(this.filter,this.deleted)}finally{this.refreshing=!1}}))}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.ciphers.length>this.pageSize}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedCiphers=[],this.loadMore()}))}doSearch(e){return i(this,void 0,void 0,(function*(){this.ciphers=yield this.searchService.searchCiphers(this.searchText,[this.filter,this.deletedFilter],e),this.resetPaging()}))}launch(e){this.platformUtilsService.launchUri(e)}attachments(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onAttachmentsClicked.emit(e)}))}share(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onShareClicked.emit(e)}))}collections(e){this.onCollectionsClicked.emit(e)}clone(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onCloneClicked.emit(e)}))}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.repromptCipher(e)))return;if(null!=this.actionPromise)return;const t=e.isDeleted;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(t?"permanentlyDeleteItemConfirmation":"deleteItemConfirmation"),this.i18nService.t(t?"permanentlyDeleteItem":"deleteItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.deleteCipher(e.id,t),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(t?"permanentlyDeletedItem":"deletedItem")),this.refresh()}catch(n){this.logService.error(n)}this.actionPromise=null}))}restore(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise||!e.isDeleted)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("restoreItemConfirmation"),this.i18nService.t("restoreItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.cipherService.restoreWithServer(e.id),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItem")),this.refresh()}catch(t){this.logService.error(t)}this.actionPromise=null}))}copy(e,t,n,r){return i(this,void 0,void 0,(function*(){this.passwordRepromptService.protectedFields().includes(r)&&!(yield this.repromptCipher(e))||null==t||"TOTP"===r&&!this.displayTotpCopyButton(e)||(t===e.login.totp&&(t=yield this.totpService.getCode(t)),e.viewPassword&&(this.platformUtilsService.copyToClipboard(t,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(n))),"password"===n||"verificationCodeTotp"===n?this.eventService.collect(l.EventType.Cipher_ClientToggledHiddenFieldVisible,e.id):"securityCode"===n&&this.eventService.collect(l.EventType.Cipher_ClientCopiedCardCode,e.id)))}))}selectAll(e){e&&this.selectAll(!1);const t=e&&this.ciphers.length>500?500:this.ciphers.length;for(let n=0;n!!e.checked))}getSelectedIds(){return this.getSelected().map((e=>e.id))}displayTotpCopyButton(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.login)||void 0===t?void 0:t.hasTotp)&&void 0!==n&&n&&(e.organizationUseTotp||this.userHasPremiumAccess)}selectCipher(e){const t=Object.create(null,{selectCipher:{get:()=>super.selectCipher}});return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&t.selectCipher.call(this,e)}))}onOrganizationClicked(e){this.onOrganzationBadgeClicked.emit(e)}deleteCipher(e,t){return t?this.cipherService.deleteWithServer(e):this.cipherService.softDeleteWithServer(e)}showFixOldAttachments(e){return e.hasOldAttachments&&null==e.organizationId}repromptCipher(e){return i(this,void 0,void 0,(function*(){return e.reprompt===a.CipherRepromptType.None||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.CiphersComponent=te,te.ɵfac=function(e){return new(e||te)(c.ɵɵdirectiveInject(d.SearchService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.CipherService),c.ɵɵdirectiveInject(h.EventService),c.ɵɵdirectiveInject(v.TotpService),c.ɵɵdirectiveInject(g.StateService),c.ɵɵdirectiveInject(f.PasswordRepromptService),c.ɵɵdirectiveInject(y.LogService),c.ɵɵdirectiveInject(x.OrganizationService),c.ɵɵdirectiveInject(S.TokenService))},te.ɵcmp=c.ɵɵdefineComponent({type:te,selectors:[["app-vault-ciphers"]],inputs:{showAddNew:"showAddNew"},outputs:{onAttachmentsClicked:"onAttachmentsClicked",onShareClicked:"onShareClicked",onCollectionsClicked:"onCollectionsClicked",onCloneClicked:"onCloneClicked",onOrganzationBadgeClicked:"onOrganzationBadgeClicked"},features:[c.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],["class","table table-hover table-list table-ciphers","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["class","no-items",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list","table-ciphers",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],[1,"table-list-icon",3,"click"],[3,"cipher"],[1,"reduced-lh","wrap",3,"click"],["appStopProp","","queryParamsHandling","merge",3,"routerLink","queryParams","title"],["appStopProp",""],["class","tw-w-28",4,"ngIf"],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["cipherOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"tw-w-28"],[3,"organizationName","profileName","onOrganizationClicked"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-share-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-files"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-collection"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],[1,"no-items"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],["class","btn btn-outline-primary",3,"click",4,"ngIf"],[1,"btn","btn-outline-primary",3,"click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){1&e&&(c.ɵɵtemplate(0,ee,6,2,"ng-container",0),c.ɵɵtext(1,"\n")),2&e&&c.ɵɵproperty("ngIf",t.isPaging()?t.pagedCiphers:t.ciphers)},directives:[b.NgIf,w.InfiniteScrollDirective,b.NgForOf,C.CheckboxControlValueAccessor,I.StopPropDirective,C.NgControlStatus,C.NgModel,E.IconComponent,P.RouterLinkWithHref,O.MenuTriggerForDirective,k.A11yTitleDirective,A.MenuComponent,T.MenuItemComponent,M.OrganizationNameBadgeComponent],pipes:[B.I18nPipe,D.GetOrgNameFromIdPipe],encapsulation:2})},86305:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const i=n(84415),r=(n(45330),n(3174),n(51554),n(36631),n(73828),n(32621)),o=n(3174),a=n(73828),s=n(51554),l=n(45330),c=n(36631),d=n(96832),p=n(56820),u=n(57490),m=n(8863),h=n(39159),v=n(99729);function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.cipher.name)}}function f(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",17),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().selectAll(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().selectAll(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"selectAll"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function y(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"tr",21),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(2).check(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td",22),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",23),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.checked=t})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"td"),r.ɵɵtext(8),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;r.ɵɵadvance(4),r.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),r.ɵɵproperty("ngModel",e.checked),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"tbody"),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,x,10,3,"tr",20),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.collections)}}class b extends i.CollectionsComponent{constructor(e,t,n,i,r){super(e,t,n,i,r)}ngOnDestroy(){this.selectAll(!1)}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}}t.CollectionsComponent=b,b.ɵfac=function(e){return new(e||b)(r.ɵɵdirectiveInject(o.CollectionService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.CipherService),r.ɵɵdirectiveInject(c.LogService))},b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-vault-collections"]],features:[r.ɵɵInheritDefinitionFeature],decls:63,vars:27,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵtemplate(12,g,2,1,"small",6),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"button",7),r.ɵɵpipe(16,"i18n"),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",8),r.ɵɵtext(19,"×"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"p"),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",10),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"h3"),r.ɵɵtext(32),r.ɵɵpipe(33,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵtemplate(35,f,10,6,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵtemplate(38,y,3,3,"div",6),r.ɵɵtext(39,"\n "),r.ɵɵtemplate(40,S,7,1,"table",12),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",13),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"button",14),r.ɵɵtext(46,"\n "),r.ɵɵelement(47,"i",15),r.ɵɵpipe(48,"i18n"),r.ɵɵtext(49,"\n "),r.ɵɵelementStart(50,"span"),r.ɵɵtext(51),r.ɵɵpipe(52,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"button",16),r.ɵɵtext(56),r.ɵɵpipe(57,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,13,"collections"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.cipher),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(16,15,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(27,17,"collectionsDesc")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(33,19,"collections")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.collections&&t.collections.length),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.collections||!t.collections.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.collections&&t.collections.length),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(48,21,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(52,23,"save")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(57,25,"cancel"),"\n ")}},directives:[d.ɵNgNoValidate,d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.NgIf,m.A11yTitleDirective,u.NgForOf,d.CheckboxControlValueAccessor,h.StopPropDirective,d.NgControlStatus,d.NgModel],pipes:[v.I18nPipe],encapsulation:2})},27672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderAddEditComponent=void 0;const i=n(17301),r=(n(88308),n(51554),n(36631),n(73828),n(32621)),o=n(88308),a=n(51554),s=n(73828),l=n(36631),c=n(96832),d=n(56820),p=n(8863),u=n(45728),m=n(57490),h=n(99729);function v(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",17,18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().delete()})),r.ɵɵpipe(2,"i18n"),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",19),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",20),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext();r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(2,6,"delete")),r.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),r.ɵɵadvance(4),r.ɵɵproperty("hidden",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(7,8,"loading")),r.ɵɵproperty("hidden",!e.loading)}}class g extends i.FolderAddEditComponent{constructor(e,t,n,i){super(e,t,n,i)}}t.FolderAddEditComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.FolderService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.LogService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-folder-add-edit"]],features:[r.ɵɵInheritDefinitionFeature],decls:54,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","folderAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","folderAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["for","name"],["id","name","type","text","name","Name","required","","appAutofocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",6),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",7),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",8),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"label",9),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"input",10),r.ɵɵlistener("ngModelChange",(function(e){return t.folder.name=e})),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",11),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"button",12),r.ɵɵtext(32,"\n "),r.ɵɵelement(33,"i",13),r.ɵɵpipe(34,"i18n"),r.ɵɵtext(35,"\n "),r.ɵɵelementStart(36,"span"),r.ɵɵtext(37),r.ɵɵpipe(38,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"button",14),r.ɵɵtext(42),r.ɵɵpipe(43,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"div",15),r.ɵɵtext(46,"\n "),r.ɵɵtemplate(47,v,9,10,"button",16),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(t.title),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,10,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(24,12,"name")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.folder.name),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(34,14,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(38,16,"save")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(43,18,"cancel"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.editMode)}},directives:[c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective,c.DefaultValueAccessor,c.RequiredValidator,u.AutofocusDirective,c.NgControlStatus,c.NgModel,m.NgIf],pipes:[h.I18nPipe],encapsulation:2})},55715:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShareComponent=void 0;const i=n(78927),r=(n(45330),n(3174),n(51554),n(36631),n(63513),n(73828),n(32621)),o=n(3174),a=n(73828),s=n(51554),l=n(45330),c=n(63513),d=n(36631),p=n(96832),u=n(56820),m=n(57490),h=n(8863),v=n(39159),g=n(68012),f=n(99729);function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.cipher.name)}}function x(e,t){1&e&&(r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noOrganizationsList"),"\n "))}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",22),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.id),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",23),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",24),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).selectAll(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",24),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).selectAll(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"selectAll"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function w(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"tr",27),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(3).check(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td",28),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",29),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.checked=t})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"td"),r.ɵɵtext(8),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;r.ɵɵadvance(4),r.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),r.ɵɵproperty("ngModel",e.checked),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function I(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",25),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"tbody"),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,C,10,3,"tr",26),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.collections)}}function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"p"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",15),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"label",16),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"select",17),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().organizationId=t}))("change",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().filterCollections()})),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,S,2,2,"option",18),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"div",19),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"h3"),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,b,10,6,"div",20),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,w,3,3,"div",6),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,I,7,1,"table",21),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,8,"moveToOrgDesc")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,10,"organization")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.organizationId),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(22,12,"collections")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.collections&&e.collections.length),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!e.collections||!e.collections.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const P=function(e){return{loading:e}};function O(e,t){if(1&e&&(r.ɵɵelementStart(0,"button",30),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",31),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(5);r.ɵɵproperty("disabled",t.loading||!e.canSave)("ngClass",r.ɵɵpureFunction1(8,P,t.loading)),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,6,"save"))}}function k(e,t){1&e&&(r.ɵɵelementStart(0,"a",32),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"newOrganization"),"\n "))}class A extends i.ShareComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o,r)}ngOnDestroy(){this.selectAll(!1)}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){(e?this.collections:this.writeableCollections).forEach((t=>this.check(t,e)))}}t.ShareComponent=A,A.ɵfac=function(e){return new(e||A)(r.ɵɵdirectiveInject(o.CollectionService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.CipherService),r.ɵɵdirectiveInject(c.OrganizationService),r.ɵɵdirectiveInject(d.LogService))},A.ɵcmp=r.ɵɵdefineComponent({type:A,selectors:[["app-vault-share"]],features:[r.ɵɵInheritDefinitionFeature],decls:41,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","shareTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","shareTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit manual",3,"disabled","ngClass",4,"ngIf"],["href","#","routerLink","/create-organization","class","btn btn-primary",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"modal-body"],[1,"form-group"],["for","organization"],["id","organization","name","OrganizationId",1,"form-control",3,"ngModel","ngModelChange","change"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[3,"ngValue"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit","manual",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["href","#","routerLink","/create-organization",1,"btn","btn-primary"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵtemplate(12,y,2,1,"small",6),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"button",7),r.ɵɵpipe(16,"i18n"),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",8),r.ɵɵtext(19,"×"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵtemplate(23,x,3,3,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵtemplate(25,E,31,14,"div",9),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"div",10),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,O,9,10,"button",11),r.ɵɵtext(30,"\n "),r.ɵɵtemplate(31,k,3,3,"a",12),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"button",13),r.ɵɵtext(34),r.ɵɵpipe(35,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,9,"moveToOrganization"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.cipher),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(16,11,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.organizations||!t.organizations.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.organizations&&t.organizations.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.organizations&&t.organizations.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.organizations||!t.organizations.length),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(35,13,"cancel"),"\n "))},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.NgIf,h.A11yTitleDirective,p.SelectControlValueAccessor,p.NgControlStatus,p.NgModel,m.NgForOf,p.NgSelectOption,p.ɵNgSelectMultipleOption,p.CheckboxControlValueAccessor,v.StopPropDirective,m.NgClass,g.RouterLinkWithHref],pipes:[f.I18nPipe],encapsulation:2})},7643:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WildcardRoutingModule=void 0;const i=n(68012),r=n(32621);n(68012);class o{}t.WildcardRoutingModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.RouterModule.forChild([{path:"**",redirectTo:""}])],i.RouterModule]})},74657:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Account=t.AccountSettings=void 0;const i=n(31445);class r extends i.AccountSettings{constructor(){super(...arguments),this.vaultTimeout=15}}t.AccountSettings=r;class o extends i.Account{constructor(e){super(e),this.settings=new r,Object.assign(this.settings,Object.assign(Object.assign({},new r),this.settings))}}t.Account=o},82062:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalState=void 0;const i=n(14538),r=n(99010);class o extends r.GlobalState{constructor(){super(...arguments),this.theme=i.ThemeType.Light,this.rememberEmail=!0}}t.GlobalState=o},79046:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterMessagingService=void 0;n(8470);const i=n(32621),r=n(8470);class o{constructor(e){this.broadcasterService=e}send(e,t={}){const n=Object.assign({},{command:e},t);this.broadcasterService.send(n)}}t.BroadcasterMessagingService=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵinject(r.BroadcasterService))},o.ɵprov=i.ɵɵdefineInjectable({token:o,factory:o.ɵfac})},57096:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlStorageService=void 0;const r=n(46632),o=n(32621);class a{get defaultOptions(){return{htmlStorageLocation:r.HtmlStorageLocation.Session}}get(e,t=this.defaultOptions){let n=null;switch(t.htmlStorageLocation){case r.HtmlStorageLocation.Local:n=window.localStorage.getItem(e);break;case r.HtmlStorageLocation.Session:default:n=window.sessionStorage.getItem(e)}if(null!=n){const e=JSON.parse(n);return Promise.resolve(e)}return Promise.resolve(null)}has(e,t=this.defaultOptions){return i(this,void 0,void 0,(function*(){return null!=(yield this.get(e,t))}))}save(e,t,n=this.defaultOptions){if(null==t)return this.remove(e,n);t instanceof Set&&(t=Array.from(t));const i=JSON.stringify(t);switch(n.htmlStorageLocation){case r.HtmlStorageLocation.Local:window.localStorage.setItem(e,i);break;case r.HtmlStorageLocation.Session:default:window.sessionStorage.setItem(e,i)}return Promise.resolve()}remove(e,t=this.defaultOptions){switch(t.htmlStorageLocation){case r.HtmlStorageLocation.Local:window.localStorage.removeItem(e);break;case r.HtmlStorageLocation.Session:default:window.sessionStorage.removeItem(e)}return Promise.resolve()}}t.HtmlStorageService=a,a.ɵfac=function(e){return new(e||a)},a.ɵprov=o.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},28455:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;const r=n(17578);class o extends r.I18nService{constructor(e,t){super(e||"en-US",t,(e=>i(this,void 0,void 0,(function*(){const t=this.localesDirectory+"/"+e+"/messages.json?cache=aqtaj",n=yield fetch(t);return yield n.json()})))),this.supportedTranslationLocales=["en","af","az","be","bg","bn","bs","ca","cs","da","de","el","en-GB","en-IN","eo","es","et","fi","fil","fr","he","hi","hr","hu","id","it","ja","ka","km","kn","ko","lv","ml","nb","nl","nn","pl","pt-PT","pt-BR","ro","ru","si","sk","sl","sr","sv","tr","uk","vi","zh-CN","zh-TW"]}}t.I18nService=o},97853:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryStorageService=void 0;t.MemoryStorageService=class{constructor(){this.store=new Map}get(e){if(this.store.has(e)){const t=this.store.get(e);return Promise.resolve(t)}return Promise.resolve(null)}has(e){return n(this,void 0,void 0,(function*(){return null!=this.get(e)}))}save(e,t){return null==t?this.remove(e):(this.store.set(e,t),Promise.resolve())}remove(e){return this.store.delete(e),Promise.resolve()}}},14020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;const i=n(91603),r=n(30563),o=n(32621);class a extends i.PasswordRepromptService{constructor(){super(...arguments),this.component=r.PasswordRepromptComponent}}t.PasswordRepromptService=a,a.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(a)))(t||a)}}(),a.ɵprov=o.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},91621:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const r=n(13998),o=n(74657);class a extends r.StateService{addAccount(e){const t=Object.create(null,{addAccount:{get:()=>super.addAccount}});return i(this,void 0,void 0,(function*(){e=new o.Account(e),yield t.addAccount.call(this,e)}))}getRememberEmail(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.rememberEmail}))}setRememberEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.rememberEmail=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEncryptedCiphers(e){const t=Object.create(null,{getEncryptedCiphers:{get:()=>super.getEncryptedCiphers}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedCiphers.call(this,e)}))}setEncryptedCiphers(e,t){const n=Object.create(null,{setEncryptedCiphers:{get:()=>super.setEncryptedCiphers}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedCiphers.call(this,e,t)}))}getEncryptedCollections(e){const t=Object.create(null,{getEncryptedCollections:{get:()=>super.getEncryptedCollections}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedCollections.call(this,e)}))}setEncryptedCollections(e,t){const n=Object.create(null,{setEncryptedCollections:{get:()=>super.setEncryptedCollections}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedCollections.call(this,e,t)}))}getEncryptedFolders(e){const t=Object.create(null,{getEncryptedFolders:{get:()=>super.getEncryptedFolders}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedFolders.call(this,e)}))}setEncryptedFolders(e,t){const n=Object.create(null,{setEncryptedFolders:{get:()=>super.setEncryptedFolders}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedFolders.call(this,e,t)}))}getEncryptedSends(e){const t=Object.create(null,{getEncryptedSends:{get:()=>super.getEncryptedSends}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedSends.call(this,e)}))}setEncryptedSends(e,t){const n=Object.create(null,{setEncryptedSends:{get:()=>super.setEncryptedSends}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedSends.call(this,e,t)}))}getLastSync(e){const t=Object.create(null,{getLastSync:{get:()=>super.getLastSync}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getLastSync.call(this,e)}))}setLastSync(e,t){const n=Object.create(null,{setLastSync:{get:()=>super.setLastSync}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setLastSync.call(this,e,t)}))}}t.StateService=a},31113:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;const r=n(8357);class o extends r.StateMigrationService{migrationStateFrom1To2(){const e=Object.create(null,{migrateStateFrom1To2:{get:()=>super.migrateStateFrom1To2}});var t,n;return i(this,void 0,void 0,(function*(){yield e.migrateStateFrom1To2.call(this);const i=null!==(t=yield this.get("global"))&&void 0!==t?t:this.stateFactory.createGlobal(null);i.rememberEmail=null!==(n=yield this.get("rememberEmail"))&&void 0!==n?n:i.rememberEmail,yield this.set("global",i)}))}}t.StateMigrationService=o},51601:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebPlatformUtilsService=void 0;const r=n(78764),o=(n(51554),n(36631),n(45552),n(73569),n(69434)),a=n(2779),s=n(14538),l=n(32621),c=n(51554),d=n(45552),p=n(36631),u=n(73569);class m{constructor(e,t,n,i){this.i18nService=e,this.messagingService=t,this.logService=n,this.stateService=i,this.browserCache=null,this.prefersColorSchemeDark=window.matchMedia("(prefers-color-scheme: dark)")}getDevice(){return null!=this.browserCache||(-1!==navigator.userAgent.indexOf(" Firefox/")||-1!==navigator.userAgent.indexOf(" Gecko/")?this.browserCache=a.DeviceType.FirefoxBrowser:navigator.userAgent.indexOf(" OPR/")>=0?this.browserCache=a.DeviceType.OperaBrowser:-1!==navigator.userAgent.indexOf(" Edg/")?this.browserCache=a.DeviceType.EdgeBrowser:-1!==navigator.userAgent.indexOf(" Vivaldi/")?this.browserCache=a.DeviceType.VivaldiBrowser:-1!==navigator.userAgent.indexOf(" Safari/")&&-1===navigator.userAgent.indexOf("Chrome")?this.browserCache=a.DeviceType.SafariBrowser:window.chrome&&-1!==navigator.userAgent.indexOf(" Chrome/")?this.browserCache=a.DeviceType.ChromeBrowser:-1!==navigator.userAgent.indexOf(" Trident/")?this.browserCache=a.DeviceType.IEBrowser:this.browserCache=a.DeviceType.UnknownBrowser),this.browserCache}getDeviceString(){return a.DeviceType[this.getDevice()].toLowerCase().replace("browser","")}getClientType(){return o.ClientType.Web}isFirefox(){return this.getDevice()===a.DeviceType.FirefoxBrowser}isChrome(){return this.getDevice()===a.DeviceType.ChromeBrowser}isEdge(){return this.getDevice()===a.DeviceType.EdgeBrowser}isOpera(){return this.getDevice()===a.DeviceType.OperaBrowser}isVivaldi(){return this.getDevice()===a.DeviceType.VivaldiBrowser}isSafari(){return this.getDevice()===a.DeviceType.SafariBrowser}isMacAppStore(){return!1}isViewOpen(){return Promise.resolve(!1)}launchUri(e,t){const n=document.createElement("a");n.href=e,null!=t&&t.sameWindow||(n.target="_blank",n.rel="noreferrer noopener"),n.classList.add("d-none"),document.body.appendChild(n),n.click(),document.body.removeChild(n)}saveFile(e,t,n,i){let r=null,o=null;const a=i.toLowerCase();let s=!0;a.endsWith(".pdf")?(o="application/pdf",s=!1):a.endsWith(".xlsx")?o="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":a.endsWith(".docx")?o="application/vnd.openxmlformats-officedocument.wordprocessingml.document":a.endsWith(".pptx")?o="application/vnd.openxmlformats-officedocument.presentationml.presentation":a.endsWith(".csv")?o="text/csv":a.endsWith(".png")?o="image/png":a.endsWith(".jpg")||a.endsWith(".jpeg")?o="image/jpeg":a.endsWith(".gif")&&(o="image/gif"),null!=o&&null==(n=n||{}).type&&(n.type=o),r=null!=n?new Blob([t],n):new Blob([t]);const l=e.document.createElement("a");s?l.download=i:this.isSafari()||(l.target="_blank"),l.href=URL.createObjectURL(r),l.style.position="fixed",e.document.body.appendChild(l),l.click(),e.document.body.removeChild(l)}getApplicationVersion(){return Promise.resolve("2022.05.0")}supportsWebAuthn(e){return"undefined"!=typeof PublicKeyCredential}supportsDuo(){return!0}showToast(e,t,n,i){this.messagingService.send("showToast",{text:n,title:t,type:e,options:i})}showDialog(e,t,n,o,a,s=!1){return i(this,void 0,void 0,(function*(){let i=null;if(null!=a)switch(a){case"success":i="bwi-check text-success";break;case"warning":i="bwi-exclamation-triangle text-warning";break;case"error":i="bwi-error text-danger";break;case"info":i="bwi-info-circle text-info"}const l=document.querySelector("div.modal");null!=l&&l.removeAttribute("tabindex");const c=null!=i?``:void 0,d=yield r.default.fire({heightAuto:!1,buttonsStyling:!1,icon:a,iconHtml:c,text:s?null:e,html:s?e:null,titleText:t,showCancelButton:null!=o,cancelButtonText:o,showConfirmButton:!0,confirmButtonText:null==n?this.i18nService.t("ok"):n});return null!=l&&l.setAttribute("tabindex","-1"),d.value}))}isDev(){return!1}isSelfHost(){return"selfhosted"==="cloud".toString()}copyToClipboard(e,t){let n=window,i=window.document;if(t&&(t.window||t.win)?(n=t.window||t.win,i=n.document):t&&t.doc&&(i=t.doc),n.clipboardData&&n.clipboardData.setData)n.clipboardData.setData("Text",e);else if(i.queryCommandSupported&&i.queryCommandSupported("copy")){const t=i.createElement("textarea");t.textContent=e,t.style.position="fixed";let n=i.body;i.body.classList.contains("modal-open")&&(n=i.body.querySelector(".modal")),n.appendChild(t),t.select();let o=!1;try{o=i.execCommand("copy"),o||this.logService.debug("Copy command unsupported or disabled.")}catch(r){console.warn("Copy to clipboard failed.",r)}finally{n.removeChild(t)}return o}}readFromClipboard(e){throw new Error("Cannot read from clipboard on web.")}supportsBiometric(){return Promise.resolve(!1)}authenticateBiometric(){return Promise.resolve(!1)}supportsSecureStorage(){return!1}getDefaultSystemTheme(){return Promise.resolve(this.prefersColorSchemeDark.matches?s.ThemeType.Dark:s.ThemeType.Light)}getEffectiveTheme(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getTheme();return e===s.ThemeType.Dark?s.ThemeType.Dark:e===s.ThemeType.System?this.getDefaultSystemTheme():s.ThemeType.Light}))}onDefaultSystemThemeChange(e){try{this.prefersColorSchemeDark.addEventListener("change",(({matches:t})=>{e(t?s.ThemeType.Dark:s.ThemeType.Light)}))}catch(t){this.prefersColorSchemeDark.addListener((t=>{e(t.matches?s.ThemeType.Dark:s.ThemeType.Light)}))}}}t.WebPlatformUtilsService=m,m.ɵfac=function(e){return new(e||m)(l.ɵɵinject(c.I18nService),l.ɵɵinject(d.MessagingService),l.ɵɵinject(p.LogService),l.ɵɵinject(u.StateService))},m.ɵprov=l.ɵɵdefineInjectable({token:m,factory:m.ɵfac})},51857:(e,t,n)=>{"use strict";n.r(t)},83706:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});const i={darkInputColor:"#fff",darkInputPlaceholderColor:"#bac0ce",lightInputColor:"#465057",lightInputPlaceholderColor:"#b6b8b8"}},5812:(e,t,n)=>{"use strict";n.r(t)},4958:()=>{},65971:()=>{},25819:()=>{},52361:()=>{},94616:()=>{}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=t,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(d=0;d=o)&&Object.keys(i.O).every((e=>i.O[e](n[l])))?n.splice(l--,1):(s=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={148:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var r,o,[a,s,l]=n,c=0;if(a.some((t=>0!==e[t]))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(l)var d=l(i)}for(t&&t(n);ci(22977)));r=i.O(r)})(); -//# sourceMappingURL=main.57f2bde58ab84c51d17a.js.map \ No newline at end of file diff --git a/app/main.57f2bde58ab84c51d17a.js.map b/app/main.57f2bde58ab84c51d17a.js.map deleted file mode 100644 index ac6627a7..00000000 --- a/app/main.57f2bde58ab84c51d17a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app/main.57f2bde58ab84c51d17a.js","mappings":"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EACXlnC,UACEmuC,EACAx0C,EACAy0C,EACAC,EACAC,GAEA,OAAa,MAATH,GAAkC,IAAjBA,EAAMz6C,OAClB,GAGS,MAAdiG,GAAsBA,EAAWjG,OAAS,EACrCy6C,GAGTx0C,EAAaA,EAAWyL,OAAOyR,cACxBs3B,EAAMh0C,QAAQ+P,GAER,MAATkkC,GACY,MAAZlkC,EAAEkkC,IACFlkC,EAAEkkC,GAAO15C,WAAWmiB,cAAcra,QAAQ7C,IAAe,IAKhD,MAAT00C,GACY,MAAZnkC,EAAEmkC,IACFnkC,EAAEmkC,GAAO35C,WAAWmiB,cAAcra,QAAQ7C,IAAe,GAKhD,MAAT20C,GACY,MAAZpkC,EAAEokC,IACFpkC,EAAEokC,GAAO55C,WAAWmiB,cAAcra,QAAQ7C,IAAe,OAtCjE,e,iCAGautC,I,2CAAAA,EAAU,W,qHCEvB,MAGaC,EACXnnC,UAAU/B,GACR,OAAY,MAARA,EACK,KAGW,MAAbA,EAAK5R,MAAqC,KAArB4R,EAAK5R,KAAK+Y,OAAgBnH,EAAKiC,MAAQjC,EAAK5R,MAT5E,iB,iCAGa86C,I,6CAAAA,EAAY,W,0GCRzB,iB,WAEA,MACaoH,UAA2B,sBADxC,uB,gFACaA,KAAkB,GAAlBA,I,uCAAAA,EAAkB,QAAlBA,EAAkB,Q,uQCL/B,iBAEA,WACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YAEA,YACA,YACA,WAEA,YACA,YACA,YACA,Y,YAEa,EAAAC,OAAS,IAAI,EAAAC,eAAuB,UACpC,EAAAC,eAAiB,IAAI,EAAAD,eAA0C,kBAC/D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B,YAAbmT,EAAM,IAAoBvxB,KAAKg2E,gBACjCh2E,KAAKg2E,gBAAgBzkD,EAAM,IACL,UAAbA,EAAM,IAAkBvxB,KAAKi2E,cACtCj2E,KAAKi2E,cAAc1kD,EAAM,IACH,SAAbA,EAAM,IAAiBvxB,KAAKk2E,cACrCl2E,KAAKk2E,aAAa3kD,EAAM,IAIpBgmD,aAAa5zD,GACnB,OACkB,MAAhBA,EAAM6zD,QACW,KAAjB7zD,EAAM6zD,QACN7zD,EAAM6zD,SAAYx3E,KAAK22E,cAAsBa,QAC/B,MAAd7zD,EAAMxY,MACgB,iBAAfwY,EAAMxY,OAMsB,IAAnCwY,EAAMxY,KAAKoK,QAAQ,aACc,IAAjCoO,EAAMxY,KAAKoK,QAAQ,WACa,IAAhCoO,EAAMxY,KAAKoK,QAAQ,a,qGCrGZ,EAAAurE,gBAAkB,CAC7B,SACA,UACA,YACA,QACA,UACA,UACA,SACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,SACA,SACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,4GCjmPF,iBAEA,MAAaC,UAA6B,EAAAC,aAGxCz/E,YAAY4J,GACVpL,MAAMoL,GACM,MAARA,IAGJnL,KAAKihF,eAAiBjhF,KAAKkhF,oBAAoB,oBARnD,0B,+FCFA,iBAEA,MAAaC,UAAgB,EAAAH,aAQ3Bz/E,YAAY4J,EAAY,MACtBpL,MAAMoL,GACM,MAARA,IAGJnL,KAAKwyD,eAAiBxyD,KAAKkhF,oBAAoB,kBAC/ClhF,KAAK69B,MAA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","sources":["webpack://@bitwarden/web-vault/webpack/runtime/chunk loaded","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app.component.ts","webpack://@bitwarden/web-vault/./src/app/app.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/main.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/base-cva.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-checkbox.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-checkbox.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text-readonly.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text-readonly.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/select.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/select.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/manage/sso.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/manage/sso.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/organizations-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/organizations.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/disable-personal-vault-export.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/disable-personal-vault-export.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/maximum-vault-timeout.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/maximum-vault-timeout.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/add-organization.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/add-organization.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/clients.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/clients.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/create-organization.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/create-organization.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/guards/provider-type.guard.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/guards/provider.guard.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/accept-provider.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/accept-provider.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/bulk/bulk-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-confirm.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/bulk/bulk-remove.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-remove.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/events.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/events.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/manage.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/manage.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/people.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/people.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/user-add-edit.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/user-add-edit.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-layout.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-layout.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/services/webProvider.service.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/account.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/account.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/settings.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/settings.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup-provider.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup-provider.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/add-edit-custom-fields.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/attachments.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/avatar.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/callout.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/callout.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/captchaProtected.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/change-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/ciphers.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/collections.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export-scope-callout.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export-scope-callout.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/folder-add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/generator.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/hint.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/icon.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/icon.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/lock.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/login.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/dynamic-modal.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/modal-injector.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/modal.ref.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/password-generator-history.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/password-reprompt.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/register.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/remove-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/efflux-dates.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/send.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/set-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/settings/vault-timeout-input.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/share.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/sso.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/toastr.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/two-factor-options.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/two-factor.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/update-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/update-temp-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/user-verification.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/user-verification.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/a11y-invalid.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/a11y-title.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/api-action.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/autofocus.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/blur-click.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/fallback-src.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/input-strip-spaces.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/input-verbatim.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/not-premium.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/select-copy.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/stop-click.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/stop-prop.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/true-false-value.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/auth.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/lock.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/unauth.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/jslib.module.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/collection-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/folder-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/organization-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/status-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/type-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/models/dynamic-tree-node.model.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/models/vault-filter.model.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/vault-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/vault-filter.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/color-password.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/credit-card-number.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/ellipsis.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/i18n.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/search.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/user-name.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/jslib-services.module.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/modal.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/validation.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/validators/dirty.validator.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/validators/notAllowedValueAsync.validator.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/api.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/appId.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/audit.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/auth.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/cipher.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/collection.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/crypto.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/cryptoFunction.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/environment.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/event.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/export.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/fileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/folder.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/i18n.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/import.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/keyConnector.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/log.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/messaging.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/notifications.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/organization.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/passwordGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/platformUtils.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/policy.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/provider.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/search.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/send.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/settings.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/state.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/stateMigration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/storage.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/sync.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/token.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/totp.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/twoFactor.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/userVerification.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/usernameGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/vaultTimeout.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/authenticationStatus.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/authenticationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/cipherRepromptType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/cipherType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/clientType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/deviceType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/emergencyAccessStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/emergencyAccessType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/encryptionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/eventType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/fieldType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/fileUploadType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/hashPurpose.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/htmlStorageLocation.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/importOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/kdfType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/keySuffixOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/linkedIdType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/logLevelType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/notificationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationApiKeyType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationConnectionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationUserStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationUserType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/paymentMethodType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/permissions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/planSponsorshipType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/planType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/policyType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/productType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/providerUserStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/providerUserType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/secureNoteType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/sendType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/ssoEnums.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/stateVersion.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/storageLocation.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/themeType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/transactionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/twoFactorProviderType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/uriMatchType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/verificationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/accountFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/globalStateFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/stateFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/ascendoCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/avastCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/avastJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/aviraCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/baseImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenPasswordProtectedImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/blackBerryCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/blurCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/buttercupCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/chromeCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/clipperzHtmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/codebookCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/encryptrCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/enpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/enpassJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/firefoxCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/fsecureFskImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/gnomeJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/importError.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/kasperskyTxtImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keepass2XmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keepassxCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keeperImporters/keeperCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/lastpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/logMeOnceCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/meldiumCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/msecureCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/mykiCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/nordpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/cipherImportContext.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/padlockCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passkeepCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passmanJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passpackCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordAgentCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordBossJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordDragonXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordSafeXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordWalletTxtImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/rememBearCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/roboformCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/safariCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/safeInCloudXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/saferpassCsvImport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/secureSafeCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/splashIdCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/stickyPasswordXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/truekeyCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/upmCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/yotiCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/zohoVaultCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/captcha_iframe.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/iframe_component.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/linkedFieldOption.decorator.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/apiLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/logIn.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/passwordLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/ssoLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/sequentialize.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/serviceUtils.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/throttle.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/tldjs.noop.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/utils.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/webauthn_iframe.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/wordlist.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/billingSyncConfigApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/cardApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/fieldApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/identityApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/loginApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/loginUriApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/permissionsApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/secureNoteApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/sendFileApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/sendTextApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/ssoConfigApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/attachmentData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/cardData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/cipherData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/collectionData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/eventData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/fieldData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/folderData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/identityData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/loginData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/loginUriData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/organizationData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/passwordHistoryData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/policyData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/providerData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/secureNoteData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendFileData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendTextData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/account.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/attachment.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/authResult.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/card.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/cipher.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/collection.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/decryptParameters.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/domainBase.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encArrayBuffer.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encString.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encryptedObject.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/environmentUrls.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/field.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/folder.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/generatedPasswordHistory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/globalState.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/identity.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/importResult.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/logInCredentials.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/login.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/loginUri.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/masterPasswordPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/organization.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/password.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/policy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/provider.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/resetPasswordPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/secureNote.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/send.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendAccess.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendFile.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendText.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sortedCiphersCache.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/state.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/symmetricCryptoKey.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/treeNode.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/windowState.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cardExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cipherExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cipherWithIdsExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/collectionExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/collectionWithIdExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/eventExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/fieldExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/folderExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/folderWithIdExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/identityExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/loginExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/loginUriExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/secureNoteExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/account/setKeyConnectorKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/account/verifyOTPRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/attachmentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/billingSyncConfigRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/bitPayInvoiceRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkDeleteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkMoveRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkRestoreRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkShareRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherCollectionsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherShareRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/collectionRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/deleteRecoverRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/deviceRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emailTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/eventRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/folderRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/folderWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/groupRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/apiTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/passwordTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/ssoTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/tokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/tokenRequestTwoFactor.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/importCiphersRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/importOrganizationCiphersRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/kdfRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/keyConnectorUserKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/keysRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/kvpRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organization/organizationSponsorshipRedeemRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organization/organizationSsoRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationApiKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationConnectionRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationKeysRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationSubscriptionUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUpgradeRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserBulkConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserBulkRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserResetPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/passwordHintRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/passwordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/paymentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/policyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/preloginRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerAddOrganizationRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerOrganizationCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerSetupRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserBulkConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserBulkRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/referenceEventRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/registerRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/secretVerificationRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/selectionReadOnlyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendAccessRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/setPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/storageRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/taxInfoUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorProviderRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorRecoveryRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateDomainsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateProfileRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTempPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorDuoRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorWebAuthnRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyBankRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyDeleteRecoverRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/apiKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/attachmentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/attachmentUploadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/baseResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingHistoryResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingPaymentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/breachAccountResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/cipherResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/collectionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/domainsResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/emergencyAccessResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/errorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/eventResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/folderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/globalDomainResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/groupResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityCaptchaResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityTokenResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityTwoFactorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/keyConnectorUserKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/keysResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/listResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/notificationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organization/organizationSsoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationApiKeyInformationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationAutoEnrollStatusResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationConnectionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationKeysResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationSponsorshipSyncStatusResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationSubscriptionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserBulkPublicKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserBulkResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/passwordHistoryResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/paymentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/planResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/policyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/preloginResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileProviderOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileProviderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserBulkPublicKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserBulkResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/selectionReadOnlyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendAccessResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendFileDownloadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendFileUploadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/subscriptionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/syncResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/taxInfoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/taxRateResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorAuthenticatorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorDuoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorEmailResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorProviderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorRescoverResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorWebAuthnResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorYubiKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/userKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/attachmentView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/cardView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/cipherView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/collectionView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/eventView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/fieldView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/folderView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/identityView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/itemView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/loginUriView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/loginView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/passwordHistoryView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/secureNoteView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendAccessView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendFileView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendTextView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/ssoConfigView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/view.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/api.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/appId.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/audit.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/auth.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/azureFileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/bitwardenFileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/cipher.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/collection.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/consoleLog.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/container.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/crypto.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/environment.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/event.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/export.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/fileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/folder.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/i18n.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/import.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/keyConnector.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/notifications.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/organization.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/passwordGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/policy.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/provider.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/search.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/send.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/settings.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/state.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/stateMigration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/sync.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/token.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/totp.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/twoFactor.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/userVerification.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/usernameGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/vaultTimeout.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/webCryptoFunction.service.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/badge.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/badge.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/button.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/button.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-divider.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-divider.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-item.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-trigger-for.directive.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.module.ts","webpack://@bitwarden/web-vault/./src/abstractions/state.service.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-emergency.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-emergency.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/accept-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-organization.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/hint.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/hint.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/lock.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/lock.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/login.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/login.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/recover-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/recover-delete.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/recover-two-factor.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/recover-two-factor.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/register.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/register.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/remove-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/remove-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/set-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/set-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/sso.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/sso.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor-options.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor-options.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/update-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/update-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/update-temp-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/update-temp-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/verify-email-token.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/verify-email-token.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/verify-recover-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/verify-recover-delete.component.html","webpack://@bitwarden/web-vault/./src/app/app.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.accept.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.events.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.people.component.ts","webpack://@bitwarden/web-vault/./src/app/components/nested-checkbox.component.ts","webpack://@bitwarden/web-vault/./src/app/components/nested-checkbox.component.html","webpack://@bitwarden/web-vault/./src/app/components/organization-switcher.component.ts","webpack://@bitwarden/web-vault/./src/app/components/organization-switcher.component.html","webpack://@bitwarden/web-vault/./src/app/components/password-reprompt.component.ts","webpack://@bitwarden/web-vault/./src/app/components/password-reprompt.component.html","webpack://@bitwarden/web-vault/./src/app/components/password-strength.component.ts","webpack://@bitwarden/web-vault/./src/app/components/password-strength.component.html","webpack://@bitwarden/web-vault/./src/app/components/premium-badge.component.ts","webpack://@bitwarden/web-vault/./src/app/guards/home.guard.ts","webpack://@bitwarden/web-vault/./src/app/layouts/footer.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/footer.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/frontend-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/frontend-layout.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/navbar.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/navbar.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/user-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/user-layout.component.html","webpack://@bitwarden/web-vault/./src/app/modules/loose-components.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/pipes/get-organization-name.pipe.ts","webpack://@bitwarden/web-vault/./src/app/modules/pipes/pipes.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/shared.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/collection-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/collection-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/folder-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/folder-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/link-sso.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/link-sso.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-options.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-options.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/status-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/status-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/type-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/type-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-badge.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-name-badge.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-name-badge.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/vault.service.ts","webpack://@bitwarden/web-vault/./src/app/organizations/guards/permissions.guard.ts","webpack://@bitwarden/web-vault/./src/app/organizations/layouts/organization-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/layouts/organization-layout.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-remove.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-status.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-status.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collection-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collection-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collections.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-events.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-events.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-users.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-users.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/events.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/events.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/group-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/group-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/groups.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/groups.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/manage.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/manage.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/people.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/people.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policies.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policies.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policy-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policy-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/reset-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/reset-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-confirm.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-groups.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-groups.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/organization-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/base-policy.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/disable-send.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/disable-send.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/master-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/master-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/password-generator.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/password-generator.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/personal-ownership.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/personal-ownership.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/require-sso.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/require-sso.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/reset-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/reset-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/send-options.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/send-options.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/single-org.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/single-org.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/two-factor-authentication.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/two-factor-authentication.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/services/navigation-permissions.service.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/account.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/account.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/adjust-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/adjust-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/billing-sync-api-key.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/billing-sync-api-key.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/change-plan.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/change-plan.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/delete-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/delete-organization.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/download-license.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/download-license.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/image-subscription-hidden.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/image-subscription-hidden.component.svg","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-billing.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-billing.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/settings.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/settings.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/two-factor-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-setup.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/accept-family-sponsorship.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/accept-family-sponsorship.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/families-for-enterprise-setup.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/export.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/export.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/exposed-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/import.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/import.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/inactive-two-factor-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/reused-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/reused-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/tools.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/tools/tools.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/unsecured-websites-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/weak-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/weak-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/attachments.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/ciphers.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/ciphers.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/collections.component.html","webpack://@bitwarden/web-vault/./src/app/oss-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/oss.module.ts","webpack://@bitwarden/web-vault/./src/app/providers/providers.component.ts","webpack://@bitwarden/web-vault/./src/app/providers/providers.component.html","webpack://@bitwarden/web-vault/./src/app/reports/breach-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/breach-report.component.html","webpack://@bitwarden/web-vault/./src/app/reports/cipher-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/exposed-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/inactive-two-factor-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-card.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-card.component.html","webpack://@bitwarden/web-vault/./src/app/reports/report-list.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-list.component.html","webpack://@bitwarden/web-vault/./src/app/reports/reports-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/reports/reports.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/reports.component.html","webpack://@bitwarden/web-vault/./src/app/reports/reused-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/unsecured-websites-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/weak-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/send/access.component.ts","webpack://@bitwarden/web-vault/./src/app/send/access.component.html","webpack://@bitwarden/web-vault/./src/app/send/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/send/add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/send/efflux-dates.component.ts","webpack://@bitwarden/web-vault/./src/app/send/efflux-dates.component.html","webpack://@bitwarden/web-vault/./src/app/send/send.component.ts","webpack://@bitwarden/web-vault/./src/app/send/send.component.html","webpack://@bitwarden/web-vault/./src/app/services/event.service.ts","webpack://@bitwarden/web-vault/./src/app/services/init.service.ts","webpack://@bitwarden/web-vault/./src/app/services/modal.service.ts","webpack://@bitwarden/web-vault/./src/app/services/policy-list.service.ts","webpack://@bitwarden/web-vault/./src/app/services/router.service.ts","webpack://@bitwarden/web-vault/./src/app/services/services.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/account.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/account.component.html","webpack://@bitwarden/web-vault/./src/app/settings/add-credit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/add-credit.component.html","webpack://@bitwarden/web-vault/./src/app/settings/adjust-payment.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/adjust-payment.component.html","webpack://@bitwarden/web-vault/./src/app/settings/adjust-storage.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/adjust-storage.component.html","webpack://@bitwarden/web-vault/./src/app/settings/api-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/api-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/billing-sync-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/billing-sync-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-email.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-kdf.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-kdf.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-password.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-password.component.html","webpack://@bitwarden/web-vault/./src/app/settings/create-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/create-organization.component.html","webpack://@bitwarden/web-vault/./src/app/settings/deauthorize-sessions.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/deauthorize-sessions.component.html","webpack://@bitwarden/web-vault/./src/app/settings/delete-account.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/delete-account.component.html","webpack://@bitwarden/web-vault/./src/app/settings/domain-rules.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/domain-rules.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-confirm.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-takeover.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-takeover.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-view.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-view.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/organization-plans.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/organization-plans.component.html","webpack://@bitwarden/web-vault/./src/app/settings/payment-method.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/payment-method.component.html","webpack://@bitwarden/web-vault/./src/app/settings/payment.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/payment.component.html","webpack://@bitwarden/web-vault/./src/app/settings/preferences.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/preferences.component.html","webpack://@bitwarden/web-vault/./src/app/settings/premium.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/premium.component.html","webpack://@bitwarden/web-vault/./src/app/settings/profile.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/profile.component.html","webpack://@bitwarden/web-vault/./src/app/settings/purge-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/purge-vault.component.html","webpack://@bitwarden/web-vault/./src/app/settings/security-keys.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/security-keys.component.html","webpack://@bitwarden/web-vault/./src/app/settings/security-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/security.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/security.component.html","webpack://@bitwarden/web-vault/./src/app/settings/settings.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/settings.component.html","webpack://@bitwarden/web-vault/./src/app/settings/sponsored-families.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/sponsored-families.component.html","webpack://@bitwarden/web-vault/./src/app/settings/sponsoring-org-row.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/sponsoring-org-row.component.html","webpack://@bitwarden/web-vault/./src/app/settings/subscription-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/subscription.component.html","webpack://@bitwarden/web-vault/./src/app/settings/tax-info.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/tax-info.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-authenticator.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-authenticator.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-base.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-duo.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-duo.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-email.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-recovery.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-recovery.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-verify.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-verify.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-webauthn.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-webauthn.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-yubikey.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-yubikey.component.html","webpack://@bitwarden/web-vault/./src/app/settings/update-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/update-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/update-license.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/update-license.component.html","webpack://@bitwarden/web-vault/./src/app/settings/user-billing-history.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/user-billing-history.component.html","webpack://@bitwarden/web-vault/./src/app/settings/user-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/user-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/settings/vault-timeout-input.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/vault-timeout-input.component.html","webpack://@bitwarden/web-vault/./src/app/settings/verify-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/verify-email.component.html","webpack://@bitwarden/web-vault/./src/app/tools/export.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/generator.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/generator.component.html","webpack://@bitwarden/web-vault/./src/app/tools/import.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/password-generator-history.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/password-generator-history.component.html","webpack://@bitwarden/web-vault/./src/app/tools/tools.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/tools.component.html","webpack://@bitwarden/web-vault/./src/app/vault/add-edit-custom-fields.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/add-edit-custom-fields.component.html","webpack://@bitwarden/web-vault/./src/app/vault/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-actions.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-actions.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-delete.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-move.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-move.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-restore.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-restore.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-share.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-share.component.html","webpack://@bitwarden/web-vault/./src/app/vault/ciphers.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/folder-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/folder-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/vault/share.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/share.component.html","webpack://@bitwarden/web-vault/./src/app/wildcard-routing.module.ts","webpack://@bitwarden/web-vault/./src/models/account.ts","webpack://@bitwarden/web-vault/./src/models/globalState.ts","webpack://@bitwarden/web-vault/./src/services/broadcasterMessaging.service.ts","webpack://@bitwarden/web-vault/./src/services/htmlStorage.service.ts","webpack://@bitwarden/web-vault/./src/services/i18n.service.ts","webpack://@bitwarden/web-vault/./src/services/memoryStorage.service.ts","webpack://@bitwarden/web-vault/./src/services/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./src/services/state.service.ts","webpack://@bitwarden/web-vault/./src/services/stateMigration.service.ts","webpack://@bitwarden/web-vault/./src/services/webPlatformUtils.service.ts","webpack://@bitwarden/web-vault/./src/scss/export.module.scss","webpack://@bitwarden/web-vault/webpack/bootstrap","webpack://@bitwarden/web-vault/webpack/runtime/compat get default export","webpack://@bitwarden/web-vault/webpack/runtime/define property getters","webpack://@bitwarden/web-vault/webpack/runtime/global","webpack://@bitwarden/web-vault/webpack/runtime/hasOwnProperty shorthand","webpack://@bitwarden/web-vault/webpack/runtime/make namespace object","webpack://@bitwarden/web-vault/webpack/runtime/node module decorator","webpack://@bitwarden/web-vault/webpack/runtime/jsonp chunk loading","webpack://@bitwarden/web-vault/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nconst routes: Routes = [\n {\n path: \"providers\",\n loadChildren: async () => (await import(\"./providers/providers.module\")).ProvidersModule,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { AppComponent as BaseAppComponent } from \"src/app/app.component\";\n\nimport { DisablePersonalVaultExportPolicy } from \"./policies/disable-personal-vault-export.component\";\nimport { MaximumVaultTimeoutPolicy } from \"./policies/maximum-vault-timeout.component\";\n\n@Component({\n selector: \"app-root\",\n templateUrl: \"../../../src/app/app.component.html\",\n})\nexport class AppComponent extends BaseAppComponent {\n ngOnInit() {\n super.ngOnInit();\n\n this.policyListService.addPolicies([\n new MaximumVaultTimeoutPolicy(),\n new DisablePersonalVaultExportPolicy(),\n ]);\n }\n}\n","\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { RouterModule } from \"@angular/router\";\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nimport { OssRoutingModule } from \"src/app/oss-routing.module\";\nimport { OssModule } from \"src/app/oss.module\";\nimport { ServicesModule } from \"src/app/services/services.module\";\nimport { WildcardRoutingModule } from \"src/app/wildcard-routing.module\";\n\nimport { AppRoutingModule } from \"./app-routing.module\";\nimport { AppComponent } from \"./app.component\";\nimport { OrganizationsModule } from \"./organizations/organizations.module\";\nimport { DisablePersonalVaultExportPolicyComponent } from \"./policies/disable-personal-vault-export.component\";\nimport { MaximumVaultTimeoutPolicyComponent } from \"./policies/maximum-vault-timeout.component\";\n\n@NgModule({\n imports: [\n OverlayModule,\n OssModule,\n JslibModule,\n BrowserAnimationsModule,\n FormsModule,\n ReactiveFormsModule,\n ServicesModule,\n InfiniteScrollModule,\n DragDropModule,\n AppRoutingModule,\n OssRoutingModule,\n OrganizationsModule, // Must be after OssRoutingModule for competing routes to resolve properly\n RouterModule,\n WildcardRoutingModule, // Needs to be last to catch all non-existing routes\n ],\n declarations: [\n AppComponent,\n DisablePersonalVaultExportPolicyComponent,\n MaximumVaultTimeoutPolicyComponent,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n\nimport \"bootstrap\";\nimport \"jquery\";\nimport \"popper.js\";\n\nrequire(\"src/scss/styles.scss\");\nrequire(\"src/scss/tailwind.css\");\n\nimport { AppModule } from \"./app.module\";\n\nif (process.env.NODE_ENV === \"production\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","import { Directive, Input, OnInit, Self } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NgControl, Validators } from \"@angular/forms\";\n\nimport { dirtyRequired } from \"jslib-angular/validators/dirty.validator\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Directive()\nexport abstract class BaseCvaComponent implements ControlValueAccessor, OnInit {\n get describedById() {\n return this.showDescribedBy ? this.controlId + \"Desc\" : null;\n }\n\n get showDescribedBy() {\n return this.helperText != null || this.controlDir.control.hasError(\"required\");\n }\n\n get isRequired() {\n return (\n this.controlDir.control.hasValidator(Validators.required) ||\n this.controlDir.control.hasValidator(dirtyRequired)\n );\n }\n\n @Input() label: string;\n @Input() controlId: string;\n @Input() helperText: string;\n\n internalControl = new FormControl(\"\");\n\n protected onChange: any;\n protected onTouched: any;\n\n constructor(@Self() public controlDir: NgControl) {\n this.controlDir.valueAccessor = this;\n }\n\n ngOnInit() {\n this.internalControl.valueChanges.subscribe(this.onValueChangesInternal);\n }\n\n onBlurInternal() {\n this.onTouched();\n }\n\n // CVA interfaces\n writeValue(value: string) {\n this.internalControl.setValue(value);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.internalControl.disable();\n } else {\n this.internalControl.enable();\n }\n }\n\n protected onValueChangesInternal: any = (value: string) => this.onChange(value);\n // End CVA interfaces\n}\n","import { Component } from \"@angular/core\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-checkbox\",\n templateUrl: \"input-checkbox.component.html\",\n})\nexport class InputCheckboxComponent extends BaseCvaComponent {}\n","
\n
\n \n \n
\n {{\n helperText\n }}\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-text-readonly\",\n templateUrl: \"input-text-readonly.component.html\",\n})\nexport class InputTextReadOnlyComponent {\n @Input() controlValue: string;\n @Input() label: string;\n @Input() showCopy = true;\n @Input() showLaunch = false;\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n copy(value: string) {\n this.platformUtilsService.copyToClipboard(value);\n }\n\n launchUri(url: string) {\n this.platformUtilsService.launchUri(url);\n }\n}\n","
\n \n
\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-text[label][controlId]\",\n templateUrl: \"input-text.component.html\",\n})\nexport class InputTextComponent extends BaseCvaComponent implements OnInit {\n @Input() helperTextSameAsError: string;\n @Input() requiredErrorMessage: string;\n @Input() stripSpaces = false;\n\n transformValue: (value: string) => string = null;\n\n ngOnInit() {\n super.ngOnInit();\n if (this.stripSpaces) {\n this.transformValue = this.doStripSpaces;\n }\n }\n\n writeValue(value: string) {\n this.internalControl.setValue(value == null ? \"\" : value);\n }\n\n protected onValueChangesInternal: any = (value: string) => {\n let newValue = value;\n if (this.transformValue != null) {\n newValue = this.transformValue(value);\n this.internalControl.setValue(newValue, { emitEvent: false });\n }\n this.onChange(newValue);\n };\n\n protected onValueChangeInternal(value: string) {\n let newValue = value;\n if (this.transformValue != null) {\n newValue = this.transformValue(value);\n this.internalControl.setValue(newValue, { emitEvent: false });\n }\n }\n\n private doStripSpaces(value: string) {\n return value.replace(/ /g, \"\");\n }\n}\n","
\n \n \n
\n \n {{ helperText }}\n \n \n \n {{ \"error\" | i18n }}:\n {{\n controlDir.control.hasError(helperTextSameAsError)\n ? helperText\n : (\"fieldRequiredError\" | i18n: label)\n }}\n \n
\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { SelectOptions } from \"jslib-angular/interfaces/selectOptions\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-select\",\n templateUrl: \"select.component.html\",\n})\nexport class SelectComponent extends BaseCvaComponent {\n @Input() selectOptions: SelectOptions[];\n}\n","
\n \n \n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormBuilder, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { SelectOptions } from \"jslib-angular/interfaces/selectOptions\";\nimport { dirtyRequired } from \"jslib-angular/validators/dirty.validator\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"jslib-common/enums/ssoEnums\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SsoConfigApi } from \"jslib-common/models/api/ssoConfigApi\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationSsoRequest } from \"jslib-common/models/request/organization/organizationSsoRequest\";\nimport { OrganizationSsoResponse } from \"jslib-common/models/response/organization/organizationSsoResponse\";\nimport { SsoConfigView } from \"jslib-common/models/view/ssoConfigView\";\n\nconst defaultSigningAlgorithm = \"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\";\n\n@Component({\n selector: \"app-org-manage-sso\",\n templateUrl: \"sso.component.html\",\n})\nexport class SsoComponent implements OnInit {\n readonly ssoType = SsoType;\n\n readonly ssoTypeOptions: SelectOptions[] = [\n { name: this.i18nService.t(\"selectType\"), value: SsoType.None, disabled: true },\n { name: \"OpenID Connect\", value: SsoType.OpenIdConnect },\n { name: \"SAML 2.0\", value: SsoType.Saml2 },\n ];\n\n readonly samlSigningAlgorithms = [\n \"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha384\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha512\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha1\",\n ];\n\n readonly saml2SigningBehaviourOptions: SelectOptions[] = [\n {\n name: \"If IdP Wants Authn Requests Signed\",\n value: Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned,\n },\n { name: \"Always\", value: Saml2SigningBehavior.Always },\n { name: \"Never\", value: Saml2SigningBehavior.Never },\n ];\n readonly saml2BindingTypeOptions: SelectOptions[] = [\n { name: \"Redirect\", value: Saml2BindingType.HttpRedirect },\n { name: \"HTTP POST\", value: Saml2BindingType.HttpPost },\n ];\n readonly saml2NameIdFormatOptions: SelectOptions[] = [\n { name: \"Not Configured\", value: Saml2NameIdFormat.NotConfigured },\n { name: \"Unspecified\", value: Saml2NameIdFormat.Unspecified },\n { name: \"Email Address\", value: Saml2NameIdFormat.EmailAddress },\n { name: \"X.509 Subject Name\", value: Saml2NameIdFormat.X509SubjectName },\n { name: \"Windows Domain Qualified Name\", value: Saml2NameIdFormat.WindowsDomainQualifiedName },\n { name: \"Kerberos Principal Name\", value: Saml2NameIdFormat.KerberosPrincipalName },\n { name: \"Entity Identifier\", value: Saml2NameIdFormat.EntityIdentifier },\n { name: \"Persistent\", value: Saml2NameIdFormat.Persistent },\n { name: \"Transient\", value: Saml2NameIdFormat.Transient },\n ];\n\n readonly connectRedirectOptions: SelectOptions[] = [\n { name: \"Redirect GET\", value: OpenIdConnectRedirectBehavior.RedirectGet },\n { name: \"Form POST\", value: OpenIdConnectRedirectBehavior.FormPost },\n ];\n\n showOpenIdCustomizations = false;\n\n loading = true;\n haveTestedKeyConnector = false;\n organizationId: string;\n organization: Organization;\n formPromise: Promise;\n\n callbackPath: string;\n signedOutCallbackPath: string;\n spEntityId: string;\n spMetadataUrl: string;\n spAcsUrl: string;\n\n enabled = this.formBuilder.control(false);\n\n openIdForm = this.formBuilder.group(\n {\n authority: [\"\", dirtyRequired],\n clientId: [\"\", dirtyRequired],\n clientSecret: [\"\", dirtyRequired],\n metadataAddress: [],\n redirectBehavior: [OpenIdConnectRedirectBehavior.RedirectGet, dirtyRequired],\n getClaimsFromUserInfoEndpoint: [],\n additionalScopes: [],\n additionalUserIdClaimTypes: [],\n additionalEmailClaimTypes: [],\n additionalNameClaimTypes: [],\n acrValues: [],\n expectedReturnAcrValue: [],\n },\n {\n updateOn: \"blur\",\n }\n );\n\n samlForm = this.formBuilder.group(\n {\n spNameIdFormat: [Saml2NameIdFormat.NotConfigured],\n spOutboundSigningAlgorithm: [defaultSigningAlgorithm],\n spSigningBehavior: [Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned],\n spMinIncomingSigningAlgorithm: [defaultSigningAlgorithm],\n spWantAssertionsSigned: [],\n spValidateCertificates: [],\n\n idpEntityId: [\"\", dirtyRequired],\n idpBindingType: [Saml2BindingType.HttpRedirect],\n idpSingleSignOnServiceUrl: [],\n idpSingleLogoutServiceUrl: [],\n idpX509PublicCert: [\"\", dirtyRequired],\n idpOutboundSigningAlgorithm: [defaultSigningAlgorithm],\n idpAllowUnsolicitedAuthnResponse: [],\n idpAllowOutboundLogoutRequests: [true],\n idpWantAuthnRequestsSigned: [],\n },\n {\n updateOn: \"blur\",\n }\n );\n\n ssoConfigForm = this.formBuilder.group({\n configType: [SsoType.None],\n keyConnectorEnabled: [false],\n keyConnectorUrl: [\"\"],\n openId: this.openIdForm,\n saml: this.samlForm,\n });\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.ssoConfigForm.get(\"configType\").valueChanges.subscribe((newType: SsoType) => {\n if (newType === SsoType.OpenIdConnect) {\n this.openIdForm.enable();\n this.samlForm.disable();\n } else if (newType === SsoType.Saml2) {\n this.openIdForm.disable();\n this.samlForm.enable();\n } else {\n this.openIdForm.disable();\n this.samlForm.disable();\n }\n });\n\n this.samlForm\n .get(\"spSigningBehavior\")\n .valueChanges.subscribe(() =>\n this.samlForm.get(\"idpX509PublicCert\").updateValueAndValidity()\n );\n\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n const ssoSettings = await this.apiService.getOrganizationSso(this.organizationId);\n this.populateForm(ssoSettings);\n\n this.callbackPath = ssoSettings.urls.callbackPath;\n this.signedOutCallbackPath = ssoSettings.urls.signedOutCallbackPath;\n this.spEntityId = ssoSettings.urls.spEntityId;\n this.spMetadataUrl = ssoSettings.urls.spMetadataUrl;\n this.spAcsUrl = ssoSettings.urls.spAcsUrl;\n\n this.loading = false;\n }\n\n async submit() {\n this.validateForm(this.ssoConfigForm);\n\n if (this.ssoConfigForm.get(\"keyConnectorEnabled\").value) {\n await this.validateKeyConnectorUrl();\n }\n\n if (!this.ssoConfigForm.valid) {\n this.readOutErrors();\n return;\n }\n\n const request = new OrganizationSsoRequest();\n request.enabled = this.enabled.value;\n request.data = SsoConfigApi.fromView(this.ssoConfigForm.value as SsoConfigView);\n\n this.formPromise = this.apiService.postOrganizationSso(this.organizationId, request);\n\n try {\n const response = await this.formPromise;\n this.populateForm(response);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"ssoSettingsSaved\"));\n } catch {\n // Logged by appApiAction, do nothing\n }\n\n this.formPromise = null;\n }\n\n async validateKeyConnectorUrl() {\n if (this.haveTestedKeyConnector) {\n return;\n }\n\n this.keyConnectorUrl.markAsPending();\n\n try {\n await this.apiService.getKeyConnectorAlive(this.keyConnectorUrl.value);\n this.keyConnectorUrl.updateValueAndValidity();\n } catch {\n this.keyConnectorUrl.setErrors({\n invalidUrl: true,\n });\n }\n\n this.haveTestedKeyConnector = true;\n }\n\n toggleOpenIdCustomizations() {\n this.showOpenIdCustomizations = !this.showOpenIdCustomizations;\n }\n\n getErrorCount(form: FormGroup): number {\n return Object.values(form.controls).reduce((acc: number, control: AbstractControl) => {\n if (control instanceof FormGroup) {\n return acc + this.getErrorCount(control);\n }\n\n if (control.errors == null) {\n return acc;\n }\n return acc + Object.keys(control.errors).length;\n }, 0);\n }\n\n get enableTestKeyConnector() {\n return (\n this.ssoConfigForm.get(\"keyConnectorEnabled\").value &&\n !Utils.isNullOrWhitespace(this.keyConnectorUrl?.value)\n );\n }\n\n get keyConnectorUrl() {\n return this.ssoConfigForm.get(\"keyConnectorUrl\");\n }\n\n get samlSigningAlgorithmOptions(): SelectOptions[] {\n return this.samlSigningAlgorithms.map((algorithm) => ({ name: algorithm, value: algorithm }));\n }\n\n private validateForm(form: FormGroup) {\n Object.values(form.controls).forEach((control: AbstractControl) => {\n if (control.disabled) {\n return;\n }\n\n if (control instanceof FormGroup) {\n this.validateForm(control);\n } else {\n control.markAsDirty();\n control.markAsTouched();\n control.updateValueAndValidity();\n }\n });\n }\n\n private populateForm(ssoSettings: OrganizationSsoResponse) {\n this.enabled.setValue(ssoSettings.enabled);\n if (ssoSettings.data != null) {\n const ssoConfigView = new SsoConfigView(ssoSettings.data);\n this.ssoConfigForm.patchValue(ssoConfigView);\n }\n }\n\n private readOutErrors() {\n const errorText = this.i18nService.t(\"error\");\n const errorCount = this.getErrorCount(this.ssoConfigForm);\n const errorCountText = this.i18nService.t(\n errorCount === 1 ? \"formErrorSummarySingle\" : \"formErrorSummaryPlural\",\n errorCount.toString()\n );\n\n const div = document.createElement(\"div\");\n div.className = \"sr-only\";\n div.id = \"srErrorCount\";\n div.setAttribute(\"aria-live\", \"polite\");\n div.innerText = errorText + \": \" + errorCountText;\n\n const existing = document.getElementById(\"srErrorCount\");\n if (existing != null) {\n existing.remove();\n }\n\n document.body.append(div);\n }\n}\n","
\n

{{ \"singleSignOn\" | i18n }}

\n
\n\n\n \n {{ \"loading\" | i18n }}\n\n\n\n

\n {{ \"ssoPolicyHelpStart\" | i18n }}\n {{ \"ssoPolicyHelpLink\" | i18n }}\n {{ \"ssoPolicyHelpEnd\" | i18n }}\n
\n {{ \"ssoPolicyHelpKeyConnector\" | i18n }}\n

\n\n \n \n \n\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n\n \n \n \n {{ \"keyConnectorWarning\" | i18n }}\n \n\n
\n \n
\n \n
\n \n \n \n {{ \"keyConnectorTest\" | i18n }}\n \n \n
\n
\n
\n \n \n {{ \"error\" | i18n }}:\n {{ \"keyConnectorTestFail\" | i18n }}\n \n \n \n \n {{ \"keyConnectorTestSuccess\" | i18n }}\n \n \n
\n
\n \n\n \n \n \n\n \n \n
\n

{{ \"openIdConnectConfig\" | i18n }}

\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n\n \n \n

\n {{ \"openIdOptionalCustomizations\" | i18n }}\n

\n \n \n \n
\n
\n \n\n \n\n \n\n \n\n \n\n \n
\n \n \n\n \n
\n \n
\n

{{ \"samlSpConfig\" | i18n }}

\n\n \n\n \n\n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n\n \n
\n\n \n
\n

{{ \"samlIdpConfig\" | i18n }}

\n\n \n\n \n \n\n \n\n \n\n
\n \n \n \n \n {{ \"error\" | i18n }}:\n {{ \"fieldRequiredError\" | i18n: (\"idpX509PublicCert\" | i18n) }}\n \n
\n\n \n \n\n \n \n\n \n\n \n
\n
\n\n \n \n \n {{ \"error\" | i18n }}:\n {{\n (errorCount === 1 ? \"formErrorSummarySingle\" : \"formErrorSummaryPlural\") | i18n: errorCount\n }}\n \n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { PermissionsGuard } from \"src/app/organizations/guards/permissions.guard\";\nimport { OrganizationLayoutComponent } from \"src/app/organizations/layouts/organization-layout.component\";\nimport { ManageComponent } from \"src/app/organizations/manage/manage.component\";\nimport { NavigationPermissionsService } from \"src/app/organizations/services/navigation-permissions.service\";\n\nimport { SsoComponent } from \"./manage/sso.component\";\n\nconst routes: Routes = [\n {\n path: \"organizations/:organizationId\",\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuard, PermissionsGuard],\n children: [\n {\n path: \"manage\",\n component: ManageComponent,\n canActivate: [PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"manage\").concat(\n Permissions.ManageSso\n ),\n },\n children: [\n {\n path: \"sso\",\n component: SsoComponent,\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationsRoutingModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nimport { InputCheckboxComponent } from \"./components/input-checkbox.component\";\nimport { InputTextReadOnlyComponent } from \"./components/input-text-readonly.component\";\nimport { InputTextComponent } from \"./components/input-text.component\";\nimport { SelectComponent } from \"./components/select.component\";\nimport { SsoComponent } from \"./manage/sso.component\";\nimport { OrganizationsRoutingModule } from \"./organizations-routing.module\";\n\n// Form components are for use in the SSO Configuration Form only and should not be exported for use elsewhere.\n// They will be deprecated by the Component Library.\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n JslibModule,\n OrganizationsRoutingModule,\n ],\n declarations: [\n InputCheckboxComponent,\n InputTextComponent,\n InputTextReadOnlyComponent,\n SelectComponent,\n SsoComponent,\n ],\n})\nexport class OrganizationsModule {}\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport {\n BasePolicy,\n BasePolicyComponent,\n} from \"src/app/organizations/policies/base-policy.component\";\n\nexport class DisablePersonalVaultExportPolicy extends BasePolicy {\n name = \"disablePersonalVaultExport\";\n description = \"disablePersonalVaultExportDesc\";\n type = PolicyType.DisablePersonalVaultExport;\n component = DisablePersonalVaultExportPolicyComponent;\n}\n\n@Component({\n selector: \"policy-disable-personal-vault-export\",\n templateUrl: \"disable-personal-vault-export.component.html\",\n})\nexport class DisablePersonalVaultExportPolicyComponent extends BasePolicyComponent {}\n","
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport {\n BasePolicy,\n BasePolicyComponent,\n} from \"src/app/organizations/policies/base-policy.component\";\n\nexport class MaximumVaultTimeoutPolicy extends BasePolicy {\n name = \"maximumVaultTimeout\";\n description = \"maximumVaultTimeoutDesc\";\n type = PolicyType.MaximumVaultTimeout;\n component = MaximumVaultTimeoutPolicyComponent;\n}\n\n@Component({\n selector: \"policy-maximum-timeout\",\n templateUrl: \"maximum-vault-timeout.component.html\",\n})\nexport class MaximumVaultTimeoutPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n hours: [null],\n minutes: [null],\n });\n\n constructor(private formBuilder: FormBuilder, private i18nService: I18nService) {\n super();\n }\n\n loadData() {\n const minutes = this.policyResponse.data?.minutes;\n\n if (minutes == null) {\n return;\n }\n\n this.data.patchValue({\n hours: Math.floor(minutes / 60),\n minutes: minutes % 60,\n });\n }\n\n buildRequestData() {\n if (this.data.value.hours == null && this.data.value.minutes == null) {\n return null;\n }\n\n return {\n minutes: this.data.value.hours * 60 + this.data.value.minutes,\n };\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t(\"requireSsoPolicyReqError\"));\n }\n\n const data = this.buildRequestData();\n if (data?.minutes == null || data?.minutes <= 0) {\n throw new Error(this.i18nService.t(\"invalidMaximumVaultTimeout\"));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"requireSsoPolicyReq\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n
\n \n {{ \"hours\" | i18n }}\n
\n
\n \n {{ \"minutes\" | i18n }}\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\nimport { WebProviderService } from \"../services/webProvider.service\";\n\n@Component({\n selector: \"provider-add-organization\",\n templateUrl: \"add-organization.component.html\",\n})\nexport class AddOrganizationComponent implements OnInit {\n @Input() providerId: string;\n @Input() organizations: Organization[];\n @Output() onAddedOrganization = new EventEmitter();\n\n provider: Provider;\n formPromise: Promise;\n loading = true;\n\n constructor(\n private providerService: ProviderService,\n private webProviderService: WebProviderService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private validationService: ValidationService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n if (this.providerId == null) {\n return;\n }\n\n this.provider = await this.providerService.get(this.providerId);\n\n this.loading = false;\n }\n\n async add(organization: Organization) {\n if (this.formPromise) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"addOrganizationConfirmation\", organization.name, this.provider.name),\n organization.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n try {\n this.formPromise = this.webProviderService.addOrganizationToProvider(\n this.providerId,\n organization.id\n );\n await this.formPromise;\n } catch (e) {\n this.validationService.showError(e);\n return;\n } finally {\n this.formPromise = null;\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationJoinedProvider\")\n );\n this.onAddedOrganization.emit();\n }\n}\n","
\n
\n
\n
\n

\n {{ \"addExistingOrganization\" | i18n }}\n

\n \n ×\n \n
\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ o.name }}\n \n \n Add\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ProviderOrganizationOrganizationDetailsResponse } from \"jslib-common/models/response/provider/providerOrganizationResponse\";\n\nimport { WebProviderService } from \"../services/webProvider.service\";\n\nimport { AddOrganizationComponent } from \"./add-organization.component\";\n\nconst DisallowedPlanTypes = [\n PlanType.Free,\n PlanType.FamiliesAnnually2019,\n PlanType.FamiliesAnnually,\n];\n\n@Component({\n templateUrl: \"clients.component.html\",\n})\nexport class ClientsComponent implements OnInit {\n @ViewChild(\"add\", { read: ViewContainerRef, static: true }) addModalRef: ViewContainerRef;\n\n providerId: any;\n searchText: string;\n addableOrganizations: Organization[];\n loading = true;\n manageOrganizations = false;\n showAddExisting = false;\n\n clients: ProviderOrganizationOrganizationDetailsResponse[];\n pagedClients: ProviderOrganizationOrganizationDetailsResponse[];\n\n protected didScroll = false;\n protected pageSize = 100;\n protected actionPromise: Promise;\n private pagedClientsCount = 0;\n\n constructor(\n private route: ActivatedRoute,\n private providerService: ProviderService,\n private apiService: ApiService,\n private searchService: SearchService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private validationService: ValidationService,\n private webProviderService: WebProviderService,\n private logService: LogService,\n private modalService: ModalService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderClients(this.providerId);\n this.clients = response.data != null && response.data.length > 0 ? response.data : [];\n this.manageOrganizations =\n (await this.providerService.get(this.providerId)).type === ProviderUserType.ProviderAdmin;\n const candidateOrgs = (await this.organizationService.getAll()).filter(\n (o) => o.isOwner && o.providerId == null\n );\n const allowedOrgsIds = await Promise.all(\n candidateOrgs.map((o) => this.apiService.getOrganization(o.id))\n ).then((orgs) =>\n orgs.filter((o) => !DisallowedPlanTypes.includes(o.planType)).map((o) => o.id)\n );\n this.addableOrganizations = candidateOrgs.filter((o) => allowedOrgsIds.includes(o.id));\n\n this.showAddExisting = this.addableOrganizations.length !== 0;\n this.loading = false;\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.clients && this.clients.length > this.pageSize;\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n async resetPaging() {\n this.pagedClients = [];\n this.loadMore();\n }\n\n loadMore() {\n if (!this.clients || this.clients.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedClients.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedClientsCount > this.pageSize) {\n pagedSize = this.pagedClientsCount;\n }\n if (this.clients.length > pagedLength) {\n this.pagedClients = this.pagedClients.concat(\n this.clients.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedClientsCount = this.pagedClients.length;\n this.didScroll = this.pagedClients.length > this.pageSize;\n }\n\n async addExistingOrganization() {\n const [modal] = await this.modalService.openViewRef(\n AddOrganizationComponent,\n this.addModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.organizations = this.addableOrganizations;\n comp.onAddedOrganization.subscribe(async () => {\n try {\n await this.load();\n modal.close();\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n }\n );\n }\n\n async remove(organization: ProviderOrganizationOrganizationDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"detachOrganizationConfirmation\"),\n organization.organizationName,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.webProviderService.detachOrganizastion(\n this.providerId,\n organization.id\n );\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"detachedOrganization\", organization.organizationName)\n );\n await this.load();\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n}\n","
\n

{{ \"clients\" | i18n }}

\n\n
\n
\n \n \n
\n \n \n {{ \"newClientOrganization\" | i18n }}\n \n \n \n {{ \"addExistingOrganization\" | i18n }}\n \n
\n
\n\n\n \n {{ \"loading\" | i18n }}\n\n\n\n

{{ \"noClientsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n {{ o.organizationName }}\n \n \n \n \n \n \n \n \n\n\n\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationPlansComponent } from \"src/app/settings/organization-plans.component\";\n\n@Component({\n selector: \"app-create-organization\",\n templateUrl: \"create-organization.component.html\",\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true })\n orgPlansComponent: OrganizationPlansComponent;\n\n providerId: string;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n });\n }\n}\n","
\n

{{ \"newClientOrganization\" | i18n }}

\n
\n

{{ \"newClientOrganizationDesc\" | i18n }}

\n\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\n@Injectable()\nexport class PermissionsGuard implements CanActivate {\n constructor(private providerService: ProviderService, private router: Router) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.providerService.get(route.params.providerId);\n const permissions = route.data == null ? null : (route.data.permissions as Permissions[]);\n\n if (\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && provider.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.ManageProvider) !== -1 && provider.isProviderAdmin) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && provider.canManageUsers)\n ) {\n return true;\n }\n\n this.router.navigate([\"/providers\", provider.id]);\n return false;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\n\n@Injectable()\nexport class ProviderGuard implements CanActivate {\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private providerService: ProviderService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.providerService.get(route.params.providerId);\n if (provider == null) {\n this.router.navigate([\"/\"]);\n return false;\n }\n if (!provider.isProviderAdmin && !provider.enabled) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"providerIsDisabled\"));\n this.router.navigate([\"/\"]);\n return false;\n }\n\n return true;\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ProviderUserAcceptRequest } from \"jslib-common/models/request/provider/providerUserAcceptRequest\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-provider\",\n templateUrl: \"accept-provider.component.html\",\n})\nexport class AcceptProviderComponent extends BaseAcceptComponent {\n providerName: string;\n\n failedMessage = \"providerInviteAcceptFailed\";\n\n requiredParameters = [\"providerId\", \"providerUserId\", \"token\"];\n\n constructor(\n router: Router,\n i18nService: I18nService,\n route: ActivatedRoute,\n stateService: StateService,\n private apiService: ApiService,\n platformUtilService: PlatformUtilsService\n ) {\n super(router, platformUtilService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any) {\n const request = new ProviderUserAcceptRequest();\n request.token = qParams.token;\n\n await this.apiService.postProviderUserAccept(\n qParams.providerId,\n qParams.providerUserId,\n request\n );\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"providerInviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any) {\n this.providerName = qParams.providerName;\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"joinProvider\" | i18n }}

\n
\n
\n

\n {{ providerName }}\n {{ email }}\n

\n

{{ \"joinProviderDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserBulkConfirmRequest } from \"jslib-common/models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\n\nimport { BulkConfirmComponent as OrganizationBulkConfirmComponent } from \"src/app/organizations/manage/bulk/bulk-confirm.component\";\nimport { BulkUserDetails } from \"src/app/organizations/manage/bulk/bulk-status.component\";\n\n@Component({\n templateUrl: \"../../../../../../src/app/organizations/manage/bulk/bulk-confirm.component.html\",\n})\nexport class BulkConfirmComponent extends OrganizationBulkConfirmComponent {\n @Input() providerId: string;\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === ProviderUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new ProviderUserBulkRequest(this.filteredUsers.map((user) => user.id));\n return await this.apiService.postProviderUsersPublicKey(this.providerId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getProviderKey(this.providerId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new ProviderUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postProviderUserBulkConfirm(this.providerId, request);\n }\n}\n","\n","import { Component, Input } from \"@angular/core\";\n\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\n\nimport { BulkRemoveComponent as OrganizationBulkRemoveComponent } from \"src/app/organizations/manage/bulk/bulk-remove.component\";\n\n@Component({\n templateUrl: \"../../../../../../src/app/organizations/manage/bulk/bulk-remove.component.html\",\n})\nexport class BulkRemoveComponent extends OrganizationBulkRemoveComponent {\n @Input() providerId: string;\n\n async deleteUsers() {\n const request = new ProviderUserBulkRequest(this.users.map((user) => user.id));\n return await this.apiService.deleteManyProviderUsers(this.providerId, request);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"removeUsers\" | i18n }}\n

\n \n ×\n \n
\n
\n \n {{ \"noSelectedUsersApplicable\" | i18n }}\n \n \n {{ error }}\n \n \n 0 && !error\">\n {{ \"removeUsersWarning\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}
\n \n \n \n {{ user.email }}\n {{ user.name }}\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}{{ \"status\" | i18n }}
\n \n \n \n {{ user.email }}\n {{ user.name }}\n \n {{ statuses.get(user.id) }}\n \n {{ \"bulkFilteredMessage\" | i18n }}\n
\n
\n
\n
\n 0\"\n [disabled]=\"loading\"\n (click)=\"submit()\"\n >\n \n {{ \"removeUsers\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\nimport { BaseEventsComponent } from \"src/app/common/base.events.component\";\nimport { EventService } from \"src/app/services/event.service\";\n\n@Component({\n selector: \"provider-events\",\n templateUrl: \"events.component.html\",\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName = \"provider-events\";\n providerId: string;\n\n private providerUsersUserIdMap = new Map();\n private providerUsersIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n eventService: EventService,\n i18nService: I18nService,\n private providerService: ProviderService,\n exportService: ExportService,\n platformUtilsService: PlatformUtilsService,\n private router: Router,\n logService: LogService,\n private userNamePipe: UserNamePipe\n ) {\n super(eventService, i18nService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n const provider = await this.providerService.get(this.providerId);\n if (provider == null || !provider.useEvents) {\n this.router.navigate([\"/providers\", this.providerId]);\n return;\n }\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderUsers(this.providerId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.providerUsersIdMap.set(u.id, { name: name, email: u.email });\n this.providerUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsProvider(\n this.providerId,\n startDate,\n endDate,\n continuationToken\n );\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n return userId != null && this.providerUsersUserIdMap.has(userId)\n ? this.providerUsersUserIdMap.get(userId)\n : null;\n }\n}\n","
\n

{{ \"eventLogs\" | i18n }}

\n
\n
\n \n \n -\n \n \n
\n
\n \n \n {{ \"refresh\" | i18n }}\n \n \n
\n \n \n {{ \"export\" | i18n }}\n \n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noEventsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"provider-manage\",\n templateUrl: \"manage.component.html\",\n})\nexport class ManageComponent implements OnInit {\n provider: Provider;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.provider = await this.providerService.get(params.providerId);\n this.accessEvents = this.provider.useEvents;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"manage\" | i18n }}
\n
\n \n {{ \"people\" | i18n }}\n \n \n {{ \"eventLogs\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"jslib-common/models/request/provider/providerUserConfirmRequest\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { ProviderUserBulkResponse } from \"jslib-common/models/response/provider/providerUserBulkResponse\";\nimport { ProviderUserUserDetailsResponse } from \"jslib-common/models/response/provider/providerUserResponse\";\n\nimport { BasePeopleComponent } from \"src/app/common/base.people.component\";\nimport { BulkStatusComponent } from \"src/app/organizations/manage/bulk/bulk-status.component\";\nimport { EntityEventsComponent } from \"src/app/organizations/manage/entity-events.component\";\n\nimport { BulkConfirmComponent } from \"./bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./bulk/bulk-remove.component\";\nimport { UserAddEditComponent } from \"./user-add-edit.component\";\n\n@Component({\n selector: \"provider-people\",\n templateUrl: \"people.component.html\",\n})\nexport class PeopleComponent\n extends BasePeopleComponent\n implements OnInit\n{\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"groupsTemplate\", { read: ViewContainerRef, static: true })\n groupsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n @ViewChild(\"bulkStatusTemplate\", { read: ViewContainerRef, static: true })\n bulkStatusModalRef: ViewContainerRef;\n @ViewChild(\"bulkConfirmTemplate\", { read: ViewContainerRef, static: true })\n bulkConfirmModalRef: ViewContainerRef;\n @ViewChild(\"bulkRemoveTemplate\", { read: ViewContainerRef, static: true })\n bulkRemoveModalRef: ViewContainerRef;\n\n userType = ProviderUserType;\n userStatusType = ProviderUserStatusType;\n providerId: string;\n accessEvents = false;\n\n constructor(\n apiService: ApiService,\n private route: ActivatedRoute,\n i18nService: I18nService,\n modalService: ModalService,\n platformUtilsService: PlatformUtilsService,\n cryptoService: CryptoService,\n private router: Router,\n searchService: SearchService,\n validationService: ValidationService,\n logService: LogService,\n searchPipe: SearchPipe,\n userNamePipe: UserNamePipe,\n stateService: StateService,\n private providerService: ProviderService\n ) {\n super(\n apiService,\n searchService,\n i18nService,\n platformUtilsService,\n cryptoService,\n validationService,\n modalService,\n logService,\n searchPipe,\n userNamePipe,\n stateService\n );\n }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n const provider = await this.providerService.get(this.providerId);\n\n if (!provider.canManageUsers) {\n this.router.navigate([\"../\"], { relativeTo: this.route });\n return;\n }\n\n this.accessEvents = provider.useEvents;\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter((u) => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === ProviderUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n });\n });\n }\n\n getUsers(): Promise> {\n return this.apiService.getProviderUsers(this.providerId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteProviderUser(this.providerId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postProviderUserReinvite(this.providerId, id);\n }\n\n async confirmUser(user: ProviderUserUserDetailsResponse, publicKey: Uint8Array): Promise {\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n const key = await this.cryptoService.rsaEncrypt(providerKey.key, publicKey.buffer);\n const request = new ProviderUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postProviderUserConfirm(this.providerId, user.id, request);\n }\n\n async edit(user: ProviderUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.providerUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n }\n );\n }\n\n async events(user: ProviderUserUserDetailsResponse) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = \"user\";\n });\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRemoveComponent,\n this.bulkRemoveModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter((u) => u.status === ProviderUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"noSelectedUsersApplicable\")\n );\n return;\n }\n\n try {\n const request = new ProviderUserBulkRequest(filteredUsers.map((user) => user.id));\n const response = this.apiService.postManyProviderUserReinvite(this.providerId, request);\n this.showBulkStatus(\n users,\n filteredUsers,\n response,\n this.i18nService.t(\"bulkReinviteMessage\")\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkConfirmComponent,\n this.bulkConfirmModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n private async showBulkStatus(\n users: ProviderUserUserDetailsResponse[],\n filteredUsers: ProviderUserUserDetailsResponse[],\n request: Promise>,\n successfullMessage: string\n ) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n BulkStatusComponent,\n this.bulkStatusModalRef,\n (comp) => {\n comp.loading = true;\n }\n );\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data\n .filter((r) => r.error !== \"\")\n .reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map((user) => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n // eslint-disable-next-line\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t(\"bulkFilteredMessage\");\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","
\n

{{ \"people\" | i18n }}

\n
\n
\n \n {{ \"all\" | i18n }}\n {{ allCount }}\n \n \n {{ \"invited\" | i18n }}\n {{ invitedCount }}\n \n \n {{ \"accepted\" | i18n }}\n {{\n acceptedCount\n }}\n \n
\n
\n \n \n
\n
\n \n \n \n
\n \n \n \n {{ \"confirmSelected\" | i18n }}\n \n \n
\n \n \n
\n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noUsersInList\" | i18n }}

\n \n \n {{ \"providerUsersNeedConfirmed\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ u.email }}\n {{\n \"invited\" | i18n\n }}\n {{\n \"accepted\" | i18n\n }}\n {{ u.name }}\n \n \n \n \n {{ \"userUsingTwoStep\" | i18n }}\n \n \n \n {{ \"providerAdmin\" | i18n }}\n {{ \"serviceUser\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"groups\" | i18n }}\n \n \n \n {{ \"eventLogs\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n \n \n \n \n
\n\n\n\n\n\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { PermissionsApi } from \"jslib-common/models/api/permissionsApi\";\nimport { ProviderUserInviteRequest } from \"jslib-common/models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"jslib-common/models/request/provider/providerUserUpdateRequest\";\n\n@Component({\n selector: \"provider-user-add-edit\",\n templateUrl: \"user-add-edit.component.html\",\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() providerUserId: string;\n @Input() providerId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n emails: string;\n type: ProviderUserType = ProviderUserType.ServiceUser;\n permissions = new PermissionsApi();\n showCustom = false;\n access: \"all\" | \"selected\" = \"selected\";\n formPromise: Promise;\n deletePromise: Promise;\n userType = ProviderUserType;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.providerUserId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editUser\");\n try {\n const user = await this.apiService.getProviderUser(this.providerId, this.providerUserId);\n this.type = user.type;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteUser\");\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new ProviderUserUpdateRequest();\n request.type = this.type;\n this.formPromise = this.apiService.putProviderUser(\n this.providerId,\n this.providerUserId,\n request\n );\n } else {\n const request = new ProviderUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.type = this.type;\n this.formPromise = this.apiService.postProviderUserInvite(this.providerId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeUserConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteProviderUser(this.providerId, this.providerUserId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.name)\n );\n this.onDeletedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"providerInviteUserDesc\" | i18n }}

\n
\n \n \n {{ \"inviteMultipleEmailDesc\" | i18n: \"20\" }}\n
\n
\n

\n {{ \"userType\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"providers-layout\",\n templateUrl: \"providers-layout.component.html\",\n})\nexport class ProvidersLayoutComponent {\n provider: Provider;\n private providerId: string;\n\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n await this.load();\n });\n }\n\n async load() {\n this.provider = await this.providerService.get(this.providerId);\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showSettingsTab;\n }\n\n get showManageTab() {\n return this.provider.canManageUsers || this.provider.canAccessEventLogs;\n }\n\n get showSettingsTab() {\n return this.provider.isProviderAdmin;\n }\n\n get manageRoute(): string {\n switch (true) {\n case this.provider.canManageUsers:\n return \"manage/people\";\n case this.provider.canAccessEventLogs:\n return \"manage/events\";\n }\n }\n}\n","\n
\n
\n
\n
\n \n
\n {{ provider.name }}\n {{ \"provider\" | i18n }}\n
\n
\n
\n \n {{ \"providerIsDisabled\" | i18n }}\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { FrontendLayoutComponent } from \"src/app/layouts/frontend-layout.component\";\nimport { ProvidersComponent } from \"src/app/providers/providers.component\";\n\nimport { ClientsComponent } from \"./clients/clients.component\";\nimport { CreateOrganizationComponent } from \"./clients/create-organization.component\";\nimport { PermissionsGuard } from \"./guards/provider-type.guard\";\nimport { ProviderGuard } from \"./guards/provider.guard\";\nimport { AcceptProviderComponent } from \"./manage/accept-provider.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { ProvidersLayoutComponent } from \"./providers-layout.component\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SetupProviderComponent } from \"./setup/setup-provider.component\";\nimport { SetupComponent } from \"./setup/setup.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n canActivate: [AuthGuard],\n component: ProvidersComponent,\n },\n {\n path: \"\",\n component: FrontendLayoutComponent,\n children: [\n {\n path: \"setup-provider\",\n component: SetupProviderComponent,\n data: { titleId: \"setupProvider\" },\n },\n {\n path: \"accept-provider\",\n component: AcceptProviderComponent,\n data: { titleId: \"acceptProvider\" },\n },\n ],\n },\n {\n path: \"\",\n canActivate: [AuthGuard],\n children: [\n {\n path: \"setup\",\n component: SetupComponent,\n },\n {\n path: \":providerId\",\n component: ProvidersLayoutComponent,\n canActivate: [ProviderGuard],\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"clients\" },\n { path: \"clients/create\", component: CreateOrganizationComponent },\n { path: \"clients\", component: ClientsComponent, data: { titleId: \"clients\" } },\n {\n path: \"manage\",\n component: ManageComponent,\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"people\",\n },\n {\n path: \"people\",\n component: PeopleComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"people\",\n permissions: [Permissions.ManageUsers],\n },\n },\n {\n path: \"events\",\n component: EventsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"eventLogs\",\n permissions: [Permissions.AccessEventLogs],\n },\n },\n ],\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"account\",\n },\n {\n path: \"account\",\n component: AccountComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"myProvider\",\n permissions: [Permissions.ManageProvider],\n },\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProvidersRoutingModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { ComponentFactoryResolver, NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\n\nimport { OssModule } from \"src/app/oss.module\";\n\nimport { AddOrganizationComponent } from \"./clients/add-organization.component\";\nimport { ClientsComponent } from \"./clients/clients.component\";\nimport { CreateOrganizationComponent } from \"./clients/create-organization.component\";\nimport { PermissionsGuard } from \"./guards/provider-type.guard\";\nimport { ProviderGuard } from \"./guards/provider.guard\";\nimport { AcceptProviderComponent } from \"./manage/accept-provider.component\";\nimport { BulkConfirmComponent } from \"./manage/bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./manage/bulk/bulk-remove.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { UserAddEditComponent } from \"./manage/user-add-edit.component\";\nimport { ProvidersLayoutComponent } from \"./providers-layout.component\";\nimport { ProvidersRoutingModule } from \"./providers-routing.module\";\nimport { WebProviderService } from \"./services/webProvider.service\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SetupProviderComponent } from \"./setup/setup-provider.component\";\nimport { SetupComponent } from \"./setup/setup.component\";\n\n@NgModule({\n imports: [CommonModule, FormsModule, OssModule, JslibModule, ProvidersRoutingModule],\n declarations: [\n AcceptProviderComponent,\n AccountComponent,\n AddOrganizationComponent,\n BulkConfirmComponent,\n BulkRemoveComponent,\n ClientsComponent,\n CreateOrganizationComponent,\n EventsComponent,\n ManageComponent,\n PeopleComponent,\n ProvidersLayoutComponent,\n SettingsComponent,\n SetupComponent,\n SetupProviderComponent,\n UserAddEditComponent,\n ],\n providers: [WebProviderService, ProviderGuard, PermissionsGuard],\n})\nexport class ProvidersModule {\n constructor(modalService: ModalService, componentFactoryResolver: ComponentFactoryResolver) {\n modalService.registerComponentFactoryResolver(\n AddOrganizationComponent,\n componentFactoryResolver\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderAddOrganizationRequest } from \"jslib-common/models/request/provider/providerAddOrganizationRequest\";\n\n@Injectable()\nexport class WebProviderService {\n constructor(\n private cryptoService: CryptoService,\n private syncService: SyncService,\n private apiService: ApiService\n ) {}\n\n async addOrganizationToProvider(providerId: string, organizationId: string) {\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const providerKey = await this.cryptoService.getProviderKey(providerId);\n\n const encryptedOrgKey = await this.cryptoService.encrypt(orgKey.key, providerKey);\n\n const request = new ProviderAddOrganizationRequest();\n request.organizationId = organizationId;\n request.key = encryptedOrgKey.encryptedString;\n\n const response = await this.apiService.postProviderAddOrganization(providerId, request);\n await this.syncService.fullSync(true);\n return response;\n }\n\n async detachOrganizastion(providerId: string, organizationId: string): Promise {\n await this.apiService.deleteProviderOrganization(providerId, organizationId);\n await this.syncService.fullSync(true);\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderUpdateRequest } from \"jslib-common/models/request/provider/providerUpdateRequest\";\nimport { ProviderResponse } from \"jslib-common/models/response/provider/providerResponse\";\n\n@Component({\n selector: \"provider-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n selfHosted = false;\n loading = true;\n provider: ProviderResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private providerId: string;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n try {\n this.provider = await this.apiService.getProvider(this.providerId);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new ProviderUpdateRequest();\n request.name = this.provider.name;\n request.businessName = this.provider.businessName;\n request.billingEmail = this.provider.billingEmail;\n\n this.formPromise = this.apiService.putProvider(this.providerId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"providerUpdated\"));\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n}\n","
\n

{{ \"myProvider\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\n\n@Component({\n selector: \"provider-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent {\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n await this.providerService.get(params.providerId);\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"settings\" | i18n }}
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-setup-provider\",\n templateUrl: \"setup-provider.component.html\",\n})\nexport class SetupProviderComponent extends BaseAcceptComponent {\n failedShortMessage = \"inviteAcceptFailedShort\";\n failedMessage = \"inviteAcceptFailed\";\n\n requiredParameters = [\"providerId\", \"email\", \"token\"];\n\n async authedHandler(qParams: any) {\n this.router.navigate([\"/providers/setup\"], { queryParams: qParams });\n }\n\n async unauthedHandler(qParams: any) {\n // Empty\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"setupProvider\" | i18n }}

\n
\n
\n

{{ \"setupProviderLoginDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderSetupRequest } from \"jslib-common/models/request/provider/providerSetupRequest\";\n\n@Component({\n selector: \"provider-setup\",\n templateUrl: \"setup.component.html\",\n})\nexport class SetupComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n formPromise: Promise;\n\n providerId: string;\n token: string;\n name: string;\n billingEmail: string;\n\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private syncService: SyncService,\n private validationService: ValidationService\n ) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const error = qParams.providerId == null || qParams.email == null || qParams.token == null;\n\n if (error) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"emergencyInviteAcceptFailed\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/\"]);\n return;\n }\n\n this.providerId = qParams.providerId;\n this.token = qParams.token;\n\n // Check if provider exists, redirect if it does\n try {\n const provider = await this.apiService.getProvider(this.providerId);\n if (provider.name != null) {\n this.router.navigate([\"/providers\", provider.id], { replaceUrl: true });\n }\n } catch (e) {\n this.validationService.showError(e);\n this.router.navigate([\"/\"]);\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit();\n await this.formPromise;\n this.formPromise = null;\n }\n\n async doSubmit() {\n try {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n\n const request = new ProviderSetupRequest();\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.token = this.token;\n request.key = key;\n\n const provider = await this.apiService.postProviderSetup(this.providerId, request);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"providerSetup\"));\n await this.syncService.fullSync(true);\n\n this.router.navigate([\"/providers\", provider.id]);\n } catch (e) {\n this.validationService.showError(e);\n }\n }\n}\n","\n
\n
\n

{{ \"setupProvider\" | i18n }}

\n
\n

{{ \"setupProviderDesc\" | i18n }}

\n\n
\n

{{ \"generalInformation\" | i18n }}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n \n \n
\n
\n
\n\n","import { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\nimport { Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\n\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { FieldType } from \"jslib-common/enums/fieldType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { FieldView } from \"jslib-common/models/view/fieldView\";\n\n@Directive()\nexport class AddEditCustomFieldsComponent implements OnChanges {\n @Input() cipher: CipherView;\n @Input() thisCipherType: CipherType;\n @Input() editMode: boolean;\n\n addFieldType: FieldType = FieldType.Text;\n addFieldTypeOptions: any[];\n addFieldLinkedTypeOption: any;\n linkedFieldOptions: any[] = [];\n\n cipherType = CipherType;\n fieldType = FieldType;\n eventType = EventType;\n\n constructor(private i18nService: I18nService, private eventService: EventService) {\n this.addFieldTypeOptions = [\n { name: i18nService.t(\"cfTypeText\"), value: FieldType.Text },\n { name: i18nService.t(\"cfTypeHidden\"), value: FieldType.Hidden },\n { name: i18nService.t(\"cfTypeBoolean\"), value: FieldType.Boolean },\n ];\n this.addFieldLinkedTypeOption = {\n name: this.i18nService.t(\"cfTypeLinked\"),\n value: FieldType.Linked,\n };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.thisCipherType != null) {\n this.setLinkedFieldOptions();\n\n if (!changes.thisCipherType.firstChange) {\n this.resetCipherLinkedFields();\n }\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n\n if (f.type === FieldType.Linked) {\n f.linkedId = this.linkedFieldOptions[0].value;\n }\n\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = field as any;\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipher.id);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n private setLinkedFieldOptions() {\n if (this.cipher.linkedFieldOptions == null) {\n return;\n }\n\n const options: any = [];\n this.cipher.linkedFieldOptions.forEach((linkedFieldOption, id) =>\n options.push({ name: this.i18nService.t(linkedFieldOption.i18nKey), value: id })\n );\n this.linkedFieldOptions = options.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n private resetCipherLinkedFields() {\n if (this.cipher.fields == null || this.cipher.fields.length === 0) {\n return;\n }\n\n // Delete any Linked custom fields if the item type does not support them\n if (this.cipher.linkedFieldOptions == null) {\n this.cipher.fields = this.cipher.fields.filter((f) => f.type !== FieldType.Linked);\n return;\n }\n\n this.cipher.fields\n .filter((f) => f.type === FieldType.Linked)\n .forEach((f) => (f.linkedId = this.linkedFieldOptions[0].value));\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SecureNoteType } from \"jslib-common/enums/secureNoteType\";\nimport { UriMatchType } from \"jslib-common/enums/uriMatchType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CardView } from \"jslib-common/models/view/cardView\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\nimport { IdentityView } from \"jslib-common/models/view/identityView\";\nimport { LoginUriView } from \"jslib-common/models/view/loginUriView\";\nimport { LoginView } from \"jslib-common/models/view/loginView\";\nimport { SecureNoteView } from \"jslib-common/models/view/secureNoteView\";\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n @Output() onGenerateUsername = new EventEmitter();\n\n editMode = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword = false;\n showCardNumber = false;\n showCardCode = false;\n cipherType = CipherType;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n autofillOnPageLoadOptions: any[];\n currentDate = new Date();\n allowPersonal = true;\n reprompt = false;\n canUseReprompt = true;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(\n protected cipherService: CipherService,\n protected folderService: FolderService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService,\n protected stateService: StateService,\n protected collectionService: CollectionService,\n protected messagingService: MessagingService,\n protected eventService: EventService,\n protected policyService: PolicyService,\n private logService: LogService,\n protected passwordRepromptService: PasswordRepromptService,\n private organizationService: OrganizationService\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"typeLogin\"), value: CipherType.Login },\n { name: i18nService.t(\"typeCard\"), value: CipherType.Card },\n { name: i18nService.t(\"typeIdentity\"), value: CipherType.Identity },\n { name: i18nService.t(\"typeSecureNote\"), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: \"Visa\", value: \"Visa\" },\n { name: \"Mastercard\", value: \"Mastercard\" },\n { name: \"American Express\", value: \"Amex\" },\n { name: \"Discover\", value: \"Discover\" },\n { name: \"Diners Club\", value: \"Diners Club\" },\n { name: \"JCB\", value: \"JCB\" },\n { name: \"Maestro\", value: \"Maestro\" },\n { name: \"UnionPay\", value: \"UnionPay\" },\n { name: i18nService.t(\"other\"), value: \"Other\" },\n ];\n this.cardExpMonthOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: \"01 - \" + i18nService.t(\"january\"), value: \"1\" },\n { name: \"02 - \" + i18nService.t(\"february\"), value: \"2\" },\n { name: \"03 - \" + i18nService.t(\"march\"), value: \"3\" },\n { name: \"04 - \" + i18nService.t(\"april\"), value: \"4\" },\n { name: \"05 - \" + i18nService.t(\"may\"), value: \"5\" },\n { name: \"06 - \" + i18nService.t(\"june\"), value: \"6\" },\n { name: \"07 - \" + i18nService.t(\"july\"), value: \"7\" },\n { name: \"08 - \" + i18nService.t(\"august\"), value: \"8\" },\n { name: \"09 - \" + i18nService.t(\"september\"), value: \"9\" },\n { name: \"10 - \" + i18nService.t(\"october\"), value: \"10\" },\n { name: \"11 - \" + i18nService.t(\"november\"), value: \"11\" },\n { name: \"12 - \" + i18nService.t(\"december\"), value: \"12\" },\n ];\n this.identityTitleOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: i18nService.t(\"mr\"), value: i18nService.t(\"mr\") },\n { name: i18nService.t(\"mrs\"), value: i18nService.t(\"mrs\") },\n { name: i18nService.t(\"ms\"), value: i18nService.t(\"ms\") },\n { name: i18nService.t(\"dr\"), value: i18nService.t(\"dr\") },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t(\"defaultMatchDetection\"), value: null },\n { name: i18nService.t(\"baseDomain\"), value: UriMatchType.Domain },\n { name: i18nService.t(\"host\"), value: UriMatchType.Host },\n { name: i18nService.t(\"startsWith\"), value: UriMatchType.StartsWith },\n { name: i18nService.t(\"regEx\"), value: UriMatchType.RegularExpression },\n { name: i18nService.t(\"exact\"), value: UriMatchType.Exact },\n { name: i18nService.t(\"never\"), value: UriMatchType.Never },\n ];\n this.autofillOnPageLoadOptions = [\n { name: i18nService.t(\"autoFillOnPageLoadUseDefault\"), value: null },\n { name: i18nService.t(\"autoFillOnPageLoadYes\"), value: true },\n { name: i18nService.t(\"autoFillOnPageLoadNo\"), value: false },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n if (this.ownershipOptions.length) {\n this.ownershipOptions = [];\n }\n if (await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)) {\n this.allowPersonal = false;\n } else {\n const myEmail = await this.stateService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n }\n\n const orgs = await this.organizationService.getAll();\n orgs.sort(Utils.getSortFunction(this.i18nService, \"name\")).forEach((o) => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n }\n });\n if (!this.allowPersonal) {\n this.organizationId = this.ownershipOptions[0].value;\n }\n\n this.writeableCollections = await this.loadCollections();\n\n this.canUseReprompt = await this.passwordRepromptService.enabled();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t(\"addItem\");\n } else {\n this.title = this.i18nService.t(\"editItem\");\n }\n } else {\n this.title = this.i18nService.t(\"addItem\");\n }\n\n const addEditCipherInfo: any = await this.stateService.getAddEditCipherInfo();\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.setAddEditCipherInfo(null);\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += \" - \" + this.i18nService.t(\"clone\");\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (\n this.collectionIds != null &&\n this.collectionIds.length > 0 &&\n this.collections.length > 0\n ) {\n this.collections.forEach((c) => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n this.reprompt = this.cipher.reprompt !== CipherRepromptType.None;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n if (\n (!this.editMode || this.cloneMode) &&\n !this.allowPersonal &&\n this.cipher.organizationId == null\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"personalOwnershipSubmitError\")\n );\n return false;\n }\n\n if (\n (!this.editMode || this.cloneMode) &&\n this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null &&\n this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === \"\")\n ) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds =\n this.collections == null\n ? []\n : this.collections.filter((c) => (c as any).checked).map((c) => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode && !this.cloneMode ? \"editedItem\" : \"addedItem\")\n );\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? \"editedCipher\" : \"addedCipher\");\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\n this.cipher.isDeleted ? \"permanentlyDeleteItemConfirmation\" : \"deleteItemConfirmation\"\n ),\n this.i18nService.t(\"deleteItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.cipher.isDeleted ? \"permanentlyDeletedItem\" : \"deletedItem\")\n );\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(\n this.cipher.isDeleted ? \"permanentlyDeletedCipher\" : \"deletedCipher\"\n );\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"restoreItemConfirmation\"),\n this.i18nService.t(\"restoreItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItem\"));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send(\"restoredCipher\");\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async generateUsername(): Promise {\n if (this.cipher.login?.username?.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"overwriteUsernameConfirmation\"),\n this.i18nService.t(\"overwriteUsername\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\")\n );\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGenerateUsername.emit();\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login?.password?.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"overwritePasswordConfirmation\"),\n this.i18nService.t(\"overwritePassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\")\n );\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"loginPassword\").focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n async toggleCardNumber() {\n this.showCardNumber = !this.showCardNumber;\n if (this.showCardNumber) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.showCardCode = !this.showCardCode;\n document.getElementById(\"cardCode\").focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = uri as any;\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = uri as any;\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach((c) => ((c as any).checked = false));\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.cipher.organizationId\n );\n const org = await this.organizationService.get(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (\n this.cipher.login == null ||\n this.cipher.login.password == null ||\n this.cipher.login.password === \"\"\n ) {\n return;\n }\n\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast(\n \"warning\",\n null,\n this.i18nService.t(\"passwordExposed\", matches.toString())\n );\n } else {\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"passwordSafe\"));\n }\n }\n\n repromptChanged() {\n this.reprompt = !this.reprompt;\n if (this.reprompt) {\n this.cipher.reprompt = CipherRepromptType.Password;\n } else {\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter((c) => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted\n ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise } = {};\n reuploadPromises: { [id: string]: Promise } = {};\n emergencyAccessId?: string = null;\n\n constructor(\n protected cipherService: CipherService,\n protected i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService,\n protected apiService: ApiService,\n protected win: Window,\n protected logService: LogService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"updateKey\")\n );\n return;\n }\n\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n if (files[0].size > 524288000) {\n // 500 MB\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"maxFileSize\")\n );\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"attachmentSaved\"));\n this.onUploadedAttachment.emit();\n } catch (e) {\n this.logService.error(e);\n }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = \"\";\n fileEl.type = \"file\";\n fileEl.value = \"\";\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteAttachmentConfirmation\"),\n this.i18nService.t(\"deleteAttachment\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedAttachment\"));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = attachment as any;\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"premiumRequiredDesc\")\n );\n return;\n }\n\n let url: string;\n try {\n const attachmentDownloadResponse = await this.apiService.getAttachmentData(\n this.cipher.id,\n attachment.id,\n this.emergencyAccessId\n );\n url = attachmentDownloadResponse.url;\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n url = attachment.url;\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n a.downloading = true;\n const response = await fetch(new Request(url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key =\n attachment.key != null\n ? attachment.key\n : await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"premiumRequiredDesc\"),\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.platformUtilsService.launchUri(\"https://vault.bitwarden.com/#/?premium=purchase\");\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"updateKey\"),\n this.i18nService.t(\"featureUnavailable\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n if (confirmed) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key\"\n );\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = attachment as any;\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key =\n attachment.key != null\n ? attachment.key\n : await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain,\n attachment.fileName,\n decBuf,\n admin\n );\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter((a2) => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"attachmentSaved\")\n );\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { Component, Input, OnChanges, OnInit } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-avatar\",\n template:\n '\",\n})\nexport class AvatarComponent implements OnChanges, OnInit {\n @Input() data: string;\n @Input() email: string;\n @Input() size = 45;\n @Input() charCount = 2;\n @Input() textColor = \"#ffffff\";\n @Input() fontSize = 20;\n @Input() fontWeight = 300;\n @Input() dynamic = false;\n @Input() circle = false;\n\n src: string;\n\n constructor(\n public sanitizer: DomSanitizer,\n private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService\n ) {}\n\n ngOnInit() {\n if (!this.dynamic) {\n this.generate();\n }\n }\n\n ngOnChanges() {\n if (this.dynamic) {\n this.generate();\n }\n }\n\n private async generate() {\n const enableGravatars = await this.stateService.getEnableGravitars();\n if (enableGravatars && this.email != null) {\n const hashBytes = await this.cryptoFunctionService.hash(\n this.email.toLowerCase().trim(),\n \"md5\"\n );\n const hash = Utils.fromBufferToHex(hashBytes).toLowerCase();\n this.src = \"https://www.gravatar.com/avatar/\" + hash + \"?s=\" + this.size + \"&r=pg&d=retro\";\n } else {\n let chars: string = null;\n const upperData = this.data.toUpperCase();\n\n if (this.charCount > 1) {\n chars = this.getFirstLetters(upperData, this.charCount);\n }\n if (chars == null) {\n chars = this.unicodeSafeSubstring(upperData, this.charCount);\n }\n\n // If the chars contain an emoji, only show it.\n if (chars.match(Utils.regexpEmojiPresentation)) {\n chars = chars.match(Utils.regexpEmojiPresentation)[0];\n }\n\n const charObj = this.getCharText(chars);\n const color = this.stringToColor(upperData);\n const svg = this.getSvg(this.size, color);\n svg.appendChild(charObj);\n const html = window.document.createElement(\"div\").appendChild(svg).outerHTML;\n const svgHtml = window.btoa(unescape(encodeURIComponent(html)));\n this.src = \"data:image/svg+xml;base64,\" + svgHtml;\n }\n }\n\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = \"#\";\n for (let i = 0; i < 3; i++) {\n const value = (hash >> (i * 8)) & 0xff;\n color += (\"00\" + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n private getFirstLetters(data: string, count: number): string {\n const parts = data.split(\" \");\n if (parts.length > 1) {\n let text = \"\";\n for (let i = 0; i < count; i++) {\n text += this.unicodeSafeSubstring(parts[i], 1);\n }\n return text;\n }\n return null;\n }\n\n private getSvg(size: number, color: string): HTMLElement {\n const svgTag = window.document.createElement(\"svg\");\n svgTag.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n svgTag.setAttribute(\"pointer-events\", \"none\");\n svgTag.setAttribute(\"width\", size.toString());\n svgTag.setAttribute(\"height\", size.toString());\n svgTag.style.backgroundColor = color;\n svgTag.style.width = size + \"px\";\n svgTag.style.height = size + \"px\";\n return svgTag;\n }\n\n private getCharText(character: string): HTMLElement {\n const textTag = window.document.createElement(\"text\");\n textTag.setAttribute(\"text-anchor\", \"middle\");\n textTag.setAttribute(\"y\", \"50%\");\n textTag.setAttribute(\"x\", \"50%\");\n textTag.setAttribute(\"dy\", \"0.35em\");\n textTag.setAttribute(\"pointer-events\", \"auto\");\n textTag.setAttribute(\"fill\", this.textColor);\n textTag.setAttribute(\n \"font-family\",\n '\"Open Sans\",\"Helvetica Neue\",Helvetica,Arial,' +\n 'sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"'\n );\n textTag.textContent = character;\n textTag.style.fontWeight = this.fontWeight.toString();\n textTag.style.fontSize = this.fontSize + \"px\";\n return textTag;\n }\n\n private unicodeSafeSubstring(str: string, count: number) {\n const characters = str.match(/./gu);\n return characters != null ? characters.slice(0, count).join(\"\") : \"\";\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\n\n@Component({\n selector: \"app-callout\",\n templateUrl: \"callout.component.html\",\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = \"info\";\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions;\n @Input() enforcedPolicyMessage: string;\n @Input() useAlertRole = false;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.enforcedPolicyMessage === undefined) {\n this.enforcedPolicyMessage = this.i18nService.t(\"masterPasswordPolicyInEffect\");\n }\n\n if (this.type === \"warning\" || this.type === \"danger\") {\n if (this.type === \"danger\") {\n this.calloutStyle = \"danger\";\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"warning\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-exclamation-triangle\";\n }\n } else if (this.type === \"error\") {\n this.calloutStyle = \"danger\";\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"error\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-error\";\n }\n } else if (this.type === \"tip\") {\n this.calloutStyle = \"success\";\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"tip\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-lightbulb\";\n }\n }\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return \"\";\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t(\"strong\");\n break;\n case 3:\n str = this.i18nService.t(\"good\");\n break;\n default:\n str = this.i18nService.t(\"weak\");\n break;\n }\n return str + \" (\" + this.enforcedPolicyOptions.minComplexity + \")\";\n }\n}\n","\n

\n \n {{ title }}\n

\n
\n {{ enforcedPolicyMessage }}\n
    \n
  • 0\">\n {{ \"policyInEffectMinComplexity\" | i18n: getPasswordScoreAlertDisplay() }}\n
  • \n
  • 0\">\n {{ \"policyInEffectMinLength\" | i18n: enforcedPolicyOptions?.minLength.toString() }}\n
  • \n
  • \n {{ \"policyInEffectUppercase\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectLowercase\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectNumbers\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectSpecial\" | i18n: \"!@#$%^&*\" }}\n
  • \n
\n
\n \n\n","import { Directive, Input } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CaptchaIFrame } from \"jslib-common/misc/captcha_iframe\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Directive()\nexport abstract class CaptchaProtectedComponent {\n @Input() captchaSiteKey: string = null;\n captchaToken: string = null;\n captcha: CaptchaIFrame;\n\n constructor(\n protected environmentService: EnvironmentService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService\n ) {}\n\n async setupCaptcha() {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n\n this.captcha = new CaptchaIFrame(\n window,\n webVaultUrl,\n this.i18nService,\n (token: string) => {\n this.captchaToken = token;\n },\n (error: string) => {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), error);\n },\n (info: string) => {\n this.platformUtilsService.showToast(\"info\", this.i18nService.t(\"info\"), info);\n }\n );\n }\n\n showCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n protected handleCaptchaRequired(response: { captchaSiteKey: string }): boolean {\n if (Utils.isNullOrWhitespace(response.captchaSiteKey)) {\n return false;\n }\n\n this.captchaSiteKey = response.captchaSiteKey;\n this.captcha.init(response.captchaSiteKey);\n return true;\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { KdfType } from \"jslib-common/enums/kdfType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\n\n@Directive()\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(\n protected i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected messagingService: MessagingService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected policyService: PolicyService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.email = await this.stateService.getEmail();\n this.enforcedPolicyOptions ??= await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n async submit() {\n if (!(await this.strongPassword())) {\n return;\n }\n\n if (!(await this.setupSubmitActions())) {\n return;\n }\n\n const email = await this.stateService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.stateService.getKdfType();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.stateService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n email.trim().toLowerCase(),\n this.kdf,\n this.kdfIterations\n );\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, EncString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassDoesntMatch\")\n );\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"logOutConfirmation\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.messagingService.send(\"logout\");\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n return userInput;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded = false;\n ciphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted = false;\n\n protected searchPending = false;\n\n private searchTimeout: any = null;\n\n constructor(protected searchService: SearchService) {}\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.loaded = false;\n await this.load(filter, deleted);\n }\n\n async refresh() {\n await this.reload(this.filter, this.deleted);\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null, indexedCiphers?: CipherView[]) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n await this.doSearch(indexedCiphers);\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n await this.doSearch(indexedCiphers);\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n protected deletedFilter: (cipher: CipherView) => boolean = (c) => c.isDeleted === this.deleted;\n\n protected async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(\n this.searchText,\n [this.filter, this.deletedFilter],\n indexedCiphers\n );\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(\n protected collectionService: CollectionService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected cipherService: CipherService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach((c) => ((c as any).checked = false));\n if (this.collectionIds != null) {\n this.collections.forEach((c) => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectOneCollection\")\n );\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"editedItem\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(\n (c) => !c.readOnly && c.organizationId === this.cipher.organizationId\n );\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-export-scope-callout\",\n templateUrl: \"export-scope-callout.component.html\",\n})\nexport class ExportScopeCalloutComponent implements OnInit {\n @Input() organizationId: string = null;\n\n show = false;\n scopeConfig: {\n title: string;\n description: string;\n scopeIdentifier: string;\n };\n\n constructor(\n protected organizationService: OrganizationService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit(): Promise {\n if (!(await this.organizationService.hasOrganizations())) {\n return;\n }\n this.scopeConfig =\n this.organizationId != null\n ? {\n title: \"exportingOrganizationVaultTitle\",\n description: \"exportingOrganizationVaultDescription\",\n scopeIdentifier: (await this.organizationService.get(this.organizationId)).name,\n }\n : {\n title: \"exportingPersonalVaultTitle\",\n description: \"exportingPersonalVaultDescription\",\n scopeIdentifier: await this.stateService.getEmail(),\n };\n this.show = true;\n }\n}\n","\n \n {{ scopeConfig.description | i18n: scopeConfig.scopeIdentifier }}\n \n\n","import { Directive, EventEmitter, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\n@Directive()\nexport class ExportComponent implements OnInit {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n disabledByPolicy = false;\n\n exportForm = this.formBuilder.group({\n format: [\"json\"],\n secret: [\"\"],\n });\n\n formatOptions = [\n { name: \".json\", value: \"json\" },\n { name: \".csv\", value: \"csv\" },\n { name: \".json (Encrypted)\", value: \"encrypted_json\" },\n ];\n\n constructor(\n protected cryptoService: CryptoService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected exportService: ExportService,\n protected eventService: EventService,\n private policyService: PolicyService,\n protected win: Window,\n private logService: LogService,\n private userVerificationService: UserVerificationService,\n private formBuilder: FormBuilder\n ) {}\n\n async ngOnInit() {\n await this.checkExportDisabled();\n }\n\n async checkExportDisabled() {\n this.disabledByPolicy = await this.policyService.policyAppliesToUser(\n PolicyType.DisablePersonalVaultExport\n );\n if (this.disabledByPolicy) {\n this.exportForm.disable();\n }\n }\n\n get encryptedFormat() {\n return this.format === \"encrypted_json\";\n }\n\n async submit() {\n if (this.disabledByPolicy) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"personalVaultExportPolicyInEffect\")\n );\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const secret = this.exportForm.get(\"secret\").value;\n try {\n await this.userVerificationService.verifyUser(secret);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n return;\n }\n\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n this.exportForm.get(\"secret\").setValue(\"\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n \"

\" +\n this.i18nService.t(\"encExportKeyWarningDesc\") +\n \"

\" +\n this.i18nService.t(\"encExportAccountWarningDesc\"),\n this.i18nService.t(\"confirmVaultExport\"),\n this.i18nService.t(\"exportVault\"),\n this.i18nService.t(\"cancel\"),\n \"warning\",\n true\n );\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t(\"exportWarningDesc\"),\n this.i18nService.t(\"confirmVaultExport\"),\n this.i18nService.t(\"exportVault\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n }\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === \"encrypted_json\") {\n if (prefix == null) {\n prefix = \"encrypted\";\n } else {\n prefix = \"encrypted_\" + prefix;\n }\n extension = \"json\";\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n get format() {\n return this.exportForm.get(\"format\").value;\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: \"text/plain\" }, fileName);\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(\n protected folderService: FolderService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedFolder\" : \"addedFolder\")\n );\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteFolderConfirmation\"),\n this.i18nService.t(\"deleteFolder\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedFolder\"));\n this.onDeletedFolder.emit(this.folder);\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editFolder\");\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t(\"addFolder\");\n }\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UsernameGenerationService } from \"jslib-common/abstractions/usernameGeneration.service\";\nimport { PasswordGeneratorPolicyOptions } from \"jslib-common/models/domain/passwordGeneratorPolicyOptions\";\n\n@Directive()\nexport class GeneratorComponent implements OnInit {\n @Input() comingFromAddEdit = false;\n @Input() type: string;\n @Output() onSelected = new EventEmitter();\n\n usernameGeneratingPromise: Promise;\n typeOptions: any[];\n passTypeOptions: any[];\n usernameTypeOptions: any[];\n subaddressOptions: any[];\n catchallOptions: any[];\n forwardOptions: any[];\n usernameOptions: any = {};\n passwordOptions: any = {};\n username = \"-\";\n password = \"-\";\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPasswordPolicyOptions: PasswordGeneratorPolicyOptions;\n usernameWebsite: string = null;\n\n constructor(\n protected passwordGenerationService: PasswordGenerationService,\n protected usernameGenerationService: UsernameGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected stateService: StateService,\n protected i18nService: I18nService,\n protected logService: LogService,\n protected route: ActivatedRoute,\n private win: Window\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"username\"), value: \"username\" },\n ];\n this.passTypeOptions = [\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"passphrase\"), value: \"passphrase\" },\n ];\n this.usernameTypeOptions = [\n {\n name: i18nService.t(\"plusAddressedEmail\"),\n value: \"subaddress\",\n desc: i18nService.t(\"plusAddressedEmailDesc\"),\n },\n {\n name: i18nService.t(\"catchallEmail\"),\n value: \"catchall\",\n desc: i18nService.t(\"catchallEmailDesc\"),\n },\n {\n name: i18nService.t(\"forwardedEmail\"),\n value: \"forwarded\",\n desc: i18nService.t(\"forwardedEmailDesc\"),\n },\n { name: i18nService.t(\"randomWord\"), value: \"word\" },\n ];\n this.subaddressOptions = [{ name: i18nService.t(\"random\"), value: \"random\" }];\n this.catchallOptions = [{ name: i18nService.t(\"random\"), value: \"random\" }];\n this.forwardOptions = [\n { name: \"SimpleLogin\", value: \"simplelogin\" },\n { name: \"AnonAddy\", value: \"anonaddy\" },\n { name: \"Firefox Relay\", value: \"firefoxrelay\" },\n // { name: \"FastMail\", value: \"fastmail\" },\n ];\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const passwordOptionsResponse = await this.passwordGenerationService.getOptions();\n this.passwordOptions = passwordOptionsResponse[0];\n this.enforcedPasswordPolicyOptions = passwordOptionsResponse[1];\n this.avoidAmbiguous = !this.passwordOptions.ambiguous;\n this.passwordOptions.type =\n this.passwordOptions.type === \"passphrase\" ? \"passphrase\" : \"password\";\n\n this.usernameOptions = await this.usernameGenerationService.getOptions();\n if (this.usernameOptions.type == null) {\n this.usernameOptions.type = \"word\";\n }\n if (\n this.usernameOptions.subaddressEmail == null ||\n this.usernameOptions.subaddressEmail === \"\"\n ) {\n this.usernameOptions.subaddressEmail = await this.stateService.getEmail();\n }\n if (this.usernameWebsite == null) {\n this.usernameOptions.subaddressType = this.usernameOptions.catchallType = \"random\";\n } else {\n this.usernameOptions.website = this.usernameWebsite;\n const websiteOption = { name: this.i18nService.t(\"websiteName\"), value: \"website-name\" };\n this.subaddressOptions.push(websiteOption);\n this.catchallOptions.push(websiteOption);\n }\n\n if (this.type !== \"username\" && this.type !== \"password\") {\n if (qParams.type === \"username\" || qParams.type === \"password\") {\n this.type = qParams.type;\n } else {\n const generatorOptions = await this.stateService.getGeneratorOptions();\n this.type = generatorOptions?.type ?? \"password\";\n }\n }\n if (this.regenerateWithoutButtonPress()) {\n await this.regenerate();\n }\n });\n }\n\n async typeChanged() {\n await this.stateService.setGeneratorOptions({ type: this.type });\n if (this.regenerateWithoutButtonPress()) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n if (this.type === \"password\") {\n await this.regeneratePassword();\n } else if (this.type === \"username\") {\n await this.regenerateUsername();\n }\n }\n\n async sliderChanged() {\n this.savePasswordOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderInput() {\n this.normalizePasswordOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.passwordOptions);\n }\n\n async savePasswordOptions(regenerate = true) {\n this.normalizePasswordOptions();\n await this.passwordGenerationService.saveOptions(this.passwordOptions);\n\n if (regenerate && this.regenerateWithoutButtonPress()) {\n await this.regeneratePassword();\n }\n }\n\n async saveUsernameOptions(regenerate = true) {\n await this.usernameGenerationService.saveOptions(this.usernameOptions);\n if (this.usernameOptions.type === \"forwarded\") {\n this.username = \"-\";\n }\n if (regenerate && this.regenerateWithoutButtonPress()) {\n await this.regenerateUsername();\n }\n }\n\n async regeneratePassword() {\n this.password = await this.passwordGenerationService.generatePassword(this.passwordOptions);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n regenerateUsername() {\n return this.generateUsername();\n }\n\n async generateUsername() {\n try {\n this.usernameGeneratingPromise = this.usernameGenerationService.generateUsername(\n this.usernameOptions\n );\n this.username = await this.usernameGeneratingPromise;\n if (this.username === \"\" || this.username === null) {\n this.username = \"-\";\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n copy() {\n const password = this.type === \"password\";\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(\n password ? this.password : this.username,\n copyOptions\n );\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(password ? \"password\" : \"username\"))\n );\n }\n\n select() {\n this.onSelected.emit(this.type === \"password\" ? this.password : this.username);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n regenerateWithoutButtonPress() {\n return this.type !== \"username\" || this.usernameOptions.type !== \"forwarded\";\n }\n\n private normalizePasswordOptions() {\n // Application level normalize options depedent on class variables\n this.passwordOptions.ambiguous = !this.avoidAmbiguous;\n\n if (\n !this.passwordOptions.uppercase &&\n !this.passwordOptions.lowercase &&\n !this.passwordOptions.number &&\n !this.passwordOptions.special\n ) {\n this.passwordOptions.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector(\"#lowercase\") as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(\n this.passwordOptions,\n this.enforcedPasswordPolicyOptions\n );\n }\n}\n","import { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PasswordHintRequest } from \"jslib-common/models/request/passwordHintRequest\";\n\nexport class HintComponent {\n email = \"\";\n formPromise: Promise;\n\n protected successRoute = \"login\";\n protected onSuccessfulSubmit: () => void;\n\n constructor(\n protected router: Router,\n protected i18nService: I18nService,\n protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"masterPassSent\"));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { Component, Input, OnChanges } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n/**\n * Provides a mapping from supported card brands to\n * the filenames of icon that should be present in images/cards folder of clients.\n */\nconst cardIcons: Record = {\n Visa: \"card-visa\",\n Mastercard: \"card-mastercard\",\n Amex: \"card-amex\",\n Discover: \"card-discover\",\n \"Diners Club\": \"card-diners-club\",\n JCB: \"card-jcb\",\n Maestro: \"card-maestro\",\n UnionPay: \"card-union-pay\",\n};\n\n@Component({\n selector: \"app-vault-icon\",\n templateUrl: \"icon.component.html\",\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, private stateService: StateService) {\n this.iconsUrl = environmentService.getIconsUrl();\n }\n\n async ngOnChanges() {\n // Components may be re-used when using cdk-virtual-scroll. Which puts the component in a weird state,\n // to avoid this we reset all state variables.\n this.image = null;\n this.fallbackImage = null;\n this.imageEnabled = !(await this.stateService.getDisableFavicon());\n this.load();\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = \"bwi-globe\";\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = \"bwi-sticky-note\";\n break;\n case CipherType.Card:\n this.icon = \"bwi-credit-card\";\n this.setCardIcon();\n break;\n case CipherType.Identity:\n this.icon = \"bwi-id-card\";\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf(\"androidapp://\") === 0) {\n this.icon = \"bwi-android\";\n this.image = null;\n } else if (hostnameUri.indexOf(\"iosapp://\") === 0) {\n this.icon = \"bwi-apple\";\n this.image = null;\n } else if (\n this.imageEnabled &&\n hostnameUri.indexOf(\"://\") === -1 &&\n hostnameUri.indexOf(\".\") > -1\n ) {\n hostnameUri = \"http://\" + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf(\"http\") === 0 && hostnameUri.indexOf(\".\") > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + \"/\" + Utils.getHostname(hostnameUri) + \"/icon.png\";\n this.fallbackImage = \"images/bwi-globe.png\";\n } catch (e) {\n // Ignore error since the fallback icon will be shown if image is null.\n }\n }\n } else {\n this.image = null;\n }\n }\n\n private setCardIcon() {\n const brand = this.cipher.card.brand;\n if (this.imageEnabled && brand in cardIcons) {\n this.icon = \"credit-card-icon \" + cardIcons[brand];\n }\n }\n}\n","

\n \n \n
\n","import { Directive, NgZone, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { HashPurpose } from \"jslib-common/enums/hashPurpose\";\nimport { KeySuffixOptions } from \"jslib-common/enums/keySuffixOptions\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\n\n@Directive()\nexport class LockComponent implements OnInit {\n masterPassword = \"\";\n pin = \"\";\n showPassword = false;\n email: string;\n pinLock = false;\n webVaultHostname = \"\";\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n hideInput: boolean;\n\n protected successRoute = \"vault\";\n protected onSuccessfulSubmit: () => Promise;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(\n protected router: Router,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected cryptoService: CryptoService,\n protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected apiService: ApiService,\n protected logService: LogService,\n private keyConnectorService: KeyConnectorService,\n protected ngZone: NgZone\n ) {}\n\n async ngOnInit() {\n // Load the first and observe updates\n await this.load();\n this.stateService.activeAccount.subscribe(async () => {\n await this.load();\n });\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === \"\")) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"pinRequired\")\n );\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === \"\")) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n const kdf = await this.stateService.getKdfType();\n const kdfIterations = await this.stateService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(\n this.pin,\n this.email,\n kdf,\n kdfIterations,\n await this.stateService.getDecryptedPinProtected()\n );\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.stateService.getProtectedPin();\n const decPin = await this.cryptoService.decryptToUtf8(\n new EncString(protectedPin),\n encKey\n );\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(\n this.pin,\n this.email,\n kdf,\n kdfIterations\n );\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send(\"logout\");\n return;\n }\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidPin\")\n );\n }\n } else {\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n kdf,\n kdfIterations\n );\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n let passwordValid = false;\n\n if (storedKeyHash != null) {\n passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, key);\n } else {\n const request = new SecretVerificationRequest();\n const serverKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.ServerAuthorization\n );\n request.masterPasswordHash = serverKeyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n const localKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n await this.cryptoService.setKeyHash(localKeyHash);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.stateService.getProtectedPin();\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(\n new EncString(protectedPin),\n encKey\n );\n const pinKey = await this.cryptoService.makePinKey(\n decPin,\n this.email,\n kdf,\n kdfIterations\n );\n await this.stateService.setDecryptedPinProtected(\n await this.cryptoService.encrypt(key.key, pinKey)\n );\n }\n await this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidMasterPassword\")\n );\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"logOutConfirmation\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.messagingService.send(\"logout\");\n }\n }\n\n async unlockBiometric(): Promise {\n if (!this.biometricLock) {\n return;\n }\n\n const success = (await this.cryptoService.getKey(KeySuffixOptions.Biometric)) != null;\n\n if (success) {\n await this.doContinue();\n }\n\n return success;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n const input = document.getElementById(this.pinLock ? \"pin\" : \"masterPassword\");\n if (this.ngZone.isStable) {\n input.focus();\n } else {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => input.focus());\n }\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n await this.doContinue();\n }\n\n private async doContinue() {\n await this.stateService.setBiometricLocked(false);\n await this.stateService.setEverBeenUnlocked(true);\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n this.messagingService.send(\"unlocked\");\n if (this.onSuccessfulSubmit != null) {\n await this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n\n private async load() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock =\n (this.pinSet[0] && (await this.stateService.getDecryptedPinProtected()) != null) ||\n this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock =\n (await this.vaultTimeoutService.isBiometricLockSet()) &&\n ((await this.cryptoService.hasKeyStored(KeySuffixOptions.Biometric)) ||\n !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.stateService.getBiometricText();\n this.email = await this.stateService.getEmail();\n const usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.hideInput = usesKeyConnector && !this.pinLock;\n\n // Users with key connector and without biometric or pin has no MP to unlock using\n if (usesKeyConnector && !(this.biometricLock || this.pinLock)) {\n await this.vaultTimeoutService.logOut();\n }\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n const vaultUrl =\n webVaultUrl === \"https://vault.bitwarden.com\" ? \"https://bitwarden.com\" : webVaultUrl;\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n}\n","import { Directive, Input, NgZone, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { PasswordLogInCredentials } from \"jslib-common/models/domain/logInCredentials\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class LoginComponent extends CaptchaProtectedComponent implements OnInit {\n @Input() email = \"\";\n @Input() rememberEmail = true;\n\n masterPassword = \"\";\n showPassword = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = \"2fa\";\n protected successRoute = \"vault\";\n protected forcePasswordResetRoute = \"update-temp-password\";\n protected alwaysRememberEmail = false;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n protected stateService: StateService,\n environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected logService: LogService,\n protected ngZone: NgZone\n ) {\n super(environmentService, i18nService, platformUtilsService);\n }\n\n async ngOnInit() {\n if (this.email == null || this.email === \"\") {\n this.email = await this.stateService.getRememberedEmail();\n if (this.email == null) {\n this.email = \"\";\n }\n }\n if (!this.alwaysRememberEmail) {\n this.rememberEmail = (await this.stateService.getRememberedEmail()) != null;\n }\n if (Utils.isBrowser && !Utils.isNode) {\n this.focusInput();\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n try {\n const credentials = new PasswordLogInCredentials(\n this.email,\n this.masterPassword,\n this.captchaToken,\n null\n );\n this.formPromise = this.authService.logIn(credentials);\n const response = await this.formPromise;\n if (this.rememberEmail || this.alwaysRememberEmail) {\n await this.stateService.setRememberedEmail(this.email);\n } else {\n await this.stateService.setRememberedEmail(null);\n }\n if (this.handleCaptchaRequired(response)) {\n return;\n } else if (response.requiresTwoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n if (this.ngZone.isStable) {\n document.getElementById(\"masterPassword\").focus();\n } else {\n this.ngZone.onStable\n .pipe(take(1))\n .subscribe(() => document.getElementById(\"masterPassword\").focus());\n }\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: \"password\",\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, \"sha256\");\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.stateService.setSsoState(state);\n await this.stateService.setSsoCodeVerifier(ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(\n webUrl +\n \"/#/sso?clientId=\" +\n clientId +\n \"&redirectUri=\" +\n encodeURIComponent(ssoRedirectUri) +\n \"&state=\" +\n state +\n \"&codeChallenge=\" +\n codeChallenge\n );\n }\n\n protected focusInput() {\n document\n .getElementById(this.email == null || this.email === \"\" ? \"email\" : \"masterPassword\")\n .focus();\n }\n}\n","import { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from \"@angular/cdk/a11y\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\n\nimport { ModalService } from \"../../services/modal.service\";\n\nimport { ModalRef } from \"./modal.ref\";\n\n@Component({\n selector: \"app-modal\",\n template: \"\",\n})\nexport class DynamicModalComponent implements AfterViewInit, OnDestroy {\n componentRef: ComponentRef;\n\n @ViewChild(\"modalContent\", { read: ViewContainerRef, static: true })\n modalContentRef: ViewContainerRef;\n\n childComponentType: Type;\n setComponentParameters: (component: any) => void;\n\n private focusTrap: ConfigurableFocusTrap;\n\n constructor(\n private modalService: ModalService,\n private cd: ChangeDetectorRef,\n private el: ElementRef,\n private focusTrapFactory: ConfigurableFocusTrapFactory,\n public modalRef: ModalRef\n ) {}\n\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n if (this.setComponentParameters != null) {\n this.setComponentParameters(this.componentRef.instance);\n }\n this.cd.detectChanges();\n\n this.modalRef.created(this.el.nativeElement);\n this.focusTrap = this.focusTrapFactory.create(\n this.el.nativeElement.querySelector(\".modal-dialog\")\n );\n if (this.el.nativeElement.querySelector(\"[appAutoFocus]\") == null) {\n this.focusTrap.focusFirstTabbableElementWhenReady();\n }\n }\n\n loadChildComponent(componentType: Type) {\n const componentFactory = this.modalService.resolveComponentFactory(componentType);\n\n this.modalContentRef.clear();\n this.componentRef = this.modalContentRef.createComponent(componentFactory);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.focusTrap.destroy();\n }\n\n close() {\n this.modalRef.close();\n }\n\n getFocus() {\n const autoFocusEl = this.el.nativeElement.querySelector(\"[appAutoFocus]\") as HTMLElement;\n autoFocusEl?.focus();\n }\n}\n","import { InjectFlags, InjectionToken, Injector, Type } from \"@angular/core\";\n\nexport class ModalInjector implements Injector {\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap) {}\n\n get(token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags): T;\n get(token: any, notFoundValue?: any, flags?: any) {\n return this._additionalTokens.get(token) ?? this._parentInjector.get(token, notFoundValue);\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { first } from \"rxjs/operators\";\n\nexport class ModalRef {\n onCreated: Observable; // Modal added to the DOM.\n onClose: Observable; // Initiated close.\n onClosed: Observable; // Modal was closed (Remove element from DOM)\n onShow: Observable; // Start showing modal\n onShown: Observable; // Modal is fully visible\n\n private readonly _onCreated = new Subject();\n private readonly _onClose = new Subject();\n private readonly _onClosed = new Subject();\n private readonly _onShow = new Subject();\n private readonly _onShown = new Subject();\n private lastResult: any;\n\n constructor() {\n this.onCreated = this._onCreated.asObservable();\n this.onClose = this._onClose.asObservable();\n this.onClosed = this._onClosed.asObservable();\n this.onShow = this._onShow.asObservable();\n this.onShown = this._onShow.asObservable();\n }\n\n show() {\n this._onShow.next();\n }\n\n shown() {\n this._onShown.next();\n }\n\n close(result?: any) {\n this.lastResult = result;\n this._onClose.next(result);\n }\n\n closed() {\n this._onClosed.next(this.lastResult);\n }\n\n created(el: HTMLElement) {\n this._onCreated.next(el);\n }\n\n onClosedPromise(): Promise {\n return this.onClosed.pipe(first()).toPromise();\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { GeneratedPasswordHistory } from \"jslib-common/models/domain/generatedPasswordHistory\";\n\n@Directive()\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n private win: Window\n ) {}\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"password\"))\n );\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\nimport { ModalRef } from \"./modal/modal.ref\";\n\n/**\n * Used to verify the user's Master Password for the \"Master Password Re-prompt\" feature only.\n * See UserVerificationComponent for any other situation where you need to verify the user's identity.\n */\n@Directive()\nexport class PasswordRepromptComponent {\n showPassword = false;\n masterPassword = \"\";\n\n constructor(\n private modalRef: ModalRef,\n private cryptoService: CryptoService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n }\n\n async submit() {\n if (!(await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null))) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidMasterPassword\")\n );\n return;\n }\n\n this.modalRef.close(true);\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from \"jslib-common/enums/kdfType\";\nimport { KeysRequest } from \"jslib-common/models/request/keysRequest\";\nimport { ReferenceEventRequest } from \"jslib-common/models/request/referenceEventRequest\";\nimport { RegisterRequest } from \"jslib-common/models/request/registerRequest\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class RegisterComponent extends CaptchaProtectedComponent implements OnInit {\n name = \"\";\n email = \"\";\n masterPassword = \"\";\n confirmMasterPassword = \"\";\n hint = \"\";\n showPassword = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = true;\n acceptPolicies = false;\n\n protected successRoute = \"login\";\n private masterPasswordStrengthTimeout: any;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService,\n environmentService: EnvironmentService,\n protected logService: LogService\n ) {\n super(environmentService, i18nService, platformUtilsService);\n this.showTerms = !platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.setupCaptcha();\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return \"success\";\n case 3:\n return \"primary\";\n case 2:\n return \"warning\";\n default:\n return \"danger\";\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t(\"strong\");\n case 3:\n return this.i18nService.t(\"good\");\n case 2:\n return this.i18nService.t(\"weak\");\n default:\n return this.masterPasswordScore != null ? this.i18nService.t(\"weak\") : null;\n }\n }\n\n async submit() {\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"acceptPoliciesError\")\n );\n return;\n }\n\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassDoesntMatch\")\n );\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"hintEqualsPassword\")\n );\n return;\n }\n\n this.name = this.name === \"\" ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = DEFAULT_KDF_TYPE;\n const kdfIterations = DEFAULT_KDF_ITERATIONS;\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n kdf,\n kdfIterations\n );\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(\n this.email,\n this.name,\n hashedPassword,\n this.hint,\n encKey[1].encryptedString,\n kdf,\n kdfIterations,\n this.referenceData,\n this.captchaToken\n );\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.getOrganizationInvitation();\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n try {\n await this.formPromise;\n } catch (e) {\n if (this.handleCaptchaRequired(e)) {\n return;\n } else {\n throw e;\n }\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"newAccountCreated\"));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n if (this.name != null && this.name !== \"\") {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(\" \"));\n }\n return userInput;\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Directive()\nexport class RemovePasswordComponent implements OnInit {\n actionPromise: Promise;\n continuing = false;\n leaving = false;\n\n loading = true;\n organization: Organization;\n email: string;\n\n constructor(\n private router: Router,\n private stateService: StateService,\n private apiService: ApiService,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n async ngOnInit() {\n this.organization = await this.keyConnectorService.getManagingOrganization();\n this.email = await this.stateService.getEmail();\n await this.syncService.fullSync(false);\n this.loading = false;\n }\n\n async convert() {\n this.continuing = true;\n this.actionPromise = this.keyConnectorService.migrateUser();\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedMasterPassword\")\n );\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate([\"\"]);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n }\n }\n\n async leave() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"leaveOrganizationConfirmation\"),\n this.organization.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.leaving = true;\n this.actionPromise = this.apiService.postLeaveOrganization(this.organization.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"leftOrganization\"));\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate([\"\"]);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e);\n }\n }\n}\n","import { DatePipe } from \"@angular/common\";\nimport { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { EncArrayBuffer } from \"jslib-common/models/domain/encArrayBuffer\";\nimport { Send } from \"jslib-common/models/domain/send\";\nimport { SendFileView } from \"jslib-common/models/view/sendFileView\";\nimport { SendTextView } from \"jslib-common/models/view/sendTextView\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n disableHideEmail = false;\n send: SendView;\n deletionDate: string;\n expirationDate: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n canAccessPremium = true;\n emailVerified = true;\n alertShown = false;\n showOptions = false;\n\n private sendLinkBaseUrl: string;\n\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService,\n protected datePipe: DatePipe,\n protected sendService: SendService,\n protected messagingService: MessagingService,\n protected policyService: PolicyService,\n private logService: LogService,\n protected stateService: StateService\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"sendTypeFile\"), value: SendType.File },\n { name: i18nService.t(\"sendTypeText\"), value: SendType.Text },\n ];\n this.sendLinkBaseUrl = this.environmentService.getSendUrl();\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + \"/\" + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(this.editMode ? \"editSend\" : \"createSend\");\n }\n\n setDates(event: { deletionDate: string; expirationDate: string }) {\n this.deletionDate = event.deletionDate;\n this.expirationDate = event.expirationDate;\n }\n\n async load() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n this.disableHideEmail = await this.policyService.policyAppliesToUser(\n PolicyType.SendOptions,\n (p) => p.data.disableHideEmail\n );\n\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n this.emailVerified = await this.stateService.getEmailVerified();\n if (!this.canAccessPremium || !this.emailVerified) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== \"\";\n }\n\n async submit(): Promise {\n if (this.disableSend) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"sendDisabledWarning\")\n );\n return false;\n }\n\n if (this.send.name == null || this.send.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n file = files[0];\n if (files[0].size > 524288000) {\n // 500 MB\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"maxFileSize\")\n );\n return;\n }\n }\n\n if (this.password != null && this.password.trim() === \"\") {\n this.password = null;\n }\n\n this.formPromise = this.encryptSend(file).then(async (encSend) => {\n const uploadPromise = this.sendService.saveWithServer(encSend);\n await uploadPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.onSavedSend.emit(this.send);\n if (this.copyLink && this.link != null) {\n const copySuccess = await this.copyLinkToClipboard(this.link);\n if (copySuccess ?? true) {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedSend\" : \"createdSend\")\n );\n } else {\n await this.platformUtilsService.showDialog(\n this.i18nService.t(this.editMode ? \"editedSend\" : \"createdSend\"),\n null,\n this.i18nService.t(\"ok\"),\n null,\n \"success\",\n null\n );\n await this.copyLinkToClipboard(this.link);\n }\n }\n });\n try {\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n async copyLinkToClipboard(link: string): Promise {\n return Promise.resolve(this.platformUtilsService.copyToClipboard(link));\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteSendConfirmation\"),\n this.i18nService.t(\"deleteSend\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedSend\"));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n typeChanged() {\n if (this.send.type === SendType.File && !this.alertShown) {\n if (!this.canAccessPremium) {\n this.alertShown = true;\n this.messagingService.send(\"premiumRequired\");\n } else if (!this.emailVerified) {\n this.alertShown = true;\n this.messagingService.send(\"emailVerificationRequired\");\n }\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, EncArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate =\n this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"password\").focus();\n }\n}\n","import { DatePipe } from \"@angular/common\";\nimport { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n// Different BrowserPath = different controls.\nenum BrowserPath {\n // Native datetime-locale.\n // We are happy.\n Default = \"default\",\n\n // Native date and time inputs, but no datetime-locale.\n // We use individual date and time inputs and create a datetime programatically on submit.\n Firefox = \"firefox\",\n\n // No native date, time, or datetime-locale inputs.\n // We use a polyfill for dates and a dropdown for times.\n Safari = \"safari\",\n}\n\nenum DateField {\n DeletionDate = \"deletion\",\n ExpriationDate = \"expiration\",\n}\n\n// Value = hours\nenum DatePreset {\n OneHour = 1,\n OneDay = 24,\n TwoDays = 48,\n ThreeDays = 72,\n SevenDays = 168,\n ThirtyDays = 720,\n Custom = 0,\n Never = null,\n}\n\n// TimeOption is used for the dropdown implementation of custom times\n// twelveHour = displayed time; twentyFourHour = time used in logic\ninterface TimeOption {\n twelveHour: string;\n twentyFourHour: string;\n}\n\n@Directive()\nexport class EffluxDatesComponent implements OnInit {\n @Input() readonly initialDeletionDate: Date;\n @Input() readonly initialExpirationDate: Date;\n @Input() readonly editMode: boolean;\n @Input() readonly disabled: boolean;\n\n @Output() datesChanged = new EventEmitter<{ deletionDate: string; expirationDate: string }>();\n\n get browserPath(): BrowserPath {\n if (this.platformUtilsService.isFirefox()) {\n return BrowserPath.Firefox;\n } else if (this.platformUtilsService.isSafari()) {\n return BrowserPath.Safari;\n }\n return BrowserPath.Default;\n }\n\n datesForm = new FormGroup({\n selectedDeletionDatePreset: new FormControl(),\n selectedExpirationDatePreset: new FormControl(),\n defaultDeletionDateTime: new FormControl(),\n defaultExpirationDateTime: new FormControl(),\n fallbackDeletionDate: new FormControl(),\n fallbackDeletionTime: new FormControl(),\n fallbackExpirationDate: new FormControl(),\n fallbackExpirationTime: new FormControl(),\n });\n\n deletionDatePresets: any[] = [\n { name: this.i18nService.t(\"oneHour\"), value: DatePreset.OneHour },\n { name: this.i18nService.t(\"oneDay\"), value: DatePreset.OneDay },\n { name: this.i18nService.t(\"days\", \"2\"), value: DatePreset.TwoDays },\n { name: this.i18nService.t(\"days\", \"3\"), value: DatePreset.ThreeDays },\n { name: this.i18nService.t(\"days\", \"7\"), value: DatePreset.SevenDays },\n { name: this.i18nService.t(\"days\", \"30\"), value: DatePreset.ThirtyDays },\n { name: this.i18nService.t(\"custom\"), value: DatePreset.Custom },\n ];\n\n expirationDatePresets: any[] = [\n { name: this.i18nService.t(\"never\"), value: DatePreset.Never },\n ].concat([...this.deletionDatePresets]);\n\n get selectedDeletionDatePreset(): FormControl {\n return this.datesForm.get(\"selectedDeletionDatePreset\") as FormControl;\n }\n\n get selectedExpirationDatePreset(): FormControl {\n return this.datesForm.get(\"selectedExpirationDatePreset\") as FormControl;\n }\n\n get defaultDeletionDateTime(): FormControl {\n return this.datesForm.get(\"defaultDeletionDateTime\") as FormControl;\n }\n\n get defaultExpirationDateTime(): FormControl {\n return this.datesForm.get(\"defaultExpirationDateTime\") as FormControl;\n }\n\n get fallbackDeletionDate(): FormControl {\n return this.datesForm.get(\"fallbackDeletionDate\") as FormControl;\n }\n\n get fallbackDeletionTime(): FormControl {\n return this.datesForm.get(\"fallbackDeletionTime\") as FormControl;\n }\n\n get fallbackExpirationDate(): FormControl {\n return this.datesForm.get(\"fallbackExpirationDate\") as FormControl;\n }\n\n get fallbackExpirationTime(): FormControl {\n return this.datesForm.get(\"fallbackExpirationTime\") as FormControl;\n }\n\n // Should be able to call these at any time and compute a submitable value\n get formattedDeletionDate(): string {\n switch (this.selectedDeletionDatePreset.value as DatePreset) {\n case DatePreset.Never:\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n return this.formattedDeletionDate;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n return this.fallbackDeletionDate.value + \"T\" + this.fallbackDeletionTime.value;\n default:\n return this.defaultDeletionDateTime.value;\n }\n default: {\n const now = new Date();\n const miliseconds = now.setTime(\n now.getTime() + (this.selectedDeletionDatePreset.value as number) * 60 * 60 * 1000\n );\n return new Date(miliseconds).toString();\n }\n }\n }\n\n get formattedExpirationDate(): string {\n switch (this.selectedExpirationDatePreset.value as DatePreset) {\n case DatePreset.Never:\n return null;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n if (\n (!this.fallbackExpirationDate.value || !this.fallbackExpirationTime.value) &&\n this.editMode\n ) {\n return null;\n }\n return this.fallbackExpirationDate.value + \"T\" + this.fallbackExpirationTime.value;\n default:\n if (!this.defaultExpirationDateTime.value) {\n return null;\n }\n return this.defaultExpirationDateTime.value;\n }\n default: {\n const now = new Date();\n const miliseconds = now.setTime(\n now.getTime() + (this.selectedExpirationDatePreset.value as number) * 60 * 60 * 1000\n );\n return new Date(miliseconds).toString();\n }\n }\n }\n //\n\n get safariDeletionTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.DeletionDate);\n }\n\n get safariExpirationTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.ExpriationDate);\n }\n\n private get nextWeek(): Date {\n const nextWeek = new Date();\n nextWeek.setDate(nextWeek.getDate() + 7);\n return nextWeek;\n }\n\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe\n ) {}\n\n ngOnInit(): void {\n this.setInitialFormValues();\n this.emitDates();\n this.datesForm.valueChanges.subscribe(() => {\n this.emitDates();\n });\n }\n\n onDeletionDatePresetSelect(value: DatePreset) {\n this.selectedDeletionDatePreset.setValue(value);\n }\n\n clearExpiration() {\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackExpirationDate.setValue(null);\n this.fallbackExpirationTime.setValue(null);\n break;\n case BrowserPath.Default:\n this.defaultExpirationDateTime.setValue(null);\n break;\n }\n }\n\n protected emitDates() {\n this.datesChanged.emit({\n deletionDate: this.formattedDeletionDate,\n expirationDate: this.formattedExpirationDate,\n });\n }\n\n protected setInitialFormValues() {\n if (this.editMode) {\n this.selectedDeletionDatePreset.setValue(DatePreset.Custom);\n this.selectedExpirationDatePreset.setValue(DatePreset.Custom);\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0, 5));\n if (this.initialExpirationDate != null) {\n this.fallbackExpirationDate.setValue(\n this.initialExpirationDate.toISOString().slice(0, 10)\n );\n this.fallbackExpirationTime.setValue(\n this.initialExpirationDate.toTimeString().slice(0, 5)\n );\n }\n break;\n case BrowserPath.Default:\n if (this.initialExpirationDate) {\n this.defaultExpirationDateTime.setValue(\n this.datePipe.transform(new Date(this.initialExpirationDate), \"yyyy-MM-ddTHH:mm\")\n );\n }\n this.defaultDeletionDateTime.setValue(\n this.datePipe.transform(new Date(this.initialDeletionDate), \"yyyy-MM-ddTHH:mm\")\n );\n break;\n }\n } else {\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n this.selectedExpirationDatePreset.setValue(DatePreset.Never);\n\n switch (this.browserPath) {\n case BrowserPath.Safari:\n this.fallbackDeletionDate.setValue(this.nextWeek.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(\n this.safariTimePresetOptions(DateField.DeletionDate)[1].twentyFourHour\n );\n break;\n default:\n break;\n }\n }\n }\n\n protected safariTimePresetOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = \"0\" + hour;\n }\n if (m < 10) {\n minutes = \"0\" + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.initialExpirationDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialExpirationDate, \"hh:mm a\"),\n twentyFourHour: this.datePipe.transform(this.initialExpirationDate, \"HH:mm\"),\n };\n return [previousValue, { twelveHour: null, twentyFourHour: null }, ...validTimes];\n } else if (\n field === DateField.DeletionDate &&\n this.initialDeletionDate != null &&\n this.editMode\n ) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialDeletionDate, \"hh:mm a\"),\n twentyFourHour: this.datePipe.transform(this.initialDeletionDate, \"HH:mm\"),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ twelveHour: null, twentyFourHour: null }, ...validTimes];\n }\n }\n}\n","import { Directive, NgZone, OnInit } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\n@Directive()\nexport class SendComponent implements OnInit {\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(\n protected sendService: SendService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService,\n protected ngZone: NgZone,\n protected searchService: SearchService,\n protected policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter((s) => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter((s) => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removePasswordConfirmation\"),\n this.i18nService.t(\"removePassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"removedPassword\"));\n await this.load();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteSendConfirmation\"),\n this.i18nService.t(\"deleteSend\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedSend\"));\n await this.refresh();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n const sendLinkBaseUrl = this.environmentService.getSendUrl();\n const link = sendLinkBaseUrl + s.accessId + \"/\" + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"sendLink\"))\n );\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter((s) => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { HashPurpose } from \"jslib-common/enums/hashPurpose\";\nimport { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from \"jslib-common/enums/kdfType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { KeysRequest } from \"jslib-common/models/request/keysRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { SetPasswordRequest } from \"jslib-common/models/request/setPasswordRequest\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading = true;\n showPassword = false;\n hint = \"\";\n identifier: string = null;\n orgId: string;\n resetPasswordAutoEnroll = false;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = \"vault\";\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n protected router: Router,\n private apiService: ApiService,\n private syncService: SyncService,\n private route: ActivatedRoute,\n stateService: StateService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n // Automatic Enrollment Detection\n if (this.identifier != null) {\n try {\n const response = await this.apiService.getOrganizationAutoEnrollStatus(this.identifier);\n this.orgId = response.id;\n this.resetPasswordAutoEnroll = response.resetPasswordEnabled;\n this.enforcedPolicyOptions =\n await this.policyService.getMasterPasswordPoliciesForInvitedUsers(this.orgId);\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = DEFAULT_KDF_TYPE;\n this.kdfIterations = DEFAULT_KDF_ITERATIONS;\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new SetPasswordRequest(\n masterPasswordHash,\n encKey[1].encryptedString,\n this.hint,\n this.kdf,\n this.kdfIterations,\n this.identifier,\n new KeysRequest(keys[0], keys[1].encryptedString)\n );\n try {\n if (this.resetPasswordAutoEnroll) {\n this.formPromise = this.apiService\n .setPassword(request)\n .then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n return this.apiService.getOrganizationKeys(this.orgId);\n })\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n const userId = await this.stateService.getUserId();\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const userEncKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(\n userEncKey.key,\n publicKey.buffer\n );\n\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n this.orgId,\n userId,\n resetRequest\n );\n });\n } else {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n });\n }\n\n await this.formPromise;\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n private async onSetPasswordSuccess(\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString],\n keys: [string, EncString]\n ) {\n await this.stateService.setKdfType(this.kdf);\n await this.stateService.setKdfIterations(this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n const localKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n await this.cryptoService.setKeyHash(localKeyHash);\n }\n}\n","import { Directive, Input, OnInit } from \"@angular/core\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\n\n@Directive()\nexport class VaultTimeoutInputComponent implements ControlValueAccessor, Validator, OnInit {\n get showCustom() {\n return this.form.get(\"vaultTimeout\").value === VaultTimeoutInputComponent.CUSTOM_VALUE;\n }\n\n static CUSTOM_VALUE = -100;\n\n form = this.formBuilder.group({\n vaultTimeout: [null],\n custom: this.formBuilder.group({\n hours: [null],\n minutes: [null],\n }),\n });\n\n @Input() vaultTimeouts: { name: string; value: number }[];\n vaultTimeoutPolicy: Policy;\n vaultTimeoutPolicyHours: number;\n vaultTimeoutPolicyMinutes: number;\n\n private onChange: (vaultTimeout: number) => void;\n private validatorChange: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private policyService: PolicyService,\n private i18nService: I18nService\n ) {}\n\n async ngOnInit() {\n if (await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout)) {\n const vaultTimeoutPolicy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout);\n\n this.vaultTimeoutPolicy = vaultTimeoutPolicy[0];\n this.vaultTimeoutPolicyHours = Math.floor(this.vaultTimeoutPolicy.data.minutes / 60);\n this.vaultTimeoutPolicyMinutes = this.vaultTimeoutPolicy.data.minutes % 60;\n\n this.vaultTimeouts = this.vaultTimeouts.filter(\n (t) =>\n t.value <= this.vaultTimeoutPolicy.data.minutes &&\n (t.value > 0 || t.value === VaultTimeoutInputComponent.CUSTOM_VALUE) &&\n t.value != null\n );\n this.validatorChange();\n }\n\n this.form.valueChanges.subscribe(async (value) => {\n this.onChange(this.getVaultTimeout(value));\n });\n\n // Assign the previous value to the custom fields\n this.form.get(\"vaultTimeout\").valueChanges.subscribe((value) => {\n if (value !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return;\n }\n\n const current = Math.max(this.form.value.vaultTimeout, 0);\n this.form.patchValue({\n custom: {\n hours: Math.floor(current / 60),\n minutes: current % 60,\n },\n });\n });\n }\n\n ngOnChanges() {\n this.vaultTimeouts.push({\n name: this.i18nService.t(\"custom\"),\n value: VaultTimeoutInputComponent.CUSTOM_VALUE,\n });\n }\n\n getVaultTimeout(value: any) {\n if (value.vaultTimeout !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return value.vaultTimeout;\n }\n\n return value.custom.hours * 60 + value.custom.minutes;\n }\n\n writeValue(value: number): void {\n if (value == null) {\n return;\n }\n\n if (this.vaultTimeouts.every((p) => p.value !== value)) {\n this.form.setValue({\n vaultTimeout: VaultTimeoutInputComponent.CUSTOM_VALUE,\n custom: {\n hours: Math.floor(value / 60),\n minutes: value % 60,\n },\n });\n return;\n }\n\n this.form.patchValue({\n vaultTimeout: value,\n });\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n // Empty\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Empty\n }\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.vaultTimeoutPolicy && this.vaultTimeoutPolicy?.data?.minutes < control.value) {\n return { policyError: true };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorChange = fn;\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(\n protected collectionService: CollectionService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected cipherService: CipherService,\n private logService: LogService,\n protected organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map((c) => c).filter((c) => !c.readOnly);\n const orgs = await this.organizationService.getAll();\n this.organizations = orgs\n .sort(Utils.getSortFunction(this.i18nService, \"name\"))\n .filter((o) => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach((c) => ((c as any).checked = false));\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.organizationId\n );\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectOneCollection\")\n );\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n const orgName =\n this.organizations.find((o) => o.id === this.organizationId)?.name ??\n this.i18nService.t(\"organization\");\n\n try {\n this.formPromise = this.cipherService\n .shareWithServer(cipherView, this.organizationId, selectedCollectionIds)\n .then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"movedItemToOrg\", cipherView.name, orgName)\n );\n });\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { SsoLogInCredentials } from \"jslib-common/models/domain/logInCredentials\";\n\n@Directive()\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = \"2fa\";\n protected successRoute = \"lock\";\n protected changePasswordRoute = \"set-password\";\n protected forcePasswordResetRoute = \"update-temp-password\";\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n protected i18nService: I18nService,\n protected route: ActivatedRoute,\n protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService,\n protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.stateService.getSsoCodeVerifier();\n const state = await this.stateService.getSsoState();\n await this.stateService.setSsoCodeVerifier(null);\n await this.stateService.setSsoState(null);\n if (\n qParams.code != null &&\n codeVerifier != null &&\n state != null &&\n this.checkState(state, qParams.state)\n ) {\n await this.logIn(\n qParams.code,\n codeVerifier,\n this.getOrgIdentifierFromState(qParams.state)\n );\n }\n } else if (\n qParams.clientId != null &&\n qParams.redirectUri != null &&\n qParams.state != null &&\n qParams.codeChallenge != null\n ) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"ssoValidationFailed\"),\n this.i18nService.t(\"ssoIdentifierRequired\")\n );\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(\n returnUri?: string,\n includeUserIdentifier?: boolean\n ): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: \"password\",\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, \"sha256\");\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.stateService.setSsoCodeVerifier(codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.stateService.setSsoState(state);\n\n let authorizeUrl =\n this.environmentService.getIdentityUrl() +\n \"/connect/authorize?\" +\n \"client_id=\" +\n this.clientId +\n \"&redirect_uri=\" +\n encodeURIComponent(this.redirectUri) +\n \"&\" +\n \"response_type=code&scope=api offline_access&\" +\n \"state=\" +\n state +\n \"&code_challenge=\" +\n codeChallenge +\n \"&\" +\n \"code_challenge_method=S256&response_mode=query&\" +\n \"domain_hint=\" +\n encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n const credentials = new SsoLogInCredentials(\n code,\n codeVerifier,\n this.redirectUri,\n orgIdFromState\n );\n this.formPromise = this.authService.logIn(credentials);\n const response = await this.formPromise;\n if (response.requiresTwoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: \"true\",\n },\n });\n }\n } else if (response.resetMasterPassword) {\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n\n // TODO: Key Connector Service should pass this error message to the logout callback instead of displaying here\n if (e.message === \"Key Connector error\") {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"ssoKeyConnectorError\")\n );\n }\n }\n this.loggingIn = false;\n }\n\n private getOrgIdentifierFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split(\"_identifier=\");\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split(\"_identifier=\");\n const checkStateSplit = checkState.split(\"_identifier=\");\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { CommonModule } from \"@angular/common\";\nimport { Component, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport {\n DefaultNoComponentGlobalConfig,\n GlobalConfig,\n Toast as BaseToast,\n ToastPackage,\n ToastrService,\n TOAST_CONFIG,\n} from \"ngx-toastr\";\n\n@Component({\n selector: \"[toast-component2]\",\n template: `\n \n ×\n \n
\n \n
\n
\n
\n {{ title }} [{{ duplicatesCount + 1 }}]\n
\n
\n \n {{ message }}\n \n \n
\n
\n
\n `,\n animations: [\n trigger(\"flyInOut\", [\n state(\"inactive\", style({ opacity: 0 })),\n state(\"active\", style({ opacity: 1 })),\n state(\"removed\", style({ opacity: 0 })),\n transition(\"inactive => active\", animate(\"{{ easeTime }}ms {{ easing }}\")),\n transition(\"active => removed\", animate(\"{{ easeTime }}ms {{ easing }}\")),\n ]),\n ],\n preserveWhitespaces: false,\n})\nexport class BitwardenToast extends BaseToast {\n constructor(protected toastrService: ToastrService, public toastPackage: ToastPackage) {\n super(toastrService, toastPackage);\n }\n}\n\nexport const BitwardenToastGlobalConfig: GlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: BitwardenToast,\n};\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BitwardenToast],\n exports: [BitwardenToast],\n})\nexport class BitwardenToastModule {\n static forRoot(config: Partial = {}): ModuleWithProviders {\n return {\n ngModule: BitwardenToastModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: BitwardenToastGlobalConfig,\n config: config,\n },\n },\n ],\n };\n }\n}\n","import { Directive, EventEmitter, OnInit, Output } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(\n protected twoFactorService: TwoFactorService,\n protected router: Router,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected win: Window\n ) {}\n\n ngOnInit() {\n this.providers = this.twoFactorService.getSupportedProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.launchUri(\"https://bitwarden.com/help/lost-two-step-device/\");\n this.onRecoverSelected.emit();\n }\n}\n","import { Directive, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport * as DuoWebSDK from \"duo_web_sdk\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { WebAuthnIFrame } from \"jslib-common/misc/webauthn_iframe\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { TokenRequestTwoFactor } from \"jslib-common/models/request/identityToken/tokenRequestTwoFactor\";\nimport { TwoFactorEmailRequest } from \"jslib-common/models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviders } from \"jslib-common/services/twoFactor.service\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class TwoFactorComponent extends CaptchaProtectedComponent implements OnInit, OnDestroy {\n token = \"\";\n remember = false;\n webAuthnReady = false;\n webAuthnNewTab = false;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n webAuthnSupported = false;\n webAuthn: WebAuthnIFrame = null;\n title = \"\";\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n get webAuthnAllow(): string {\n return `publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`;\n }\n\n protected loginRoute = \"login\";\n protected successRoute = \"vault\";\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n protected i18nService: I18nService,\n protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService,\n protected win: Window,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected route: ActivatedRoute,\n protected logService: LogService,\n protected twoFactorService: TwoFactorService,\n protected appIdService: AppIdService\n ) {\n super(environmentService, i18nService, platformUtilsService);\n this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.twoFactorService.getProviders() == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n this.route.queryParams.pipe(first()).subscribe((qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n if (this.needsLock) {\n this.successRoute = \"lock\";\n }\n\n if (this.win != null && this.webAuthnSupported) {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n this.webAuthn = new WebAuthnIFrame(\n this.win,\n webVaultUrl,\n this.webAuthnNewTab,\n this.platformUtilsService,\n this.i18nService,\n (token: string) => {\n this.token = token;\n this.submit();\n },\n (error: string) => {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), error);\n },\n (info: string) => {\n if (info === \"ready\") {\n this.webAuthnReady = true;\n }\n }\n );\n }\n\n this.selectedProviderType = this.twoFactorService.getDefaultProvider(this.webAuthnSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupWebAuthn();\n this.webAuthn = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t(\"loginUnavailable\");\n return;\n }\n\n this.cleanupWebAuthn();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.twoFactorService.getProviders().get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.WebAuthn:\n if (!this.webAuthnNewTab) {\n setTimeout(() => {\n this.authWebAuthn();\n }, 500);\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.twoFactorService.getProviders().size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.token == null || this.token === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"verificationCodeRequired\")\n );\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn) {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n } else {\n return;\n }\n } else if (\n this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator\n ) {\n this.token = this.token.replace(\" \", \"\").trim();\n }\n\n try {\n await this.doSubmit();\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && this.webAuthn != null) {\n this.webAuthn.start();\n }\n }\n }\n\n async doSubmit() {\n this.formPromise = this.authService.logInTwoFactor(\n new TokenRequestTwoFactor(this.selectedProviderType, this.token, this.remember),\n this.captchaToken\n );\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.handleCaptchaRequired(response)) {\n return;\n }\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (response.resetMasterPassword) {\n this.successRoute = \"set-password\";\n }\n if (response.forcePasswordReset) {\n this.successRoute = \"update-temp-password\";\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest();\n request.email = this.authService.email;\n request.masterPasswordHash = this.authService.masterPasswordHash;\n request.deviceIdentifier = await this.appIdService.getAppId();\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"verificationCodeEmailSent\", this.twoFactorEmail)\n );\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.emailPromise = null;\n }\n\n authWebAuthn() {\n const providerData = this.twoFactorService.getProviders().get(this.selectedProviderType);\n\n if (!this.webAuthnSupported || this.webAuthn == null) {\n return;\n }\n\n this.webAuthn.init(providerData);\n }\n\n private cleanupWebAuthn() {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n this.webAuthn.cleanup();\n }\n }\n\n get authing(): boolean {\n return (\n this.authService.authingWithPassword() ||\n this.authService.authingWithSso() ||\n this.authService.authingWithApiKey()\n );\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { PasswordRequest } from \"jslib-common/models/request/passwordRequest\";\nimport { Verification } from \"jslib-common/types/verification\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class UpdatePasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword = false;\n currentMasterPassword: string;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(\n protected router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n private apiService: ApiService,\n stateService: StateService,\n private userVerificationService: UserVerificationService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n async cancel() {\n await this.stateService.setOrganizationInvitation(null);\n this.router.navigate([\"/vault\"]);\n }\n\n async setupSubmitActions(): Promise {\n if (this.currentMasterPassword == null || this.currentMasterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n const secret: Verification = {\n type: VerificationType.MasterPassword,\n secret: this.currentMasterPassword,\n };\n try {\n await this.userVerificationService.verifyUser(secret);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n return false;\n }\n\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n try {\n // Create Request\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(\n this.currentMasterPassword,\n null\n );\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n // Update user's password\n this.apiService.postPassword(request);\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"masterPasswordChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send(\"logout\");\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { UpdateTempPasswordRequest } from \"jslib-common/models/request/updateTempPasswordRequest\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class UpdateTempPasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword = false;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n private apiService: ApiService,\n stateService: StateService,\n private syncService: SyncService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n super.ngOnInit();\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n async setupSubmitActions(): Promise {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n this.email = await this.stateService.getEmail();\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n return true;\n }\n\n async submit() {\n // Validation\n if (!(await this.strongPassword())) {\n return;\n }\n\n if (!(await this.setupSubmitActions())) {\n return;\n }\n\n try {\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email.trim().toLowerCase(),\n this.kdf,\n this.kdfIterations\n );\n const newPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n\n // Grab user's current enc key\n const userEncKey = await this.cryptoService.getEncKey();\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n await this.performSubmitActions(newPasswordHash, newKey, newEncKey);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n try {\n // Create request\n const request = new UpdateTempPasswordRequest();\n request.key = encKey[1].encryptedString;\n request.newMasterPasswordHash = masterPasswordHash;\n request.masterPasswordHint = this.hint;\n\n // Update user's password\n this.formPromise = this.apiService.putUpdateTempPassword(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"updatedMasterPassword\")\n );\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send(\"logout\");\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n/**\n * Used for general-purpose user verification throughout the app.\n * Collects the user's master password, or if they are using Key Connector, prompts for an OTP via email.\n * This is exposed to the parent component via the ControlValueAccessor interface (e.g. bind it to a FormControl).\n * Use UserVerificationService to verify the user's input.\n */\n@Component({\n selector: \"app-user-verification\",\n templateUrl: \"user-verification.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UserVerificationComponent,\n },\n ],\n animations: [\n trigger(\"sent\", [\n transition(\":enter\", [style({ opacity: 0 }), animate(\"100ms\", style({ opacity: 1 }))]),\n ]),\n ],\n})\nexport class UserVerificationComponent implements ControlValueAccessor, OnInit {\n usesKeyConnector = false;\n disableRequestOTP = false;\n sentCode = false;\n\n secret = new FormControl(\"\");\n\n private onChange: (value: Verification) => void;\n\n constructor(\n private keyConnectorService: KeyConnectorService,\n private userVerificationService: UserVerificationService\n ) {}\n\n async ngOnInit() {\n this.usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.processChanges(this.secret.value);\n\n this.secret.valueChanges.subscribe((secret: string) => this.processChanges(secret));\n }\n\n async requestOTP() {\n if (this.usesKeyConnector) {\n this.disableRequestOTP = true;\n try {\n await this.userVerificationService.requestOTP();\n this.sentCode = true;\n } finally {\n this.disableRequestOTP = false;\n }\n }\n }\n\n writeValue(obj: any): void {\n this.secret.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n // Not implemented\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disableRequestOTP = isDisabled;\n if (isDisabled) {\n this.secret.disable();\n } else {\n this.secret.enable();\n }\n }\n\n private processChanges(secret: string) {\n if (this.onChange == null) {\n return;\n }\n\n this.onChange({\n type: this.usesKeyConnector ? VerificationType.OTP : VerificationType.MasterPassword,\n secret: secret,\n });\n }\n}\n","\n \n \n {{ \"confirmIdentity\" | i18n }}\n\n\n
\n \n \n {{ \"sendCode\" | i18n }}\n \n \n \n {{ \"codeSent\" | i18n }}\n \n
\n\n
\n \n \n {{ \"confirmIdentity\" | i18n }}\n
\n
\n","import { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\n\n@Directive({\n selector: \"[appA11yInvalid]\",\n})\nexport class A11yInvalidDirective implements OnDestroy, OnInit {\n private sub: Subscription;\n\n constructor(private el: ElementRef, private formControlDirective: NgControl) {}\n\n ngOnInit() {\n this.sub = this.formControlDirective.control.statusChanges.subscribe((status) => {\n if (status === \"INVALID\") {\n this.el.nativeElement.setAttribute(\"aria-invalid\", \"true\");\n } else if (status === \"VALID\") {\n this.el.nativeElement.setAttribute(\"aria-invalid\", \"false\");\n }\n });\n }\n\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\n\n@Directive({\n selector: \"[appA11yTitle]\",\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute(\"title\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"title\", this.title);\n }\n if (!this.el.nativeElement.hasAttribute(\"aria-label\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"aria-label\", this.title);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\n\nimport { ValidationService } from \"../services/validation.service\";\n\n/**\n * Provides error handling, in particular for any error returned by the server in an api call.\n * Attach it to a
element and provide the name of the class property that will hold the api call promise.\n * e.g. \n * Any errors/rejections that occur will be intercepted and displayed as error toasts.\n */\n@Directive({\n selector: \"[appApiAction]\",\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(\n private el: ElementRef,\n private validationService: ValidationService,\n private logService: LogService\n ) {}\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then(\n (response: any) => {\n this.el.nativeElement.loading = false;\n },\n (e: any) => {\n this.el.nativeElement.loading = false;\n\n if ((e as ErrorResponse).captchaRequired) {\n this.logService.error(\"Captcha required error response: \" + e.getSingleMessage());\n return;\n }\n this.logService?.error(`Received API exception: ${e}`);\n this.validationService.showError(e);\n }\n );\n }\n}\n","import { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\nimport { take } from \"rxjs/operators\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Directive({\n selector: \"[appAutofocus]\",\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === \"\" || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef, private ngZone: NgZone) {}\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n if (this.ngZone.isStable) {\n this.el.nativeElement.focus();\n } else {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.el.nativeElement.focus());\n }\n }\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appBlurClick]\",\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {}\n\n @HostListener(\"click\") onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from \"@angular/core\";\n\n@Directive({\n selector: \"[appFallbackSrc]\",\n})\nexport class FallbackSrcDirective {\n @Input(\"appFallbackSrc\") appFallbackSrc: string;\n\n constructor(private el: ElementRef) {}\n\n @HostListener(\"error\") onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"input[appInputStripSpaces]\",\n})\nexport class InputStripSpacesDirective {\n constructor(private el: ElementRef) {}\n\n @HostListener(\"input\") onInput() {\n this.el.nativeElement.value = this.el.nativeElement.value.replace(/ /g, \"\");\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\n\n@Directive({\n selector: \"[appInputVerbatim]\",\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === \"\" || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute(\"autocomplete\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocomplete\", \"off\");\n }\n if (!this.el.nativeElement.hasAttribute(\"autocapitalize\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocapitalize\", \"none\");\n }\n if (!this.el.nativeElement.hasAttribute(\"autocorrect\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocorrect\", \"none\");\n }\n if (!this.el.nativeElement.hasAttribute(\"spellcheck\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"spellcheck\", \"false\");\n }\n if (!this.el.nativeElement.hasAttribute(\"inputmode\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"inputmode\", \"verbatim\");\n }\n }\n}\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\n\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n/**\n * Hides the element if the user has premium.\n */\n@Directive({\n selector: \"[appNotPremium]\",\n})\nexport class NotPremiumDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private stateService: StateService\n ) {}\n\n async ngOnInit(): Promise {\n const premium = await this.stateService.getCanAccessPremium();\n\n if (premium) {\n this.viewContainer.clear();\n } else {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Directive({\n selector: \"[appSelectCopy]\",\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) {}\n\n @HostListener(\"copy\") onCopy() {\n if (window == null) {\n return;\n }\n let copyText = \"\";\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === \"\") {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appStopClick]\",\n})\nexport class StopClickDirective {\n @HostListener(\"click\", [\"$event\"]) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appStopProp]\",\n})\nexport class StopPropDirective {\n @HostListener(\"click\", [\"$event\"]) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Input, Renderer2 } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: \"input[type=checkbox][appTrueFalseValue]\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n @HostListener(\"change\", [\"$event\"])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, \"checked\", true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, \"checked\", false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n /* nothing */\n }\n\n setDisabledState?(isDisabled: boolean): void {\n /* nothing */\n }\n\n private propagateChange = (_: any) => {\n /* nothing */\n };\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private router: Router,\n private messagingService: MessagingService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n this.messagingService.send(\"authBlocked\", { url: routerState.url });\n return false;\n }\n\n if (authStatus === AuthenticationStatus.Locked) {\n if (routerState != null) {\n this.messagingService.send(\"lockedUrl\", { url: routerState.url });\n }\n return this.router.createUrlTree([\"lock\"], { queryParams: { promptBiometric: true } });\n }\n\n if (\n !routerState.url.includes(\"remove-password\") &&\n (await this.keyConnectorService.getConvertAccountRequired())\n ) {\n return this.router.createUrlTree([\"/remove-password\"]);\n }\n\n return true;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class LockGuard implements CanActivate {\n protected homepage = \"vault\";\n protected loginpage = \"login\";\n constructor(private authService: AuthService, private router: Router) {}\n\n async canActivate() {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.Locked) {\n return true;\n }\n\n const redirectUrl =\n authStatus === AuthenticationStatus.LoggedOut ? this.loginpage : this.homepage;\n\n return this.router.createUrlTree([redirectUrl]);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class UnauthGuard implements CanActivate {\n protected homepage = \"vault\";\n constructor(private authService: AuthService, private router: Router) {}\n\n async canActivate() {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n return true;\n }\n\n if (authStatus === AuthenticationStatus.Locked) {\n return this.router.createUrlTree([\"lock\"]);\n }\n\n return this.router.createUrlTree([this.homepage]);\n }\n}\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { AvatarComponent } from \"./components/avatar.component\";\nimport { CalloutComponent } from \"./components/callout.component\";\nimport { ExportScopeCalloutComponent } from \"./components/export-scope-callout.component\";\nimport { IconComponent } from \"./components/icon.component\";\nimport { BitwardenToastModule } from \"./components/toastr.component\";\nimport { A11yInvalidDirective } from \"./directives/a11y-invalid.directive\";\nimport { A11yTitleDirective } from \"./directives/a11y-title.directive\";\nimport { ApiActionDirective } from \"./directives/api-action.directive\";\nimport { AutofocusDirective } from \"./directives/autofocus.directive\";\nimport { BlurClickDirective } from \"./directives/blur-click.directive\";\nimport { BoxRowDirective } from \"./directives/box-row.directive\";\nimport { FallbackSrcDirective } from \"./directives/fallback-src.directive\";\nimport { InputStripSpacesDirective } from \"./directives/input-strip-spaces.directive\";\nimport { InputVerbatimDirective } from \"./directives/input-verbatim.directive\";\nimport { NotPremiumDirective } from \"./directives/not-premium.directive\";\nimport { SelectCopyDirective } from \"./directives/select-copy.directive\";\nimport { StopClickDirective } from \"./directives/stop-click.directive\";\nimport { StopPropDirective } from \"./directives/stop-prop.directive\";\nimport { TrueFalseValueDirective } from \"./directives/true-false-value.directive\";\nimport { ColorPasswordCountPipe } from \"./pipes/color-password-count.pipe\";\nimport { ColorPasswordPipe } from \"./pipes/color-password.pipe\";\nimport { CreditCardNumberPipe } from \"./pipes/credit-card-number.pipe\";\nimport { EllipsisPipe } from \"./pipes/ellipsis.pipe\";\nimport { I18nPipe } from \"./pipes/i18n.pipe\";\nimport { SearchCiphersPipe } from \"./pipes/search-ciphers.pipe\";\nimport { SearchPipe } from \"./pipes/search.pipe\";\nimport { UserNamePipe } from \"./pipes/user-name.pipe\";\n\n@NgModule({\n imports: [\n BitwardenToastModule.forRoot({\n maxOpened: 5,\n autoDismiss: true,\n closeButton: true,\n }),\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n declarations: [\n A11yInvalidDirective,\n A11yTitleDirective,\n ApiActionDirective,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n CalloutComponent,\n ColorPasswordCountPipe,\n ColorPasswordPipe,\n CreditCardNumberPipe,\n EllipsisPipe,\n ExportScopeCalloutComponent,\n FallbackSrcDirective,\n I18nPipe,\n IconComponent,\n InputStripSpacesDirective,\n InputVerbatimDirective,\n NotPremiumDirective,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n StopClickDirective,\n StopPropDirective,\n TrueFalseValueDirective,\n UserNamePipe,\n ],\n exports: [\n A11yInvalidDirective,\n A11yTitleDirective,\n ApiActionDirective,\n AutofocusDirective,\n AvatarComponent,\n BitwardenToastModule,\n BlurClickDirective,\n BoxRowDirective,\n CalloutComponent,\n ColorPasswordCountPipe,\n ColorPasswordPipe,\n CreditCardNumberPipe,\n EllipsisPipe,\n ExportScopeCalloutComponent,\n FallbackSrcDirective,\n I18nPipe,\n IconComponent,\n InputStripSpacesDirective,\n InputVerbatimDirective,\n NotPremiumDirective,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n StopClickDirective,\n StopPropDirective,\n TrueFalseValueDirective,\n UserNamePipe,\n ],\n providers: [CreditCardNumberPipe, DatePipe, I18nPipe, SearchPipe, UserNamePipe],\n})\nexport class JslibModule {}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\nimport { DynamicTreeNode } from \"../models/dynamic-tree-node.model\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class CollectionFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() collectionNodes: DynamicTreeNode;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n readonly collectionsGrouping: TopLevelTreeNode = {\n id: \"collections\",\n name: \"collections\",\n };\n\n get collections() {\n return this.collectionNodes?.fullList;\n }\n\n get nestedCollections() {\n return this.collectionNodes?.nestedList;\n }\n\n get show() {\n return !this.hide && this.collections != null && this.collections.length > 0;\n }\n\n isCollapsed(node: ITreeNodeObject) {\n return this.collapsedFilterNodes.has(node.id);\n }\n\n applyFilter(collection: CollectionView) {\n this.activeFilter.resetFilter();\n this.activeFilter.selectedCollectionId = collection.id;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n async toggleCollapse(node: ITreeNodeObject) {\n this.onNodeCollapseStateChange.emit(node);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"../models/dynamic-tree-node.model\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class FolderFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() folderNodes: DynamicTreeNode;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n\n get folders() {\n return this.folderNodes?.fullList;\n }\n\n get nestedFolders() {\n return this.folderNodes?.nestedList;\n }\n\n readonly foldersGrouping: TopLevelTreeNode = {\n id: \"folders\",\n name: \"folders\",\n };\n\n applyFilter(folder: FolderView) {\n this.activeFilter.resetFilter();\n this.activeFilter.selectedFolder = true;\n this.activeFilter.selectedFolderId = folder.id;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n isCollapsed(node: ITreeNodeObject) {\n return this.collapsedFilterNodes.has(node.id);\n }\n\n async toggleCollapse(node: ITreeNodeObject) {\n this.onNodeCollapseStateChange.emit(node);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\n\nimport { DisplayMode } from \"../models/display-mode\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class OrganizationFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() organizations: Organization[];\n @Input() activeFilter: VaultFilter;\n @Input() activePersonalOwnershipPolicy: boolean;\n @Input() activeSingleOrganizationPolicy: boolean;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n get displayMode(): DisplayMode {\n let displayMode: DisplayMode = \"organizationMember\";\n if (this.organizations == null || this.organizations.length < 1) {\n displayMode = \"noOrganizations\";\n } else if (this.activePersonalOwnershipPolicy && !this.activeSingleOrganizationPolicy) {\n displayMode = \"personalOwnershipPolicy\";\n } else if (!this.activePersonalOwnershipPolicy && this.activeSingleOrganizationPolicy) {\n displayMode = \"singleOrganizationPolicy\";\n } else if (this.activePersonalOwnershipPolicy && this.activeSingleOrganizationPolicy) {\n displayMode = \"singleOrganizationAndPersonalOwnershipPolicies\";\n }\n\n return displayMode;\n }\n\n get hasActiveFilter() {\n return this.activeFilter.myVaultOnly || this.activeFilter.selectedOrganizationId != null;\n }\n\n readonly organizationGrouping: TopLevelTreeNode = {\n id: \"vaults\",\n name: \"allVaults\",\n };\n\n async applyOrganizationFilter(organization: Organization) {\n this.activeFilter.selectedOrganizationId = organization.id;\n this.activeFilter.myVaultOnly = false;\n this.activeFilter.refreshCollectionsAndFolders = true;\n this.applyFilter(this.activeFilter);\n }\n\n async applyMyVaultFilter() {\n this.activeFilter.selectedOrganizationId = null;\n this.activeFilter.myVaultOnly = true;\n this.activeFilter.refreshCollectionsAndFolders = true;\n this.applyFilter(this.activeFilter);\n }\n\n clearFilter() {\n this.activeFilter.myVaultOnly = false;\n this.activeFilter.selectedOrganizationId = null;\n this.applyFilter(new VaultFilter(this.activeFilter));\n }\n\n private applyFilter(filter: VaultFilter) {\n this.onFilterChange.emit(filter);\n }\n\n async toggleCollapse() {\n this.onNodeCollapseStateChange.emit(this.organizationGrouping);\n }\n\n get isCollapsed() {\n return this.collapsedFilterNodes.has(this.organizationGrouping.id);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherStatus } from \"../models/cipher-status.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class StatusFilterComponent {\n @Input() hideFavorites = false;\n @Input() hideTrash = false;\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n @Input() activeFilter: VaultFilter;\n\n get show() {\n return !(this.hideFavorites && this.hideTrash);\n }\n\n applyFilter(cipherStatus: CipherStatus) {\n this.activeFilter.resetFilter();\n this.activeFilter.status = cipherStatus;\n this.onFilterChange.emit(this.activeFilter);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\n\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class TypeFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() selectedCipherType: CipherType = null;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n readonly typesNode: TopLevelTreeNode = {\n id: \"types\",\n name: \"types\",\n };\n\n cipherTypeEnum = CipherType; // used in the template\n\n get isCollapsed() {\n return this.collapsedFilterNodes.has(this.typesNode.id);\n }\n\n applyFilter(cipherType: CipherType) {\n this.activeFilter.resetFilter();\n this.activeFilter.cipherType = cipherType;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n async toggleCollapse() {\n this.onNodeCollapseStateChange.emit(this.typesNode);\n }\n}\n","import { TreeNode } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nexport class DynamicTreeNode {\n fullList: T[];\n nestedList: TreeNode[];\n\n hasId(id: string): boolean {\n return this.fullList != null && this.fullList.filter((i: T) => i.id === id).length > 0;\n }\n\n constructor(init?: Partial>) {\n Object.assign(this, init);\n }\n}\n","import { CipherType } from \"jslib-common/enums/cipherType\";\n\nimport { CipherStatus } from \"./cipher-status.model\";\n\nexport class VaultFilter {\n cipherType?: CipherType;\n selectedCollectionId?: string;\n status?: CipherStatus;\n selectedFolder = false; // This is needed because of how the \"No Folder\" folder works. It has a null id.\n selectedFolderId?: string;\n selectedOrganizationId?: string;\n myVaultOnly = false;\n refreshCollectionsAndFolders = false;\n\n constructor(init?: Partial) {\n Object.assign(this, init);\n }\n\n resetFilter() {\n this.cipherType = null;\n this.status = null;\n this.selectedCollectionId = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n }\n\n resetOrganization() {\n this.myVaultOnly = false;\n this.selectedOrganizationId = null;\n this.resetFilter();\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"./models/dynamic-tree-node.model\";\nimport { VaultFilter } from \"./models/vault-filter.model\";\nimport { VaultFilterService } from \"./vault-filter.service\";\n\n@Directive()\nexport class VaultFilterComponent implements OnInit {\n @Input() activeFilter: VaultFilter = new VaultFilter();\n @Input() hideFolders = false;\n @Input() hideCollections = false;\n @Input() hideFavorites = false;\n @Input() hideTrash = false;\n @Input() hideOrganizations = false;\n\n @Output() onFilterChange = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n\n isLoaded = false;\n collapsedFilterNodes: Set;\n organizations: Organization[];\n activePersonalOwnershipPolicy: boolean;\n activeSingleOrganizationPolicy: boolean;\n collections: DynamicTreeNode;\n folders: DynamicTreeNode;\n\n constructor(protected vaultFilterService: VaultFilterService) {}\n\n get displayCollections() {\n return this.collections?.fullList != null && this.collections.fullList.length > 0;\n }\n\n async ngOnInit(): Promise {\n this.collapsedFilterNodes = await this.vaultFilterService.buildCollapsedFilterNodes();\n this.organizations = await this.vaultFilterService.buildOrganizations();\n if (this.organizations != null && this.organizations.length > 0) {\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n this.folders = await this.vaultFilterService.buildFolders();\n this.collections = await this.initCollections();\n this.isLoaded = true;\n }\n\n // overwritten in web for organization vaults\n async initCollections() {\n return await this.vaultFilterService.buildCollections();\n }\n\n async toggleFilterNodeCollapseState(node: ITreeNodeObject) {\n if (this.collapsedFilterNodes.has(node.id)) {\n this.collapsedFilterNodes.delete(node.id);\n } else {\n this.collapsedFilterNodes.add(node.id);\n }\n await this.vaultFilterService.storeCollapsedFilterNodes(this.collapsedFilterNodes);\n }\n\n async applyFilter(filter: VaultFilter) {\n if (filter.refreshCollectionsAndFolders) {\n await this.reloadCollectionsAndFolders(filter);\n filter = this.pruneInvalidatedFilterSelections(filter);\n }\n this.onFilterChange.emit(filter);\n }\n\n async reloadCollectionsAndFolders(filter: VaultFilter) {\n this.folders = await this.vaultFilterService.buildFolders(filter.selectedOrganizationId);\n this.collections = filter.myVaultOnly\n ? null\n : await this.vaultFilterService.buildCollections(filter.selectedOrganizationId);\n }\n\n async reloadOrganizations() {\n this.organizations = await this.vaultFilterService.buildOrganizations();\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n protected pruneInvalidatedFilterSelections(filter: VaultFilter): VaultFilter {\n filter = this.pruneInvalidFolderSelection(filter);\n filter = this.pruneInvalidCollectionSelection(filter);\n return filter;\n }\n\n protected pruneInvalidFolderSelection(filter: VaultFilter): VaultFilter {\n if (filter.selectedFolder && !this.folders?.hasId(filter.selectedFolderId)) {\n filter.selectedFolder = false;\n filter.selectedFolderId = null;\n }\n return filter;\n }\n\n protected pruneInvalidCollectionSelection(filter: VaultFilter): VaultFilter {\n if (\n filter.selectedCollectionId != null &&\n !this.collections?.hasId(filter.selectedCollectionId)\n ) {\n filter.selectedCollectionId = null;\n }\n return filter;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"./models/dynamic-tree-node.model\";\n\n@Injectable()\nexport class VaultFilterService {\n constructor(\n protected stateService: StateService,\n protected organizationService: OrganizationService,\n protected folderService: FolderService,\n protected cipherService: CipherService,\n protected collectionService: CollectionService,\n protected policyService: PolicyService\n ) {}\n\n async storeCollapsedFilterNodes(collapsedFilterNodes: Set): Promise {\n await this.stateService.setCollapsedGroupings(Array.from(collapsedFilterNodes));\n }\n\n async buildCollapsedFilterNodes(): Promise> {\n return new Set(await this.stateService.getCollapsedGroupings());\n }\n\n async buildOrganizations(): Promise {\n return await this.organizationService.getAll();\n }\n\n async buildFolders(organizationId?: string): Promise> {\n const storedFolders = await this.folderService.getAllDecrypted();\n let folders: FolderView[];\n if (organizationId != null) {\n const ciphers = await this.cipherService.getAllDecrypted();\n const orgCiphers = ciphers.filter((c) => c.organizationId == organizationId);\n folders = storedFolders.filter(\n (f) =>\n orgCiphers.filter((oc) => oc.folderId == f.id).length > 0 ||\n ciphers.filter((c) => c.folderId == f.id).length < 1\n );\n } else {\n folders = storedFolders;\n }\n const nestedFolders = await this.folderService.getAllNested(folders);\n return new DynamicTreeNode({\n fullList: folders,\n nestedList: nestedFolders,\n });\n }\n\n async buildCollections(organizationId?: string): Promise> {\n const storedCollections = await this.collectionService.getAllDecrypted();\n let collections: CollectionView[];\n if (organizationId != null) {\n collections = storedCollections.filter((c) => c.organizationId === organizationId);\n } else {\n collections = storedCollections;\n }\n const nestedCollections = await this.collectionService.getAllNested(collections);\n return new DynamicTreeNode({\n fullList: collections,\n nestedList: nestedCollections,\n });\n }\n\n async checkForSingleOrganizationPolicy(): Promise {\n return await this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n async checkForPersonalOwnershipPolicy(): Promise {\n return await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n/*\n An updated pipe that sanitizes HTML, highlights numbers and special characters (in different colors each)\n and handles Unicode / Emoji characters correctly.\n*/\n@Pipe({ name: \"colorPassword\" })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n const template = (character: string, type: string) =>\n `${character}`;\n const colorizedPassword = this.generateTemplate(password, template);\n return colorizedPassword;\n }\n\n protected generateTemplate(\n password: string,\n templateGenerator: (chararacter: string, type: string, index?: number) => string\n ) {\n // Convert to an array to handle cases that stings have special characters, ie: emoji.\n const passwordArray = Array.from(password);\n let colorizedPassword = \"\";\n for (let i = 0; i < passwordArray.length; i++) {\n let character = passwordArray[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case \"&\":\n character = \"&\";\n isSpecial = true;\n break;\n case \"<\":\n character = \"<\";\n isSpecial = true;\n break;\n case \">\":\n character = \">\";\n isSpecial = true;\n break;\n case \" \":\n character = \" \";\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = \"letter\";\n if (character.match(Utils.regexpEmojiPresentation)) {\n type = \"emoji\";\n } else if (isSpecial || character.match(/[^\\w ]/)) {\n type = \"special\";\n } else if (character.match(/\\d/)) {\n type = \"number\";\n }\n colorizedPassword += templateGenerator(character, type, i);\n }\n return colorizedPassword;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\ninterface CardRuleEntry {\n cardLength: number;\n blocks: number[];\n}\n\n// See https://baymard.com/checkout-usability/credit-card-patterns for\n// all possible credit card spacing patterns. For now, we just handle\n// the below.\nconst numberFormats: Record = {\n Visa: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n Mastercard: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n Maestro: [\n { cardLength: 16, blocks: [4, 4, 4, 4] },\n { cardLength: 13, blocks: [4, 4, 5] },\n { cardLength: 15, blocks: [4, 6, 5] },\n { cardLength: 19, blocks: [4, 4, 4, 4, 3] },\n ],\n Discover: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n \"Diners Club\": [{ cardLength: 14, blocks: [4, 6, 4] }],\n JCB: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n UnionPay: [\n { cardLength: 16, blocks: [4, 4, 4, 4] },\n { cardLength: 19, blocks: [6, 13] },\n ],\n Amex: [{ cardLength: 15, blocks: [4, 6, 5] }],\n Other: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n};\n\n@Pipe({ name: \"creditCardNumber\" })\nexport class CreditCardNumberPipe implements PipeTransform {\n transform(creditCardNumber: string, brand: string): string {\n let rules = numberFormats[brand];\n\n if (rules == null) {\n rules = numberFormats[\"Other\"];\n }\n\n const cardLength = creditCardNumber.length;\n\n let matchingRule = rules.find((r) => r.cardLength == cardLength);\n if (matchingRule == null) {\n matchingRule = rules[0];\n }\n\n const blocks = matchingRule.blocks;\n\n const chunks: string[] = [];\n let total = 0;\n\n blocks.forEach((c) => {\n chunks.push(creditCardNumber.slice(total, total + c));\n total += c;\n });\n\n // Append the remaining part\n if (cardLength > total) {\n chunks.push(creditCardNumber.slice(total));\n }\n\n return chunks.join(\" \");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"ellipsis\",\n})\nexport class EllipsisPipe implements PipeTransform {\n transform(value: string, limit = 25, completeWords = false, ellipsis = \"...\") {\n if (value.length <= limit) {\n return value;\n }\n limit -= ellipsis.length;\n if (completeWords && value.length > limit && value.indexOf(\" \") > 0) {\n limit = value.substring(0, limit).lastIndexOf(\" \");\n }\n return value.substring(0, limit) + ellipsis;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Pipe({\n name: \"i18n\",\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) {}\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"search\",\n})\nexport class SearchPipe implements PipeTransform {\n transform(\n items: any[],\n searchText: string,\n prop1?: string,\n prop2?: string,\n prop3?: string\n ): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter((i) => {\n if (\n prop1 != null &&\n i[prop1] != null &&\n i[prop1].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n if (\n prop2 != null &&\n i[prop2] != null &&\n i[prop2].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n if (\n prop3 != null &&\n i[prop3] != null &&\n i[prop3].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n return false;\n });\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\ninterface User {\n name?: string;\n email: string;\n}\n\n@Pipe({\n name: \"userName\",\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user?: User): string {\n if (user == null) {\n return null;\n }\n\n return user.name == null || user.name.trim() === \"\" ? user.email : user.name;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { BroadcasterService as BaseBroadcasterService } from \"jslib-common/services/broadcaster.service\";\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {}\n","import { InjectionToken, Injector, LOCALE_ID, NgModule } from \"@angular/core\";\n\nimport { ApiService as ApiServiceAbstraction } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService as AppIdServiceAbstraction } from \"jslib-common/abstractions/appId.service\";\nimport { AuditService as AuditServiceAbstraction } from \"jslib-common/abstractions/audit.service\";\nimport { AuthService as AuthServiceAbstraction } from \"jslib-common/abstractions/auth.service\";\nimport { BroadcasterService as BroadcasterServiceAbstraction } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService as CipherServiceAbstraction } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService as CollectionServiceAbstraction } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService as EnvironmentServiceAbstraction } from \"jslib-common/abstractions/environment.service\";\nimport { EventService as EventServiceAbstraction } from \"jslib-common/abstractions/event.service\";\nimport { ExportService as ExportServiceAbstraction } from \"jslib-common/abstractions/export.service\";\nimport { FileUploadService as FileUploadServiceAbstraction } from \"jslib-common/abstractions/fileUpload.service\";\nimport { FolderService as FolderServiceAbstraction } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService as MessagingServiceAbstraction } from \"jslib-common/abstractions/messaging.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"jslib-common/abstractions/notifications.service\";\nimport { OrganizationService as OrganizationServiceAbstraction } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService as PasswordGenerationServiceAbstraction } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService as PolicyServiceAbstraction } from \"jslib-common/abstractions/policy.service\";\nimport { ProviderService as ProviderServiceAbstraction } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService as SearchServiceAbstraction } from \"jslib-common/abstractions/search.service\";\nimport { SendService as SendServiceAbstraction } from \"jslib-common/abstractions/send.service\";\nimport { SettingsService as SettingsServiceAbstraction } from \"jslib-common/abstractions/settings.service\";\nimport { StateService as StateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { StateMigrationService as StateMigrationServiceAbstraction } from \"jslib-common/abstractions/stateMigration.service\";\nimport { StorageService as StorageServiceAbstraction } from \"jslib-common/abstractions/storage.service\";\nimport { SyncService as SyncServiceAbstraction } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService as TokenServiceAbstraction } from \"jslib-common/abstractions/token.service\";\nimport { TotpService as TotpServiceAbstraction } from \"jslib-common/abstractions/totp.service\";\nimport { TwoFactorService as TwoFactorServiceAbstraction } from \"jslib-common/abstractions/twoFactor.service\";\nimport { UserVerificationService as UserVerificationServiceAbstraction } from \"jslib-common/abstractions/userVerification.service\";\nimport { UsernameGenerationService as UsernameGenerationServiceAbstraction } from \"jslib-common/abstractions/usernameGeneration.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { StateFactory } from \"jslib-common/factories/stateFactory\";\nimport { Account } from \"jslib-common/models/domain/account\";\nimport { GlobalState } from \"jslib-common/models/domain/globalState\";\nimport { ApiService } from \"jslib-common/services/api.service\";\nimport { AppIdService } from \"jslib-common/services/appId.service\";\nimport { AuditService } from \"jslib-common/services/audit.service\";\nimport { AuthService } from \"jslib-common/services/auth.service\";\nimport { CipherService } from \"jslib-common/services/cipher.service\";\nimport { CollectionService } from \"jslib-common/services/collection.service\";\nimport { ConsoleLogService } from \"jslib-common/services/consoleLog.service\";\nimport { CryptoService } from \"jslib-common/services/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/services/environment.service\";\nimport { EventService } from \"jslib-common/services/event.service\";\nimport { ExportService } from \"jslib-common/services/export.service\";\nimport { FileUploadService } from \"jslib-common/services/fileUpload.service\";\nimport { FolderService } from \"jslib-common/services/folder.service\";\nimport { KeyConnectorService } from \"jslib-common/services/keyConnector.service\";\nimport { NotificationsService } from \"jslib-common/services/notifications.service\";\nimport { OrganizationService } from \"jslib-common/services/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/services/passwordGeneration.service\";\nimport { PolicyService } from \"jslib-common/services/policy.service\";\nimport { ProviderService } from \"jslib-common/services/provider.service\";\nimport { SearchService } from \"jslib-common/services/search.service\";\nimport { SendService } from \"jslib-common/services/send.service\";\nimport { SettingsService } from \"jslib-common/services/settings.service\";\nimport { StateService } from \"jslib-common/services/state.service\";\nimport { StateMigrationService } from \"jslib-common/services/stateMigration.service\";\nimport { SyncService } from \"jslib-common/services/sync.service\";\nimport { TokenService } from \"jslib-common/services/token.service\";\nimport { TotpService } from \"jslib-common/services/totp.service\";\nimport { TwoFactorService } from \"jslib-common/services/twoFactor.service\";\nimport { UserVerificationService } from \"jslib-common/services/userVerification.service\";\nimport { UsernameGenerationService } from \"jslib-common/services/usernameGeneration.service\";\nimport { VaultTimeoutService } from \"jslib-common/services/vaultTimeout.service\";\nimport { WebCryptoFunctionService } from \"jslib-common/services/webCryptoFunction.service\";\n\nimport { AuthGuard } from \"../guards/auth.guard\";\nimport { LockGuard } from \"../guards/lock.guard\";\nimport { UnauthGuard } from \"../guards/unauth.guard\";\n\nimport { BroadcasterService } from \"./broadcaster.service\";\nimport { ModalService } from \"./modal.service\";\nimport { PasswordRepromptService } from \"./passwordReprompt.service\";\nimport { ValidationService } from \"./validation.service\";\n\nexport const WINDOW = new InjectionToken(\"WINDOW\");\nexport const SECURE_STORAGE = new InjectionToken(\"SECURE_STORAGE\");\nexport const STATE_FACTORY = new InjectionToken(\"STATE_FACTORY\");\nexport const STATE_SERVICE_USE_CACHE = new InjectionToken(\"STATE_SERVICE_USE_CACHE\");\nexport const LOGOUT_CALLBACK = new InjectionToken<(expired: boolean, userId?: string) => void>(\n \"LOGOUT_CALLBACK\"\n);\nexport const LOCKED_CALLBACK = new InjectionToken<() => void>(\"LOCKED_CALLBACK\");\nexport const CLIENT_TYPE = new InjectionToken(\"CLIENT_TYPE\");\nexport const LOCALES_DIRECTORY = new InjectionToken(\"LOCALES_DIRECTORY\");\nexport const SYSTEM_LANGUAGE = new InjectionToken(\"SYSTEM_LANGUAGE\");\n\n@NgModule({\n declarations: [],\n providers: [\n ValidationService,\n AuthGuard,\n UnauthGuard,\n LockGuard,\n ModalService,\n { provide: WINDOW, useValue: window },\n {\n provide: LOCALE_ID,\n useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale,\n deps: [I18nServiceAbstraction],\n },\n {\n provide: LOCALES_DIRECTORY,\n useValue: \"./locales\",\n },\n {\n provide: SYSTEM_LANGUAGE,\n useFactory: (window: Window) => window.navigator.language,\n deps: [WINDOW],\n },\n {\n provide: STATE_FACTORY,\n useValue: new StateFactory(GlobalState, Account),\n },\n {\n provide: STATE_SERVICE_USE_CACHE,\n useValue: true,\n },\n {\n provide: LOGOUT_CALLBACK,\n useFactory:\n (messagingService: MessagingServiceAbstraction) => (expired: boolean, userId?: string) =>\n messagingService.send(\"logout\", { expired: expired, userId: userId }),\n deps: [MessagingServiceAbstraction],\n },\n {\n provide: LOCKED_CALLBACK,\n useValue: null,\n },\n {\n provide: AppIdServiceAbstraction,\n useClass: AppIdService,\n deps: [StorageServiceAbstraction],\n },\n {\n provide: AuditServiceAbstraction,\n useClass: AuditService,\n deps: [CryptoFunctionServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: AuthServiceAbstraction,\n useClass: AuthService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n TokenServiceAbstraction,\n AppIdServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n MessagingServiceAbstraction,\n LogService,\n KeyConnectorServiceAbstraction,\n EnvironmentServiceAbstraction,\n StateServiceAbstraction,\n TwoFactorServiceAbstraction,\n I18nServiceAbstraction,\n ],\n },\n {\n provide: CipherServiceAbstraction,\n useFactory: (\n cryptoService: CryptoServiceAbstraction,\n settingsService: SettingsServiceAbstraction,\n apiService: ApiServiceAbstraction,\n fileUploadService: FileUploadServiceAbstraction,\n i18nService: I18nServiceAbstraction,\n injector: Injector,\n logService: LogService,\n stateService: StateServiceAbstraction\n ) =>\n new CipherService(\n cryptoService,\n settingsService,\n apiService,\n fileUploadService,\n i18nService,\n () => injector.get(SearchServiceAbstraction),\n logService,\n stateService\n ),\n deps: [\n CryptoServiceAbstraction,\n SettingsServiceAbstraction,\n ApiServiceAbstraction,\n FileUploadServiceAbstraction,\n I18nServiceAbstraction,\n Injector, // TODO: Get rid of this circular dependency!\n LogService,\n StateServiceAbstraction,\n ],\n },\n {\n provide: FolderServiceAbstraction,\n useClass: FolderService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n I18nServiceAbstraction,\n CipherServiceAbstraction,\n StateServiceAbstraction,\n ],\n },\n { provide: LogService, useFactory: () => new ConsoleLogService(false) },\n {\n provide: CollectionServiceAbstraction,\n useClass: CollectionService,\n deps: [CryptoServiceAbstraction, I18nServiceAbstraction, StateServiceAbstraction],\n },\n {\n provide: EnvironmentServiceAbstraction,\n useClass: EnvironmentService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: TotpServiceAbstraction,\n useClass: TotpService,\n deps: [CryptoFunctionServiceAbstraction, LogService, StateServiceAbstraction],\n },\n { provide: TokenServiceAbstraction, useClass: TokenService, deps: [StateServiceAbstraction] },\n {\n provide: CryptoServiceAbstraction,\n useClass: CryptoService,\n deps: [\n CryptoFunctionServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n LogService,\n StateServiceAbstraction,\n ],\n },\n {\n provide: PasswordGenerationServiceAbstraction,\n useClass: PasswordGenerationService,\n deps: [CryptoServiceAbstraction, PolicyServiceAbstraction, StateServiceAbstraction],\n },\n {\n provide: UsernameGenerationServiceAbstraction,\n useClass: UsernameGenerationService,\n deps: [CryptoServiceAbstraction, StateServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: ApiServiceAbstraction,\n useClass: ApiService,\n deps: [\n TokenServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n EnvironmentServiceAbstraction,\n AppIdServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: FileUploadServiceAbstraction,\n useClass: FileUploadService,\n deps: [LogService, ApiServiceAbstraction],\n },\n {\n provide: SyncServiceAbstraction,\n useClass: SyncService,\n deps: [\n ApiServiceAbstraction,\n SettingsServiceAbstraction,\n FolderServiceAbstraction,\n CipherServiceAbstraction,\n CryptoServiceAbstraction,\n CollectionServiceAbstraction,\n MessagingServiceAbstraction,\n PolicyServiceAbstraction,\n SendServiceAbstraction,\n LogService,\n KeyConnectorServiceAbstraction,\n StateServiceAbstraction,\n OrganizationServiceAbstraction,\n ProviderServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n { provide: BroadcasterServiceAbstraction, useClass: BroadcasterService },\n {\n provide: SettingsServiceAbstraction,\n useClass: SettingsService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: VaultTimeoutServiceAbstraction,\n useClass: VaultTimeoutService,\n deps: [\n CipherServiceAbstraction,\n FolderServiceAbstraction,\n CollectionServiceAbstraction,\n CryptoServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n MessagingServiceAbstraction,\n SearchServiceAbstraction,\n TokenServiceAbstraction,\n PolicyServiceAbstraction,\n KeyConnectorServiceAbstraction,\n StateServiceAbstraction,\n AuthServiceAbstraction,\n LOCKED_CALLBACK,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: StateServiceAbstraction,\n useClass: StateService,\n deps: [\n StorageServiceAbstraction,\n SECURE_STORAGE,\n LogService,\n StateMigrationServiceAbstraction,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n ],\n },\n {\n provide: StateMigrationServiceAbstraction,\n useClass: StateMigrationService,\n deps: [StorageServiceAbstraction, SECURE_STORAGE, STATE_FACTORY],\n },\n {\n provide: ExportServiceAbstraction,\n useClass: ExportService,\n deps: [\n FolderServiceAbstraction,\n CipherServiceAbstraction,\n ApiServiceAbstraction,\n CryptoServiceAbstraction,\n ],\n },\n {\n provide: SearchServiceAbstraction,\n useClass: SearchService,\n deps: [CipherServiceAbstraction, LogService, I18nServiceAbstraction],\n },\n {\n provide: NotificationsServiceAbstraction,\n useClass: NotificationsService,\n deps: [\n SyncServiceAbstraction,\n AppIdServiceAbstraction,\n ApiServiceAbstraction,\n EnvironmentServiceAbstraction,\n LOGOUT_CALLBACK,\n LogService,\n StateServiceAbstraction,\n AuthServiceAbstraction,\n ],\n },\n {\n provide: CryptoFunctionServiceAbstraction,\n useClass: WebCryptoFunctionService,\n deps: [WINDOW],\n },\n {\n provide: EventServiceAbstraction,\n useClass: EventService,\n deps: [\n ApiServiceAbstraction,\n CipherServiceAbstraction,\n StateServiceAbstraction,\n LogService,\n OrganizationServiceAbstraction,\n ],\n },\n {\n provide: PolicyServiceAbstraction,\n useClass: PolicyService,\n deps: [StateServiceAbstraction, OrganizationServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: SendServiceAbstraction,\n useClass: SendService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n FileUploadServiceAbstraction,\n I18nServiceAbstraction,\n CryptoFunctionServiceAbstraction,\n StateServiceAbstraction,\n ],\n },\n {\n provide: KeyConnectorServiceAbstraction,\n useClass: KeyConnectorService,\n deps: [\n StateServiceAbstraction,\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n TokenServiceAbstraction,\n LogService,\n OrganizationServiceAbstraction,\n CryptoFunctionServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: UserVerificationServiceAbstraction,\n useClass: UserVerificationService,\n deps: [CryptoServiceAbstraction, I18nServiceAbstraction, ApiServiceAbstraction],\n },\n { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },\n {\n provide: OrganizationServiceAbstraction,\n useClass: OrganizationService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: ProviderServiceAbstraction,\n useClass: ProviderService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: TwoFactorServiceAbstraction,\n useClass: TwoFactorService,\n deps: [I18nServiceAbstraction, PlatformUtilsServiceAbstraction],\n },\n ],\n})\nexport class JslibServicesModule {}\n","import {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n Type,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { first } from \"rxjs/operators\";\n\nimport { DynamicModalComponent } from \"../components/modal/dynamic-modal.component\";\nimport { ModalInjector } from \"../components/modal/modal-injector\";\nimport { ModalRef } from \"../components/modal/modal.ref\";\n\nexport class ModalConfig {\n data?: D;\n allowMultipleModals = false;\n}\n\n@Injectable()\nexport class ModalService {\n protected modalList: ComponentRef[] = [];\n\n // Lazy loaded modules are not available in componentFactoryResolver,\n // therefore modules needs to manually initialize their resolvers.\n private factoryResolvers: Map, ComponentFactoryResolver> = new Map();\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef,\n private injector: Injector\n ) {\n document.addEventListener(\"keyup\", (event) => {\n if (event.key === \"Escape\" && this.modalCount > 0) {\n this.topModal.instance.close();\n }\n });\n }\n\n get modalCount() {\n return this.modalList.length;\n }\n\n private get topModal() {\n return this.modalList[this.modalCount - 1];\n }\n\n async openViewRef(\n componentType: Type,\n viewContainerRef: ViewContainerRef,\n setComponentParameters: (component: T) => void = null\n ): Promise<[ModalRef, T]> {\n const [modalRef, modalComponentRef] = this.openInternal(componentType, null, false);\n modalComponentRef.instance.setComponentParameters = setComponentParameters;\n\n viewContainerRef.insert(modalComponentRef.hostView);\n\n await modalRef.onCreated.pipe(first()).toPromise();\n\n return [modalRef, modalComponentRef.instance.componentRef.instance];\n }\n\n open(componentType: Type, config?: ModalConfig) {\n if (!(config?.allowMultipleModals ?? false) && this.modalCount > 0) {\n return;\n }\n\n // eslint-disable-next-line\n const [modalRef, _] = this.openInternal(componentType, config, true);\n\n return modalRef;\n }\n\n registerComponentFactoryResolver(\n componentType: Type,\n componentFactoryResolver: ComponentFactoryResolver\n ): void {\n this.factoryResolvers.set(componentType, componentFactoryResolver);\n }\n\n resolveComponentFactory(componentType: Type): ComponentFactory {\n if (this.factoryResolvers.has(componentType)) {\n return this.factoryResolvers.get(componentType).resolveComponentFactory(componentType);\n }\n\n return this.componentFactoryResolver.resolveComponentFactory(componentType);\n }\n\n protected openInternal(\n componentType: Type,\n config?: ModalConfig,\n attachToDom?: boolean\n ): [ModalRef, ComponentRef] {\n const [modalRef, componentRef] = this.createModalComponent(config);\n componentRef.instance.childComponentType = componentType;\n\n if (attachToDom) {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n }\n\n modalRef.onClosed.pipe(first()).subscribe(() => {\n if (attachToDom) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n\n this.modalList.pop();\n if (this.modalCount > 0) {\n this.topModal.instance.getFocus();\n }\n });\n\n this.setupHandlers(modalRef);\n\n this.modalList.push(componentRef);\n\n return [modalRef, componentRef];\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n let backdrop: HTMLElement = null;\n\n // Add backdrop, setup [data-dismiss] handler.\n modalRef.onCreated.pipe(first()).subscribe((el) => {\n document.body.classList.add(\"modal-open\");\n\n const modalEl: HTMLElement = el.querySelector(\".modal\");\n const dialogEl = modalEl.querySelector(\".modal-dialog\") as HTMLElement;\n\n backdrop = document.createElement(\"div\");\n backdrop.className = \"modal-backdrop fade\";\n backdrop.style.zIndex = `${this.modalCount}040`;\n modalEl.prepend(backdrop);\n\n dialogEl.addEventListener(\"click\", (e: Event) => {\n e.stopPropagation();\n });\n dialogEl.style.zIndex = `${this.modalCount}050`;\n\n const modals = Array.from(\n el.querySelectorAll('.modal-backdrop, .modal *[data-dismiss=\"modal\"]')\n );\n for (const closeElement of modals) {\n closeElement.addEventListener(\"click\", () => {\n modalRef.close();\n });\n }\n });\n\n // onClose is used in Web to hook into bootstrap. On other projects we pipe it directly to closed.\n modalRef.onClose.pipe(first()).subscribe(() => {\n modalRef.closed();\n\n if (this.modalCount === 0) {\n document.body.classList.remove(\"modal-open\");\n }\n });\n }\n\n protected createModalComponent(\n config: ModalConfig\n ): [ModalRef, ComponentRef] {\n const modalRef = new ModalRef();\n\n const map = new WeakMap();\n map.set(ModalConfig, config);\n map.set(ModalRef, modalRef);\n\n const componentFactory =\n this.componentFactoryResolver.resolveComponentFactory(DynamicModalComponent);\n const componentRef = componentFactory.create(new ModalInjector(this.injector, map));\n\n return [modalRef, componentRef];\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\n\nimport { PasswordRepromptComponent } from \"../components/password-reprompt.component\";\n\nimport { ModalService } from \"./modal.service\";\n\n/**\n * Used to verify the user's Master Password for the \"Master Password Re-prompt\" feature only.\n * See UserVerificationService for any other situation where you need to verify the user's identity.\n */\n@Injectable()\nexport class PasswordRepromptService implements PasswordRepromptServiceAbstraction {\n protected component = PasswordRepromptComponent;\n\n constructor(\n private modalService: ModalService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n protectedFields() {\n return [\"TOTP\", \"Password\", \"H_Field\", \"Card Number\", \"Security Code\"];\n }\n\n async showPasswordPrompt() {\n if (!(await this.enabled())) {\n return true;\n }\n\n const ref = this.modalService.open(this.component, { allowMultipleModals: true });\n\n if (ref == null) {\n return false;\n }\n\n const result = await ref.onClosedPromise();\n return result === true;\n }\n\n async enabled() {\n return !(await this.keyConnectorService.getUsesKeyConnector());\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\n\n@Injectable()\nexport class ValidationService {\n constructor(\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t(\"unexpectedError\");\n let errors: string[] = [];\n\n if (data != null && typeof data === \"string\") {\n errors.push(data);\n } else if (data == null || typeof data !== \"object\") {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import { AbstractControl, ValidationErrors, Validators } from \"@angular/forms\";\n\n/**\n * Runs Validators.required on a field only if it's dirty. This prevents error messages from being displayed\n * to the user prematurely.\n */\nexport function dirtyRequired(control: AbstractControl): ValidationErrors | null {\n return control.dirty ? Validators.required(control) : null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidationErrors } from \"@angular/forms\";\n\nexport function notAllowedValueAsync(\n valueGetter: () => Promise,\n caseInsensitive = false\n): AsyncValidatorFn {\n return async (control: AbstractControl): Promise => {\n let notAllowedValue = await valueGetter();\n let controlValue = control.value;\n if (caseInsensitive) {\n notAllowedValue = notAllowedValue.toLowerCase();\n controlValue = controlValue.toLowerCase();\n }\n\n if (controlValue === notAllowedValue) {\n return {\n notAllowedValue: true,\n };\n }\n };\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\nimport {\n OrganizationConnectionConfigApis,\n OrganizationConnectionResponse,\n} from \"jslib-common/models/response/organizationConnectionResponse\";\n\nimport { PolicyType } from \"../enums/policyType\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { BitPayInvoiceRequest } from \"../models/request/bitPayInvoiceRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkRestoreRequest } from \"../models/request/cipherBulkRestoreRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { DeleteRecoverRequest } from \"../models/request/deleteRecoverRequest\";\nimport { EmailRequest } from \"../models/request/emailRequest\";\nimport { EmailTokenRequest } from \"../models/request/emailTokenRequest\";\nimport { EmergencyAccessAcceptRequest } from \"../models/request/emergencyAccessAcceptRequest\";\nimport { EmergencyAccessConfirmRequest } from \"../models/request/emergencyAccessConfirmRequest\";\nimport { EmergencyAccessInviteRequest } from \"../models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessPasswordRequest } from \"../models/request/emergencyAccessPasswordRequest\";\nimport { EmergencyAccessUpdateRequest } from \"../models/request/emergencyAccessUpdateRequest\";\nimport { EventRequest } from \"../models/request/eventRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { GroupRequest } from \"../models/request/groupRequest\";\nimport { IapCheckRequest } from \"../models/request/iapCheckRequest\";\nimport { ApiTokenRequest } from \"../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../models/request/identityToken/ssoTokenRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportDirectoryRequest } from \"../models/request/importDirectoryRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KdfRequest } from \"../models/request/kdfRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { OrganizationSponsorshipCreateRequest } from \"../models/request/organization/organizationSponsorshipCreateRequest\";\nimport { OrganizationSponsorshipRedeemRequest } from \"../models/request/organization/organizationSponsorshipRedeemRequest\";\nimport { OrganizationSsoRequest } from \"../models/request/organization/organizationSsoRequest\";\nimport { OrganizationApiKeyRequest } from \"../models/request/organizationApiKeyRequest\";\nimport { OrganizationCreateRequest } from \"../models/request/organizationCreateRequest\";\nimport { OrganizationImportRequest } from \"../models/request/organizationImportRequest\";\nimport { OrganizationKeysRequest } from \"../models/request/organizationKeysRequest\";\nimport { OrganizationSubscriptionUpdateRequest } from \"../models/request/organizationSubscriptionUpdateRequest\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../models/request/organizationTaxInfoUpdateRequest\";\nimport { OrganizationUpdateRequest } from \"../models/request/organizationUpdateRequest\";\nimport { OrganizationUpgradeRequest } from \"../models/request/organizationUpgradeRequest\";\nimport { OrganizationUserAcceptRequest } from \"../models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserBulkConfirmRequest } from \"../models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"../models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"../models/request/organizationUserConfirmRequest\";\nimport { OrganizationUserInviteRequest } from \"../models/request/organizationUserInviteRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"../models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { OrganizationUserResetPasswordRequest } from \"../models/request/organizationUserResetPasswordRequest\";\nimport { OrganizationUserUpdateGroupsRequest } from \"../models/request/organizationUserUpdateGroupsRequest\";\nimport { OrganizationUserUpdateRequest } from \"../models/request/organizationUserUpdateRequest\";\nimport { PasswordHintRequest } from \"../models/request/passwordHintRequest\";\nimport { PasswordRequest } from \"../models/request/passwordRequest\";\nimport { PaymentRequest } from \"../models/request/paymentRequest\";\nimport { PolicyRequest } from \"../models/request/policyRequest\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ProviderAddOrganizationRequest } from \"../models/request/provider/providerAddOrganizationRequest\";\nimport { ProviderOrganizationCreateRequest } from \"../models/request/provider/providerOrganizationCreateRequest\";\nimport { ProviderSetupRequest } from \"../models/request/provider/providerSetupRequest\";\nimport { ProviderUpdateRequest } from \"../models/request/provider/providerUpdateRequest\";\nimport { ProviderUserAcceptRequest } from \"../models/request/provider/providerUserAcceptRequest\";\nimport { ProviderUserBulkConfirmRequest } from \"../models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"../models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"../models/request/provider/providerUserConfirmRequest\";\nimport { ProviderUserInviteRequest } from \"../models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"../models/request/provider/providerUserUpdateRequest\";\nimport { RegisterRequest } from \"../models/request/registerRequest\";\nimport { SeatRequest } from \"../models/request/seatRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { SelectionReadOnlyRequest } from \"../models/request/selectionReadOnlyRequest\";\nimport { SendAccessRequest } from \"../models/request/sendAccessRequest\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { SetPasswordRequest } from \"../models/request/setPasswordRequest\";\nimport { StorageRequest } from \"../models/request/storageRequest\";\nimport { TaxInfoUpdateRequest } from \"../models/request/taxInfoUpdateRequest\";\nimport { TwoFactorEmailRequest } from \"../models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviderRequest } from \"../models/request/twoFactorProviderRequest\";\nimport { TwoFactorRecoveryRequest } from \"../models/request/twoFactorRecoveryRequest\";\nimport { UpdateDomainsRequest } from \"../models/request/updateDomainsRequest\";\nimport { UpdateKeyRequest } from \"../models/request/updateKeyRequest\";\nimport { UpdateProfileRequest } from \"../models/request/updateProfileRequest\";\nimport { UpdateTempPasswordRequest } from \"../models/request/updateTempPasswordRequest\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"../models/request/updateTwoFactorAuthenticatorRequest\";\nimport { UpdateTwoFactorDuoRequest } from \"../models/request/updateTwoFactorDuoRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"../models/request/updateTwoFactorEmailRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"../models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"../models/request/updateTwoFactorWebAuthnRequest\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"../models/request/updateTwoFactorYubioOtpRequest\";\nimport { VerifyBankRequest } from \"../models/request/verifyBankRequest\";\nimport { VerifyDeleteRecoverRequest } from \"../models/request/verifyDeleteRecoverRequest\";\nimport { VerifyEmailRequest } from \"../models/request/verifyEmailRequest\";\nimport { ApiKeyResponse } from \"../models/response/apiKeyResponse\";\nimport { AttachmentResponse } from \"../models/response/attachmentResponse\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { BillingResponse } from \"../models/response/billingResponse\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse,\n} from \"../models/response/emergencyAccessResponse\";\nimport { EventResponse } from \"../models/response/eventResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { GroupDetailsResponse, GroupResponse } from \"../models/response/groupResponse\";\nimport { IdentityCaptchaResponse } from \"../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\nimport { KeyConnectorUserKeyResponse } from \"../models/response/keyConnectorUserKeyResponse\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { OrganizationSsoResponse } from \"../models/response/organization/organizationSsoResponse\";\nimport { OrganizationApiKeyInformationResponse } from \"../models/response/organizationApiKeyInformationResponse\";\nimport { OrganizationAutoEnrollStatusResponse } from \"../models/response/organizationAutoEnrollStatusResponse\";\nimport { OrganizationKeysResponse } from \"../models/response/organizationKeysResponse\";\nimport { OrganizationResponse } from \"../models/response/organizationResponse\";\nimport { OrganizationSponsorshipSyncStatusResponse } from \"../models/response/organizationSponsorshipSyncStatusResponse\";\nimport { OrganizationSubscriptionResponse } from \"../models/response/organizationSubscriptionResponse\";\nimport { OrganizationUserBulkPublicKeyResponse } from \"../models/response/organizationUserBulkPublicKeyResponse\";\nimport { OrganizationUserBulkResponse } from \"../models/response/organizationUserBulkResponse\";\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from \"../models/response/organizationUserResponse\";\nimport { PaymentResponse } from \"../models/response/paymentResponse\";\nimport { PlanResponse } from \"../models/response/planResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { PreloginResponse } from \"../models/response/preloginResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport {\n ProviderOrganizationOrganizationDetailsResponse,\n ProviderOrganizationResponse,\n} from \"../models/response/provider/providerOrganizationResponse\";\nimport { ProviderResponse } from \"../models/response/provider/providerResponse\";\nimport { ProviderUserBulkPublicKeyResponse } from \"../models/response/provider/providerUserBulkPublicKeyResponse\";\nimport { ProviderUserBulkResponse } from \"../models/response/provider/providerUserBulkResponse\";\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse,\n} from \"../models/response/provider/providerUserResponse\";\nimport { SelectionReadOnlyResponse } from \"../models/response/selectionReadOnlyResponse\";\nimport { SendAccessResponse } from \"../models/response/sendAccessResponse\";\nimport { SendFileDownloadDataResponse } from \"../models/response/sendFileDownloadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SubscriptionResponse } from \"../models/response/subscriptionResponse\";\nimport { SyncResponse } from \"../models/response/syncResponse\";\nimport { TaxInfoResponse } from \"../models/response/taxInfoResponse\";\nimport { TaxRateResponse } from \"../models/response/taxRateResponse\";\nimport { TwoFactorAuthenticatorResponse } from \"../models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"../models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"../models/response/twoFactorEmailResponse\";\nimport { TwoFactorProviderResponse } from \"../models/response/twoFactorProviderResponse\";\nimport { TwoFactorRecoverResponse } from \"../models/response/twoFactorRescoverResponse\";\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from \"../models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"../models/response/twoFactorYubiKeyResponse\";\nimport { UserKeyResponse } from \"../models/response/userKeyResponse\";\nimport { SendAccessView } from \"../models/view/sendAccessView\";\n\nexport abstract class ApiService {\n postIdentityToken: (\n request: PasswordTokenRequest | SsoTokenRequest | ApiTokenRequest\n ) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSetKeyConnectorKey: (request: SetKeyConnectorKeyRequest) => Promise;\n postSecurityStamp: (request: SecretVerificationRequest) => Promise;\n deleteAccount: (request: SecretVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: SecretVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n postUserApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n putUpdateTempPassword: (request: UpdateTempPasswordRequest) => Promise;\n postAccountRequestOTP: () => Promise;\n postAccountVerifyOTP: (request: VerifyOTPRequest) => Promise;\n postConvertToKeyConnector: () => Promise;\n\n getUserBillingHistory: () => Promise;\n getUserBillingPayment: () => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (\n id: string,\n request: SendAccessRequest,\n apiUrl?: string\n ) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postFileTypeSend: (request: SendRequest) => Promise;\n postSendFile: (sendId: string, fileId: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postSendFileLegacy: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (\n send: SendAccessView,\n request: SendAccessRequest,\n apiUrl?: string\n ) => Promise;\n renewSendFileUploadUrl: (sendId: string, fileId: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getAttachmentData: (\n cipherId: string,\n attachmentId: string,\n emergencyAccessId?: string\n ) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: SecretVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (\n organizationId: string,\n request: ImportOrganizationCiphersRequest\n ) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (\n request: CipherBulkRestoreRequest\n ) => Promise>;\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentLegacy: (id: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentAdminLegacy: (id: string, data: FormData) => Promise;\n postCipherAttachment: (\n id: string,\n request: AttachmentRequest\n ) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (\n id: string,\n attachmentId: string,\n data: FormData,\n organizationId: string\n ) => Promise;\n renewAttachmentUploadUrl: (\n id: string,\n attachmentId: string\n ) => Promise;\n postAttachmentFile: (id: string, attachmentId: string, data: FormData) => Promise;\n\n getCollectionDetails: (\n organizationId: string,\n id: string\n ) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (\n organizationId: string,\n request: CollectionRequest\n ) => Promise;\n putCollectionUsers: (\n organizationId: string,\n id: string,\n request: SelectionReadOnlyRequest[]\n ) => Promise;\n putCollection: (\n organizationId: string,\n id: string,\n request: CollectionRequest\n ) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (\n organizationId: string,\n id: string,\n organizationUserId: string\n ) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (\n organizationId: string,\n token: string,\n email: string,\n organizationUserId: string\n ) => Promise>;\n getPoliciesByInvitedUser: (\n organizationId: string,\n userId: string\n ) => Promise>;\n putPolicy: (\n organizationId: string,\n type: PolicyType,\n request: PolicyRequest\n ) => Promise;\n\n getOrganizationUser: (\n organizationId: string,\n id: string\n ) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (\n organizationId: string\n ) => Promise>;\n getOrganizationUserResetPasswordDetails: (\n organizationId: string,\n id: string\n ) => Promise;\n postOrganizationUserInvite: (\n organizationId: string,\n request: OrganizationUserInviteRequest\n ) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postManyOrganizationUserReinvite: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n postOrganizationUserAccept: (\n organizationId: string,\n id: string,\n request: OrganizationUserAcceptRequest\n ) => Promise;\n postOrganizationUserConfirm: (\n organizationId: string,\n id: string,\n request: OrganizationUserConfirmRequest\n ) => Promise;\n postOrganizationUsersPublicKey: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n postOrganizationUserBulkConfirm: (\n organizationId: string,\n request: OrganizationUserBulkConfirmRequest\n ) => Promise>;\n\n putOrganizationUser: (\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateRequest\n ) => Promise;\n putOrganizationUserGroups: (\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateGroupsRequest\n ) => Promise;\n putOrganizationUserResetPasswordEnrollment: (\n organizationId: string,\n userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest\n ) => Promise;\n putOrganizationUserResetPassword: (\n organizationId: string,\n id: string,\n request: OrganizationUserResetPasswordRequest\n ) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n deleteManyOrganizationUsers: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n postPublicImportDirectory: (request: OrganizationImportRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (\n organizationId: string\n ) => Promise>;\n getTwoFactorAuthenticator: (\n request: SecretVerificationRequest\n ) => Promise;\n getTwoFactorEmail: (request: SecretVerificationRequest) => Promise;\n getTwoFactorDuo: (request: SecretVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (\n organizationId: string,\n request: SecretVerificationRequest\n ) => Promise;\n getTwoFactorYubiKey: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthn: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthnChallenge: (request: SecretVerificationRequest) => Promise;\n getTwoFactorRecover: (request: SecretVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest\n ) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (\n organizationId: string,\n request: UpdateTwoFactorDuoRequest\n ) => Promise;\n putTwoFactorYubiKey: (\n request: UpdateTwoFactorYubioOtpRequest\n ) => Promise;\n putTwoFactorWebAuthn: (\n request: UpdateTwoFactorWebAuthnRequest\n ) => Promise;\n deleteTwoFactorWebAuthn: (\n request: UpdateTwoFactorWebAuthnDeleteRequest\n ) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (\n organizationId: string,\n request: TwoFactorProviderRequest\n ) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (\n id: string,\n request: EmergencyAccessPasswordRequest\n ) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getCloudCommunicationsEnabled: () => Promise;\n abstract getOrganizationConnection(\n id: string,\n type: OrganizationConnectionType,\n configType: { new (response: any): TConfig }\n ): Promise>;\n abstract createOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig }\n ): Promise>;\n abstract updateOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig },\n organizationConnectionId: string\n ): Promise>;\n deleteOrganizationConnection: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n getOrganizationAutoEnrollStatus: (\n identifier: string\n ) => Promise;\n getOrganizationSso: (id: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (\n id: string,\n request: OrganizationUpdateRequest\n ) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (\n id: string,\n request: OrganizationApiKeyRequest\n ) => Promise;\n getOrganizationApiKeyInformation: (\n id: string\n ) => Promise>;\n postOrganizationRotateApiKey: (\n id: string,\n request: OrganizationApiKeyRequest\n ) => Promise;\n postOrganizationSso: (\n id: string,\n request: OrganizationSsoRequest\n ) => Promise;\n postOrganizationUpgrade: (\n id: string,\n request: OrganizationUpgradeRequest\n ) => Promise;\n postOrganizationUpdateSubscription: (\n id: string,\n request: OrganizationSubscriptionUpdateRequest\n ) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: SecretVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n getOrganizationKeys: (id: string) => Promise;\n postOrganizationKeys: (\n id: string,\n request: OrganizationKeysRequest\n ) => Promise;\n\n postProviderSetup: (id: string, request: ProviderSetupRequest) => Promise;\n getProvider: (id: string) => Promise;\n putProvider: (id: string, request: ProviderUpdateRequest) => Promise;\n\n getProviderUsers: (providerId: string) => Promise>;\n getProviderUser: (providerId: string, id: string) => Promise;\n postProviderUserInvite: (providerId: string, request: ProviderUserInviteRequest) => Promise;\n postProviderUserReinvite: (providerId: string, id: string) => Promise;\n postManyProviderUserReinvite: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n postProviderUserAccept: (\n providerId: string,\n id: string,\n request: ProviderUserAcceptRequest\n ) => Promise;\n postProviderUserConfirm: (\n providerId: string,\n id: string,\n request: ProviderUserConfirmRequest\n ) => Promise;\n postProviderUsersPublicKey: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n postProviderUserBulkConfirm: (\n providerId: string,\n request: ProviderUserBulkConfirmRequest\n ) => Promise>;\n putProviderUser: (\n providerId: string,\n id: string,\n request: ProviderUserUpdateRequest\n ) => Promise;\n deleteProviderUser: (organizationId: string, id: string) => Promise;\n deleteManyProviderUsers: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n getProviderClients: (\n providerId: string\n ) => Promise>;\n postProviderAddOrganization: (\n providerId: string,\n request: ProviderAddOrganizationRequest\n ) => Promise;\n postProviderCreateOrganization: (\n providerId: string,\n request: ProviderOrganizationCreateRequest\n ) => Promise;\n deleteProviderOrganization: (providerId: string, organizationId: string) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsOrganization: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsOrganizationUser: (\n organizationId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsProvider: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsProviderUser: (\n providerId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n\n postCreateSponsorship: (\n sponsorshipOrgId: string,\n request: OrganizationSponsorshipCreateRequest\n ) => Promise;\n getSponsorshipSyncStatus: (\n sponsoredOrgId: string\n ) => Promise;\n deleteRevokeSponsorship: (sponsoringOrganizationId: string) => Promise;\n deleteRemoveSponsorship: (sponsoringOrgId: string) => Promise;\n postPreValidateSponsorshipToken: (sponsorshipToken: string) => Promise;\n postRedeemSponsorship: (\n sponsorshipToken: string,\n request: OrganizationSponsorshipRedeemRequest\n ) => Promise;\n postResendSponsorshipOffer: (sponsoringOrgId: string) => Promise;\n\n getUserKeyFromKeyConnector: (keyConnectorUrl: string) => Promise;\n postUserKeyToKeyConnector: (\n keyConnectorUrl: string,\n request: KeyConnectorUserKeyRequest\n ) => Promise;\n getKeyConnectorAlive: (keyConnectorUrl: string) => Promise;\n}\n","export abstract class AppIdService {\n getAppId: () => Promise;\n getAnonymousAppId: () => Promise;\n}\n","import { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { AuthResult } from \"../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TokenRequestTwoFactor } from \"../models/request/identityToken/tokenRequestTwoFactor\";\n\nexport abstract class AuthService {\n masterPasswordHash: string;\n email: string;\n logIn: (\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ) => Promise;\n logInTwoFactor: (\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ) => Promise;\n logOut: (callback: () => void) => void;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n getAuthStatus: (userId?: string) => Promise;\n}\n","export abstract class BroadcasterService {\n send: (message: any, id?: string) => void;\n subscribe: (id: string, messageCallback: (message: any) => any) => void;\n unsubscribe: (id: string) => void;\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport { Field } from \"../models/domain/field\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\n\nexport abstract class CipherService {\n clearCache: (userId?: string) => Promise;\n encrypt: (\n model: CipherView,\n key?: SymmetricCryptoKey,\n originalCipher?: Cipher\n ) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (\n url: string,\n includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType\n ) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getLastLaunchedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (\n cipher: CipherView,\n organizationId: string,\n collectionIds: string[]\n ) => Promise;\n shareManyWithServer: (\n ciphers: CipherView[],\n organizationId: string,\n collectionIds: string[]\n ) => Promise;\n saveAttachmentWithServer: (\n cipher: Cipher,\n unencryptedFile: any,\n admin?: boolean\n ) => Promise;\n saveAttachmentRawWithServer: (\n cipher: Cipher,\n filename: string,\n data: ArrayBuffer,\n admin?: boolean\n ) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (\n cipher: { id: string; revisionDate: string } | { id: string; revisionDate: string }[]\n ) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import { CollectionData } from \"../models/data/collectionData\";\nimport { Collection } from \"../models/domain/collection\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nexport abstract class CollectionService {\n clearCache: (userId?: string) => Promise;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import { HashPurpose } from \"../enums/hashPurpose\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { ProfileOrganizationResponse } from \"../models/response/profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"../models/response/profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"../models/response/profileProviderResponse\";\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise;\n setEncKey: (encKey: string) => Promise;\n setEncPrivateKey: (encPrivateKey: string) => Promise;\n setOrgKeys: (\n orgs: ProfileOrganizationResponse[],\n providerOrgs: ProfileProviderOrganizationResponse[]\n ) => Promise;\n setProviderKeys: (orgs: ProfileProviderResponse[]) => Promise;\n getKey: (keySuffix?: KeySuffixOptions, userId?: string) => Promise;\n getKeyFromStorage: (keySuffix: KeySuffixOptions, userId?: string) => Promise;\n getKeyHash: () => Promise;\n compareAndUpdateKeyHash: (masterPassword: string, key: SymmetricCryptoKey) => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n getProviderKey: (providerId: string) => Promise;\n hasKey: () => Promise;\n hasKeyInMemory: (userId?: string) => Promise;\n hasKeyStored: (keySuffix?: KeySuffixOptions, userId?: string) => Promise;\n hasEncKey: () => Promise;\n clearKey: (clearSecretStorage?: boolean, userId?: string) => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean, userId?: string) => Promise;\n clearKeyPair: (memoryOnly?: boolean, userId?: string) => Promise;\n clearOrgKeys: (memoryOnly?: boolean, userId?: string) => Promise;\n clearProviderKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: (userId?: string) => Promise;\n toggleKey: () => Promise;\n makeKey: (\n password: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ) => Promise;\n makeKeyFromPin: (\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number,\n protectedKeyCs?: EncString\n ) => Promise;\n makeShareKey: () => Promise<[EncString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, EncString]>;\n makePinKey: (\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (\n password: string,\n key: SymmetricCryptoKey,\n hashPurpose?: HashPurpose\n ) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n remakeEncKey: (\n key: SymmetricCryptoKey,\n encKey?: SymmetricCryptoKey\n ) => Promise<[SymmetricCryptoKey, EncString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string, privateKeyValue?: ArrayBuffer) => Promise;\n decryptToBytes: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n validateKey: (key: SymmetricCryptoKey) => Promise;\n}\n","import { DecryptParameters } from \"../models/domain/decryptParameters\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (\n password: string | ArrayBuffer,\n salt: string | ArrayBuffer,\n algorithm: \"sha256\" | \"sha512\",\n iterations: number\n ) => Promise;\n hkdf: (\n ikm: ArrayBuffer,\n salt: string | ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ) => Promise;\n hkdfExpand: (\n prk: ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ) => Promise;\n hash: (\n value: string | ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"\n ) => Promise;\n hmac: (\n value: ArrayBuffer,\n key: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ) => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (\n value: ArrayBuffer | string,\n key: ArrayBuffer | string,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ) => Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ) => DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (\n data: ArrayBuffer,\n publicKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ) => Promise;\n rsaDecrypt: (\n data: ArrayBuffer,\n privateKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ) => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { Observable } from \"rxjs\";\n\nexport type Urls = {\n base?: string;\n webVault?: string;\n api?: string;\n identity?: string;\n icons?: string;\n notifications?: string;\n events?: string;\n keyConnector?: string;\n};\n\nexport type PayPalConfig = {\n businessId?: string;\n buttonAction?: string;\n};\n\nexport abstract class EnvironmentService {\n urls: Observable;\n\n hasBaseUrl: () => boolean;\n getNotificationsUrl: () => string;\n getWebVaultUrl: () => string;\n getSendUrl: () => string;\n getIconsUrl: () => string;\n getApiUrl: () => string;\n getIdentityUrl: () => string;\n getEventsUrl: () => string;\n getKeyConnectorUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: Urls) => Promise;\n getUrls: () => Urls;\n}\n","import { EventType } from \"../enums/eventType\";\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: (userId?: string) => Promise;\n clearEvents: (userId?: string) => Promise;\n}\n","import { EventView } from \"../models/view/eventView\";\n\nexport type ExportFormat = \"csv\" | \"json\" | \"encrypted_json\";\n\nexport abstract class ExportService {\n getExport: (format?: ExportFormat, organizationId?: string) => Promise;\n getPasswordProtectedExport: (password: string, organizationId?: string) => Promise;\n getOrganizationExport: (organizationId: string, format?: ExportFormat) => Promise;\n getEventExport: (events: EventView[]) => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\n\nexport abstract class FileUploadService {\n uploadSendFile: (\n uploadData: SendFileUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) => Promise;\n uploadCipherAttachment: (\n admin: boolean,\n uploadData: AttachmentUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) => Promise;\n}\n","import { FolderData } from \"../models/data/folderData\";\nimport { Folder } from \"../models/domain/folder\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { FolderView } from \"../models/view/folderView\";\n\nexport abstract class FolderService {\n clearCache: (userId?: string) => Promise;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (folders?: FolderView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { ImportOption, ImportType } from \"../enums/importOptions\";\nimport { ImportError } from \"../importers/importError\";\nimport { Importer } from \"../importers/importer\";\n\nexport abstract class ImportService {\n featuredImportOptions: readonly ImportOption[];\n regularImportOptions: readonly ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (\n importer: Importer,\n fileContents: string,\n organizationId?: string\n ) => Promise;\n getImporter: (\n format: ImportType | \"bitwardenpasswordprotected\",\n organizationId: string,\n password?: string\n ) => Importer;\n}\n","import { Organization } from \"../models/domain/organization\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport abstract class KeyConnectorService {\n getAndSetKey: (url?: string) => Promise;\n getManagingOrganization: () => Promise;\n getUsesKeyConnector: () => Promise;\n migrateUser: () => Promise;\n userNeedsMigration: () => Promise;\n convertNewSsoUserToKeyConnector: (\n tokenResponse: IdentityTokenResponse,\n orgId: string\n ) => Promise;\n setUsesKeyConnector: (enabled: boolean) => Promise;\n setConvertAccountRequired: (status: boolean) => Promise;\n getConvertAccountRequired: () => Promise;\n removeConvertAccountRequired: () => Promise;\n clear: () => Promise;\n}\n","import { LogLevelType } from \"../enums/logLevelType\";\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","export abstract class NotificationsService {\n init: () => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","import { OrganizationData } from \"../models/data/organizationData\";\nimport { Organization } from \"../models/domain/organization\";\n\nexport abstract class OrganizationService {\n get: (id: string) => Promise;\n getByIdentifier: (identifier: string) => Promise;\n getAll: (userId?: string) => Promise;\n save: (orgs: { [id: string]: OrganizationData }) => Promise;\n canManageSponsorships: () => Promise;\n hasOrganizations: (userId?: string) => Promise;\n}\n","import * as zxcvbn from \"zxcvbn\";\n\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { PasswordGeneratorPolicyOptions } from \"../models/domain/passwordGeneratorPolicyOptions\";\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (\n options: any\n ) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: (userId?: string) => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","export abstract class PasswordRepromptService {\n protectedFields: () => string[];\n showPasswordPrompt: () => Promise;\n enabled: () => Promise;\n}\n","import { ClientType } from \"../enums/clientType\";\nimport { DeviceType } from \"../enums/deviceType\";\nimport { ThemeType } from \"../enums/themeType\";\n\ninterface ToastOptions {\n timeout?: number;\n}\n\nexport abstract class PlatformUtilsService {\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n getClientType: () => ClientType;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isMacAppStore: () => boolean;\n isViewOpen: () => Promise;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => Promise;\n supportsWebAuthn: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (\n type: \"error\" | \"success\" | \"warning\" | \"info\",\n title: string,\n text: string | string[],\n options?: ToastOptions\n ) => void;\n showDialog: (\n body: string,\n title?: string,\n confirmText?: string,\n cancelText?: string,\n type?: string,\n bodyIsHtml?: boolean\n ) => Promise;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void | boolean;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => Promise;\n onDefaultSystemThemeChange: (\n callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown\n ) => unknown;\n getEffectiveTheme: () => Promise;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from \"../enums/policyType\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"../models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"../models/domain/policy\";\nimport { ResetPasswordPolicyOptions } from \"../models/domain/resetPasswordPolicyOptions\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\n\nexport abstract class PolicyService {\n clearCache: () => void;\n getAll: (type?: PolicyType, userId?: string) => Promise;\n getPolicyForOrganization: (policyType: PolicyType, organizationId: string) => Promise;\n replace: (policies: { [id: string]: PolicyData }) => Promise;\n clear: (userId?: string) => Promise;\n getMasterPasswordPoliciesForInvitedUsers: (orgId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (\n passwordStrength: number,\n newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions\n ) => boolean;\n getResetPasswordPolicyOptions: (\n policies: Policy[],\n orgId: string\n ) => [ResetPasswordPolicyOptions, boolean];\n mapPoliciesFromToken: (policiesResponse: ListResponse) => Policy[];\n policyAppliesToUser: (\n policyType: PolicyType,\n policyFilter?: (policy: Policy) => boolean,\n userId?: string\n ) => Promise;\n}\n","import { ProviderData } from \"../models/data/providerData\";\nimport { Provider } from \"../models/domain/provider\";\n\nexport abstract class ProviderService {\n get: (id: string) => Promise;\n getAll: () => Promise;\n save: (providers: { [id: string]: ProviderData }) => Promise;\n}\n","import { CipherView } from \"../models/view/cipherView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class SearchService {\n indexedEntityId?: string = null;\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: (indexedEntityGuid?: string, ciphersToIndex?: CipherView[]) => Promise;\n searchCiphers: (\n query: string,\n filter?: ((cipher: CipherView) => boolean) | ((cipher: CipherView) => boolean)[],\n ciphers?: CipherView[]\n ) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","import { SendData } from \"../models/data/sendData\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { Send } from \"../models/domain/send\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class SendService {\n clearCache: () => Promise;\n encrypt: (\n model: SendView,\n file: File | ArrayBuffer,\n password: string,\n key?: SymmetricCryptoKey\n ) => Promise<[Send, EncArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, EncArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","export abstract class SettingsService {\n clearCache: () => Promise;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId?: string) => Promise;\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { KdfType } from \"../enums/kdfType\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account } from \"../models/domain/account\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { Policy } from \"../models/domain/policy\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { WindowState } from \"../models/domain/windowState\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class StateService {\n accounts: BehaviorSubject<{ [userId: string]: T }>;\n activeAccount: BehaviorSubject;\n\n addAccount: (account: T) => Promise;\n setActiveUser: (userId: string) => Promise;\n clean: (options?: StorageOptions) => Promise;\n init: () => Promise;\n\n getAccessToken: (options?: StorageOptions) => Promise;\n setAccessToken: (value: string, options?: StorageOptions) => Promise;\n getAddEditCipherInfo: (options?: StorageOptions) => Promise;\n setAddEditCipherInfo: (value: any, options?: StorageOptions) => Promise;\n getAlwaysShowDock: (options?: StorageOptions) => Promise;\n setAlwaysShowDock: (value: boolean, options?: StorageOptions) => Promise;\n getApiKeyClientId: (options?: StorageOptions) => Promise;\n setApiKeyClientId: (value: string, options?: StorageOptions) => Promise;\n getApiKeyClientSecret: (options?: StorageOptions) => Promise;\n setApiKeyClientSecret: (value: string, options?: StorageOptions) => Promise;\n getAutoConfirmFingerPrints: (options?: StorageOptions) => Promise;\n setAutoConfirmFingerprints: (value: boolean, options?: StorageOptions) => Promise;\n getAutoFillOnPageLoadDefault: (options?: StorageOptions) => Promise;\n setAutoFillOnPageLoadDefault: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricAwaitingAcceptance: (options?: StorageOptions) => Promise;\n setBiometricAwaitingAcceptance: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricFingerprintValidated: (options?: StorageOptions) => Promise;\n setBiometricFingerprintValidated: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricLocked: (options?: StorageOptions) => Promise;\n setBiometricLocked: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricText: (options?: StorageOptions) => Promise;\n setBiometricText: (value: string, options?: StorageOptions) => Promise;\n getBiometricUnlock: (options?: StorageOptions) => Promise;\n setBiometricUnlock: (value: boolean, options?: StorageOptions) => Promise;\n getCanAccessPremium: (options?: StorageOptions) => Promise;\n getClearClipboard: (options?: StorageOptions) => Promise;\n setClearClipboard: (value: number, options?: StorageOptions) => Promise;\n getCollapsedGroupings: (options?: StorageOptions) => Promise;\n setCollapsedGroupings: (value: string[], options?: StorageOptions) => Promise;\n getConvertAccountToKeyConnector: (options?: StorageOptions) => Promise;\n setConvertAccountToKeyConnector: (value: boolean, options?: StorageOptions) => Promise;\n getCryptoMasterKey: (options?: StorageOptions) => Promise;\n setCryptoMasterKey: (value: SymmetricCryptoKey, options?: StorageOptions) => Promise;\n getCryptoMasterKeyAuto: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyAuto: (value: string, options?: StorageOptions) => Promise;\n getCryptoMasterKeyB64: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyB64: (value: string, options?: StorageOptions) => Promise;\n getCryptoMasterKeyBiometric: (options?: StorageOptions) => Promise;\n hasCryptoMasterKeyBiometric: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyBiometric: (value: string, options?: StorageOptions) => Promise;\n getDecodedToken: (options?: StorageOptions) => Promise;\n setDecodedToken: (value: any, options?: StorageOptions) => Promise;\n getDecryptedCiphers: (options?: StorageOptions) => Promise;\n setDecryptedCiphers: (value: CipherView[], options?: StorageOptions) => Promise;\n getDecryptedCollections: (options?: StorageOptions) => Promise;\n setDecryptedCollections: (value: CollectionView[], options?: StorageOptions) => Promise;\n getDecryptedCryptoSymmetricKey: (options?: StorageOptions) => Promise;\n setDecryptedCryptoSymmetricKey: (\n value: SymmetricCryptoKey,\n options?: StorageOptions\n ) => Promise;\n getDecryptedFolders: (options?: StorageOptions) => Promise;\n setDecryptedFolders: (value: FolderView[], options?: StorageOptions) => Promise;\n getDecryptedOrganizationKeys: (\n options?: StorageOptions\n ) => Promise>;\n setDecryptedOrganizationKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getDecryptedPasswordGenerationHistory: (\n options?: StorageOptions\n ) => Promise;\n setDecryptedPasswordGenerationHistory: (\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ) => Promise;\n getDecryptedPinProtected: (options?: StorageOptions) => Promise;\n setDecryptedPinProtected: (value: EncString, options?: StorageOptions) => Promise;\n getDecryptedPolicies: (options?: StorageOptions) => Promise;\n setDecryptedPolicies: (value: Policy[], options?: StorageOptions) => Promise;\n getDecryptedPrivateKey: (options?: StorageOptions) => Promise;\n setDecryptedPrivateKey: (value: ArrayBuffer, options?: StorageOptions) => Promise;\n getDecryptedProviderKeys: (options?: StorageOptions) => Promise>;\n setDecryptedProviderKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getDecryptedSends: (options?: StorageOptions) => Promise;\n setDecryptedSends: (value: SendView[], options?: StorageOptions) => Promise;\n getDefaultUriMatch: (options?: StorageOptions) => Promise;\n setDefaultUriMatch: (value: UriMatchType, options?: StorageOptions) => Promise;\n getDisableAddLoginNotification: (options?: StorageOptions) => Promise;\n setDisableAddLoginNotification: (value: boolean, options?: StorageOptions) => Promise;\n getDisableAutoBiometricsPrompt: (options?: StorageOptions) => Promise;\n setDisableAutoBiometricsPrompt: (value: boolean, options?: StorageOptions) => Promise;\n getDisableAutoTotpCopy: (options?: StorageOptions) => Promise;\n setDisableAutoTotpCopy: (value: boolean, options?: StorageOptions) => Promise;\n getDisableBadgeCounter: (options?: StorageOptions) => Promise;\n setDisableBadgeCounter: (value: boolean, options?: StorageOptions) => Promise;\n getDisableChangedPasswordNotification: (options?: StorageOptions) => Promise;\n setDisableChangedPasswordNotification: (\n value: boolean,\n options?: StorageOptions\n ) => Promise;\n getDisableContextMenuItem: (options?: StorageOptions) => Promise;\n setDisableContextMenuItem: (value: boolean, options?: StorageOptions) => Promise;\n getDisableFavicon: (options?: StorageOptions) => Promise;\n setDisableFavicon: (value: boolean, options?: StorageOptions) => Promise;\n getDisableGa: (options?: StorageOptions) => Promise;\n setDisableGa: (value: boolean, options?: StorageOptions) => Promise;\n getDontShowCardsCurrentTab: (options?: StorageOptions) => Promise;\n setDontShowCardsCurrentTab: (value: boolean, options?: StorageOptions) => Promise;\n getDontShowIdentitiesCurrentTab: (options?: StorageOptions) => Promise;\n setDontShowIdentitiesCurrentTab: (value: boolean, options?: StorageOptions) => Promise;\n getEmail: (options?: StorageOptions) => Promise;\n setEmail: (value: string, options?: StorageOptions) => Promise;\n getEmailVerified: (options?: StorageOptions) => Promise;\n setEmailVerified: (value: boolean, options?: StorageOptions) => Promise;\n getEnableAlwaysOnTop: (options?: StorageOptions) => Promise;\n setEnableAlwaysOnTop: (value: boolean, options?: StorageOptions) => Promise;\n getEnableAutoFillOnPageLoad: (options?: StorageOptions) => Promise;\n setEnableAutoFillOnPageLoad: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBiometric: (options?: StorageOptions) => Promise;\n setEnableBiometric: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBrowserIntegration: (options?: StorageOptions) => Promise;\n setEnableBrowserIntegration: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBrowserIntegrationFingerprint: (options?: StorageOptions) => Promise;\n setEnableBrowserIntegrationFingerprint: (\n value: boolean,\n options?: StorageOptions\n ) => Promise;\n getEnableCloseToTray: (options?: StorageOptions) => Promise;\n setEnableCloseToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableFullWidth: (options?: StorageOptions) => Promise;\n setEnableFullWidth: (value: boolean, options?: StorageOptions) => Promise;\n getEnableGravitars: (options?: StorageOptions) => Promise;\n setEnableGravitars: (value: boolean, options?: StorageOptions) => Promise;\n getEnableMinimizeToTray: (options?: StorageOptions) => Promise;\n setEnableMinimizeToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableStartToTray: (options?: StorageOptions) => Promise;\n setEnableStartToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableTray: (options?: StorageOptions) => Promise;\n setEnableTray: (value: boolean, options?: StorageOptions) => Promise;\n getEncryptedCiphers: (options?: StorageOptions) => Promise<{ [id: string]: CipherData }>;\n setEncryptedCiphers: (\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedCollections: (options?: StorageOptions) => Promise<{ [id: string]: CollectionData }>;\n setEncryptedCollections: (\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedCryptoSymmetricKey: (options?: StorageOptions) => Promise;\n setEncryptedCryptoSymmetricKey: (value: string, options?: StorageOptions) => Promise;\n getEncryptedFolders: (options?: StorageOptions) => Promise<{ [id: string]: FolderData }>;\n setEncryptedFolders: (\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedOrganizationKeys: (options?: StorageOptions) => Promise;\n setEncryptedOrganizationKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getEncryptedPasswordGenerationHistory: (\n options?: StorageOptions\n ) => Promise;\n setEncryptedPasswordGenerationHistory: (\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ) => Promise;\n getEncryptedPinProtected: (options?: StorageOptions) => Promise;\n setEncryptedPinProtected: (value: string, options?: StorageOptions) => Promise;\n getEncryptedPolicies: (options?: StorageOptions) => Promise<{ [id: string]: PolicyData }>;\n setEncryptedPolicies: (\n value: { [id: string]: PolicyData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedPrivateKey: (options?: StorageOptions) => Promise;\n setEncryptedPrivateKey: (value: string, options?: StorageOptions) => Promise;\n getEncryptedProviderKeys: (options?: StorageOptions) => Promise;\n setEncryptedProviderKeys: (value: any, options?: StorageOptions) => Promise;\n getEncryptedSends: (options?: StorageOptions) => Promise<{ [id: string]: SendData }>;\n setEncryptedSends: (value: { [id: string]: SendData }, options?: StorageOptions) => Promise;\n getEntityId: (options?: StorageOptions) => Promise;\n setEntityId: (value: string, options?: StorageOptions) => Promise;\n getEntityType: (options?: StorageOptions) => Promise;\n setEntityType: (value: string, options?: StorageOptions) => Promise;\n getEnvironmentUrls: (options?: StorageOptions) => Promise;\n setEnvironmentUrls: (value: EnvironmentUrls, options?: StorageOptions) => Promise;\n getEquivalentDomains: (options?: StorageOptions) => Promise;\n setEquivalentDomains: (value: string, options?: StorageOptions) => Promise;\n getEventCollection: (options?: StorageOptions) => Promise;\n setEventCollection: (value: EventData[], options?: StorageOptions) => Promise;\n getEverBeenUnlocked: (options?: StorageOptions) => Promise;\n setEverBeenUnlocked: (value: boolean, options?: StorageOptions) => Promise;\n getForcePasswordReset: (options?: StorageOptions) => Promise;\n setForcePasswordReset: (value: boolean, options?: StorageOptions) => Promise;\n getInstalledVersion: (options?: StorageOptions) => Promise;\n setInstalledVersion: (value: string, options?: StorageOptions) => Promise;\n getIsAuthenticated: (options?: StorageOptions) => Promise;\n getKdfIterations: (options?: StorageOptions) => Promise;\n setKdfIterations: (value: number, options?: StorageOptions) => Promise;\n getKdfType: (options?: StorageOptions) => Promise;\n setKdfType: (value: KdfType, options?: StorageOptions) => Promise;\n getKeyHash: (options?: StorageOptions) => Promise;\n setKeyHash: (value: string, options?: StorageOptions) => Promise;\n getLastActive: (options?: StorageOptions) => Promise;\n setLastActive: (value: number, options?: StorageOptions) => Promise;\n getLastSync: (options?: StorageOptions) => Promise;\n setLastSync: (value: string, options?: StorageOptions) => Promise;\n getLegacyEtmKey: (options?: StorageOptions) => Promise;\n setLegacyEtmKey: (value: SymmetricCryptoKey, options?: StorageOptions) => Promise;\n getLocalData: (options?: StorageOptions) => Promise;\n setLocalData: (value: string, options?: StorageOptions) => Promise;\n getLocale: (options?: StorageOptions) => Promise;\n setLocale: (value: string, options?: StorageOptions) => Promise;\n getMainWindowSize: (options?: StorageOptions) => Promise;\n setMainWindowSize: (value: number, options?: StorageOptions) => Promise;\n getMinimizeOnCopyToClipboard: (options?: StorageOptions) => Promise;\n setMinimizeOnCopyToClipboard: (value: boolean, options?: StorageOptions) => Promise;\n getNeverDomains: (options?: StorageOptions) => Promise<{ [id: string]: any }>;\n setNeverDomains: (value: { [id: string]: any }, options?: StorageOptions) => Promise;\n getNoAutoPromptBiometrics: (options?: StorageOptions) => Promise;\n setNoAutoPromptBiometrics: (value: boolean, options?: StorageOptions) => Promise;\n getNoAutoPromptBiometricsText: (options?: StorageOptions) => Promise;\n setNoAutoPromptBiometricsText: (value: string, options?: StorageOptions) => Promise;\n getOpenAtLogin: (options?: StorageOptions) => Promise;\n setOpenAtLogin: (value: boolean, options?: StorageOptions) => Promise;\n getOrganizationInvitation: (options?: StorageOptions) => Promise;\n setOrganizationInvitation: (value: any, options?: StorageOptions) => Promise;\n getOrganizations: (options?: StorageOptions) => Promise<{ [id: string]: OrganizationData }>;\n setOrganizations: (\n value: { [id: string]: OrganizationData },\n options?: StorageOptions\n ) => Promise;\n getPasswordGenerationOptions: (options?: StorageOptions) => Promise;\n setPasswordGenerationOptions: (value: any, options?: StorageOptions) => Promise;\n getUsernameGenerationOptions: (options?: StorageOptions) => Promise;\n setUsernameGenerationOptions: (value: any, options?: StorageOptions) => Promise;\n getGeneratorOptions: (options?: StorageOptions) => Promise;\n setGeneratorOptions: (value: any, options?: StorageOptions) => Promise;\n getProtectedPin: (options?: StorageOptions) => Promise;\n setProtectedPin: (value: string, options?: StorageOptions) => Promise;\n getProviders: (options?: StorageOptions) => Promise<{ [id: string]: ProviderData }>;\n setProviders: (value: { [id: string]: ProviderData }, options?: StorageOptions) => Promise;\n getPublicKey: (options?: StorageOptions) => Promise;\n setPublicKey: (value: ArrayBuffer, options?: StorageOptions) => Promise;\n getRefreshToken: (options?: StorageOptions) => Promise;\n setRefreshToken: (value: string, options?: StorageOptions) => Promise;\n getRememberedEmail: (options?: StorageOptions) => Promise;\n setRememberedEmail: (value: string, options?: StorageOptions) => Promise;\n getSecurityStamp: (options?: StorageOptions) => Promise;\n setSecurityStamp: (value: string, options?: StorageOptions) => Promise;\n getSettings: (options?: StorageOptions) => Promise;\n setSettings: (value: string, options?: StorageOptions) => Promise;\n getSsoCodeVerifier: (options?: StorageOptions) => Promise;\n setSsoCodeVerifier: (value: string, options?: StorageOptions) => Promise;\n getSsoOrgIdentifier: (options?: StorageOptions) => Promise;\n setSsoOrganizationIdentifier: (value: string, options?: StorageOptions) => Promise;\n getSsoState: (options?: StorageOptions) => Promise;\n setSsoState: (value: string, options?: StorageOptions) => Promise;\n getTheme: (options?: StorageOptions) => Promise;\n setTheme: (value: ThemeType, options?: StorageOptions) => Promise;\n getTwoFactorToken: (options?: StorageOptions) => Promise;\n setTwoFactorToken: (value: string, options?: StorageOptions) => Promise;\n getUserId: (options?: StorageOptions) => Promise;\n getUsesKeyConnector: (options?: StorageOptions) => Promise;\n setUsesKeyConnector: (vaule: boolean, options?: StorageOptions) => Promise;\n getVaultTimeout: (options?: StorageOptions) => Promise;\n setVaultTimeout: (value: number, options?: StorageOptions) => Promise;\n getVaultTimeoutAction: (options?: StorageOptions) => Promise;\n setVaultTimeoutAction: (value: string, options?: StorageOptions) => Promise;\n getStateVersion: () => Promise;\n setStateVersion: (value: number) => Promise;\n getWindow: () => Promise;\n setWindow: (value: WindowState) => Promise;\n}\n","export abstract class StateMigrationService {\n needsMigration: () => Promise;\n migrate: () => Promise;\n}\n","import { StorageOptions } from \"../models/domain/storageOptions\";\n\nexport abstract class StorageService {\n get: (key: string, options?: StorageOptions) => Promise;\n has: (key: string, options?: StorageOptions) => Promise;\n save: (key: string, obj: any, options?: StorageOptions) => Promise;\n remove: (key: string, options?: StorageOptions) => Promise;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date, userId?: string) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","import { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport abstract class TokenService {\n setTokens: (\n accessToken: string,\n refreshToken: string,\n clientIdClientSecret: [string, string]\n ) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n setClientId: (clientId: string) => Promise;\n getClientId: () => Promise;\n setClientSecret: (clientSecret: string) => Promise;\n getClientSecret: () => Promise;\n setTwoFactorToken: (tokenResponse: IdentityTokenResponse) => Promise;\n getTwoFactorToken: () => Promise;\n clearTwoFactorToken: () => Promise;\n clearToken: (userId?: string) => Promise;\n decodeToken: (token?: string) => any;\n getTokenExpirationDate: () => Promise;\n tokenSecondsRemaining: (offsetSeconds?: number) => Promise;\n tokenNeedsRefresh: (minutes?: number) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getEmailVerified: () => Promise;\n getName: () => Promise;\n getPremium: () => Promise;\n getIssuer: () => Promise;\n getIsExternal: () => Promise;\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","import { TwoFactorProviderType } from \"../enums/twoFactorProviderType\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\n\nexport interface TwoFactorProviderDetails {\n type: TwoFactorProviderType;\n name: string;\n description: string;\n priority: number;\n sort: number;\n premium: boolean;\n}\n\nexport abstract class TwoFactorService {\n init: () => void;\n getSupportedProviders: (win: Window) => TwoFactorProviderDetails[];\n getDefaultProvider: (webAuthnSupported: boolean) => TwoFactorProviderType;\n setSelectedProvider: (type: TwoFactorProviderType) => void;\n clearSelectedProvider: () => void;\n\n setProviders: (response: IdentityTwoFactorResponse) => void;\n clearProviders: () => void;\n getProviders: () => Map;\n}\n","import { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { Verification } from \"../types/verification\";\n\nexport abstract class UserVerificationService {\n buildRequest: (\n verification: Verification,\n requestClass?: new () => T,\n alreadyHashed?: boolean\n ) => Promise;\n verifyUser: (verification: Verification) => Promise;\n requestOTP: () => Promise;\n}\n","export abstract class UsernameGenerationService {\n generateUsername: (options: any) => Promise;\n generateWord: (options: any) => Promise;\n generateSubaddress: (options: any) => Promise;\n generateCatchall: (options: any) => Promise;\n generateForwarded: (options: any) => Promise;\n getOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n}\n","export abstract class VaultTimeoutService {\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean, userId?: string) => Promise;\n logOut: (userId?: string) => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n getVaultTimeout: () => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: (userId?: string) => Promise;\n}\n","export enum AuthenticationStatus {\n LoggedOut = 0,\n Locked = 1,\n Unlocked = 2,\n}\n","export enum AuthenticationType {\n Password = 0,\n Sso = 1,\n Api = 2,\n}\n","export enum CipherRepromptType {\n None = 0,\n Password = 1,\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","export enum ClientType {\n Web = \"web\",\n Browser = \"browser\",\n Desktop = \"desktop\",\n Mobile = \"mobile\",\n Cli = \"cli\",\n DirectoryConnector = \"connector\",\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","export enum EmergencyAccessType {\n View = 0,\n Takeover = 1,\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n User_UpdatedTempPassword = 1008,\n User_MigratedKeyToKeyConnector = 1009,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n Cipher_ClientToggledCardNumberVisible = 1117,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n OrganizationUser_ResetPassword_Enroll = 1506,\n OrganizationUser_ResetPassword_Withdraw = 1507,\n OrganizationUser_AdminResetPassword = 1508,\n OrganizationUser_ResetSsoLink = 1509,\n OrganizationUser_FirstSsoLogin = 1510,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n Organization_VaultAccessed = 1603,\n Organization_EnabledSso = 1604,\n Organization_DisabledSso = 1605,\n Organization_EnabledKeyConnector = 1606,\n Organization_DisabledKeyConnector = 1607,\n Organization_SponsorshipsSynced = 1608,\n\n Policy_Updated = 1700,\n\n ProviderUser_Invited = 1800,\n ProviderUser_Confirmed = 1801,\n ProviderUser_Updated = 1802,\n ProviderUser_Removed = 1803,\n\n ProviderOrganization_Created = 1900,\n ProviderOrganization_Added = 1901,\n ProviderOrganization_Removed = 1902,\n ProviderOrganization_VaultAccessed = 1903,\n}\n","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n Linked = 3,\n}\n","export enum FileUploadType {\n Direct = 0,\n Azure = 1,\n}\n","export enum HashPurpose {\n ServerAuthorization = 1,\n LocalAuthorization = 2,\n}\n","export enum HtmlStorageLocation {\n Local = \"local\",\n Memory = \"memory\",\n Session = \"session\",\n}\n","export interface ImportOption {\n id: string;\n name: string;\n}\n\nexport const featuredImportOptions = [\n { id: \"bitwardenjson\", name: \"Bitwarden (json)\" },\n { id: \"bitwardencsv\", name: \"Bitwarden (csv)\" },\n { id: \"chromecsv\", name: \"Chrome (csv)\" },\n { id: \"dashlanecsv\", name: \"Dashlane (csv)\" },\n { id: \"firefoxcsv\", name: \"Firefox (csv)\" },\n { id: \"keepass2xml\", name: \"KeePass 2 (xml)\" },\n { id: \"lastpasscsv\", name: \"LastPass (csv)\" },\n { id: \"safaricsv\", name: \"Safari and macOS (csv)\" },\n { id: \"1password1pux\", name: \"1Password (1pux)\" },\n] as const;\n\nexport const regularImportOptions = [\n { id: \"keepassxcsv\", name: \"KeePassX (csv)\" },\n { id: \"1password1pif\", name: \"1Password (1pif)\" },\n { id: \"1passwordwincsv\", name: \"1Password 6 and 7 Windows (csv)\" },\n { id: \"1passwordmaccsv\", name: \"1Password 6 and 7 Mac (csv)\" },\n { id: \"dashlanejson\", name: \"Dashlane (json)\" },\n { id: \"roboformcsv\", name: \"RoboForm (csv)\" },\n { id: \"keepercsv\", name: \"Keeper (csv)\" },\n // Temporarily remove this option for the Feb release\n // { id: \"keeperjson\", name: \"Keeper (json)\" },\n { id: \"enpasscsv\", name: \"Enpass (csv)\" },\n { id: \"enpassjson\", name: \"Enpass (json)\" },\n { id: \"safeincloudxml\", name: \"SafeInCloud (xml)\" },\n { id: \"pwsafexml\", name: \"Password Safe (xml)\" },\n { id: \"stickypasswordxml\", name: \"Sticky Password (xml)\" },\n { id: \"msecurecsv\", name: \"mSecure (csv)\" },\n { id: \"truekeycsv\", name: \"True Key (csv)\" },\n { id: \"passwordbossjson\", name: \"Password Boss (json)\" },\n { id: \"zohovaultcsv\", name: \"Zoho Vault (csv)\" },\n { id: \"splashidcsv\", name: \"SplashID (csv)\" },\n { id: \"passworddragonxml\", name: \"Password Dragon (xml)\" },\n { id: \"padlockcsv\", name: \"Padlock (csv)\" },\n { id: \"passboltcsv\", name: \"Passbolt (csv)\" },\n { id: \"clipperzhtml\", name: \"Clipperz (html)\" },\n { id: \"aviracsv\", name: \"Avira (csv)\" },\n { id: \"saferpasscsv\", name: \"SaferPass (csv)\" },\n { id: \"upmcsv\", name: \"Universal Password Manager (csv)\" },\n { id: \"ascendocsv\", name: \"Ascendo DataVault (csv)\" },\n { id: \"meldiumcsv\", name: \"Meldium (csv)\" },\n { id: \"passkeepcsv\", name: \"PassKeep (csv)\" },\n { id: \"operacsv\", name: \"Opera (csv)\" },\n { id: \"vivaldicsv\", name: \"Vivaldi (csv)\" },\n { id: \"gnomejson\", name: \"GNOME Passwords and Keys/Seahorse (json)\" },\n { id: \"blurcsv\", name: \"Blur (csv)\" },\n { id: \"passwordagentcsv\", name: \"Password Agent (csv)\" },\n { id: \"passpackcsv\", name: \"Passpack (csv)\" },\n { id: \"passmanjson\", name: \"Passman (json)\" },\n { id: \"avastcsv\", name: \"Avast Passwords (csv)\" },\n { id: \"avastjson\", name: \"Avast Passwords (json)\" },\n { id: \"fsecurefsk\", name: \"F-Secure KEY (fsk)\" },\n { id: \"kasperskytxt\", name: \"Kaspersky Password Manager (txt)\" },\n { id: \"remembearcsv\", name: \"RememBear (csv)\" },\n { id: \"passwordwallettxt\", name: \"PasswordWallet (txt)\" },\n { id: \"mykicsv\", name: \"Myki (csv)\" },\n { id: \"securesafecsv\", name: \"SecureSafe (csv)\" },\n { id: \"logmeoncecsv\", name: \"LogMeOnce (csv)\" },\n { id: \"blackberrycsv\", name: \"BlackBerry Password Keeper (csv)\" },\n { id: \"buttercupcsv\", name: \"Buttercup (csv)\" },\n { id: \"codebookcsv\", name: \"Codebook (csv)\" },\n { id: \"encryptrcsv\", name: \"Encryptr (csv)\" },\n { id: \"yoticsv\", name: \"Yoti (csv)\" },\n { id: \"nordpasscsv\", name: \"Nordpass (csv)\" },\n] as const;\n\nexport type ImportType =\n | typeof featuredImportOptions[number][\"id\"]\n | typeof regularImportOptions[number][\"id\"];\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n\nexport const DEFAULT_KDF_TYPE = KdfType.PBKDF2_SHA256;\nexport const DEFAULT_KDF_ITERATIONS = 100000;\nexport const SEND_KDF_ITERATIONS = 100000;\n","export enum KeySuffixOptions {\n Auto = \"auto\",\n Biometric = \"biometric\",\n}\n","export type LinkedIdType = LoginLinkedId | CardLinkedId | IdentityLinkedId;\n\n// LoginView\nexport enum LoginLinkedId {\n Username = 100,\n Password = 101,\n}\n\n// CardView\nexport enum CardLinkedId {\n CardholderName = 300,\n ExpMonth = 301,\n ExpYear = 302,\n Code = 303,\n Brand = 304,\n Number = 305,\n}\n\n// IdentityView\nexport enum IdentityLinkedId {\n Title = 400,\n MiddleName = 401,\n Address1 = 402,\n Address2 = 403,\n Address3 = 404,\n City = 405,\n State = 406,\n PostalCode = 407,\n Country = 408,\n Company = 409,\n Email = 410,\n Phone = 411,\n Ssn = 412,\n Username = 413,\n PassportNumber = 414,\n LicenseNumber = 415,\n FirstName = 416,\n LastName = 417,\n FullName = 418,\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","export enum OrganizationApiKeyType {\n Default = 0,\n BillingSync = 1,\n}\n","export enum OrganizationConnectionType {\n CloudBillingSync = 1,\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","export enum Permissions {\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAllCollections,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization,\n ManagePolicies,\n ManageProvider,\n ManageUsers,\n ManageUsersPassword,\n CreateNewCollections,\n EditAnyCollection,\n DeleteAnyCollection,\n EditAssignedCollections,\n DeleteAssignedCollections,\n ManageSso,\n ManageBilling,\n}\n","export enum PlanSponsorshipType {\n FamiliesForEnterprise = 0,\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n SendOptions = 7, // Sets restrictions or defaults for Bitwarden Sends\n ResetPassword = 8, // Allows orgs to use reset password : also can enable auto-enrollment during invite flow\n MaximumVaultTimeout = 9, // Sets the maximum allowed vault timeout\n DisablePersonalVaultExport = 10, // Disable personal vault export\n}\n","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","export enum ProviderUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export enum ProviderUserType {\n ProviderAdmin = 0,\n ServiceUser = 1,\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","export enum SsoType {\n None = 0,\n OpenIdConnect = 1,\n Saml2 = 2,\n}\n\nexport enum OpenIdConnectRedirectBehavior {\n RedirectGet = 0,\n FormPost = 1,\n}\n\nexport enum Saml2BindingType {\n HttpRedirect = 1,\n HttpPost = 2,\n}\n\nexport enum Saml2NameIdFormat {\n NotConfigured = 0,\n Unspecified = 1,\n EmailAddress = 2,\n X509SubjectName = 3,\n WindowsDomainQualifiedName = 4,\n KerberosPrincipalName = 5,\n EntityIdentifier = 6,\n Persistent = 7,\n Transient = 8,\n}\n\nexport enum Saml2SigningBehavior {\n IfIdpWantAuthnRequestsSigned = 0,\n Always = 1,\n Never = 3,\n}\n","export enum StateVersion {\n One = 1, // Original flat key/value pair store\n Two = 2, // Move to a typed State object\n Three = 3, // Fix migration of users' premium status\n Four = 4, // Fix 'Never Lock' option by removing stale data\n Latest = Four,\n}\n","export enum StorageLocation {\n Both = \"both\",\n Disk = \"disk\",\n Memory = \"memory\",\n}\n","export enum ThemeType {\n System = \"system\",\n Light = \"light\",\n Dark = \"dark\",\n Nord = \"nord\",\n SolarizedDark = \"solarizedDark\",\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n WebAuthn = 7,\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","export enum VerificationType {\n MasterPassword = 0,\n OTP = 1,\n}\n","import { Account } from \"../models/domain/account\";\n\nexport class AccountFactory {\n private accountConstructor: new (init: Partial) => T;\n\n constructor(accountConstructor: new (init: Partial) => T) {\n this.accountConstructor = accountConstructor;\n }\n\n create(args: Partial) {\n return new this.accountConstructor(args);\n }\n}\n","import { GlobalState } from \"../models/domain/globalState\";\n\nexport class GlobalStateFactory {\n private globalStateConstructor: new (init: Partial) => T;\n\n constructor(globalStateConstructor: new (init: Partial) => T) {\n this.globalStateConstructor = globalStateConstructor;\n }\n\n create(args?: Partial) {\n return new this.globalStateConstructor(args);\n }\n}\n","import { Account } from \"../models/domain/account\";\nimport { GlobalState } from \"../models/domain/globalState\";\n\nimport { AccountFactory } from \"./accountFactory\";\nimport { GlobalStateFactory } from \"./globalStateFactory\";\n\nexport class StateFactory<\n TGlobal extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n private globalStateFactory: GlobalStateFactory;\n private accountFactory: AccountFactory;\n\n constructor(\n globalStateConstructor: new (init: Partial) => TGlobal,\n accountConstructor: new (init: Partial) => TAccount\n ) {\n this.globalStateFactory = new GlobalStateFactory(globalStateConstructor);\n this.accountFactory = new AccountFactory(accountConstructor);\n }\n\n createGlobal(args: Partial): TGlobal {\n return this.globalStateFactory.create(args);\n }\n\n createAccount(args: Partial): TAccount {\n return this.accountFactory.create(args);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n if (value.length > 2 && value.length % 2 === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (\n cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + \"\";\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + \"\";\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(\n value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), \"--\")\n );\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (\n this.isNullOrWhitespace(value.username) &&\n !this.isNullOrWhitespace(value.secondary_username)\n ) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import * as papa from \"papaparse\";\n\nimport { LogService } from \"../abstractions/log.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { Utils } from \"../misc/utils\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { LoginUriView } from \"../models/view/loginUriView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\nimport { ConsoleLogService } from \"../services/consoleLog.service\";\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n \"password\",\n \"pass word\",\n \"passphrase\",\n \"pass phrase\",\n \"pass\",\n \"code\",\n \"code word\",\n \"codeword\",\n \"secret\",\n \"secret word\",\n \"personpwd\",\n \"key\",\n \"keyword\",\n \"key word\",\n \"keyphrase\",\n \"key phrase\",\n \"form_pw\",\n \"wppassword\",\n \"pin\",\n \"pwd\",\n \"pw\",\n \"pword\",\n \"passwd\",\n \"p\",\n \"serial\",\n \"serial#\",\n \"license key\",\n \"reg #\",\n\n // Non-English names\n \"passwort\",\n ];\n\n protected usernameFieldNames = [\n \"user\",\n \"name\",\n \"user name\",\n \"username\",\n \"login name\",\n \"email\",\n \"e-mail\",\n \"id\",\n \"userid\",\n \"user id\",\n \"login\",\n \"form_loginname\",\n \"wpname\",\n \"mail\",\n \"loginid\",\n \"login id\",\n \"log\",\n \"personlogin\",\n \"first name\",\n \"last name\",\n \"card#\",\n \"account #\",\n \"member\",\n \"member #\",\n\n // Non-English names\n \"nom\",\n \"benutzername\",\n ];\n\n protected notesFieldNames = [\n \"note\",\n \"notes\",\n \"comment\",\n \"comments\",\n \"memo\",\n \"description\",\n \"free form\",\n \"freeform\",\n \"free text\",\n \"freetext\",\n \"free\",\n\n // Non-English names\n \"kommentar\",\n ];\n\n protected uriFieldNames: string[] = [\n \"url\",\n \"hyper link\",\n \"hyperlink\",\n \"link\",\n \"host\",\n \"hostname\",\n \"host name\",\n \"server\",\n \"address\",\n \"hyper ref\",\n \"href\",\n \"web\",\n \"website\",\n \"web site\",\n \"site\",\n \"web-site\",\n \"uri\",\n\n // Non-English names\n \"ort\",\n \"adresse\",\n ];\n\n protected parseCsvOptions = {\n encoding: \"UTF-8\",\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, \"application/xml\");\n return doc != null && doc.querySelector(\"parsererror\") == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions: papa.ParseConfig = Object.assign(\n { header: header },\n this.parseCsvOptions,\n options\n );\n data = this.splitNewLine(data).join(\"\\n\").trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach((e) => {\n if (e.row != null) {\n this.logService.warning(\"Error parsing row \" + e.row + \": \" + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === \"string\") {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach((u) => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf(\"://\") === -1 && uri.indexOf(\".\") >= 0) {\n uri = \"http://\" + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith(\"www.\") ? hostname.replace(\"www.\", \"\") : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp(\"^4\");\n if (cardNum.match(re) != null) {\n return \"Visa\";\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (\n /^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(\n cardNum\n )\n ) {\n return \"Mastercard\";\n }\n\n // AMEX\n re = new RegExp(\"^3[47]\");\n if (cardNum.match(re) != null) {\n return \"Amex\";\n }\n\n // Discover\n re = new RegExp(\n \"^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)\"\n );\n if (cardNum.match(re) != null) {\n return \"Discover\";\n }\n\n // Diners\n re = new RegExp(\"^36\");\n if (cardNum.match(re) != null) {\n return \"Diners Club\";\n }\n\n // Diners - Carte Blanche\n re = new RegExp(\"^30[0-5]\");\n if (cardNum.match(re) != null) {\n return \"Diners Club\";\n }\n\n // JCB\n re = new RegExp(\"^35(2[89]|[3-8][0-9])\");\n if (cardNum.match(re) != null) {\n return \"JCB\";\n }\n\n // Visa Electron\n re = new RegExp(\"^(4026|417500|4508|4844|491(3|7))\");\n if (cardNum.match(re) != null) {\n return \"Visa\";\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n expiration = expiration.replace(/\\s/g, \"\");\n const parts = expiration.split(\"/\");\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === \"0\") {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? \"20\" + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach((r) => result.collectionRelationships.push(r));\n result.collections = result.folders.map((f) => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter((el) => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = \"\";\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = \"--\";\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(\n cipher: CipherView,\n key: string,\n value: string,\n type: FieldType = FieldType.Text\n ) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = \"\";\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = \"\";\n }\n cipher.notes += key + \": \" + this.splitNewLine(value).join(\"\\n\") + \"\\n\";\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (\n cipher.type === CipherType.Login &&\n this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)\n ) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n\n protected processFullName(cipher: CipherView, fullName: string) {\n if (this.isNullOrWhitespace(fullName)) {\n return;\n }\n\n const nameParts = fullName.split(\" \");\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length >= 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = nameParts.slice(2, nameParts.length).join(\" \");\n }\n }\n}\n","import { CipherRepromptType } from \"../enums/cipherRepromptType\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(\",\");\n collections.forEach((col) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite =\n !this.organization && this.getValueOrDefault(value.favorite, \"0\") !== \"0\" ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n try {\n cipher.reprompt = parseInt(\n this.getValueOrDefault(value.reprompt, CipherRepromptType.None.toString()),\n 10\n );\n } catch (e) {\n // eslint-disable-next-line\n console.error(\"Unable to parse reprompt value\", e);\n cipher.reprompt = CipherRepromptType.None;\n }\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(\": \");\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > delimPosition + 2) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case \"note\":\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default: {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { EncString } from \"../models/domain/encString\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherWithIdExport } from \"../models/export/cipherWithIdsExport\";\nimport { CollectionWithIdExport } from \"../models/export/collectionWithIdExport\";\nimport { FolderWithIdExport } from \"../models/export/folderWithIdExport\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService) {\n super();\n }\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null) {\n if (this.results?.passwordProtected) {\n this.result.success = false;\n this.result.missingPassword = true;\n this.result.errorMessage = this.i18nService.t(\"importPasswordRequired\");\n return this.result;\n }\n\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n return this.result;\n }\n\n private async parseEncrypted() {\n if (this.results.encKeyValidation_DO_NOT_EDIT != null) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const encKeyValidation = new EncString(this.results.encKeyValidation_DO_NOT_EDIT);\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(\n encKeyValidation,\n orgKey\n );\n if (encKeyValidationDecrypt === null) {\n this.result.success = false;\n this.result.errorMessage = this.i18nService.t(\"importEncKeyError\");\n return;\n }\n }\n\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithIdExport[]) {\n const collection = CollectionWithIdExport.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithIdExport[]) {\n const folder = FolderWithIdExport.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIdExport[]) {\n const cipher = CipherWithIdExport.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(c.folderId),\n ]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach((cId) => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(cId),\n ]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n\n this.result.success = true;\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithIdExport) => {\n const collection = CollectionWithIdExport.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithIdExport) => {\n const folder = FolderWithIdExport.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIdExport) => {\n const cipher = CipherWithIdExport.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(c.folderId),\n ]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach((cId) => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(cId),\n ]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { EncString } from \"../models/domain/encString\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nimport { BitwardenJsonImporter } from \"./bitwardenJsonImporter\";\nimport { Importer } from \"./importer\";\n\ninterface BitwardenPasswordProtectedFileFormat {\n encrypted: boolean;\n passwordProtected: boolean;\n salt: string;\n kdfIterations: number;\n kdfType: number;\n encKeyValidation_DO_NOT_EDIT: string;\n data: string;\n}\n\nexport class BitwardenPasswordProtectedImporter extends BitwardenJsonImporter implements Importer {\n private key: SymmetricCryptoKey;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService, private password: string) {\n super(cryptoService, i18nService);\n }\n\n async parse(data: string): Promise {\n const result = new ImportResult();\n const parsedData = JSON.parse(data);\n if (this.cannotParseFile(parsedData)) {\n result.success = false;\n return result;\n }\n\n if (!(await this.checkPassword(parsedData))) {\n result.success = false;\n result.errorMessage = this.i18nService.t(\"importEncKeyError\");\n return result;\n }\n\n const encData = new EncString(parsedData.data);\n const clearTextData = await this.cryptoService.decryptToUtf8(encData, this.key);\n return await super.parse(clearTextData);\n }\n\n private async checkPassword(jdoc: BitwardenPasswordProtectedFileFormat): Promise {\n this.key = await this.cryptoService.makePinKey(\n this.password,\n jdoc.salt,\n KdfType.PBKDF2_SHA256,\n jdoc.kdfIterations\n );\n\n const encKeyValidation = new EncString(jdoc.encKeyValidation_DO_NOT_EDIT);\n\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(\n encKeyValidation,\n this.key\n );\n if (encKeyValidationDecrypt === null) {\n return false;\n }\n return true;\n }\n\n private cannotParseFile(jdoc: BitwardenPasswordProtectedFileFormat): boolean {\n return (\n !jdoc ||\n !jdoc.encrypted ||\n !jdoc.passwordProtected ||\n !jdoc.salt ||\n !jdoc.kdfIterations ||\n typeof jdoc.kdfIterations !== \"number\" ||\n jdoc.kdfType == null ||\n KdfType[jdoc.kdfType] == null ||\n !jdoc.encKeyValidation_DO_NOT_EDIT ||\n !jdoc.data\n );\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.grouping === \"list\") {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === \"1\";\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== \"note\") {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.label === \"null\") {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(\n value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), \"--\")\n );\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst OfficialProps = [\"!group_id\", \"!group_name\", \"title\", \"username\", \"password\", \"URL\", \"id\"];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value[\"!group_name\"]));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n // eslint-disable-next-line\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector(\"textarea\");\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = \"Missing textarea.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(\" \")[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split(\"\\\\n\").join(\"\\n\");\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n // eslint-disable-next-line\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case \"password\":\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case \"email\":\n case \"username\":\n case \"user\":\n case \"name\":\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case \"url\":\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default: {\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (\n cipher.login.password == null &&\n this.passwordFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (\n cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === \"True\";\n cipher.name = this.getValueOrDefault(value.Entry, \"--\");\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, \"Email\", value.Email);\n }\n this.processKvp(cipher, \"Phone\", value.Phone);\n this.processKvp(cipher, \"PIN\", value.PIN);\n this.processKvp(cipher, \"Account\", value.Account);\n this.processKvp(cipher, \"Date\", value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport {\n CredentialsRecord,\n IdRecord,\n PaymentsRecord,\n PersonalInformationRecord,\n SecureNoteRecord,\n} from \"./types/dashlaneCsvTypes\";\n\nconst _mappedCredentialsColums = new Set([\n \"title\",\n \"note\",\n \"username\",\n \"password\",\n \"url\",\n \"otpSecret\",\n \"category\",\n]);\n\nconst _mappedPersonalInfoAsIdentiyColumns = new Set([\n \"type\",\n \"title\",\n \"first_name\",\n \"middle_name\",\n \"last_name\",\n \"login\",\n \"email\",\n \"phone_number\",\n \"address\",\n \"country\",\n \"state\",\n \"city\",\n \"zip\",\n // Skip item_name as we already have set a combined name\n \"item_name\",\n]);\n\nconst _mappedSecureNoteColumns = new Set([\"title\", \"note\"]);\n\nexport class DashlaneCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results[0].type != null && results[0].title != null) {\n const personalRecords = results as PersonalInformationRecord[];\n\n // If personalRecords has only one \"name\" then create an Identity-Cipher\n if (personalRecords.filter((x) => x.type === \"name\").length === 1) {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n results.forEach((row) => {\n this.parsePersonalInformationRecordAsIdentity(cipher, row);\n });\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n result.success = true;\n return Promise.resolve(result);\n }\n }\n\n results.forEach((row) => {\n const cipher = this.initLoginCipher();\n\n const rowKeys = Object.keys(row);\n if (rowKeys[0] === \"username\") {\n this.processFolder(result, row.category);\n this.parseCredentialsRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"type\" && rowKeys[1] === \"account_name\") {\n this.parsePaymentRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"type\" && rowKeys[1] === \"number\") {\n this.parseIdRecord(cipher, row);\n }\n\n if ((rowKeys[0] === \"type\") != null && rowKeys[1] === \"title\") {\n this.parsePersonalInformationRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"title\" && rowKeys[1] === \"note\") {\n this.parseSecureNoteRecords(cipher, row);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n parseCredentialsRecord(cipher: CipherView, row: CredentialsRecord) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n cipher.name = row.title;\n cipher.notes = row.note;\n cipher.login.username = row.username;\n cipher.login.password = row.password;\n cipher.login.totp = row.otpSecret;\n cipher.login.uris = this.makeUriArray(row.url);\n\n this.importUnmappedFields(cipher, row, _mappedCredentialsColums);\n }\n\n parsePaymentRecord(cipher: CipherView, row: PaymentsRecord) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n\n cipher.name = row.account_name;\n let mappedValues: string[] = [];\n switch (row.type) {\n case \"credit_card\":\n cipher.card.cardholderName = row.account_name;\n cipher.card.number = row.cc_number;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = row.code;\n cipher.card.expMonth = row.expiration_month;\n cipher.card.expYear = row.expiration_year.substring(2, 4);\n\n // If you add more mapped fields please extend this\n mappedValues = [\n \"account_name\",\n \"account_holder\",\n \"cc_number\",\n \"code\",\n \"expiration_month\",\n \"expiration_year\",\n ];\n break;\n case \"bank\":\n cipher.card.cardholderName = row.account_holder;\n cipher.card.number = row.account_number;\n\n // If you add more mapped fields please extend this\n mappedValues = [\"account_name\", \"account_holder\", \"account_number\"];\n break;\n default:\n break;\n }\n\n this.importUnmappedFields(cipher, row, new Set(mappedValues));\n }\n\n parseIdRecord(cipher: CipherView, row: IdRecord) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n\n const mappedValues: string[] = [\"name\", \"number\"];\n switch (row.type) {\n case \"card\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.licenseNumber = row.number;\n break;\n case \"passport\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.passportNumber = row.number;\n break;\n case \"license\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.licenseNumber = row.number;\n cipher.identity.state = row.state;\n\n mappedValues.push(\"state\");\n break;\n case \"social_security\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.ssn = row.number;\n break;\n case \"tax_number\":\n cipher.name = row.type;\n cipher.identity.licenseNumber = row.number;\n break;\n\n default:\n break;\n }\n\n // If you add more mapped fields please extend this\n this.importUnmappedFields(cipher, row, new Set(mappedValues));\n }\n\n parsePersonalInformationRecord(cipher: CipherView, row: PersonalInformationRecord) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (row.type === \"name\") {\n cipher.name = `${row.title} ${row.first_name} ${row.middle_name} ${row.last_name}`\n .replace(\" \", \" \")\n .trim();\n } else {\n cipher.name = row.item_name;\n }\n\n const dataRow = row as any;\n Object.keys(row).forEach((key) => {\n this.processKvp(cipher, key, dataRow[key]);\n });\n }\n\n parsePersonalInformationRecordAsIdentity(cipher: CipherView, row: PersonalInformationRecord) {\n switch (row.type) {\n case \"name\":\n this.processFullName(cipher, `${row.first_name} ${row.middle_name} ${row.last_name}`);\n cipher.identity.title = row.title;\n cipher.name = cipher.identity.fullName;\n\n cipher.identity.username = row.login;\n break;\n case \"email\":\n cipher.identity.email = row.email;\n break;\n case \"number\":\n cipher.identity.phone = row.phone_number;\n break;\n case \"address\":\n cipher.identity.address1 = row.address;\n cipher.identity.city = row.city;\n cipher.identity.postalCode = row.zip;\n cipher.identity.state = row.state;\n cipher.identity.country = row.country;\n break;\n default:\n break;\n }\n\n this.importUnmappedFields(cipher, row, _mappedPersonalInfoAsIdentiyColumns);\n }\n\n parseSecureNoteRecords(cipher: CipherView, row: SecureNoteRecord) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = row.title;\n cipher.notes = row.note;\n\n this.importUnmappedFields(cipher, row, _mappedSecureNoteColumns);\n }\n\n importUnmappedFields(cipher: CipherView, row: any, mappedValues: Set) {\n const unmappedFields = Object.keys(row).filter((x) => !mappedValues.has(x));\n unmappedFields.forEach((key) => {\n const item = row as any;\n this.processKvp(cipher, key, item[key]);\n });\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nconst HandledResults = new Set([\n \"ADDRESS\",\n \"AUTHENTIFIANT\",\n \"BANKSTATEMENT\",\n \"IDCARD\",\n \"IDENTITY\",\n \"PAYMENTMEANS_CREDITCARD\",\n \"PAYMENTMEAN_PAYPAL\",\n \"EMAIL\",\n]);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, \"BankAccountName\");\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, \"Fullname\");\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n // eslint-disable-next-line\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, \"Generic Note\");\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(\n credential.login,\n this.getValueOrDefault(credential.secondaryLogin)\n );\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = \"Email: \" + credential.email + \"\\n\";\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, \"\");\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, \"\");\n const nameParts = cipher.name.split(\" \");\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += \" - \" + cipher.card.brand;\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n // eslint-disable-next-line\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, \"--\");\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += \"\\n\\n\" + text;\n }\n }\n\n const type = value[\"Entry Type\"];\n if (type === \"Password\") {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value[\"Site URL\"]);\n } else if (type === \"Credit Card\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value[\"Name on card\"]);\n cipher.card.number = this.getValueOrDefault(value[\"Card Number\"]);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split(\"/\");\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach((value) => {\n if (value.length < 2 || (firstRow && (value[0] === \"Title\" || value[0] === \"title\"))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n if (\n value.length === 2 ||\n (!this.containsField(value, \"username\") &&\n !this.containsField(value, \"password\") &&\n !this.containsField(value, \"email\") &&\n !this.containsField(value, \"url\"))\n ) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (\n this.containsField(value, \"cardholder\") &&\n this.containsField(value, \"number\") &&\n this.containsField(value, \"expiry date\")\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && value.length % 2 === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (\n fieldNameLower === \"url\" &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)\n ) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if (\n (fieldNameLower === \"username\" || fieldNameLower === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = fieldValue;\n continue;\n } else if (\n fieldNameLower === \"password\" &&\n this.isNullOrWhitespace(cipher.login.password)\n ) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === \"totp\" && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (\n fieldNameLower === \"cardholder\" &&\n this.isNullOrWhitespace(cipher.card.cardholderName)\n ) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === \"number\" && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === \"cvc\" && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (\n fieldNameLower === \"expiry date\" &&\n this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)\n ) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === \"type\") {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return (\n fields.filter((f) => !this.isNullOrWhitespace(f) && f.toLowerCase() === name.toLowerCase())\n .length > 0\n );\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([\n result.ciphers.length,\n foldersIndexMap.get(item.folders[0]),\n ]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (\n item.template_type.indexOf(\"login.\") === 0 ||\n item.template_type.indexOf(\"password.\") === 0\n ) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf(\"creditcard.\") === 0) {\n this.processCard(cipher, item.fields);\n } else if (\n item.template_type.indexOf(\"identity.\") < 0 &&\n item.fields.some((f: any) => f.type === \"password\" && !this.isNullOrWhitespace(f.value))\n ) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += \"\\n\" + this.getValueOrDefault(item.note, \"\");\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === \"section\") {\n return;\n }\n\n if (\n (field.type === \"username\" || field.type === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = field.value;\n } else if (field.type === \"password\" && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === \"totp\" && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === \"url\") {\n urls.push(field.value);\n } else {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (\n this.isNullOrWhitespace(field.value) ||\n field.type === \"section\" ||\n field.type === \"ccType\"\n ) {\n return;\n }\n\n if (field.type === \"ccName\" && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === \"ccNumber\" && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === \"ccCvc\" && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === \"ccExpiry\" && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n } else {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === \"section\") {\n return;\n }\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== \"\" && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== \"\") {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== \"\") {\n title = titlePrefix + \"/\" + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results\n .filter((value) => {\n return value.url !== \"chrome://FirefoxAccounts\";\n })\n .forEach((value) => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n // eslint-disable-next-line\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === \"website\" || value.style === \"globe\") {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === \"creditcard\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, \"Expiration\", value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, \"PIN\", value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (\n !results.hasOwnProperty(keyRing) || // eslint-disable-line\n this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0\n ) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (\n this.isNullOrWhitespace(value.display_name) ||\n value.display_name.indexOf(\"http\") !== 0\n ) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace(\"http://\", \"\").replace(\"https://\", \"\");\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username =\n value.attributes != null\n ? this.getValueOrDefault(value.attributes.username_value)\n : null;\n for (const attr in value.attributes) {\n if (\n !value.attributes.hasOwnProperty(attr) || // eslint-disable-line\n attr === \"username_value\" ||\n attr === \"xdg:schema\"\n ) {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","export class ImportError extends Error {\n constructor(message?: string, public passwordRequired: boolean = false) {\n super(message);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst NotesHeader = \"Notes\\n\\n\";\nconst ApplicationsHeader = \"Applications\\n\\n\";\nconst WebsitesHeader = \"Websites\\n\\n\";\nconst Delimiter = \"\\n---\\n\";\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join(\"\\n\");\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach((n) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get(\"Name\"));\n cipher.notes = this.getValueOrDefault(n.get(\"Text\"));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach((w) => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has(\"Website name\") ? \"Website name\" : \"Application\";\n cipher.name = this.getValueOrDefault(w.get(nameKey), \"\");\n if (!this.isNullOrWhitespace(w.get(\"Login name\"))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += \": \";\n }\n cipher.name += w.get(\"Login name\");\n }\n cipher.notes = this.getValueOrDefault(w.get(\"Comment\"));\n if (w.has(\"Website URL\")) {\n cipher.login.uris = this.makeUriArray(w.get(\"Website URL\"));\n }\n cipher.login.username = this.getValueOrDefault(w.get(\"Login\"));\n cipher.login.password = this.getValueOrDefault(w.get(\"Password\"));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach((p) => {\n if (p.indexOf(\"\\n\") === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split(\"\\n\").forEach((l) => {\n if (itemComment != null) {\n itemComment += \"\\n\" + l;\n return;\n }\n const colonIndex = l.indexOf(\":\");\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === \"Comment\" || key === \"Text\") {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { FieldType } from \"../enums/fieldType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector(\"KeePassFile > Root > Group\");\n if (rootGroup == null) {\n this.result.errorMessage = \"Missing `KeePassFile > Root > Group` node.\";\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, \"\");\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== \"\") {\n groupName += \"/\";\n }\n const nameEl = this.querySelectorDirectChild(node, \"Name\");\n groupName += nameEl == null ? \"-\" : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, \"Entry\").forEach((entry) => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, \"String\").forEach((entryString) => {\n const valueEl = this.querySelectorDirectChild(entryString, \"Value\");\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, \"Key\");\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === \"URL\") {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === \"UserName\") {\n cipher.login.username = value;\n } else if (key === \"Password\") {\n cipher.login.password = value;\n } else if (key === \"otp\") {\n cipher.login.totp = value.replace(\"key=\", \"\");\n } else if (key === \"Title\") {\n cipher.name = value;\n } else if (key === \"Notes\") {\n cipher.notes += value + \"\\n\";\n } else {\n let type = FieldType.Text;\n const attrs = valueEl.attributes as any;\n if (\n attrs.length > 0 &&\n attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === \"True\"\n ) {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, \"Group\").forEach((group) => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group =\n !this.isNullOrWhitespace(value.Group) && value.Group.startsWith(\"Root/\")\n ? value.Group.replace(\"Root/\", \"\")\n : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../../models/domain/importResult\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + \"\\n\";\n cipher.name = this.getValueOrDefault(value[1], \"--\");\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { IdentityView } from \"../models/view/identityView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n // eslint-disable-next-line\n grouping = grouping.replace(/\\\\/g, \"/\").replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, \"\");\n }\n const hasFolder = this.getValueOrDefault(grouping, \"(none)\") !== \"(none)\";\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.totp);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n // eslint-disable-next-line\n if (value.hasOwnProperty(\"profilename\") && value.hasOwnProperty(\"profilelanguage\")) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, \"--\");\n cipher.type = CipherType.Card;\n\n if (\n !this.isNullOrWhitespace(value.title) ||\n !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) ||\n !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) ||\n !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)\n ) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, \"0\") === \"1\";\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.type = value.url === \"http://sn\" ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf(\"-\") > -1) {\n const ccexpParts = (value.ccexp as string).split(\"-\");\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === \"0\") {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(\":\");\n if (\n typeParts.length > 1 &&\n typeParts[0] === \"NoteType\" &&\n (typeParts[1] === \"Credit Card\" || typeParts[1] === \"Address\")\n ) {\n if (typeParts[1] === \"Credit Card\") {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n Number: \"number\",\n \"Name on Card\": \"cardholderName\",\n \"Security Code\": \"code\",\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n \"Expiration Date\": \"expMonth\",\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === \",\") {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(\",\");\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + \" 1, 2012\")).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === \"Address\") {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n Title: \"title\",\n \"First Name\": \"firstName\",\n \"Last Name\": \"lastName\",\n \"Middle Name\": \"middleName\",\n Company: \"company\",\n \"Address 1\": \"address1\",\n \"Address 2\": \"address2\",\n \"Address 3\": \"address3\",\n \"City / Town\": \"city\",\n State: \"state\",\n \"Zip / Postal Code\": \"postalCode\",\n Country: \"country\",\n \"Email Address\": \"email\",\n Username: \"username\",\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach((extraPart) => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(\":\");\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === \"NoteType\") {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += \"\\n\" + extraPart;\n } else if (key === \"Notes\") {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += \"\\n\" + val;\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n // eslint-disable-next-line\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, \"--\");\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n const folderName =\n this.getValueOrDefault(value[0], \"Unassigned\") !== \"Unassigned\" ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], \"--\");\n\n if (value[1] === \"Web Logins\" || value[1] === \"Login\") {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split(\"\\\\n\").join(\"\\n\") : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += value[i] + \"\\n\";\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + \": \" + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { IdentityView } from \"../models/view/identityView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst mappedBaseColumns = [\"nickname\", \"additionalInfo\"];\nconst _mappedUserAccountColumns = new Set(\n mappedBaseColumns.concat([\"url\", \"username\", \"password\", \"twofaSecret\"])\n);\nconst _mappedCreditCardColumns = new Set(\n mappedBaseColumns.concat([\"cardNumber\", \"cardName\", \"exp_month\", \"exp_year\", \"cvv\"])\n);\n\nconst _mappedIdentityColumns = new Set(\n mappedBaseColumns.concat([\n \"title\",\n \"firstName\",\n \"middleName\",\n \"lastName\",\n \"email\",\n \"firstAddressLine\",\n \"secondAddressLine\",\n \"city\",\n \"country\",\n \"zipCode\",\n ])\n);\n\nconst _mappedIdCardColumns = new Set(mappedBaseColumns.concat([\"idName\", \"idNumber\", \"idCountry\"]));\n\nconst _mappedTwoFaColumns = new Set(mappedBaseColumns.concat([\"authToken\"]));\n\nconst _mappedUserNoteColumns = new Set(mappedBaseColumns.concat([\"content\"]));\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, \"--\");\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twofaSecret);\n\n this.importUnmappedFields(cipher, value, _mappedUserAccountColumns);\n } else if (value.authToken !== undefined) {\n // TwoFA\n cipher.login.totp = this.getValueOrDefault(value.authToken);\n\n this.importUnmappedFields(cipher, value, _mappedTwoFaColumns);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n\n this.importUnmappedFields(cipher, value, _mappedCreditCardColumns);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n\n this.importUnmappedFields(cipher, value, _mappedIdentityColumns);\n } else if (value.idType !== undefined) {\n // IdCards\n\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n this.processFullName(cipher, value.idName);\n cipher.identity.country = this.getValueOrDefault(value.idCountry);\n\n switch (value.idType) {\n // case \"Driver's License\":\n // case \"ID Card\":\n // case \"Outdoor License\":\n // case \"Software License\":\n // case \"Tax Number\":\n // case \"Bank Account\":\n // case \"Insurance Card\":\n // case \"Health Card\":\n // case \"Membership\":\n // case \"Database\":\n // case \"Reward Program\":\n // case \"Tour Visa\":\n case \"Passport\":\n cipher.identity.passportNumber = value.idNumber;\n break;\n case \"Social Security\":\n cipher.identity.ssn = value.idNumber;\n break;\n default:\n cipher.identity.licenseNumber = value.idNumber;\n break;\n }\n\n this.importUnmappedFields(cipher, value, _mappedIdCardColumns);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.content);\n\n this.importUnmappedFields(cipher, value, _mappedUserNoteColumns);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n importUnmappedFields(cipher: CipherView, row: any, mappedValues: Set) {\n const unmappedFields = Object.keys(row).filter((x) => !mappedValues.has(x));\n unmappedFields.forEach((key) => {\n const item = row as any;\n this.processKvp(cipher, key, item[key]);\n });\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { LoginView } from \"../models/view/loginView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\ntype nodePassCsvParsed = {\n name: string;\n url: string;\n username: string;\n password: string;\n note: string;\n cardholdername: string;\n cardnumber: string;\n cvc: string;\n expirydate: string;\n zipcode: string;\n folder: string;\n full_name: string;\n phone_number: string;\n email: string;\n address1: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n};\n\nexport class NordPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results: nodePassCsvParsed[] = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((record) => {\n const recordType = this.evaluateType(record);\n if (recordType === undefined) {\n return;\n }\n\n if (!this.organization) {\n this.processFolder(result, record.folder);\n }\n\n const cipher = new CipherView();\n cipher.name = this.getValueOrDefault(record.name, \"--\");\n cipher.notes = this.getValueOrDefault(record.note);\n\n switch (recordType) {\n case CipherType.Login:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.username = this.getValueOrDefault(record.username);\n cipher.login.password = this.getValueOrDefault(record.password);\n cipher.login.uris = this.makeUriArray(record.url);\n break;\n case CipherType.Card:\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(record.cardholdername);\n cipher.card.number = this.getValueOrDefault(record.cardnumber);\n cipher.card.code = this.getValueOrDefault(record.cvc);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n this.setCardExpiration(cipher, record.expirydate);\n break;\n\n case CipherType.Identity:\n cipher.type = CipherType.Identity;\n\n this.processFullName(cipher, this.getValueOrDefault(record.full_name));\n cipher.identity.address1 = this.getValueOrDefault(record.address1);\n cipher.identity.address2 = this.getValueOrDefault(record.address2);\n cipher.identity.city = this.getValueOrDefault(record.city);\n cipher.identity.state = this.getValueOrDefault(record.state);\n cipher.identity.postalCode = this.getValueOrDefault(record.zipcode);\n cipher.identity.country = this.getValueOrDefault(record.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n cipher.identity.email = this.getValueOrDefault(record.email);\n cipher.identity.phone = this.getValueOrDefault(record.phone_number);\n break;\n case CipherType.SecureNote:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n break;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private evaluateType(record: nodePassCsvParsed): CipherType {\n if (!this.isNullOrWhitespace(record.username)) {\n return CipherType.Login;\n }\n\n if (!this.isNullOrWhitespace(record.cardnumber)) {\n return CipherType.Card;\n }\n\n if (!this.isNullOrWhitespace(record.full_name)) {\n return CipherType.Identity;\n }\n\n if (!this.isNullOrWhitespace(record.note)) {\n return CipherType.SecureNote;\n }\n\n return undefined;\n }\n}\n","import { CipherView } from \"../../models/view/cipherView\";\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { PasswordHistoryView } from \"../../models/view/passwordHistoryView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach((line) => {\n if (this.isNullOrWhitespace(line) || line[0] !== \"{\") {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (\n !this.isNullOrWhitespace(item.details.ccnum) ||\n !this.isNullOrWhitespace(item.details.cvv)\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (\n !this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)\n ) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, \"designation\", \"value\", \"name\");\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, \"n\", \"v\", \"t\");\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === \"securenotes.SecureNote\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === \"wallet.financial.CreditCard\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === \"identities.Identity\") {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, \"designation\", \"value\", \"name\");\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, \"n\", \"v\", \"t\");\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date((\"\" + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(\n fields: any[],\n cipher: CipherView,\n designationKey: string,\n valueKey: string,\n nameKey: string\n ) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === \"\") {\n return;\n }\n\n // TODO: when date FieldType exists, store this as a date field type instead of formatted Text if k is 'date'\n const fieldValue =\n field.k === \"date\"\n ? new Date(field[valueKey] * 1000).toUTCString()\n : field[valueKey].toString();\n const fieldDesignation =\n field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === \"username\") {\n cipher.login.username = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.login.password) &&\n fieldDesignation === \"password\"\n ) {\n cipher.login.password = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.login.totp) &&\n fieldDesignation != null &&\n fieldDesignation.startsWith(\"TOTP_\")\n ) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === \"ccnum\") {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === \"cvv\") {\n cipher.card.code = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.card.cardholderName) &&\n fieldDesignation === \"cardholder\"\n ) {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.card.expiration) &&\n fieldDesignation === \"expiry\" &&\n fieldValue.length === 6\n ) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === \"0\") {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === \"type\") {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === \"firstname\") {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === \"lastname\") {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === \"initial\") {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === \"defphone\") {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === \"company\") {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === \"email\") {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === \"username\") {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === \"address\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? \"no_name\" : field[nameKey];\n if (\n fieldName === \"password\" &&\n cipher.passwordHistory != null &&\n cipher.passwordHistory.some((h) => h.password === fieldValue)\n ) {\n return;\n }\n\n const fieldType = field.k === \"concealed\" ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { PasswordHistoryView } from \"../../models/view/passwordHistoryView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport {\n CategoryEnum,\n Details,\n ExportData,\n FieldsEntity,\n Item,\n LoginFieldTypeEnum,\n Overview,\n PasswordHistoryEntity,\n SectionsEntity,\n UrlsEntity,\n Value,\n VaultsEntity,\n} from \"./types/onepassword1PuxImporterTypes\";\n\nexport class OnePassword1PuxImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const exportData: ExportData = JSON.parse(data);\n\n const account = exportData.accounts[0];\n // TODO Add handling of multiple vaults\n // const personalVaults = account.vaults[0].filter((v) => v.attrs.type === VaultAttributeTypeEnum.Personal);\n account.vaults.forEach((vault: VaultsEntity) => {\n vault.items.forEach((item: Item) => {\n if (item.trashed === true) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n\n const category = item.categoryUuid as CategoryEnum;\n switch (category) {\n case CategoryEnum.Login:\n case CategoryEnum.Database:\n case CategoryEnum.Password:\n case CategoryEnum.WirelessRouter:\n case CategoryEnum.Server:\n case CategoryEnum.API_Credential:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n break;\n case CategoryEnum.CreditCard:\n case CategoryEnum.BankAccount:\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n break;\n case CategoryEnum.SecureNote:\n case CategoryEnum.SoftwareLicense:\n case CategoryEnum.EmailAccount:\n case CategoryEnum.MedicalRecord:\n // case CategoryEnum.Document:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n case CategoryEnum.Identity:\n case CategoryEnum.DriversLicense:\n case CategoryEnum.OutdoorLicense:\n case CategoryEnum.Membership:\n case CategoryEnum.Passport:\n case CategoryEnum.RewardsProgram:\n case CategoryEnum.SocialSecurityNumber:\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n break;\n default:\n break;\n }\n\n cipher.favorite = item.favIndex === 1 ? true : false;\n\n this.processOverview(item.overview, cipher);\n\n this.processLoginFields(item, cipher);\n\n this.processDetails(category, item.details, cipher);\n\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n\n this.processSections(category, item.details.sections, cipher);\n\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processOverview(overview: Overview, cipher: CipherView) {\n if (overview == null) {\n return;\n }\n\n cipher.name = this.getValueOrDefault(overview.title);\n\n if (overview.urls != null) {\n const urls: string[] = [];\n overview.urls.forEach((url: UrlsEntity) => {\n if (!this.isNullOrWhitespace(url.url)) {\n urls.push(url.url);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n if (overview.tags != null && overview.tags.length > 0) {\n const folderName = this.capitalize(overview.tags[0]);\n this.processFolder(this.result, folderName);\n }\n }\n\n private capitalize(inputString: string): string {\n return inputString.trim().replace(/\\w\\S*/g, (w) => w.replace(/^\\w/, (c) => c.toUpperCase()));\n }\n\n private processLoginFields(item: Item, cipher: CipherView) {\n if (item.details == null) {\n return;\n }\n\n if (item.details.loginFields == null || item.details.loginFields.length === 0) {\n return;\n }\n\n item.details.loginFields.forEach((loginField) => {\n if (loginField.designation === \"username\" && loginField.value !== \"\") {\n cipher.type = CipherType.Login;\n cipher.login.username = loginField.value;\n return;\n }\n\n if (loginField.designation === \"password\" && loginField.value !== \"\") {\n cipher.type = CipherType.Login;\n cipher.login.password = loginField.value;\n return;\n }\n\n let fieldValue = loginField.value;\n let fieldType: FieldType = FieldType.Text;\n switch (loginField.fieldType) {\n case LoginFieldTypeEnum.Password:\n fieldType = FieldType.Hidden;\n break;\n case LoginFieldTypeEnum.CheckBox:\n fieldValue = loginField.value !== \"\" ? \"true\" : \"false\";\n fieldType = FieldType.Boolean;\n break;\n default:\n break;\n }\n this.processKvp(cipher, loginField.name, fieldValue, fieldType);\n });\n }\n\n private processDetails(category: CategoryEnum, details: Details, cipher: CipherView) {\n if (category !== CategoryEnum.Password) {\n return;\n }\n\n if (details == null) {\n return;\n }\n cipher.login.password = details.password;\n }\n\n private processSections(category: CategoryEnum, sections: SectionsEntity[], cipher: CipherView) {\n if (sections == null || sections.length === 0) {\n return;\n }\n\n sections.forEach((section: SectionsEntity) => {\n if (section.fields == null) {\n return;\n }\n\n this.parseSectionFields(category, section.fields, cipher);\n });\n }\n\n private parseSectionFields(category: CategoryEnum, fields: FieldsEntity[], cipher: CipherView) {\n fields.forEach((field: FieldsEntity) => {\n const valueKey = Object.keys(field.value)[0];\n const anyField = field as any;\n\n if (\n anyField.value == null ||\n anyField.value[valueKey] == null ||\n anyField.value[valueKey] === \"\"\n ) {\n return;\n }\n\n const fieldName = this.getFieldName(field.id, field.title);\n const fieldValue = this.extractValue(field.value, valueKey);\n\n if (cipher.type === CipherType.Login) {\n if (this.fillLogin(field, fieldValue, cipher)) {\n return;\n }\n\n switch (category) {\n case CategoryEnum.Login:\n case CategoryEnum.Database:\n case CategoryEnum.EmailAccount:\n case CategoryEnum.WirelessRouter:\n break;\n\n case CategoryEnum.Server:\n if (this.isNullOrWhitespace(cipher.login.uri) && field.id === \"url\") {\n cipher.login.uris = this.makeUriArray(fieldValue);\n return;\n }\n break;\n\n case CategoryEnum.API_Credential:\n if (this.fillApiCredentials(field, fieldValue, cipher)) {\n return;\n }\n break;\n default:\n break;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.fillCreditCard(field, fieldValue, cipher)) {\n return;\n }\n\n if (category === CategoryEnum.BankAccount) {\n if (this.fillBankAccount(field, fieldValue, cipher)) {\n return;\n }\n }\n } else if (cipher.type === CipherType.Identity) {\n if (this.fillIdentity(field, fieldValue, cipher, valueKey)) {\n return;\n }\n if (valueKey === \"address\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip, state } = field.value.address;\n cipher.identity.address1 = this.getValueOrDefault(street);\n cipher.identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n cipher.identity.country = country.toUpperCase();\n }\n cipher.identity.postalCode = this.getValueOrDefault(zip);\n cipher.identity.state = this.getValueOrDefault(state);\n return;\n }\n\n switch (category) {\n case CategoryEnum.Identity:\n break;\n case CategoryEnum.DriversLicense:\n if (this.fillDriversLicense(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.OutdoorLicense:\n if (this.fillOutdoorLicense(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.Membership:\n if (this.fillMembership(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.Passport:\n if (this.fillPassport(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.RewardsProgram:\n if (this.fillRewardsProgram(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.SocialSecurityNumber:\n if (this.fillSSN(field, fieldValue, cipher)) {\n return;\n }\n break;\n default:\n break;\n }\n }\n\n if (valueKey === \"email\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { email_address, provider } = field.value.email;\n this.processKvp(cipher, fieldName, email_address, FieldType.Text);\n this.processKvp(cipher, \"provider\", provider, FieldType.Text);\n return;\n }\n\n // Do not include a password field if it's already in the history\n if (\n field.title === \"password\" &&\n cipher.passwordHistory != null &&\n cipher.passwordHistory.some((h) => h.password === fieldValue)\n ) {\n return;\n }\n\n // TODO ?? If one of the fields is marked as guarded, then activate Password-Reprompt for the entire item\n if (field.guarded && cipher.reprompt === CipherRepromptType.None) {\n cipher.reprompt = CipherRepromptType.Password;\n }\n\n const fieldType = valueKey === \"concealed\" ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n\n private getFieldName(id: string, title: string): string {\n if (this.isNullOrWhitespace(title)) {\n return id;\n }\n\n // Naive approach of checking if the fields id is usable\n if (id.length > 25 && RegExp(/[0-9]{2}[A-Z]{2}/, \"i\").test(id)) {\n return title;\n }\n return id;\n }\n\n private extractValue(value: Value, valueKey: string): string {\n if (valueKey === \"date\") {\n return new Date(value.date * 1000).toUTCString();\n }\n\n if (valueKey === \"monthYear\") {\n return value.monthYear.toString();\n }\n\n return (value as any)[valueKey];\n }\n\n private fillLogin(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n const fieldName = this.getFieldName(field.id, field.title);\n\n if (this.isNullOrWhitespace(cipher.login.username) && fieldName === \"username\") {\n cipher.login.username = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.login.password) && fieldName === \"password\") {\n cipher.login.password = fieldValue;\n return true;\n }\n\n if (\n this.isNullOrWhitespace(cipher.login.totp) &&\n field.id != null &&\n field.id.startsWith(\"TOTP_\")\n ) {\n cipher.login.totp = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillApiCredentials(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n const fieldName = this.getFieldName(field.id, field.title);\n\n if (this.isNullOrWhitespace(cipher.login.password) && fieldName === \"credential\") {\n cipher.login.password = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.login.uri) && fieldName === \"hostname\") {\n cipher.login.uris = this.makeUriArray(fieldValue);\n return true;\n }\n\n return false;\n }\n\n private fillCreditCard(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.card.number) && field.id === \"ccnum\") {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.code) && field.id === \"cvv\") {\n cipher.card.code = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.cardholderName) && field.id === \"cardholder\") {\n cipher.card.cardholderName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.expiration) && field.id === \"expiry\") {\n const monthYear: string = fieldValue.toString().trim();\n cipher.card.expMonth = monthYear.substring(4, 6);\n if (cipher.card.expMonth[0] === \"0\") {\n cipher.card.expMonth = cipher.card.expMonth.substring(1, 2);\n }\n cipher.card.expYear = monthYear.substring(0, 4);\n return true;\n }\n\n if (field.id === \"type\") {\n // Skip since brand was determined from number above\n return true;\n }\n\n return false;\n }\n\n private fillBankAccount(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.card.cardholderName) && field.id === \"owner\") {\n cipher.card.cardholderName = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillIdentity(\n field: FieldsEntity,\n fieldValue: string,\n cipher: CipherView,\n valueKey: string\n ): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"firstname\") {\n cipher.identity.firstName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.lastName) && field.id === \"lastname\") {\n cipher.identity.lastName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.middleName) && field.id === \"initial\") {\n cipher.identity.middleName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.phone) && field.id === \"defphone\") {\n cipher.identity.phone = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"company\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.email)) {\n if (valueKey === \"email\") {\n const { email_address, provider } = field.value.email;\n cipher.identity.email = this.getValueOrDefault(email_address);\n this.processKvp(cipher, \"provider\", provider, FieldType.Text);\n return true;\n }\n\n if (field.id === \"email\") {\n cipher.identity.email = fieldValue;\n return true;\n }\n }\n\n if (this.isNullOrWhitespace(cipher.identity.username) && field.id === \"username\") {\n cipher.identity.username = fieldValue;\n return true;\n }\n return false;\n }\n\n private fillDriversLicense(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"fullname\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.address1) && field.id === \"address\") {\n cipher.identity.address1 = fieldValue;\n return true;\n }\n\n // TODO ISO code\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.state) && field.id === \"state\") {\n cipher.identity.state = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.licenseNumber) && field.id === \"number\") {\n cipher.identity.licenseNumber = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillOutdoorLicense(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n // TODO ISO code\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.state) && field.id === \"state\") {\n cipher.identity.state = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillMembership(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"member_name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"org_name\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.phone) && field.id === \"phone\") {\n cipher.identity.phone = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillPassport(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"fullname\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n // TODO Iso\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"issuing_country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.passportNumber) && field.id === \"number\") {\n cipher.identity.passportNumber = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillRewardsProgram(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"member_name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"company_name\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillSSN(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.ssn) && field.id === \"number\") {\n cipher.identity.ssn = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private parsePasswordHistory(historyItems: PasswordHistoryEntity[], cipher: CipherView) {\n if (historyItems == null || historyItems.length === 0) {\n return;\n }\n\n const maxSize = historyItems.length > 5 ? 5 : historyItems.length;\n cipher.passwordHistory = historyItems\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date((\"\" + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport { CipherImportContext } from \"./cipherImportContext\";\n\nexport const IgnoredProperties = [\n \"ainfo\",\n \"autosubmit\",\n \"notesplain\",\n \"ps\",\n \"scope\",\n \"tags\",\n \"title\",\n \"uuid\",\n \"notes\",\n];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [\n this.setLoginUsername,\n this.setLoginPassword,\n this.setLoginUris,\n ];\n protected creditCardPropertyParsers = [\n this.setCreditCardNumber,\n this.setCreditCardVerification,\n this.setCreditCardCardholderName,\n this.setCreditCardExpiry,\n ];\n protected identityPropertyParsers = [\n this.setIdentityFirstName,\n this.setIdentityInitial,\n this.setIdentityLastName,\n this.setIdentityUserName,\n this.setIdentityEmail,\n this.setIdentityPhone,\n this.setIdentityCompany,\n ];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: \"\\\\\",\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(this.getProp(value, \"title\"))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, \"title\"), \"--\");\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n // eslint-disable-next-line\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (\n cipher.type === CipherType.Login &&\n !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) &&\n altUsername.indexOf(\"://\") === -1\n ) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes =\n this.getValueOrDefault(this.getProp(importRecord, \"notesPlain\"), \"\") +\n \"\\n\" +\n this.getValueOrDefault(this.getProp(importRecord, \"notes\"), \"\") +\n \"\\n\";\n cipher.notes.trim();\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (\n IgnoredProperties.indexOf(context.lowerProperty) === -1 &&\n !context.lowerProperty.startsWith(\"section:\") &&\n !context.lowerProperty.startsWith(\"section \")\n ) {\n if (altUsername == null && context.lowerProperty === \"email\") {\n return context.importRecord[context.property];\n } else if (\n context.lowerProperty === \"created date\" ||\n context.lowerProperty === \"modified date\"\n ) {\n const readableDate = new Date(\n parseInt(context.importRecord[context.property], 10) * 1000\n ).toUTCString();\n this.processKvp(context.cipher, \"1Password \" + context.property, readableDate);\n return null;\n }\n if (\n context.lowerProperty.includes(\"password\") ||\n context.lowerProperty.includes(\"key\") ||\n context.lowerProperty.includes(\"secret\")\n ) {\n this.processKvp(\n context.cipher,\n context.property,\n context.importRecord[context.property],\n FieldType.Hidden\n );\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.firstName) &&\n context.lowerProperty.includes(\"first name\")\n ) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.middleName) &&\n context.lowerProperty.includes(\"initial\")\n ) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.lastName) &&\n context.lowerProperty.includes(\"last name\")\n ) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.username) &&\n context.lowerProperty.includes(\"username\")\n ) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.company) &&\n context.lowerProperty.includes(\"company\")\n ) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.phone) &&\n context.lowerProperty.includes(\"default phone\")\n ) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.email) &&\n context.lowerProperty.includes(\"email\")\n ) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (\n this.isNullOrWhitespace(context.cipher.card.number) &&\n context.lowerProperty.includes(\"number\")\n ) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.code) &&\n context.lowerProperty.includes(\"verification number\")\n ) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.cardholderName) &&\n context.lowerProperty.includes(\"cardholder name\")\n ) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.expiration) &&\n context.lowerProperty.includes(\"expiry date\") &&\n context.importRecord[context.property].length === 7\n ) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(\n 0,\n 2\n );\n if (context.cipher.card.expMonth[0] === \"0\") {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.login.password) &&\n context.lowerProperty === \"password\"\n ) {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.login.username) &&\n context.lowerProperty === \"username\"\n ) {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if (\n (context.cipher.login.uris == null || context.cipher.login.uris.length === 0) &&\n context.lowerProperty === \"urls\"\n ) {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if (context.lowerProperty === \"url\") {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { Importer } from \"../importer\";\n\nimport { IgnoredProperties, OnePasswordCsvImporter } from \"./onepasswordCsvImporter\";\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, \"type\"), \"Login\");\n switch (onePassType) {\n case \"Credit Card\":\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push(\"type\");\n break;\n case \"Identity\":\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push(\"type\");\n break;\n case \"Login\":\n case \"Secure Note\":\n IgnoredProperties.push(\"type\");\n break;\n default:\n break;\n }\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { Importer } from \"../importer\";\n\nimport { CipherImportContext } from \"./cipherImportContext\";\nimport { OnePasswordCsvImporter } from \"./onepasswordCsvImporter\";\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))\n ) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, \"address\", context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.expiration) &&\n context.lowerProperty.includes(\"expiry date\")\n ) {\n const expSplit = (context.importRecord[context.property] as string).split(\"/\");\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === \"0\" && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","export interface ExportData {\n accounts?: AccountsEntity[] | null;\n}\nexport interface AccountsEntity {\n attrs: AccountAttributes;\n vaults?: VaultsEntity[] | null;\n}\nexport interface AccountAttributes {\n accountName: string;\n name: string;\n avatar: string;\n email: string;\n uuid: string;\n domain: string;\n}\nexport interface VaultsEntity {\n attrs: VaultAttributes;\n items?: Item[] | null;\n}\nexport interface VaultAttributes {\n uuid: string;\n desc: string;\n avatar: string;\n name: string;\n type: string;\n}\n\nexport enum CategoryEnum {\n Login = \"001\",\n CreditCard = \"002\",\n SecureNote = \"003\",\n Identity = \"004\",\n Password = \"005\",\n Document = \"006\",\n SoftwareLicense = \"100\",\n BankAccount = \"101\",\n Database = \"102\",\n DriversLicense = \"103\",\n OutdoorLicense = \"104\",\n Membership = \"105\",\n Passport = \"106\",\n RewardsProgram = \"107\",\n SocialSecurityNumber = \"108\",\n WirelessRouter = \"109\",\n Server = \"110\",\n EmailAccount = \"111\",\n API_Credential = \"112\",\n MedicalRecord = \"113\",\n}\n\nexport interface Item {\n uuid: string;\n favIndex: number;\n createdAt: number;\n updatedAt: number;\n trashed?: boolean;\n categoryUuid: string;\n details: Details;\n overview: Overview;\n}\nexport interface Details {\n loginFields?: (LoginFieldsEntity | null)[] | null;\n notesPlain?: string | null;\n sections?: (SectionsEntity | null)[] | null;\n passwordHistory?: (PasswordHistoryEntity | null)[] | null;\n documentAttributes?: DocumentAttributes | null;\n password?: string | null;\n}\n\nexport enum LoginFieldTypeEnum {\n TextOrHtml = \"T\",\n EmailAddress = \"E\",\n URL = \"U\",\n Number = \"N\",\n Password = \"P\",\n TextArea = \"A\",\n PhoneNumber = \"T\",\n CheckBox = \"C\",\n}\nexport interface LoginFieldsEntity {\n value: string;\n id: string;\n name: string;\n fieldType: LoginFieldTypeEnum | string;\n designation?: string | null;\n}\nexport interface SectionsEntity {\n title: string;\n name?: string | null;\n fields?: FieldsEntity[] | null;\n}\nexport interface FieldsEntity {\n title: string;\n id: string;\n value: Value;\n indexAtSource: number;\n guarded: boolean;\n multiline: boolean;\n dontGenerate: boolean;\n placeholder?: string;\n inputTraits: InputTraits;\n clipboardFilter?: string | null;\n}\nexport interface Value {\n totp?: string | null;\n date?: number | null;\n string?: string | null;\n concealed?: string | null;\n email?: Email | null;\n phone?: string | null;\n menu?: string | null;\n gender?: string | null;\n monthYear?: number | null;\n url?: string | null;\n address?: Address | null;\n creditCardType?: string | null;\n creditCardNumber?: string | null;\n reference?: string | null;\n}\n\nexport interface Email {\n email_address: string;\n provider: string;\n}\n\nexport interface Address {\n street: string;\n city: string;\n country: string;\n zip: string;\n state: string;\n}\nexport interface InputTraits {\n keyboard: string;\n correction: string;\n capitalization: string;\n}\nexport interface PasswordHistoryEntity {\n value: string;\n time: number;\n}\nexport interface DocumentAttributes {\n fileName: string;\n documentId: string;\n decryptedSize: number;\n}\nexport interface Overview {\n subtitle: string;\n title: string;\n url: string;\n urls?: UrlsEntity[] | null;\n ps?: number | null;\n pbe?: number | null;\n pgrng?: boolean | null;\n tags?: string[] | null;\n}\nexport interface UrlsEntity {\n label: string;\n url: string;\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach((value) => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(\",\");\n tags.forEach((tag) => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(\",\");\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValue(\"category\", value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue(\"description\", value);\n cipher.name = this.getValueOrDefault(this.getValue(\"title\", value), \"--\");\n cipher.login.username = this.getValue(\"username\", value);\n cipher.login.password = this.getValue(\"password\", value);\n cipher.login.uris = this.makeUriArray(this.getValue(\"site\", value));\n this.processKvp(cipher, \"Password 2\", this.getValue(\"password2\", value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[\" \" + key]));\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = \"Email: \" + credential.email + \"\\n\";\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, \"\");\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case \"text\":\n case \"password\":\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] =\n tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0\n ? tagsJson.tags\n .map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch {\n // Ignore error\n }\n return null;\n })\n .filter((t: string) => !this.isNullOrWhitespace(t))\n : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach((tag) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, \"\");\n cipher.notes += \"\\n\\n\" + this.getValueOrDefault(value[\"Shared Notes\"], \"\") + \"\\n\";\n cipher.name = this.getValueOrDefault(value[\"Entry Name\"], \"--\");\n cipher.login.username = this.getValueOrDefault(value[\"User ID\"]);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += \"\\n\" + extra;\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value[\"Extra Fields\"])\n ? JSON.parse(value[\"Extra Fields\"])\n : null;\n const fields =\n fieldsJson != null && fieldsJson.extraFields != null && fieldsJson.extraFields.length > 0\n ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch {\n // Ignore error\n }\n return null;\n })\n : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach((value) => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === \"0\";\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], \"--\");\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], \"(None)\");\n let folderName = folder !== \"(None)\" ? folder.split(\"\\\\\").join(\"/\") : null;\n if (folderName != null) {\n folderName = folder.split(\" > \").join(\"/\");\n folderName = folder.split(\">\").join(\"/\");\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split(\"\\\\r\\\\n\").join(\"\\n\").split(\"\\\\n\").join(\"\\n\");\n }\n\n if (value.type === \"CreditCard\") {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n // eslint-disable-next-line\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (\n this.isNullOrWhitespace(val) ||\n property === \"notes\" ||\n property === \"ignoreItemInSecurityScore\"\n ) {\n continue;\n }\n\n if (property === \"custom_fields\") {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === \"cardNumber\") {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === \"nameOnCard\") {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === \"security_code\") {\n cipher.card.code = val;\n continue;\n } else if (property === \"expires\") {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n continue;\n } else if (property === \"cardType\") {\n continue;\n }\n } else {\n if (\n (property === \"username\" || property === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = val;\n continue;\n } else if (property === \"password\") {\n cipher.login.password = val;\n continue;\n } else if (property === \"totp\") {\n cipher.login.totp = val;\n continue;\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1\n ) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll(\"PasswordManager > record\");\n Array.from(records).forEach((record) => {\n const category = this.querySelectorDirectChild(record, \"Category\");\n const categoryText =\n category != null &&\n !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== \"Unfiled\"\n ? category.textContent\n : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, \"Account-Name\");\n const userId = this.querySelectorDirectChild(record, \"User-Id\");\n const password = this.querySelectorDirectChild(record, \"Password\");\n const url = this.querySelectorDirectChild(record, \"URL\");\n const notes = this.querySelectorDirectChild(record, \"Notes\");\n const cipher = this.initLoginCipher();\n cipher.name =\n accountName != null ? this.getValueOrDefault(accountName.textContent, \"--\") : \"--\";\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : \"\";\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password =\n password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push(\"Attribute-\" + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(\",\")).forEach((attr) => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === \"null\") {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector(\"passwordsafe\");\n if (passwordSafe == null) {\n result.errorMessage = \"Missing `passwordsafe` node.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute(\"delimiter\");\n const entries = doc.querySelectorAll(\"passwordsafe > entry\");\n Array.from(entries).forEach((entry) => {\n const group = this.querySelectorDirectChild(entry, \"group\");\n const groupText =\n group != null && !this.isNullOrWhitespace(group.textContent)\n ? group.textContent.split(\".\").join(\"/\")\n : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, \"title\");\n const username = this.querySelectorDirectChild(entry, \"username\");\n const email = this.querySelectorDirectChild(entry, \"email\");\n const password = this.querySelectorDirectChild(entry, \"password\");\n const url = this.querySelectorDirectChild(entry, \"url\");\n const notes = this.querySelectorDirectChild(entry, \"notes\");\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, \"--\") : \"--\";\n cipher.notes =\n notes != null\n ? this.getValueOrDefault(notes.textContent, \"\").split(notesDelimiter).join(\"\\n\")\n : null;\n cipher.login.username =\n username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password =\n password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes)\n ? \"Email: \" + email.textContent\n : cipher.notes + \"\\n\" + \"Email: \" + email.textContent;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], \"\").split(\"¬\").join(\"\\n\");\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.trash === \"true\") {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === \"LoginItem\") {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === \"CreditCardItem\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, \"PIN\", pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, \"Zip Code\", zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach((value) => {\n const folder =\n !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith(\"/\")\n ? value.Folder.replace(\"/\", \"\")\n : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(\":\");\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === \"-no-name-\" ? null : parts[0];\n const val = parts.length === 4 && parts[2] === \"rck\" ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (\n i === results.length &&\n cipher.name === \"--\" &&\n this.isNullOrWhitespace(cipher.login.password)\n ) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SafariCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url ?? value.URL);\n cipher.login.totp = this.getValueOrDefault(value.OTPAuth);\n cipher.notes = this.getValueOrDefault(value.Notes);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector(\"database\");\n if (db == null) {\n result.errorMessage = \"Missing `database` node.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll(\"database > label\")).forEach((labelEl) => {\n const name = labelEl.getAttribute(\"name\");\n const id = labelEl.getAttribute(\"id\");\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll(\"database > card\")).forEach((cardEl) => {\n if (cardEl.getAttribute(\"template\") === \"true\" || cardEl.getAttribute(\"deleted\") === \"true\") {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, \"label_id\");\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute(\"title\"), \"--\");\n\n if (cardEl.getAttribute(\"star\") === \"true\") {\n cipher.favorite = true;\n }\n\n const cardType = cardEl.getAttribute(\"type\");\n if (cardType === \"note\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, \"field\")).forEach((fieldEl) => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute(\"name\");\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute(\"type\"), \"\").toLowerCase();\n if (fieldType === \"login\") {\n cipher.login.username = text;\n } else if (fieldType === \"password\" || fieldType === \"secret\") {\n // safeInCloud allows for more than one password. we just insert them here and find the one used as password later\n this.processKvp(cipher, name, text, FieldType.Hidden);\n } else if (fieldType === \"one_time_password\") {\n cipher.login.totp = text;\n } else if (fieldType === \"notes\") {\n cipher.notes += text + \"\\n\";\n } else if (fieldType === \"weblogin\" || fieldType === \"website\") {\n cipher.login.uris = this.makeUriArray(text);\n } else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, \"notes\")).forEach((notesEl) => {\n cipher.notes += notesEl.textContent + \"\\n\";\n });\n\n this.setPassword(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n // Choose a password from all passwords. Take one that has password in its name, or the first one if there is no such entry\n // if its name is password, we can safely remove it form the fields. otherwise, it would maybe be best to keep it as a hidden field\n setPassword(cipher: CipherView) {\n const candidates = cipher.fields.filter((field) => field.type === FieldType.Hidden);\n if (!candidates.length) {\n return;\n }\n\n let choice: FieldView;\n for (const field of candidates) {\n if (this.passwordFieldNames.includes(field.name.toLowerCase())) {\n choice = field;\n cipher.fields = cipher.fields.filter((f) => f !== choice);\n break;\n }\n }\n\n if (!choice) {\n choice = candidates[0];\n }\n\n cipher.login.password = choice.value;\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), \"--\");\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], \"\");\n cipher.name = this.getValueOrDefault(value[1], \"--\");\n\n if (value[0] === \"Web Logins\" || value[0] === \"Servers\" || value[0] === \"Email Accounts\") {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += value[i] + \"\\n\";\n }\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll(\"root > Database > Logins > Login\");\n Array.from(loginNodes).forEach((loginNode) => {\n const accountId = loginNode.getAttribute(\"ID\");\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute(\"Name\");\n const passwordText = loginNode.getAttribute(\"Password\");\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector(\n \"root > Database > Accounts > Account > \" +\n 'LoginLinks > Login[SourceLoginID=\"' +\n accountId +\n '\"]'\n );\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute(\"Name\");\n linkText = account.getAttribute(\"Link\");\n groupId = account.getAttribute(\"ParentID\");\n notesText = account.getAttribute(\"Comments\");\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split(\"/n\").join(\"\\n\");\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, \"\");\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, \"--\");\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = \"/\" + groupText;\n }\n groupText = group.getAttribute(\"Name\") + groupText;\n return this.buildGroupText(doc, group.getAttribute(\"ParentID\"), groupText);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst PropertiesToIgnore = [\n \"kind\",\n \"autologin\",\n \"favorite\",\n \"hexcolor\",\n \"protectedwithpassword\",\n \"subdomainonly\",\n \"type\",\n \"tk_export_version\",\n \"note\",\n \"title\",\n \"document_content\",\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, \"\").toLowerCase() === \"true\";\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.notes = this.getValueOrDefault(value.memo, \"\");\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== \"login\") {\n cipher.name = this.getValueOrDefault(value.title, \"--\");\n cipher.notes = this.getValueOrDefault(value.note, \"\");\n }\n\n if (value.kind === \"cc\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n }\n } else if (value.kind !== \"login\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, \"\");\n }\n for (const property in value) {\n if (\n value.hasOwnProperty(property) && // eslint-disable-line\n PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])\n ) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, \"--\");\n cipher.login.username = this.getValueOrDefault(value[\"User name\"]);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (\n this.isNullOrWhitespace(value[\"Password Name\"]) &&\n this.isNullOrWhitespace(value[\"Secret Name\"])\n ) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, \"0\") === \"1\";\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value[\"Password Name\"],\n this.getValueOrDefault(value[\"Secret Name\"], \"--\")\n );\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value[\"Password URL\"], this.getValueOrDefault(value[\"Secret URL\"]))\n );\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach((line) => {\n const delimPosition = line.indexOf(\":\");\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (\n this.isNullOrWhitespace(field) ||\n this.isNullOrWhitespace(value) ||\n field === \"SecretType\"\n ) {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (\n cipher.login.password == null &&\n this.passwordFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import { I18nService } from \"../abstractions/i18n.service\";\n\nimport { IFrameComponent } from \"./iframe_component\";\n\nexport class CaptchaIFrame extends IFrameComponent {\n constructor(\n win: Window,\n webVaultUrl: string,\n private i18nService: I18nService,\n successCallback: (message: string) => any,\n errorCallback: (message: string) => any,\n infoCallback: (message: string) => any\n ) {\n super(\n win,\n webVaultUrl,\n \"captcha-connector.html\",\n \"hcaptcha_iframe\",\n successCallback,\n errorCallback,\n (message: string) => {\n const parsedMessage = JSON.parse(message);\n if (typeof parsedMessage !== \"string\") {\n this.iframe.height = parsedMessage.height.toString();\n this.iframe.width = parsedMessage.width.toString();\n } else {\n infoCallback(parsedMessage);\n }\n }\n );\n }\n\n init(siteKey: string): void {\n super.initComponent(\n this.createParams({ siteKey: siteKey, locale: this.i18nService.translationLocale }, 1)\n );\n }\n}\n","export abstract class IFrameComponent {\n iframe: HTMLIFrameElement;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(\n private win: Window,\n protected webVaultUrl: string,\n private path: string,\n private iframeId: string,\n public successCallback?: (message: string) => any,\n public errorCallback?: (message: string) => any,\n public infoCallback?: (message: string) => any\n ) {\n this.connectorLink = win.document.createElement(\"a\");\n }\n\n stop() {\n this.sendMessage(\"stop\");\n }\n\n start() {\n this.sendMessage(\"start\");\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode((\"0x\" + p1) as any);\n })\n );\n }\n\n cleanup() {\n this.win.removeEventListener(\"message\", this.parseFunction, false);\n }\n\n protected createParams(data: any, version: number) {\n return new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n v: version.toString(),\n });\n }\n\n protected initComponent(params: URLSearchParams): void {\n this.connectorLink.href = `${this.webVaultUrl}/${this.path}?${params}`;\n this.iframe = this.win.document.getElementById(this.iframeId) as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener(\"message\", this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split(\"|\");\n if (parts[0] === \"success\" && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === \"error\" && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === \"info\" && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (\n event.origin == null ||\n event.origin === \"\" ||\n event.origin !== (this.connectorLink as any).origin ||\n event.data == null ||\n typeof event.data !== \"string\"\n ) {\n return false;\n }\n\n return (\n event.data.indexOf(\"success|\") === 0 ||\n event.data.indexOf(\"error|\") === 0 ||\n event.data.indexOf(\"info|\") === 0\n );\n }\n}\n","import { LinkedIdType } from \"../enums/linkedIdType\";\nimport { ItemView } from \"../models/view/itemView\";\n\nexport class LinkedMetadata {\n constructor(readonly propertyKey: string, private readonly _i18nKey?: string) {}\n\n get i18nKey() {\n return this._i18nKey ?? this.propertyKey;\n }\n}\n\n/**\n * A decorator used to set metadata used by Linked custom fields. Apply it to a class property or getter to make it\n * available as a Linked custom field option.\n * @param id - A unique value that is saved in the Field model. It is used to look up the decorated class property.\n * @param i18nKey - The i18n key used to describe the decorated class property in the UI. If it is null, then the name\n * of the class property will be used as the i18n key.\n */\nexport function linkedFieldOption(id: LinkedIdType, i18nKey?: string) {\n return (prototype: ItemView, propertyKey: string) => {\n if (prototype.linkedFieldOptions == null) {\n prototype.linkedFieldOptions = new Map();\n }\n\n prototype.linkedFieldOptions.set(id, new LinkedMetadata(propertyKey, i18nKey));\n };\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { EnvironmentService } from \"../../abstractions/environment.service\";\nimport { KeyConnectorService } from \"../../abstractions/keyConnector.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { ApiLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { ApiTokenRequest } from \"../../models/request/identityToken/apiTokenRequest\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class ApiLogInStrategy extends LogInStrategy {\n tokenRequest: ApiTokenRequest;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private environmentService: EnvironmentService,\n private keyConnectorService: KeyConnectorService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin(tokenResponse: IdentityTokenResponse) {\n if (tokenResponse.apiUseKeyConnector) {\n const keyConnectorUrl = this.environmentService.getKeyConnectorUrl();\n await this.keyConnectorService.getAndSetKey(keyConnectorUrl);\n }\n }\n\n async logIn(credentials: ApiLogInCredentials) {\n this.tokenRequest = new ApiTokenRequest(\n credentials.clientId,\n credentials.clientSecret,\n await this.buildTwoFactor(),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n\n protected async saveAccountInformation(tokenResponse: IdentityTokenResponse) {\n await super.saveAccountInformation(tokenResponse);\n await this.stateService.setApiKeyClientId(this.tokenRequest.clientId);\n await this.stateService.setApiKeyClientSecret(this.tokenRequest.clientSecret);\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\nimport { Account, AccountProfile, AccountTokens } from \"../../models/domain/account\";\nimport { AuthResult } from \"../../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../../models/domain/logInCredentials\";\nimport { DeviceRequest } from \"../../models/request/deviceRequest\";\nimport { ApiTokenRequest } from \"../../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../../models/request/identityToken/ssoTokenRequest\";\nimport { TokenRequestTwoFactor } from \"../../models/request/identityToken/tokenRequestTwoFactor\";\nimport { KeysRequest } from \"../../models/request/keysRequest\";\nimport { IdentityCaptchaResponse } from \"../../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../../models/response/identityTwoFactorResponse\";\n\nexport abstract class LogInStrategy {\n protected abstract tokenRequest: ApiTokenRequest | PasswordTokenRequest | SsoTokenRequest;\n protected captchaBypassToken: string = null;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected tokenService: TokenService,\n protected appIdService: AppIdService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected logService: LogService,\n protected stateService: StateService,\n protected twoFactorService: TwoFactorService\n ) {}\n\n abstract logIn(\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ): Promise;\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string = null\n ): Promise {\n this.tokenRequest.setTwoFactor(twoFactor);\n return this.startLogIn();\n }\n\n protected async startLogIn(): Promise {\n this.twoFactorService.clearSelectedProvider();\n\n const response = await this.apiService.postIdentityToken(this.tokenRequest);\n\n if (response instanceof IdentityTwoFactorResponse) {\n return this.processTwoFactorResponse(response);\n } else if (response instanceof IdentityCaptchaResponse) {\n return this.processCaptchaResponse(response);\n } else if (response instanceof IdentityTokenResponse) {\n return this.processTokenResponse(response);\n }\n\n throw new Error(\"Invalid response object.\");\n }\n\n protected onSuccessfulLogin(response: IdentityTokenResponse): Promise {\n // Implemented in subclass if required\n return null;\n }\n\n protected async buildDeviceRequest() {\n const appId = await this.appIdService.getAppId();\n return new DeviceRequest(appId, this.platformUtilsService);\n }\n\n protected async buildTwoFactor(userProvidedTwoFactor?: TokenRequestTwoFactor) {\n if (userProvidedTwoFactor != null) {\n return userProvidedTwoFactor;\n }\n\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken();\n if (storedTwoFactorToken != null) {\n return new TokenRequestTwoFactor(TwoFactorProviderType.Remember, storedTwoFactorToken, false);\n }\n\n return new TokenRequestTwoFactor();\n }\n\n protected async saveAccountInformation(tokenResponse: IdentityTokenResponse) {\n const accountInformation = await this.tokenService.decodeToken(tokenResponse.accessToken);\n await this.stateService.addAccount(\n new Account({\n profile: {\n ...new AccountProfile(),\n ...{\n userId: accountInformation.sub,\n email: accountInformation.email,\n hasPremiumPersonally: accountInformation.premium,\n kdfIterations: tokenResponse.kdfIterations,\n kdfType: tokenResponse.kdf,\n },\n },\n tokens: {\n ...new AccountTokens(),\n ...{\n accessToken: tokenResponse.accessToken,\n refreshToken: tokenResponse.refreshToken,\n },\n },\n })\n );\n }\n\n protected async processTokenResponse(response: IdentityTokenResponse): Promise {\n const result = new AuthResult();\n result.resetMasterPassword = response.resetMasterPassword;\n result.forcePasswordReset = response.forcePasswordReset;\n\n await this.saveAccountInformation(response);\n\n if (response.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(response);\n }\n\n const newSsoUser = response.key == null;\n if (!newSsoUser) {\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(\n response.privateKey ?? (await this.createKeyPairForOldAccount())\n );\n }\n\n await this.onSuccessfulLogin(response);\n\n await this.stateService.setBiometricLocked(false);\n this.messagingService.send(\"loggedIn\");\n\n return result;\n }\n\n private async processTwoFactorResponse(response: IdentityTwoFactorResponse): Promise {\n const result = new AuthResult();\n result.twoFactorProviders = response.twoFactorProviders2;\n this.twoFactorService.setProviders(response);\n this.captchaBypassToken = response.captchaToken ?? null;\n return result;\n }\n\n private async processCaptchaResponse(response: IdentityCaptchaResponse): Promise {\n const result = new AuthResult();\n result.captchaSiteKey = response.siteKey;\n return result;\n }\n\n private async createKeyPairForOldAccount() {\n try {\n const [publicKey, privateKey] = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(publicKey, privateKey.encryptedString));\n return privateKey.encryptedString;\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { AuthService } from \"../../abstractions/auth.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { HashPurpose } from \"../../enums/hashPurpose\";\nimport { AuthResult } from \"../../models/domain/authResult\";\nimport { PasswordLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../../models/domain/symmetricCryptoKey\";\nimport { PasswordTokenRequest } from \"../../models/request/identityToken/passwordTokenRequest\";\nimport { TokenRequestTwoFactor } from \"../../models/request/identityToken/tokenRequestTwoFactor\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class PasswordLogInStrategy extends LogInStrategy {\n get email() {\n return this.tokenRequest.email;\n }\n\n get masterPasswordHash() {\n return this.tokenRequest.masterPasswordHash;\n }\n\n tokenRequest: PasswordTokenRequest;\n\n private localHashedPassword: string;\n private key: SymmetricCryptoKey;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private authService: AuthService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin() {\n await this.cryptoService.setKey(this.key);\n await this.cryptoService.setKeyHash(this.localHashedPassword);\n }\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ): Promise {\n this.tokenRequest.captchaResponse = captchaResponse ?? this.captchaBypassToken;\n return super.logInTwoFactor(twoFactor);\n }\n\n async logIn(credentials: PasswordLogInCredentials) {\n const { email, masterPassword, captchaToken, twoFactor } = credentials;\n\n this.key = await this.authService.makePreloginKey(masterPassword, email);\n\n // Hash the password early (before authentication) so we don't persist it in memory in plaintext\n this.localHashedPassword = await this.cryptoService.hashPassword(\n masterPassword,\n this.key,\n HashPurpose.LocalAuthorization\n );\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, this.key);\n\n this.tokenRequest = new PasswordTokenRequest(\n email,\n hashedPassword,\n captchaToken,\n await this.buildTwoFactor(twoFactor),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { KeyConnectorService } from \"../../abstractions/keyConnector.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { SsoLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { SsoTokenRequest } from \"../../models/request/identityToken/ssoTokenRequest\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class SsoLogInStrategy extends LogInStrategy {\n tokenRequest: SsoTokenRequest;\n orgId: string;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private keyConnectorService: KeyConnectorService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin(tokenResponse: IdentityTokenResponse) {\n const newSsoUser = tokenResponse.key == null;\n\n if (tokenResponse.keyConnectorUrl != null) {\n if (!newSsoUser) {\n await this.keyConnectorService.getAndSetKey(tokenResponse.keyConnectorUrl);\n } else {\n await this.keyConnectorService.convertNewSsoUserToKeyConnector(tokenResponse, this.orgId);\n }\n }\n }\n\n async logIn(credentials: SsoLogInCredentials) {\n this.orgId = credentials.orgId;\n this.tokenRequest = new SsoTokenRequest(\n credentials.code,\n credentials.codeVerifier,\n credentials.redirectUrl,\n await this.buildTwoFactor(credentials.twoFactor),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function (...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod\n .apply(this, args)\n .then((val: any) => {\n onFinally();\n return val;\n })\n .catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { ITreeNodeObject, TreeNode } from \"../models/domain/treeNode\";\n\nexport class ServiceUtils {\n static nestedTraverse(\n nodeTree: TreeNode[],\n partIndex: number,\n parts: string[],\n obj: ITreeNodeObject,\n parent: ITreeNodeObject,\n delimiter: string\n ) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(\n nodeTree[i].children,\n partIndex + 1,\n parts,\n obj,\n nodeTree[i].node,\n delimiter\n );\n return;\n }\n\n if (nodeTree.filter((n) => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(\n nodeTree,\n 0,\n [newPartName, ...parts.slice(partIndex + 2)],\n obj,\n parent,\n delimiter\n );\n }\n }\n\n static getTreeNodeObject(\n nodeTree: TreeNode[],\n id: string\n ): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (\n target: any,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>\n ) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function (...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod\n .apply(this, args)\n .then((val: any) => {\n onFinally();\n return val;\n })\n .catch((err: any) => {\n onFinally();\n throw err;\n })\n .then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n\nexport function isValid(host: string): boolean {\n return true;\n}\n","/* eslint-disable no-useless-escape */\nimport * as tldjs from \"tldjs\";\n\nimport { I18nService } from \"../abstractions/i18n.service\";\n\nconst nodeURL = typeof window === \"undefined\" ? require(\"url\") : null;\n\nexport class Utils {\n static inited = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex =\n /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n // Transpiled version of /\\p{Emoji_Presentation}/gu using https://mothereff.in/regexpu. Used for compatability in older browsers.\n static regexpEmojiPresentation =\n /(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])/g;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode =\n typeof process !== \"undefined\" &&\n (process as any).release != null &&\n (process as any).release.name === \"node\";\n Utils.isBrowser = typeof window !== \"undefined\";\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNode && !Utils.isBrowser ? global : window;\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"hex\"));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"utf8\"));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"base64\");\n } else {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"utf8\");\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"hex\");\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map\n .call(bytes, (x: number) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Illegal base64url string!\");\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromUtf8ToB64(utfStr: string): string {\n if (Utils.isNode) {\n return Buffer.from(utfStr, \"utf8\").toString(\"base64\");\n } else {\n return decodeURIComponent(escape(window.btoa(utfStr)));\n }\n }\n\n static fromUtf8ToUrlB64(utfStr: string): string {\n return Utils.fromBufferToUrlB64(Utils.fromUtf8ToArray(utfStr));\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode) {\n return Buffer.from(b64Str, \"base64\").toString(\"utf8\");\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n \"i\"\n ).test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== \"\" ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== \"\" ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === \"\") {\n return null;\n }\n\n if (uriString.startsWith(\"data:\")) {\n return null;\n }\n\n let httpUrl = uriString.startsWith(\"http://\") || uriString.startsWith(\"https://\");\n if (\n !httpUrl &&\n uriString.indexOf(\"://\") < 0 &&\n Utils.tldEndingRegex.test(uriString) &&\n uriString.indexOf(\"@\") < 0\n ) {\n uriString = \"http://\" + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n const validHostname = tldjs?.isValid != null ? tldjs.isValid(url.hostname) : true;\n if (!validHostname) {\n return null;\n }\n\n if (url.hostname === \"localhost\" || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain =\n tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) {\n // Invalid domain, try another approach below.\n }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === \"\") {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === \"?\" ? url.search.substr(1) : url.search).split(\"&\");\n pairs.forEach((pair) => {\n const parts = pair.split(\"=\");\n if (parts.length < 1) {\n return;\n }\n map.set(\n decodeURIComponent(parts[0]).toLowerCase(),\n parts[1] == null ? \"\" : decodeURIComponent(parts[1])\n );\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator\n ? i18nService.collator.compare(a[prop], b[prop])\n : a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== \"string\" || str.trim() === \"\";\n }\n\n static isNullOrEmpty(str: string): boolean {\n return str == null || typeof str !== \"string\" || str == \"\";\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n static iterateEnum(obj: O) {\n return (Object.keys(obj).filter((k) => Number.isNaN(+k)) as K[]).map((k) => obj[k]);\n }\n\n static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === \"\") {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol =\n uriString.indexOf(\"http://\") === 0 || uriString.indexOf(\"https://\") === 0;\n if (!hasHttpProtocol && uriString.indexOf(\".\") > -1) {\n url = Utils.getUrlObject(\"http://\" + uriString);\n }\n }\n return url;\n }\n\n static camelToPascalCase(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n }\n\n private static validIpAddress(ipString: string): boolean {\n const ipRegex =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n ((a) => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n ) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return (\n win.navigator.userAgent.match(/iPhone/i) != null ||\n win.navigator.userAgent.match(/iPad/i) != null\n );\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return new nodeURL.URL(uriString);\n } else if (typeof URL === \"function\") {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf(\"://\") > -1;\n if (!hasProtocol && uriString.indexOf(\".\") > -1) {\n uriString = \"http://\" + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement(\"a\");\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) {\n // Ignore error\n }\n\n return null;\n }\n}\n\nUtils.init();\n","import { I18nService } from \"../abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\n\nexport class WebAuthnIFrame {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(\n private win: Window,\n private webVaultUrl: string,\n private webAuthnNewTab: boolean,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private successCallback: Function, // eslint-disable-line\n private errorCallback: Function, // eslint-disable-line\n private infoCallback: Function // eslint-disable-line\n ) {\n this.connectorLink = win.document.createElement(\"a\");\n }\n\n init(data: any): void {\n const params = new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n btnText: encodeURIComponent(this.i18nService.t(\"webAuthnAuthenticate\")),\n v: \"1\",\n });\n\n if (this.webAuthnNewTab) {\n // Firefox fallback which opens the webauthn page in a new tab\n params.append(\"locale\", this.i18nService.translationLocale);\n this.platformUtilsService.launchUri(\n `${this.webVaultUrl}/webauthn-fallback-connector.html?${params}`\n );\n } else {\n this.connectorLink.href = `${this.webVaultUrl}/webauthn-connector.html?${params}`;\n this.iframe = this.win.document.getElementById(\"webauthn_iframe\") as HTMLIFrameElement;\n this.iframe.allow = \"publickey-credentials-get \" + new URL(this.webVaultUrl).origin;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener(\"message\", this.parseFunction, false);\n }\n }\n\n stop() {\n this.sendMessage(\"stop\");\n }\n\n start() {\n this.sendMessage(\"start\");\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode((\"0x\" + p1) as any);\n })\n );\n }\n\n cleanup() {\n this.win.removeEventListener(\"message\", this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split(\"|\");\n if (parts[0] === \"success\" && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === \"error\" && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === \"info\" && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (\n event.origin == null ||\n event.origin === \"\" ||\n event.origin !== (this.connectorLink as any).origin ||\n event.data == null ||\n typeof event.data !== \"string\"\n ) {\n return false;\n }\n\n return (\n event.data.indexOf(\"success|\") === 0 ||\n event.data.indexOf(\"error|\") === 0 ||\n event.data.indexOf(\"info|\") === 0\n );\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n \"abacus\",\n \"abdomen\",\n \"abdominal\",\n \"abide\",\n \"abiding\",\n \"ability\",\n \"ablaze\",\n \"able\",\n \"abnormal\",\n \"abrasion\",\n \"abrasive\",\n \"abreast\",\n \"abridge\",\n \"abroad\",\n \"abruptly\",\n \"absence\",\n \"absentee\",\n \"absently\",\n \"absinthe\",\n \"absolute\",\n \"absolve\",\n \"abstain\",\n \"abstract\",\n \"absurd\",\n \"accent\",\n \"acclaim\",\n \"acclimate\",\n \"accompany\",\n \"account\",\n \"accuracy\",\n \"accurate\",\n \"accustom\",\n \"acetone\",\n \"achiness\",\n \"aching\",\n \"acid\",\n \"acorn\",\n \"acquaint\",\n \"acquire\",\n \"acre\",\n \"acrobat\",\n \"acronym\",\n \"acting\",\n \"action\",\n \"activate\",\n \"activator\",\n \"active\",\n \"activism\",\n \"activist\",\n \"activity\",\n \"actress\",\n \"acts\",\n \"acutely\",\n \"acuteness\",\n \"aeration\",\n \"aerobics\",\n \"aerosol\",\n \"aerospace\",\n \"afar\",\n \"affair\",\n \"affected\",\n \"affecting\",\n \"affection\",\n \"affidavit\",\n \"affiliate\",\n \"affirm\",\n \"affix\",\n \"afflicted\",\n \"affluent\",\n \"afford\",\n \"affront\",\n \"aflame\",\n \"afloat\",\n \"aflutter\",\n \"afoot\",\n \"afraid\",\n \"afterglow\",\n \"afterlife\",\n \"aftermath\",\n \"aftermost\",\n \"afternoon\",\n \"aged\",\n \"ageless\",\n \"agency\",\n \"agenda\",\n \"agent\",\n \"aggregate\",\n \"aghast\",\n \"agile\",\n \"agility\",\n \"aging\",\n \"agnostic\",\n \"agonize\",\n \"agonizing\",\n \"agony\",\n \"agreeable\",\n \"agreeably\",\n \"agreed\",\n \"agreeing\",\n \"agreement\",\n \"aground\",\n \"ahead\",\n \"ahoy\",\n \"aide\",\n \"aids\",\n \"aim\",\n \"ajar\",\n \"alabaster\",\n \"alarm\",\n \"albatross\",\n \"album\",\n \"alfalfa\",\n \"algebra\",\n \"algorithm\",\n \"alias\",\n \"alibi\",\n \"alienable\",\n \"alienate\",\n \"aliens\",\n \"alike\",\n \"alive\",\n \"alkaline\",\n \"alkalize\",\n \"almanac\",\n \"almighty\",\n \"almost\",\n \"aloe\",\n \"aloft\",\n \"aloha\",\n \"alone\",\n \"alongside\",\n \"aloof\",\n \"alphabet\",\n \"alright\",\n \"although\",\n \"altitude\",\n \"alto\",\n \"aluminum\",\n \"alumni\",\n \"always\",\n \"amaretto\",\n \"amaze\",\n \"amazingly\",\n \"amber\",\n \"ambiance\",\n \"ambiguity\",\n \"ambiguous\",\n \"ambition\",\n \"ambitious\",\n \"ambulance\",\n \"ambush\",\n \"amendable\",\n \"amendment\",\n \"amends\",\n \"amenity\",\n \"amiable\",\n \"amicably\",\n \"amid\",\n \"amigo\",\n \"amino\",\n \"amiss\",\n \"ammonia\",\n \"ammonium\",\n \"amnesty\",\n \"amniotic\",\n \"among\",\n \"amount\",\n \"amperage\",\n \"ample\",\n \"amplifier\",\n \"amplify\",\n \"amply\",\n \"amuck\",\n \"amulet\",\n \"amusable\",\n \"amused\",\n \"amusement\",\n \"amuser\",\n \"amusing\",\n \"anaconda\",\n \"anaerobic\",\n \"anagram\",\n \"anatomist\",\n \"anatomy\",\n \"anchor\",\n \"anchovy\",\n \"ancient\",\n \"android\",\n \"anemia\",\n \"anemic\",\n \"aneurism\",\n \"anew\",\n \"angelfish\",\n \"angelic\",\n \"anger\",\n \"angled\",\n \"angler\",\n \"angles\",\n \"angling\",\n \"angrily\",\n \"angriness\",\n \"anguished\",\n \"angular\",\n \"animal\",\n \"animate\",\n \"animating\",\n \"animation\",\n \"animator\",\n \"anime\",\n \"animosity\",\n \"ankle\",\n \"annex\",\n \"annotate\",\n \"announcer\",\n \"annoying\",\n \"annually\",\n \"annuity\",\n \"anointer\",\n \"another\",\n \"answering\",\n \"antacid\",\n \"antarctic\",\n \"anteater\",\n \"antelope\",\n \"antennae\",\n \"anthem\",\n \"anthill\",\n \"anthology\",\n \"antibody\",\n \"antics\",\n \"antidote\",\n \"antihero\",\n \"antiquely\",\n \"antiques\",\n \"antiquity\",\n \"antirust\",\n \"antitoxic\",\n \"antitrust\",\n \"antiviral\",\n \"antivirus\",\n \"antler\",\n \"antonym\",\n \"antsy\",\n \"anvil\",\n \"anybody\",\n \"anyhow\",\n \"anymore\",\n \"anyone\",\n \"anyplace\",\n \"anything\",\n \"anytime\",\n \"anyway\",\n \"anywhere\",\n \"aorta\",\n \"apache\",\n \"apostle\",\n \"appealing\",\n \"appear\",\n \"appease\",\n \"appeasing\",\n \"appendage\",\n \"appendix\",\n \"appetite\",\n \"appetizer\",\n \"applaud\",\n \"applause\",\n \"apple\",\n \"appliance\",\n \"applicant\",\n \"applied\",\n \"apply\",\n \"appointee\",\n \"appraisal\",\n \"appraiser\",\n \"apprehend\",\n \"approach\",\n \"approval\",\n \"approve\",\n \"apricot\",\n \"april\",\n \"apron\",\n \"aptitude\",\n \"aptly\",\n \"aqua\",\n \"aqueduct\",\n \"arbitrary\",\n \"arbitrate\",\n \"ardently\",\n \"area\",\n \"arena\",\n \"arguable\",\n \"arguably\",\n \"argue\",\n \"arise\",\n \"armadillo\",\n \"armband\",\n \"armchair\",\n \"armed\",\n \"armful\",\n \"armhole\",\n \"arming\",\n \"armless\",\n \"armoire\",\n \"armored\",\n \"armory\",\n \"armrest\",\n \"army\",\n \"aroma\",\n \"arose\",\n \"around\",\n \"arousal\",\n \"arrange\",\n \"array\",\n \"arrest\",\n \"arrival\",\n \"arrive\",\n \"arrogance\",\n \"arrogant\",\n \"arson\",\n \"art\",\n \"ascend\",\n \"ascension\",\n \"ascent\",\n \"ascertain\",\n \"ashamed\",\n \"ashen\",\n \"ashes\",\n \"ashy\",\n \"aside\",\n \"askew\",\n \"asleep\",\n \"asparagus\",\n \"aspect\",\n \"aspirate\",\n \"aspire\",\n \"aspirin\",\n \"astonish\",\n \"astound\",\n \"astride\",\n \"astrology\",\n \"astronaut\",\n \"astronomy\",\n \"astute\",\n \"atlantic\",\n \"atlas\",\n \"atom\",\n \"atonable\",\n \"atop\",\n \"atrium\",\n \"atrocious\",\n \"atrophy\",\n \"attach\",\n \"attain\",\n \"attempt\",\n \"attendant\",\n \"attendee\",\n \"attention\",\n \"attentive\",\n \"attest\",\n \"attic\",\n \"attire\",\n \"attitude\",\n \"attractor\",\n \"attribute\",\n \"atypical\",\n \"auction\",\n \"audacious\",\n \"audacity\",\n \"audible\",\n \"audibly\",\n \"audience\",\n \"audio\",\n \"audition\",\n \"augmented\",\n \"august\",\n \"authentic\",\n \"author\",\n \"autism\",\n \"autistic\",\n \"autograph\",\n \"automaker\",\n \"automated\",\n \"automatic\",\n \"autopilot\",\n \"available\",\n \"avalanche\",\n \"avatar\",\n \"avenge\",\n \"avenging\",\n \"avenue\",\n \"average\",\n \"aversion\",\n \"avert\",\n \"aviation\",\n \"aviator\",\n \"avid\",\n \"avoid\",\n \"await\",\n \"awaken\",\n \"award\",\n \"aware\",\n \"awhile\",\n \"awkward\",\n \"awning\",\n \"awoke\",\n \"awry\",\n \"axis\",\n \"babble\",\n \"babbling\",\n \"babied\",\n \"baboon\",\n \"backache\",\n \"backboard\",\n \"backboned\",\n \"backdrop\",\n \"backed\",\n \"backer\",\n \"backfield\",\n \"backfire\",\n \"backhand\",\n \"backing\",\n \"backlands\",\n \"backlash\",\n \"backless\",\n \"backlight\",\n \"backlit\",\n \"backlog\",\n \"backpack\",\n \"backpedal\",\n \"backrest\",\n \"backroom\",\n \"backshift\",\n \"backside\",\n \"backslid\",\n \"backspace\",\n \"backspin\",\n \"backstab\",\n \"backstage\",\n \"backtalk\",\n \"backtrack\",\n \"backup\",\n \"backward\",\n \"backwash\",\n \"backwater\",\n \"backyard\",\n \"bacon\",\n \"bacteria\",\n \"bacterium\",\n \"badass\",\n \"badge\",\n \"badland\",\n \"badly\",\n \"badness\",\n \"baffle\",\n \"baffling\",\n \"bagel\",\n \"bagful\",\n \"baggage\",\n \"bagged\",\n \"baggie\",\n \"bagginess\",\n \"bagging\",\n \"baggy\",\n \"bagpipe\",\n \"baguette\",\n \"baked\",\n \"bakery\",\n \"bakeshop\",\n \"baking\",\n \"balance\",\n \"balancing\",\n \"balcony\",\n \"balmy\",\n \"balsamic\",\n \"bamboo\",\n \"banana\",\n \"banish\",\n \"banister\",\n \"banjo\",\n \"bankable\",\n \"bankbook\",\n \"banked\",\n \"banker\",\n \"banking\",\n \"banknote\",\n \"bankroll\",\n \"banner\",\n \"bannister\",\n \"banshee\",\n \"banter\",\n \"barbecue\",\n \"barbed\",\n \"barbell\",\n \"barber\",\n \"barcode\",\n \"barge\",\n \"bargraph\",\n \"barista\",\n \"baritone\",\n \"barley\",\n \"barmaid\",\n \"barman\",\n \"barn\",\n \"barometer\",\n \"barrack\",\n \"barracuda\",\n \"barrel\",\n \"barrette\",\n \"barricade\",\n \"barrier\",\n \"barstool\",\n \"bartender\",\n \"barterer\",\n \"bash\",\n \"basically\",\n \"basics\",\n \"basil\",\n \"basin\",\n \"basis\",\n \"basket\",\n \"batboy\",\n \"batch\",\n \"bath\",\n \"baton\",\n \"bats\",\n \"battalion\",\n \"battered\",\n \"battering\",\n \"battery\",\n \"batting\",\n \"battle\",\n \"bauble\",\n \"bazooka\",\n \"blabber\",\n \"bladder\",\n \"blade\",\n \"blah\",\n \"blame\",\n \"blaming\",\n \"blanching\",\n \"blandness\",\n \"blank\",\n \"blaspheme\",\n \"blasphemy\",\n \"blast\",\n \"blatancy\",\n \"blatantly\",\n \"blazer\",\n \"blazing\",\n \"bleach\",\n \"bleak\",\n \"bleep\",\n \"blemish\",\n \"blend\",\n \"bless\",\n \"blighted\",\n \"blimp\",\n \"bling\",\n \"blinked\",\n \"blinker\",\n \"blinking\",\n \"blinks\",\n \"blip\",\n \"blissful\",\n \"blitz\",\n \"blizzard\",\n \"bloated\",\n \"bloating\",\n \"blob\",\n \"blog\",\n \"bloomers\",\n \"blooming\",\n \"blooper\",\n \"blot\",\n \"blouse\",\n \"blubber\",\n \"bluff\",\n \"bluish\",\n \"blunderer\",\n \"blunt\",\n \"blurb\",\n \"blurred\",\n \"blurry\",\n \"blurt\",\n \"blush\",\n \"blustery\",\n \"boaster\",\n \"boastful\",\n \"boasting\",\n \"boat\",\n \"bobbed\",\n \"bobbing\",\n \"bobble\",\n \"bobcat\",\n \"bobsled\",\n \"bobtail\",\n \"bodacious\",\n \"body\",\n \"bogged\",\n \"boggle\",\n \"bogus\",\n \"boil\",\n \"bok\",\n \"bolster\",\n \"bolt\",\n \"bonanza\",\n \"bonded\",\n \"bonding\",\n \"bondless\",\n \"boned\",\n \"bonehead\",\n \"boneless\",\n \"bonelike\",\n \"boney\",\n \"bonfire\",\n \"bonnet\",\n \"bonsai\",\n \"bonus\",\n \"bony\",\n \"boogeyman\",\n \"boogieman\",\n \"book\",\n \"boondocks\",\n \"booted\",\n \"booth\",\n \"bootie\",\n \"booting\",\n \"bootlace\",\n \"bootleg\",\n \"boots\",\n \"boozy\",\n \"borax\",\n \"boring\",\n \"borough\",\n \"borrower\",\n \"borrowing\",\n \"boss\",\n \"botanical\",\n \"botanist\",\n \"botany\",\n \"botch\",\n \"both\",\n \"bottle\",\n \"bottling\",\n \"bottom\",\n \"bounce\",\n \"bouncing\",\n \"bouncy\",\n \"bounding\",\n \"boundless\",\n \"bountiful\",\n \"bovine\",\n \"boxcar\",\n \"boxer\",\n \"boxing\",\n \"boxlike\",\n \"boxy\",\n \"breach\",\n \"breath\",\n \"breeches\",\n \"breeching\",\n \"breeder\",\n \"breeding\",\n \"breeze\",\n \"breezy\",\n \"brethren\",\n \"brewery\",\n \"brewing\",\n \"briar\",\n \"bribe\",\n \"brick\",\n \"bride\",\n \"bridged\",\n \"brigade\",\n \"bright\",\n \"brilliant\",\n \"brim\",\n \"bring\",\n \"brink\",\n \"brisket\",\n \"briskly\",\n \"briskness\",\n \"bristle\",\n \"brittle\",\n \"broadband\",\n \"broadcast\",\n \"broaden\",\n \"broadly\",\n \"broadness\",\n \"broadside\",\n \"broadways\",\n \"broiler\",\n \"broiling\",\n \"broken\",\n \"broker\",\n \"bronchial\",\n \"bronco\",\n \"bronze\",\n \"bronzing\",\n \"brook\",\n \"broom\",\n \"brought\",\n \"browbeat\",\n \"brownnose\",\n \"browse\",\n \"browsing\",\n \"bruising\",\n \"brunch\",\n \"brunette\",\n \"brunt\",\n \"brush\",\n \"brussels\",\n \"brute\",\n \"brutishly\",\n \"bubble\",\n \"bubbling\",\n \"bubbly\",\n \"buccaneer\",\n \"bucked\",\n \"bucket\",\n \"buckle\",\n \"buckshot\",\n \"buckskin\",\n \"bucktooth\",\n \"buckwheat\",\n \"buddhism\",\n \"buddhist\",\n \"budding\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"buffed\",\n \"buffer\",\n \"buffing\",\n \"buffoon\",\n \"buggy\",\n \"bulb\",\n \"bulge\",\n \"bulginess\",\n \"bulgur\",\n \"bulk\",\n \"bulldog\",\n \"bulldozer\",\n \"bullfight\",\n \"bullfrog\",\n \"bullhorn\",\n \"bullion\",\n \"bullish\",\n \"bullpen\",\n \"bullring\",\n \"bullseye\",\n \"bullwhip\",\n \"bully\",\n \"bunch\",\n \"bundle\",\n \"bungee\",\n \"bunion\",\n \"bunkbed\",\n \"bunkhouse\",\n \"bunkmate\",\n \"bunny\",\n \"bunt\",\n \"busboy\",\n \"bush\",\n \"busily\",\n \"busload\",\n \"bust\",\n \"busybody\",\n \"buzz\",\n \"cabana\",\n \"cabbage\",\n \"cabbie\",\n \"cabdriver\",\n \"cable\",\n \"caboose\",\n \"cache\",\n \"cackle\",\n \"cacti\",\n \"cactus\",\n \"caddie\",\n \"caddy\",\n \"cadet\",\n \"cadillac\",\n \"cadmium\",\n \"cage\",\n \"cahoots\",\n \"cake\",\n \"calamari\",\n \"calamity\",\n \"calcium\",\n \"calculate\",\n \"calculus\",\n \"caliber\",\n \"calibrate\",\n \"calm\",\n \"caloric\",\n \"calorie\",\n \"calzone\",\n \"camcorder\",\n \"cameo\",\n \"camera\",\n \"camisole\",\n \"camper\",\n \"campfire\",\n \"camping\",\n \"campsite\",\n \"campus\",\n \"canal\",\n \"canary\",\n \"cancel\",\n \"candied\",\n \"candle\",\n \"candy\",\n \"cane\",\n \"canine\",\n \"canister\",\n \"cannabis\",\n \"canned\",\n \"canning\",\n \"cannon\",\n \"cannot\",\n \"canola\",\n \"canon\",\n \"canopener\",\n \"canopy\",\n \"canteen\",\n \"canyon\",\n \"capable\",\n \"capably\",\n \"capacity\",\n \"cape\",\n \"capillary\",\n \"capital\",\n \"capitol\",\n \"capped\",\n \"capricorn\",\n \"capsize\",\n \"capsule\",\n \"caption\",\n \"captivate\",\n \"captive\",\n \"captivity\",\n \"capture\",\n \"caramel\",\n \"carat\",\n \"caravan\",\n \"carbon\",\n \"cardboard\",\n \"carded\",\n \"cardiac\",\n \"cardigan\",\n \"cardinal\",\n \"cardstock\",\n \"carefully\",\n \"caregiver\",\n \"careless\",\n \"caress\",\n \"caretaker\",\n \"cargo\",\n \"caring\",\n \"carless\",\n \"carload\",\n \"carmaker\",\n \"carnage\",\n \"carnation\",\n \"carnival\",\n \"carnivore\",\n \"carol\",\n \"carpenter\",\n \"carpentry\",\n \"carpool\",\n \"carport\",\n \"carried\",\n \"carrot\",\n \"carrousel\",\n \"carry\",\n \"cartel\",\n \"cartload\",\n \"carton\",\n \"cartoon\",\n \"cartridge\",\n \"cartwheel\",\n \"carve\",\n \"carving\",\n \"carwash\",\n \"cascade\",\n \"case\",\n \"cash\",\n \"casing\",\n \"casino\",\n \"casket\",\n \"cassette\",\n \"casually\",\n \"casualty\",\n \"catacomb\",\n \"catalog\",\n \"catalyst\",\n \"catalyze\",\n \"catapult\",\n \"cataract\",\n \"catatonic\",\n \"catcall\",\n \"catchable\",\n \"catcher\",\n \"catching\",\n \"catchy\",\n \"caterer\",\n \"catering\",\n \"catfight\",\n \"catfish\",\n \"cathedral\",\n \"cathouse\",\n \"catlike\",\n \"catnap\",\n \"catnip\",\n \"catsup\",\n \"cattail\",\n \"cattishly\",\n \"cattle\",\n \"catty\",\n \"catwalk\",\n \"caucasian\",\n \"caucus\",\n \"causal\",\n \"causation\",\n \"cause\",\n \"causing\",\n \"cauterize\",\n \"caution\",\n \"cautious\",\n \"cavalier\",\n \"cavalry\",\n \"caviar\",\n \"cavity\",\n \"cedar\",\n \"celery\",\n \"celestial\",\n \"celibacy\",\n \"celibate\",\n \"celtic\",\n \"cement\",\n \"census\",\n \"ceramics\",\n \"ceremony\",\n \"certainly\",\n \"certainty\",\n \"certified\",\n \"certify\",\n \"cesarean\",\n \"cesspool\",\n \"chafe\",\n \"chaffing\",\n \"chain\",\n \"chair\",\n \"chalice\",\n \"challenge\",\n \"chamber\",\n \"chamomile\",\n \"champion\",\n \"chance\",\n \"change\",\n \"channel\",\n \"chant\",\n \"chaos\",\n \"chaperone\",\n \"chaplain\",\n \"chapped\",\n \"chaps\",\n \"chapter\",\n \"character\",\n \"charbroil\",\n \"charcoal\",\n \"charger\",\n \"charging\",\n \"chariot\",\n \"charity\",\n \"charm\",\n \"charred\",\n \"charter\",\n \"charting\",\n \"chase\",\n \"chasing\",\n \"chaste\",\n \"chastise\",\n \"chastity\",\n \"chatroom\",\n \"chatter\",\n \"chatting\",\n \"chatty\",\n \"cheating\",\n \"cheddar\",\n \"cheek\",\n \"cheer\",\n \"cheese\",\n \"cheesy\",\n \"chef\",\n \"chemicals\",\n \"chemist\",\n \"chemo\",\n \"cherisher\",\n \"cherub\",\n \"chess\",\n \"chest\",\n \"chevron\",\n \"chevy\",\n \"chewable\",\n \"chewer\",\n \"chewing\",\n \"chewy\",\n \"chief\",\n \"chihuahua\",\n \"childcare\",\n \"childhood\",\n \"childish\",\n \"childless\",\n \"childlike\",\n \"chili\",\n \"chill\",\n \"chimp\",\n \"chip\",\n \"chirping\",\n \"chirpy\",\n \"chitchat\",\n \"chivalry\",\n \"chive\",\n \"chloride\",\n \"chlorine\",\n \"choice\",\n \"chokehold\",\n \"choking\",\n \"chomp\",\n \"chooser\",\n \"choosing\",\n \"choosy\",\n \"chop\",\n \"chosen\",\n \"chowder\",\n \"chowtime\",\n \"chrome\",\n \"chubby\",\n \"chuck\",\n \"chug\",\n \"chummy\",\n \"chump\",\n \"chunk\",\n \"churn\",\n \"chute\",\n \"cider\",\n \"cilantro\",\n \"cinch\",\n \"cinema\",\n \"cinnamon\",\n \"circle\",\n \"circling\",\n \"circular\",\n \"circulate\",\n \"circus\",\n \"citable\",\n \"citadel\",\n \"citation\",\n \"citizen\",\n \"citric\",\n \"citrus\",\n \"city\",\n \"civic\",\n \"civil\",\n \"clad\",\n \"claim\",\n \"clambake\",\n \"clammy\",\n \"clamor\",\n \"clamp\",\n \"clamshell\",\n \"clang\",\n \"clanking\",\n \"clapped\",\n \"clapper\",\n \"clapping\",\n \"clarify\",\n \"clarinet\",\n \"clarity\",\n \"clash\",\n \"clasp\",\n \"class\",\n \"clatter\",\n \"clause\",\n \"clavicle\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clear\",\n \"cleat\",\n \"cleaver\",\n \"cleft\",\n \"clench\",\n \"clergyman\",\n \"clerical\",\n \"clerk\",\n \"clever\",\n \"clicker\",\n \"client\",\n \"climate\",\n \"climatic\",\n \"cling\",\n \"clinic\",\n \"clinking\",\n \"clip\",\n \"clique\",\n \"cloak\",\n \"clobber\",\n \"clock\",\n \"clone\",\n \"cloning\",\n \"closable\",\n \"closure\",\n \"clothes\",\n \"clothing\",\n \"cloud\",\n \"clover\",\n \"clubbed\",\n \"clubbing\",\n \"clubhouse\",\n \"clump\",\n \"clumsily\",\n \"clumsy\",\n \"clunky\",\n \"clustered\",\n \"clutch\",\n \"clutter\",\n \"coach\",\n \"coagulant\",\n \"coastal\",\n \"coaster\",\n \"coasting\",\n \"coastland\",\n \"coastline\",\n \"coat\",\n \"coauthor\",\n \"cobalt\",\n \"cobbler\",\n \"cobweb\",\n \"cocoa\",\n \"coconut\",\n \"cod\",\n \"coeditor\",\n \"coerce\",\n \"coexist\",\n \"coffee\",\n \"cofounder\",\n \"cognition\",\n \"cognitive\",\n \"cogwheel\",\n \"coherence\",\n \"coherent\",\n \"cohesive\",\n \"coil\",\n \"coke\",\n \"cola\",\n \"cold\",\n \"coleslaw\",\n \"coliseum\",\n \"collage\",\n \"collapse\",\n \"collar\",\n \"collected\",\n \"collector\",\n \"collide\",\n \"collie\",\n \"collision\",\n \"colonial\",\n \"colonist\",\n \"colonize\",\n \"colony\",\n \"colossal\",\n \"colt\",\n \"coma\",\n \"come\",\n \"comfort\",\n \"comfy\",\n \"comic\",\n \"coming\",\n \"comma\",\n \"commence\",\n \"commend\",\n \"comment\",\n \"commerce\",\n \"commode\",\n \"commodity\",\n \"commodore\",\n \"common\",\n \"commotion\",\n \"commute\",\n \"commuting\",\n \"compacted\",\n \"compacter\",\n \"compactly\",\n \"compactor\",\n \"companion\",\n \"company\",\n \"compare\",\n \"compel\",\n \"compile\",\n \"comply\",\n \"component\",\n \"composed\",\n \"composer\",\n \"composite\",\n \"compost\",\n \"composure\",\n \"compound\",\n \"compress\",\n \"comprised\",\n \"computer\",\n \"computing\",\n \"comrade\",\n \"concave\",\n \"conceal\",\n \"conceded\",\n \"concept\",\n \"concerned\",\n \"concert\",\n \"conch\",\n \"concierge\",\n \"concise\",\n \"conclude\",\n \"concrete\",\n \"concur\",\n \"condense\",\n \"condiment\",\n \"condition\",\n \"condone\",\n \"conducive\",\n \"conductor\",\n \"conduit\",\n \"cone\",\n \"confess\",\n \"confetti\",\n \"confidant\",\n \"confident\",\n \"confider\",\n \"confiding\",\n \"configure\",\n \"confined\",\n \"confining\",\n \"confirm\",\n \"conflict\",\n \"conform\",\n \"confound\",\n \"confront\",\n \"confused\",\n \"confusing\",\n \"confusion\",\n \"congenial\",\n \"congested\",\n \"congrats\",\n \"congress\",\n \"conical\",\n \"conjoined\",\n \"conjure\",\n \"conjuror\",\n \"connected\",\n \"connector\",\n \"consensus\",\n \"consent\",\n \"console\",\n \"consoling\",\n \"consonant\",\n \"constable\",\n \"constant\",\n \"constrain\",\n \"constrict\",\n \"construct\",\n \"consult\",\n \"consumer\",\n \"consuming\",\n \"contact\",\n \"container\",\n \"contempt\",\n \"contend\",\n \"contented\",\n \"contently\",\n \"contents\",\n \"contest\",\n \"context\",\n \"contort\",\n \"contour\",\n \"contrite\",\n \"control\",\n \"contusion\",\n \"convene\",\n \"convent\",\n \"copartner\",\n \"cope\",\n \"copied\",\n \"copier\",\n \"copilot\",\n \"coping\",\n \"copious\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"cork\",\n \"cornball\",\n \"cornbread\",\n \"corncob\",\n \"cornea\",\n \"corned\",\n \"corner\",\n \"cornfield\",\n \"cornflake\",\n \"cornhusk\",\n \"cornmeal\",\n \"cornstalk\",\n \"corny\",\n \"coronary\",\n \"coroner\",\n \"corporal\",\n \"corporate\",\n \"corral\",\n \"correct\",\n \"corridor\",\n \"corrode\",\n \"corroding\",\n \"corrosive\",\n \"corsage\",\n \"corset\",\n \"cortex\",\n \"cosigner\",\n \"cosmetics\",\n \"cosmic\",\n \"cosmos\",\n \"cosponsor\",\n \"cost\",\n \"cottage\",\n \"cotton\",\n \"couch\",\n \"cough\",\n \"could\",\n \"countable\",\n \"countdown\",\n \"counting\",\n \"countless\",\n \"country\",\n \"county\",\n \"courier\",\n \"covenant\",\n \"cover\",\n \"coveted\",\n \"coveting\",\n \"coyness\",\n \"cozily\",\n \"coziness\",\n \"cozy\",\n \"crabbing\",\n \"crabgrass\",\n \"crablike\",\n \"crabmeat\",\n \"cradle\",\n \"cradling\",\n \"crafter\",\n \"craftily\",\n \"craftsman\",\n \"craftwork\",\n \"crafty\",\n \"cramp\",\n \"cranberry\",\n \"crane\",\n \"cranial\",\n \"cranium\",\n \"crank\",\n \"crate\",\n \"crave\",\n \"craving\",\n \"crawfish\",\n \"crawlers\",\n \"crawling\",\n \"crayfish\",\n \"crayon\",\n \"crazed\",\n \"crazily\",\n \"craziness\",\n \"crazy\",\n \"creamed\",\n \"creamer\",\n \"creamlike\",\n \"crease\",\n \"creasing\",\n \"creatable\",\n \"create\",\n \"creation\",\n \"creative\",\n \"creature\",\n \"credible\",\n \"credibly\",\n \"credit\",\n \"creed\",\n \"creme\",\n \"creole\",\n \"crepe\",\n \"crept\",\n \"crescent\",\n \"crested\",\n \"cresting\",\n \"crestless\",\n \"crevice\",\n \"crewless\",\n \"crewman\",\n \"crewmate\",\n \"crib\",\n \"cricket\",\n \"cried\",\n \"crier\",\n \"crimp\",\n \"crimson\",\n \"cringe\",\n \"cringing\",\n \"crinkle\",\n \"crinkly\",\n \"crisped\",\n \"crisping\",\n \"crisply\",\n \"crispness\",\n \"crispy\",\n \"criteria\",\n \"critter\",\n \"croak\",\n \"crock\",\n \"crook\",\n \"croon\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crouton\",\n \"crowbar\",\n \"crowd\",\n \"crown\",\n \"crucial\",\n \"crudely\",\n \"crudeness\",\n \"cruelly\",\n \"cruelness\",\n \"cruelty\",\n \"crumb\",\n \"crummiest\",\n \"crummy\",\n \"crumpet\",\n \"crumpled\",\n \"cruncher\",\n \"crunching\",\n \"crunchy\",\n \"crusader\",\n \"crushable\",\n \"crushed\",\n \"crusher\",\n \"crushing\",\n \"crust\",\n \"crux\",\n \"crying\",\n \"cryptic\",\n \"crystal\",\n \"cubbyhole\",\n \"cube\",\n \"cubical\",\n \"cubicle\",\n \"cucumber\",\n \"cuddle\",\n \"cuddly\",\n \"cufflink\",\n \"culinary\",\n \"culminate\",\n \"culpable\",\n \"culprit\",\n \"cultivate\",\n \"cultural\",\n \"culture\",\n \"cupbearer\",\n \"cupcake\",\n \"cupid\",\n \"cupped\",\n \"cupping\",\n \"curable\",\n \"curator\",\n \"curdle\",\n \"cure\",\n \"curfew\",\n \"curing\",\n \"curled\",\n \"curler\",\n \"curliness\",\n \"curling\",\n \"curly\",\n \"curry\",\n \"curse\",\n \"cursive\",\n \"cursor\",\n \"curtain\",\n \"curtly\",\n \"curtsy\",\n \"curvature\",\n \"curve\",\n \"curvy\",\n \"cushy\",\n \"cusp\",\n \"cussed\",\n \"custard\",\n \"custodian\",\n \"custody\",\n \"customary\",\n \"customer\",\n \"customize\",\n \"customs\",\n \"cut\",\n \"cycle\",\n \"cyclic\",\n \"cycling\",\n \"cyclist\",\n \"cylinder\",\n \"cymbal\",\n \"cytoplasm\",\n \"cytoplast\",\n \"dab\",\n \"dad\",\n \"daffodil\",\n \"dagger\",\n \"daily\",\n \"daintily\",\n \"dainty\",\n \"dairy\",\n \"daisy\",\n \"dallying\",\n \"dance\",\n \"dancing\",\n \"dandelion\",\n \"dander\",\n \"dandruff\",\n \"dandy\",\n \"danger\",\n \"dangle\",\n \"dangling\",\n \"daredevil\",\n \"dares\",\n \"daringly\",\n \"darkened\",\n \"darkening\",\n \"darkish\",\n \"darkness\",\n \"darkroom\",\n \"darling\",\n \"darn\",\n \"dart\",\n \"darwinism\",\n \"dash\",\n \"dastardly\",\n \"data\",\n \"datebook\",\n \"dating\",\n \"daughter\",\n \"daunting\",\n \"dawdler\",\n \"dawn\",\n \"daybed\",\n \"daybreak\",\n \"daycare\",\n \"daydream\",\n \"daylight\",\n \"daylong\",\n \"dayroom\",\n \"daytime\",\n \"dazzler\",\n \"dazzling\",\n \"deacon\",\n \"deafening\",\n \"deafness\",\n \"dealer\",\n \"dealing\",\n \"dealmaker\",\n \"dealt\",\n \"dean\",\n \"debatable\",\n \"debate\",\n \"debating\",\n \"debit\",\n \"debrief\",\n \"debtless\",\n \"debtor\",\n \"debug\",\n \"debunk\",\n \"decade\",\n \"decaf\",\n \"decal\",\n \"decathlon\",\n \"decay\",\n \"deceased\",\n \"deceit\",\n \"deceiver\",\n \"deceiving\",\n \"december\",\n \"decency\",\n \"decent\",\n \"deception\",\n \"deceptive\",\n \"decibel\",\n \"decidable\",\n \"decimal\",\n \"decimeter\",\n \"decipher\",\n \"deck\",\n \"declared\",\n \"decline\",\n \"decode\",\n \"decompose\",\n \"decorated\",\n \"decorator\",\n \"decoy\",\n \"decrease\",\n \"decree\",\n \"dedicate\",\n \"dedicator\",\n \"deduce\",\n \"deduct\",\n \"deed\",\n \"deem\",\n \"deepen\",\n \"deeply\",\n \"deepness\",\n \"deface\",\n \"defacing\",\n \"defame\",\n \"default\",\n \"defeat\",\n \"defection\",\n \"defective\",\n \"defendant\",\n \"defender\",\n \"defense\",\n \"defensive\",\n \"deferral\",\n \"deferred\",\n \"defiance\",\n \"defiant\",\n \"defile\",\n \"defiling\",\n \"define\",\n \"definite\",\n \"deflate\",\n \"deflation\",\n \"deflator\",\n \"deflected\",\n \"deflector\",\n \"defog\",\n \"deforest\",\n \"defraud\",\n \"defrost\",\n \"deftly\",\n \"defuse\",\n \"defy\",\n \"degraded\",\n \"degrading\",\n \"degrease\",\n \"degree\",\n \"dehydrate\",\n \"deity\",\n \"dejected\",\n \"delay\",\n \"delegate\",\n \"delegator\",\n \"delete\",\n \"deletion\",\n \"delicacy\",\n \"delicate\",\n \"delicious\",\n \"delighted\",\n \"delirious\",\n \"delirium\",\n \"deliverer\",\n \"delivery\",\n \"delouse\",\n \"delta\",\n \"deluge\",\n \"delusion\",\n \"deluxe\",\n \"demanding\",\n \"demeaning\",\n \"demeanor\",\n \"demise\",\n \"democracy\",\n \"democrat\",\n \"demote\",\n \"demotion\",\n \"demystify\",\n \"denatured\",\n \"deniable\",\n \"denial\",\n \"denim\",\n \"denote\",\n \"dense\",\n \"density\",\n \"dental\",\n \"dentist\",\n \"denture\",\n \"deny\",\n \"deodorant\",\n \"deodorize\",\n \"departed\",\n \"departure\",\n \"depict\",\n \"deplete\",\n \"depletion\",\n \"deplored\",\n \"deploy\",\n \"deport\",\n \"depose\",\n \"depraved\",\n \"depravity\",\n \"deprecate\",\n \"depress\",\n \"deprive\",\n \"depth\",\n \"deputize\",\n \"deputy\",\n \"derail\",\n \"deranged\",\n \"derby\",\n \"derived\",\n \"desecrate\",\n \"deserve\",\n \"deserving\",\n \"designate\",\n \"designed\",\n \"designer\",\n \"designing\",\n \"deskbound\",\n \"desktop\",\n \"deskwork\",\n \"desolate\",\n \"despair\",\n \"despise\",\n \"despite\",\n \"destiny\",\n \"destitute\",\n \"destruct\",\n \"detached\",\n \"detail\",\n \"detection\",\n \"detective\",\n \"detector\",\n \"detention\",\n \"detergent\",\n \"detest\",\n \"detonate\",\n \"detonator\",\n \"detoxify\",\n \"detract\",\n \"deuce\",\n \"devalue\",\n \"deviancy\",\n \"deviant\",\n \"deviate\",\n \"deviation\",\n \"deviator\",\n \"device\",\n \"devious\",\n \"devotedly\",\n \"devotee\",\n \"devotion\",\n \"devourer\",\n \"devouring\",\n \"devoutly\",\n \"dexterity\",\n \"dexterous\",\n \"diabetes\",\n \"diabetic\",\n \"diabolic\",\n \"diagnoses\",\n \"diagnosis\",\n \"diagram\",\n \"dial\",\n \"diameter\",\n \"diaper\",\n \"diaphragm\",\n \"diary\",\n \"dice\",\n \"dicing\",\n \"dictate\",\n \"dictation\",\n \"dictator\",\n \"difficult\",\n \"diffused\",\n \"diffuser\",\n \"diffusion\",\n \"diffusive\",\n \"dig\",\n \"dilation\",\n \"diligence\",\n \"diligent\",\n \"dill\",\n \"dilute\",\n \"dime\",\n \"diminish\",\n \"dimly\",\n \"dimmed\",\n \"dimmer\",\n \"dimness\",\n \"dimple\",\n \"diner\",\n \"dingbat\",\n \"dinghy\",\n \"dinginess\",\n \"dingo\",\n \"dingy\",\n \"dining\",\n \"dinner\",\n \"diocese\",\n \"dioxide\",\n \"diploma\",\n \"dipped\",\n \"dipper\",\n \"dipping\",\n \"directed\",\n \"direction\",\n \"directive\",\n \"directly\",\n \"directory\",\n \"direness\",\n \"dirtiness\",\n \"disabled\",\n \"disagree\",\n \"disallow\",\n \"disarm\",\n \"disarray\",\n \"disaster\",\n \"disband\",\n \"disbelief\",\n \"disburse\",\n \"discard\",\n \"discern\",\n \"discharge\",\n \"disclose\",\n \"discolor\",\n \"discount\",\n \"discourse\",\n \"discover\",\n \"discuss\",\n \"disdain\",\n \"disengage\",\n \"disfigure\",\n \"disgrace\",\n \"dish\",\n \"disinfect\",\n \"disjoin\",\n \"disk\",\n \"dislike\",\n \"disliking\",\n \"dislocate\",\n \"dislodge\",\n \"disloyal\",\n \"dismantle\",\n \"dismay\",\n \"dismiss\",\n \"dismount\",\n \"disobey\",\n \"disorder\",\n \"disown\",\n \"disparate\",\n \"disparity\",\n \"dispatch\",\n \"dispense\",\n \"dispersal\",\n \"dispersed\",\n \"disperser\",\n \"displace\",\n \"display\",\n \"displease\",\n \"disposal\",\n \"dispose\",\n \"disprove\",\n \"dispute\",\n \"disregard\",\n \"disrupt\",\n \"dissuade\",\n \"distance\",\n \"distant\",\n \"distaste\",\n \"distill\",\n \"distinct\",\n \"distort\",\n \"distract\",\n \"distress\",\n \"district\",\n \"distrust\",\n \"ditch\",\n \"ditto\",\n \"ditzy\",\n \"dividable\",\n \"divided\",\n \"dividend\",\n \"dividers\",\n \"dividing\",\n \"divinely\",\n \"diving\",\n \"divinity\",\n \"divisible\",\n \"divisibly\",\n \"division\",\n \"divisive\",\n \"divorcee\",\n \"dizziness\",\n \"dizzy\",\n \"doable\",\n \"docile\",\n \"dock\",\n \"doctrine\",\n \"document\",\n \"dodge\",\n \"dodgy\",\n \"doily\",\n \"doing\",\n \"dole\",\n \"dollar\",\n \"dollhouse\",\n \"dollop\",\n \"dolly\",\n \"dolphin\",\n \"domain\",\n \"domelike\",\n \"domestic\",\n \"dominion\",\n \"dominoes\",\n \"donated\",\n \"donation\",\n \"donator\",\n \"donor\",\n \"donut\",\n \"doodle\",\n \"doorbell\",\n \"doorframe\",\n \"doorknob\",\n \"doorman\",\n \"doormat\",\n \"doornail\",\n \"doorpost\",\n \"doorstep\",\n \"doorstop\",\n \"doorway\",\n \"doozy\",\n \"dork\",\n \"dormitory\",\n \"dorsal\",\n \"dosage\",\n \"dose\",\n \"dotted\",\n \"doubling\",\n \"douche\",\n \"dove\",\n \"down\",\n \"dowry\",\n \"doze\",\n \"drab\",\n \"dragging\",\n \"dragonfly\",\n \"dragonish\",\n \"dragster\",\n \"drainable\",\n \"drainage\",\n \"drained\",\n \"drainer\",\n \"drainpipe\",\n \"dramatic\",\n \"dramatize\",\n \"drank\",\n \"drapery\",\n \"drastic\",\n \"draw\",\n \"dreaded\",\n \"dreadful\",\n \"dreadlock\",\n \"dreamboat\",\n \"dreamily\",\n \"dreamland\",\n \"dreamless\",\n \"dreamlike\",\n \"dreamt\",\n \"dreamy\",\n \"drearily\",\n \"dreary\",\n \"drench\",\n \"dress\",\n \"drew\",\n \"dribble\",\n \"dried\",\n \"drier\",\n \"drift\",\n \"driller\",\n \"drilling\",\n \"drinkable\",\n \"drinking\",\n \"dripping\",\n \"drippy\",\n \"drivable\",\n \"driven\",\n \"driver\",\n \"driveway\",\n \"driving\",\n \"drizzle\",\n \"drizzly\",\n \"drone\",\n \"drool\",\n \"droop\",\n \"drop-down\",\n \"dropbox\",\n \"dropkick\",\n \"droplet\",\n \"dropout\",\n \"dropper\",\n \"drove\",\n \"drown\",\n \"drowsily\",\n \"drudge\",\n \"drum\",\n \"dry\",\n \"dubbed\",\n \"dubiously\",\n \"duchess\",\n \"duckbill\",\n \"ducking\",\n \"duckling\",\n \"ducktail\",\n \"ducky\",\n \"duct\",\n \"dude\",\n \"duffel\",\n \"dugout\",\n \"duh\",\n \"duke\",\n \"duller\",\n \"dullness\",\n \"duly\",\n \"dumping\",\n \"dumpling\",\n \"dumpster\",\n \"duo\",\n \"dupe\",\n \"duplex\",\n \"duplicate\",\n \"duplicity\",\n \"durable\",\n \"durably\",\n \"duration\",\n \"duress\",\n \"during\",\n \"dusk\",\n \"dust\",\n \"dutiful\",\n \"duty\",\n \"duvet\",\n \"dwarf\",\n \"dweeb\",\n \"dwelled\",\n \"dweller\",\n \"dwelling\",\n \"dwindle\",\n \"dwindling\",\n \"dynamic\",\n \"dynamite\",\n \"dynasty\",\n \"dyslexia\",\n \"dyslexic\",\n \"each\",\n \"eagle\",\n \"earache\",\n \"eardrum\",\n \"earflap\",\n \"earful\",\n \"earlobe\",\n \"early\",\n \"earmark\",\n \"earmuff\",\n \"earphone\",\n \"earpiece\",\n \"earplugs\",\n \"earring\",\n \"earshot\",\n \"earthen\",\n \"earthlike\",\n \"earthling\",\n \"earthly\",\n \"earthworm\",\n \"earthy\",\n \"earwig\",\n \"easeful\",\n \"easel\",\n \"easiest\",\n \"easily\",\n \"easiness\",\n \"easing\",\n \"eastbound\",\n \"eastcoast\",\n \"easter\",\n \"eastward\",\n \"eatable\",\n \"eaten\",\n \"eatery\",\n \"eating\",\n \"eats\",\n \"ebay\",\n \"ebony\",\n \"ebook\",\n \"ecard\",\n \"eccentric\",\n \"echo\",\n \"eclair\",\n \"eclipse\",\n \"ecologist\",\n \"ecology\",\n \"economic\",\n \"economist\",\n \"economy\",\n \"ecosphere\",\n \"ecosystem\",\n \"edge\",\n \"edginess\",\n \"edging\",\n \"edgy\",\n \"edition\",\n \"editor\",\n \"educated\",\n \"education\",\n \"educator\",\n \"eel\",\n \"effective\",\n \"effects\",\n \"efficient\",\n \"effort\",\n \"eggbeater\",\n \"egging\",\n \"eggnog\",\n \"eggplant\",\n \"eggshell\",\n \"egomaniac\",\n \"egotism\",\n \"egotistic\",\n \"either\",\n \"eject\",\n \"elaborate\",\n \"elastic\",\n \"elated\",\n \"elbow\",\n \"eldercare\",\n \"elderly\",\n \"eldest\",\n \"electable\",\n \"election\",\n \"elective\",\n \"elephant\",\n \"elevate\",\n \"elevating\",\n \"elevation\",\n \"elevator\",\n \"eleven\",\n \"elf\",\n \"eligible\",\n \"eligibly\",\n \"eliminate\",\n \"elite\",\n \"elitism\",\n \"elixir\",\n \"elk\",\n \"ellipse\",\n \"elliptic\",\n \"elm\",\n \"elongated\",\n \"elope\",\n \"eloquence\",\n \"eloquent\",\n \"elsewhere\",\n \"elude\",\n \"elusive\",\n \"elves\",\n \"email\",\n \"embargo\",\n \"embark\",\n \"embassy\",\n \"embattled\",\n \"embellish\",\n \"ember\",\n \"embezzle\",\n \"emblaze\",\n \"emblem\",\n \"embody\",\n \"embolism\",\n \"emboss\",\n \"embroider\",\n \"emcee\",\n \"emerald\",\n \"emergency\",\n \"emission\",\n \"emit\",\n \"emote\",\n \"emoticon\",\n \"emotion\",\n \"empathic\",\n \"empathy\",\n \"emperor\",\n \"emphases\",\n \"emphasis\",\n \"emphasize\",\n \"emphatic\",\n \"empirical\",\n \"employed\",\n \"employee\",\n \"employer\",\n \"emporium\",\n \"empower\",\n \"emptier\",\n \"emptiness\",\n \"empty\",\n \"emu\",\n \"enable\",\n \"enactment\",\n \"enamel\",\n \"enchanted\",\n \"enchilada\",\n \"encircle\",\n \"enclose\",\n \"enclosure\",\n \"encode\",\n \"encore\",\n \"encounter\",\n \"encourage\",\n \"encroach\",\n \"encrust\",\n \"encrypt\",\n \"endanger\",\n \"endeared\",\n \"endearing\",\n \"ended\",\n \"ending\",\n \"endless\",\n \"endnote\",\n \"endocrine\",\n \"endorphin\",\n \"endorse\",\n \"endowment\",\n \"endpoint\",\n \"endurable\",\n \"endurance\",\n \"enduring\",\n \"energetic\",\n \"energize\",\n \"energy\",\n \"enforced\",\n \"enforcer\",\n \"engaged\",\n \"engaging\",\n \"engine\",\n \"engorge\",\n \"engraved\",\n \"engraver\",\n \"engraving\",\n \"engross\",\n \"engulf\",\n \"enhance\",\n \"enigmatic\",\n \"enjoyable\",\n \"enjoyably\",\n \"enjoyer\",\n \"enjoying\",\n \"enjoyment\",\n \"enlarged\",\n \"enlarging\",\n \"enlighten\",\n \"enlisted\",\n \"enquirer\",\n \"enrage\",\n \"enrich\",\n \"enroll\",\n \"enslave\",\n \"ensnare\",\n \"ensure\",\n \"entail\",\n \"entangled\",\n \"entering\",\n \"entertain\",\n \"enticing\",\n \"entire\",\n \"entitle\",\n \"entity\",\n \"entomb\",\n \"entourage\",\n \"entrap\",\n \"entree\",\n \"entrench\",\n \"entrust\",\n \"entryway\",\n \"entwine\",\n \"enunciate\",\n \"envelope\",\n \"enviable\",\n \"enviably\",\n \"envious\",\n \"envision\",\n \"envoy\",\n \"envy\",\n \"enzyme\",\n \"epic\",\n \"epidemic\",\n \"epidermal\",\n \"epidermis\",\n \"epidural\",\n \"epilepsy\",\n \"epileptic\",\n \"epilogue\",\n \"epiphany\",\n \"episode\",\n \"equal\",\n \"equate\",\n \"equation\",\n \"equator\",\n \"equinox\",\n \"equipment\",\n \"equity\",\n \"equivocal\",\n \"eradicate\",\n \"erasable\",\n \"erased\",\n \"eraser\",\n \"erasure\",\n \"ergonomic\",\n \"errand\",\n \"errant\",\n \"erratic\",\n \"error\",\n \"erupt\",\n \"escalate\",\n \"escalator\",\n \"escapable\",\n \"escapade\",\n \"escapist\",\n \"escargot\",\n \"eskimo\",\n \"esophagus\",\n \"espionage\",\n \"espresso\",\n \"esquire\",\n \"essay\",\n \"essence\",\n \"essential\",\n \"establish\",\n \"estate\",\n \"esteemed\",\n \"estimate\",\n \"estimator\",\n \"estranged\",\n \"estrogen\",\n \"etching\",\n \"eternal\",\n \"eternity\",\n \"ethanol\",\n \"ether\",\n \"ethically\",\n \"ethics\",\n \"euphemism\",\n \"evacuate\",\n \"evacuee\",\n \"evade\",\n \"evaluate\",\n \"evaluator\",\n \"evaporate\",\n \"evasion\",\n \"evasive\",\n \"even\",\n \"everglade\",\n \"evergreen\",\n \"everybody\",\n \"everyday\",\n \"everyone\",\n \"evict\",\n \"evidence\",\n \"evident\",\n \"evil\",\n \"evoke\",\n \"evolution\",\n \"evolve\",\n \"exact\",\n \"exalted\",\n \"example\",\n \"excavate\",\n \"excavator\",\n \"exceeding\",\n \"exception\",\n \"excess\",\n \"exchange\",\n \"excitable\",\n \"exciting\",\n \"exclaim\",\n \"exclude\",\n \"excluding\",\n \"exclusion\",\n \"exclusive\",\n \"excretion\",\n \"excretory\",\n \"excursion\",\n \"excusable\",\n \"excusably\",\n \"excuse\",\n \"exemplary\",\n \"exemplify\",\n \"exemption\",\n \"exerciser\",\n \"exert\",\n \"exes\",\n \"exfoliate\",\n \"exhale\",\n \"exhaust\",\n \"exhume\",\n \"exile\",\n \"existing\",\n \"exit\",\n \"exodus\",\n \"exonerate\",\n \"exorcism\",\n \"exorcist\",\n \"expand\",\n \"expanse\",\n \"expansion\",\n \"expansive\",\n \"expectant\",\n \"expedited\",\n \"expediter\",\n \"expel\",\n \"expend\",\n \"expenses\",\n \"expensive\",\n \"expert\",\n \"expire\",\n \"expiring\",\n \"explain\",\n \"expletive\",\n \"explicit\",\n \"explode\",\n \"exploit\",\n \"explore\",\n \"exploring\",\n \"exponent\",\n \"exporter\",\n \"exposable\",\n \"expose\",\n \"exposure\",\n \"express\",\n \"expulsion\",\n \"exquisite\",\n \"extended\",\n \"extending\",\n \"extent\",\n \"extenuate\",\n \"exterior\",\n \"external\",\n \"extinct\",\n \"extortion\",\n \"extradite\",\n \"extras\",\n \"extrovert\",\n \"extrude\",\n \"extruding\",\n \"exuberant\",\n \"fable\",\n \"fabric\",\n \"fabulous\",\n \"facebook\",\n \"facecloth\",\n \"facedown\",\n \"faceless\",\n \"facelift\",\n \"faceplate\",\n \"faceted\",\n \"facial\",\n \"facility\",\n \"facing\",\n \"facsimile\",\n \"faction\",\n \"factoid\",\n \"factor\",\n \"factsheet\",\n \"factual\",\n \"faculty\",\n \"fade\",\n \"fading\",\n \"failing\",\n \"falcon\",\n \"fall\",\n \"false\",\n \"falsify\",\n \"fame\",\n \"familiar\",\n \"family\",\n \"famine\",\n \"famished\",\n \"fanatic\",\n \"fancied\",\n \"fanciness\",\n \"fancy\",\n \"fanfare\",\n \"fang\",\n \"fanning\",\n \"fantasize\",\n \"fantastic\",\n \"fantasy\",\n \"fascism\",\n \"fastball\",\n \"faster\",\n \"fasting\",\n \"fastness\",\n \"faucet\",\n \"favorable\",\n \"favorably\",\n \"favored\",\n \"favoring\",\n \"favorite\",\n \"fax\",\n \"feast\",\n \"federal\",\n \"fedora\",\n \"feeble\",\n \"feed\",\n \"feel\",\n \"feisty\",\n \"feline\",\n \"felt-tip\",\n \"feminine\",\n \"feminism\",\n \"feminist\",\n \"feminize\",\n \"femur\",\n \"fence\",\n \"fencing\",\n \"fender\",\n \"ferment\",\n \"fernlike\",\n \"ferocious\",\n \"ferocity\",\n \"ferret\",\n \"ferris\",\n \"ferry\",\n \"fervor\",\n \"fester\",\n \"festival\",\n \"festive\",\n \"festivity\",\n \"fetal\",\n \"fetch\",\n \"fever\",\n \"fiber\",\n \"fiction\",\n \"fiddle\",\n \"fiddling\",\n \"fidelity\",\n \"fidgeting\",\n \"fidgety\",\n \"fifteen\",\n \"fifth\",\n \"fiftieth\",\n \"fifty\",\n \"figment\",\n \"figure\",\n \"figurine\",\n \"filing\",\n \"filled\",\n \"filler\",\n \"filling\",\n \"film\",\n \"filter\",\n \"filth\",\n \"filtrate\",\n \"finale\",\n \"finalist\",\n \"finalize\",\n \"finally\",\n \"finance\",\n \"financial\",\n \"finch\",\n \"fineness\",\n \"finer\",\n \"finicky\",\n \"finished\",\n \"finisher\",\n \"finishing\",\n \"finite\",\n \"finless\",\n \"finlike\",\n \"fiscally\",\n \"fit\",\n \"five\",\n \"flaccid\",\n \"flagman\",\n \"flagpole\",\n \"flagship\",\n \"flagstick\",\n \"flagstone\",\n \"flail\",\n \"flakily\",\n \"flaky\",\n \"flame\",\n \"flammable\",\n \"flanked\",\n \"flanking\",\n \"flannels\",\n \"flap\",\n \"flaring\",\n \"flashback\",\n \"flashbulb\",\n \"flashcard\",\n \"flashily\",\n \"flashing\",\n \"flashy\",\n \"flask\",\n \"flatbed\",\n \"flatfoot\",\n \"flatly\",\n \"flatness\",\n \"flatten\",\n \"flattered\",\n \"flatterer\",\n \"flattery\",\n \"flattop\",\n \"flatware\",\n \"flatworm\",\n \"flavored\",\n \"flavorful\",\n \"flavoring\",\n \"flaxseed\",\n \"fled\",\n \"fleshed\",\n \"fleshy\",\n \"flick\",\n \"flier\",\n \"flight\",\n \"flinch\",\n \"fling\",\n \"flint\",\n \"flip\",\n \"flirt\",\n \"float\",\n \"flock\",\n \"flogging\",\n \"flop\",\n \"floral\",\n \"florist\",\n \"floss\",\n \"flounder\",\n \"flyable\",\n \"flyaway\",\n \"flyer\",\n \"flying\",\n \"flyover\",\n \"flypaper\",\n \"foam\",\n \"foe\",\n \"fog\",\n \"foil\",\n \"folic\",\n \"folk\",\n \"follicle\",\n \"follow\",\n \"fondling\",\n \"fondly\",\n \"fondness\",\n \"fondue\",\n \"font\",\n \"food\",\n \"fool\",\n \"footage\",\n \"football\",\n \"footbath\",\n \"footboard\",\n \"footer\",\n \"footgear\",\n \"foothill\",\n \"foothold\",\n \"footing\",\n \"footless\",\n \"footman\",\n \"footnote\",\n \"footpad\",\n \"footpath\",\n \"footprint\",\n \"footrest\",\n \"footsie\",\n \"footsore\",\n \"footwear\",\n \"footwork\",\n \"fossil\",\n \"foster\",\n \"founder\",\n \"founding\",\n \"fountain\",\n \"fox\",\n \"foyer\",\n \"fraction\",\n \"fracture\",\n \"fragile\",\n \"fragility\",\n \"fragment\",\n \"fragrance\",\n \"fragrant\",\n \"frail\",\n \"frame\",\n \"framing\",\n \"frantic\",\n \"fraternal\",\n \"frayed\",\n \"fraying\",\n \"frays\",\n \"freckled\",\n \"freckles\",\n \"freebase\",\n \"freebee\",\n \"freebie\",\n \"freedom\",\n \"freefall\",\n \"freehand\",\n \"freeing\",\n \"freeload\",\n \"freely\",\n \"freemason\",\n \"freeness\",\n \"freestyle\",\n \"freeware\",\n \"freeway\",\n \"freewill\",\n \"freezable\",\n \"freezing\",\n \"freight\",\n \"french\",\n \"frenzied\",\n \"frenzy\",\n \"frequency\",\n \"frequent\",\n \"fresh\",\n \"fretful\",\n \"fretted\",\n \"friction\",\n \"friday\",\n \"fridge\",\n \"fried\",\n \"friend\",\n \"frighten\",\n \"frightful\",\n \"frigidity\",\n \"frigidly\",\n \"frill\",\n \"fringe\",\n \"frisbee\",\n \"frisk\",\n \"fritter\",\n \"frivolous\",\n \"frolic\",\n \"from\",\n \"front\",\n \"frostbite\",\n \"frosted\",\n \"frostily\",\n \"frosting\",\n \"frostlike\",\n \"frosty\",\n \"froth\",\n \"frown\",\n \"frozen\",\n \"fructose\",\n \"frugality\",\n \"frugally\",\n \"fruit\",\n \"frustrate\",\n \"frying\",\n \"gab\",\n \"gaffe\",\n \"gag\",\n \"gainfully\",\n \"gaining\",\n \"gains\",\n \"gala\",\n \"gallantly\",\n \"galleria\",\n \"gallery\",\n \"galley\",\n \"gallon\",\n \"gallows\",\n \"gallstone\",\n \"galore\",\n \"galvanize\",\n \"gambling\",\n \"game\",\n \"gaming\",\n \"gamma\",\n \"gander\",\n \"gangly\",\n \"gangrene\",\n \"gangway\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"gargle\",\n \"garland\",\n \"garlic\",\n \"garment\",\n \"garnet\",\n \"garnish\",\n \"garter\",\n \"gas\",\n \"gatherer\",\n \"gathering\",\n \"gating\",\n \"gauging\",\n \"gauntlet\",\n \"gauze\",\n \"gave\",\n \"gawk\",\n \"gazing\",\n \"gear\",\n \"gecko\",\n \"geek\",\n \"geiger\",\n \"gem\",\n \"gender\",\n \"generic\",\n \"generous\",\n \"genetics\",\n \"genre\",\n \"gentile\",\n \"gentleman\",\n \"gently\",\n \"gents\",\n \"geography\",\n \"geologic\",\n \"geologist\",\n \"geology\",\n \"geometric\",\n \"geometry\",\n \"geranium\",\n \"gerbil\",\n \"geriatric\",\n \"germicide\",\n \"germinate\",\n \"germless\",\n \"germproof\",\n \"gestate\",\n \"gestation\",\n \"gesture\",\n \"getaway\",\n \"getting\",\n \"getup\",\n \"giant\",\n \"gibberish\",\n \"giblet\",\n \"giddily\",\n \"giddiness\",\n \"giddy\",\n \"gift\",\n \"gigabyte\",\n \"gigahertz\",\n \"gigantic\",\n \"giggle\",\n \"giggling\",\n \"giggly\",\n \"gigolo\",\n \"gilled\",\n \"gills\",\n \"gimmick\",\n \"girdle\",\n \"giveaway\",\n \"given\",\n \"giver\",\n \"giving\",\n \"gizmo\",\n \"gizzard\",\n \"glacial\",\n \"glacier\",\n \"glade\",\n \"gladiator\",\n \"gladly\",\n \"glamorous\",\n \"glamour\",\n \"glance\",\n \"glancing\",\n \"glandular\",\n \"glare\",\n \"glaring\",\n \"glass\",\n \"glaucoma\",\n \"glazing\",\n \"gleaming\",\n \"gleeful\",\n \"glider\",\n \"gliding\",\n \"glimmer\",\n \"glimpse\",\n \"glisten\",\n \"glitch\",\n \"glitter\",\n \"glitzy\",\n \"gloater\",\n \"gloating\",\n \"gloomily\",\n \"gloomy\",\n \"glorified\",\n \"glorifier\",\n \"glorify\",\n \"glorious\",\n \"glory\",\n \"gloss\",\n \"glove\",\n \"glowing\",\n \"glowworm\",\n \"glucose\",\n \"glue\",\n \"gluten\",\n \"glutinous\",\n \"glutton\",\n \"gnarly\",\n \"gnat\",\n \"goal\",\n \"goatskin\",\n \"goes\",\n \"goggles\",\n \"going\",\n \"goldfish\",\n \"goldmine\",\n \"goldsmith\",\n \"golf\",\n \"goliath\",\n \"gonad\",\n \"gondola\",\n \"gone\",\n \"gong\",\n \"good\",\n \"gooey\",\n \"goofball\",\n \"goofiness\",\n \"goofy\",\n \"google\",\n \"goon\",\n \"gopher\",\n \"gore\",\n \"gorged\",\n \"gorgeous\",\n \"gory\",\n \"gosling\",\n \"gossip\",\n \"gothic\",\n \"gotten\",\n \"gout\",\n \"gown\",\n \"grab\",\n \"graceful\",\n \"graceless\",\n \"gracious\",\n \"gradation\",\n \"graded\",\n \"grader\",\n \"gradient\",\n \"grading\",\n \"gradually\",\n \"graduate\",\n \"graffiti\",\n \"grafted\",\n \"grafting\",\n \"grain\",\n \"granddad\",\n \"grandkid\",\n \"grandly\",\n \"grandma\",\n \"grandpa\",\n \"grandson\",\n \"granite\",\n \"granny\",\n \"granola\",\n \"grant\",\n \"granular\",\n \"grape\",\n \"graph\",\n \"grapple\",\n \"grappling\",\n \"grasp\",\n \"grass\",\n \"gratified\",\n \"gratify\",\n \"grating\",\n \"gratitude\",\n \"gratuity\",\n \"gravel\",\n \"graveness\",\n \"graves\",\n \"graveyard\",\n \"gravitate\",\n \"gravity\",\n \"gravy\",\n \"gray\",\n \"grazing\",\n \"greasily\",\n \"greedily\",\n \"greedless\",\n \"greedy\",\n \"green\",\n \"greeter\",\n \"greeting\",\n \"grew\",\n \"greyhound\",\n \"grid\",\n \"grief\",\n \"grievance\",\n \"grieving\",\n \"grievous\",\n \"grill\",\n \"grimace\",\n \"grimacing\",\n \"grime\",\n \"griminess\",\n \"grimy\",\n \"grinch\",\n \"grinning\",\n \"grip\",\n \"gristle\",\n \"grit\",\n \"groggily\",\n \"groggy\",\n \"groin\",\n \"groom\",\n \"groove\",\n \"grooving\",\n \"groovy\",\n \"grope\",\n \"ground\",\n \"grouped\",\n \"grout\",\n \"grove\",\n \"grower\",\n \"growing\",\n \"growl\",\n \"grub\",\n \"grudge\",\n \"grudging\",\n \"grueling\",\n \"gruffly\",\n \"grumble\",\n \"grumbling\",\n \"grumbly\",\n \"grumpily\",\n \"grunge\",\n \"grunt\",\n \"guacamole\",\n \"guidable\",\n \"guidance\",\n \"guide\",\n \"guiding\",\n \"guileless\",\n \"guise\",\n \"gulf\",\n \"gullible\",\n \"gully\",\n \"gulp\",\n \"gumball\",\n \"gumdrop\",\n \"gumminess\",\n \"gumming\",\n \"gummy\",\n \"gurgle\",\n \"gurgling\",\n \"guru\",\n \"gush\",\n \"gusto\",\n \"gusty\",\n \"gutless\",\n \"guts\",\n \"gutter\",\n \"guy\",\n \"guzzler\",\n \"gyration\",\n \"habitable\",\n \"habitant\",\n \"habitat\",\n \"habitual\",\n \"hacked\",\n \"hacker\",\n \"hacking\",\n \"hacksaw\",\n \"had\",\n \"haggler\",\n \"haiku\",\n \"half\",\n \"halogen\",\n \"halt\",\n \"halved\",\n \"halves\",\n \"hamburger\",\n \"hamlet\",\n \"hammock\",\n \"hamper\",\n \"hamster\",\n \"hamstring\",\n \"handbag\",\n \"handball\",\n \"handbook\",\n \"handbrake\",\n \"handcart\",\n \"handclap\",\n \"handclasp\",\n \"handcraft\",\n \"handcuff\",\n \"handed\",\n \"handful\",\n \"handgrip\",\n \"handgun\",\n \"handheld\",\n \"handiness\",\n \"handiwork\",\n \"handlebar\",\n \"handled\",\n \"handler\",\n \"handling\",\n \"handmade\",\n \"handoff\",\n \"handpick\",\n \"handprint\",\n \"handrail\",\n \"handsaw\",\n \"handset\",\n \"handsfree\",\n \"handshake\",\n \"handstand\",\n \"handwash\",\n \"handwork\",\n \"handwoven\",\n \"handwrite\",\n \"handyman\",\n \"hangnail\",\n \"hangout\",\n \"hangover\",\n \"hangup\",\n \"hankering\",\n \"hankie\",\n \"hanky\",\n \"haphazard\",\n \"happening\",\n \"happier\",\n \"happiest\",\n \"happily\",\n \"happiness\",\n \"happy\",\n \"harbor\",\n \"hardcopy\",\n \"hardcore\",\n \"hardcover\",\n \"harddisk\",\n \"hardened\",\n \"hardener\",\n \"hardening\",\n \"hardhat\",\n \"hardhead\",\n \"hardiness\",\n \"hardly\",\n \"hardness\",\n \"hardship\",\n \"hardware\",\n \"hardwired\",\n \"hardwood\",\n \"hardy\",\n \"harmful\",\n \"harmless\",\n \"harmonica\",\n \"harmonics\",\n \"harmonize\",\n \"harmony\",\n \"harness\",\n \"harpist\",\n \"harsh\",\n \"harvest\",\n \"hash\",\n \"hassle\",\n \"haste\",\n \"hastily\",\n \"hastiness\",\n \"hasty\",\n \"hatbox\",\n \"hatchback\",\n \"hatchery\",\n \"hatchet\",\n \"hatching\",\n \"hatchling\",\n \"hate\",\n \"hatless\",\n \"hatred\",\n \"haunt\",\n \"haven\",\n \"hazard\",\n \"hazelnut\",\n \"hazily\",\n \"haziness\",\n \"hazing\",\n \"hazy\",\n \"headache\",\n \"headband\",\n \"headboard\",\n \"headcount\",\n \"headdress\",\n \"headed\",\n \"header\",\n \"headfirst\",\n \"headgear\",\n \"heading\",\n \"headlamp\",\n \"headless\",\n \"headlock\",\n \"headphone\",\n \"headpiece\",\n \"headrest\",\n \"headroom\",\n \"headscarf\",\n \"headset\",\n \"headsman\",\n \"headstand\",\n \"headstone\",\n \"headway\",\n \"headwear\",\n \"heap\",\n \"heat\",\n \"heave\",\n \"heavily\",\n \"heaviness\",\n \"heaving\",\n \"hedge\",\n \"hedging\",\n \"heftiness\",\n \"hefty\",\n \"helium\",\n \"helmet\",\n \"helper\",\n \"helpful\",\n \"helping\",\n \"helpless\",\n \"helpline\",\n \"hemlock\",\n \"hemstitch\",\n \"hence\",\n \"henchman\",\n \"henna\",\n \"herald\",\n \"herbal\",\n \"herbicide\",\n \"herbs\",\n \"heritage\",\n \"hermit\",\n \"heroics\",\n \"heroism\",\n \"herring\",\n \"herself\",\n \"hertz\",\n \"hesitancy\",\n \"hesitant\",\n \"hesitate\",\n \"hexagon\",\n \"hexagram\",\n \"hubcap\",\n \"huddle\",\n \"huddling\",\n \"huff\",\n \"hug\",\n \"hula\",\n \"hulk\",\n \"hull\",\n \"human\",\n \"humble\",\n \"humbling\",\n \"humbly\",\n \"humid\",\n \"humiliate\",\n \"humility\",\n \"humming\",\n \"hummus\",\n \"humongous\",\n \"humorist\",\n \"humorless\",\n \"humorous\",\n \"humpback\",\n \"humped\",\n \"humvee\",\n \"hunchback\",\n \"hundredth\",\n \"hunger\",\n \"hungrily\",\n \"hungry\",\n \"hunk\",\n \"hunter\",\n \"hunting\",\n \"huntress\",\n \"huntsman\",\n \"hurdle\",\n \"hurled\",\n \"hurler\",\n \"hurling\",\n \"hurray\",\n \"hurricane\",\n \"hurried\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hush\",\n \"husked\",\n \"huskiness\",\n \"hut\",\n \"hybrid\",\n \"hydrant\",\n \"hydrated\",\n \"hydration\",\n \"hydrogen\",\n \"hydroxide\",\n \"hyperlink\",\n \"hypertext\",\n \"hyphen\",\n \"hypnoses\",\n \"hypnosis\",\n \"hypnotic\",\n \"hypnotism\",\n \"hypnotist\",\n \"hypnotize\",\n \"hypocrisy\",\n \"hypocrite\",\n \"ibuprofen\",\n \"ice\",\n \"iciness\",\n \"icing\",\n \"icky\",\n \"icon\",\n \"icy\",\n \"idealism\",\n \"idealist\",\n \"idealize\",\n \"ideally\",\n \"idealness\",\n \"identical\",\n \"identify\",\n \"identity\",\n \"ideology\",\n \"idiocy\",\n \"idiom\",\n \"idly\",\n \"igloo\",\n \"ignition\",\n \"ignore\",\n \"iguana\",\n \"illicitly\",\n \"illusion\",\n \"illusive\",\n \"image\",\n \"imaginary\",\n \"imagines\",\n \"imaging\",\n \"imbecile\",\n \"imitate\",\n \"imitation\",\n \"immature\",\n \"immerse\",\n \"immersion\",\n \"imminent\",\n \"immobile\",\n \"immodest\",\n \"immorally\",\n \"immortal\",\n \"immovable\",\n \"immovably\",\n \"immunity\",\n \"immunize\",\n \"impaired\",\n \"impale\",\n \"impart\",\n \"impatient\",\n \"impeach\",\n \"impeding\",\n \"impending\",\n \"imperfect\",\n \"imperial\",\n \"impish\",\n \"implant\",\n \"implement\",\n \"implicate\",\n \"implicit\",\n \"implode\",\n \"implosion\",\n \"implosive\",\n \"imply\",\n \"impolite\",\n \"important\",\n \"importer\",\n \"impose\",\n \"imposing\",\n \"impotence\",\n \"impotency\",\n \"impotent\",\n \"impound\",\n \"imprecise\",\n \"imprint\",\n \"imprison\",\n \"impromptu\",\n \"improper\",\n \"improve\",\n \"improving\",\n \"improvise\",\n \"imprudent\",\n \"impulse\",\n \"impulsive\",\n \"impure\",\n \"impurity\",\n \"iodine\",\n \"iodize\",\n \"ion\",\n \"ipad\",\n \"iphone\",\n \"ipod\",\n \"irate\",\n \"irk\",\n \"iron\",\n \"irregular\",\n \"irrigate\",\n \"irritable\",\n \"irritably\",\n \"irritant\",\n \"irritate\",\n \"islamic\",\n \"islamist\",\n \"isolated\",\n \"isolating\",\n \"isolation\",\n \"isotope\",\n \"issue\",\n \"issuing\",\n \"italicize\",\n \"italics\",\n \"item\",\n \"itinerary\",\n \"itunes\",\n \"ivory\",\n \"ivy\",\n \"jab\",\n \"jackal\",\n \"jacket\",\n \"jackknife\",\n \"jackpot\",\n \"jailbird\",\n \"jailbreak\",\n \"jailer\",\n \"jailhouse\",\n \"jalapeno\",\n \"jam\",\n \"janitor\",\n \"january\",\n \"jargon\",\n \"jarring\",\n \"jasmine\",\n \"jaundice\",\n \"jaunt\",\n \"java\",\n \"jawed\",\n \"jawless\",\n \"jawline\",\n \"jaws\",\n \"jaybird\",\n \"jaywalker\",\n \"jazz\",\n \"jeep\",\n \"jeeringly\",\n \"jellied\",\n \"jelly\",\n \"jersey\",\n \"jester\",\n \"jet\",\n \"jiffy\",\n \"jigsaw\",\n \"jimmy\",\n \"jingle\",\n \"jingling\",\n \"jinx\",\n \"jitters\",\n \"jittery\",\n \"job\",\n \"jockey\",\n \"jockstrap\",\n \"jogger\",\n \"jogging\",\n \"john\",\n \"joining\",\n \"jokester\",\n \"jokingly\",\n \"jolliness\",\n \"jolly\",\n \"jolt\",\n \"jot\",\n \"jovial\",\n \"joyfully\",\n \"joylessly\",\n \"joyous\",\n \"joyride\",\n \"joystick\",\n \"jubilance\",\n \"jubilant\",\n \"judge\",\n \"judgingly\",\n \"judicial\",\n \"judiciary\",\n \"judo\",\n \"juggle\",\n \"juggling\",\n \"jugular\",\n \"juice\",\n \"juiciness\",\n \"juicy\",\n \"jujitsu\",\n \"jukebox\",\n \"july\",\n \"jumble\",\n \"jumbo\",\n \"jump\",\n \"junction\",\n \"juncture\",\n \"june\",\n \"junior\",\n \"juniper\",\n \"junkie\",\n \"junkman\",\n \"junkyard\",\n \"jurist\",\n \"juror\",\n \"jury\",\n \"justice\",\n \"justifier\",\n \"justify\",\n \"justly\",\n \"justness\",\n \"juvenile\",\n \"kabob\",\n \"kangaroo\",\n \"karaoke\",\n \"karate\",\n \"karma\",\n \"kebab\",\n \"keenly\",\n \"keenness\",\n \"keep\",\n \"keg\",\n \"kelp\",\n \"kennel\",\n \"kept\",\n \"kerchief\",\n \"kerosene\",\n \"kettle\",\n \"kick\",\n \"kiln\",\n \"kilobyte\",\n \"kilogram\",\n \"kilometer\",\n \"kilowatt\",\n \"kilt\",\n \"kimono\",\n \"kindle\",\n \"kindling\",\n \"kindly\",\n \"kindness\",\n \"kindred\",\n \"kinetic\",\n \"kinfolk\",\n \"king\",\n \"kinship\",\n \"kinsman\",\n \"kinswoman\",\n \"kissable\",\n \"kisser\",\n \"kissing\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kitty\",\n \"kiwi\",\n \"kleenex\",\n \"knapsack\",\n \"knee\",\n \"knelt\",\n \"knickers\",\n \"knoll\",\n \"koala\",\n \"kooky\",\n \"kosher\",\n \"krypton\",\n \"kudos\",\n \"kung\",\n \"labored\",\n \"laborer\",\n \"laboring\",\n \"laborious\",\n \"labrador\",\n \"ladder\",\n \"ladies\",\n \"ladle\",\n \"ladybug\",\n \"ladylike\",\n \"lagged\",\n \"lagging\",\n \"lagoon\",\n \"lair\",\n \"lake\",\n \"lance\",\n \"landed\",\n \"landfall\",\n \"landfill\",\n \"landing\",\n \"landlady\",\n \"landless\",\n \"landline\",\n \"landlord\",\n \"landmark\",\n \"landmass\",\n \"landmine\",\n \"landowner\",\n \"landscape\",\n \"landside\",\n \"landslide\",\n \"language\",\n \"lankiness\",\n \"lanky\",\n \"lantern\",\n \"lapdog\",\n \"lapel\",\n \"lapped\",\n \"lapping\",\n \"laptop\",\n \"lard\",\n \"large\",\n \"lark\",\n \"lash\",\n \"lasso\",\n \"last\",\n \"latch\",\n \"late\",\n \"lather\",\n \"latitude\",\n \"latrine\",\n \"latter\",\n \"latticed\",\n \"launch\",\n \"launder\",\n \"laundry\",\n \"laurel\",\n \"lavender\",\n \"lavish\",\n \"laxative\",\n \"lazily\",\n \"laziness\",\n \"lazy\",\n \"lecturer\",\n \"left\",\n \"legacy\",\n \"legal\",\n \"legend\",\n \"legged\",\n \"leggings\",\n \"legible\",\n \"legibly\",\n \"legislate\",\n \"lego\",\n \"legroom\",\n \"legume\",\n \"legwarmer\",\n \"legwork\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"lent\",\n \"leotard\",\n \"lesser\",\n \"letdown\",\n \"lethargic\",\n \"lethargy\",\n \"letter\",\n \"lettuce\",\n \"level\",\n \"leverage\",\n \"levers\",\n \"levitate\",\n \"levitator\",\n \"liability\",\n \"liable\",\n \"liberty\",\n \"librarian\",\n \"library\",\n \"licking\",\n \"licorice\",\n \"lid\",\n \"life\",\n \"lifter\",\n \"lifting\",\n \"liftoff\",\n \"ligament\",\n \"likely\",\n \"likeness\",\n \"likewise\",\n \"liking\",\n \"lilac\",\n \"lilly\",\n \"lily\",\n \"limb\",\n \"limeade\",\n \"limelight\",\n \"limes\",\n \"limit\",\n \"limping\",\n \"limpness\",\n \"line\",\n \"lingo\",\n \"linguini\",\n \"linguist\",\n \"lining\",\n \"linked\",\n \"linoleum\",\n \"linseed\",\n \"lint\",\n \"lion\",\n \"lip\",\n \"liquefy\",\n \"liqueur\",\n \"liquid\",\n \"lisp\",\n \"list\",\n \"litigate\",\n \"litigator\",\n \"litmus\",\n \"litter\",\n \"little\",\n \"livable\",\n \"lived\",\n \"lively\",\n \"liver\",\n \"livestock\",\n \"lividly\",\n \"living\",\n \"lizard\",\n \"lubricant\",\n \"lubricate\",\n \"lucid\",\n \"luckily\",\n \"luckiness\",\n \"luckless\",\n \"lucrative\",\n \"ludicrous\",\n \"lugged\",\n \"lukewarm\",\n \"lullaby\",\n \"lumber\",\n \"luminance\",\n \"luminous\",\n \"lumpiness\",\n \"lumping\",\n \"lumpish\",\n \"lunacy\",\n \"lunar\",\n \"lunchbox\",\n \"luncheon\",\n \"lunchroom\",\n \"lunchtime\",\n \"lung\",\n \"lurch\",\n \"lure\",\n \"luridness\",\n \"lurk\",\n \"lushly\",\n \"lushness\",\n \"luster\",\n \"lustfully\",\n \"lustily\",\n \"lustiness\",\n \"lustrous\",\n \"lusty\",\n \"luxurious\",\n \"luxury\",\n \"lying\",\n \"lyrically\",\n \"lyricism\",\n \"lyricist\",\n \"lyrics\",\n \"macarena\",\n \"macaroni\",\n \"macaw\",\n \"mace\",\n \"machine\",\n \"machinist\",\n \"magazine\",\n \"magenta\",\n \"maggot\",\n \"magical\",\n \"magician\",\n \"magma\",\n \"magnesium\",\n \"magnetic\",\n \"magnetism\",\n \"magnetize\",\n \"magnifier\",\n \"magnify\",\n \"magnitude\",\n \"magnolia\",\n \"mahogany\",\n \"maimed\",\n \"majestic\",\n \"majesty\",\n \"majorette\",\n \"majority\",\n \"makeover\",\n \"maker\",\n \"makeshift\",\n \"making\",\n \"malformed\",\n \"malt\",\n \"mama\",\n \"mammal\",\n \"mammary\",\n \"mammogram\",\n \"manager\",\n \"managing\",\n \"manatee\",\n \"mandarin\",\n \"mandate\",\n \"mandatory\",\n \"mandolin\",\n \"manger\",\n \"mangle\",\n \"mango\",\n \"mangy\",\n \"manhandle\",\n \"manhole\",\n \"manhood\",\n \"manhunt\",\n \"manicotti\",\n \"manicure\",\n \"manifesto\",\n \"manila\",\n \"mankind\",\n \"manlike\",\n \"manliness\",\n \"manly\",\n \"manmade\",\n \"manned\",\n \"mannish\",\n \"manor\",\n \"manpower\",\n \"mantis\",\n \"mantra\",\n \"manual\",\n \"many\",\n \"map\",\n \"marathon\",\n \"marauding\",\n \"marbled\",\n \"marbles\",\n \"marbling\",\n \"march\",\n \"mardi\",\n \"margarine\",\n \"margarita\",\n \"margin\",\n \"marigold\",\n \"marina\",\n \"marine\",\n \"marital\",\n \"maritime\",\n \"marlin\",\n \"marmalade\",\n \"maroon\",\n \"married\",\n \"marrow\",\n \"marry\",\n \"marshland\",\n \"marshy\",\n \"marsupial\",\n \"marvelous\",\n \"marxism\",\n \"mascot\",\n \"masculine\",\n \"mashed\",\n \"mashing\",\n \"massager\",\n \"masses\",\n \"massive\",\n \"mastiff\",\n \"matador\",\n \"matchbook\",\n \"matchbox\",\n \"matcher\",\n \"matching\",\n \"matchless\",\n \"material\",\n \"maternal\",\n \"maternity\",\n \"math\",\n \"mating\",\n \"matriarch\",\n \"matrimony\",\n \"matrix\",\n \"matron\",\n \"matted\",\n \"matter\",\n \"maturely\",\n \"maturing\",\n \"maturity\",\n \"mauve\",\n \"maverick\",\n \"maximize\",\n \"maximum\",\n \"maybe\",\n \"mayday\",\n \"mayflower\",\n \"moaner\",\n \"moaning\",\n \"mobile\",\n \"mobility\",\n \"mobilize\",\n \"mobster\",\n \"mocha\",\n \"mocker\",\n \"mockup\",\n \"modified\",\n \"modify\",\n \"modular\",\n \"modulator\",\n \"module\",\n \"moisten\",\n \"moistness\",\n \"moisture\",\n \"molar\",\n \"molasses\",\n \"mold\",\n \"molecular\",\n \"molecule\",\n \"molehill\",\n \"mollusk\",\n \"mom\",\n \"monastery\",\n \"monday\",\n \"monetary\",\n \"monetize\",\n \"moneybags\",\n \"moneyless\",\n \"moneywise\",\n \"mongoose\",\n \"mongrel\",\n \"monitor\",\n \"monkhood\",\n \"monogamy\",\n \"monogram\",\n \"monologue\",\n \"monopoly\",\n \"monorail\",\n \"monotone\",\n \"monotype\",\n \"monoxide\",\n \"monsieur\",\n \"monsoon\",\n \"monstrous\",\n \"monthly\",\n \"monument\",\n \"moocher\",\n \"moodiness\",\n \"moody\",\n \"mooing\",\n \"moonbeam\",\n \"mooned\",\n \"moonlight\",\n \"moonlike\",\n \"moonlit\",\n \"moonrise\",\n \"moonscape\",\n \"moonshine\",\n \"moonstone\",\n \"moonwalk\",\n \"mop\",\n \"morale\",\n \"morality\",\n \"morally\",\n \"morbidity\",\n \"morbidly\",\n \"morphine\",\n \"morphing\",\n \"morse\",\n \"mortality\",\n \"mortally\",\n \"mortician\",\n \"mortified\",\n \"mortify\",\n \"mortuary\",\n \"mosaic\",\n \"mossy\",\n \"most\",\n \"mothball\",\n \"mothproof\",\n \"motion\",\n \"motivate\",\n \"motivator\",\n \"motive\",\n \"motocross\",\n \"motor\",\n \"motto\",\n \"mountable\",\n \"mountain\",\n \"mounted\",\n \"mounting\",\n \"mourner\",\n \"mournful\",\n \"mouse\",\n \"mousiness\",\n \"moustache\",\n \"mousy\",\n \"mouth\",\n \"movable\",\n \"move\",\n \"movie\",\n \"moving\",\n \"mower\",\n \"mowing\",\n \"much\",\n \"muck\",\n \"mud\",\n \"mug\",\n \"mulberry\",\n \"mulch\",\n \"mule\",\n \"mulled\",\n \"mullets\",\n \"multiple\",\n \"multiply\",\n \"multitask\",\n \"multitude\",\n \"mumble\",\n \"mumbling\",\n \"mumbo\",\n \"mummified\",\n \"mummify\",\n \"mummy\",\n \"mumps\",\n \"munchkin\",\n \"mundane\",\n \"municipal\",\n \"muppet\",\n \"mural\",\n \"murkiness\",\n \"murky\",\n \"murmuring\",\n \"muscular\",\n \"museum\",\n \"mushily\",\n \"mushiness\",\n \"mushroom\",\n \"mushy\",\n \"music\",\n \"musket\",\n \"muskiness\",\n \"musky\",\n \"mustang\",\n \"mustard\",\n \"muster\",\n \"mustiness\",\n \"musty\",\n \"mutable\",\n \"mutate\",\n \"mutation\",\n \"mute\",\n \"mutilated\",\n \"mutilator\",\n \"mutiny\",\n \"mutt\",\n \"mutual\",\n \"muzzle\",\n \"myself\",\n \"myspace\",\n \"mystified\",\n \"mystify\",\n \"myth\",\n \"nacho\",\n \"nag\",\n \"nail\",\n \"name\",\n \"naming\",\n \"nanny\",\n \"nanometer\",\n \"nape\",\n \"napkin\",\n \"napped\",\n \"napping\",\n \"nappy\",\n \"narrow\",\n \"nastily\",\n \"nastiness\",\n \"national\",\n \"native\",\n \"nativity\",\n \"natural\",\n \"nature\",\n \"naturist\",\n \"nautical\",\n \"navigate\",\n \"navigator\",\n \"navy\",\n \"nearby\",\n \"nearest\",\n \"nearly\",\n \"nearness\",\n \"neatly\",\n \"neatness\",\n \"nebula\",\n \"nebulizer\",\n \"nectar\",\n \"negate\",\n \"negation\",\n \"negative\",\n \"neglector\",\n \"negligee\",\n \"negligent\",\n \"negotiate\",\n \"nemeses\",\n \"nemesis\",\n \"neon\",\n \"nephew\",\n \"nerd\",\n \"nervous\",\n \"nervy\",\n \"nest\",\n \"net\",\n \"neurology\",\n \"neuron\",\n \"neurosis\",\n \"neurotic\",\n \"neuter\",\n \"neutron\",\n \"never\",\n \"next\",\n \"nibble\",\n \"nickname\",\n \"nicotine\",\n \"niece\",\n \"nifty\",\n \"nimble\",\n \"nimbly\",\n \"nineteen\",\n \"ninetieth\",\n \"ninja\",\n \"nintendo\",\n \"ninth\",\n \"nuclear\",\n \"nuclei\",\n \"nucleus\",\n \"nugget\",\n \"nullify\",\n \"number\",\n \"numbing\",\n \"numbly\",\n \"numbness\",\n \"numeral\",\n \"numerate\",\n \"numerator\",\n \"numeric\",\n \"numerous\",\n \"nuptials\",\n \"nursery\",\n \"nursing\",\n \"nurture\",\n \"nutcase\",\n \"nutlike\",\n \"nutmeg\",\n \"nutrient\",\n \"nutshell\",\n \"nuttiness\",\n \"nutty\",\n \"nuzzle\",\n \"nylon\",\n \"oaf\",\n \"oak\",\n \"oasis\",\n \"oat\",\n \"obedience\",\n \"obedient\",\n \"obituary\",\n \"object\",\n \"obligate\",\n \"obliged\",\n \"oblivion\",\n \"oblivious\",\n \"oblong\",\n \"obnoxious\",\n \"oboe\",\n \"obscure\",\n \"obscurity\",\n \"observant\",\n \"observer\",\n \"observing\",\n \"obsessed\",\n \"obsession\",\n \"obsessive\",\n \"obsolete\",\n \"obstacle\",\n \"obstinate\",\n \"obstruct\",\n \"obtain\",\n \"obtrusive\",\n \"obtuse\",\n \"obvious\",\n \"occultist\",\n \"occupancy\",\n \"occupant\",\n \"occupier\",\n \"occupy\",\n \"ocean\",\n \"ocelot\",\n \"octagon\",\n \"octane\",\n \"october\",\n \"octopus\",\n \"ogle\",\n \"oil\",\n \"oink\",\n \"ointment\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympics\",\n \"omega\",\n \"omen\",\n \"ominous\",\n \"omission\",\n \"omit\",\n \"omnivore\",\n \"onboard\",\n \"oncoming\",\n \"ongoing\",\n \"onion\",\n \"online\",\n \"onlooker\",\n \"only\",\n \"onscreen\",\n \"onset\",\n \"onshore\",\n \"onslaught\",\n \"onstage\",\n \"onto\",\n \"onward\",\n \"onyx\",\n \"oops\",\n \"ooze\",\n \"oozy\",\n \"opacity\",\n \"opal\",\n \"open\",\n \"operable\",\n \"operate\",\n \"operating\",\n \"operation\",\n \"operative\",\n \"operator\",\n \"opium\",\n \"opossum\",\n \"opponent\",\n \"oppose\",\n \"opposing\",\n \"opposite\",\n \"oppressed\",\n \"oppressor\",\n \"opt\",\n \"opulently\",\n \"osmosis\",\n \"other\",\n \"otter\",\n \"ouch\",\n \"ought\",\n \"ounce\",\n \"outage\",\n \"outback\",\n \"outbid\",\n \"outboard\",\n \"outbound\",\n \"outbreak\",\n \"outburst\",\n \"outcast\",\n \"outclass\",\n \"outcome\",\n \"outdated\",\n \"outdoors\",\n \"outer\",\n \"outfield\",\n \"outfit\",\n \"outflank\",\n \"outgoing\",\n \"outgrow\",\n \"outhouse\",\n \"outing\",\n \"outlast\",\n \"outlet\",\n \"outline\",\n \"outlook\",\n \"outlying\",\n \"outmatch\",\n \"outmost\",\n \"outnumber\",\n \"outplayed\",\n \"outpost\",\n \"outpour\",\n \"output\",\n \"outrage\",\n \"outrank\",\n \"outreach\",\n \"outright\",\n \"outscore\",\n \"outsell\",\n \"outshine\",\n \"outshoot\",\n \"outsider\",\n \"outskirts\",\n \"outsmart\",\n \"outsource\",\n \"outspoken\",\n \"outtakes\",\n \"outthink\",\n \"outward\",\n \"outweigh\",\n \"outwit\",\n \"oval\",\n \"ovary\",\n \"oven\",\n \"overact\",\n \"overall\",\n \"overarch\",\n \"overbid\",\n \"overbill\",\n \"overbite\",\n \"overblown\",\n \"overboard\",\n \"overbook\",\n \"overbuilt\",\n \"overcast\",\n \"overcoat\",\n \"overcome\",\n \"overcook\",\n \"overcrowd\",\n \"overdraft\",\n \"overdrawn\",\n \"overdress\",\n \"overdrive\",\n \"overdue\",\n \"overeager\",\n \"overeater\",\n \"overexert\",\n \"overfed\",\n \"overfeed\",\n \"overfill\",\n \"overflow\",\n \"overfull\",\n \"overgrown\",\n \"overhand\",\n \"overhang\",\n \"overhaul\",\n \"overhead\",\n \"overhear\",\n \"overheat\",\n \"overhung\",\n \"overjoyed\",\n \"overkill\",\n \"overlabor\",\n \"overlaid\",\n \"overlap\",\n \"overlay\",\n \"overload\",\n \"overlook\",\n \"overlord\",\n \"overlying\",\n \"overnight\",\n \"overpass\",\n \"overpay\",\n \"overplant\",\n \"overplay\",\n \"overpower\",\n \"overprice\",\n \"overrate\",\n \"overreach\",\n \"overreact\",\n \"override\",\n \"overripe\",\n \"overrule\",\n \"overrun\",\n \"overshoot\",\n \"overshot\",\n \"oversight\",\n \"oversized\",\n \"oversleep\",\n \"oversold\",\n \"overspend\",\n \"overstate\",\n \"overstay\",\n \"overstep\",\n \"overstock\",\n \"overstuff\",\n \"oversweet\",\n \"overtake\",\n \"overthrow\",\n \"overtime\",\n \"overtly\",\n \"overtone\",\n \"overture\",\n \"overturn\",\n \"overuse\",\n \"overvalue\",\n \"overview\",\n \"overwrite\",\n \"owl\",\n \"oxford\",\n \"oxidant\",\n \"oxidation\",\n \"oxidize\",\n \"oxidizing\",\n \"oxygen\",\n \"oxymoron\",\n \"oyster\",\n \"ozone\",\n \"paced\",\n \"pacemaker\",\n \"pacific\",\n \"pacifier\",\n \"pacifism\",\n \"pacifist\",\n \"pacify\",\n \"padded\",\n \"padding\",\n \"paddle\",\n \"paddling\",\n \"padlock\",\n \"pagan\",\n \"pager\",\n \"paging\",\n \"pajamas\",\n \"palace\",\n \"palatable\",\n \"palm\",\n \"palpable\",\n \"palpitate\",\n \"paltry\",\n \"pampered\",\n \"pamperer\",\n \"pampers\",\n \"pamphlet\",\n \"panama\",\n \"pancake\",\n \"pancreas\",\n \"panda\",\n \"pandemic\",\n \"pang\",\n \"panhandle\",\n \"panic\",\n \"panning\",\n \"panorama\",\n \"panoramic\",\n \"panther\",\n \"pantomime\",\n \"pantry\",\n \"pants\",\n \"pantyhose\",\n \"paparazzi\",\n \"papaya\",\n \"paper\",\n \"paprika\",\n \"papyrus\",\n \"parabola\",\n \"parachute\",\n \"parade\",\n \"paradox\",\n \"paragraph\",\n \"parakeet\",\n \"paralegal\",\n \"paralyses\",\n \"paralysis\",\n \"paralyze\",\n \"paramedic\",\n \"parameter\",\n \"paramount\",\n \"parasail\",\n \"parasite\",\n \"parasitic\",\n \"parcel\",\n \"parched\",\n \"parchment\",\n \"pardon\",\n \"parish\",\n \"parka\",\n \"parking\",\n \"parkway\",\n \"parlor\",\n \"parmesan\",\n \"parole\",\n \"parrot\",\n \"parsley\",\n \"parsnip\",\n \"partake\",\n \"parted\",\n \"parting\",\n \"partition\",\n \"partly\",\n \"partner\",\n \"partridge\",\n \"party\",\n \"passable\",\n \"passably\",\n \"passage\",\n \"passcode\",\n \"passenger\",\n \"passerby\",\n \"passing\",\n \"passion\",\n \"passive\",\n \"passivism\",\n \"passover\",\n \"passport\",\n \"password\",\n \"pasta\",\n \"pasted\",\n \"pastel\",\n \"pastime\",\n \"pastor\",\n \"pastrami\",\n \"pasture\",\n \"pasty\",\n \"patchwork\",\n \"patchy\",\n \"paternal\",\n \"paternity\",\n \"path\",\n \"patience\",\n \"patient\",\n \"patio\",\n \"patriarch\",\n \"patriot\",\n \"patrol\",\n \"patronage\",\n \"patronize\",\n \"pauper\",\n \"pavement\",\n \"paver\",\n \"pavestone\",\n \"pavilion\",\n \"paving\",\n \"pawing\",\n \"payable\",\n \"payback\",\n \"paycheck\",\n \"payday\",\n \"payee\",\n \"payer\",\n \"paying\",\n \"payment\",\n \"payphone\",\n \"payroll\",\n \"pebble\",\n \"pebbly\",\n \"pecan\",\n \"pectin\",\n \"peculiar\",\n \"peddling\",\n \"pediatric\",\n \"pedicure\",\n \"pedigree\",\n \"pedometer\",\n \"pegboard\",\n \"pelican\",\n \"pellet\",\n \"pelt\",\n \"pelvis\",\n \"penalize\",\n \"penalty\",\n \"pencil\",\n \"pendant\",\n \"pending\",\n \"penholder\",\n \"penknife\",\n \"pennant\",\n \"penniless\",\n \"penny\",\n \"penpal\",\n \"pension\",\n \"pentagon\",\n \"pentagram\",\n \"pep\",\n \"perceive\",\n \"percent\",\n \"perch\",\n \"percolate\",\n \"perennial\",\n \"perfected\",\n \"perfectly\",\n \"perfume\",\n \"periscope\",\n \"perish\",\n \"perjurer\",\n \"perjury\",\n \"perkiness\",\n \"perky\",\n \"perm\",\n \"peroxide\",\n \"perpetual\",\n \"perplexed\",\n \"persecute\",\n \"persevere\",\n \"persuaded\",\n \"persuader\",\n \"pesky\",\n \"peso\",\n \"pessimism\",\n \"pessimist\",\n \"pester\",\n \"pesticide\",\n \"petal\",\n \"petite\",\n \"petition\",\n \"petri\",\n \"petroleum\",\n \"petted\",\n \"petticoat\",\n \"pettiness\",\n \"petty\",\n \"petunia\",\n \"phantom\",\n \"phobia\",\n \"phoenix\",\n \"phonebook\",\n \"phoney\",\n \"phonics\",\n \"phoniness\",\n \"phony\",\n \"phosphate\",\n \"photo\",\n \"phrase\",\n \"phrasing\",\n \"placard\",\n \"placate\",\n \"placidly\",\n \"plank\",\n \"planner\",\n \"plant\",\n \"plasma\",\n \"plaster\",\n \"plastic\",\n \"plated\",\n \"platform\",\n \"plating\",\n \"platinum\",\n \"platonic\",\n \"platter\",\n \"platypus\",\n \"plausible\",\n \"plausibly\",\n \"playable\",\n \"playback\",\n \"player\",\n \"playful\",\n \"playgroup\",\n \"playhouse\",\n \"playing\",\n \"playlist\",\n \"playmaker\",\n \"playmate\",\n \"playoff\",\n \"playpen\",\n \"playroom\",\n \"playset\",\n \"plaything\",\n \"playtime\",\n \"plaza\",\n \"pleading\",\n \"pleat\",\n \"pledge\",\n \"plentiful\",\n \"plenty\",\n \"plethora\",\n \"plexiglas\",\n \"pliable\",\n \"plod\",\n \"plop\",\n \"plot\",\n \"plow\",\n \"ploy\",\n \"pluck\",\n \"plug\",\n \"plunder\",\n \"plunging\",\n \"plural\",\n \"plus\",\n \"plutonium\",\n \"plywood\",\n \"poach\",\n \"pod\",\n \"poem\",\n \"poet\",\n \"pogo\",\n \"pointed\",\n \"pointer\",\n \"pointing\",\n \"pointless\",\n \"pointy\",\n \"poise\",\n \"poison\",\n \"poker\",\n \"poking\",\n \"polar\",\n \"police\",\n \"policy\",\n \"polio\",\n \"polish\",\n \"politely\",\n \"polka\",\n \"polo\",\n \"polyester\",\n \"polygon\",\n \"polygraph\",\n \"polymer\",\n \"poncho\",\n \"pond\",\n \"pony\",\n \"popcorn\",\n \"pope\",\n \"poplar\",\n \"popper\",\n \"poppy\",\n \"popsicle\",\n \"populace\",\n \"popular\",\n \"populate\",\n \"porcupine\",\n \"pork\",\n \"porous\",\n \"porridge\",\n \"portable\",\n \"portal\",\n \"portfolio\",\n \"porthole\",\n \"portion\",\n \"portly\",\n \"portside\",\n \"poser\",\n \"posh\",\n \"posing\",\n \"possible\",\n \"possibly\",\n \"possum\",\n \"postage\",\n \"postal\",\n \"postbox\",\n \"postcard\",\n \"posted\",\n \"poster\",\n \"posting\",\n \"postnasal\",\n \"posture\",\n \"postwar\",\n \"pouch\",\n \"pounce\",\n \"pouncing\",\n \"pound\",\n \"pouring\",\n \"pout\",\n \"powdered\",\n \"powdering\",\n \"powdery\",\n \"power\",\n \"powwow\",\n \"pox\",\n \"praising\",\n \"prance\",\n \"prancing\",\n \"pranker\",\n \"prankish\",\n \"prankster\",\n \"prayer\",\n \"praying\",\n \"preacher\",\n \"preaching\",\n \"preachy\",\n \"preamble\",\n \"precinct\",\n \"precise\",\n \"precision\",\n \"precook\",\n \"precut\",\n \"predator\",\n \"predefine\",\n \"predict\",\n \"preface\",\n \"prefix\",\n \"preflight\",\n \"preformed\",\n \"pregame\",\n \"pregnancy\",\n \"pregnant\",\n \"preheated\",\n \"prelaunch\",\n \"prelaw\",\n \"prelude\",\n \"premiere\",\n \"premises\",\n \"premium\",\n \"prenatal\",\n \"preoccupy\",\n \"preorder\",\n \"prepaid\",\n \"prepay\",\n \"preplan\",\n \"preppy\",\n \"preschool\",\n \"prescribe\",\n \"preseason\",\n \"preset\",\n \"preshow\",\n \"president\",\n \"presoak\",\n \"press\",\n \"presume\",\n \"presuming\",\n \"preteen\",\n \"pretended\",\n \"pretender\",\n \"pretense\",\n \"pretext\",\n \"pretty\",\n \"pretzel\",\n \"prevail\",\n \"prevalent\",\n \"prevent\",\n \"preview\",\n \"previous\",\n \"prewar\",\n \"prewashed\",\n \"prideful\",\n \"pried\",\n \"primal\",\n \"primarily\",\n \"primary\",\n \"primate\",\n \"primer\",\n \"primp\",\n \"princess\",\n \"print\",\n \"prior\",\n \"prism\",\n \"prison\",\n \"prissy\",\n \"pristine\",\n \"privacy\",\n \"private\",\n \"privatize\",\n \"prize\",\n \"proactive\",\n \"probable\",\n \"probably\",\n \"probation\",\n \"probe\",\n \"probing\",\n \"probiotic\",\n \"problem\",\n \"procedure\",\n \"process\",\n \"proclaim\",\n \"procreate\",\n \"procurer\",\n \"prodigal\",\n \"prodigy\",\n \"produce\",\n \"product\",\n \"profane\",\n \"profanity\",\n \"professed\",\n \"professor\",\n \"profile\",\n \"profound\",\n \"profusely\",\n \"progeny\",\n \"prognosis\",\n \"program\",\n \"progress\",\n \"projector\",\n \"prologue\",\n \"prolonged\",\n \"promenade\",\n \"prominent\",\n \"promoter\",\n \"promotion\",\n \"prompter\",\n \"promptly\",\n \"prone\",\n \"prong\",\n \"pronounce\",\n \"pronto\",\n \"proofing\",\n \"proofread\",\n \"proofs\",\n \"propeller\",\n \"properly\",\n \"property\",\n \"proponent\",\n \"proposal\",\n \"propose\",\n \"props\",\n \"prorate\",\n \"protector\",\n \"protegee\",\n \"proton\",\n \"prototype\",\n \"protozoan\",\n \"protract\",\n \"protrude\",\n \"proud\",\n \"provable\",\n \"proved\",\n \"proven\",\n \"provided\",\n \"provider\",\n \"providing\",\n \"province\",\n \"proving\",\n \"provoke\",\n \"provoking\",\n \"provolone\",\n \"prowess\",\n \"prowler\",\n \"prowling\",\n \"proximity\",\n \"proxy\",\n \"prozac\",\n \"prude\",\n \"prudishly\",\n \"prune\",\n \"pruning\",\n \"pry\",\n \"psychic\",\n \"public\",\n \"publisher\",\n \"pucker\",\n \"pueblo\",\n \"pug\",\n \"pull\",\n \"pulmonary\",\n \"pulp\",\n \"pulsate\",\n \"pulse\",\n \"pulverize\",\n \"puma\",\n \"pumice\",\n \"pummel\",\n \"punch\",\n \"punctual\",\n \"punctuate\",\n \"punctured\",\n \"pungent\",\n \"punisher\",\n \"punk\",\n \"pupil\",\n \"puppet\",\n \"puppy\",\n \"purchase\",\n \"pureblood\",\n \"purebred\",\n \"purely\",\n \"pureness\",\n \"purgatory\",\n \"purge\",\n \"purging\",\n \"purifier\",\n \"purify\",\n \"purist\",\n \"puritan\",\n \"purity\",\n \"purple\",\n \"purplish\",\n \"purposely\",\n \"purr\",\n \"purse\",\n \"pursuable\",\n \"pursuant\",\n \"pursuit\",\n \"purveyor\",\n \"pushcart\",\n \"pushchair\",\n \"pusher\",\n \"pushiness\",\n \"pushing\",\n \"pushover\",\n \"pushpin\",\n \"pushup\",\n \"pushy\",\n \"putdown\",\n \"putt\",\n \"puzzle\",\n \"puzzling\",\n \"pyramid\",\n \"pyromania\",\n \"python\",\n \"quack\",\n \"quadrant\",\n \"quail\",\n \"quaintly\",\n \"quake\",\n \"quaking\",\n \"qualified\",\n \"qualifier\",\n \"qualify\",\n \"quality\",\n \"qualm\",\n \"quantum\",\n \"quarrel\",\n \"quarry\",\n \"quartered\",\n \"quarterly\",\n \"quarters\",\n \"quartet\",\n \"quench\",\n \"query\",\n \"quicken\",\n \"quickly\",\n \"quickness\",\n \"quicksand\",\n \"quickstep\",\n \"quiet\",\n \"quill\",\n \"quilt\",\n \"quintet\",\n \"quintuple\",\n \"quirk\",\n \"quit\",\n \"quiver\",\n \"quizzical\",\n \"quotable\",\n \"quotation\",\n \"quote\",\n \"rabid\",\n \"race\",\n \"racing\",\n \"racism\",\n \"rack\",\n \"racoon\",\n \"radar\",\n \"radial\",\n \"radiance\",\n \"radiantly\",\n \"radiated\",\n \"radiation\",\n \"radiator\",\n \"radio\",\n \"radish\",\n \"raffle\",\n \"raft\",\n \"rage\",\n \"ragged\",\n \"raging\",\n \"ragweed\",\n \"raider\",\n \"railcar\",\n \"railing\",\n \"railroad\",\n \"railway\",\n \"raisin\",\n \"rake\",\n \"raking\",\n \"rally\",\n \"ramble\",\n \"rambling\",\n \"ramp\",\n \"ramrod\",\n \"ranch\",\n \"rancidity\",\n \"random\",\n \"ranged\",\n \"ranger\",\n \"ranging\",\n \"ranked\",\n \"ranking\",\n \"ransack\",\n \"ranting\",\n \"rants\",\n \"rare\",\n \"rarity\",\n \"rascal\",\n \"rash\",\n \"rasping\",\n \"ravage\",\n \"raven\",\n \"ravine\",\n \"raving\",\n \"ravioli\",\n \"ravishing\",\n \"reabsorb\",\n \"reach\",\n \"reacquire\",\n \"reaction\",\n \"reactive\",\n \"reactor\",\n \"reaffirm\",\n \"ream\",\n \"reanalyze\",\n \"reappear\",\n \"reapply\",\n \"reappoint\",\n \"reapprove\",\n \"rearrange\",\n \"rearview\",\n \"reason\",\n \"reassign\",\n \"reassure\",\n \"reattach\",\n \"reawake\",\n \"rebalance\",\n \"rebate\",\n \"rebel\",\n \"rebirth\",\n \"reboot\",\n \"reborn\",\n \"rebound\",\n \"rebuff\",\n \"rebuild\",\n \"rebuilt\",\n \"reburial\",\n \"rebuttal\",\n \"recall\",\n \"recant\",\n \"recapture\",\n \"recast\",\n \"recede\",\n \"recent\",\n \"recess\",\n \"recharger\",\n \"recipient\",\n \"recital\",\n \"recite\",\n \"reckless\",\n \"reclaim\",\n \"recliner\",\n \"reclining\",\n \"recluse\",\n \"reclusive\",\n \"recognize\",\n \"recoil\",\n \"recollect\",\n \"recolor\",\n \"reconcile\",\n \"reconfirm\",\n \"reconvene\",\n \"recopy\",\n \"record\",\n \"recount\",\n \"recoup\",\n \"recovery\",\n \"recreate\",\n \"rectal\",\n \"rectangle\",\n \"rectified\",\n \"rectify\",\n \"recycled\",\n \"recycler\",\n \"recycling\",\n \"reemerge\",\n \"reenact\",\n \"reenter\",\n \"reentry\",\n \"reexamine\",\n \"referable\",\n \"referee\",\n \"reference\",\n \"refill\",\n \"refinance\",\n \"refined\",\n \"refinery\",\n \"refining\",\n \"refinish\",\n \"reflected\",\n \"reflector\",\n \"reflex\",\n \"reflux\",\n \"refocus\",\n \"refold\",\n \"reforest\",\n \"reformat\",\n \"reformed\",\n \"reformer\",\n \"reformist\",\n \"refract\",\n \"refrain\",\n \"refreeze\",\n \"refresh\",\n \"refried\",\n \"refueling\",\n \"refund\",\n \"refurbish\",\n \"refurnish\",\n \"refusal\",\n \"refuse\",\n \"refusing\",\n \"refutable\",\n \"refute\",\n \"regain\",\n \"regalia\",\n \"regally\",\n \"reggae\",\n \"regime\",\n \"region\",\n \"register\",\n \"registrar\",\n \"registry\",\n \"regress\",\n \"regretful\",\n \"regroup\",\n \"regular\",\n \"regulate\",\n \"regulator\",\n \"rehab\",\n \"reheat\",\n \"rehire\",\n \"rehydrate\",\n \"reimburse\",\n \"reissue\",\n \"reiterate\",\n \"rejoice\",\n \"rejoicing\",\n \"rejoin\",\n \"rekindle\",\n \"relapse\",\n \"relapsing\",\n \"relatable\",\n \"related\",\n \"relation\",\n \"relative\",\n \"relax\",\n \"relay\",\n \"relearn\",\n \"release\",\n \"relenting\",\n \"reliable\",\n \"reliably\",\n \"reliance\",\n \"reliant\",\n \"relic\",\n \"relieve\",\n \"relieving\",\n \"relight\",\n \"relish\",\n \"relive\",\n \"reload\",\n \"relocate\",\n \"relock\",\n \"reluctant\",\n \"rely\",\n \"remake\",\n \"remark\",\n \"remarry\",\n \"rematch\",\n \"remedial\",\n \"remedy\",\n \"remember\",\n \"reminder\",\n \"remindful\",\n \"remission\",\n \"remix\",\n \"remnant\",\n \"remodeler\",\n \"remold\",\n \"remorse\",\n \"remote\",\n \"removable\",\n \"removal\",\n \"removed\",\n \"remover\",\n \"removing\",\n \"rename\",\n \"renderer\",\n \"rendering\",\n \"rendition\",\n \"renegade\",\n \"renewable\",\n \"renewably\",\n \"renewal\",\n \"renewed\",\n \"renounce\",\n \"renovate\",\n \"renovator\",\n \"rentable\",\n \"rental\",\n \"rented\",\n \"renter\",\n \"reoccupy\",\n \"reoccur\",\n \"reopen\",\n \"reorder\",\n \"repackage\",\n \"repacking\",\n \"repaint\",\n \"repair\",\n \"repave\",\n \"repaying\",\n \"repayment\",\n \"repeal\",\n \"repeated\",\n \"repeater\",\n \"repent\",\n \"rephrase\",\n \"replace\",\n \"replay\",\n \"replica\",\n \"reply\",\n \"reporter\",\n \"repose\",\n \"repossess\",\n \"repost\",\n \"repressed\",\n \"reprimand\",\n \"reprint\",\n \"reprise\",\n \"reproach\",\n \"reprocess\",\n \"reproduce\",\n \"reprogram\",\n \"reps\",\n \"reptile\",\n \"reptilian\",\n \"repugnant\",\n \"repulsion\",\n \"repulsive\",\n \"repurpose\",\n \"reputable\",\n \"reputably\",\n \"request\",\n \"require\",\n \"requisite\",\n \"reroute\",\n \"rerun\",\n \"resale\",\n \"resample\",\n \"rescuer\",\n \"reseal\",\n \"research\",\n \"reselect\",\n \"reseller\",\n \"resemble\",\n \"resend\",\n \"resent\",\n \"reset\",\n \"reshape\",\n \"reshoot\",\n \"reshuffle\",\n \"residence\",\n \"residency\",\n \"resident\",\n \"residual\",\n \"residue\",\n \"resigned\",\n \"resilient\",\n \"resistant\",\n \"resisting\",\n \"resize\",\n \"resolute\",\n \"resolved\",\n \"resonant\",\n \"resonate\",\n \"resort\",\n \"resource\",\n \"respect\",\n \"resubmit\",\n \"result\",\n \"resume\",\n \"resupply\",\n \"resurface\",\n \"resurrect\",\n \"retail\",\n \"retainer\",\n \"retaining\",\n \"retake\",\n \"retaliate\",\n \"retention\",\n \"rethink\",\n \"retinal\",\n \"retired\",\n \"retiree\",\n \"retiring\",\n \"retold\",\n \"retool\",\n \"retorted\",\n \"retouch\",\n \"retrace\",\n \"retract\",\n \"retrain\",\n \"retread\",\n \"retreat\",\n \"retrial\",\n \"retrieval\",\n \"retriever\",\n \"retry\",\n \"return\",\n \"retying\",\n \"retype\",\n \"reunion\",\n \"reunite\",\n \"reusable\",\n \"reuse\",\n \"reveal\",\n \"reveler\",\n \"revenge\",\n \"revenue\",\n \"reverb\",\n \"revered\",\n \"reverence\",\n \"reverend\",\n \"reversal\",\n \"reverse\",\n \"reversing\",\n \"reversion\",\n \"revert\",\n \"revisable\",\n \"revise\",\n \"revision\",\n \"revisit\",\n \"revivable\",\n \"revival\",\n \"reviver\",\n \"reviving\",\n \"revocable\",\n \"revoke\",\n \"revolt\",\n \"revolver\",\n \"revolving\",\n \"reward\",\n \"rewash\",\n \"rewind\",\n \"rewire\",\n \"reword\",\n \"rework\",\n \"rewrap\",\n \"rewrite\",\n \"rhyme\",\n \"ribbon\",\n \"ribcage\",\n \"rice\",\n \"riches\",\n \"richly\",\n \"richness\",\n \"rickety\",\n \"ricotta\",\n \"riddance\",\n \"ridden\",\n \"ride\",\n \"riding\",\n \"rifling\",\n \"rift\",\n \"rigging\",\n \"rigid\",\n \"rigor\",\n \"rimless\",\n \"rimmed\",\n \"rind\",\n \"rink\",\n \"rinse\",\n \"rinsing\",\n \"riot\",\n \"ripcord\",\n \"ripeness\",\n \"ripening\",\n \"ripping\",\n \"ripple\",\n \"rippling\",\n \"riptide\",\n \"rise\",\n \"rising\",\n \"risk\",\n \"risotto\",\n \"ritalin\",\n \"ritzy\",\n \"rival\",\n \"riverbank\",\n \"riverbed\",\n \"riverboat\",\n \"riverside\",\n \"riveter\",\n \"riveting\",\n \"roamer\",\n \"roaming\",\n \"roast\",\n \"robbing\",\n \"robe\",\n \"robin\",\n \"robotics\",\n \"robust\",\n \"rockband\",\n \"rocker\",\n \"rocket\",\n \"rockfish\",\n \"rockiness\",\n \"rocking\",\n \"rocklike\",\n \"rockslide\",\n \"rockstar\",\n \"rocky\",\n \"rogue\",\n \"roman\",\n \"romp\",\n \"rope\",\n \"roping\",\n \"roster\",\n \"rosy\",\n \"rotten\",\n \"rotting\",\n \"rotunda\",\n \"roulette\",\n \"rounding\",\n \"roundish\",\n \"roundness\",\n \"roundup\",\n \"roundworm\",\n \"routine\",\n \"routing\",\n \"rover\",\n \"roving\",\n \"royal\",\n \"rubbed\",\n \"rubber\",\n \"rubbing\",\n \"rubble\",\n \"rubdown\",\n \"ruby\",\n \"ruckus\",\n \"rudder\",\n \"rug\",\n \"ruined\",\n \"rule\",\n \"rumble\",\n \"rumbling\",\n \"rummage\",\n \"rumor\",\n \"runaround\",\n \"rundown\",\n \"runner\",\n \"running\",\n \"runny\",\n \"runt\",\n \"runway\",\n \"rupture\",\n \"rural\",\n \"ruse\",\n \"rush\",\n \"rust\",\n \"rut\",\n \"sabbath\",\n \"sabotage\",\n \"sacrament\",\n \"sacred\",\n \"sacrifice\",\n \"sadden\",\n \"saddlebag\",\n \"saddled\",\n \"saddling\",\n \"sadly\",\n \"sadness\",\n \"safari\",\n \"safeguard\",\n \"safehouse\",\n \"safely\",\n \"safeness\",\n \"saffron\",\n \"saga\",\n \"sage\",\n \"sagging\",\n \"saggy\",\n \"said\",\n \"saint\",\n \"sake\",\n \"salad\",\n \"salami\",\n \"salaried\",\n \"salary\",\n \"saline\",\n \"salon\",\n \"saloon\",\n \"salsa\",\n \"salt\",\n \"salutary\",\n \"salute\",\n \"salvage\",\n \"salvaging\",\n \"salvation\",\n \"same\",\n \"sample\",\n \"sampling\",\n \"sanction\",\n \"sanctity\",\n \"sanctuary\",\n \"sandal\",\n \"sandbag\",\n \"sandbank\",\n \"sandbar\",\n \"sandblast\",\n \"sandbox\",\n \"sanded\",\n \"sandfish\",\n \"sanding\",\n \"sandlot\",\n \"sandpaper\",\n \"sandpit\",\n \"sandstone\",\n \"sandstorm\",\n \"sandworm\",\n \"sandy\",\n \"sanitary\",\n \"sanitizer\",\n \"sank\",\n \"santa\",\n \"sapling\",\n \"sappiness\",\n \"sappy\",\n \"sarcasm\",\n \"sarcastic\",\n \"sardine\",\n \"sash\",\n \"sasquatch\",\n \"sassy\",\n \"satchel\",\n \"satiable\",\n \"satin\",\n \"satirical\",\n \"satisfied\",\n \"satisfy\",\n \"saturate\",\n \"saturday\",\n \"sauciness\",\n \"saucy\",\n \"sauna\",\n \"savage\",\n \"savanna\",\n \"saved\",\n \"savings\",\n \"savior\",\n \"savor\",\n \"saxophone\",\n \"say\",\n \"scabbed\",\n \"scabby\",\n \"scalded\",\n \"scalding\",\n \"scale\",\n \"scaling\",\n \"scallion\",\n \"scallop\",\n \"scalping\",\n \"scam\",\n \"scandal\",\n \"scanner\",\n \"scanning\",\n \"scant\",\n \"scapegoat\",\n \"scarce\",\n \"scarcity\",\n \"scarecrow\",\n \"scared\",\n \"scarf\",\n \"scarily\",\n \"scariness\",\n \"scarring\",\n \"scary\",\n \"scavenger\",\n \"scenic\",\n \"schedule\",\n \"schematic\",\n \"scheme\",\n \"scheming\",\n \"schilling\",\n \"schnapps\",\n \"scholar\",\n \"science\",\n \"scientist\",\n \"scion\",\n \"scoff\",\n \"scolding\",\n \"scone\",\n \"scoop\",\n \"scooter\",\n \"scope\",\n \"scorch\",\n \"scorebook\",\n \"scorecard\",\n \"scored\",\n \"scoreless\",\n \"scorer\",\n \"scoring\",\n \"scorn\",\n \"scorpion\",\n \"scotch\",\n \"scoundrel\",\n \"scoured\",\n \"scouring\",\n \"scouting\",\n \"scouts\",\n \"scowling\",\n \"scrabble\",\n \"scraggly\",\n \"scrambled\",\n \"scrambler\",\n \"scrap\",\n \"scratch\",\n \"scrawny\",\n \"screen\",\n \"scribble\",\n \"scribe\",\n \"scribing\",\n \"scrimmage\",\n \"script\",\n \"scroll\",\n \"scrooge\",\n \"scrounger\",\n \"scrubbed\",\n \"scrubber\",\n \"scruffy\",\n \"scrunch\",\n \"scrutiny\",\n \"scuba\",\n \"scuff\",\n \"sculptor\",\n \"sculpture\",\n \"scurvy\",\n \"scuttle\",\n \"secluded\",\n \"secluding\",\n \"seclusion\",\n \"second\",\n \"secrecy\",\n \"secret\",\n \"sectional\",\n \"sector\",\n \"secular\",\n \"securely\",\n \"security\",\n \"sedan\",\n \"sedate\",\n \"sedation\",\n \"sedative\",\n \"sediment\",\n \"seduce\",\n \"seducing\",\n \"segment\",\n \"seismic\",\n \"seizing\",\n \"seldom\",\n \"selected\",\n \"selection\",\n \"selective\",\n \"selector\",\n \"self\",\n \"seltzer\",\n \"semantic\",\n \"semester\",\n \"semicolon\",\n \"semifinal\",\n \"seminar\",\n \"semisoft\",\n \"semisweet\",\n \"senate\",\n \"senator\",\n \"send\",\n \"senior\",\n \"senorita\",\n \"sensation\",\n \"sensitive\",\n \"sensitize\",\n \"sensually\",\n \"sensuous\",\n \"sepia\",\n \"september\",\n \"septic\",\n \"septum\",\n \"sequel\",\n \"sequence\",\n \"sequester\",\n \"series\",\n \"sermon\",\n \"serotonin\",\n \"serpent\",\n \"serrated\",\n \"serve\",\n \"service\",\n \"serving\",\n \"sesame\",\n \"sessions\",\n \"setback\",\n \"setting\",\n \"settle\",\n \"settling\",\n \"setup\",\n \"sevenfold\",\n \"seventeen\",\n \"seventh\",\n \"seventy\",\n \"severity\",\n \"shabby\",\n \"shack\",\n \"shaded\",\n \"shadily\",\n \"shadiness\",\n \"shading\",\n \"shadow\",\n \"shady\",\n \"shaft\",\n \"shakable\",\n \"shakily\",\n \"shakiness\",\n \"shaking\",\n \"shaky\",\n \"shale\",\n \"shallot\",\n \"shallow\",\n \"shame\",\n \"shampoo\",\n \"shamrock\",\n \"shank\",\n \"shanty\",\n \"shape\",\n \"shaping\",\n \"share\",\n \"sharpener\",\n \"sharper\",\n \"sharpie\",\n \"sharply\",\n \"sharpness\",\n \"shawl\",\n \"sheath\",\n \"shed\",\n \"sheep\",\n \"sheet\",\n \"shelf\",\n \"shell\",\n \"shelter\",\n \"shelve\",\n \"shelving\",\n \"sherry\",\n \"shield\",\n \"shifter\",\n \"shifting\",\n \"shiftless\",\n \"shifty\",\n \"shimmer\",\n \"shimmy\",\n \"shindig\",\n \"shine\",\n \"shingle\",\n \"shininess\",\n \"shining\",\n \"shiny\",\n \"ship\",\n \"shirt\",\n \"shivering\",\n \"shock\",\n \"shone\",\n \"shoplift\",\n \"shopper\",\n \"shopping\",\n \"shoptalk\",\n \"shore\",\n \"shortage\",\n \"shortcake\",\n \"shortcut\",\n \"shorten\",\n \"shorter\",\n \"shorthand\",\n \"shortlist\",\n \"shortly\",\n \"shortness\",\n \"shorts\",\n \"shortwave\",\n \"shorty\",\n \"shout\",\n \"shove\",\n \"showbiz\",\n \"showcase\",\n \"showdown\",\n \"shower\",\n \"showgirl\",\n \"showing\",\n \"showman\",\n \"shown\",\n \"showoff\",\n \"showpiece\",\n \"showplace\",\n \"showroom\",\n \"showy\",\n \"shrank\",\n \"shrapnel\",\n \"shredder\",\n \"shredding\",\n \"shrewdly\",\n \"shriek\",\n \"shrill\",\n \"shrimp\",\n \"shrine\",\n \"shrink\",\n \"shrivel\",\n \"shrouded\",\n \"shrubbery\",\n \"shrubs\",\n \"shrug\",\n \"shrunk\",\n \"shucking\",\n \"shudder\",\n \"shuffle\",\n \"shuffling\",\n \"shun\",\n \"shush\",\n \"shut\",\n \"shy\",\n \"siamese\",\n \"siberian\",\n \"sibling\",\n \"siding\",\n \"sierra\",\n \"siesta\",\n \"sift\",\n \"sighing\",\n \"silenced\",\n \"silencer\",\n \"silent\",\n \"silica\",\n \"silicon\",\n \"silk\",\n \"silliness\",\n \"silly\",\n \"silo\",\n \"silt\",\n \"silver\",\n \"similarly\",\n \"simile\",\n \"simmering\",\n \"simple\",\n \"simplify\",\n \"simply\",\n \"sincere\",\n \"sincerity\",\n \"singer\",\n \"singing\",\n \"single\",\n \"singular\",\n \"sinister\",\n \"sinless\",\n \"sinner\",\n \"sinuous\",\n \"sip\",\n \"siren\",\n \"sister\",\n \"sitcom\",\n \"sitter\",\n \"sitting\",\n \"situated\",\n \"situation\",\n \"sixfold\",\n \"sixteen\",\n \"sixth\",\n \"sixties\",\n \"sixtieth\",\n \"sixtyfold\",\n \"sizable\",\n \"sizably\",\n \"size\",\n \"sizing\",\n \"sizzle\",\n \"sizzling\",\n \"skater\",\n \"skating\",\n \"skedaddle\",\n \"skeletal\",\n \"skeleton\",\n \"skeptic\",\n \"sketch\",\n \"skewed\",\n \"skewer\",\n \"skid\",\n \"skied\",\n \"skier\",\n \"skies\",\n \"skiing\",\n \"skilled\",\n \"skillet\",\n \"skillful\",\n \"skimmed\",\n \"skimmer\",\n \"skimming\",\n \"skimpily\",\n \"skincare\",\n \"skinhead\",\n \"skinless\",\n \"skinning\",\n \"skinny\",\n \"skintight\",\n \"skipper\",\n \"skipping\",\n \"skirmish\",\n \"skirt\",\n \"skittle\",\n \"skydiver\",\n \"skylight\",\n \"skyline\",\n \"skype\",\n \"skyrocket\",\n \"skyward\",\n \"slab\",\n \"slacked\",\n \"slacker\",\n \"slacking\",\n \"slackness\",\n \"slacks\",\n \"slain\",\n \"slam\",\n \"slander\",\n \"slang\",\n \"slapping\",\n \"slapstick\",\n \"slashed\",\n \"slashing\",\n \"slate\",\n \"slather\",\n \"slaw\",\n \"sled\",\n \"sleek\",\n \"sleep\",\n \"sleet\",\n \"sleeve\",\n \"slept\",\n \"sliceable\",\n \"sliced\",\n \"slicer\",\n \"slicing\",\n \"slick\",\n \"slider\",\n \"slideshow\",\n \"sliding\",\n \"slighted\",\n \"slighting\",\n \"slightly\",\n \"slimness\",\n \"slimy\",\n \"slinging\",\n \"slingshot\",\n \"slinky\",\n \"slip\",\n \"slit\",\n \"sliver\",\n \"slobbery\",\n \"slogan\",\n \"sloped\",\n \"sloping\",\n \"sloppily\",\n \"sloppy\",\n \"slot\",\n \"slouching\",\n \"slouchy\",\n \"sludge\",\n \"slug\",\n \"slum\",\n \"slurp\",\n \"slush\",\n \"sly\",\n \"small\",\n \"smartly\",\n \"smartness\",\n \"smasher\",\n \"smashing\",\n \"smashup\",\n \"smell\",\n \"smelting\",\n \"smile\",\n \"smilingly\",\n \"smirk\",\n \"smite\",\n \"smith\",\n \"smitten\",\n \"smock\",\n \"smog\",\n \"smoked\",\n \"smokeless\",\n \"smokiness\",\n \"smoking\",\n \"smoky\",\n \"smolder\",\n \"smooth\",\n \"smother\",\n \"smudge\",\n \"smudgy\",\n \"smuggler\",\n \"smuggling\",\n \"smugly\",\n \"smugness\",\n \"snack\",\n \"snagged\",\n \"snaking\",\n \"snap\",\n \"snare\",\n \"snarl\",\n \"snazzy\",\n \"sneak\",\n \"sneer\",\n \"sneeze\",\n \"sneezing\",\n \"snide\",\n \"sniff\",\n \"snippet\",\n \"snipping\",\n \"snitch\",\n \"snooper\",\n \"snooze\",\n \"snore\",\n \"snoring\",\n \"snorkel\",\n \"snort\",\n \"snout\",\n \"snowbird\",\n \"snowboard\",\n \"snowbound\",\n \"snowcap\",\n \"snowdrift\",\n \"snowdrop\",\n \"snowfall\",\n \"snowfield\",\n \"snowflake\",\n \"snowiness\",\n \"snowless\",\n \"snowman\",\n \"snowplow\",\n \"snowshoe\",\n \"snowstorm\",\n \"snowsuit\",\n \"snowy\",\n \"snub\",\n \"snuff\",\n \"snuggle\",\n \"snugly\",\n \"snugness\",\n \"speak\",\n \"spearfish\",\n \"spearhead\",\n \"spearman\",\n \"spearmint\",\n \"species\",\n \"specimen\",\n \"specked\",\n \"speckled\",\n \"specks\",\n \"spectacle\",\n \"spectator\",\n \"spectrum\",\n \"speculate\",\n \"speech\",\n \"speed\",\n \"spellbind\",\n \"speller\",\n \"spelling\",\n \"spendable\",\n \"spender\",\n \"spending\",\n \"spent\",\n \"spew\",\n \"sphere\",\n \"spherical\",\n \"sphinx\",\n \"spider\",\n \"spied\",\n \"spiffy\",\n \"spill\",\n \"spilt\",\n \"spinach\",\n \"spinal\",\n \"spindle\",\n \"spinner\",\n \"spinning\",\n \"spinout\",\n \"spinster\",\n \"spiny\",\n \"spiral\",\n \"spirited\",\n \"spiritism\",\n \"spirits\",\n \"spiritual\",\n \"splashed\",\n \"splashing\",\n \"splashy\",\n \"splatter\",\n \"spleen\",\n \"splendid\",\n \"splendor\",\n \"splice\",\n \"splicing\",\n \"splinter\",\n \"splotchy\",\n \"splurge\",\n \"spoilage\",\n \"spoiled\",\n \"spoiler\",\n \"spoiling\",\n \"spoils\",\n \"spoken\",\n \"spokesman\",\n \"sponge\",\n \"spongy\",\n \"sponsor\",\n \"spoof\",\n \"spookily\",\n \"spooky\",\n \"spool\",\n \"spoon\",\n \"spore\",\n \"sporting\",\n \"sports\",\n \"sporty\",\n \"spotless\",\n \"spotlight\",\n \"spotted\",\n \"spotter\",\n \"spotting\",\n \"spotty\",\n \"spousal\",\n \"spouse\",\n \"spout\",\n \"sprain\",\n \"sprang\",\n \"sprawl\",\n \"spray\",\n \"spree\",\n \"sprig\",\n \"spring\",\n \"sprinkled\",\n \"sprinkler\",\n \"sprint\",\n \"sprite\",\n \"sprout\",\n \"spruce\",\n \"sprung\",\n \"spry\",\n \"spud\",\n \"spur\",\n \"sputter\",\n \"spyglass\",\n \"squabble\",\n \"squad\",\n \"squall\",\n \"squander\",\n \"squash\",\n \"squatted\",\n \"squatter\",\n \"squatting\",\n \"squeak\",\n \"squealer\",\n \"squealing\",\n \"squeamish\",\n \"squeegee\",\n \"squeeze\",\n \"squeezing\",\n \"squid\",\n \"squiggle\",\n \"squiggly\",\n \"squint\",\n \"squire\",\n \"squirt\",\n \"squishier\",\n \"squishy\",\n \"stability\",\n \"stabilize\",\n \"stable\",\n \"stack\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"staging\",\n \"stagnant\",\n \"stagnate\",\n \"stainable\",\n \"stained\",\n \"staining\",\n \"stainless\",\n \"stalemate\",\n \"staleness\",\n \"stalling\",\n \"stallion\",\n \"stamina\",\n \"stammer\",\n \"stamp\",\n \"stand\",\n \"stank\",\n \"staple\",\n \"stapling\",\n \"starboard\",\n \"starch\",\n \"stardom\",\n \"stardust\",\n \"starfish\",\n \"stargazer\",\n \"staring\",\n \"stark\",\n \"starless\",\n \"starlet\",\n \"starlight\",\n \"starlit\",\n \"starring\",\n \"starry\",\n \"starship\",\n \"starter\",\n \"starting\",\n \"startle\",\n \"startling\",\n \"startup\",\n \"starved\",\n \"starving\",\n \"stash\",\n \"state\",\n \"static\",\n \"statistic\",\n \"statue\",\n \"stature\",\n \"status\",\n \"statute\",\n \"statutory\",\n \"staunch\",\n \"stays\",\n \"steadfast\",\n \"steadier\",\n \"steadily\",\n \"steadying\",\n \"steam\",\n \"steed\",\n \"steep\",\n \"steerable\",\n \"steering\",\n \"steersman\",\n \"stegosaur\",\n \"stellar\",\n \"stem\",\n \"stench\",\n \"stencil\",\n \"step\",\n \"stereo\",\n \"sterile\",\n \"sterility\",\n \"sterilize\",\n \"sterling\",\n \"sternness\",\n \"sternum\",\n \"stew\",\n \"stick\",\n \"stiffen\",\n \"stiffly\",\n \"stiffness\",\n \"stifle\",\n \"stifling\",\n \"stillness\",\n \"stilt\",\n \"stimulant\",\n \"stimulate\",\n \"stimuli\",\n \"stimulus\",\n \"stinger\",\n \"stingily\",\n \"stinging\",\n \"stingray\",\n \"stingy\",\n \"stinking\",\n \"stinky\",\n \"stipend\",\n \"stipulate\",\n \"stir\",\n \"stitch\",\n \"stock\",\n \"stoic\",\n \"stoke\",\n \"stole\",\n \"stomp\",\n \"stonewall\",\n \"stoneware\",\n \"stonework\",\n \"stoning\",\n \"stony\",\n \"stood\",\n \"stooge\",\n \"stool\",\n \"stoop\",\n \"stoplight\",\n \"stoppable\",\n \"stoppage\",\n \"stopped\",\n \"stopper\",\n \"stopping\",\n \"stopwatch\",\n \"storable\",\n \"storage\",\n \"storeroom\",\n \"storewide\",\n \"storm\",\n \"stout\",\n \"stove\",\n \"stowaway\",\n \"stowing\",\n \"straddle\",\n \"straggler\",\n \"strained\",\n \"strainer\",\n \"straining\",\n \"strangely\",\n \"stranger\",\n \"strangle\",\n \"strategic\",\n \"strategy\",\n \"stratus\",\n \"straw\",\n \"stray\",\n \"streak\",\n \"stream\",\n \"street\",\n \"strength\",\n \"strenuous\",\n \"strep\",\n \"stress\",\n \"stretch\",\n \"strewn\",\n \"stricken\",\n \"strict\",\n \"stride\",\n \"strife\",\n \"strike\",\n \"striking\",\n \"strive\",\n \"striving\",\n \"strobe\",\n \"strode\",\n \"stroller\",\n \"strongbox\",\n \"strongly\",\n \"strongman\",\n \"struck\",\n \"structure\",\n \"strudel\",\n \"struggle\",\n \"strum\",\n \"strung\",\n \"strut\",\n \"stubbed\",\n \"stubble\",\n \"stubbly\",\n \"stubborn\",\n \"stucco\",\n \"stuck\",\n \"student\",\n \"studied\",\n \"studio\",\n \"study\",\n \"stuffed\",\n \"stuffing\",\n \"stuffy\",\n \"stumble\",\n \"stumbling\",\n \"stump\",\n \"stung\",\n \"stunned\",\n \"stunner\",\n \"stunning\",\n \"stunt\",\n \"stupor\",\n \"sturdily\",\n \"sturdy\",\n \"styling\",\n \"stylishly\",\n \"stylist\",\n \"stylized\",\n \"stylus\",\n \"suave\",\n \"subarctic\",\n \"subatomic\",\n \"subdivide\",\n \"subdued\",\n \"subduing\",\n \"subfloor\",\n \"subgroup\",\n \"subheader\",\n \"subject\",\n \"sublease\",\n \"sublet\",\n \"sublevel\",\n \"sublime\",\n \"submarine\",\n \"submerge\",\n \"submersed\",\n \"submitter\",\n \"subpanel\",\n \"subpar\",\n \"subplot\",\n \"subprime\",\n \"subscribe\",\n \"subscript\",\n \"subsector\",\n \"subside\",\n \"subsiding\",\n \"subsidize\",\n \"subsidy\",\n \"subsoil\",\n \"subsonic\",\n \"substance\",\n \"subsystem\",\n \"subtext\",\n \"subtitle\",\n \"subtly\",\n \"subtotal\",\n \"subtract\",\n \"subtype\",\n \"suburb\",\n \"subway\",\n \"subwoofer\",\n \"subzero\",\n \"succulent\",\n \"such\",\n \"suction\",\n \"sudden\",\n \"sudoku\",\n \"suds\",\n \"sufferer\",\n \"suffering\",\n \"suffice\",\n \"suffix\",\n \"suffocate\",\n \"suffrage\",\n \"sugar\",\n \"suggest\",\n \"suing\",\n \"suitable\",\n \"suitably\",\n \"suitcase\",\n \"suitor\",\n \"sulfate\",\n \"sulfide\",\n \"sulfite\",\n \"sulfur\",\n \"sulk\",\n \"sullen\",\n \"sulphate\",\n \"sulphuric\",\n \"sultry\",\n \"superbowl\",\n \"superglue\",\n \"superhero\",\n \"superior\",\n \"superjet\",\n \"superman\",\n \"supermom\",\n \"supernova\",\n \"supervise\",\n \"supper\",\n \"supplier\",\n \"supply\",\n \"support\",\n \"supremacy\",\n \"supreme\",\n \"surcharge\",\n \"surely\",\n \"sureness\",\n \"surface\",\n \"surfacing\",\n \"surfboard\",\n \"surfer\",\n \"surgery\",\n \"surgical\",\n \"surging\",\n \"surname\",\n \"surpass\",\n \"surplus\",\n \"surprise\",\n \"surreal\",\n \"surrender\",\n \"surrogate\",\n \"surround\",\n \"survey\",\n \"survival\",\n \"survive\",\n \"surviving\",\n \"survivor\",\n \"sushi\",\n \"suspect\",\n \"suspend\",\n \"suspense\",\n \"sustained\",\n \"sustainer\",\n \"swab\",\n \"swaddling\",\n \"swagger\",\n \"swampland\",\n \"swan\",\n \"swapping\",\n \"swarm\",\n \"sway\",\n \"swear\",\n \"sweat\",\n \"sweep\",\n \"swell\",\n \"swept\",\n \"swerve\",\n \"swifter\",\n \"swiftly\",\n \"swiftness\",\n \"swimmable\",\n \"swimmer\",\n \"swimming\",\n \"swimsuit\",\n \"swimwear\",\n \"swinger\",\n \"swinging\",\n \"swipe\",\n \"swirl\",\n \"switch\",\n \"swivel\",\n \"swizzle\",\n \"swooned\",\n \"swoop\",\n \"swoosh\",\n \"swore\",\n \"sworn\",\n \"swung\",\n \"sycamore\",\n \"sympathy\",\n \"symphonic\",\n \"symphony\",\n \"symptom\",\n \"synapse\",\n \"syndrome\",\n \"synergy\",\n \"synopses\",\n \"synopsis\",\n \"synthesis\",\n \"synthetic\",\n \"syrup\",\n \"system\",\n \"t-shirt\",\n \"tabasco\",\n \"tabby\",\n \"tableful\",\n \"tables\",\n \"tablet\",\n \"tableware\",\n \"tabloid\",\n \"tackiness\",\n \"tacking\",\n \"tackle\",\n \"tackling\",\n \"tacky\",\n \"taco\",\n \"tactful\",\n \"tactical\",\n \"tactics\",\n \"tactile\",\n \"tactless\",\n \"tadpole\",\n \"taekwondo\",\n \"tag\",\n \"tainted\",\n \"take\",\n \"taking\",\n \"talcum\",\n \"talisman\",\n \"tall\",\n \"talon\",\n \"tamale\",\n \"tameness\",\n \"tamer\",\n \"tamper\",\n \"tank\",\n \"tanned\",\n \"tannery\",\n \"tanning\",\n \"tantrum\",\n \"tapeless\",\n \"tapered\",\n \"tapering\",\n \"tapestry\",\n \"tapioca\",\n \"tapping\",\n \"taps\",\n \"tarantula\",\n \"target\",\n \"tarmac\",\n \"tarnish\",\n \"tarot\",\n \"tartar\",\n \"tartly\",\n \"tartness\",\n \"task\",\n \"tassel\",\n \"taste\",\n \"tastiness\",\n \"tasting\",\n \"tasty\",\n \"tattered\",\n \"tattle\",\n \"tattling\",\n \"tattoo\",\n \"taunt\",\n \"tavern\",\n \"thank\",\n \"that\",\n \"thaw\",\n \"theater\",\n \"theatrics\",\n \"thee\",\n \"theft\",\n \"theme\",\n \"theology\",\n \"theorize\",\n \"thermal\",\n \"thermos\",\n \"thesaurus\",\n \"these\",\n \"thesis\",\n \"thespian\",\n \"thicken\",\n \"thicket\",\n \"thickness\",\n \"thieving\",\n \"thievish\",\n \"thigh\",\n \"thimble\",\n \"thing\",\n \"think\",\n \"thinly\",\n \"thinner\",\n \"thinness\",\n \"thinning\",\n \"thirstily\",\n \"thirsting\",\n \"thirsty\",\n \"thirteen\",\n \"thirty\",\n \"thong\",\n \"thorn\",\n \"those\",\n \"thousand\",\n \"thrash\",\n \"thread\",\n \"threaten\",\n \"threefold\",\n \"thrift\",\n \"thrill\",\n \"thrive\",\n \"thriving\",\n \"throat\",\n \"throbbing\",\n \"throng\",\n \"throttle\",\n \"throwaway\",\n \"throwback\",\n \"thrower\",\n \"throwing\",\n \"thud\",\n \"thumb\",\n \"thumping\",\n \"thursday\",\n \"thus\",\n \"thwarting\",\n \"thyself\",\n \"tiara\",\n \"tibia\",\n \"tidal\",\n \"tidbit\",\n \"tidiness\",\n \"tidings\",\n \"tidy\",\n \"tiger\",\n \"tighten\",\n \"tightly\",\n \"tightness\",\n \"tightrope\",\n \"tightwad\",\n \"tigress\",\n \"tile\",\n \"tiling\",\n \"till\",\n \"tilt\",\n \"timid\",\n \"timing\",\n \"timothy\",\n \"tinderbox\",\n \"tinfoil\",\n \"tingle\",\n \"tingling\",\n \"tingly\",\n \"tinker\",\n \"tinkling\",\n \"tinsel\",\n \"tinsmith\",\n \"tint\",\n \"tinwork\",\n \"tiny\",\n \"tipoff\",\n \"tipped\",\n \"tipper\",\n \"tipping\",\n \"tiptoeing\",\n \"tiptop\",\n \"tiring\",\n \"tissue\",\n \"trace\",\n \"tracing\",\n \"track\",\n \"traction\",\n \"tractor\",\n \"trade\",\n \"trading\",\n \"tradition\",\n \"traffic\",\n \"tragedy\",\n \"trailing\",\n \"trailside\",\n \"train\",\n \"traitor\",\n \"trance\",\n \"tranquil\",\n \"transfer\",\n \"transform\",\n \"translate\",\n \"transpire\",\n \"transport\",\n \"transpose\",\n \"trapdoor\",\n \"trapeze\",\n \"trapezoid\",\n \"trapped\",\n \"trapper\",\n \"trapping\",\n \"traps\",\n \"trash\",\n \"travel\",\n \"traverse\",\n \"travesty\",\n \"tray\",\n \"treachery\",\n \"treading\",\n \"treadmill\",\n \"treason\",\n \"treat\",\n \"treble\",\n \"tree\",\n \"trekker\",\n \"tremble\",\n \"trembling\",\n \"tremor\",\n \"trench\",\n \"trend\",\n \"trespass\",\n \"triage\",\n \"trial\",\n \"triangle\",\n \"tribesman\",\n \"tribunal\",\n \"tribune\",\n \"tributary\",\n \"tribute\",\n \"triceps\",\n \"trickery\",\n \"trickily\",\n \"tricking\",\n \"trickle\",\n \"trickster\",\n \"tricky\",\n \"tricolor\",\n \"tricycle\",\n \"trident\",\n \"tried\",\n \"trifle\",\n \"trifocals\",\n \"trillion\",\n \"trilogy\",\n \"trimester\",\n \"trimmer\",\n \"trimming\",\n \"trimness\",\n \"trinity\",\n \"trio\",\n \"tripod\",\n \"tripping\",\n \"triumph\",\n \"trivial\",\n \"trodden\",\n \"trolling\",\n \"trombone\",\n \"trophy\",\n \"tropical\",\n \"tropics\",\n \"trouble\",\n \"troubling\",\n \"trough\",\n \"trousers\",\n \"trout\",\n \"trowel\",\n \"truce\",\n \"truck\",\n \"truffle\",\n \"trump\",\n \"trunks\",\n \"trustable\",\n \"trustee\",\n \"trustful\",\n \"trusting\",\n \"trustless\",\n \"truth\",\n \"try\",\n \"tubby\",\n \"tubeless\",\n \"tubular\",\n \"tucking\",\n \"tuesday\",\n \"tug\",\n \"tuition\",\n \"tulip\",\n \"tumble\",\n \"tumbling\",\n \"tummy\",\n \"turban\",\n \"turbine\",\n \"turbofan\",\n \"turbojet\",\n \"turbulent\",\n \"turf\",\n \"turkey\",\n \"turmoil\",\n \"turret\",\n \"turtle\",\n \"tusk\",\n \"tutor\",\n \"tutu\",\n \"tux\",\n \"tweak\",\n \"tweed\",\n \"tweet\",\n \"tweezers\",\n \"twelve\",\n \"twentieth\",\n \"twenty\",\n \"twerp\",\n \"twice\",\n \"twiddle\",\n \"twiddling\",\n \"twig\",\n \"twilight\",\n \"twine\",\n \"twins\",\n \"twirl\",\n \"twistable\",\n \"twisted\",\n \"twister\",\n \"twisting\",\n \"twisty\",\n \"twitch\",\n \"twitter\",\n \"tycoon\",\n \"tying\",\n \"tyke\",\n \"udder\",\n \"ultimate\",\n \"ultimatum\",\n \"ultra\",\n \"umbilical\",\n \"umbrella\",\n \"umpire\",\n \"unabashed\",\n \"unable\",\n \"unadorned\",\n \"unadvised\",\n \"unafraid\",\n \"unaired\",\n \"unaligned\",\n \"unaltered\",\n \"unarmored\",\n \"unashamed\",\n \"unaudited\",\n \"unawake\",\n \"unaware\",\n \"unbaked\",\n \"unbalance\",\n \"unbeaten\",\n \"unbend\",\n \"unbent\",\n \"unbiased\",\n \"unbitten\",\n \"unblended\",\n \"unblessed\",\n \"unblock\",\n \"unbolted\",\n \"unbounded\",\n \"unboxed\",\n \"unbraided\",\n \"unbridle\",\n \"unbroken\",\n \"unbuckled\",\n \"unbundle\",\n \"unburned\",\n \"unbutton\",\n \"uncanny\",\n \"uncapped\",\n \"uncaring\",\n \"uncertain\",\n \"unchain\",\n \"unchanged\",\n \"uncharted\",\n \"uncheck\",\n \"uncivil\",\n \"unclad\",\n \"unclaimed\",\n \"unclamped\",\n \"unclasp\",\n \"uncle\",\n \"unclip\",\n \"uncloak\",\n \"unclog\",\n \"unclothed\",\n \"uncoated\",\n \"uncoiled\",\n \"uncolored\",\n \"uncombed\",\n \"uncommon\",\n \"uncooked\",\n \"uncork\",\n \"uncorrupt\",\n \"uncounted\",\n \"uncouple\",\n \"uncouth\",\n \"uncover\",\n \"uncross\",\n \"uncrown\",\n \"uncrushed\",\n \"uncured\",\n \"uncurious\",\n \"uncurled\",\n \"uncut\",\n \"undamaged\",\n \"undated\",\n \"undaunted\",\n \"undead\",\n \"undecided\",\n \"undefined\",\n \"underage\",\n \"underarm\",\n \"undercoat\",\n \"undercook\",\n \"undercut\",\n \"underdog\",\n \"underdone\",\n \"underfed\",\n \"underfeed\",\n \"underfoot\",\n \"undergo\",\n \"undergrad\",\n \"underhand\",\n \"underline\",\n \"underling\",\n \"undermine\",\n \"undermost\",\n \"underpaid\",\n \"underpass\",\n \"underpay\",\n \"underrate\",\n \"undertake\",\n \"undertone\",\n \"undertook\",\n \"undertow\",\n \"underuse\",\n \"underwear\",\n \"underwent\",\n \"underwire\",\n \"undesired\",\n \"undiluted\",\n \"undivided\",\n \"undocked\",\n \"undoing\",\n \"undone\",\n \"undrafted\",\n \"undress\",\n \"undrilled\",\n \"undusted\",\n \"undying\",\n \"unearned\",\n \"unearth\",\n \"unease\",\n \"uneasily\",\n \"uneasy\",\n \"uneatable\",\n \"uneaten\",\n \"unedited\",\n \"unelected\",\n \"unending\",\n \"unengaged\",\n \"unenvied\",\n \"unequal\",\n \"unethical\",\n \"uneven\",\n \"unexpired\",\n \"unexposed\",\n \"unfailing\",\n \"unfair\",\n \"unfasten\",\n \"unfazed\",\n \"unfeeling\",\n \"unfiled\",\n \"unfilled\",\n \"unfitted\",\n \"unfitting\",\n \"unfixable\",\n \"unfixed\",\n \"unflawed\",\n \"unfocused\",\n \"unfold\",\n \"unfounded\",\n \"unframed\",\n \"unfreeze\",\n \"unfrosted\",\n \"unfrozen\",\n \"unfunded\",\n \"unglazed\",\n \"ungloved\",\n \"unglue\",\n \"ungodly\",\n \"ungraded\",\n \"ungreased\",\n \"unguarded\",\n \"unguided\",\n \"unhappily\",\n \"unhappy\",\n \"unharmed\",\n \"unhealthy\",\n \"unheard\",\n \"unhearing\",\n \"unheated\",\n \"unhelpful\",\n \"unhidden\",\n \"unhinge\",\n \"unhitched\",\n \"unholy\",\n \"unhook\",\n \"unicorn\",\n \"unicycle\",\n \"unified\",\n \"unifier\",\n \"uniformed\",\n \"uniformly\",\n \"unify\",\n \"unimpeded\",\n \"uninjured\",\n \"uninstall\",\n \"uninsured\",\n \"uninvited\",\n \"union\",\n \"uniquely\",\n \"unisexual\",\n \"unison\",\n \"unissued\",\n \"unit\",\n \"universal\",\n \"universe\",\n \"unjustly\",\n \"unkempt\",\n \"unkind\",\n \"unknotted\",\n \"unknowing\",\n \"unknown\",\n \"unlaced\",\n \"unlatch\",\n \"unlawful\",\n \"unleaded\",\n \"unlearned\",\n \"unleash\",\n \"unless\",\n \"unleveled\",\n \"unlighted\",\n \"unlikable\",\n \"unlimited\",\n \"unlined\",\n \"unlinked\",\n \"unlisted\",\n \"unlit\",\n \"unlivable\",\n \"unloaded\",\n \"unloader\",\n \"unlocked\",\n \"unlocking\",\n \"unlovable\",\n \"unloved\",\n \"unlovely\",\n \"unloving\",\n \"unluckily\",\n \"unlucky\",\n \"unmade\",\n \"unmanaged\",\n \"unmanned\",\n \"unmapped\",\n \"unmarked\",\n \"unmasked\",\n \"unmasking\",\n \"unmatched\",\n \"unmindful\",\n \"unmixable\",\n \"unmixed\",\n \"unmolded\",\n \"unmoral\",\n \"unmovable\",\n \"unmoved\",\n \"unmoving\",\n \"unnamable\",\n \"unnamed\",\n \"unnatural\",\n \"unneeded\",\n \"unnerve\",\n \"unnerving\",\n \"unnoticed\",\n \"unopened\",\n \"unopposed\",\n \"unpack\",\n \"unpadded\",\n \"unpaid\",\n \"unpainted\",\n \"unpaired\",\n \"unpaved\",\n \"unpeeled\",\n \"unpicked\",\n \"unpiloted\",\n \"unpinned\",\n \"unplanned\",\n \"unplanted\",\n \"unpleased\",\n \"unpledged\",\n \"unplowed\",\n \"unplug\",\n \"unpopular\",\n \"unproven\",\n \"unquote\",\n \"unranked\",\n \"unrated\",\n \"unraveled\",\n \"unreached\",\n \"unread\",\n \"unreal\",\n \"unreeling\",\n \"unrefined\",\n \"unrelated\",\n \"unrented\",\n \"unrest\",\n \"unretired\",\n \"unrevised\",\n \"unrigged\",\n \"unripe\",\n \"unrivaled\",\n \"unroasted\",\n \"unrobed\",\n \"unroll\",\n \"unruffled\",\n \"unruly\",\n \"unrushed\",\n \"unsaddle\",\n \"unsafe\",\n \"unsaid\",\n \"unsalted\",\n \"unsaved\",\n \"unsavory\",\n \"unscathed\",\n \"unscented\",\n \"unscrew\",\n \"unsealed\",\n \"unseated\",\n \"unsecured\",\n \"unseeing\",\n \"unseemly\",\n \"unseen\",\n \"unselect\",\n \"unselfish\",\n \"unsent\",\n \"unsettled\",\n \"unshackle\",\n \"unshaken\",\n \"unshaved\",\n \"unshaven\",\n \"unsheathe\",\n \"unshipped\",\n \"unsightly\",\n \"unsigned\",\n \"unskilled\",\n \"unsliced\",\n \"unsmooth\",\n \"unsnap\",\n \"unsocial\",\n \"unsoiled\",\n \"unsold\",\n \"unsolved\",\n \"unsorted\",\n \"unspoiled\",\n \"unspoken\",\n \"unstable\",\n \"unstaffed\",\n \"unstamped\",\n \"unsteady\",\n \"unsterile\",\n \"unstirred\",\n \"unstitch\",\n \"unstopped\",\n \"unstuck\",\n \"unstuffed\",\n \"unstylish\",\n \"unsubtle\",\n \"unsubtly\",\n \"unsuited\",\n \"unsure\",\n \"unsworn\",\n \"untagged\",\n \"untainted\",\n \"untaken\",\n \"untamed\",\n \"untangled\",\n \"untapped\",\n \"untaxed\",\n \"unthawed\",\n \"unthread\",\n \"untidy\",\n \"untie\",\n \"until\",\n \"untimed\",\n \"untimely\",\n \"untitled\",\n \"untoasted\",\n \"untold\",\n \"untouched\",\n \"untracked\",\n \"untrained\",\n \"untreated\",\n \"untried\",\n \"untrimmed\",\n \"untrue\",\n \"untruth\",\n \"unturned\",\n \"untwist\",\n \"untying\",\n \"unusable\",\n \"unused\",\n \"unusual\",\n \"unvalued\",\n \"unvaried\",\n \"unvarying\",\n \"unveiled\",\n \"unveiling\",\n \"unvented\",\n \"unviable\",\n \"unvisited\",\n \"unvocal\",\n \"unwanted\",\n \"unwarlike\",\n \"unwary\",\n \"unwashed\",\n \"unwatched\",\n \"unweave\",\n \"unwed\",\n \"unwelcome\",\n \"unwell\",\n \"unwieldy\",\n \"unwilling\",\n \"unwind\",\n \"unwired\",\n \"unwitting\",\n \"unwomanly\",\n \"unworldly\",\n \"unworn\",\n \"unworried\",\n \"unworthy\",\n \"unwound\",\n \"unwoven\",\n \"unwrapped\",\n \"unwritten\",\n \"unzip\",\n \"upbeat\",\n \"upchuck\",\n \"upcoming\",\n \"upcountry\",\n \"update\",\n \"upfront\",\n \"upgrade\",\n \"upheaval\",\n \"upheld\",\n \"uphill\",\n \"uphold\",\n \"uplifted\",\n \"uplifting\",\n \"upload\",\n \"upon\",\n \"upper\",\n \"upright\",\n \"uprising\",\n \"upriver\",\n \"uproar\",\n \"uproot\",\n \"upscale\",\n \"upside\",\n \"upstage\",\n \"upstairs\",\n \"upstart\",\n \"upstate\",\n \"upstream\",\n \"upstroke\",\n \"upswing\",\n \"uptake\",\n \"uptight\",\n \"uptown\",\n \"upturned\",\n \"upward\",\n \"upwind\",\n \"uranium\",\n \"urban\",\n \"urchin\",\n \"urethane\",\n \"urgency\",\n \"urgent\",\n \"urging\",\n \"urologist\",\n \"urology\",\n \"usable\",\n \"usage\",\n \"useable\",\n \"used\",\n \"uselessly\",\n \"user\",\n \"usher\",\n \"usual\",\n \"utensil\",\n \"utility\",\n \"utilize\",\n \"utmost\",\n \"utopia\",\n \"utter\",\n \"vacancy\",\n \"vacant\",\n \"vacate\",\n \"vacation\",\n \"vagabond\",\n \"vagrancy\",\n \"vagrantly\",\n \"vaguely\",\n \"vagueness\",\n \"valiant\",\n \"valid\",\n \"valium\",\n \"valley\",\n \"valuables\",\n \"value\",\n \"vanilla\",\n \"vanish\",\n \"vanity\",\n \"vanquish\",\n \"vantage\",\n \"vaporizer\",\n \"variable\",\n \"variably\",\n \"varied\",\n \"variety\",\n \"various\",\n \"varmint\",\n \"varnish\",\n \"varsity\",\n \"varying\",\n \"vascular\",\n \"vaseline\",\n \"vastly\",\n \"vastness\",\n \"veal\",\n \"vegan\",\n \"veggie\",\n \"vehicular\",\n \"velcro\",\n \"velocity\",\n \"velvet\",\n \"vendetta\",\n \"vending\",\n \"vendor\",\n \"veneering\",\n \"vengeful\",\n \"venomous\",\n \"ventricle\",\n \"venture\",\n \"venue\",\n \"venus\",\n \"verbalize\",\n \"verbally\",\n \"verbose\",\n \"verdict\",\n \"verify\",\n \"verse\",\n \"version\",\n \"versus\",\n \"vertebrae\",\n \"vertical\",\n \"vertigo\",\n \"very\",\n \"vessel\",\n \"vest\",\n \"veteran\",\n \"veto\",\n \"vexingly\",\n \"viability\",\n \"viable\",\n \"vibes\",\n \"vice\",\n \"vicinity\",\n \"victory\",\n \"video\",\n \"viewable\",\n \"viewer\",\n \"viewing\",\n \"viewless\",\n \"viewpoint\",\n \"vigorous\",\n \"village\",\n \"villain\",\n \"vindicate\",\n \"vineyard\",\n \"vintage\",\n \"violate\",\n \"violation\",\n \"violator\",\n \"violet\",\n \"violin\",\n \"viper\",\n \"viral\",\n \"virtual\",\n \"virtuous\",\n \"virus\",\n \"visa\",\n \"viscosity\",\n \"viscous\",\n \"viselike\",\n \"visible\",\n \"visibly\",\n \"vision\",\n \"visiting\",\n \"visitor\",\n \"visor\",\n \"vista\",\n \"vitality\",\n \"vitalize\",\n \"vitally\",\n \"vitamins\",\n \"vivacious\",\n \"vividly\",\n \"vividness\",\n \"vixen\",\n \"vocalist\",\n \"vocalize\",\n \"vocally\",\n \"vocation\",\n \"voice\",\n \"voicing\",\n \"void\",\n \"volatile\",\n \"volley\",\n \"voltage\",\n \"volumes\",\n \"voter\",\n \"voting\",\n \"voucher\",\n \"vowed\",\n \"vowel\",\n \"voyage\",\n \"wackiness\",\n \"wad\",\n \"wafer\",\n \"waffle\",\n \"waged\",\n \"wager\",\n \"wages\",\n \"waggle\",\n \"wagon\",\n \"wake\",\n \"waking\",\n \"walk\",\n \"walmart\",\n \"walnut\",\n \"walrus\",\n \"waltz\",\n \"wand\",\n \"wannabe\",\n \"wanted\",\n \"wanting\",\n \"wasabi\",\n \"washable\",\n \"washbasin\",\n \"washboard\",\n \"washbowl\",\n \"washcloth\",\n \"washday\",\n \"washed\",\n \"washer\",\n \"washhouse\",\n \"washing\",\n \"washout\",\n \"washroom\",\n \"washstand\",\n \"washtub\",\n \"wasp\",\n \"wasting\",\n \"watch\",\n \"water\",\n \"waviness\",\n \"waving\",\n \"wavy\",\n \"whacking\",\n \"whacky\",\n \"wham\",\n \"wharf\",\n \"wheat\",\n \"whenever\",\n \"whiff\",\n \"whimsical\",\n \"whinny\",\n \"whiny\",\n \"whisking\",\n \"whoever\",\n \"whole\",\n \"whomever\",\n \"whoopee\",\n \"whooping\",\n \"whoops\",\n \"why\",\n \"wick\",\n \"widely\",\n \"widen\",\n \"widget\",\n \"widow\",\n \"width\",\n \"wieldable\",\n \"wielder\",\n \"wife\",\n \"wifi\",\n \"wikipedia\",\n \"wildcard\",\n \"wildcat\",\n \"wilder\",\n \"wildfire\",\n \"wildfowl\",\n \"wildland\",\n \"wildlife\",\n \"wildly\",\n \"wildness\",\n \"willed\",\n \"willfully\",\n \"willing\",\n \"willow\",\n \"willpower\",\n \"wilt\",\n \"wimp\",\n \"wince\",\n \"wincing\",\n \"wind\",\n \"wing\",\n \"winking\",\n \"winner\",\n \"winnings\",\n \"winter\",\n \"wipe\",\n \"wired\",\n \"wireless\",\n \"wiring\",\n \"wiry\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"wisplike\",\n \"wispy\",\n \"wistful\",\n \"wizard\",\n \"wobble\",\n \"wobbling\",\n \"wobbly\",\n \"wok\",\n \"wolf\",\n \"wolverine\",\n \"womanhood\",\n \"womankind\",\n \"womanless\",\n \"womanlike\",\n \"womanly\",\n \"womb\",\n \"woof\",\n \"wooing\",\n \"wool\",\n \"woozy\",\n \"word\",\n \"work\",\n \"worried\",\n \"worrier\",\n \"worrisome\",\n \"worry\",\n \"worsening\",\n \"worshiper\",\n \"worst\",\n \"wound\",\n \"woven\",\n \"wow\",\n \"wrangle\",\n \"wrath\",\n \"wreath\",\n \"wreckage\",\n \"wrecker\",\n \"wrecking\",\n \"wrench\",\n \"wriggle\",\n \"wriggly\",\n \"wrinkle\",\n \"wrinkly\",\n \"wrist\",\n \"writing\",\n \"written\",\n \"wrongdoer\",\n \"wronged\",\n \"wrongful\",\n \"wrongly\",\n \"wrongness\",\n \"wrought\",\n \"xbox\",\n \"xerox\",\n \"yahoo\",\n \"yam\",\n \"yanking\",\n \"yapping\",\n \"yard\",\n \"yarn\",\n \"yeah\",\n \"yearbook\",\n \"yearling\",\n \"yearly\",\n \"yearning\",\n \"yeast\",\n \"yelling\",\n \"yelp\",\n \"yen\",\n \"yesterday\",\n \"yiddish\",\n \"yield\",\n \"yin\",\n \"yippee\",\n \"yo-yo\",\n \"yodel\",\n \"yoga\",\n \"yogurt\",\n \"yonder\",\n \"yoyo\",\n \"yummy\",\n \"zap\",\n \"zealous\",\n \"zebra\",\n \"zen\",\n \"zeppelin\",\n \"zero\",\n \"zestfully\",\n \"zesty\",\n \"zigzagged\",\n \"zipfile\",\n \"zipping\",\n \"zippy\",\n \"zips\",\n \"zit\",\n \"zodiac\",\n \"zombie\",\n \"zone\",\n \"zoning\",\n \"zookeeper\",\n \"zoologist\",\n \"zoology\",\n \"zoom\",\n];\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class BillingSyncConfigApi extends BaseResponse {\n billingSyncKey: string;\n\n constructor(data: any) {\n super(data);\n if (data == null) {\n return;\n }\n this.billingSyncKey = this.getResponseProperty(\"BillingSyncKey\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty(\"CardholderName\");\n this.brand = this.getResponseProperty(\"Brand\");\n this.number = this.getResponseProperty(\"Number\");\n this.expMonth = this.getResponseProperty(\"ExpMonth\");\n this.expYear = this.getResponseProperty(\"ExpYear\");\n this.code = this.getResponseProperty(\"Code\");\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.value = this.getResponseProperty(\"Value\");\n this.linkedId = this.getResponseProperty(\"linkedId\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty(\"Title\");\n this.firstName = this.getResponseProperty(\"FirstName\");\n this.middleName = this.getResponseProperty(\"MiddleName\");\n this.lastName = this.getResponseProperty(\"LastName\");\n this.address1 = this.getResponseProperty(\"Address1\");\n this.address2 = this.getResponseProperty(\"Address2\");\n this.address3 = this.getResponseProperty(\"Address3\");\n this.city = this.getResponseProperty(\"City\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.country = this.getResponseProperty(\"Country\");\n this.company = this.getResponseProperty(\"Company\");\n this.email = this.getResponseProperty(\"Email\");\n this.phone = this.getResponseProperty(\"Phone\");\n this.ssn = this.getResponseProperty(\"SSN\");\n this.username = this.getResponseProperty(\"Username\");\n this.passportNumber = this.getResponseProperty(\"PassportNumber\");\n this.licenseNumber = this.getResponseProperty(\"LicenseNumber\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nimport { LoginUriApi } from \"./loginUriApi\";\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty(\"Username\");\n this.password = this.getResponseProperty(\"Password\");\n this.passwordRevisionDate = this.getResponseProperty(\"PasswordRevisionDate\");\n this.totp = this.getResponseProperty(\"Totp\");\n this.autofillOnPageLoad = this.getResponseProperty(\"AutofillOnPageLoad\");\n\n const uris = this.getResponseProperty(\"Uris\");\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty(\"Uri\");\n const match = this.getResponseProperty(\"Match\");\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class PermissionsApi extends BaseResponse {\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAllCollections: boolean;\n createNewCollections: boolean;\n editAnyCollection: boolean;\n deleteAnyCollection: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAssignedCollections: boolean;\n editAssignedCollections: boolean;\n deleteAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n manageResetPassword: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessEventLogs = this.getResponseProperty(\"AccessEventLogs\");\n this.accessImportExport = this.getResponseProperty(\"AccessImportExport\");\n this.accessReports = this.getResponseProperty(\"AccessReports\");\n\n // For backwards compatibility with Server <= 1.43.0\n this.manageAllCollections = this.getResponseProperty(\"ManageAllCollections\");\n this.manageAssignedCollections = this.getResponseProperty(\"ManageAssignedCollections\");\n\n this.createNewCollections = this.getResponseProperty(\"CreateNewCollections\");\n this.editAnyCollection = this.getResponseProperty(\"EditAnyCollection\");\n this.deleteAnyCollection = this.getResponseProperty(\"DeleteAnyCollection\");\n this.editAssignedCollections = this.getResponseProperty(\"EditAssignedCollections\");\n this.deleteAssignedCollections = this.getResponseProperty(\"DeleteAssignedCollections\");\n\n this.manageCiphers = this.getResponseProperty(\"ManageCiphers\");\n this.manageGroups = this.getResponseProperty(\"ManageGroups\");\n this.manageSso = this.getResponseProperty(\"ManageSso\");\n this.managePolicies = this.getResponseProperty(\"ManagePolicies\");\n this.manageUsers = this.getResponseProperty(\"ManageUsers\");\n this.manageResetPassword = this.getResponseProperty(\"ManageResetPassword\");\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty(\"Type\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty(\"Id\");\n this.fileName = this.getResponseProperty(\"FileName\");\n this.size = this.getResponseProperty(\"Size\");\n this.sizeName = this.getResponseProperty(\"SizeName\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty(\"Text\");\n this.hidden = this.getResponseProperty(\"Hidden\") || false;\n }\n}\n","import {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"../../enums/ssoEnums\";\nimport { BaseResponse } from \"../response/baseResponse\";\nimport { SsoConfigView } from \"../view/ssoConfigView\";\n\nexport class SsoConfigApi extends BaseResponse {\n static fromView(view: SsoConfigView, api = new SsoConfigApi()) {\n api.configType = view.configType;\n\n api.keyConnectorEnabled = view.keyConnectorEnabled;\n api.keyConnectorUrl = view.keyConnectorUrl;\n\n if (api.configType === SsoType.OpenIdConnect) {\n api.authority = view.openId.authority;\n api.clientId = view.openId.clientId;\n api.clientSecret = view.openId.clientSecret;\n api.metadataAddress = view.openId.metadataAddress;\n api.redirectBehavior = view.openId.redirectBehavior;\n api.getClaimsFromUserInfoEndpoint = view.openId.getClaimsFromUserInfoEndpoint;\n api.additionalScopes = view.openId.additionalScopes;\n api.additionalUserIdClaimTypes = view.openId.additionalUserIdClaimTypes;\n api.additionalEmailClaimTypes = view.openId.additionalEmailClaimTypes;\n api.additionalNameClaimTypes = view.openId.additionalNameClaimTypes;\n api.acrValues = view.openId.acrValues;\n api.expectedReturnAcrValue = view.openId.expectedReturnAcrValue;\n } else if (api.configType === SsoType.Saml2) {\n api.spNameIdFormat = view.saml.spNameIdFormat;\n api.spOutboundSigningAlgorithm = view.saml.spOutboundSigningAlgorithm;\n api.spSigningBehavior = view.saml.spSigningBehavior;\n api.spMinIncomingSigningAlgorithm = view.saml.spMinIncomingSigningAlgorithm;\n api.spWantAssertionsSigned = view.saml.spWantAssertionsSigned;\n api.spValidateCertificates = view.saml.spValidateCertificates;\n\n api.idpEntityId = view.saml.idpEntityId;\n api.idpBindingType = view.saml.idpBindingType;\n api.idpSingleSignOnServiceUrl = view.saml.idpSingleSignOnServiceUrl;\n api.idpSingleLogoutServiceUrl = view.saml.idpSingleLogoutServiceUrl;\n api.idpX509PublicCert = view.saml.idpX509PublicCert;\n api.idpOutboundSigningAlgorithm = view.saml.idpOutboundSigningAlgorithm;\n api.idpAllowUnsolicitedAuthnResponse = view.saml.idpAllowUnsolicitedAuthnResponse;\n api.idpWantAuthnRequestsSigned = view.saml.idpWantAuthnRequestsSigned;\n\n // Value is inverted in the api model (disable instead of allow)\n api.idpDisableOutboundLogoutRequests = !view.saml.idpAllowOutboundLogoutRequests;\n }\n\n return api;\n }\n configType: SsoType;\n\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n // OpenId\n authority: string;\n clientId: string;\n clientSecret: string;\n metadataAddress: string;\n redirectBehavior: OpenIdConnectRedirectBehavior;\n getClaimsFromUserInfoEndpoint: boolean;\n additionalScopes: string;\n additionalUserIdClaimTypes: string;\n additionalEmailClaimTypes: string;\n additionalNameClaimTypes: string;\n acrValues: string;\n expectedReturnAcrValue: string;\n\n // SAML\n spNameIdFormat: Saml2NameIdFormat;\n spOutboundSigningAlgorithm: string;\n spSigningBehavior: Saml2SigningBehavior;\n spMinIncomingSigningAlgorithm: boolean;\n spWantAssertionsSigned: boolean;\n spValidateCertificates: boolean;\n\n idpEntityId: string;\n idpBindingType: Saml2BindingType;\n idpSingleSignOnServiceUrl: string;\n idpSingleLogoutServiceUrl: string;\n idpX509PublicCert: string;\n idpOutboundSigningAlgorithm: string;\n idpAllowUnsolicitedAuthnResponse: boolean;\n idpDisableOutboundLogoutRequests: boolean;\n idpWantAuthnRequestsSigned: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n\n this.configType = this.getResponseProperty(\"ConfigType\");\n\n this.keyConnectorEnabled = this.getResponseProperty(\"KeyConnectorEnabled\");\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n\n this.authority = this.getResponseProperty(\"Authority\");\n this.clientId = this.getResponseProperty(\"ClientId\");\n this.clientSecret = this.getResponseProperty(\"ClientSecret\");\n this.metadataAddress = this.getResponseProperty(\"MetadataAddress\");\n this.redirectBehavior = this.getResponseProperty(\"RedirectBehavior\");\n this.getClaimsFromUserInfoEndpoint = this.getResponseProperty(\"GetClaimsFromUserInfoEndpoint\");\n this.additionalScopes = this.getResponseProperty(\"AdditionalScopes\");\n this.additionalUserIdClaimTypes = this.getResponseProperty(\"AdditionalUserIdClaimTypes\");\n this.additionalEmailClaimTypes = this.getResponseProperty(\"AdditionalEmailClaimTypes\");\n this.additionalNameClaimTypes = this.getResponseProperty(\"AdditionalNameClaimTypes\");\n this.acrValues = this.getResponseProperty(\"AcrValues\");\n this.expectedReturnAcrValue = this.getResponseProperty(\"ExpectedReturnAcrValue\");\n\n this.spNameIdFormat = this.getResponseProperty(\"SpNameIdFormat\");\n this.spOutboundSigningAlgorithm = this.getResponseProperty(\"SpOutboundSigningAlgorithm\");\n this.spSigningBehavior = this.getResponseProperty(\"SpSigningBehavior\");\n this.spMinIncomingSigningAlgorithm = this.getResponseProperty(\"SpMinIncomingSigningAlgorithm\");\n this.spWantAssertionsSigned = this.getResponseProperty(\"SpWantAssertionsSigned\");\n this.spValidateCertificates = this.getResponseProperty(\"SpValidateCertificates\");\n\n this.idpEntityId = this.getResponseProperty(\"IdpEntityId\");\n this.idpBindingType = this.getResponseProperty(\"IdpBindingType\");\n this.idpSingleSignOnServiceUrl = this.getResponseProperty(\"IdpSingleSignOnServiceUrl\");\n this.idpSingleLogoutServiceUrl = this.getResponseProperty(\"IdpSingleLogoutServiceUrl\");\n this.idpX509PublicCert = this.getResponseProperty(\"IdpX509PublicCert\");\n this.idpOutboundSigningAlgorithm = this.getResponseProperty(\"IdpOutboundSigningAlgorithm\");\n this.idpAllowUnsolicitedAuthnResponse = this.getResponseProperty(\n \"IdpAllowUnsolicitedAuthnResponse\"\n );\n this.idpDisableOutboundLogoutRequests = this.getResponseProperty(\n \"IdpDisableOutboundLogoutRequests\"\n );\n this.idpWantAuthnRequestsSigned = this.getResponseProperty(\"IdpWantAuthnRequestsSigned\");\n }\n}\n","import { AttachmentResponse } from \"../response/attachmentResponse\";\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from \"../api/cardApi\";\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CipherResponse } from \"../response/cipherResponse\";\n\nimport { AttachmentData } from \"./attachmentData\";\nimport { CardData } from \"./cardData\";\nimport { FieldData } from \"./fieldData\";\nimport { IdentityData } from \"./identityData\";\nimport { LoginData } from \"./loginData\";\nimport { PasswordHistoryData } from \"./passwordHistoryData\";\nimport { SecureNoteData } from \"./secureNoteData\";\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response?: CipherResponse, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n this.reprompt = response.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map((f) => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map((a) => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map((ph) => new PasswordHistoryData(ph));\n }\n }\n}\n","import { CollectionDetailsResponse } from \"../response/collectionResponse\";\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { FieldApi } from \"../api/fieldApi\";\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n linkedId: LinkedIdType;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n this.linkedId = response.linkedId;\n }\n}\n","import { FolderResponse } from \"../response/folderResponse\";\n\nexport class FolderData {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse) {\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { IdentityApi } from \"../api/identityApi\";\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from \"../api/loginApi\";\n\nimport { LoginUriData } from \"./loginUriData\";\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n this.autofillOnPageLoad = data.autofillOnPageLoad;\n\n if (data.uris) {\n this.uris = data.uris.map((u) => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { LoginUriApi } from \"../api/loginUriApi\";\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\nimport { ProfileOrganizationResponse } from \"../response/profileOrganizationResponse\";\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useSso = response.useSso;\n this.useKeyConnector = response.useKeyConnector;\n this.useResetPassword = response.useResetPassword;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n this.resetPasswordEnrolled = response.resetPasswordEnrolled;\n this.userId = response.userId;\n this.hasPublicAndPrivateKeys = response.hasPublicAndPrivateKeys;\n this.providerId = response.providerId;\n this.providerName = response.providerName;\n this.familySponsorshipFriendlyName = response.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = response.familySponsorshipAvailable;\n this.planProductType = response.planProductType;\n this.keyConnectorEnabled = response.keyConnectorEnabled;\n this.keyConnectorUrl = response.keyConnectorUrl;\n this.familySponsorshipLastSyncDate = response.familySponsorshipLastSyncDate;\n this.familySponsorshipValidUntil = response.familySponsorshipValidUntil;\n this.familySponsorshipToDelete = response.familySponsorshipToDelete;\n }\n}\n","import { PasswordHistoryResponse } from \"../response/passwordHistoryResponse\";\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\nimport { PolicyResponse } from \"../response/policyResponse\";\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { ProfileProviderResponse } from \"../response/profileProviderResponse\";\n\nexport class ProviderData {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(response: ProfileProviderResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.userId = response.userId;\n this.useEvents = response.useEvents;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendResponse } from \"../response/sendResponse\";\n\nimport { SendFileData } from \"./sendFileData\";\nimport { SendTextData } from \"./sendTextData\";\n\nexport class SendData {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(response?: SendResponse) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n this.hideEmail = response.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { SendFileApi } from \"../api/sendFileApi\";\n\nexport class SendFileData {\n id: string;\n fileName: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from \"../api/sendTextApi\";\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { AuthenticationStatus } from \"../../enums/authenticationStatus\";\nimport { KdfType } from \"../../enums/kdfType\";\nimport { UriMatchType } from \"../../enums/uriMatchType\";\nimport { CipherData } from \"../data/cipherData\";\nimport { CollectionData } from \"../data/collectionData\";\nimport { EventData } from \"../data/eventData\";\nimport { FolderData } from \"../data/folderData\";\nimport { OrganizationData } from \"../data/organizationData\";\nimport { PolicyData } from \"../data/policyData\";\nimport { ProviderData } from \"../data/providerData\";\nimport { SendData } from \"../data/sendData\";\nimport { CipherView } from \"../view/cipherView\";\nimport { CollectionView } from \"../view/collectionView\";\nimport { FolderView } from \"../view/folderView\";\nimport { SendView } from \"../view/sendView\";\n\nimport { EncString } from \"./encString\";\nimport { EnvironmentUrls } from \"./environmentUrls\";\nimport { GeneratedPasswordHistory } from \"./generatedPasswordHistory\";\nimport { Policy } from \"./policy\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncryptionPair {\n encrypted?: TEncrypted;\n decrypted?: TDecrypted;\n}\n\nexport class DataEncryptionPair {\n encrypted?: { [id: string]: TEncrypted };\n decrypted?: TDecrypted[];\n}\n\nexport class AccountData {\n ciphers?: DataEncryptionPair = new DataEncryptionPair<\n CipherData,\n CipherView\n >();\n folders?: DataEncryptionPair = new DataEncryptionPair<\n FolderData,\n FolderView\n >();\n localData?: any;\n sends?: DataEncryptionPair = new DataEncryptionPair();\n collections?: DataEncryptionPair = new DataEncryptionPair<\n CollectionData,\n CollectionView\n >();\n policies?: DataEncryptionPair = new DataEncryptionPair();\n passwordGenerationHistory?: EncryptionPair<\n GeneratedPasswordHistory[],\n GeneratedPasswordHistory[]\n > = new EncryptionPair();\n addEditCipherInfo?: any;\n eventCollection?: EventData[];\n organizations?: { [id: string]: OrganizationData };\n providers?: { [id: string]: ProviderData };\n}\n\nexport class AccountKeys {\n cryptoMasterKey?: SymmetricCryptoKey;\n cryptoMasterKeyAuto?: string;\n cryptoMasterKeyB64?: string;\n cryptoMasterKeyBiometric?: string;\n cryptoSymmetricKey?: EncryptionPair = new EncryptionPair<\n string,\n SymmetricCryptoKey\n >();\n organizationKeys?: EncryptionPair> = new EncryptionPair<\n any,\n Map\n >();\n providerKeys?: EncryptionPair> = new EncryptionPair<\n any,\n Map\n >();\n privateKey?: EncryptionPair = new EncryptionPair();\n legacyEtmKey?: SymmetricCryptoKey;\n publicKey?: ArrayBuffer;\n apiKeyClientSecret?: string;\n}\n\nexport class AccountProfile {\n apiKeyClientId?: string;\n authenticationStatus?: AuthenticationStatus;\n convertAccountToKeyConnector?: boolean;\n email?: string;\n emailVerified?: boolean;\n entityId?: string;\n entityType?: string;\n everBeenUnlocked?: boolean;\n forcePasswordReset?: boolean;\n hasPremiumPersonally?: boolean;\n lastSync?: string;\n userId?: string;\n usesKeyConnector?: boolean;\n keyHash?: string;\n kdfIterations?: number;\n kdfType?: KdfType;\n}\n\nexport class AccountSettings {\n autoConfirmFingerPrints?: boolean;\n autoFillOnPageLoadDefault?: boolean;\n biometricLocked?: boolean;\n biometricUnlock?: boolean;\n clearClipboard?: number;\n collapsedGroupings?: string[];\n defaultUriMatch?: UriMatchType;\n disableAddLoginNotification?: boolean;\n disableAutoBiometricsPrompt?: boolean;\n disableAutoTotpCopy?: boolean;\n disableBadgeCounter?: boolean;\n disableChangedPasswordNotification?: boolean;\n disableContextMenuItem?: boolean;\n disableGa?: boolean;\n dontShowCardsCurrentTab?: boolean;\n dontShowIdentitiesCurrentTab?: boolean;\n enableAlwaysOnTop?: boolean;\n enableAutoFillOnPageLoad?: boolean;\n enableBiometric?: boolean;\n enableFullWidth?: boolean;\n enableGravitars?: boolean;\n environmentUrls: EnvironmentUrls = new EnvironmentUrls();\n equivalentDomains?: any;\n minimizeOnCopyToClipboard?: boolean;\n neverDomains?: { [id: string]: any };\n passwordGenerationOptions?: any;\n usernameGenerationOptions?: any;\n generatorOptions?: any;\n pinProtected?: EncryptionPair = new EncryptionPair();\n protectedPin?: string;\n settings?: any; // TODO: Merge whatever is going on here into the AccountSettings model properly\n vaultTimeout?: number;\n vaultTimeoutAction?: string = \"lock\";\n}\n\nexport class AccountTokens {\n accessToken?: string;\n decodedToken?: any;\n refreshToken?: string;\n securityStamp?: string;\n}\n\nexport class Account {\n data?: AccountData = new AccountData();\n keys?: AccountKeys = new AccountKeys();\n profile?: AccountProfile = new AccountProfile();\n settings?: AccountSettings = new AccountSettings();\n tokens?: AccountTokens = new AccountTokens();\n\n constructor(init: Partial) {\n Object.assign(this, {\n data: {\n ...new AccountData(),\n ...init?.data,\n },\n keys: {\n ...new AccountKeys(),\n ...init?.keys,\n },\n profile: {\n ...new AccountProfile(),\n ...init?.profile,\n },\n settings: {\n ...new AccountSettings(),\n ...init?.settings,\n },\n tokens: {\n ...new AccountTokens(),\n ...init?.tokens,\n },\n });\n }\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { Utils } from \"../../misc/utils\";\nimport { AttachmentData } from \"../data/attachmentData\";\nimport { AttachmentView } from \"../view/attachmentView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string; // Readable size, ex: \"4.2 KB\" or \"1.43 GB\"\n key: EncString;\n fileName: EncString;\n\n constructor(obj?: AttachmentData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n },\n [\"id\", \"url\", \"sizeName\"]\n );\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new AttachmentView(this),\n {\n fileName: null,\n },\n orgId,\n encKey\n );\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(\n this,\n a,\n {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n },\n [\"id\", \"url\", \"sizeName\"]\n );\n return a;\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\nimport { Utils } from \"../../misc/utils\";\n\nexport class AuthResult {\n captchaSiteKey = \"\";\n resetMasterPassword = false;\n forcePasswordReset = false;\n twoFactorProviders: Map = null;\n\n get requiresCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n get requiresTwoFactor() {\n return this.twoFactorProviders != null;\n }\n}\n","import { CardData } from \"../data/cardData\";\nimport { CardView } from \"../view/cardView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Card extends Domain {\n cardholderName: EncString;\n brand: EncString;\n number: EncString;\n expMonth: EncString;\n expYear: EncString;\n code: EncString;\n\n constructor(obj?: CardData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new CardView(),\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n orgId,\n encKey\n );\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CipherData } from \"../data/cipherData\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { Attachment } from \"./attachment\";\nimport { Card } from \"./card\";\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { Field } from \"./field\";\nimport { Identity } from \"./identity\";\nimport { Login } from \"./login\";\nimport { Password } from \"./password\";\nimport { SecureNote } from \"./secureNote\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: EncString;\n notes: EncString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(obj?: CipherData, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n },\n [\"id\", \"organizationId\", \"folderId\"]\n );\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n this.reprompt = obj.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map((a) => new Attachment(a));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map((f) => new Field(f));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map((ph) => new Password(ph));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(\n model,\n {\n name: null,\n notes: null,\n },\n this.organizationId,\n encKey\n );\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise\n .then(() => {\n return attachment.decrypt(orgId, encKey);\n })\n .then((decAttachment) => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise\n .then(() => {\n return field.decrypt(orgId, encKey);\n })\n .then((decField) => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise\n .then(() => {\n return ph.decrypt(orgId, encKey);\n })\n .then((decPh) => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n c.reprompt = this.reprompt;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map((f) => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map((a) => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map((ph) => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","import { CollectionData } from \"../data/collectionData\";\nimport { CollectionView } from \"../view/collectionView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: EncString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n },\n [\"id\", \"organizationId\", \"externalId\", \"readOnly\", \"hidePasswords\"]\n );\n }\n\n decrypt(): Promise {\n return this.decryptObj(\n new CollectionView(this),\n {\n name: null,\n },\n this.organizationId\n );\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { View } from \"../view/view\";\n\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport default class Domain {\n protected buildDomainModel(\n domain: D,\n dataObj: any,\n map: any,\n notEncList: any[] = []\n ) {\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[map[prop] || prop];\n if (notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new EncString(objProp) : null;\n }\n }\n }\n protected buildDataModel(\n domain: D,\n dataObj: any,\n map: any,\n notEncStringList: any[] = []\n ) {\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[map[prop] || prop];\n if (notEncStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as EncString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(\n viewModel: T,\n map: any,\n orgId: string,\n key: SymmetricCryptoKey = null\n ): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n (function (theProp) {\n const p = Promise.resolve()\n .then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n })\n .then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","export class EncArrayBuffer {\n constructor(public buffer: ArrayBuffer) {}\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { EncryptionType } from \"../../enums/encryptionType\";\nimport { Utils } from \"../../misc/utils\";\n\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(\n encryptedStringOrType: string | EncryptionType,\n data?: string,\n iv?: string,\n mac?: string\n ) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + \".\" + iv + \"|\" + data;\n } else {\n this.encryptedString = encType + \".\" + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += \"|\" + mac;\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split(\".\");\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split(\"|\");\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split(\"|\");\n this.encryptionType =\n encPieces.length === 3\n ? EncryptionType.AesCbc128_HmacSha256_B64\n : EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = \"[error: cannot decrypt]\";\n }\n return this.decryptedValue;\n }\n}\n","import { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string = null;\n api: string = null;\n identity: string = null;\n icons: string = null;\n notifications: string = null;\n events: string = null;\n webVault: string = null;\n keyConnector: string = null;\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { FieldData } from \"../data/fieldData\";\nimport { FieldView } from \"../view/fieldView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Field extends Domain {\n name: EncString;\n value: EncString;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(obj?: FieldData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.linkedId = obj.linkedId;\n this.buildDomainModel(\n this,\n obj,\n {\n name: null,\n value: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new FieldView(this),\n {\n name: null,\n value: null,\n },\n orgId,\n encKey\n );\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(\n this,\n f,\n {\n name: null,\n value: null,\n type: null,\n linkedId: null,\n },\n [\"type\", \"linkedId\"]\n );\n return f;\n }\n}\n","import { FolderData } from \"../data/folderData\";\nimport { FolderView } from \"../view/folderView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\n\nexport class Folder extends Domain {\n id: string;\n name: EncString;\n revisionDate: Date;\n\n constructor(obj?: FolderData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n name: null,\n },\n [\"id\"]\n );\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(\n new FolderView(this),\n {\n name: null,\n },\n null\n );\n }\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import { StateVersion } from \"../../enums/stateVersion\";\nimport { ThemeType } from \"../../enums/themeType\";\n\nimport { EnvironmentUrls } from \"./environmentUrls\";\nimport { WindowState } from \"./windowState\";\n\nexport class GlobalState {\n enableAlwaysOnTop?: boolean;\n installedVersion?: string;\n locale?: string;\n organizationInvitation?: any;\n ssoCodeVerifier?: string;\n ssoOrganizationIdentifier?: string;\n ssoState?: string;\n rememberedEmail?: string;\n theme?: ThemeType = ThemeType.System;\n window?: WindowState = new WindowState();\n twoFactorToken?: string;\n disableFavicon?: boolean;\n biometricAwaitingAcceptance?: boolean;\n biometricFingerprintValidated?: boolean;\n vaultTimeout?: number;\n vaultTimeoutAction?: string;\n loginRedirect?: any;\n mainWindowSize?: number;\n enableBiometrics?: boolean;\n biometricText?: string;\n noAutoPromptBiometrics?: boolean;\n noAutoPromptBiometricsText?: string;\n stateVersion: StateVersion = StateVersion.One;\n environmentUrls: EnvironmentUrls = new EnvironmentUrls();\n enableTray?: boolean;\n enableMinimizeToTray?: boolean;\n enableCloseToTray?: boolean;\n enableStartToTray?: boolean;\n openAtLogin?: boolean;\n alwaysShowDock?: boolean;\n enableBrowserIntegration?: boolean;\n enableBrowserIntegrationFingerprint?: boolean;\n}\n","import { IdentityData } from \"../data/identityData\";\nimport { IdentityView } from \"../view/identityView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Identity extends Domain {\n title: EncString;\n firstName: EncString;\n middleName: EncString;\n lastName: EncString;\n address1: EncString;\n address2: EncString;\n address3: EncString;\n city: EncString;\n state: EncString;\n postalCode: EncString;\n country: EncString;\n company: EncString;\n email: EncString;\n phone: EncString;\n ssn: EncString;\n username: EncString;\n passportNumber: EncString;\n licenseNumber: EncString;\n\n constructor(obj?: IdentityData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new IdentityView(),\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n orgId,\n encKey\n );\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { CipherView } from \"../view/cipherView\";\nimport { CollectionView } from \"../view/collectionView\";\nimport { FolderView } from \"../view/folderView\";\n\nexport class ImportResult {\n success = false;\n missingPassword = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","import { AuthenticationType } from \"../../enums/authenticationType\";\nimport { TokenRequestTwoFactor } from \"../request/identityToken/tokenRequestTwoFactor\";\n\nexport class PasswordLogInCredentials {\n readonly type = AuthenticationType.Password;\n\n constructor(\n public email: string,\n public masterPassword: string,\n public captchaToken?: string,\n public twoFactor?: TokenRequestTwoFactor\n ) {}\n}\n\nexport class SsoLogInCredentials {\n readonly type = AuthenticationType.Sso;\n\n constructor(\n public code: string,\n public codeVerifier: string,\n public redirectUrl: string,\n public orgId: string,\n public twoFactor?: TokenRequestTwoFactor\n ) {}\n}\n\nexport class ApiLogInCredentials {\n readonly type = AuthenticationType.Api;\n\n constructor(public clientId: string, public clientSecret: string) {}\n}\n","import { LoginData } from \"../data/loginData\";\nimport { LoginView } from \"../view/loginView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { LoginUri } from \"./loginUri\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: EncString;\n password: EncString;\n passwordRevisionDate?: Date;\n totp: EncString;\n autofillOnPageLoad: boolean;\n\n constructor(obj?: LoginData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate =\n obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.autofillOnPageLoad = obj.autofillOnPageLoad;\n this.buildDomainModel(\n this,\n obj,\n {\n username: null,\n password: null,\n totp: null,\n },\n []\n );\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach((u) => {\n this.uris.push(new LoginUri(u));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new LoginView(this),\n {\n username: null,\n password: null,\n totp: null,\n },\n orgId,\n encKey\n );\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate =\n this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n l.autofillOnPageLoad = this.autofillOnPageLoad;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach((u) => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { LoginUriData } from \"../data/loginUriData\";\nimport { LoginUriView } from \"../view/loginUriView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class LoginUri extends Domain {\n uri: EncString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(\n this,\n obj,\n {\n uri: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new LoginUriView(this),\n {\n uri: null,\n },\n orgId,\n encKey\n );\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(\n this,\n u,\n {\n uri: null,\n match: null,\n },\n [\"match\"]\n );\n return u;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity = 0;\n minLength = 0;\n requireUpper = false;\n requireLower = false;\n requireNumbers = false;\n requireSpecial = false;\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { Permissions } from \"../../enums/permissions\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\nimport { OrganizationData } from \"../data/organizationData\";\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useSso = obj.useSso;\n this.useKeyConnector = obj.useKeyConnector;\n this.useResetPassword = obj.useResetPassword;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n this.resetPasswordEnrolled = obj.resetPasswordEnrolled;\n this.userId = obj.userId;\n this.hasPublicAndPrivateKeys = obj.hasPublicAndPrivateKeys;\n this.providerId = obj.providerId;\n this.providerName = obj.providerName;\n this.isProviderUser = obj.isProviderUser;\n this.familySponsorshipFriendlyName = obj.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = obj.familySponsorshipAvailable;\n this.planProductType = obj.planProductType;\n this.keyConnectorEnabled = obj.keyConnectorEnabled;\n this.keyConnectorUrl = obj.keyConnectorUrl;\n this.familySponsorshipLastSyncDate = obj.familySponsorshipLastSyncDate;\n this.familySponsorshipValidUntil = obj.familySponsorshipValidUntil;\n this.familySponsorshipToDelete = obj.familySponsorshipToDelete;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return (\n this.type === OrganizationUserType.Manager ||\n this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin\n );\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner || this.isProviderUser;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canCreateNewCollections() {\n return (\n this.isManager ||\n (this.permissions.createNewCollections ?? this.permissions.manageAllCollections)\n );\n }\n\n get canEditAnyCollection() {\n return (\n this.isAdmin || (this.permissions.editAnyCollection ?? this.permissions.manageAllCollections)\n );\n }\n\n get canDeleteAnyCollection() {\n return (\n this.isAdmin ||\n (this.permissions.deleteAnyCollection ?? this.permissions.manageAllCollections)\n );\n }\n\n get canViewAllCollections() {\n return this.canCreateNewCollections || this.canEditAnyCollection || this.canDeleteAnyCollection;\n }\n\n get canEditAssignedCollections() {\n return (\n this.isManager ||\n (this.permissions.editAssignedCollections ?? this.permissions.manageAssignedCollections)\n );\n }\n\n get canDeleteAssignedCollections() {\n return (\n this.isManager ||\n (this.permissions.deleteAssignedCollections ?? this.permissions.manageAssignedCollections)\n );\n }\n\n get canViewAssignedCollections() {\n return this.canDeleteAssignedCollections || this.canEditAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n\n get canManageUsersPassword() {\n return this.isAdmin || this.permissions.manageResetPassword;\n }\n\n get isExemptFromPolicies() {\n return this.canManagePolicies;\n }\n\n hasAnyPermission(permissions: Permissions[]) {\n const specifiedPermissions =\n (permissions.includes(Permissions.AccessEventLogs) && this.canAccessEventLogs) ||\n (permissions.includes(Permissions.AccessImportExport) && this.canAccessImportExport) ||\n (permissions.includes(Permissions.AccessReports) && this.canAccessReports) ||\n (permissions.includes(Permissions.CreateNewCollections) && this.canCreateNewCollections) ||\n (permissions.includes(Permissions.EditAnyCollection) && this.canEditAnyCollection) ||\n (permissions.includes(Permissions.DeleteAnyCollection) && this.canDeleteAnyCollection) ||\n (permissions.includes(Permissions.EditAssignedCollections) &&\n this.canEditAssignedCollections) ||\n (permissions.includes(Permissions.DeleteAssignedCollections) &&\n this.canDeleteAssignedCollections) ||\n (permissions.includes(Permissions.ManageGroups) && this.canManageGroups) ||\n (permissions.includes(Permissions.ManageOrganization) && this.isOwner) ||\n (permissions.includes(Permissions.ManagePolicies) && this.canManagePolicies) ||\n (permissions.includes(Permissions.ManageUsers) && this.canManageUsers) ||\n (permissions.includes(Permissions.ManageUsersPassword) && this.canManageUsersPassword) ||\n (permissions.includes(Permissions.ManageSso) && this.canManageSso) ||\n (permissions.includes(Permissions.ManageBilling) && this.canManageBilling);\n\n return specifiedPermissions && (this.enabled || this.isOwner);\n }\n\n get canManageBilling() {\n return this.isOwner && (this.isProviderUser || !this.hasProvider);\n }\n\n get hasProvider() {\n return this.providerId != null || this.providerName != null;\n }\n}\n","import { PasswordHistoryData } from \"../data/passwordHistoryData\";\nimport { PasswordHistoryView } from \"../view/passwordHistoryView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Password extends Domain {\n password: EncString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n });\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new PasswordHistoryView(this),\n {\n password: null,\n },\n orgId,\n encKey\n );\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType = \"\";\n minLength = 0;\n useUppercase = false;\n useLowercase = false;\n useNumbers = false;\n numberCount = 0;\n useSpecial = false;\n specialCount = 0;\n minNumberWords = 0;\n capitalize = false;\n includeNumber = false;\n\n inEffect() {\n return (\n this.defaultType !== \"\" ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber\n );\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\nimport { PolicyData } from \"../data/policyData\";\n\nimport Domain from \"./domainBase\";\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { ProviderData } from \"../data/providerData\";\n\nexport class Provider {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(obj?: ProviderData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.userId = obj.userId;\n this.useEvents = obj.useEvents;\n }\n\n get canAccess() {\n if (this.isProviderAdmin) {\n return true;\n }\n return this.enabled && this.status === ProviderUserStatusType.Confirmed;\n }\n\n get canCreateOrganizations() {\n return this.enabled && this.isProviderAdmin;\n }\n\n get canManageUsers() {\n return this.isProviderAdmin;\n }\n\n get canAccessEventLogs() {\n return this.isProviderAdmin;\n }\n\n get isProviderAdmin() {\n return this.type === ProviderUserType.ProviderAdmin;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class ResetPasswordPolicyOptions extends Domain {\n autoEnrollEnabled = false;\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNoteData } from \"../data/secureNoteData\";\nimport { SecureNoteView } from \"../view/secureNoteView\";\n\nimport Domain from \"./domainBase\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { SendType } from \"../../enums/sendType\";\nimport { Utils } from \"../../misc/utils\";\nimport { SendData } from \"../data/sendData\";\nimport { SendView } from \"../view/sendView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SendFile } from \"./sendFile\";\nimport { SendText } from \"./sendText\";\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n type: SendType;\n name: EncString;\n notes: EncString;\n file: SendFile;\n text: SendText;\n key: EncString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(obj?: SendData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n accessId: null,\n name: null,\n notes: null,\n key: null,\n },\n [\"id\", \"accessId\"]\n );\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n this.hideEmail = obj.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(\n model,\n {\n name: null,\n notes: null,\n },\n null,\n model.cryptoKey\n );\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendAccessResponse } from \"../response/sendAccessResponse\";\nimport { SendAccessView } from \"../view/sendAccessView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SendFile } from \"./sendFile\";\nimport { SendText } from \"./sendText\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: EncString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n },\n [\"id\", \"expirationDate\", \"creatorIdentifier\"]\n );\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(\n model,\n {\n name: null,\n },\n null,\n key\n );\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendFileData } from \"../data/sendFileData\";\nimport { SendFileView } from \"../view/sendFileView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: EncString;\n\n constructor(obj?: SendFileData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n sizeName: null,\n fileName: null,\n },\n [\"id\", \"sizeName\"]\n );\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new SendFileView(this),\n {\n fileName: null,\n },\n null,\n key\n );\n return view;\n }\n}\n","import { SendTextData } from \"../data/sendTextData\";\nimport { SendTextView } from \"../view/sendTextView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendText extends Domain {\n text: EncString;\n hidden: boolean;\n\n constructor(obj?: SendTextData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(\n this,\n obj,\n {\n text: null,\n },\n []\n );\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new SendTextView(this),\n {\n text: null,\n },\n null,\n key\n );\n }\n}\n","import { CipherView } from \"../view/cipherView\";\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) {}\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(\n url,\n setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL)\n );\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) {}\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter((cipher) => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort(\n (x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf()\n );\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","import { Account } from \"./account\";\nimport { GlobalState } from \"./globalState\";\n\nexport class State<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n accounts: { [userId: string]: TAccount } = {};\n globals: TGlobalState;\n activeUserId: string;\n authenticatedAccounts: string[] = [];\n accountActivity: { [userId: string]: number } = {};\n\n constructor(globals: TGlobalState) {\n this.globals = globals;\n }\n}\n","import { EncryptionType } from \"../../enums/encryptionType\";\nimport { Utils } from \"../../misc/utils\";\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error(\"Must provide key\");\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error(\"Unable to determine encType.\");\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error(\"Unsupported encType/key length.\");\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","export class WindowState {\n width?: number;\n height?: number;\n isMaximized?: boolean;\n // TODO: displayBounds is an Electron.Rectangle.\n // We need to establish some kind of client-specific global state, similiar to the way we already extend a base Account.\n displayBounds: any;\n x?: number;\n y?: number;\n}\n","import { Card as CardDomain } from \"../domain/card\";\nimport { EncString } from \"../domain/encString\";\nimport { CardView } from \"../view/cardView\";\n\nexport class CardExport {\n static template(): CardExport {\n const req = new CardExport();\n req.cardholderName = \"John Doe\";\n req.brand = \"visa\";\n req.number = \"4242424242424242\";\n req.expMonth = \"04\";\n req.expYear = \"2023\";\n req.code = \"123\";\n return req;\n }\n\n static toView(req: CardExport, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: CardExport, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new EncString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new EncString(req.brand) : null;\n domain.number = req.number != null ? new EncString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new EncString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new EncString(req.expYear) : null;\n domain.code = req.code != null ? new EncString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { Cipher as CipherDomain } from \"../domain/cipher\";\nimport { EncString } from \"../domain/encString\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { CardExport } from \"./cardExport\";\nimport { FieldExport } from \"./fieldExport\";\nimport { IdentityExport } from \"./identityExport\";\nimport { LoginExport } from \"./loginExport\";\nimport { SecureNoteExport } from \"./secureNoteExport\";\n\nexport class CipherExport {\n static template(): CipherExport {\n const req = new CipherExport();\n req.organizationId = null;\n req.collectionIds = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = \"Item name\";\n req.notes = \"Some notes about this item.\";\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n req.reprompt = CipherRepromptType.None;\n return req;\n }\n\n static toView(req: CipherExport, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n if (view.collectionIds || req.collectionIds) {\n const set = new Set((view.collectionIds ?? []).concat(req.collectionIds ?? []));\n view.collectionIds = Array.from(set.values());\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n view.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n view.fields = req.fields.map((f) => FieldExport.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = LoginExport.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNoteExport.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = CardExport.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = IdentityExport.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: CipherExport, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.notes = req.notes != null ? new EncString(req.notes) : null;\n domain.favorite = req.favorite;\n domain.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n domain.fields = req.fields.map((f) => FieldExport.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = LoginExport.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNoteExport.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = CardExport.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = IdentityExport.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n collectionIds: string[];\n name: string;\n notes: string;\n favorite: boolean;\n fields: FieldExport[];\n login: LoginExport;\n secureNote: SecureNoteExport;\n card: CardExport;\n identity: IdentityExport;\n reprompt: CipherRepromptType;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.reprompt = o.reprompt;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map((f) => new FieldExport(f));\n } else {\n this.fields = o.fields.map((f) => new FieldExport(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new LoginExport(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteExport(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardExport(o.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityExport(o.identity);\n break;\n }\n }\n}\n","import { Cipher as CipherDomain } from \"../domain/cipher\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { CipherExport } from \"./cipherExport\";\n\nexport class CipherWithIdExport extends CipherExport {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection as CollectionDomain } from \"../domain/collection\";\nimport { EncString } from \"../domain/encString\";\nimport { CollectionView } from \"../view/collectionView\";\n\nexport class CollectionExport {\n static template(): CollectionExport {\n const req = new CollectionExport();\n req.organizationId = \"00000000-0000-0000-0000-000000000000\";\n req.name = \"Collection name\";\n req.externalId = null;\n return req;\n }\n\n static toView(req: CollectionExport, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: CollectionExport, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { Collection as CollectionDomain } from \"../domain/collection\";\nimport { CollectionView } from \"../view/collectionView\";\n\nimport { CollectionExport } from \"./collectionExport\";\n\nexport class CollectionWithIdExport extends CollectionExport {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { EventType } from \"../../enums/eventType\";\nimport { EventView } from \"../view/eventView\";\n\nexport class EventExport {\n message: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: string;\n installationId: string;\n\n constructor(event: EventView) {\n this.message = event.humanReadableMessage;\n this.appIcon = event.appIcon;\n this.appName = event.appName;\n this.userId = event.userId;\n this.userName = event.userName;\n this.userEmail = event.userEmail;\n this.date = event.date;\n this.ip = event.ip;\n this.type = EventType[event.type];\n this.installationId = event.installationId;\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { EncString } from \"../domain/encString\";\nimport { Field as FieldDomain } from \"../domain/field\";\nimport { FieldView } from \"../view/fieldView\";\n\nexport class FieldExport {\n static template(): FieldExport {\n const req = new FieldExport();\n req.name = \"Field name\";\n req.value = \"Some value\";\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: FieldExport, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n view.linkedId = req.linkedId;\n return view;\n }\n\n static toDomain(req: FieldExport, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new EncString(req.value) : null;\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.linkedId = req.linkedId;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n this.linkedId = o.linkedId;\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Folder as FolderDomain } from \"../domain/folder\";\nimport { FolderView } from \"../view/folderView\";\n\nexport class FolderExport {\n static template(): FolderExport {\n const req = new FolderExport();\n req.name = \"Folder name\";\n return req;\n }\n\n static toView(req: FolderExport, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: FolderExport, domain = new FolderDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { Folder as FolderDomain } from \"../domain/folder\";\nimport { FolderView } from \"../view/folderView\";\n\nimport { FolderExport } from \"./folderExport\";\n\nexport class FolderWithIdExport extends FolderExport {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Identity as IdentityDomain } from \"../domain/identity\";\nimport { IdentityView } from \"../view/identityView\";\n\nexport class IdentityExport {\n static template(): IdentityExport {\n const req = new IdentityExport();\n req.title = \"Mr\";\n req.firstName = \"John\";\n req.middleName = \"William\";\n req.lastName = \"Doe\";\n req.address1 = \"123 Any St\";\n req.address2 = \"Apt #123\";\n req.address3 = null;\n req.city = \"New York\";\n req.state = \"NY\";\n req.postalCode = \"10001\";\n req.country = \"US\";\n req.company = \"Acme Inc.\";\n req.email = \"john@company.com\";\n req.phone = \"5555551234\";\n req.ssn = \"000-123-4567\";\n req.username = \"jdoe\";\n req.passportNumber = \"US-123456789\";\n req.licenseNumber = \"D123-12-123-12333\";\n return req;\n }\n\n static toView(req: IdentityExport, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: IdentityExport, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new EncString(req.title) : null;\n domain.firstName = req.firstName != null ? new EncString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new EncString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new EncString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new EncString(req.address1) : null;\n domain.address2 = req.address2 != null ? new EncString(req.address2) : null;\n domain.address3 = req.address3 != null ? new EncString(req.address3) : null;\n domain.city = req.city != null ? new EncString(req.city) : null;\n domain.state = req.state != null ? new EncString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new EncString(req.postalCode) : null;\n domain.country = req.country != null ? new EncString(req.country) : null;\n domain.company = req.company != null ? new EncString(req.company) : null;\n domain.email = req.email != null ? new EncString(req.email) : null;\n domain.phone = req.phone != null ? new EncString(req.phone) : null;\n domain.ssn = req.ssn != null ? new EncString(req.ssn) : null;\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new EncString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new EncString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Login as LoginDomain } from \"../domain/login\";\nimport { LoginView } from \"../view/loginView\";\n\nimport { LoginUriExport } from \"./loginUriExport\";\n\nexport class LoginExport {\n static template(): LoginExport {\n const req = new LoginExport();\n req.uris = [];\n req.username = \"jdoe\";\n req.password = \"myp@ssword123\";\n req.totp = \"JBSWY3DPEHPK3PXP\";\n return req;\n }\n\n static toView(req: LoginExport, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map((u) => LoginUriExport.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: LoginExport, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map((u) => LoginUriExport.toDomain(u));\n }\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.password = req.password != null ? new EncString(req.password) : null;\n domain.totp = req.totp != null ? new EncString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUriExport[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map((u) => new LoginUriExport(u));\n } else {\n this.uris = o.uris.map((u) => new LoginUriExport(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { EncString } from \"../domain/encString\";\nimport { LoginUri as LoginUriDomain } from \"../domain/loginUri\";\nimport { LoginUriView } from \"../view/loginUriView\";\n\nexport class LoginUriExport {\n static template(): LoginUriExport {\n const req = new LoginUriExport();\n req.uri = \"https://google.com\";\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUriExport, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUriExport, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new EncString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNote as SecureNoteDomain } from \"../domain/secureNote\";\nimport { SecureNoteView } from \"../view/secureNoteView\";\n\nexport class SecureNoteExport {\n static template(): SecureNoteExport {\n const req = new SecureNoteExport();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNoteExport, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNoteExport, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { KdfType } from \"../../../enums/kdfType\";\nimport { KeysRequest } from \"../keysRequest\";\n\nexport class SetKeyConnectorKeyRequest {\n key: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(\n key: string,\n kdf: KdfType,\n kdfIterations: number,\n orgIdentifier: string,\n keys: KeysRequest\n ) {\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","export class VerifyOTPRequest {\n OTP: string;\n\n constructor(OTP: string) {\n this.OTP = OTP;\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n fileSize: number;\n adminRequest: boolean;\n}\n","export class BillingSyncConfigRequest {\n constructor(private billingSyncKey: string) {}\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherWithIdRequest } from \"./cipherWithIdRequest\";\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach((c) => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CardApi } from \"../api/cardApi\";\nimport { FieldApi } from \"../api/fieldApi\";\nimport { IdentityApi } from \"../api/identityApi\";\nimport { LoginApi } from \"../api/loginApi\";\nimport { LoginUriApi } from \"../api/loginUriApi\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\nimport { Cipher } from \"../domain/cipher\";\n\nimport { AttachmentRequest } from \"./attachmentRequest\";\nimport { PasswordHistoryRequest } from \"./passwordHistoryRequest\";\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string };\n attachments2: { [id: string]: AttachmentRequest };\n lastKnownRevisionDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n this.reprompt = cipher.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate =\n cipher.login.passwordRevisionDate != null\n ? cipher.login.passwordRevisionDate.toISOString()\n : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n this.login.autofillOnPageLoad = cipher.login.autofillOnPageLoad;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map((u) => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName =\n cipher.card.cardholderName != null ? cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth =\n cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear =\n cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title =\n cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName =\n cipher.identity.firstName != null ? cipher.identity.firstName.encryptedString : null;\n this.identity.middleName =\n cipher.identity.middleName != null ? cipher.identity.middleName.encryptedString : null;\n this.identity.lastName =\n cipher.identity.lastName != null ? cipher.identity.lastName.encryptedString : null;\n this.identity.address1 =\n cipher.identity.address1 != null ? cipher.identity.address1.encryptedString : null;\n this.identity.address2 =\n cipher.identity.address2 != null ? cipher.identity.address2.encryptedString : null;\n this.identity.address3 =\n cipher.identity.address3 != null ? cipher.identity.address3.encryptedString : null;\n this.identity.city =\n cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state =\n cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode =\n cipher.identity.postalCode != null ? cipher.identity.postalCode.encryptedString : null;\n this.identity.country =\n cipher.identity.country != null ? cipher.identity.country.encryptedString : null;\n this.identity.company =\n cipher.identity.company != null ? cipher.identity.company.encryptedString : null;\n this.identity.email =\n cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone =\n cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn =\n cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username =\n cipher.identity.username != null ? cipher.identity.username.encryptedString : null;\n this.identity.passportNumber =\n cipher.identity.passportNumber != null\n ? cipher.identity.passportNumber.encryptedString\n : null;\n this.identity.licenseNumber =\n cipher.identity.licenseNumber != null\n ? cipher.identity.licenseNumber.encryptedString\n : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map((f) => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n field.linkedId = f.linkedId;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach((ph) => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach((attachment) => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Collection } from \"../domain/collection\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { DeviceType } from \"../../enums/deviceType\";\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","import { EmailTokenRequest } from \"./emailTokenRequest\";\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class EmailTokenRequest extends SecretVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { Folder } from \"../domain/folder\";\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import { Folder } from \"../domain/folder\";\n\nimport { FolderRequest } from \"./folderRequest\";\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class ApiTokenRequest extends TokenRequest {\n constructor(\n public clientId: string,\n public clientSecret: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken() {\n const obj = super.toIdentityToken(this.clientId);\n\n obj.scope = this.clientId.startsWith(\"organization\") ? \"api.organization\" : \"api\";\n obj.grant_type = \"client_credentials\";\n obj.client_secret = this.clientSecret;\n\n return obj;\n }\n}\n","import { ClientType } from \"../../../enums/clientType\";\nimport { Utils } from \"../../../misc/utils\";\nimport { CaptchaProtectedRequest } from \"../captchaProtectedRequest\";\nimport { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class PasswordTokenRequest extends TokenRequest implements CaptchaProtectedRequest {\n constructor(\n public email: string,\n public masterPasswordHash: string,\n public captchaResponse: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken(clientId: ClientType) {\n const obj = super.toIdentityToken(clientId);\n\n obj.grant_type = \"password\";\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n\n if (this.captchaResponse != null) {\n obj.captchaResponse = this.captchaResponse;\n }\n\n return obj;\n }\n\n alterIdentityTokenHeaders(headers: Headers) {\n headers.set(\"Auth-Email\", Utils.fromUtf8ToUrlB64(this.email));\n }\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class SsoTokenRequest extends TokenRequest {\n constructor(\n public code: string,\n public codeVerifier: string,\n public redirectUri: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken(clientId: string) {\n const obj = super.toIdentityToken(clientId);\n\n obj.grant_type = \"authorization_code\";\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n\n return obj;\n }\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport abstract class TokenRequest {\n protected device?: DeviceRequest;\n\n constructor(protected twoFactor: TokenRequestTwoFactor, device?: DeviceRequest) {\n this.device = device != null ? device : null;\n }\n\n // eslint-disable-next-line\n alterIdentityTokenHeaders(headers: Headers) {\n // Implemented in subclass if required\n }\n\n setTwoFactor(twoFactor: TokenRequestTwoFactor) {\n this.twoFactor = twoFactor;\n }\n\n protected toIdentityToken(clientId: string) {\n const obj: any = {\n scope: \"api offline_access\",\n client_id: clientId,\n };\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.twoFactor.token && this.twoFactor.provider != null) {\n obj.twoFactorToken = this.twoFactor.token;\n obj.twoFactorProvider = this.twoFactor.provider;\n obj.twoFactorRemember = this.twoFactor.remember ? \"1\" : \"0\";\n }\n\n return obj;\n }\n}\n","import { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nexport class TokenRequestTwoFactor {\n constructor(\n public provider: TwoFactorProviderType = null,\n public token: string = null,\n public remember: boolean = false\n ) {}\n}\n","import { CipherRequest } from \"./cipherRequest\";\nimport { FolderRequest } from \"./folderRequest\";\nimport { KvpRequest } from \"./kvpRequest\";\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from \"./cipherRequest\";\nimport { CollectionRequest } from \"./collectionRequest\";\nimport { KvpRequest } from \"./kvpRequest\";\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { PasswordRequest } from \"./passwordRequest\";\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class KeyConnectorUserKeyRequest {\n key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { PlanSponsorshipType } from \"../../../enums/planSponsorshipType\";\n\nexport class OrganizationSponsorshipRedeemRequest {\n planSponsorshipType: PlanSponsorshipType;\n sponsoredOrganizationId: string;\n}\n","import { SsoConfigApi } from \"../../api/ssoConfigApi\";\n\nexport class OrganizationSsoRequest {\n enabled = false;\n data: SsoConfigApi;\n}\n","import { OrganizationApiKeyType } from \"../../enums/organizationApiKeyType\";\n\nimport { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class OrganizationApiKeyRequest extends SecretVerificationRequest {\n type: OrganizationApiKeyType = OrganizationApiKeyType.Default;\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\n\nimport { BillingSyncConfigRequest } from \"./billingSyncConfigRequest\";\n\n/**API request config types for OrganizationConnectionRequest */\nexport type OrganizationConnectionRequestConfigs = BillingSyncConfigRequest;\n\nexport class OrganizationConnectionRequest {\n constructor(\n public organizationId: string,\n public type: OrganizationConnectionType,\n public enabled: boolean,\n public config: OrganizationConnectionRequestConfigs\n ) {}\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { PlanType } from \"../../enums/planType\";\n\nimport { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n keys: OrganizationKeysRequest;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n maxAutoscaleSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { KeysRequest } from \"./keysRequest\";\n\nexport class OrganizationKeysRequest extends KeysRequest {\n constructor(publicKey: string, encryptedPrivateKey: string) {\n super(publicKey, encryptedPrivateKey);\n }\n}\n","export class OrganizationSubscriptionUpdateRequest {\n constructor(public seatAdjustment: number, public maxAutoscaleSeats?: number) {}\n}\n","import { TaxInfoUpdateRequest } from \"./taxInfoUpdateRequest\";\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","import { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n keys: OrganizationKeysRequest;\n}\n","import { PlanType } from \"../../enums/planType\";\n\nimport { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n keys: OrganizationKeysRequest;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","type OrganizationUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class OrganizationUserBulkConfirmRequest {\n keys: OrganizationUserBulkRequestEntry[];\n\n constructor(keys: OrganizationUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","export class OrganizationUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserResetPasswordEnrollmentRequest {\n resetPasswordKey: string;\n}\n","export class OrganizationUserResetPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","import { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class PasswordRequest extends SecretVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../request/organizationTaxInfoUpdateRequest\";\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","import { PolicyType } from \"../../enums/policyType\";\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","export class ProviderAddOrganizationRequest {\n organizationId: string;\n key: string;\n}\n","import { OrganizationCreateRequest } from \"../organizationCreateRequest\";\n\nexport class ProviderOrganizationCreateRequest {\n constructor(\n public clientOwnerEmail: string,\n public organizationCreateRequest: OrganizationCreateRequest\n ) {}\n}\n","export class ProviderSetupRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n token: string;\n key: string;\n}\n","export class ProviderUpdateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n}\n","export class ProviderUserAcceptRequest {\n token: string;\n}\n","type ProviderUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class ProviderUserBulkConfirmRequest {\n keys: ProviderUserBulkRequestEntry[];\n\n constructor(keys: ProviderUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","export class ProviderUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","export class ProviderUserConfirmRequest {\n key: string;\n}\n","import { ProviderUserType } from \"../../../enums/providerUserType\";\n\nexport class ProviderUserInviteRequest {\n emails: string[] = [];\n type: ProviderUserType;\n}\n","import { ProviderUserType } from \"../../../enums/providerUserType\";\n\nexport class ProviderUserUpdateRequest {\n type: ProviderUserType;\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { CaptchaProtectedRequest } from \"./captchaProtectedRequest\";\nimport { KeysRequest } from \"./keysRequest\";\nimport { ReferenceEventRequest } from \"./referenceEventRequest\";\n\nexport class RegisterRequest implements CaptchaProtectedRequest {\n masterPasswordHint: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n\n constructor(\n public email: string,\n public name: string,\n public masterPasswordHash: string,\n masterPasswordHint: string,\n public key: string,\n public kdf: KdfType,\n public kdfIterations: number,\n public referenceData: ReferenceEventRequest,\n public captchaResponse: string\n ) {\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","export class SecretVerificationRequest {\n masterPasswordHash: string;\n otp: string;\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\nimport { Send } from \"../domain/send\";\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n this.hideEmail = send.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { Send } from \"../domain/send\";\n\nimport { SendRequest } from \"./sendRequest\";\n\nexport class SendWithIdRequest extends SendRequest {\n id: string;\n\n constructor(send: Send) {\n super(send);\n this.id = send.id;\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { KeysRequest } from \"./keysRequest\";\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(\n masterPasswordHash: string,\n key: string,\n masterPasswordHint: string,\n kdf: KdfType,\n kdfIterations: number,\n orgIdentifier: string,\n keys: KeysRequest\n ) {\n this.masterPasswordHash = masterPasswordHash;\n this.key = key;\n this.masterPasswordHint = masterPasswordHint;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorEmailRequest extends SecretVerificationRequest {\n email: string;\n deviceIdentifier: string;\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorProviderRequest extends SecretVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorRecoveryRequest extends SecretVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import { CipherWithIdRequest } from \"./cipherWithIdRequest\";\nimport { FolderWithIdRequest } from \"./folderWithIdRequest\";\nimport { SendWithIdRequest } from \"./sendWithIdRequest\";\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n sends: SendWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = \"en-US\"; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { OrganizationUserResetPasswordRequest } from \"./organizationUserResetPasswordRequest\";\n\nexport class UpdateTempPasswordRequest extends OrganizationUserResetPasswordRequest {\n masterPasswordHint: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorAuthenticatorRequest extends SecretVerificationRequest {\n token: string;\n key: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorDuoRequest extends SecretVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorEmailRequest extends SecretVerificationRequest {\n token: string;\n email: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorWebAuthnDeleteRequest extends SecretVerificationRequest {\n id: number;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorWebAuthnRequest extends SecretVerificationRequest {\n deviceResponse: PublicKeyCredential;\n name: string;\n id: number;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorYubioOtpRequest extends SecretVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty(\"ApiKey\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.url = this.getResponseProperty(\"Url\");\n this.fileName = this.getResponseProperty(\"FileName\");\n this.key = this.getResponseProperty(\"Key\");\n this.size = this.getResponseProperty(\"Size\");\n this.sizeName = this.getResponseProperty(\"SizeName\");\n }\n}\n","import { FileUploadType } from \"../../enums/fileUploadType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\n\nexport class AttachmentUploadDataResponse extends BaseResponse {\n attachmentId: string;\n fileUploadType: FileUploadType;\n cipherResponse: CipherResponse;\n cipherMiniResponse: CipherResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.attachmentId = this.getResponseProperty(\"AttachmentId\");\n this.fileUploadType = this.getResponseProperty(\"FileUploadType\");\n const cipherResponse = this.getResponseProperty(\"CipherResponse\");\n const cipherMiniResponse = this.getResponseProperty(\"CipherMiniResponse\");\n this.cipherResponse = cipherResponse == null ? null : new CipherResponse(cipherResponse);\n this.cipherMiniResponse =\n cipherMiniResponse == null ? null : new CipherResponse(cipherMiniResponse);\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(\n propertyName: string,\n response: any = null,\n exactName = false\n ): any {\n if (propertyName == null || propertyName === \"\") {\n throw new Error(\"propertyName must not be null/empty.\");\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { BillingInvoiceResponse, BillingTransactionResponse } from \"./billingResponse\";\n\nexport class BillingHistoryResponse extends BaseResponse {\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const transactions = this.getResponseProperty(\"Transactions\");\n const invoices = this.getResponseProperty(\"Invoices\");\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n\n get hasNoHistory() {\n return this.invoices.length == 0 && this.transactions.length == 0;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { BillingSourceResponse } from \"./billingResponse\";\n\nexport class BillingPaymentResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty(\"Balance\");\n const paymentSource = this.getResponseProperty(\"PaymentSource\");\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n }\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { TransactionType } from \"../../enums/transactionType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty(\"Balance\");\n const paymentSource = this.getResponseProperty(\"PaymentSource\");\n const transactions = this.getResponseProperty(\"Transactions\");\n const invoices = this.getResponseProperty(\"Invoices\");\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.cardBrand = this.getResponseProperty(\"CardBrand\");\n this.description = this.getResponseProperty(\"Description\");\n this.needsVerification = this.getResponseProperty(\"NeedsVerification\");\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty(\"Url\");\n this.pdfUrl = this.getResponseProperty(\"PdfUrl\");\n this.number = this.getResponseProperty(\"Number\");\n this.paid = this.getResponseProperty(\"Paid\");\n this.date = this.getResponseProperty(\"Date\");\n this.amount = this.getResponseProperty(\"Amount\");\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty(\"CreatedDate\");\n this.amount = this.getResponseProperty(\"Amount\");\n this.refunded = this.getResponseProperty(\"Refunded\");\n this.partiallyRefunded = this.getResponseProperty(\"PartiallyRefunded\");\n this.refundedAmount = this.getResponseProperty(\"RefundedAmount\");\n this.type = this.getResponseProperty(\"Type\");\n this.paymentMethodType = this.getResponseProperty(\"PaymentMethodType\");\n this.details = this.getResponseProperty(\"Details\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty(\"AddedDate\");\n this.breachDate = this.getResponseProperty(\"BreachDate\");\n this.dataClasses = this.getResponseProperty(\"DataClasses\");\n this.description = this.getResponseProperty(\"Description\");\n this.domain = this.getResponseProperty(\"Domain\");\n this.isActive = this.getResponseProperty(\"IsActive\");\n this.isVerified = this.getResponseProperty(\"IsVerified\");\n this.logoPath = this.getResponseProperty(\"LogoPath\");\n this.modifiedDate = this.getResponseProperty(\"ModifiedDate\");\n this.name = this.getResponseProperty(\"Name\");\n this.pwnCount = this.getResponseProperty(\"PwnCount\");\n this.title = this.getResponseProperty(\"Title\");\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CardApi } from \"../api/cardApi\";\nimport { FieldApi } from \"../api/fieldApi\";\nimport { IdentityApi } from \"../api/identityApi\";\nimport { LoginApi } from \"../api/loginApi\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\n\nimport { AttachmentResponse } from \"./attachmentResponse\";\nimport { BaseResponse } from \"./baseResponse\";\nimport { PasswordHistoryResponse } from \"./passwordHistoryResponse\";\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.folderId = this.getResponseProperty(\"FolderId\") || null;\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.notes = this.getResponseProperty(\"Notes\");\n this.favorite = this.getResponseProperty(\"Favorite\") || false;\n this.edit = !!this.getResponseProperty(\"Edit\");\n if (this.getResponseProperty(\"ViewPassword\") == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty(\"ViewPassword\");\n }\n this.organizationUseTotp = this.getResponseProperty(\"OrganizationUseTotp\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n this.collectionIds = this.getResponseProperty(\"CollectionIds\");\n this.deletedDate = this.getResponseProperty(\"DeletedDate\");\n\n const login = this.getResponseProperty(\"Login\");\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty(\"Card\");\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty(\"Identity\");\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty(\"SecureNote\");\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty(\"Fields\");\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty(\"Attachments\");\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty(\"PasswordHistory\");\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n\n this.reprompt = this.getResponseProperty(\"Reprompt\") || CipherRepromptType.None;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.name = this.getResponseProperty(\"Name\");\n this.externalId = this.getResponseProperty(\"ExternalId\");\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty(\"ReadOnly\") || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty(\"Groups\");\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { GlobalDomainResponse } from \"./globalDomainResponse\";\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty(\"EquivalentDomains\");\n const globalEquivalentDomains = this.getResponseProperty(\"GlobalEquivalentDomains\");\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map(\n (d: any) => new GlobalDomainResponse(d)\n );\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { EmergencyAccessStatusType } from \"../../enums/emergencyAccessStatusType\";\nimport { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\nimport { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.granteeId = this.getResponseProperty(\"GranteeId\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.waitTimeDays = this.getResponseProperty(\"WaitTimeDays\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.grantorId = this.getResponseProperty(\"GrantorId\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.waitTimeDays = this.getResponseProperty(\"WaitTimeDays\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty(\"KeyEncrypted\");\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty(\"KeyEncrypted\");\n\n const ciphers = this.getResponseProperty(\"Ciphers\");\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import { Utils } from \"../../misc/utils\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[] };\n statusCode: number;\n captchaRequired: boolean;\n captchaSiteKey: string;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty(\"ErrorModel\");\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty(\"Message\", errorModel);\n this.validationErrors = this.getResponseProperty(\"ValidationErrors\", errorModel);\n this.captchaSiteKey = this.validationErrors?.HCaptcha_SiteKey?.[0];\n this.captchaRequired = !Utils.isNullOrWhitespace(this.captchaSiteKey);\n } else {\n if (status === 429) {\n this.message = \"Rate limit exceeded. Try again later.\";\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n // eslint-disable-next-line\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n // eslint-disable-next-line\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = \"\";\n if (key.indexOf(\"[\") > -1 && key.indexOf(\"]\") > -1) {\n const lastSep = key.lastIndexOf(\".\");\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + \": \";\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import { DeviceType } from \"../../enums/deviceType\";\nimport { EventType } from \"../../enums/eventType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n providerId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n providerUserId: string;\n providerOrganizationId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n installationId: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.cipherId = this.getResponseProperty(\"CipherId\");\n this.collectionId = this.getResponseProperty(\"CollectionId\");\n this.groupId = this.getResponseProperty(\"GroupId\");\n this.policyId = this.getResponseProperty(\"PolicyId\");\n this.organizationUserId = this.getResponseProperty(\"OrganizationUserId\");\n this.providerUserId = this.getResponseProperty(\"ProviderUserId\");\n this.providerOrganizationId = this.getResponseProperty(\"ProviderOrganizationId\");\n this.actingUserId = this.getResponseProperty(\"ActingUserId\");\n this.date = this.getResponseProperty(\"Date\");\n this.deviceType = this.getResponseProperty(\"DeviceType\");\n this.ipAddress = this.getResponseProperty(\"IpAddress\");\n this.installationId = this.getResponseProperty(\"InstallationId\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.domains = this.getResponseProperty(\"Domains\");\n this.excluded = this.getResponseProperty(\"Excluded\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.name = this.getResponseProperty(\"Name\");\n this.accessAll = this.getResponseProperty(\"AccessAll\");\n this.externalId = this.getResponseProperty(\"ExternalId\");\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityCaptchaResponse extends BaseResponse {\n siteKey: string;\n\n constructor(response: any) {\n super(response);\n this.siteKey = this.getResponseProperty(\"HCaptcha_SiteKey\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n forcePasswordReset: boolean;\n apiUseKeyConnector: boolean;\n keyConnectorUrl: string;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty(\"ResetMasterPassword\");\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.key = this.getResponseProperty(\"Key\");\n this.twoFactorToken = this.getResponseProperty(\"TwoFactorToken\");\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n this.forcePasswordReset = this.getResponseProperty(\"ForcePasswordReset\");\n this.apiUseKeyConnector = this.getResponseProperty(\"ApiUseKeyConnector\");\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n captchaToken: string;\n\n constructor(response: any) {\n super(response);\n this.captchaToken = this.getResponseProperty(\"CaptchaBypassToken\");\n this.twoFactorProviders = this.getResponseProperty(\"TwoFactorProviders\");\n const twoFactorProviders2 = this.getResponseProperty(\"TwoFactorProviders2\");\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n // eslint-disable-next-line\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class KeyConnectorUserKeyResponse extends BaseResponse {\n key: string;\n\n constructor(response: any) {\n super(response);\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class KeysResponse extends BaseResponse {\n privateKey: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.publicKey = this.getResponseProperty(\"PublicKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty(\"Data\");\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty(\"ContinuationToken\");\n }\n}\n","import { NotificationType } from \"../../enums/notificationType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty(\"ContextId\");\n this.type = this.getResponseProperty(\"Type\");\n\n const payload = this.getResponseProperty(\"Payload\");\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n break;\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.collectionIds = this.getResponseProperty(\"CollectionIds\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty(\"UserId\");\n this.date = new Date(this.getResponseProperty(\"Date\"));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n","import { SsoConfigApi } from \"../../api/ssoConfigApi\";\nimport { BaseResponse } from \"../baseResponse\";\n\nexport class OrganizationSsoResponse extends BaseResponse {\n enabled: boolean;\n data: SsoConfigApi;\n urls: SsoUrls;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.data =\n this.getResponseProperty(\"Data\") != null\n ? new SsoConfigApi(this.getResponseProperty(\"Data\"))\n : null;\n this.urls = new SsoUrls(this.getResponseProperty(\"Urls\"));\n }\n}\n\nclass SsoUrls extends BaseResponse {\n callbackPath: string;\n signedOutCallbackPath: string;\n spEntityId: string;\n spMetadataUrl: string;\n spAcsUrl: string;\n\n constructor(response: any) {\n super(response);\n this.callbackPath = this.getResponseProperty(\"CallbackPath\");\n this.signedOutCallbackPath = this.getResponseProperty(\"SignedOutCallbackPath\");\n this.spEntityId = this.getResponseProperty(\"SpEntityId\");\n this.spMetadataUrl = this.getResponseProperty(\"SpMetadataUrl\");\n this.spAcsUrl = this.getResponseProperty(\"SpAcsUrl\");\n }\n}\n","import { OrganizationApiKeyType } from \"../../enums/organizationApiKeyType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationApiKeyInformationResponse extends BaseResponse {\n keyType: OrganizationApiKeyType;\n\n constructor(response: any) {\n super(response);\n this.keyType = this.getResponseProperty(\"KeyType\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationAutoEnrollStatusResponse extends BaseResponse {\n id: string;\n resetPasswordEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.resetPasswordEnabled = this.getResponseProperty(\"ResetPasswordEnabled\");\n }\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\n\nimport { BillingSyncConfigApi } from \"../api/billingSyncConfigApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\n/**API response config types for OrganizationConnectionResponse */\nexport type OrganizationConnectionConfigApis = BillingSyncConfigApi;\n\nexport class OrganizationConnectionResponse<\n TConfig extends OrganizationConnectionConfigApis\n> extends BaseResponse {\n id: string;\n type: OrganizationConnectionType;\n organizationId: string;\n enabled: boolean;\n config: TConfig;\n\n constructor(response: any, configType: { new (response: any): TConfig }) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.type = this.getResponseProperty(\"Type\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n const rawConfig = this.getResponseProperty(\"Config\");\n this.config = rawConfig == null ? null : new configType(rawConfig);\n }\n}\n","import { KeysResponse } from \"./keysResponse\";\n\nexport class OrganizationKeysResponse extends KeysResponse {\n constructor(response: any) {\n super(response);\n }\n}\n","import { PlanType } from \"../../enums/planType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { PlanResponse } from \"./planResponse\";\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxAutoscaleSeats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useResetPassword: boolean;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.identifier = this.getResponseProperty(\"Identifier\");\n this.name = this.getResponseProperty(\"Name\");\n this.businessName = this.getResponseProperty(\"BusinessName\");\n this.businessAddress1 = this.getResponseProperty(\"BusinessAddress1\");\n this.businessAddress2 = this.getResponseProperty(\"BusinessAddress2\");\n this.businessAddress3 = this.getResponseProperty(\"BusinessAddress3\");\n this.businessCountry = this.getResponseProperty(\"BusinessCountry\");\n this.businessTaxNumber = this.getResponseProperty(\"BusinessTaxNumber\");\n this.billingEmail = this.getResponseProperty(\"BillingEmail\");\n const plan = this.getResponseProperty(\"Plan\");\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty(\"PlanType\");\n this.seats = this.getResponseProperty(\"Seats\");\n this.maxAutoscaleSeats = this.getResponseProperty(\"MaxAutoscaleSeats\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.useGroups = this.getResponseProperty(\"UseGroups\");\n this.useDirectory = this.getResponseProperty(\"UseDirectory\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n this.useTotp = this.getResponseProperty(\"UseTotp\");\n this.use2fa = this.getResponseProperty(\"Use2fa\");\n this.useApi = this.getResponseProperty(\"UseApi\");\n this.useResetPassword = this.getResponseProperty(\"UseResetPassword\");\n this.hasPublicAndPrivateKeys = this.getResponseProperty(\"HasPublicAndPrivateKeys\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationSponsorshipSyncStatusResponse extends BaseResponse {\n lastSyncDate?: Date;\n\n constructor(response: any) {\n super(response);\n const lastSyncDate = this.getResponseProperty(\"LastSyncDate\");\n if (lastSyncDate) {\n this.lastSyncDate = new Date(lastSyncDate);\n }\n }\n}\n","import { OrganizationResponse } from \"./organizationResponse\";\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from \"./subscriptionResponse\";\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty(\"StorageName\");\n this.storageGb = this.getResponseProperty(\"StorageGb\");\n const subscription = this.getResponseProperty(\"Subscription\");\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty(\"UpcomingInvoice\");\n this.upcomingInvoice =\n upcomingInvoice == null\n ? null\n : new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty(\"Expiration\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationUserBulkPublicKeyResponse extends BaseResponse {\n id: string;\n userId: string;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.error = this.getResponseProperty(\"Error\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\nimport { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"Permissions\"));\n this.accessAll = this.getResponseProperty(\"AccessAll\");\n this.resetPasswordEnrolled = this.getResponseProperty(\"ResetPasswordEnrolled\");\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n usesKeyConnector: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.twoFactorEnabled = this.getResponseProperty(\"TwoFactorEnabled\");\n this.usesKeyConnector = this.getResponseProperty(\"UsesKeyConnector\") ?? false;\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n\nexport class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n resetPasswordKey: string;\n encryptedPrivateKey: string;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n this.resetPasswordKey = this.getResponseProperty(\"ResetPasswordKey\");\n this.encryptedPrivateKey = this.getResponseProperty(\"EncryptedPrivateKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty(\"Password\");\n this.lastUsedDate = this.getResponseProperty(\"LastUsedDate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { ProfileResponse } from \"./profileResponse\";\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty(\"UserProfile\");\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty(\"PaymentIntentClientSecret\");\n this.success = this.getResponseProperty(\"Success\");\n }\n}\n","import { PlanType } from \"../../enums/planType\";\nimport { ProductType } from \"../../enums/productType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n hasResetPassword: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.product = this.getResponseProperty(\"Product\");\n this.name = this.getResponseProperty(\"Name\");\n this.isAnnual = this.getResponseProperty(\"IsAnnual\");\n this.nameLocalizationKey = this.getResponseProperty(\"NameLocalizationKey\");\n this.descriptionLocalizationKey = this.getResponseProperty(\"DescriptionLocalizationKey\");\n this.canBeUsedByBusiness = this.getResponseProperty(\"CanBeUsedByBusiness\");\n this.baseSeats = this.getResponseProperty(\"BaseSeats\");\n this.baseStorageGb = this.getResponseProperty(\"BaseStorageGb\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxUsers = this.getResponseProperty(\"MaxUsers\");\n this.hasAdditionalSeatsOption = this.getResponseProperty(\"HasAdditionalSeatsOption\");\n this.maxAdditionalSeats = this.getResponseProperty(\"MaxAdditionalSeats\");\n this.hasAdditionalStorageOption = this.getResponseProperty(\"HasAdditionalStorageOption\");\n this.maxAdditionalStorage = this.getResponseProperty(\"MaxAdditionalStorage\");\n this.hasPremiumAccessOption = this.getResponseProperty(\"HasPremiumAccessOption\");\n this.trialPeriodDays = this.getResponseProperty(\"TrialPeriodDays\");\n this.hasSelfHost = this.getResponseProperty(\"HasSelfHost\");\n this.hasPolicies = this.getResponseProperty(\"HasPolicies\");\n this.hasGroups = this.getResponseProperty(\"HasGroups\");\n this.hasDirectory = this.getResponseProperty(\"HasDirectory\");\n this.hasEvents = this.getResponseProperty(\"HasEvents\");\n this.hasTotp = this.getResponseProperty(\"HasTotp\");\n this.has2fa = this.getResponseProperty(\"Has2fa\");\n this.hasApi = this.getResponseProperty(\"HasApi\");\n this.hasSso = this.getResponseProperty(\"HasSso\");\n this.hasResetPassword = this.getResponseProperty(\"HasResetPassword\");\n this.usersGetPremium = this.getResponseProperty(\"UsersGetPremium\");\n this.upgradeSortOrder = this.getResponseProperty(\"UpgradeSortOrder\");\n this.displaySortOrder = this.getResponseProperty(\"SortOrder\");\n this.legacyYear = this.getResponseProperty(\"LegacyYear\");\n this.disabled = this.getResponseProperty(\"Disabled\");\n this.stripePlanId = this.getResponseProperty(\"StripePlanId\");\n this.stripeSeatPlanId = this.getResponseProperty(\"StripeSeatPlanId\");\n this.stripeStoragePlanId = this.getResponseProperty(\"StripeStoragePlanId\");\n this.stripePremiumAccessPlanId = this.getResponseProperty(\"StripePremiumAccessPlanId\");\n this.basePrice = this.getResponseProperty(\"BasePrice\");\n this.seatPrice = this.getResponseProperty(\"SeatPrice\");\n this.additionalStoragePricePerGb = this.getResponseProperty(\"AdditionalStoragePricePerGb\");\n this.premiumAccessOptionPrice = this.getResponseProperty(\"PremiumAccessOptionPrice\");\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.type = this.getResponseProperty(\"Type\");\n this.data = this.getResponseProperty(\"Data\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n }\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n providerId: string;\n providerName: string;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.usePolicies = this.getResponseProperty(\"UsePolicies\");\n this.useGroups = this.getResponseProperty(\"UseGroups\");\n this.useDirectory = this.getResponseProperty(\"UseDirectory\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n this.useTotp = this.getResponseProperty(\"UseTotp\");\n this.use2fa = this.getResponseProperty(\"Use2fa\");\n this.useApi = this.getResponseProperty(\"UseApi\");\n this.useSso = this.getResponseProperty(\"UseSso\");\n this.useKeyConnector = this.getResponseProperty(\"UseKeyConnector\") ?? false;\n this.useResetPassword = this.getResponseProperty(\"UseResetPassword\");\n this.selfHost = this.getResponseProperty(\"SelfHost\");\n this.usersGetPremium = this.getResponseProperty(\"UsersGetPremium\");\n this.seats = this.getResponseProperty(\"Seats\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.key = this.getResponseProperty(\"Key\");\n this.hasPublicAndPrivateKeys = this.getResponseProperty(\"HasPublicAndPrivateKeys\");\n this.status = this.getResponseProperty(\"Status\");\n this.type = this.getResponseProperty(\"Type\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.ssoBound = this.getResponseProperty(\"SsoBound\");\n this.identifier = this.getResponseProperty(\"Identifier\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"permissions\"));\n this.resetPasswordEnrolled = this.getResponseProperty(\"ResetPasswordEnrolled\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.providerName = this.getResponseProperty(\"ProviderName\");\n this.familySponsorshipFriendlyName = this.getResponseProperty(\"FamilySponsorshipFriendlyName\");\n this.familySponsorshipAvailable = this.getResponseProperty(\"FamilySponsorshipAvailable\");\n this.planProductType = this.getResponseProperty(\"PlanProductType\");\n this.keyConnectorEnabled = this.getResponseProperty(\"KeyConnectorEnabled\") ?? false;\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n const familySponsorshipLastSyncDateString = this.getResponseProperty(\n \"FamilySponsorshipLastSyncDate\"\n );\n if (familySponsorshipLastSyncDateString) {\n this.familySponsorshipLastSyncDate = new Date(familySponsorshipLastSyncDateString);\n }\n const familySponsorshipValidUntilString = this.getResponseProperty(\n \"FamilySponsorshipValidUntil\"\n );\n if (familySponsorshipValidUntilString) {\n this.familySponsorshipValidUntil = new Date(familySponsorshipValidUntilString);\n }\n this.familySponsorshipToDelete = this.getResponseProperty(\"FamilySponsorshipToDelete\");\n }\n}\n","import { ProfileOrganizationResponse } from \"./profileOrganizationResponse\";\n\nexport class ProfileProviderOrganizationResponse extends ProfileOrganizationResponse {\n constructor(response: any) {\n super(response);\n this.keyConnectorEnabled = false;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ProfileProviderResponse extends BaseResponse {\n id: string;\n name: string;\n key: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n permissions: PermissionsApi;\n userId: string;\n useEvents: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.key = this.getResponseProperty(\"Key\");\n this.status = this.getResponseProperty(\"Status\");\n this.type = this.getResponseProperty(\"Type\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"permissions\"));\n this.userId = this.getResponseProperty(\"UserId\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { ProfileOrganizationResponse } from \"./profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"./profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"./profileProviderResponse\";\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n forcePasswordReset: boolean;\n usesKeyConnector: boolean;\n organizations: ProfileOrganizationResponse[] = [];\n providers: ProfileProviderResponse[] = [];\n providerOrganizations: ProfileProviderOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.emailVerified = this.getResponseProperty(\"EmailVerified\");\n this.masterPasswordHint = this.getResponseProperty(\"MasterPasswordHint\");\n this.premium = this.getResponseProperty(\"Premium\");\n this.culture = this.getResponseProperty(\"Culture\");\n this.twoFactorEnabled = this.getResponseProperty(\"TwoFactorEnabled\");\n this.key = this.getResponseProperty(\"Key\");\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.securityStamp = this.getResponseProperty(\"SecurityStamp\");\n this.forcePasswordReset = this.getResponseProperty(\"ForcePasswordReset\") ?? false;\n this.usesKeyConnector = this.getResponseProperty(\"UsesKeyConnector\") ?? false;\n\n const organizations = this.getResponseProperty(\"Organizations\");\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n const providers = this.getResponseProperty(\"Providers\");\n if (providers != null) {\n this.providers = providers.map((o: any) => new ProfileProviderResponse(o));\n }\n const providerOrganizations = this.getResponseProperty(\"ProviderOrganizations\");\n if (providerOrganizations != null) {\n this.providerOrganizations = providerOrganizations.map(\n (o: any) => new ProfileProviderOrganizationResponse(o)\n );\n }\n }\n}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderOrganizationResponse extends BaseResponse {\n id: string;\n providerId: string;\n organizationId: string;\n key: string;\n settings: string;\n creationDate: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.key = this.getResponseProperty(\"Key\");\n this.settings = this.getResponseProperty(\"Settings\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n }\n}\n\nexport class ProviderOrganizationOrganizationDetailsResponse extends ProviderOrganizationResponse {\n organizationName: string;\n\n constructor(response: any) {\n super(response);\n this.organizationName = this.getResponseProperty(\"OrganizationName\");\n }\n}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderResponse extends BaseResponse {\n id: string;\n name: string;\n businessName: string;\n billingEmail: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.businessName = this.getResponseProperty(\"BusinessName\");\n this.billingEmail = this.getResponseProperty(\"BillingEmail\");\n }\n}\n","import { OrganizationUserBulkPublicKeyResponse } from \"../organizationUserBulkPublicKeyResponse\";\n\nexport class ProviderUserBulkPublicKeyResponse extends OrganizationUserBulkPublicKeyResponse {}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.error = this.getResponseProperty(\"Error\");\n }\n}\n","import { ProviderUserStatusType } from \"../../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../../enums/providerUserType\";\nimport { PermissionsApi } from \"../../api/permissionsApi\";\nimport { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: ProviderUserType;\n status: ProviderUserStatusType;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"Permissions\"));\n }\n}\n\nexport class ProviderUserUserDetailsResponse extends ProviderUserResponse {\n name: string;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.readOnly = this.getResponseProperty(\"ReadOnly\");\n this.hidePasswords = this.getResponseProperty(\"HidePasswords\");\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n\n const text = this.getResponseProperty(\"Text\");\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty(\"File\");\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty(\"ExpirationDate\");\n this.creatorIdentifier = this.getResponseProperty(\"CreatorIdentifier\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","import { FileUploadType } from \"../../enums/fileUploadType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { SendResponse } from \"./sendResponse\";\n\nexport class SendFileUploadDataResponse extends BaseResponse {\n fileUploadType: FileUploadType;\n sendResponse: SendResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.fileUploadType = this.getResponseProperty(\"FileUploadType\");\n const sendResponse = this.getResponseProperty(\"SendResponse\");\n this.sendResponse = sendResponse == null ? null : new SendResponse(sendResponse);\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n hideEmail: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.accessId = this.getResponseProperty(\"AccessId\");\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.notes = this.getResponseProperty(\"Notes\");\n this.key = this.getResponseProperty(\"Key\");\n this.maxAccessCount = this.getResponseProperty(\"MaxAccessCount\");\n this.accessCount = this.getResponseProperty(\"AccessCount\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n this.expirationDate = this.getResponseProperty(\"ExpirationDate\");\n this.deletionDate = this.getResponseProperty(\"DeletionDate\");\n this.password = this.getResponseProperty(\"Password\");\n this.disable = this.getResponseProperty(\"Disabled\") || false;\n this.hideEmail = this.getResponseProperty(\"HideEmail\") || false;\n\n const text = this.getResponseProperty(\"Text\");\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty(\"File\");\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty(\"StorageName\");\n this.storageGb = this.getResponseProperty(\"StorageGb\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.license = this.getResponseProperty(\"License\");\n this.expiration = this.getResponseProperty(\"Expiration\");\n this.usingInAppPurchase = this.getResponseProperty(\"UsingInAppPurchase\");\n const subscription = this.getResponseProperty(\"Subscription\");\n const upcomingInvoice = this.getResponseProperty(\"UpcomingInvoice\");\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice =\n upcomingInvoice == null\n ? null\n : new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty(\"TrialStartDate\");\n this.trialEndDate = this.getResponseProperty(\"TrialEndDate\");\n this.periodStartDate = this.getResponseProperty(\"PeriodStartDate\");\n this.periodEndDate = this.getResponseProperty(\"PeriodEndDate\");\n this.cancelledDate = this.getResponseProperty(\"CancelledDate\");\n this.cancelAtEndDate = this.getResponseProperty(\"CancelAtEndDate\");\n this.status = this.getResponseProperty(\"Status\");\n this.cancelled = this.getResponseProperty(\"Cancelled\");\n const items = this.getResponseProperty(\"Items\");\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n sponsoredSubscriptionItem: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.amount = this.getResponseProperty(\"Amount\");\n this.quantity = this.getResponseProperty(\"Quantity\");\n this.interval = this.getResponseProperty(\"Interval\");\n this.sponsoredSubscriptionItem = this.getResponseProperty(\"SponsoredSubscriptionItem\");\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty(\"Date\");\n this.amount = this.getResponseProperty(\"Amount\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\nimport { CollectionDetailsResponse } from \"./collectionResponse\";\nimport { DomainsResponse } from \"./domainsResponse\";\nimport { FolderResponse } from \"./folderResponse\";\nimport { PolicyResponse } from \"./policyResponse\";\nimport { ProfileResponse } from \"./profileResponse\";\nimport { SendResponse } from \"./sendResponse\";\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty(\"Profile\");\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty(\"Folders\");\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty(\"Ciphers\");\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty(\"Domains\");\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty(\"Policies\");\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty(\"Sends\");\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty(\"TaxIdNumber\");\n this.taxIdType = this.getResponseProperty(\"TaxIdType\");\n this.line1 = this.getResponseProperty(\"Line1\");\n this.line2 = this.getResponseProperty(\"Line2\");\n this.city = this.getResponseProperty(\"City\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.country = this.getResponseProperty(\"Country\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.country = this.getResponseProperty(\"Country\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.rate = this.getResponseProperty(\"Rate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.host = this.getResponseProperty(\"Host\");\n this.secretKey = this.getResponseProperty(\"SecretKey\");\n this.integrationKey = this.getResponseProperty(\"IntegrationKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.email = this.getResponseProperty(\"Email\");\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.type = this.getResponseProperty(\"Type\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty(\"Code\");\n }\n}\n","import { Utils } from \"../../misc/utils\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorWebAuthnResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n const keys = this.getResponseProperty(\"Keys\");\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n migrated: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.id = this.getResponseProperty(\"Id\");\n this.migrated = this.getResponseProperty(\"Migrated\");\n }\n}\n\nexport class ChallengeResponse extends BaseResponse implements PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n\n constructor(response: any) {\n super(response);\n this.attestation = this.getResponseProperty(\"attestation\");\n this.authenticatorSelection = this.getResponseProperty(\"authenticatorSelection\");\n this.challenge = Utils.fromUrlB64ToArray(this.getResponseProperty(\"challenge\"));\n this.excludeCredentials = this.getResponseProperty(\"excludeCredentials\").map((c: any) => {\n c.id = Utils.fromUrlB64ToArray(c.id).buffer;\n return c;\n });\n this.extensions = this.getResponseProperty(\"extensions\");\n this.pubKeyCredParams = this.getResponseProperty(\"pubKeyCredParams\");\n this.rp = this.getResponseProperty(\"rp\");\n this.timeout = this.getResponseProperty(\"timeout\");\n\n const user = this.getResponseProperty(\"user\");\n user.id = Utils.fromUrlB64ToArray(user.id);\n\n this.user = user;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.key1 = this.getResponseProperty(\"Key1\");\n this.key2 = this.getResponseProperty(\"Key2\");\n this.key3 = this.getResponseProperty(\"Key3\");\n this.key4 = this.getResponseProperty(\"Key4\");\n this.key5 = this.getResponseProperty(\"Key5\");\n this.nfc = this.getResponseProperty(\"Nfc\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty(\"UserId\");\n this.publicKey = this.getResponseProperty(\"PublicKey\");\n }\n}\n","import { Attachment } from \"../domain/attachment\";\nimport { SymmetricCryptoKey } from \"../domain/symmetricCryptoKey\";\n\nimport { View } from \"./view\";\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","import { CardLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class CardView extends ItemView {\n @linkedFieldOption(LinkedId.CardholderName)\n cardholderName: string = null;\n @linkedFieldOption(LinkedId.ExpMonth, \"expirationMonth\")\n expMonth: string = null;\n @linkedFieldOption(LinkedId.ExpYear, \"expirationYear\")\n expYear: string = null;\n @linkedFieldOption(LinkedId.Code, \"securityCode\")\n code: string = null;\n\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n\n constructor() {\n super();\n }\n\n get maskedCode(): string {\n return this.code != null ? \"•\".repeat(this.code.length) : null;\n }\n\n get maskedNumber(): string {\n return this.number != null ? \"•\".repeat(this.number.length) : null;\n }\n\n @linkedFieldOption(LinkedId.Brand)\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.Number)\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== \"\") {\n this._subTitle += \", \";\n } else {\n this._subTitle = \"\";\n }\n\n // Show last 5 on amex, last 4 for all others\n const count =\n this.number.length >= 5 && this.number.match(new RegExp(\"^3[47]\")) != null ? 5 : 4;\n this._subTitle += \"*\" + this.number.substr(this.number.length - count);\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? (\"0\" + this.expMonth).slice(-2) : \"__\";\n exp += \" / \" + (this.expYear != null ? this.formatYear(this.expYear) : \"____\");\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? \"20\" + year : year;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { Cipher } from \"../domain/cipher\";\n\nimport { AttachmentView } from \"./attachmentView\";\nimport { CardView } from \"./cardView\";\nimport { FieldView } from \"./fieldView\";\nimport { IdentityView } from \"./identityView\";\nimport { LoginView } from \"./loginView\";\nimport { PasswordHistoryView } from \"./passwordHistoryView\";\nimport { SecureNoteView } from \"./secureNoteView\";\nimport { View } from \"./view\";\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n reprompt: CipherRepromptType = CipherRepromptType.None;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n // Old locally stored ciphers might have reprompt == null. If so set it to None.\n this.reprompt = c.reprompt ?? CipherRepromptType.None;\n }\n\n private get item() {\n switch (this.type) {\n case CipherType.Login:\n return this.login;\n case CipherType.SecureNote:\n return this.secureNote;\n case CipherType.Card:\n return this.card;\n case CipherType.Identity:\n return this.identity;\n default:\n break;\n }\n\n return null;\n }\n\n get subTitle(): string {\n return this.item.subTitle;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === \"\") {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n\n get linkedFieldOptions() {\n return this.item.linkedFieldOptions;\n }\n\n linkedFieldValue(id: LinkedIdType) {\n const linkedFieldOption = this.linkedFieldOptions?.get(id);\n if (linkedFieldOption == null) {\n return null;\n }\n\n const item = this.item;\n return this.item[linkedFieldOption.propertyKey as keyof typeof item];\n }\n\n linkedFieldI18nKey(id: LinkedIdType): string {\n return this.linkedFieldOptions.get(id)?.i18nKey;\n }\n}\n","import { Collection } from \"../domain/collection\";\nimport { ITreeNodeObject } from \"../domain/treeNode\";\nimport { CollectionGroupDetailsResponse } from \"../response/collectionResponse\";\n\nimport { View } from \"./view\";\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventView {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: EventType;\n installationId: string;\n\n constructor(data: Required) {\n this.message = data.message;\n this.humanReadableMessage = data.humanReadableMessage;\n this.appIcon = data.appIcon;\n this.appName = data.appName;\n this.userId = data.userId;\n this.userName = data.userName;\n this.userEmail = data.userEmail;\n this.date = data.date;\n this.ip = data.ip;\n this.type = data.type;\n this.installationId = data.installationId;\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { Field } from \"../domain/field\";\n\nimport { View } from \"./view\";\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField = false; // Marks if the field is new and hasn't been saved\n showValue = false;\n showCount = false;\n linkedId: LinkedIdType = null;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n this.linkedId = f.linkedId;\n }\n\n get maskedValue(): string {\n return this.value != null ? \"••••••••\" : null;\n }\n}\n","import { Folder } from \"../domain/folder\";\nimport { ITreeNodeObject } from \"../domain/treeNode\";\n\nimport { View } from \"./view\";\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import { IdentityLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\nimport { Utils } from \"../../misc/utils\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class IdentityView extends ItemView {\n @linkedFieldOption(LinkedId.Title)\n title: string = null;\n @linkedFieldOption(LinkedId.MiddleName)\n middleName: string = null;\n @linkedFieldOption(LinkedId.Address1)\n address1: string = null;\n @linkedFieldOption(LinkedId.Address2)\n address2: string = null;\n @linkedFieldOption(LinkedId.Address3)\n address3: string = null;\n @linkedFieldOption(LinkedId.City, \"cityTown\")\n city: string = null;\n @linkedFieldOption(LinkedId.State, \"stateProvince\")\n state: string = null;\n @linkedFieldOption(LinkedId.PostalCode, \"zipPostalCode\")\n postalCode: string = null;\n @linkedFieldOption(LinkedId.Country)\n country: string = null;\n @linkedFieldOption(LinkedId.Company)\n company: string = null;\n @linkedFieldOption(LinkedId.Email)\n email: string = null;\n @linkedFieldOption(LinkedId.Phone)\n phone: string = null;\n @linkedFieldOption(LinkedId.Ssn)\n ssn: string = null;\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.PassportNumber)\n passportNumber: string = null;\n @linkedFieldOption(LinkedId.LicenseNumber)\n licenseNumber: string = null;\n\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n\n constructor() {\n super();\n }\n\n @linkedFieldOption(LinkedId.FirstName)\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.LastName)\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = \"\";\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== \"\") {\n this._subTitle += \" \";\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n @linkedFieldOption(LinkedId.FullName)\n get fullName(): string {\n if (\n this.title != null ||\n this.firstName != null ||\n this.middleName != null ||\n this.lastName != null\n ) {\n let name = \"\";\n if (this.title != null) {\n name += this.title + \" \";\n }\n if (this.firstName != null) {\n name += this.firstName + \" \";\n }\n if (this.middleName != null) {\n name += this.middleName + \" \";\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += \", \";\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += \", \";\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || \"-\";\n const state = this.state;\n const postalCode = this.postalCode || \"-\";\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += \", \" + state;\n }\n addressPart2 += \", \" + postalCode;\n return addressPart2;\n }\n}\n","import { LinkedMetadata } from \"../../misc/linkedFieldOption.decorator\";\n\nimport { View } from \"./view\";\n\nexport abstract class ItemView implements View {\n linkedFieldOptions: Map;\n abstract get subTitle(): string;\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { Utils } from \"../../misc/utils\";\nimport { LoginUri } from \"../domain/loginUri\";\n\nimport { View } from \"./view\";\n\nconst CanLaunchWhitelist = [\n \"https://\",\n \"http://\",\n \"ssh://\",\n \"ftp://\",\n \"sftp://\",\n \"irc://\",\n \"vnc://\",\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n \"rdp://\", // Legacy RDP URI scheme\n \"ms-rd:\", // Preferred RDP URI scheme\n \"chrome://\",\n \"iosapp://\",\n \"androidapp://\",\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === \"\") {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === \"\") {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === \"\") {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return (\n this.uri != null &&\n (this.uri.indexOf(\"http://\") === 0 ||\n this.uri.indexOf(\"https://\") === 0 ||\n (this.uri.indexOf(\"://\") < 0 && Utils.tldEndingRegex.test(this.uri)))\n );\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf(\"://\") < 0 && Utils.tldEndingRegex.test(this.uri)\n ? \"http://\" + this.uri\n : this.uri;\n }\n}\n","import { LoginLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\nimport { Utils } from \"../../misc/utils\";\nimport { Login } from \"../domain/login\";\n\nimport { ItemView } from \"./itemView\";\nimport { LoginUriView } from \"./loginUriView\";\n\nexport class LoginView extends ItemView {\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.Password)\n password: string = null;\n\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n autofillOnPageLoad: boolean = null;\n\n constructor(l?: Login) {\n super();\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n this.autofillOnPageLoad = l.autofillOnPageLoad;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? \"••••••••\" : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some((u) => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find((u) => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","import { Password } from \"../domain/password\";\n\nimport { View } from \"./view\";\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNote } from \"../domain/secureNote\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class SecureNoteView extends ItemView {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n super();\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendAccess } from \"../domain/sendAccess\";\n\nimport { SendFileView } from \"./sendFileView\";\nimport { SendTextView } from \"./sendTextView\";\nimport { View } from \"./view\";\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","import { SendFile } from \"../domain/sendFile\";\n\nimport { View } from \"./view\";\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","import { SendText } from \"../domain/sendText\";\n\nimport { View } from \"./view\";\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? \"••••••••\" : null;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { Utils } from \"../../misc/utils\";\nimport { Send } from \"../domain/send\";\nimport { SymmetricCryptoKey } from \"../domain/symmetricCryptoKey\";\n\nimport { SendFileView } from \"./sendFileView\";\nimport { SendTextView } from \"./sendTextView\";\nimport { View } from \"./view\";\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled = false;\n hideEmail = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n this.hideEmail = s.hideEmail;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"../../enums/ssoEnums\";\nimport { SsoConfigApi } from \"../api/ssoConfigApi\";\n\nimport { View } from \"./view\";\n\nexport class SsoConfigView extends View {\n configType: SsoType;\n\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n openId: {\n authority: string;\n clientId: string;\n clientSecret: string;\n metadataAddress: string;\n redirectBehavior: OpenIdConnectRedirectBehavior;\n getClaimsFromUserInfoEndpoint: boolean;\n additionalScopes: string;\n additionalUserIdClaimTypes: string;\n additionalEmailClaimTypes: string;\n additionalNameClaimTypes: string;\n acrValues: string;\n expectedReturnAcrValue: string;\n };\n\n saml: {\n spNameIdFormat: Saml2NameIdFormat;\n spOutboundSigningAlgorithm: string;\n spSigningBehavior: Saml2SigningBehavior;\n spMinIncomingSigningAlgorithm: boolean;\n spWantAssertionsSigned: boolean;\n spValidateCertificates: boolean;\n\n idpEntityId: string;\n idpBindingType: Saml2BindingType;\n idpSingleSignOnServiceUrl: string;\n idpSingleLogoutServiceUrl: string;\n idpX509PublicCert: string;\n idpOutboundSigningAlgorithm: string;\n idpAllowUnsolicitedAuthnResponse: boolean;\n idpAllowOutboundLogoutRequests: boolean;\n idpWantAuthnRequestsSigned: boolean;\n };\n\n constructor(api: SsoConfigApi) {\n super();\n if (api == null) {\n return;\n }\n\n this.configType = api.configType;\n\n this.keyConnectorEnabled = api.keyConnectorEnabled;\n this.keyConnectorUrl = api.keyConnectorUrl;\n\n if (this.configType === SsoType.OpenIdConnect) {\n this.openId = {\n authority: api.authority,\n clientId: api.clientId,\n clientSecret: api.clientSecret,\n metadataAddress: api.metadataAddress,\n redirectBehavior: api.redirectBehavior,\n getClaimsFromUserInfoEndpoint: api.getClaimsFromUserInfoEndpoint,\n additionalScopes: api.additionalScopes,\n additionalUserIdClaimTypes: api.additionalUserIdClaimTypes,\n additionalEmailClaimTypes: api.additionalEmailClaimTypes,\n additionalNameClaimTypes: api.additionalNameClaimTypes,\n acrValues: api.acrValues,\n expectedReturnAcrValue: api.expectedReturnAcrValue,\n };\n } else if (this.configType === SsoType.Saml2) {\n this.saml = {\n spNameIdFormat: api.spNameIdFormat,\n spOutboundSigningAlgorithm: api.spOutboundSigningAlgorithm,\n spSigningBehavior: api.spSigningBehavior,\n spMinIncomingSigningAlgorithm: api.spMinIncomingSigningAlgorithm,\n spWantAssertionsSigned: api.spWantAssertionsSigned,\n spValidateCertificates: api.spValidateCertificates,\n\n idpEntityId: api.idpEntityId,\n idpBindingType: api.idpBindingType,\n idpSingleSignOnServiceUrl: api.idpSingleSignOnServiceUrl,\n idpSingleLogoutServiceUrl: api.idpSingleLogoutServiceUrl,\n idpX509PublicCert: api.idpX509PublicCert,\n idpOutboundSigningAlgorithm: api.idpOutboundSigningAlgorithm,\n idpAllowUnsolicitedAuthnResponse: api.idpAllowUnsolicitedAuthnResponse,\n idpWantAuthnRequestsSigned: api.idpWantAuthnRequestsSigned,\n\n // Value is inverted in the view model (allow instead of disable)\n idpAllowOutboundLogoutRequests:\n api.idpDisableOutboundLogoutRequests == null\n ? null\n : !api.idpDisableOutboundLogoutRequests,\n };\n }\n }\n}\n","export class View {}\n","import { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { DeviceRequest } from \"jslib-common/models/request/deviceRequest\";\nimport { TokenRequestTwoFactor } from \"jslib-common/models/request/identityToken/tokenRequestTwoFactor\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\nimport {\n OrganizationConnectionConfigApis,\n OrganizationConnectionResponse,\n} from \"jslib-common/models/response/organizationConnectionResponse\";\n\nimport { ApiService as ApiServiceAbstraction } from \"../abstractions/api.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { DeviceType } from \"../enums/deviceType\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { Utils } from \"../misc/utils\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { BitPayInvoiceRequest } from \"../models/request/bitPayInvoiceRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { DeleteRecoverRequest } from \"../models/request/deleteRecoverRequest\";\nimport { EmailRequest } from \"../models/request/emailRequest\";\nimport { EmailTokenRequest } from \"../models/request/emailTokenRequest\";\nimport { EmergencyAccessAcceptRequest } from \"../models/request/emergencyAccessAcceptRequest\";\nimport { EmergencyAccessConfirmRequest } from \"../models/request/emergencyAccessConfirmRequest\";\nimport { EmergencyAccessInviteRequest } from \"../models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessPasswordRequest } from \"../models/request/emergencyAccessPasswordRequest\";\nimport { EmergencyAccessUpdateRequest } from \"../models/request/emergencyAccessUpdateRequest\";\nimport { EventRequest } from \"../models/request/eventRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { GroupRequest } from \"../models/request/groupRequest\";\nimport { IapCheckRequest } from \"../models/request/iapCheckRequest\";\nimport { ApiTokenRequest } from \"../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../models/request/identityToken/ssoTokenRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportDirectoryRequest } from \"../models/request/importDirectoryRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KdfRequest } from \"../models/request/kdfRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { OrganizationSponsorshipCreateRequest } from \"../models/request/organization/organizationSponsorshipCreateRequest\";\nimport { OrganizationSponsorshipRedeemRequest } from \"../models/request/organization/organizationSponsorshipRedeemRequest\";\nimport { OrganizationSsoRequest } from \"../models/request/organization/organizationSsoRequest\";\nimport { OrganizationApiKeyRequest } from \"../models/request/organizationApiKeyRequest\";\nimport { OrganizationCreateRequest } from \"../models/request/organizationCreateRequest\";\nimport { OrganizationImportRequest } from \"../models/request/organizationImportRequest\";\nimport { OrganizationKeysRequest } from \"../models/request/organizationKeysRequest\";\nimport { OrganizationSubscriptionUpdateRequest } from \"../models/request/organizationSubscriptionUpdateRequest\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../models/request/organizationTaxInfoUpdateRequest\";\nimport { OrganizationUpdateRequest } from \"../models/request/organizationUpdateRequest\";\nimport { OrganizationUpgradeRequest } from \"../models/request/organizationUpgradeRequest\";\nimport { OrganizationUserAcceptRequest } from \"../models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserBulkConfirmRequest } from \"../models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"../models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"../models/request/organizationUserConfirmRequest\";\nimport { OrganizationUserInviteRequest } from \"../models/request/organizationUserInviteRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"../models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { OrganizationUserResetPasswordRequest } from \"../models/request/organizationUserResetPasswordRequest\";\nimport { OrganizationUserUpdateGroupsRequest } from \"../models/request/organizationUserUpdateGroupsRequest\";\nimport { OrganizationUserUpdateRequest } from \"../models/request/organizationUserUpdateRequest\";\nimport { PasswordHintRequest } from \"../models/request/passwordHintRequest\";\nimport { PasswordRequest } from \"../models/request/passwordRequest\";\nimport { PaymentRequest } from \"../models/request/paymentRequest\";\nimport { PolicyRequest } from \"../models/request/policyRequest\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ProviderAddOrganizationRequest } from \"../models/request/provider/providerAddOrganizationRequest\";\nimport { ProviderOrganizationCreateRequest } from \"../models/request/provider/providerOrganizationCreateRequest\";\nimport { ProviderSetupRequest } from \"../models/request/provider/providerSetupRequest\";\nimport { ProviderUpdateRequest } from \"../models/request/provider/providerUpdateRequest\";\nimport { ProviderUserAcceptRequest } from \"../models/request/provider/providerUserAcceptRequest\";\nimport { ProviderUserBulkConfirmRequest } from \"../models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"../models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"../models/request/provider/providerUserConfirmRequest\";\nimport { ProviderUserInviteRequest } from \"../models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"../models/request/provider/providerUserUpdateRequest\";\nimport { RegisterRequest } from \"../models/request/registerRequest\";\nimport { SeatRequest } from \"../models/request/seatRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { SelectionReadOnlyRequest } from \"../models/request/selectionReadOnlyRequest\";\nimport { SendAccessRequest } from \"../models/request/sendAccessRequest\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { SetPasswordRequest } from \"../models/request/setPasswordRequest\";\nimport { StorageRequest } from \"../models/request/storageRequest\";\nimport { TaxInfoUpdateRequest } from \"../models/request/taxInfoUpdateRequest\";\nimport { TwoFactorEmailRequest } from \"../models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviderRequest } from \"../models/request/twoFactorProviderRequest\";\nimport { TwoFactorRecoveryRequest } from \"../models/request/twoFactorRecoveryRequest\";\nimport { UpdateDomainsRequest } from \"../models/request/updateDomainsRequest\";\nimport { UpdateKeyRequest } from \"../models/request/updateKeyRequest\";\nimport { UpdateProfileRequest } from \"../models/request/updateProfileRequest\";\nimport { UpdateTempPasswordRequest } from \"../models/request/updateTempPasswordRequest\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"../models/request/updateTwoFactorAuthenticatorRequest\";\nimport { UpdateTwoFactorDuoRequest } from \"../models/request/updateTwoFactorDuoRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"../models/request/updateTwoFactorEmailRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"../models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"../models/request/updateTwoFactorWebAuthnRequest\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"../models/request/updateTwoFactorYubioOtpRequest\";\nimport { VerifyBankRequest } from \"../models/request/verifyBankRequest\";\nimport { VerifyDeleteRecoverRequest } from \"../models/request/verifyDeleteRecoverRequest\";\nimport { VerifyEmailRequest } from \"../models/request/verifyEmailRequest\";\nimport { ApiKeyResponse } from \"../models/response/apiKeyResponse\";\nimport { AttachmentResponse } from \"../models/response/attachmentResponse\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { BillingResponse } from \"../models/response/billingResponse\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse,\n} from \"../models/response/emergencyAccessResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { EventResponse } from \"../models/response/eventResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { GroupDetailsResponse, GroupResponse } from \"../models/response/groupResponse\";\nimport { IdentityCaptchaResponse } from \"../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\nimport { KeyConnectorUserKeyResponse } from \"../models/response/keyConnectorUserKeyResponse\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { OrganizationSsoResponse } from \"../models/response/organization/organizationSsoResponse\";\nimport { OrganizationApiKeyInformationResponse } from \"../models/response/organizationApiKeyInformationResponse\";\nimport { OrganizationAutoEnrollStatusResponse } from \"../models/response/organizationAutoEnrollStatusResponse\";\nimport { OrganizationKeysResponse } from \"../models/response/organizationKeysResponse\";\nimport { OrganizationResponse } from \"../models/response/organizationResponse\";\nimport { OrganizationSponsorshipSyncStatusResponse } from \"../models/response/organizationSponsorshipSyncStatusResponse\";\nimport { OrganizationSubscriptionResponse } from \"../models/response/organizationSubscriptionResponse\";\nimport { OrganizationUserBulkPublicKeyResponse } from \"../models/response/organizationUserBulkPublicKeyResponse\";\nimport { OrganizationUserBulkResponse } from \"../models/response/organizationUserBulkResponse\";\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from \"../models/response/organizationUserResponse\";\nimport { PaymentResponse } from \"../models/response/paymentResponse\";\nimport { PlanResponse } from \"../models/response/planResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { PreloginResponse } from \"../models/response/preloginResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport {\n ProviderOrganizationOrganizationDetailsResponse,\n ProviderOrganizationResponse,\n} from \"../models/response/provider/providerOrganizationResponse\";\nimport { ProviderResponse } from \"../models/response/provider/providerResponse\";\nimport { ProviderUserBulkPublicKeyResponse } from \"../models/response/provider/providerUserBulkPublicKeyResponse\";\nimport { ProviderUserBulkResponse } from \"../models/response/provider/providerUserBulkResponse\";\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse,\n} from \"../models/response/provider/providerUserResponse\";\nimport { SelectionReadOnlyResponse } from \"../models/response/selectionReadOnlyResponse\";\nimport { SendAccessResponse } from \"../models/response/sendAccessResponse\";\nimport { SendFileDownloadDataResponse } from \"../models/response/sendFileDownloadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SubscriptionResponse } from \"../models/response/subscriptionResponse\";\nimport { SyncResponse } from \"../models/response/syncResponse\";\nimport { TaxInfoResponse } from \"../models/response/taxInfoResponse\";\nimport { TaxRateResponse } from \"../models/response/taxRateResponse\";\nimport { TwoFactorAuthenticatorResponse } from \"../models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"../models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"../models/response/twoFactorEmailResponse\";\nimport { TwoFactorProviderResponse } from \"../models/response/twoFactorProviderResponse\";\nimport { TwoFactorRecoverResponse } from \"../models/response/twoFactorRescoverResponse\";\nimport {\n TwoFactorWebAuthnResponse,\n ChallengeResponse,\n} from \"../models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"../models/response/twoFactorYubiKeyResponse\";\nimport { UserKeyResponse } from \"../models/response/userKeyResponse\";\nimport { SendAccessView } from \"../models/view/sendAccessView\";\n\nexport class ApiService implements ApiServiceAbstraction {\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n\n constructor(\n private tokenService: TokenService,\n private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService,\n private appIdService: AppIdService,\n private logoutCallback: (expired: boolean) => Promise,\n private customUserAgent: string = null\n ) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient =\n this.device === DeviceType.IEBrowser ||\n this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser ||\n this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser ||\n this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser ||\n this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient =\n this.device === DeviceType.WindowsDesktop ||\n this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n // Auth APIs\n\n async postIdentityToken(\n request: ApiTokenRequest | PasswordTokenRequest | SsoTokenRequest\n ): Promise {\n const headers = new Headers({\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n request.alterIdentityTokenHeaders(headers);\n\n const identityToken =\n request instanceof ApiTokenRequest\n ? request.toIdentityToken()\n : request.toIdentityToken(this.platformUtilsService.getClientType());\n\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + \"/connect/token\", {\n body: this.qsStringify(identityToken),\n credentials: this.getCredentials(),\n cache: \"no-store\",\n headers: headers,\n method: \"POST\",\n })\n );\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (\n response.status === 400 &&\n responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length\n ) {\n await this.tokenService.clearTwoFactorToken();\n return new IdentityTwoFactorResponse(responseJson);\n } else if (\n response.status === 400 &&\n responseJson.HCaptcha_SiteKey &&\n Object.keys(responseJson.HCaptcha_SiteKey).length\n ) {\n return new IdentityCaptchaResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doAuthRefresh();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send(\"GET\", \"/accounts/profile\", null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send(\"GET\", \"/accounts/subscription\", null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send(\"GET\", \"/accounts/tax\", null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send(\"PUT\", \"/accounts/profile\", request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send(\"PUT\", \"/accounts/tax\", request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send(\n \"POST\",\n \"/accounts/prelogin\",\n request,\n false,\n true,\n this.platformUtilsService.isDev()\n ? this.environmentService.getIdentityUrl()\n : this.environmentService.getApiUrl()\n );\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send(\"POST\", \"/accounts/email-token\", request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send(\"POST\", \"/accounts/email\", request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send(\"POST\", \"/accounts/password\", request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send(\"POST\", \"/accounts/set-password\", request, true, false);\n }\n\n postSetKeyConnectorKey(request: SetKeyConnectorKeyRequest): Promise {\n return this.send(\"POST\", \"/accounts/set-key-connector-key\", request, true, false);\n }\n\n postSecurityStamp(request: SecretVerificationRequest): Promise {\n return this.send(\"POST\", \"/accounts/security-stamp\", request, true, false);\n }\n\n deleteAccount(request: SecretVerificationRequest): Promise {\n return this.send(\"DELETE\", \"/accounts\", request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send(\"GET\", \"/accounts/revision-date\", null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send(\"POST\", \"/accounts/password-hint\", request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send(\n \"POST\",\n \"/accounts/register\",\n request,\n false,\n false,\n this.platformUtilsService.isDev()\n ? this.environmentService.getIdentityUrl()\n : this.environmentService.getApiUrl()\n );\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/accounts/premium\", data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send(\"POST\", \"/accounts/iap-check\", request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send(\"POST\", \"/accounts/reinstate-premium\", null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send(\"POST\", \"/accounts/cancel-premium\", null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send(\"POST\", \"/accounts/storage\", request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send(\"POST\", \"/accounts/payment\", request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send(\"POST\", \"/accounts/license\", data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send(\"POST\", \"/accounts/keys\", request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send(\"POST\", \"/accounts/key\", request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send(\"POST\", \"/accounts/verify-email\", null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-email-token\", request, false, false);\n }\n\n postAccountVerifyPassword(request: SecretVerificationRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-password\", request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send(\"POST\", \"/accounts/delete-recover\", request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send(\"POST\", \"/accounts/delete-recover-token\", request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send(\"POST\", \"/accounts/kdf\", request, true, false);\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send(\"DELETE\", \"/accounts/sso/\" + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send(\"GET\", \"/accounts/sso/user-identifier\", null, true, true);\n }\n\n async postUserApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/accounts/api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(\n id: string,\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/accounts/rotate-api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n putUpdateTempPassword(request: UpdateTempPasswordRequest): Promise {\n return this.send(\"PUT\", \"/accounts/update-temp-password\", request, true, false);\n }\n\n postAccountRequestOTP(): Promise {\n return this.send(\"POST\", \"/accounts/request-otp\", null, true, false);\n }\n\n postAccountVerifyOTP(request: VerifyOTPRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-otp\", request, true, false);\n }\n\n postConvertToKeyConnector(): Promise {\n return this.send(\"POST\", \"/accounts/convert-to-key-connector\", null, true, false);\n }\n\n // Account Billing APIs\n\n async getUserBillingHistory(): Promise {\n const r = await this.send(\"GET\", \"/accounts/billing/history\", null, true, true);\n return new BillingHistoryResponse(r);\n }\n\n async getUserBillingPayment(): Promise {\n const r = await this.send(\"GET\", \"/accounts/billing/payment-method\", null, true, true);\n return new BillingPaymentResponse(r);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send(\"GET\", \"/folders/\" + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send(\"POST\", \"/folders\", request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send(\"PUT\", \"/folders/\" + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send(\"DELETE\", \"/folders/\" + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send(\"GET\", \"/sends/\" + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(\n id: string,\n request: SendAccessRequest,\n apiUrl?: string\n ): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set(\"Send-Id\", id);\n };\n const r = await this.send(\n \"POST\",\n \"/sends/access/\" + id,\n request,\n false,\n true,\n apiUrl,\n addSendIdHeader\n );\n return new SendAccessResponse(r);\n }\n\n async getSendFileDownloadData(\n send: SendAccessView,\n request: SendAccessRequest,\n apiUrl?: string\n ): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set(\"Send-Id\", send.id);\n };\n const r = await this.send(\n \"POST\",\n \"/sends/\" + send.id + \"/access/file/\" + send.file.id,\n request,\n false,\n true,\n apiUrl,\n addSendIdHeader\n );\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send(\"GET\", \"/sends\", null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send(\"POST\", \"/sends\", request, true, true);\n return new SendResponse(r);\n }\n\n async postFileTypeSend(request: SendRequest): Promise {\n const r = await this.send(\"POST\", \"/sends/file/v2\", request, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n async renewSendFileUploadUrl(\n sendId: string,\n fileId: string\n ): Promise {\n const r = await this.send(\"GET\", \"/sends/\" + sendId + \"/file/\" + fileId, null, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n postSendFile(sendId: string, fileId: string, data: FormData): Promise {\n return this.send(\"POST\", \"/sends/\" + sendId + \"/file/\" + fileId, data, true, false);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postSendFileLegacy(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/sends/file\", data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send(\"PUT\", \"/sends/\" + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send(\"PUT\", \"/sends/\" + id + \"/remove-password\", null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send(\"DELETE\", \"/sends/\" + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send(\"GET\", \"/ciphers/\" + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send(\"GET\", \"/ciphers/\" + id + \"/admin\", null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/ciphers/organization-details?organizationId=\" + organizationId,\n null,\n true,\n true\n );\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers\", request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers/create\", request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers/admin\", request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/admin\", request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id + \"/admin\", null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"DELETE\", \"/ciphers\", request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"DELETE\", \"/ciphers/admin\", request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/move\", request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/share\", request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/share\", request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/collections\", request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/collections-admin\", request, true, false);\n }\n\n postPurgeCiphers(\n request: SecretVerificationRequest,\n organizationId: string = null\n ): Promise {\n let path = \"/ciphers/purge\";\n if (organizationId != null) {\n path += \"?organizationId=\" + organizationId;\n }\n return this.send(\"POST\", path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send(\"POST\", \"/ciphers/import\", request, true, false);\n }\n\n postImportOrganizationCiphers(\n organizationId: string,\n request: ImportOrganizationCiphersRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/ciphers/import-organization?organizationId=\" + organizationId,\n request,\n true,\n false\n );\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/delete\", null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/delete-admin\", null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/delete\", request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/delete-admin\", request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/restore\", null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/restore-admin\", null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(\n request: CipherBulkDeleteRequest\n ): Promise> {\n const r = await this.send(\"PUT\", \"/ciphers/restore\", request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async getAttachmentData(\n cipherId: string,\n attachmentId: string,\n emergencyAccessId?: string\n ): Promise {\n const path =\n (emergencyAccessId != null ? \"/emergency-access/\" + emergencyAccessId + \"/\" : \"/ciphers/\") +\n cipherId +\n \"/attachment/\" +\n attachmentId;\n const r = await this.send(\"GET\", path, null, true, true);\n return new AttachmentResponse(r);\n }\n\n async postCipherAttachment(\n id: string,\n request: AttachmentRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment/v2\", request, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentLegacy(id: string, data: FormData): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment\", data, true, true);\n return new CipherResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentAdminLegacy(id: string, data: FormData): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment-admin\", data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id + \"/attachment/\" + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send(\n \"DELETE\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/admin\",\n null,\n true,\n false\n );\n }\n\n postShareCipherAttachment(\n id: string,\n attachmentId: string,\n data: FormData,\n organizationId: string\n ): Promise {\n return this.send(\n \"POST\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/share?organizationId=\" + organizationId,\n data,\n true,\n false\n );\n }\n\n async renewAttachmentUploadUrl(\n id: string,\n attachmentId: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/renew\",\n null,\n true,\n true\n );\n return new AttachmentUploadDataResponse(r);\n }\n\n postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise {\n return this.send(\"POST\", \"/ciphers/\" + id + \"/attachment/\" + attachmentId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/details\",\n null,\n true,\n true\n );\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send(\"GET\", \"/collections\", null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections\",\n null,\n true,\n true\n );\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/users\",\n null,\n true,\n true\n );\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(\n organizationId: string,\n request: CollectionRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/collections\",\n request,\n true,\n true\n );\n return new CollectionResponse(r);\n }\n\n async putCollection(\n organizationId: string,\n id: string,\n request: CollectionRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/collections/\" + id,\n request,\n true,\n true\n );\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(\n organizationId: string,\n id: string,\n request: SelectionReadOnlyRequest[]\n ): Promise {\n await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/users\",\n request,\n true,\n false\n );\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/collections/\" + id,\n null,\n true,\n false\n );\n }\n\n deleteCollectionUser(\n organizationId: string,\n id: string,\n organizationUserId: string\n ): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/user/\" + organizationUserId,\n null,\n true,\n false\n );\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/details\",\n null,\n true,\n true\n );\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups\",\n null,\n true,\n true\n );\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/users\",\n null,\n true,\n true\n );\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/groups\",\n request,\n true,\n true\n );\n return new GroupResponse(r);\n }\n\n async putGroup(\n organizationId: string,\n id: string,\n request: GroupRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/groups/\" + id,\n request,\n true,\n true\n );\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/users\",\n request,\n true,\n false\n );\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/groups/\" + id,\n null,\n true,\n false\n );\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/user/\" + organizationUserId,\n null,\n true,\n false\n );\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies/\" + type,\n null,\n true,\n true\n );\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies\",\n null,\n true,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(\n organizationId: string,\n token: string,\n email: string,\n organizationUserId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" +\n organizationId +\n \"/policies/token?\" +\n \"token=\" +\n encodeURIComponent(token) +\n \"&email=\" +\n encodeURIComponent(email) +\n \"&organizationUserId=\" +\n organizationUserId,\n null,\n false,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByInvitedUser(\n organizationId: string,\n userId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies/invited-user?\" + \"userId=\" + userId,\n null,\n false,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(\n organizationId: string,\n type: PolicyType,\n request: PolicyRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/policies/\" + type,\n request,\n true,\n true\n );\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n null,\n true,\n true\n );\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/groups\",\n null,\n true,\n true\n );\n return r;\n }\n\n async getOrganizationUsers(\n organizationId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users\",\n null,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n async getOrganizationUserResetPasswordDetails(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reset-password-details\",\n null,\n true,\n true\n );\n return new OrganizationUserResetPasswordDetailsReponse(r);\n }\n\n async getOrganizationAutoEnrollStatus(\n identifier: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + identifier + \"/auto-enroll-status\",\n null,\n true,\n true\n );\n return new OrganizationAutoEnrollStatusResponse(r);\n }\n\n postOrganizationUserInvite(\n organizationId: string,\n request: OrganizationUserInviteRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/invite\",\n request,\n true,\n false\n );\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reinvite\",\n null,\n true,\n false\n );\n }\n\n async postManyOrganizationUserReinvite(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/reinvite\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n postOrganizationUserAccept(\n organizationId: string,\n id: string,\n request: OrganizationUserAcceptRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/accept\",\n request,\n true,\n false\n );\n }\n\n postOrganizationUserConfirm(\n organizationId: string,\n id: string,\n request: OrganizationUserConfirmRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/confirm\",\n request,\n true,\n false\n );\n }\n\n async postOrganizationUsersPublicKey(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/public-keys\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkPublicKeyResponse);\n }\n\n async postOrganizationUserBulkConfirm(\n organizationId: string,\n request: OrganizationUserBulkConfirmRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/confirm\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n putOrganizationUser(\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n request,\n true,\n false\n );\n }\n\n putOrganizationUserGroups(\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateGroupsRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/groups\",\n request,\n true,\n false\n );\n }\n\n putOrganizationUserResetPasswordEnrollment(\n organizationId: string,\n userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + userId + \"/reset-password-enrollment\",\n request,\n true,\n false\n );\n }\n\n putOrganizationUserResetPassword(\n organizationId: string,\n id: string,\n request: OrganizationUserResetPasswordRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reset-password\",\n request,\n true,\n false\n );\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n null,\n true,\n false\n );\n }\n\n async deleteManyOrganizationUsers(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/users\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send(\"GET\", \"/plans/\", null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + organizationId + \"/import\", request, true, false);\n }\n\n async postPublicImportDirectory(request: OrganizationImportRequest): Promise {\n return this.send(\"POST\", \"/public/organization/import\", request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send(\"GET\", \"/plans/sales-tax-rates/\", null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send(\"GET\", \"/settings/domains\", null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send(\"PUT\", \"/settings/domains\", request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? \"/sync?excludeDomains=true\" : \"/sync\";\n const r = await this.send(\"GET\", path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send(\"GET\", \"/two-factor\", null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(\n organizationId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/two-factor\",\n null,\n true,\n true\n );\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-authenticator\", request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-email\", request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-duo\", request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(\n organizationId: string,\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/two-factor/get-duo\",\n request,\n true,\n true\n );\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-yubikey\", request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorWebAuthn(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-webauthn\", request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async getTwoFactorWebAuthnChallenge(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-webauthn-challenge\", request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-recover\", request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/authenticator\", request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/email\", request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/duo\", request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(\n organizationId: string,\n request: UpdateTwoFactorDuoRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/two-factor/duo\",\n request,\n true,\n true\n );\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(\n request: UpdateTwoFactorYubioOtpRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/yubikey\", request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorWebAuthn(\n request: UpdateTwoFactorWebAuthnRequest\n ): Promise {\n const response = request.deviceResponse.response as AuthenticatorAttestationResponse;\n const data: any = Object.assign({}, request);\n\n data.deviceResponse = {\n id: request.deviceResponse.id,\n rawId: btoa(request.deviceResponse.id),\n type: request.deviceResponse.type,\n extensions: request.deviceResponse.getClientExtensionResults(),\n response: {\n AttestationObject: Utils.fromBufferToB64(response.attestationObject),\n clientDataJson: Utils.fromBufferToB64(response.clientDataJSON),\n },\n };\n\n const r = await this.send(\"PUT\", \"/two-factor/webauthn\", data, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async deleteTwoFactorWebAuthn(\n request: UpdateTwoFactorWebAuthnDeleteRequest\n ): Promise {\n const r = await this.send(\"DELETE\", \"/two-factor/webauthn\", request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/disable\", request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(\n organizationId: string,\n request: TwoFactorProviderRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/two-factor/disable\",\n request,\n true,\n true\n );\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send(\"POST\", \"/two-factor/recover\", request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send(\"POST\", \"/two-factor/send-email\", request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send(\"POST\", \"/two-factor/send-email-login\", request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/trusted\", null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/granted\", null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send(\"GET\", \"/emergency-access/\" + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/\" + id + \"/policies\", null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send(\"PUT\", \"/emergency-access/\" + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send(\"DELETE\", \"/emergency-access/\" + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/invite\", request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/reinvite\", null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/accept\", request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/confirm\", request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/initiate\", null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/approve\", null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/reject\", null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send(\"POST\", \"/emergency-access/\" + id + \"/takeover\", null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(\n id: string,\n request: EmergencyAccessPasswordRequest\n ): Promise {\n await this.send(\"POST\", \"/emergency-access/\" + id + \"/password\", request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send(\"POST\", \"/emergency-access/\" + id + \"/view\", null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/billing\", null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/subscription\", null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getCloudCommunicationsEnabled(): Promise {\n const r = await this.send(\"GET\", \"/organizations/connections/enabled\", null, true, true);\n return r as boolean;\n }\n\n async getOrganizationConnection(\n id: string,\n type: OrganizationConnectionType,\n configType: { new (response: any): TConfig }\n ): Promise> {\n const r = await this.send(\"GET\", `/organizations/connections/${id}/${type}`, null, true, true);\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async createOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig }\n ): Promise> {\n const r = await this.send(\"POST\", \"/organizations/connections/\", request, true, true);\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async updateOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig },\n organizationConnectionId?: string\n ): Promise> {\n const r = await this.send(\n \"PUT\",\n \"/organizations/connections/\" + organizationConnectionId,\n request,\n true,\n true\n );\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async deleteOrganizationConnection(id: string): Promise {\n return this.send(\"DELETE\", \"/organizations/connections/\" + id, null, true, false);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send(\n \"GET\",\n \"/organizations/\" + id + \"/license?installationId=\" + installationId,\n null,\n true,\n true\n );\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/tax\", null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async getOrganizationSso(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/sso\", null, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations\", request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(\n id: string,\n request: OrganizationUpdateRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/organizations/\" + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(\n id: string,\n request: OrganizationTaxInfoUpdateRequest\n ): Promise {\n return this.send(\"PUT\", \"/organizations/\" + id + \"/tax\", request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/leave\", null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/organizations/license\", data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/license\", data, true, false);\n }\n\n async postOrganizationApiKey(\n id: string,\n request: OrganizationApiKeyRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async getOrganizationApiKeyInformation(\n id: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + id + \"/api-key-information\",\n null,\n true,\n true\n );\n return new ListResponse(r, OrganizationApiKeyInformationResponse);\n }\n\n async postOrganizationRotateApiKey(\n id: string,\n request: OrganizationApiKeyRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + id + \"/rotate-api-key\",\n request,\n true,\n true\n );\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationSso(\n id: string,\n request: OrganizationSsoRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/sso\", request, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganizationUpgrade(\n id: string,\n request: OrganizationUpgradeRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/upgrade\", request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationUpdateSubscription(\n id: string,\n request: OrganizationSubscriptionUpdateRequest\n ): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/subscription\", request, true, false);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/seat\", request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/storage\", request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/payment\", request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/verify-bank\", request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/cancel\", null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/reinstate\", null, true, false);\n }\n\n deleteOrganization(id: string, request: SecretVerificationRequest): Promise {\n return this.send(\"DELETE\", \"/organizations/\" + id, request, true, false);\n }\n\n async getOrganizationKeys(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/keys\", null, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n async postOrganizationKeys(\n id: string,\n request: OrganizationKeysRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/keys\", request, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n // Provider APIs\n\n async postProviderSetup(id: string, request: ProviderSetupRequest) {\n const r = await this.send(\"POST\", \"/providers/\" + id + \"/setup\", request, true, true);\n return new ProviderResponse(r);\n }\n\n async getProvider(id: string) {\n const r = await this.send(\"GET\", \"/providers/\" + id, null, true, true);\n return new ProviderResponse(r);\n }\n\n async putProvider(id: string, request: ProviderUpdateRequest) {\n const r = await this.send(\"PUT\", \"/providers/\" + id, request, true, true);\n return new ProviderResponse(r);\n }\n\n // Provider User APIs\n\n async getProviderUsers(\n providerId: string\n ): Promise> {\n const r = await this.send(\"GET\", \"/providers/\" + providerId + \"/users\", null, true, true);\n return new ListResponse(r, ProviderUserUserDetailsResponse);\n }\n\n async getProviderUser(providerId: string, id: string): Promise {\n const r = await this.send(\"GET\", \"/providers/\" + providerId + \"/users/\" + id, null, true, true);\n return new ProviderUserResponse(r);\n }\n\n postProviderUserInvite(providerId: string, request: ProviderUserInviteRequest): Promise {\n return this.send(\"POST\", \"/providers/\" + providerId + \"/users/invite\", request, true, false);\n }\n\n postProviderUserReinvite(providerId: string, id: string): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/reinvite\",\n null,\n true,\n false\n );\n }\n\n async postManyProviderUserReinvite(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/reinvite\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async postProviderUserBulkConfirm(\n providerId: string,\n request: ProviderUserBulkConfirmRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/confirm\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async deleteManyProviderUsers(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\"DELETE\", \"/providers/\" + providerId + \"/users\", request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n postProviderUserAccept(\n providerId: string,\n id: string,\n request: ProviderUserAcceptRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/accept\",\n request,\n true,\n false\n );\n }\n\n postProviderUserConfirm(\n providerId: string,\n id: string,\n request: ProviderUserConfirmRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/confirm\",\n request,\n true,\n false\n );\n }\n\n async postProviderUsersPublicKey(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/public-keys\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkPublicKeyResponse);\n }\n\n putProviderUser(\n providerId: string,\n id: string,\n request: ProviderUserUpdateRequest\n ): Promise {\n return this.send(\"PUT\", \"/providers/\" + providerId + \"/users/\" + id, request, true, false);\n }\n\n deleteProviderUser(providerId: string, id: string): Promise {\n return this.send(\"DELETE\", \"/providers/\" + providerId + \"/users/\" + id, null, true, false);\n }\n\n // Provider Organization APIs\n\n async getProviderClients(\n providerId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/providers/\" + providerId + \"/organizations\",\n null,\n true,\n true\n );\n return new ListResponse(r, ProviderOrganizationOrganizationDetailsResponse);\n }\n\n postProviderAddOrganization(\n providerId: string,\n request: ProviderAddOrganizationRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/organizations/add\",\n request,\n true,\n false\n );\n }\n\n async postProviderCreateOrganization(\n providerId: string,\n request: ProviderOrganizationCreateRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/organizations\",\n request,\n true,\n true\n );\n return new ProviderOrganizationResponse(r);\n }\n\n deleteProviderOrganization(providerId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/providers/\" + providerId + \"/organizations/\" + id,\n null,\n true,\n false\n );\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/ciphers/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/organizations/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(\n organizationId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/events\",\n start,\n end,\n token\n ),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProvider(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/providers/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProviderUser(\n providerId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\n \"/providers/\" + providerId + \"/users/\" + id + \"/events\",\n start,\n end,\n token\n ),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n \"Device-Type\": this.deviceType,\n Authorization: \"Bearer \" + authHeader,\n \"Content-Type\": \"application/json; charset=utf-8\",\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n const response = await this.fetch(\n new Request(this.environmentService.getEventsUrl() + \"/collect\", {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n method: \"POST\",\n body: JSON.stringify(request),\n headers: headers,\n })\n );\n if (response.status !== 200) {\n return Promise.reject(\"Event post failed.\");\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send(\"GET\", \"/users/\" + id + \"/public-key\", null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send(\"GET\", \"/hibp/breach?username=\" + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send(\"POST\", \"/bitpay-invoice\", request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send(\"POST\", \"/setup-payment\", null, true, true);\n return r as string;\n }\n\n // Key Connector\n\n async getUserKeyFromKeyConnector(keyConnectorUrl: string): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/user-keys\", {\n cache: \"no-store\",\n method: \"GET\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: \"Bearer \" + authHeader,\n }),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n\n return new KeyConnectorUserKeyResponse(await response.json());\n }\n\n async postUserKeyToKeyConnector(\n keyConnectorUrl: string,\n request: KeyConnectorUserKeyRequest\n ): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/user-keys\", {\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: \"Bearer \" + authHeader,\n \"Content-Type\": \"application/json; charset=utf-8\",\n }),\n body: JSON.stringify(request),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async getKeyConnectorAlive(keyConnectorUrl: string) {\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/alive\", {\n cache: \"no-store\",\n method: \"GET\",\n headers: new Headers({\n Accept: \"application/json\",\n \"Content-Type\": \"application/json; charset=utf-8\",\n }),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (await this.tokenService.tokenNeedsRefresh()) {\n await this.doAuthRefresh();\n accessToken = await this.tokenService.getToken();\n }\n return accessToken;\n }\n\n async fetch(request: Request): Promise {\n if (request.method === \"GET\") {\n request.headers.set(\"Cache-Control\", \"no-store\");\n request.headers.set(\"Pragma\", \"no-cache\");\n }\n request.headers.set(\"Bitwarden-Client-Name\", this.platformUtilsService.getClientType());\n request.headers.set(\n \"Bitwarden-Client-Version\",\n await this.platformUtilsService.getApplicationVersion()\n );\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === \"\") {\n throw new Error(\"Organization Identifier was not provided.\");\n }\n const headers = new Headers({\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + path, {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n headers: headers,\n method: \"GET\",\n })\n );\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async postCreateSponsorship(\n sponsoredOrgId: string,\n request: OrganizationSponsorshipCreateRequest\n ): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/\" +\n (this.platformUtilsService.isSelfHost() ? \"self-hosted/\" : \"\") +\n sponsoredOrgId +\n \"/families-for-enterprise\",\n request,\n true,\n false\n );\n }\n\n async getSponsorshipSyncStatus(\n sponsoredOrgId: string\n ): Promise {\n const response = await this.send(\n \"GET\",\n \"/organization/sponsorship/\" + sponsoredOrgId + \"/sync-status\",\n null,\n true,\n true\n );\n return new OrganizationSponsorshipSyncStatusResponse(response);\n }\n\n async deleteRevokeSponsorship(sponsoringOrganizationId: string): Promise {\n return await this.send(\n \"DELETE\",\n \"/organization/sponsorship/\" +\n (this.platformUtilsService.isSelfHost() ? \"self-hosted/\" : \"\") +\n sponsoringOrganizationId,\n null,\n true,\n false\n );\n }\n\n async deleteRemoveSponsorship(sponsoringOrgId: string): Promise {\n return await this.send(\n \"DELETE\",\n \"/organization/sponsorship/sponsored/\" + sponsoringOrgId,\n null,\n true,\n false\n );\n }\n\n async postPreValidateSponsorshipToken(sponsorshipToken: string): Promise {\n const r = await this.send(\n \"POST\",\n \"/organization/sponsorship/validate-token?sponsorshipToken=\" +\n encodeURIComponent(sponsorshipToken),\n null,\n true,\n true\n );\n return r as boolean;\n }\n\n async postRedeemSponsorship(\n sponsorshipToken: string,\n request: OrganizationSponsorshipRedeemRequest\n ): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/redeem?sponsorshipToken=\" + encodeURIComponent(sponsorshipToken),\n request,\n true,\n false\n );\n }\n\n async postResendSponsorshipOffer(sponsoringOrgId: string): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/\" + sponsoringOrgId + \"/families-for-enterprise/resend\",\n null,\n true,\n false\n );\n }\n\n protected async doAuthRefresh(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken != null && refreshToken !== \"\") {\n return this.doRefreshToken();\n }\n\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (!Utils.isNullOrWhitespace(clientId) && !Utils.isNullOrWhitespace(clientSecret)) {\n return this.doApiTokenRefresh();\n }\n\n throw new Error(\"Cannot refresh token, no refresh token or api keys are stored\");\n }\n\n protected async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === \"\") {\n throw new Error();\n }\n const headers = new Headers({\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const decodedToken = await this.tokenService.decodeToken();\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + \"/connect/token\", {\n body: this.qsStringify({\n grant_type: \"refresh_token\",\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: \"no-store\",\n credentials: this.getCredentials(),\n headers: headers,\n method: \"POST\",\n })\n );\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(\n tokenResponse.accessToken,\n tokenResponse.refreshToken,\n null\n );\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n protected async doApiTokenRefresh(): Promise {\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n const tokenRequest = new ApiTokenRequest(\n clientId,\n clientSecret,\n new TokenRequestTwoFactor(),\n deviceRequest\n );\n\n const response = await this.postIdentityToken(tokenRequest);\n if (!(response instanceof IdentityTokenResponse)) {\n throw new Error(\"Invalid response received when refreshing api token\");\n }\n\n await this.tokenService.setToken(response.accessToken);\n }\n\n private async send(\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\n path: string,\n body: any,\n authed: boolean,\n hasResponse: boolean,\n apiUrl?: string,\n alterHeaders?: (headers: Headers) => void\n ): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.environmentService.getApiUrl() : apiUrl;\n\n const requestUrl = apiUrl + path;\n // Prevent directory traversal from malicious paths\n if (new URL(requestUrl).href !== requestUrl) {\n return Promise.reject(\"Invalid request url path.\");\n }\n\n const headers = new Headers({\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set(\"Authorization\", \"Bearer \" + authHeader);\n }\n if (body != null) {\n if (typeof body === \"string\") {\n requestInit.body = body;\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\");\n } else if (typeof body === \"object\") {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set(\"Accept\", \"application/json\");\n }\n if (alterHeaders != null) {\n alterHeaders(headers);\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(requestUrl, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(\n response: Response,\n tokenError: boolean,\n authed: boolean\n ): Promise {\n if (\n authed &&\n ((tokenError && response.status === 400) ||\n response.status === 401 ||\n response.status === 403)\n ) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = { Message: await response.text() };\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n })\n .join(\"&\");\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.environmentService.hasBaseUrl()) {\n return \"include\";\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += \"?start=\" + start;\n }\n if (end != null) {\n base += base.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n base += \"end=\" + end;\n }\n if (token != null) {\n base += base.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n base += \"continuationToken=\" + token;\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get(\"content-type\");\n return typeHeader != null && typeHeader.indexOf(\"application/json\") > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get(\"content-type\");\n return typeHeader != null && typeHeader.indexOf(\"text\") > -1;\n }\n}\n","import { AppIdService as AppIdServiceAbstraction } from \"../abstractions/appId.service\";\nimport { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { Utils } from \"../misc/utils\";\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {}\n\n getAppId(): Promise {\n return this.makeAndGetAppId(\"appId\");\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId(\"anonymousAppId\");\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key, {\n htmlStorageLocation: HtmlStorageLocation.Local,\n });\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid, {\n htmlStorageLocation: HtmlStorageLocation.Local,\n });\n return guid;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { AuditService as AuditServiceAbstraction } from \"../abstractions/audit.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { throttle } from \"../misc/throttle\";\nimport { Utils } from \"../misc/utils\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\n\nconst PwnedPasswordsApi = \"https://api.pwnedpasswords.com/range/\";\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService\n ) {}\n\n @throttle(100, () => \"passwordLeaked\")\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, \"sha1\");\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find((v) => {\n return v.split(\":\")[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(\":\")[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { AppIdService } from \"../abstractions/appId.service\";\nimport { AuthService as AuthServiceAbstraction } from \"../abstractions/auth.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { TwoFactorService } from \"../abstractions/twoFactor.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { AuthenticationType } from \"../enums/authenticationType\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { ApiLogInStrategy } from \"../misc/logInStrategies/apiLogin.strategy\";\nimport { PasswordLogInStrategy } from \"../misc/logInStrategies/passwordLogin.strategy\";\nimport { SsoLogInStrategy } from \"../misc/logInStrategies/ssoLogin.strategy\";\nimport { AuthResult } from \"../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TokenRequestTwoFactor } from \"../models/request/identityToken/tokenRequestTwoFactor\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\n\nconst sessionTimeoutLength = 2 * 60 * 1000; // 2 minutes\n\nexport class AuthService implements AuthServiceAbstraction {\n get email(): string {\n return this.logInStrategy instanceof PasswordLogInStrategy ? this.logInStrategy.email : null;\n }\n\n get masterPasswordHash(): string {\n return this.logInStrategy instanceof PasswordLogInStrategy\n ? this.logInStrategy.masterPasswordHash\n : null;\n }\n\n private logInStrategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy;\n private sessionTimeout: any;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected tokenService: TokenService,\n protected appIdService: AppIdService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected logService: LogService,\n protected keyConnectorService: KeyConnectorService,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected twoFactorService: TwoFactorService,\n protected i18nService: I18nService\n ) {}\n\n async logIn(\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ): Promise {\n this.clearState();\n\n let strategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy;\n\n if (credentials.type === AuthenticationType.Password) {\n strategy = new PasswordLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this\n );\n } else if (credentials.type === AuthenticationType.Sso) {\n strategy = new SsoLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this.keyConnectorService\n );\n } else if (credentials.type === AuthenticationType.Api) {\n strategy = new ApiLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this.environmentService,\n this.keyConnectorService\n );\n }\n\n const result = await strategy.logIn(credentials as any);\n\n if (result?.requiresTwoFactor) {\n this.saveState(strategy);\n }\n return result;\n }\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ): Promise {\n if (this.logInStrategy == null) {\n throw new Error(this.i18nService.t(\"sessionTimeout\"));\n }\n\n try {\n const result = await this.logInStrategy.logInTwoFactor(twoFactor, captchaResponse);\n\n // Only clear state if 2FA token has been accepted, otherwise we need to be able to try again\n if (!result.requiresTwoFactor && !result.requiresCaptcha) {\n this.clearState();\n }\n return result;\n } catch (e) {\n // API exceptions are okay, but if there are any unhandled client-side errors then clear state to be safe\n if (!(e instanceof ErrorResponse)) {\n this.clearState();\n }\n throw e;\n }\n }\n\n logOut(callback: () => void) {\n callback();\n this.messagingService.send(\"loggedOut\");\n }\n\n authingWithApiKey(): boolean {\n return this.logInStrategy instanceof ApiLogInStrategy;\n }\n\n authingWithSso(): boolean {\n return this.logInStrategy instanceof SsoLogInStrategy;\n }\n\n authingWithPassword(): boolean {\n return this.logInStrategy instanceof PasswordLogInStrategy;\n }\n\n async getAuthStatus(userId?: string): Promise {\n const isAuthenticated = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!isAuthenticated) {\n return AuthenticationStatus.LoggedOut;\n }\n\n // Keys aren't stored for a device that is locked or logged out\n // Make sure we're logged in before checking this, otherwise we could mix up those states\n const neverLock =\n (await this.cryptoService.hasKeyStored(KeySuffixOptions.Auto, userId)) &&\n !(await this.stateService.getEverBeenUnlocked({ userId: userId }));\n if (neverLock) {\n // TODO: This also _sets_ the key so when we check memory in the next line it finds a key.\n // We should refactor here.\n await this.cryptoService.getKey(KeySuffixOptions.Auto, userId);\n }\n\n const hasKeyInMemory = await this.cryptoService.hasKeyInMemory(userId);\n if (!hasKeyInMemory) {\n return AuthenticationStatus.Locked;\n }\n\n return AuthenticationStatus.Unlocked;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n private saveState(strategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy) {\n this.logInStrategy = strategy;\n this.startSessionTimeout();\n }\n\n private clearState() {\n this.logInStrategy = null;\n this.clearSessionTimeout();\n }\n\n private startSessionTimeout() {\n this.clearSessionTimeout();\n this.sessionTimeout = setTimeout(() => this.clearState(), sessionTimeoutLength);\n }\n\n private clearSessionTimeout() {\n if (this.sessionTimeout != null) {\n clearTimeout(this.sessionTimeout);\n }\n }\n}\n","import { LogService } from \"../abstractions/log.service\";\nimport { Utils } from \"../misc/utils\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\n\nconst MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB\nconst MAX_BLOCKS_PER_BLOB = 50000;\n\nexport class AzureFileUploadService {\n constructor(private logService: LogService) {}\n\n async upload(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n if (data.buffer.byteLength <= MAX_SINGLE_BLOB_UPLOAD_SIZE) {\n return await this.azureUploadBlob(url, data);\n } else {\n return await this.azureUploadBlocks(url, data, renewalCallback);\n }\n }\n private async azureUploadBlob(url: string, data: EncArrayBuffer) {\n const urlObject = Utils.getUrl(url);\n const headers = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": urlObject.searchParams.get(\"sv\"),\n \"Content-Length\": data.buffer.byteLength.toString(),\n \"x-ms-blob-type\": \"BlockBlob\",\n });\n\n const request = new Request(url, {\n body: data.buffer,\n cache: \"no-store\",\n method: \"PUT\",\n headers: headers,\n });\n\n const blobResponse = await fetch(request);\n\n if (blobResponse.status !== 201) {\n throw new Error(`Failed to create Azure blob: ${blobResponse.status}`);\n }\n }\n private async azureUploadBlocks(\n url: string,\n data: EncArrayBuffer,\n renewalCallback: () => Promise\n ) {\n const baseUrl = Utils.getUrl(url);\n const blockSize = this.getMaxBlockSize(baseUrl.searchParams.get(\"sv\"));\n let blockIndex = 0;\n const numBlocks = Math.ceil(data.buffer.byteLength / blockSize);\n const blocksStaged: string[] = [];\n\n if (numBlocks > MAX_BLOCKS_PER_BLOB) {\n throw new Error(\n `Cannot upload file, exceeds maximum size of ${blockSize * MAX_BLOCKS_PER_BLOB}`\n );\n }\n\n // eslint-disable-next-line\n try {\n while (blockIndex < numBlocks) {\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockUrl = Utils.getUrl(url);\n const blockId = this.encodedBlockId(blockIndex);\n blockUrl.searchParams.append(\"comp\", \"block\");\n blockUrl.searchParams.append(\"blockid\", blockId);\n const start = blockIndex * blockSize;\n const blockData = data.buffer.slice(start, start + blockSize);\n const blockHeaders = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": blockUrl.searchParams.get(\"sv\"),\n \"Content-Length\": blockData.byteLength.toString(),\n });\n\n const blockRequest = new Request(blockUrl.toString(), {\n body: blockData,\n cache: \"no-store\",\n method: \"PUT\",\n headers: blockHeaders,\n });\n\n const blockResponse = await fetch(blockRequest);\n\n if (blockResponse.status !== 201) {\n const message = `Unsuccessful block PUT. Received status ${blockResponse.status}`;\n this.logService.error(message + \"\\n\" + (await blockResponse.json()));\n throw new Error(message);\n }\n\n blocksStaged.push(blockId);\n blockIndex++;\n }\n\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockListUrl = Utils.getUrl(url);\n const blockListXml = this.blockListXml(blocksStaged);\n blockListUrl.searchParams.append(\"comp\", \"blocklist\");\n const headers = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": blockListUrl.searchParams.get(\"sv\"),\n \"Content-Length\": blockListXml.length.toString(),\n });\n\n const request = new Request(blockListUrl.toString(), {\n body: blockListXml,\n cache: \"no-store\",\n method: \"PUT\",\n headers: headers,\n });\n\n const response = await fetch(request);\n\n if (response.status !== 201) {\n const message = `Unsuccessful block list PUT. Received status ${response.status}`;\n this.logService.error(message + \"\\n\" + (await response.json()));\n throw new Error(message);\n }\n } catch (e) {\n throw e;\n }\n }\n\n private async renewUrlIfNecessary(\n url: string,\n renewalCallback: () => Promise\n ): Promise {\n const urlObject = Utils.getUrl(url);\n const expiry = new Date(urlObject.searchParams.get(\"se\") ?? \"\");\n\n if (isNaN(expiry.getTime())) {\n expiry.setTime(Date.now() + 3600000);\n }\n\n if (expiry.getTime() < Date.now() + 1000) {\n return await renewalCallback();\n }\n return url;\n }\n\n private encodedBlockId(blockIndex: number) {\n // Encoded blockId max size is 64, so pre-encoding max size is 48\n const utfBlockId = (\n \"000000000000000000000000000000000000000000000000\" + blockIndex.toString()\n ).slice(-48);\n return Utils.fromUtf8ToB64(utfBlockId);\n }\n\n private blockListXml(blockIdList: string[]) {\n let xml = '';\n blockIdList.forEach((blockId) => {\n xml += `${blockId}`;\n });\n xml += \"\";\n return xml;\n }\n\n private getMaxBlockSize(version: string) {\n if (Version.compare(version, \"2019-12-12\") >= 0) {\n return 4000 * 1024 * 1024; // 4000 MiB\n } else if (Version.compare(version, \"2016-05-31\") >= 0) {\n return 100 * 1024 * 1024; // 100 MiB\n } else {\n return 4 * 1024 * 1024; // 4 MiB\n }\n }\n}\n\nclass Version {\n /**\n * Compares two Azure Versions against each other\n * @param a Version to compare\n * @param b Version to compare\n * @returns a number less than zero if b is newer than a, 0 if equal,\n * and greater than zero if a is newer than b\n */\n static compare(a: Required | string, b: Required | string) {\n if (typeof a === \"string\") {\n a = new Version(a);\n }\n\n if (typeof b === \"string\") {\n b = new Version(b);\n }\n\n return a.year !== b.year\n ? a.year - b.year\n : a.month !== b.month\n ? a.month - b.month\n : a.day !== b.day\n ? a.day - b.day\n : 0;\n }\n year = 0;\n month = 0;\n day = 0;\n\n constructor(version: string) {\n try {\n const parts = version.split(\"-\").map((v) => Number.parseInt(v, 10));\n this.year = parts[0];\n this.month = parts[1];\n this.day = parts[2];\n } catch {\n // Ignore error\n }\n }\n /**\n * Compares two Azure Versions against each other\n * @param compareTo Version to compare against\n * @returns a number less than zero if compareTo is newer, 0 if equal,\n * and greater than zero if this is greater than compareTo\n */\n compare(compareTo: Required | string) {\n return Version.compare(this, compareTo);\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { Utils } from \"../misc/utils\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\n\nexport class BitwardenFileUploadService {\n constructor(private apiService: ApiService) {}\n\n async upload(\n encryptedFileName: string,\n encryptedFileData: EncArrayBuffer,\n apiCall: (fd: FormData) => Promise\n ) {\n const fd = new FormData();\n try {\n const blob = new Blob([encryptedFileData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"data\", blob, encryptedFileName);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\n \"data\",\n Buffer.from(encryptedFileData.buffer) as any,\n {\n filepath: encryptedFileName,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n await apiCall(fd);\n }\n}\n","import { BroadcasterService as BroadcasterServiceAbstraction } from \"../abstractions/broadcaster.service\";\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach((value) => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService as CipherServiceAbstraction } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FileUploadService } from \"../abstractions/fileUpload.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { SearchService } from \"../abstractions/search.service\";\nimport { SettingsService } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { Attachment } from \"../models/domain/attachment\";\nimport { Card } from \"../models/domain/card\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport Domain from \"../models/domain/domainBase\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { Field } from \"../models/domain/field\";\nimport { Identity } from \"../models/domain/identity\";\nimport { Login } from \"../models/domain/login\";\nimport { LoginUri } from \"../models/domain/loginUri\";\nimport { Password } from \"../models/domain/password\";\nimport { SecureNote } from \"../models/domain/secureNote\";\nimport { SortedCiphersCache } from \"../models/domain/sortedCiphersCache\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkRestoreRequest } from \"../models/request/cipherBulkRestoreRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { AttachmentView } from \"../models/view/attachmentView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { PasswordHistoryView } from \"../models/view/passwordHistoryView\";\nimport { View } from \"../models/view/view\";\n\nconst DomainMatchBlacklist = new Map>([\n [\"google.com\", new Set([\"script.google.com\"])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(\n this.sortCiphersByLastUsed\n );\n\n constructor(\n private cryptoService: CryptoService,\n private settingsService: SettingsService,\n private apiService: ApiService,\n private fileUploadService: FileUploadService,\n private i18nService: I18nService,\n private searchService: () => SearchService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async getDecryptedCipherCache(): Promise {\n const decryptedCiphers = await this.stateService.getDecryptedCiphers();\n return decryptedCiphers;\n }\n\n async setDecryptedCipherCache(value: CipherView[]) {\n await this.stateService.setDecryptedCiphers(value);\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n async clearCache(userId?: string): Promise {\n await this.clearDecryptedCiphersState(userId);\n }\n\n async encrypt(\n model: CipherView,\n key?: SymmetricCryptoKey,\n originalCipher: Cipher = null\n ): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (\n existingCipher.login.password != null &&\n existingCipher.login.password !== \"\" &&\n existingCipher.login.password !== model.login.password\n ) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(\n (f) =>\n f.type === FieldType.Hidden &&\n f.name != null &&\n f.name !== \"\" &&\n f.value != null &&\n f.value !== \"\"\n );\n const hiddenFields =\n model.fields == null\n ? []\n : model.fields.filter(\n (f) => f.type === FieldType.Hidden && f.name != null && f.name !== \"\"\n );\n existingHiddenFields.forEach((ef) => {\n const matchedField = hiddenFields.find((f) => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + \": \" + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n cipher.reprompt = model.reprompt;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error(\"Cannot encrypt cipher for organization. No key.\");\n }\n }\n await Promise.all([\n this.encryptObjProperty(\n model,\n cipher,\n {\n name: null,\n notes: null,\n },\n key\n ),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then((fields) => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then((ph) => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then((attachments) => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(\n attachmentsModel: AttachmentView[],\n key: SymmetricCryptoKey\n ): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async (model) => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(\n model,\n attachment,\n {\n fileName: null,\n },\n key\n ).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce(async (promise, field) => {\n await promise;\n const encField = await self.encryptField(field, key);\n encFields.push(encField);\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n field.linkedId = fieldModel.linkedId;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== \"true\") {\n fieldModel.value = \"false\";\n }\n\n await this.encryptObjProperty(\n fieldModel,\n field,\n {\n name: null,\n value: null,\n },\n key\n );\n\n return field;\n }\n\n async encryptPasswordHistories(\n phModels: PasswordHistoryView[],\n key: SymmetricCryptoKey\n ): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce(async (promise, ph) => {\n await promise;\n const encPh = await self.encryptPasswordHistory(ph, key);\n encPhs.push(encPh);\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(\n phModel: PasswordHistoryView,\n key: SymmetricCryptoKey\n ): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(\n phModel,\n ph,\n {\n password: null,\n },\n key\n );\n\n return ph;\n }\n\n async get(id: string): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n // eslint-disable-next-line\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n const localData = await this.stateService.getLocalData();\n return new Cipher(ciphers[id], localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const localData = await this.stateService.getLocalData();\n const ciphers = await this.stateService.getEncryptedCiphers();\n const response: Cipher[] = [];\n for (const id in ciphers) {\n // eslint-disable-next-line\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => \"getAllDecrypted\")\n async getAllDecrypted(): Promise {\n const userId = await this.stateService.getUserId();\n if ((await this.getDecryptedCipherCache()) != null) {\n if (\n this.searchService != null &&\n (this.searchService().indexedEntityId ?? userId) !== userId\n ) {\n await this.searchService().indexCiphers(userId, await this.getDecryptedCipherCache());\n }\n return await this.getDecryptedCipherCache();\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(async (cipher) => {\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n await this.setDecryptedCipherCache(decCiphers);\n return decCiphers;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter((cipher) => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (\n !folder &&\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(groupingId) > -1\n ) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(\n url: string,\n includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null\n ): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise =\n domain == null\n ? Promise.resolve([])\n : this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach((eqDomain) => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.stateService.getDefaultUriMatch();\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter((cipher) => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host: {\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n }\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, \"i\");\n if (regex.test(url)) {\n return true;\n }\n } catch (e) {\n this.logService.error(e);\n }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach((r) => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string, autofillOnPageLoad = false): Promise {\n return this.getCipherForUrl(url, true, false, autofillOnPageLoad);\n }\n\n async getLastLaunchedForUrl(url: string, autofillOnPageLoad = false): Promise {\n return this.getCipherForUrl(url, false, true, autofillOnPageLoad);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.stateService.getLocalData();\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.stateService.setLocalData(ciphersLocalData);\n\n const decryptedCipherCache = await this.stateService.getDecryptedCiphers();\n if (!decryptedCipherCache) {\n return;\n }\n\n for (let i = 0; i < decryptedCipherCache.length; i++) {\n const cached = decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n await this.stateService.setDecryptedCiphers(decryptedCipherCache);\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.stateService.getLocalData();\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.stateService.setLocalData(ciphersLocalData);\n\n const decryptedCipherCache = await this.stateService.getDecryptedCiphers();\n if (!decryptedCipherCache) {\n return;\n }\n\n for (let i = 0; i < decryptedCipherCache.length; i++) {\n const cached = decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n await this.stateService.setDecryptedCiphers(decryptedCipherCache);\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.stateService.getNeverDomains();\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.stateService.setNeverDomains(domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const data = new CipherData(response, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(\n cipher: CipherView,\n organizationId: string,\n collectionIds: string[]\n ): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach((attachment) => {\n if (attachment.key == null) {\n attachmentPromises.push(\n this.shareAttachmentWithServer(attachment, cipher.id, organizationId)\n );\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const data = new CipherData(response, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(\n ciphers: CipherView[],\n organizationId: string,\n collectionIds: string[]\n ): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(\n this.encrypt(cipher).then((c) => {\n encCiphers.push(c);\n })\n );\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n try {\n await this.apiService.putShareCiphers(request);\n } catch (e) {\n for (const cipher of ciphers) {\n cipher.organizationId = null;\n cipher.collectionIds = null;\n }\n throw e;\n }\n await this.upsert(encCiphers.map((c) => c.toCipherData()));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(\n cipher,\n unencryptedFile.name,\n evt.target.result,\n admin\n );\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = () => {\n reject(\"Error reading file.\");\n };\n });\n }\n\n async saveAttachmentRawWithServer(\n cipher: Cipher,\n filename: string,\n data: ArrayBuffer,\n admin = false\n ): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const request: AttachmentRequest = {\n key: dataEncKey[1].encryptedString,\n fileName: encFileName.encryptedString,\n fileSize: encData.buffer.byteLength,\n adminRequest: admin,\n };\n\n let response: CipherResponse;\n try {\n const uploadDataResponse = await this.apiService.postCipherAttachment(cipher.id, request);\n response = admin ? uploadDataResponse.cipherMiniResponse : uploadDataResponse.cipherResponse;\n await this.fileUploadService.uploadCipherAttachment(\n admin,\n uploadDataResponse,\n encFileName,\n encData\n );\n } catch (e) {\n if (\n (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) ||\n (e as ErrorResponse).statusCode === 405\n ) {\n response = await this.legacyServerAttachmentFileUpload(\n admin,\n cipher.id,\n encFileName,\n encData,\n dataEncKey[1]\n );\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n const cData = new CipherData(response, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerAttachmentFileUpload(\n admin: boolean,\n cipherId: string,\n encFileName: EncString,\n encData: EncArrayBuffer,\n key: EncString\n ) {\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"key\", key.encryptedString);\n fd.append(\"data\", blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"key\", key.encryptedString);\n fd.append(\n \"data\",\n Buffer.from(encData.buffer) as any,\n {\n filepath: encFileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdminLegacy(cipherId, fd);\n } else {\n response = await this.apiService.postCipherAttachmentLegacy(cipherId, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n return response;\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const data = cipher.toCipherData();\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n let ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach((c) => {\n ciphers[c.id] = c;\n });\n }\n\n await this.replace(ciphers);\n }\n\n async replace(ciphers: { [id: string]: CipherData }): Promise {\n await this.clearDecryptedCiphersState();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async clear(userId?: string): Promise {\n await this.clearEncryptedCiphersState(userId);\n await this.clearCache(userId);\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n let ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach((id) => {\n // eslint-disable-next-line\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async delete(id: string | string[]): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach((i) => {\n delete ciphers[i];\n });\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n\n // eslint-disable-next-line\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed =\n a.localData && a.localData.lastUsedDate ? (a.localData.lastUsedDate as number) : null;\n const bLastUsed =\n b.localData && b.localData.lastUsedDate ? (b.localData.lastUsedDate as number) : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator\n ? this.i18nService.collator.compare(aName, bName)\n : aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator\n ? this.i18nService.collator.compare(aName, bName)\n : aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === \"string\") {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(\n cipher: { id: string; revisionDate: string } | { id: string; revisionDate: string }[]\n ) {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string; revisionDate: string }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n if (cipher.constructor.name === Array.name) {\n (cipher as { id: string; revisionDate: string }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string; revisionDate: string });\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string; revisionDate: string }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(\n attachmentView: AttachmentView,\n cipherId: string,\n organizationId: string\n ): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: \"no-store\" })\n );\n if (attachmentResponse.status !== 200) {\n throw Error(\"Failed to download attachment: \" + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"key\", dataEncKey[1].encryptedString);\n fd.append(\"data\", blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"key\", dataEncKey[1].encryptedString);\n fd.append(\n \"data\",\n Buffer.from(encData.buffer) as any,\n {\n filepath: encFileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(\n cipherId,\n attachmentView.id,\n fd,\n organizationId\n );\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(\n model: V,\n obj: D,\n map: any,\n key: SymmetricCryptoKey\n ): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n (function (theProp, theObj) {\n const p = Promise.resolve()\n .then(() => {\n const modelProp = (model as any)[map[theProp] || theProp];\n if (modelProp && modelProp !== \"\") {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n })\n .then((val: EncString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n cipher.login.autofillOnPageLoad = model.login.autofillOnPageLoad;\n await this.encryptObjProperty(\n model.login,\n cipher.login,\n {\n username: null,\n password: null,\n totp: null,\n },\n key\n );\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(\n model.login.uris[i],\n loginUri,\n {\n uri: null,\n },\n key\n );\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(\n model.card,\n cipher.card,\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n key\n );\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(\n model.identity,\n cipher.identity,\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n key\n );\n return;\n default:\n throw new Error(\"Unknown cipher type.\");\n }\n }\n\n private async getCipherForUrl(\n url: string,\n lastUsed: boolean,\n lastLaunched: boolean,\n autofillOnPageLoad: boolean\n ): Promise {\n const cacheKey = autofillOnPageLoad ? \"autofillOnPageLoad-\" + url : url;\n\n if (!this.sortedCiphersCache.isCached(cacheKey)) {\n let ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n\n if (autofillOnPageLoad) {\n const autofillOnPageLoadDefault = await this.stateService.getAutoFillOnPageLoadDefault();\n ciphers = ciphers.filter(\n (cipher) =>\n cipher.login.autofillOnPageLoad ||\n (cipher.login.autofillOnPageLoad == null && autofillOnPageLoadDefault !== false)\n );\n if (ciphers.length === 0) {\n return null;\n }\n }\n\n this.sortedCiphersCache.addCiphers(cacheKey, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(cacheKey);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(cacheKey);\n } else {\n return this.sortedCiphersCache.getNext(cacheKey);\n }\n }\n\n private async clearEncryptedCiphersState(userId?: string) {\n await this.stateService.setEncryptedCiphers(null, { userId: userId });\n }\n\n private async clearDecryptedCiphersState(userId?: string) {\n await this.stateService.setDecryptedCiphers(null, { userId: userId });\n this.clearSortedCiphers();\n }\n\n private clearSortedCiphers() {\n this.sortedCiphersCache.clear();\n }\n}\n","import { CollectionService as CollectionServiceAbstraction } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ServiceUtils } from \"../misc/serviceUtils\";\nimport { Utils } from \"../misc/utils\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { Collection } from \"../models/domain/collection\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nconst NestingDelimiter = \"/\";\n\nexport class CollectionService implements CollectionServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private i18nService: I18nService,\n private stateService: StateService\n ) {}\n\n async clearCache(userId?: string): Promise {\n await this.stateService.setDecryptedCollections(null, { userId: userId });\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error(\"Collection has no organization id.\");\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error(\"No key for this collection's organization.\");\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach((collection) => {\n promises.push(collection.decrypt().then((c) => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n async get(id: string): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n // eslint-disable-next-line\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n const response: Collection[] = [];\n for (const id in collections) {\n // eslint-disable-next-line\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n let decryptedCollections = await this.stateService.getDecryptedCollections();\n if (decryptedCollections != null) {\n return decryptedCollections;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const collections = await this.getAll();\n decryptedCollections = await this.decryptMany(collections);\n await this.stateService.setDecryptedCollections(decryptedCollections);\n return decryptedCollections;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach((c) => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, \"\").split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n let collections = await this.stateService.getEncryptedCollections();\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach((c) => {\n collections[c.id] = c;\n });\n }\n\n await this.replace(collections);\n }\n\n async replace(collections: { [id: string]: CollectionData }): Promise {\n await this.clearCache();\n await this.stateService.setEncryptedCollections(collections);\n }\n\n async clear(userId?: string): Promise {\n await this.clearCache(userId);\n await this.stateService.setEncryptedCollections(null, { userId: userId });\n }\n\n async delete(id: string | string[]): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n if (collections == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n delete collections[id];\n } else {\n (id as string[]).forEach((i) => {\n delete collections[i];\n });\n }\n\n await this.replace(collections);\n }\n}\n","import * as hrtime from \"browser-hrtime\";\n\nimport { LogService as LogServiceAbstraction } from \"../abstractions/log.service\";\nimport { LogLevelType } from \"../enums/logLevelType\";\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(\n protected isDev: boolean,\n protected filter: (level: LogLevelType) => boolean = null\n ) {}\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // eslint-disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // eslint-disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // eslint-disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // eslint-disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label = \"default\") {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label = \"default\"): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {}\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from \"big-integer\";\n\nimport { CryptoService as CryptoServiceAbstraction } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EncryptionType } from \"../enums/encryptionType\";\nimport { HashPurpose } from \"../enums/hashPurpose\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { Utils } from \"../misc/utils\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EncryptedObject } from \"../models/domain/encryptedObject\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { ProfileOrganizationResponse } from \"../models/response/profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"../models/response/profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"../models/response/profileProviderResponse\";\n\nexport class CryptoService implements CryptoServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n protected platformUtilService: PlatformUtilsService,\n protected logService: LogService,\n protected stateService: StateService\n ) {}\n\n async setKey(key: SymmetricCryptoKey, userId?: string): Promise {\n await this.stateService.setCryptoMasterKey(key, { userId: userId });\n await this.storeKey(key, userId);\n }\n\n async setKeyHash(keyHash: string): Promise {\n await this.stateService.setKeyHash(keyHash);\n }\n\n async setEncKey(encKey: string): Promise {\n if (encKey == null) {\n return;\n }\n\n await this.stateService.setDecryptedCryptoSymmetricKey(null);\n await this.stateService.setEncryptedCryptoSymmetricKey(encKey);\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.stateService.setDecryptedPrivateKey(null);\n await this.stateService.setEncryptedPrivateKey(encPrivateKey);\n }\n\n async setOrgKeys(\n orgs: ProfileOrganizationResponse[],\n providerOrgs: ProfileProviderOrganizationResponse[]\n ): Promise {\n const orgKeys: any = {};\n orgs.forEach((org) => {\n orgKeys[org.id] = org.key;\n });\n\n for (const providerOrg of providerOrgs) {\n // Convert provider encrypted keys to user encrypted.\n const providerKey = await this.getProviderKey(providerOrg.providerId);\n const decValue = await this.decryptToBytes(new EncString(providerOrg.key), providerKey);\n orgKeys[providerOrg.id] = (await this.rsaEncrypt(decValue)).encryptedString;\n }\n\n await this.stateService.setDecryptedOrganizationKeys(null);\n return await this.stateService.setEncryptedOrganizationKeys(orgKeys);\n }\n\n async setProviderKeys(providers: ProfileProviderResponse[]): Promise {\n const providerKeys: any = {};\n providers.forEach((provider) => {\n providerKeys[provider.id] = provider.key;\n });\n\n await this.stateService.setDecryptedProviderKeys(null);\n return await this.stateService.setEncryptedProviderKeys(providerKeys);\n }\n\n async getKey(keySuffix?: KeySuffixOptions, userId?: string): Promise {\n const inMemoryKey = await this.stateService.getCryptoMasterKey({ userId: userId });\n\n if (inMemoryKey != null) {\n return inMemoryKey;\n }\n\n keySuffix ||= KeySuffixOptions.Auto;\n const symmetricKey = await this.getKeyFromStorage(keySuffix, userId);\n\n if (symmetricKey != null) {\n // TODO: Refactor here so get key doesn't also set key\n this.setKey(symmetricKey, userId);\n }\n\n return symmetricKey;\n }\n\n async getKeyFromStorage(\n keySuffix: KeySuffixOptions,\n userId?: string\n ): Promise {\n const key = await this.retrieveKeyFromStorage(keySuffix, userId);\n if (key != null) {\n const symmetricKey = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n\n if (!(await this.validateKey(symmetricKey))) {\n this.logService.warning(\"Wrong key, throwing away stored key\");\n await this.clearSecretKeyStore(userId);\n return null;\n }\n\n return symmetricKey;\n }\n return null;\n }\n\n async getKeyHash(): Promise {\n return await this.stateService.getKeyHash();\n }\n\n async compareAndUpdateKeyHash(masterPassword: string, key: SymmetricCryptoKey): Promise {\n const storedKeyHash = await this.getKeyHash();\n if (masterPassword != null && storedKeyHash != null) {\n const localKeyHash = await this.hashPassword(\n masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n if (localKeyHash != null && storedKeyHash === localKeyHash) {\n return true;\n }\n\n // TODO: remove serverKeyHash check in 1-2 releases after everyone's keyHash has been updated\n const serverKeyHash = await this.hashPassword(\n masterPassword,\n key,\n HashPurpose.ServerAuthorization\n );\n if (serverKeyHash != null && storedKeyHash === serverKeyHash) {\n await this.setKeyHash(localKeyHash);\n return true;\n }\n }\n\n return false;\n }\n\n @sequentialize(() => \"getEncKey\")\n getEncKey(key: SymmetricCryptoKey = null): Promise {\n return this.getEncKeyHelper(key);\n }\n\n async getPublicKey(): Promise {\n const inMemoryPublicKey = await this.stateService.getPublicKey();\n if (inMemoryPublicKey != null) {\n return inMemoryPublicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n const publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n await this.stateService.setPublicKey(publicKey);\n return publicKey;\n }\n\n async getPrivateKey(): Promise {\n const decryptedPrivateKey = await this.stateService.getDecryptedPrivateKey();\n if (decryptedPrivateKey != null) {\n return decryptedPrivateKey;\n }\n\n const encPrivateKey = await this.stateService.getEncryptedPrivateKey();\n if (encPrivateKey == null) {\n return null;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), null);\n await this.stateService.setDecryptedPrivateKey(privateKey);\n return privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error(\"No public key available.\");\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, \"sha256\");\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(\n keyFingerprint,\n userId,\n 32,\n \"sha256\"\n );\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => \"getOrgKeys\")\n async getOrgKeys(): Promise> {\n const orgKeys: Map = new Map();\n const decryptedOrganizationKeys = await this.stateService.getDecryptedOrganizationKeys();\n if (decryptedOrganizationKeys != null && decryptedOrganizationKeys.size > 0) {\n return decryptedOrganizationKeys;\n }\n\n const encOrgKeys = await this.stateService.getEncryptedOrganizationKeys();\n if (encOrgKeys == null) {\n return null;\n }\n\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n // eslint-disable-next-line\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n await this.stateService.setDecryptedOrganizationKeys(orgKeys);\n }\n\n return orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n @sequentialize(() => \"getProviderKeys\")\n async getProviderKeys(): Promise> {\n const providerKeys: Map = new Map();\n const decryptedProviderKeys = await this.stateService.getDecryptedProviderKeys();\n if (decryptedProviderKeys != null && decryptedProviderKeys.size > 0) {\n return decryptedProviderKeys;\n }\n\n const encProviderKeys = await this.stateService.getEncryptedProviderKeys();\n if (encProviderKeys == null) {\n return null;\n }\n\n let setKey = false;\n\n for (const orgId in encProviderKeys) {\n // eslint-disable-next-line\n if (!encProviderKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encProviderKeys[orgId]);\n providerKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n await this.stateService.setDecryptedProviderKeys(providerKeys);\n }\n\n return providerKeys;\n }\n\n async getProviderKey(providerId: string): Promise {\n if (providerId == null) {\n return null;\n }\n\n const providerKeys = await this.getProviderKeys();\n if (providerKeys == null || !providerKeys.has(providerId)) {\n return null;\n }\n\n return providerKeys.get(providerId);\n }\n\n async hasKey(): Promise {\n return (\n (await this.hasKeyInMemory()) ||\n (await this.hasKeyStored(KeySuffixOptions.Auto)) ||\n (await this.hasKeyStored(KeySuffixOptions.Biometric))\n );\n }\n\n async hasKeyInMemory(userId?: string): Promise {\n return (await this.stateService.getCryptoMasterKey({ userId: userId })) != null;\n }\n\n async hasKeyStored(keySuffix: KeySuffixOptions, userId?: string): Promise {\n switch (keySuffix) {\n case KeySuffixOptions.Auto:\n return (await this.stateService.getCryptoMasterKeyAuto({ userId: userId })) != null;\n case KeySuffixOptions.Biometric:\n return (await this.stateService.hasCryptoMasterKeyBiometric({ userId: userId })) === true;\n default:\n return false;\n }\n }\n\n async hasEncKey(): Promise {\n return (await this.stateService.getEncryptedCryptoSymmetricKey()) != null;\n }\n\n async clearKey(clearSecretStorage = true, userId?: string): Promise {\n await this.stateService.setCryptoMasterKey(null, { userId: userId });\n await this.stateService.setLegacyEtmKey(null, { userId: userId });\n if (clearSecretStorage) {\n await this.clearSecretKeyStore(userId);\n }\n }\n\n async clearStoredKey(keySuffix: KeySuffixOptions) {\n keySuffix === KeySuffixOptions.Auto\n ? await this.stateService.setCryptoMasterKeyAuto(null)\n : await this.stateService.setCryptoMasterKeyBiometric(null);\n }\n\n async clearKeyHash(userId?: string): Promise {\n return await this.stateService.setKeyHash(null, { userId: userId });\n }\n\n async clearEncKey(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedCryptoSymmetricKey(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedCryptoSymmetricKey(null, { userId: userId });\n }\n }\n\n async clearKeyPair(memoryOnly?: boolean, userId?: string): Promise {\n const keysToClear: Promise[] = [\n this.stateService.setDecryptedPrivateKey(null, { userId: userId }),\n this.stateService.setPublicKey(null, { userId: userId }),\n ];\n if (!memoryOnly) {\n keysToClear.push(this.stateService.setEncryptedPrivateKey(null, { userId: userId }));\n }\n return Promise.all(keysToClear);\n }\n\n async clearOrgKeys(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedOrganizationKeys(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedOrganizationKeys(null, { userId: userId });\n }\n }\n\n async clearProviderKeys(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedProviderKeys(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedProviderKeys(null, { userId: userId });\n }\n }\n\n async clearPinProtectedKey(userId?: string): Promise {\n return await this.stateService.setEncryptedPinProtected(null, { userId: userId });\n }\n\n async clearKeys(userId?: string): Promise {\n await this.clearKey(true, userId);\n await this.clearKeyHash(userId);\n await this.clearOrgKeys(false, userId);\n await this.clearProviderKeys(false, userId);\n await this.clearEncKey(false, userId);\n await this.clearKeyPair(false, userId);\n await this.clearPinProtectedKey(userId);\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n\n await this.setKey(key);\n }\n\n async makeKey(\n password: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ): Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error(\"PBKDF2 iteration minimum is 5000.\");\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, \"sha256\", kdfIterations);\n } else {\n throw new Error(\"Unknown Kdf.\");\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number,\n protectedKeyCs: EncString = null\n ): Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.stateService.getEncryptedPinProtected();\n if (pinProtectedKey == null) {\n throw new Error(\"No PIN protected key found.\");\n }\n protectedKeyCs = new EncString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[EncString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, EncString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(\n keyMaterial,\n \"bitwarden-send\",\n \"send\",\n 64,\n \"sha256\"\n );\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(\n password: string,\n key: SymmetricCryptoKey,\n hashPurpose?: HashPurpose\n ): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error(\"Invalid parameters.\");\n }\n\n const iterations = hashPurpose === HashPurpose.LocalAuthorization ? 2 : 1;\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, \"sha256\", iterations);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(\n key: SymmetricCryptoKey,\n encKey?: SymmetricCryptoKey\n ): Promise<[SymmetricCryptoKey, EncString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof plainValue === \"string\") {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new EncString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return new EncArrayBuffer(encBytes.buffer);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error(\"Public key unavailable.\");\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, \"sha1\");\n return new EncString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string, privateKeyValue?: ArrayBuffer): Promise {\n const headerPieces = encValue.split(\".\");\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split(\"|\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64: // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error(\"encType unavailable.\");\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error(\"encPieces unavailable.\");\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = privateKeyValue ?? (await this.getPrivateKey());\n if (privateKey == null) {\n throw new Error(\"No private key.\");\n }\n\n let alg: \"sha1\" | \"sha256\" = \"sha1\";\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = \"sha256\";\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error(\"encType unavailable.\");\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(encString: EncString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(encString.iv).buffer;\n const data = Utils.fromB64ToArray(encString.data).buffer;\n const mac = encString.mac ? Utils.fromB64ToArray(encString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(encString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(encString: EncString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(\n encString.encryptionType,\n encString.data,\n encString.iv,\n encString.mac,\n key\n );\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error(\"no encBuf.\");\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) {\n // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) {\n // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(\n encType,\n ctBytes.buffer,\n ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null,\n key\n );\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error(\"We cannot generate numbers larger than 53 bits.\");\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n async validateKey(key: SymmetricCryptoKey) {\n try {\n const encPrivateKey = await this.stateService.getEncryptedPrivateKey();\n const encKey = await this.getEncKeyHelper(key);\n if (encPrivateKey == null || encKey == null) {\n return false;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), encKey);\n await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n // Helpers\n protected async storeKey(key: SymmetricCryptoKey, userId?: string) {\n if (await this.shouldStoreKey(KeySuffixOptions.Auto, userId)) {\n await this.stateService.setCryptoMasterKeyAuto(key.keyB64, { userId: userId });\n } else if (await this.shouldStoreKey(KeySuffixOptions.Biometric, userId)) {\n await this.stateService.setCryptoMasterKeyBiometric(key.keyB64, { userId: userId });\n } else {\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.stateService.setCryptoMasterKeyBiometric(null, { userId: userId });\n }\n }\n\n protected async shouldStoreKey(keySuffix: KeySuffixOptions, userId?: string) {\n let shouldStoreKey = false;\n if (keySuffix === KeySuffixOptions.Auto) {\n const vaultTimeout = await this.stateService.getVaultTimeout({ userId: userId });\n shouldStoreKey = vaultTimeout == null;\n } else if (keySuffix === KeySuffixOptions.Biometric) {\n const biometricUnlock = await this.stateService.getBiometricUnlock({ userId: userId });\n shouldStoreKey = biometricUnlock && this.platformUtilService.supportsSecureStorage();\n }\n return shouldStoreKey;\n }\n\n protected async retrieveKeyFromStorage(keySuffix: KeySuffixOptions, userId?: string) {\n return keySuffix === KeySuffixOptions.Auto\n ? await this.stateService.getCryptoMasterKeyAuto({ userId: userId })\n : await this.stateService.getCryptoMasterKeyBiometric({ userId: userId });\n }\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, \"sha256\");\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(\n encType: EncryptionType,\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = await this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error(\"mac required.\");\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error(\"encType unavailable.\");\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(\n fastParams.macData,\n fastParams.macKey,\n \"sha256\"\n );\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error(\"mac failed.\");\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(\n encType: EncryptionType,\n data: ArrayBuffer,\n iv: ArrayBuffer,\n mac: ArrayBuffer,\n key: SymmetricCryptoKey\n ): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = await this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(\n macData.buffer,\n theKey.macKey,\n \"sha256\"\n );\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error(\"mac failed.\");\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private async resolveLegacyKey(\n encType: EncryptionType,\n key: SymmetricCryptoKey\n ): Promise {\n if (\n encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64\n ) {\n // Old encrypt-then-mac scheme, make a new key\n let legacyKey = await this.stateService.getLegacyEtmKey();\n if (legacyKey == null) {\n legacyKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n await this.stateService.setLegacyEtmKey(legacyKey);\n }\n return legacyKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, \"enc\", 32, \"sha256\");\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, \"mac\", 32, \"sha256\");\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error(\"Output entropy of hash function is too small\");\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(\n key: SymmetricCryptoKey,\n encKey: ArrayBuffer\n ): Promise<[SymmetricCryptoKey, EncString]> {\n let encKeyEnc: EncString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error(\"Invalid key size.\");\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n\n private async clearSecretKeyStore(userId?: string): Promise {\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.stateService.setCryptoMasterKeyBiometric(null, { userId: userId });\n }\n\n private async getEncKeyHelper(key: SymmetricCryptoKey = null): Promise {\n const inMemoryKey = await this.stateService.getDecryptedCryptoSymmetricKey();\n if (inMemoryKey != null) {\n return inMemoryKey;\n }\n\n const encKey = await this.stateService.getEncryptedCryptoSymmetricKey();\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new EncString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error(\"Unsupported encKey type.\");\n }\n if (decEncKey == null) {\n return null;\n }\n const symmetricCryptoKey = new SymmetricCryptoKey(decEncKey);\n await this.stateService.setDecryptedCryptoSymmetricKey(symmetricCryptoKey);\n return symmetricCryptoKey;\n }\n}\n","import { Observable, Subject } from \"rxjs\";\n\nimport {\n EnvironmentService as EnvironmentServiceAbstraction,\n Urls,\n} from \"../abstractions/environment.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n private readonly urlsSubject = new Subject();\n urls: Observable = this.urlsSubject;\n\n private baseUrl: string;\n private webVaultUrl: string;\n private apiUrl: string;\n private identityUrl: string;\n private iconsUrl: string;\n private notificationsUrl: string;\n private eventsUrl: string;\n private keyConnectorUrl: string;\n\n constructor(private stateService: StateService) {\n this.stateService.activeAccount.subscribe(async () => {\n await this.setUrlsFromStorage();\n });\n }\n\n hasBaseUrl() {\n return this.baseUrl != null;\n }\n\n getNotificationsUrl() {\n if (this.notificationsUrl != null) {\n return this.notificationsUrl;\n }\n\n if (this.baseUrl != null) {\n return this.baseUrl + \"/notifications\";\n }\n\n return \"https://notifications.bitwarden.com\";\n }\n\n getWebVaultUrl() {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl;\n }\n return \"https://vault.bitwarden.com\";\n }\n\n getSendUrl() {\n return this.getWebVaultUrl() === \"https://vault.bitwarden.com\"\n ? \"https://send.bitwarden.com/#\"\n : this.getWebVaultUrl() + \"/#/send/\";\n }\n\n getIconsUrl() {\n if (this.iconsUrl != null) {\n return this.iconsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/icons\";\n }\n\n return \"https://icons.bitwarden.net\";\n }\n\n getApiUrl() {\n if (this.apiUrl != null) {\n return this.apiUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/api\";\n }\n\n return \"https://api.bitwarden.com\";\n }\n\n getIdentityUrl() {\n if (this.identityUrl != null) {\n return this.identityUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/identity\";\n }\n\n return \"https://identity.bitwarden.com\";\n }\n\n getEventsUrl() {\n if (this.eventsUrl != null) {\n return this.eventsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/events\";\n }\n\n return \"https://events.bitwarden.com\";\n }\n\n getKeyConnectorUrl() {\n return this.keyConnectorUrl;\n }\n\n async setUrlsFromStorage(): Promise {\n const urls: any = await this.stateService.getEnvironmentUrls();\n const envUrls = new EnvironmentUrls();\n\n this.baseUrl = envUrls.base = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n }\n\n async setUrls(urls: Urls): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.keyConnector = this.formatUrl(urls.keyConnector);\n\n await this.stateService.setEnvironmentUrls({\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n keyConnector: urls.keyConnector,\n });\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n\n this.urlsSubject.next(urls);\n\n return urls;\n }\n\n getUrls() {\n return {\n base: this.baseUrl,\n webVault: this.webVaultUrl,\n api: this.apiUrl,\n identity: this.identityUrl,\n icons: this.iconsUrl,\n notifications: this.notificationsUrl,\n events: this.eventsUrl,\n keyConnector: this.keyConnectorUrl,\n };\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === \"\") {\n return null;\n }\n\n url = url.replace(/\\/+$/g, \"\");\n if (!url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n url = \"https://\" + url;\n }\n\n return url.trim();\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { EventService as EventServiceAbstraction } from \"../abstractions/event.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EventType } from \"../enums/eventType\";\nimport { EventData } from \"../models/data/eventData\";\nimport { EventRequest } from \"../models/request/eventRequest\";\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(\n private apiService: ApiService,\n private cipherService: CipherService,\n private stateService: StateService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(\n eventType: EventType,\n cipherId: string = null,\n uploadImmediately = false\n ): Promise {\n const authed = await this.stateService.getIsAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.organizationService.getAll();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter((o) => o.useEvents).map((o) => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.stateService.getEventCollection();\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.stateService.setEventCollection(eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(userId?: string): Promise {\n const authed = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!authed) {\n return;\n }\n const eventCollection = await this.stateService.getEventCollection({ userId: userId });\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map((e) => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents(userId);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async clearEvents(userId?: string): Promise {\n await this.stateService.setEventCollection(null, { userId: userId });\n }\n}\n","import * as papa from \"papaparse\";\n\nimport { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport {\n ExportFormat,\n ExportService as ExportServiceAbstraction,\n} from \"../abstractions/export.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { DEFAULT_KDF_ITERATIONS, KdfType } from \"../enums/kdfType\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport { Collection } from \"../models/domain/collection\";\nimport { Folder } from \"../models/domain/folder\";\nimport { CipherWithIdExport as CipherExport } from \"../models/export/cipherWithIdsExport\";\nimport { CollectionWithIdExport as CollectionExport } from \"../models/export/collectionWithIdExport\";\nimport { EventExport } from \"../models/export/eventExport\";\nimport { FolderWithIdExport as FolderExport } from \"../models/export/folderWithIdExport\";\nimport { CollectionDetailsResponse } from \"../models/response/collectionResponse\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { EventView } from \"../models/view/eventView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(\n private folderService: FolderService,\n private cipherService: CipherService,\n private apiService: ApiService,\n private cryptoService: CryptoService,\n private cryptoFunctionService: CryptoFunctionService\n ) {}\n\n async getExport(format: ExportFormat = \"csv\", organizationId?: string): Promise {\n if (organizationId) {\n return await this.getOrganizationExport(organizationId, format);\n }\n\n if (format === \"encrypted_json\") {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getPasswordProtectedExport(password: string, organizationId?: string): Promise {\n const clearText = organizationId\n ? await this.getOrganizationExport(organizationId, \"json\")\n : await this.getExport(\"json\");\n\n const salt = Utils.fromBufferToB64(await this.cryptoFunctionService.randomBytes(16));\n const kdfIterations = DEFAULT_KDF_ITERATIONS;\n const key = await this.cryptoService.makePinKey(\n password,\n salt,\n KdfType.PBKDF2_SHA256,\n kdfIterations\n );\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), key);\n const encText = await this.cryptoService.encrypt(clearText, key);\n\n const jsonDoc: any = {\n encrypted: true,\n passwordProtected: true,\n salt: salt,\n kdfIterations: kdfIterations,\n kdfType: KdfType.PBKDF2_SHA256,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n data: encText.encryptedString,\n };\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n async getOrganizationExport(\n organizationId: string,\n format: ExportFormat = \"csv\"\n ): Promise {\n if (format === \"encrypted_json\") {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n async getEventExport(events: EventView[]): Promise {\n return papa.unparse(events.map((e) => new EventExport(e)));\n }\n\n getFileName(prefix: string = null, extension = \"csv\"): string {\n const now = new Date();\n const dateString =\n now.getFullYear() +\n \"\" +\n this.padNumber(now.getMonth() + 1, 2) +\n \"\" +\n this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) +\n \"\" +\n this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return \"bitwarden\" + (prefix ? \"_\" + prefix : \"\") + \"_export_\" + dateString + \".\" + extension;\n }\n\n private async getDecryptedExport(format: \"json\" | \"csv\"): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(\n this.folderService.getAllDecrypted().then((folders) => {\n decFolders = folders;\n })\n );\n\n promises.push(\n this.cipherService.getAllDecrypted().then((ciphers) => {\n decCiphers = ciphers.filter((f) => f.deletedDate == null);\n })\n );\n\n await Promise.all(promises);\n\n if (format === \"csv\") {\n const foldersMap = new Map();\n decFolders.forEach((f) => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder =\n c.folderId != null && foldersMap.has(c.folderId) ? foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach((f) => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach((c) => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(\n this.folderService.getAll().then((f) => {\n folders = f;\n })\n );\n\n promises.push(\n this.cipherService.getAll().then((c) => {\n ciphers = c.filter((f) => f.deletedDate == null);\n })\n );\n\n await Promise.all(promises);\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid());\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n folders: [],\n items: [],\n };\n\n folders.forEach((f) => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach((c) => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n private async getOrganizationDecryptedExport(\n organizationId: string,\n format: \"json\" | \"csv\"\n ): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(\n this.apiService.getCollections(organizationId).then((collections) => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach((c) => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(\n collection.decrypt().then((decCol) => {\n decCollections.push(decCol);\n })\n );\n });\n }\n return Promise.all(collectionPromises);\n })\n );\n\n promises.push(\n this.apiService.getCiphersOrganization(organizationId).then((ciphers) => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data\n .filter((c) => c.deletedDate === null)\n .forEach((c) => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(\n cipher.decrypt().then((decCipher) => {\n decCiphers.push(decCipher);\n })\n );\n });\n }\n return Promise.all(cipherPromises);\n })\n );\n\n await Promise.all(promises);\n\n if (format === \"csv\") {\n const collectionsMap = new Map();\n decCollections.forEach((c) => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds\n .filter((id) => collectionsMap.has(id))\n .map((id) => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach((c) => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach((c) => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, \" \");\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(\n this.apiService.getCollections(organizationId).then((c) => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach((r) => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n })\n );\n\n promises.push(\n this.apiService.getCiphersOrganization(organizationId).then((c) => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data\n .filter((item) => item.deletedDate === null)\n .forEach((item) => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n })\n );\n\n await Promise.all(promises);\n\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), orgKey);\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n collections: [],\n items: [],\n };\n\n collections.forEach((c) => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach((c) => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n private padNumber(num: number, width: number, padCharacter = \"0\"): string {\n const numString = num.toString();\n return numString.length >= width\n ? numString\n : new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n cipher.reprompt = c.reprompt;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = \"\";\n } else {\n cipher.fields += \"\\n\";\n }\n\n cipher.fields += (f.name || \"\") + \": \" + f.value;\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = \"login\";\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach((u) => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = \"note\";\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { FileUploadService as FileUploadServiceAbstraction } from \"../abstractions/fileUpload.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { FileUploadType } from \"../enums/fileUploadType\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\n\nimport { AzureFileUploadService } from \"./azureFileUpload.service\";\nimport { BitwardenFileUploadService } from \"./bitwardenFileUpload.service\";\n\nexport class FileUploadService implements FileUploadServiceAbstraction {\n private azureFileUploadService: AzureFileUploadService;\n private bitwardenFileUploadService: BitwardenFileUploadService;\n\n constructor(private logService: LogService, private apiService: ApiService) {\n this.azureFileUploadService = new AzureFileUploadService(logService);\n this.bitwardenFileUploadService = new BitwardenFileUploadService(apiService);\n }\n\n async uploadSendFile(\n uploadData: SendFileUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) {\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(\n fileName.encryptedString,\n encryptedFileData,\n (fd) =>\n this.apiService.postSendFile(\n uploadData.sendResponse.id,\n uploadData.sendResponse.file.id,\n fd\n )\n );\n break;\n case FileUploadType.Azure: {\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewSendFileUploadUrl(\n uploadData.sendResponse.id,\n uploadData.sendResponse.file.id\n );\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(\n uploadData.url,\n encryptedFileData,\n renewalCallback\n );\n break;\n }\n default:\n throw new Error(\"Unknown file upload type\");\n }\n } catch (e) {\n await this.apiService.deleteSend(uploadData.sendResponse.id);\n throw e;\n }\n }\n\n async uploadCipherAttachment(\n admin: boolean,\n uploadData: AttachmentUploadDataResponse,\n encryptedFileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) {\n const response = admin ? uploadData.cipherMiniResponse : uploadData.cipherResponse;\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(\n encryptedFileName.encryptedString,\n encryptedFileData,\n (fd) => this.apiService.postAttachmentFile(response.id, uploadData.attachmentId, fd)\n );\n break;\n case FileUploadType.Azure: {\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewAttachmentUploadUrl(\n response.id,\n uploadData.attachmentId\n );\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(\n uploadData.url,\n encryptedFileData,\n renewalCallback\n );\n break;\n }\n default:\n throw new Error(\"Unknown file upload type.\");\n }\n } catch (e) {\n if (admin) {\n await this.apiService.deleteCipherAttachmentAdmin(response.id, uploadData.attachmentId);\n } else {\n await this.apiService.deleteCipherAttachment(response.id, uploadData.attachmentId);\n }\n throw e;\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService as FolderServiceAbstraction } from \"../abstractions/folder.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ServiceUtils } from \"../misc/serviceUtils\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { Folder } from \"../models/domain/folder\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { FolderView } from \"../models/view/folderView\";\n\nconst NestingDelimiter = \"/\";\n\nexport class FolderService implements FolderServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private cipherService: CipherService,\n private stateService: StateService\n ) {}\n\n async clearCache(userId?: string): Promise {\n await this.stateService.setDecryptedFolders(null, { userId: userId });\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n // eslint-disable-next-line\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n const response: Folder[] = [];\n for (const id in folders) {\n // eslint-disable-next-line\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n const decryptedFolders = await this.stateService.getDecryptedFolders();\n if (decryptedFolders != null) {\n return decryptedFolders;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach((folder) => {\n promises.push(folder.decrypt().then((f) => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t(\"noneFolder\");\n decFolders.push(noneFolder);\n\n await this.stateService.setDecryptedFolders(decFolders);\n return decFolders;\n }\n\n async getAllNested(folders?: FolderView[]): Promise[]> {\n folders = folders ?? (await this.getAllDecrypted());\n const nodes: TreeNode[] = [];\n folders.forEach((f) => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, \"\").split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const data = new FolderData(response);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n let folders = await this.stateService.getEncryptedFolders();\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach((f) => {\n folders[f.id] = f;\n });\n }\n\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n }\n\n async replace(folders: { [id: string]: FolderData }): Promise {\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setDecryptedFolders(null, { userId: userId });\n await this.stateService.setEncryptedFolders(null, { userId: userId });\n }\n\n async delete(id: string | string[]): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n if (folders == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach((i) => {\n delete folders[i];\n });\n }\n\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { I18nService as I18nServiceAbstraction } from \"../abstractions/i18n.service\";\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = [\"en\"];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n [\"af\", \"Afrikaans\"],\n [\"az\", \"Azərbaycanca\"],\n [\"be\", \"Беларуская\"],\n [\"bg\", \"български\"],\n [\"bn\", \"বাংলা\"],\n [\"bs\", \"bosanski jezik\"],\n [\"ca\", \"català\"],\n [\"cs\", \"čeština\"],\n [\"da\", \"dansk\"],\n [\"de\", \"Deutsch\"],\n [\"el\", \"Ελληνικά\"],\n [\"en\", \"English\"],\n [\"en-GB\", \"English (British)\"],\n [\"en-IN\", \"English (India)\"],\n [\"eo\", \"Esperanto\"],\n [\"es\", \"español\"],\n [\"et\", \"eesti\"],\n [\"fa\", \"فارسی\"],\n [\"fi\", \"suomi\"],\n [\"fil\", \"Wikang Filipino\"],\n [\"fr\", \"français\"],\n [\"he\", \"עברית\"],\n [\"hi\", \"हिन्दी\"],\n [\"hr\", \"hrvatski\"],\n [\"hu\", \"magyar\"],\n [\"id\", \"Bahasa Indonesia\"],\n [\"it\", \"italiano\"],\n [\"ja\", \"日本語\"],\n [\"ka\", \"ქართული\"],\n [\"km\", \"ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ\"],\n [\"kn\", \"ಕನ್ನಡ\"],\n [\"ko\", \"한국어\"],\n [\"lt\", \"lietuvių kalba\"],\n [\"lv\", \"Latvietis\"],\n [\"me\", \"црногорски\"],\n [\"ml\", \"മലയാളം\"],\n [\"nb\", \"norsk (bokmål)\"],\n [\"nl\", \"Nederlands\"],\n [\"nn\", \"Norsk Nynorsk\"],\n [\"pl\", \"polski\"],\n [\"pt-BR\", \"português do Brasil\"],\n [\"pt-PT\", \"português\"],\n [\"ro\", \"română\"],\n [\"ru\", \"русский\"],\n [\"si\", \"සිංහල\"],\n [\"sk\", \"slovenčina\"],\n [\"sl\", \"Slovenski jezik, Slovenščina\"],\n [\"sr\", \"Српски\"],\n [\"sv\", \"svenska\"],\n [\"th\", \"ไทย\"],\n [\"tr\", \"Türkçe\"],\n [\"uk\", \"українська\"],\n [\"vi\", \"Tiếng Việt\"],\n [\"zh-CN\", \"中文(中国大陆)\"],\n [\"zh-TW\", \"中文(台灣)\"],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(\n protected systemLanguage: string,\n protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise\n ) {\n this.systemLanguage = systemLanguage.replace(\"_\", \"-\");\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error(\"i18n already initialized.\");\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error(\"supportedTranslationLocales not set.\");\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: \"base\" });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n // eslint-disable-next-line\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n // eslint-disable-next-line\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = \"\";\n }\n\n if (result !== \"\") {\n if (p1 != null) {\n result = result.split(\"__$1__\").join(p1);\n }\n if (p2 != null) {\n result = result.split(\"__$2__\").join(p2);\n }\n if (p3 != null) {\n result = result.split(\"__$3__\").join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace(\"-\", \"_\");\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n // eslint-disable-next-line\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (\n !locales[prop].placeholders.hasOwnProperty(placeProp) || // eslint-disable-line\n !locales[prop].placeholders[placeProp].content\n ) {\n continue;\n }\n\n const replaceToken = \"\\\\$\" + placeProp.toUpperCase() + \"\\\\$\";\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === \"$1\" || replaceContent === \"$2\" || replaceContent === \"$3\") {\n replaceContent = \"__$\" + replaceContent + \"__\";\n }\n messagesObj[prop] = messagesObj[prop].replace(\n new RegExp(replaceToken, \"g\"),\n replaceContent\n );\n }\n }\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { ImportService as ImportServiceAbstraction } from \"../abstractions/import.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport {\n featuredImportOptions,\n ImportOption,\n ImportType,\n regularImportOptions,\n} from \"../enums/importOptions\";\nimport { AscendoCsvImporter } from \"../importers/ascendoCsvImporter\";\nimport { AvastCsvImporter } from \"../importers/avastCsvImporter\";\nimport { AvastJsonImporter } from \"../importers/avastJsonImporter\";\nimport { AviraCsvImporter } from \"../importers/aviraCsvImporter\";\nimport { BitwardenCsvImporter } from \"../importers/bitwardenCsvImporter\";\nimport { BitwardenJsonImporter } from \"../importers/bitwardenJsonImporter\";\nimport { BitwardenPasswordProtectedImporter } from \"../importers/bitwardenPasswordProtectedImporter\";\nimport { BlackBerryCsvImporter } from \"../importers/blackBerryCsvImporter\";\nimport { BlurCsvImporter } from \"../importers/blurCsvImporter\";\nimport { ButtercupCsvImporter } from \"../importers/buttercupCsvImporter\";\nimport { ChromeCsvImporter } from \"../importers/chromeCsvImporter\";\nimport { ClipperzHtmlImporter } from \"../importers/clipperzHtmlImporter\";\nimport { CodebookCsvImporter } from \"../importers/codebookCsvImporter\";\nimport { DashlaneCsvImporter } from \"../importers/dashlaneImporters/dashlaneCsvImporter\";\nimport { DashlaneJsonImporter } from \"../importers/dashlaneImporters/dashlaneJsonImporter\";\nimport { EncryptrCsvImporter } from \"../importers/encryptrCsvImporter\";\nimport { EnpassCsvImporter } from \"../importers/enpassCsvImporter\";\nimport { EnpassJsonImporter } from \"../importers/enpassJsonImporter\";\nimport { FirefoxCsvImporter } from \"../importers/firefoxCsvImporter\";\nimport { FSecureFskImporter } from \"../importers/fsecureFskImporter\";\nimport { GnomeJsonImporter } from \"../importers/gnomeJsonImporter\";\nimport { ImportError } from \"../importers/importError\";\nimport { Importer } from \"../importers/importer\";\nimport { KasperskyTxtImporter } from \"../importers/kasperskyTxtImporter\";\nimport { KeePass2XmlImporter } from \"../importers/keepass2XmlImporter\";\nimport { KeePassXCsvImporter } from \"../importers/keepassxCsvImporter\";\nimport { KeeperCsvImporter } from \"../importers/keeperImporters/keeperCsvImporter\";\nimport { LastPassCsvImporter } from \"../importers/lastpassCsvImporter\";\nimport { LogMeOnceCsvImporter } from \"../importers/logMeOnceCsvImporter\";\nimport { MeldiumCsvImporter } from \"../importers/meldiumCsvImporter\";\nimport { MSecureCsvImporter } from \"../importers/msecureCsvImporter\";\nimport { MykiCsvImporter } from \"../importers/mykiCsvImporter\";\nimport { NordPassCsvImporter } from \"../importers/nordpassCsvImporter\";\nimport { OnePassword1PifImporter } from \"../importers/onepasswordImporters/onepassword1PifImporter\";\nimport { OnePassword1PuxImporter } from \"../importers/onepasswordImporters/onepassword1PuxImporter\";\nimport { OnePasswordMacCsvImporter } from \"../importers/onepasswordImporters/onepasswordMacCsvImporter\";\nimport { OnePasswordWinCsvImporter } from \"../importers/onepasswordImporters/onepasswordWinCsvImporter\";\nimport { PadlockCsvImporter } from \"../importers/padlockCsvImporter\";\nimport { PassKeepCsvImporter } from \"../importers/passkeepCsvImporter\";\nimport { PassmanJsonImporter } from \"../importers/passmanJsonImporter\";\nimport { PasspackCsvImporter } from \"../importers/passpackCsvImporter\";\nimport { PasswordAgentCsvImporter } from \"../importers/passwordAgentCsvImporter\";\nimport { PasswordBossJsonImporter } from \"../importers/passwordBossJsonImporter\";\nimport { PasswordDragonXmlImporter } from \"../importers/passwordDragonXmlImporter\";\nimport { PasswordSafeXmlImporter } from \"../importers/passwordSafeXmlImporter\";\nimport { PasswordWalletTxtImporter } from \"../importers/passwordWalletTxtImporter\";\nimport { RememBearCsvImporter } from \"../importers/rememBearCsvImporter\";\nimport { RoboFormCsvImporter } from \"../importers/roboformCsvImporter\";\nimport { SafariCsvImporter } from \"../importers/safariCsvImporter\";\nimport { SafeInCloudXmlImporter } from \"../importers/safeInCloudXmlImporter\";\nimport { SaferPassCsvImporter } from \"../importers/saferpassCsvImport\";\nimport { SecureSafeCsvImporter } from \"../importers/secureSafeCsvImporter\";\nimport { SplashIdCsvImporter } from \"../importers/splashIdCsvImporter\";\nimport { StickyPasswordXmlImporter } from \"../importers/stickyPasswordXmlImporter\";\nimport { TrueKeyCsvImporter } from \"../importers/truekeyCsvImporter\";\nimport { UpmCsvImporter } from \"../importers/upmCsvImporter\";\nimport { YotiCsvImporter } from \"../importers/yotiCsvImporter\";\nimport { ZohoVaultCsvImporter } from \"../importers/zohoVaultCsvImporter\";\nimport { Utils } from \"../misc/utils\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KvpRequest } from \"../models/request/kvpRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = featuredImportOptions as readonly ImportOption[];\n\n regularImportOptions = regularImportOptions as readonly ImportOption[];\n\n constructor(\n private cipherService: CipherService,\n private folderService: FolderService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService\n ) {}\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(\n importer: Importer,\n fileContents: string,\n organizationId: string = null\n ): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new ImportError(this.i18nService.t(\"importNothingError\"));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (\n this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])\n ) {\n return new ImportError(this.i18nService.t(\"importFormatError\"));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n if (!Utils.isNullOrWhitespace(importResult.errorMessage)) {\n return new ImportError(importResult.errorMessage, importResult.missingPassword);\n } else {\n return new ImportError(\n this.i18nService.t(\"importFormatError\"),\n importResult.missingPassword\n );\n }\n }\n }\n\n getImporter(\n format: ImportType | \"bitwardenpasswordprotected\",\n organizationId: string = null,\n password: string = null\n ): Importer {\n const importer = this.getImporterInstance(format, password);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: ImportType | \"bitwardenpasswordprotected\", password: string) {\n if (format == null) {\n return null;\n }\n\n switch (format) {\n case \"bitwardencsv\":\n return new BitwardenCsvImporter();\n case \"bitwardenjson\":\n return new BitwardenJsonImporter(this.cryptoService, this.i18nService);\n case \"bitwardenpasswordprotected\":\n return new BitwardenPasswordProtectedImporter(\n this.cryptoService,\n this.i18nService,\n password\n );\n case \"lastpasscsv\":\n case \"passboltcsv\":\n return new LastPassCsvImporter();\n case \"keepassxcsv\":\n return new KeePassXCsvImporter();\n case \"aviracsv\":\n return new AviraCsvImporter();\n case \"blurcsv\":\n return new BlurCsvImporter();\n case \"safeincloudxml\":\n return new SafeInCloudXmlImporter();\n case \"padlockcsv\":\n return new PadlockCsvImporter();\n case \"keepass2xml\":\n return new KeePass2XmlImporter();\n case \"chromecsv\":\n case \"operacsv\":\n case \"vivaldicsv\":\n return new ChromeCsvImporter();\n case \"firefoxcsv\":\n return new FirefoxCsvImporter();\n case \"upmcsv\":\n return new UpmCsvImporter();\n case \"saferpasscsv\":\n return new SaferPassCsvImporter();\n case \"safaricsv\":\n return new SafariCsvImporter();\n case \"meldiumcsv\":\n return new MeldiumCsvImporter();\n case \"1password1pif\":\n return new OnePassword1PifImporter();\n case \"1password1pux\":\n return new OnePassword1PuxImporter();\n case \"1passwordwincsv\":\n return new OnePasswordWinCsvImporter();\n case \"1passwordmaccsv\":\n return new OnePasswordMacCsvImporter();\n case \"keepercsv\":\n return new KeeperCsvImporter();\n // case \"keeperjson\":\n // return new KeeperJsonImporter();\n case \"passworddragonxml\":\n return new PasswordDragonXmlImporter();\n case \"enpasscsv\":\n return new EnpassCsvImporter();\n case \"enpassjson\":\n return new EnpassJsonImporter();\n case \"pwsafexml\":\n return new PasswordSafeXmlImporter();\n case \"dashlanecsv\":\n return new DashlaneCsvImporter();\n case \"dashlanejson\":\n return new DashlaneJsonImporter();\n case \"msecurecsv\":\n return new MSecureCsvImporter();\n case \"stickypasswordxml\":\n return new StickyPasswordXmlImporter();\n case \"truekeycsv\":\n return new TrueKeyCsvImporter();\n case \"clipperzhtml\":\n return new ClipperzHtmlImporter();\n case \"roboformcsv\":\n return new RoboFormCsvImporter();\n case \"ascendocsv\":\n return new AscendoCsvImporter();\n case \"passwordbossjson\":\n return new PasswordBossJsonImporter();\n case \"zohovaultcsv\":\n return new ZohoVaultCsvImporter();\n case \"splashidcsv\":\n return new SplashIdCsvImporter();\n case \"passkeepcsv\":\n return new PassKeepCsvImporter();\n case \"gnomejson\":\n return new GnomeJsonImporter();\n case \"passwordagentcsv\":\n return new PasswordAgentCsvImporter();\n case \"passpackcsv\":\n return new PasspackCsvImporter();\n case \"passmanjson\":\n return new PassmanJsonImporter();\n case \"avastcsv\":\n return new AvastCsvImporter();\n case \"avastjson\":\n return new AvastJsonImporter();\n case \"fsecurefsk\":\n return new FSecureFskImporter();\n case \"kasperskytxt\":\n return new KasperskyTxtImporter();\n case \"remembearcsv\":\n return new RememBearCsvImporter();\n case \"passwordwallettxt\":\n return new PasswordWalletTxtImporter();\n case \"mykicsv\":\n return new MykiCsvImporter();\n case \"securesafecsv\":\n return new SecureSafeCsvImporter();\n case \"logmeoncecsv\":\n return new LogMeOnceCsvImporter();\n case \"blackberrycsv\":\n return new BlackBerryCsvImporter();\n case \"buttercupcsv\":\n return new ButtercupCsvImporter();\n case \"codebookcsv\":\n return new CodebookCsvImporter();\n case \"encryptrcsv\":\n return new EncryptrCsvImporter();\n case \"yoticsv\":\n return new YotiCsvImporter();\n case \"nordpasscsv\":\n return new NordPassCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach((r) =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1]))\n );\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach((r) =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1]))\n );\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (\n (c.name == null || c.name === \"--\") &&\n c.type === CipherType.Login &&\n c.login != null &&\n Utils.isNullOrWhitespace(c.login.password)\n );\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): ImportError {\n if (errorResponse.validationErrors == null) {\n return new ImportError(errorResponse.message);\n }\n\n let errorMessage = \"\";\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case \"Ciphers\":\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case \"Folders\":\n item = importResult.folders[i];\n itemType = \"Folder\";\n break;\n case \"Collections\":\n item = importResult.collections[i];\n itemType = \"Collection\";\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += \"\\n\\n\";\n }\n\n if (itemType !== \"Folder\" && itemType !== \"Collection\") {\n errorMessage += \"[\" + (i + 1) + \"] \";\n }\n\n errorMessage += \"[\" + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new ImportError(errorMessage);\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { OrganizationUserType } from \"../enums/organizationUserType\";\nimport { Utils } from \"../misc/utils\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport class KeyConnectorService implements KeyConnectorServiceAbstraction {\n constructor(\n private stateService: StateService,\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private tokenService: TokenService,\n private logService: LogService,\n private organizationService: OrganizationService,\n private cryptoFunctionService: CryptoFunctionService,\n private logoutCallback: (expired: boolean, userId?: string) => void\n ) {}\n\n setUsesKeyConnector(usesKeyConnector: boolean) {\n return this.stateService.setUsesKeyConnector(usesKeyConnector);\n }\n\n async getUsesKeyConnector(): Promise {\n return await this.stateService.getUsesKeyConnector();\n }\n\n async userNeedsMigration() {\n const loggedInUsingSso = await this.tokenService.getIsExternal();\n const requiredByOrganization = (await this.getManagingOrganization()) != null;\n const userIsNotUsingKeyConnector = !(await this.getUsesKeyConnector());\n\n return loggedInUsingSso && requiredByOrganization && userIsNotUsingKeyConnector;\n }\n\n async migrateUser() {\n const organization = await this.getManagingOrganization();\n const key = await this.cryptoService.getKey();\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(key.encKeyB64);\n\n try {\n await this.apiService.postUserKeyToKeyConnector(\n organization.keyConnectorUrl,\n keyConnectorRequest\n );\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n\n await this.apiService.postConvertToKeyConnector();\n }\n\n async getAndSetKey(url: string) {\n try {\n const userKeyResponse = await this.apiService.getUserKeyFromKeyConnector(url);\n const keyArr = Utils.fromB64ToArray(userKeyResponse.key);\n const k = new SymmetricCryptoKey(keyArr);\n await this.cryptoService.setKey(k);\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n }\n\n async getManagingOrganization() {\n const orgs = await this.organizationService.getAll();\n return orgs.find(\n (o) =>\n o.keyConnectorEnabled &&\n o.type !== OrganizationUserType.Admin &&\n o.type !== OrganizationUserType.Owner &&\n !o.isProviderUser\n );\n }\n\n async convertNewSsoUserToKeyConnector(tokenResponse: IdentityTokenResponse, orgId: string) {\n const { kdf, kdfIterations, keyConnectorUrl } = tokenResponse;\n const password = await this.cryptoFunctionService.randomBytes(64);\n\n const k = await this.cryptoService.makeKey(\n Utils.fromBufferToB64(password),\n await this.tokenService.getEmail(),\n kdf,\n kdfIterations\n );\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(k.encKeyB64);\n await this.cryptoService.setKey(k);\n\n const encKey = await this.cryptoService.makeEncKey(k);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n\n const [pubKey, privKey] = await this.cryptoService.makeKeyPair();\n\n try {\n await this.apiService.postUserKeyToKeyConnector(keyConnectorUrl, keyConnectorRequest);\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n\n const keys = new KeysRequest(pubKey, privKey.encryptedString);\n const setPasswordRequest = new SetKeyConnectorKeyRequest(\n encKey[1].encryptedString,\n kdf,\n kdfIterations,\n orgId,\n keys\n );\n await this.apiService.postSetKeyConnectorKey(setPasswordRequest);\n }\n\n async setConvertAccountRequired(status: boolean) {\n await this.stateService.setConvertAccountToKeyConnector(status);\n }\n\n async getConvertAccountRequired(): Promise {\n return await this.stateService.getConvertAccountToKeyConnector();\n }\n\n async removeConvertAccountRequired() {\n await this.stateService.setConvertAccountToKeyConnector(null);\n }\n\n async clear() {\n await this.removeConvertAccountRequired();\n }\n\n private handleKeyConnectorError(e: any) {\n this.logService.error(e);\n if (this.logoutCallback != null) {\n this.logoutCallback(false);\n }\n throw new Error(\"Key Connector error\");\n }\n}\n","import * as signalR from \"@microsoft/signalr\";\nimport * as signalRMsgPack from \"@microsoft/signalr-protocol-msgpack\";\n\nimport { ApiService } from \"../abstractions/api.service\";\nimport { AppIdService } from \"../abstractions/appId.service\";\nimport { AuthService } from \"../abstractions/auth.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"../abstractions/notifications.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SyncService } from \"../abstractions/sync.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { NotificationType } from \"../enums/notificationType\";\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(\n private syncService: SyncService,\n private appIdService: AppIdService,\n private apiService: ApiService,\n private environmentService: EnvironmentService,\n private logoutCallback: (expired: boolean) => Promise,\n private logService: LogService,\n private stateService: StateService,\n private authService: AuthService\n ) {\n this.environmentService.urls.subscribe(() => {\n if (!this.inited) {\n return;\n }\n\n this.init();\n });\n }\n\n async init(): Promise {\n this.inited = false;\n this.url = this.environmentService.getNotificationsUrl();\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === \"https://-\") {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off(\"ReceiveMessage\");\n this.signalrConnection.off(\"Heartbeat\");\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + \"/hub\", {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol() as signalR.IHubProtocol)\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on(\"ReceiveMessage\", (data: any) =>\n this.processNotification(new NotificationResponse(data))\n );\n // eslint-disable-next-line\n this.signalrConnection.on(\"Heartbeat\", (data: any) => {\n /*console.log('Heartbeat!');*/\n });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.stateService.getIsAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.stateService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(\n notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate\n );\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(\n notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate\n );\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback(true);\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(\n notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate\n );\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n break;\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n const authStatus = await this.authService.getAuthStatus();\n return authStatus >= AuthenticationStatus.Unlocked;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { OrganizationService as OrganizationServiceAbstraction } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { Organization } from \"../models/domain/organization\";\n\nexport class OrganizationService implements OrganizationServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async get(id: string): Promise {\n const organizations = await this.stateService.getOrganizations();\n // eslint-disable-next-line\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getByIdentifier(identifier: string): Promise {\n const organizations = await this.getAll();\n if (organizations == null || organizations.length === 0) {\n return null;\n }\n\n return organizations.find((o) => o.identifier === identifier);\n }\n\n async getAll(userId?: string): Promise {\n const organizations = await this.stateService.getOrganizations({ userId: userId });\n const response: Organization[] = [];\n for (const id in organizations) {\n // eslint-disable-next-line\n if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async save(organizations: { [id: string]: OrganizationData }) {\n return await this.stateService.setOrganizations(organizations);\n }\n\n async canManageSponsorships(): Promise {\n const orgs = await this.getAll();\n return orgs.some(\n (o) => o.familySponsorshipAvailable || o.familySponsorshipFriendlyName !== null\n );\n }\n\n async hasOrganizations(userId?: string): Promise {\n const organizations = await this.getAll(userId);\n return organizations.length > 0;\n }\n}\n","import * as zxcvbn from \"zxcvbn\";\n\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { PasswordGenerationService as PasswordGenerationServiceAbstraction } from \"../abstractions/passwordGeneration.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\nimport { EncString } from \"../models/domain/encString\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { PasswordGeneratorPolicyOptions } from \"../models/domain/passwordGeneratorPolicyOptions\";\nimport { Policy } from \"../models/domain/policy\";\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: \"password\",\n numWords: 3,\n wordSeparator: \"-\",\n capitalize: false,\n includeNumber: false,\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private stateService: StateService\n ) {}\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === \"passphrase\") {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push(\"l\");\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push(\"u\");\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push(\"n\");\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push(\"s\");\n }\n }\n while (positions.length < o.length) {\n positions.push(\"a\");\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = \"\";\n\n let lowercaseCharSet = \"abcdefghijkmnopqrstuvwxyz\";\n if (o.ambiguous) {\n lowercaseCharSet += \"l\";\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = \"ABCDEFGHJKLMNPQRSTUVWXYZ\";\n if (o.ambiguous) {\n uppercaseCharSet += \"IO\";\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = \"23456789\";\n if (o.ambiguous) {\n numberCharSet += \"01\";\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = \"!@#$%^&*\";\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = \"\";\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case \"l\":\n positionChars = lowercaseCharSet;\n break;\n case \"u\":\n positionChars = uppercaseCharSet;\n break;\n case \"n\":\n positionChars = numberCharSet;\n break;\n case \"s\":\n positionChars = specialCharSet;\n break;\n case \"a\":\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = \" \";\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let options = await this.stateService.getPasswordGenerationOptions();\n if (options == null) {\n options = Object.assign({}, DefaultOptions);\n } else {\n options = Object.assign({}, DefaultOptions, options);\n }\n await this.stateService.setPasswordGenerationOptions(options);\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(options);\n options = enforcedOptions[0];\n return [options, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(\n options: any\n ): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (\n enforcedPolicyOptions.defaultType === \"password\" ||\n enforcedPolicyOptions.defaultType === \"passphrase\"\n ) {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else {\n // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] =\n this.policyService == null\n ? null\n : await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== \"password\") {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (\n currentPolicy.data.minLength != null &&\n currentPolicy.data.minLength > enforcedOptions.minLength\n ) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (\n currentPolicy.data.minNumbers != null &&\n currentPolicy.data.minNumbers > enforcedOptions.numberCount\n ) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (\n currentPolicy.data.minSpecial != null &&\n currentPolicy.data.minSpecial > enforcedOptions.specialCount\n ) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (\n currentPolicy.data.minNumberWords != null &&\n currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords\n ) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.stateService.setPasswordGenerationOptions(options);\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if ((await this.stateService.getDecryptedPasswordGenerationHistory()) == null) {\n const encrypted = await this.stateService.getEncryptedPasswordGenerationHistory();\n const decrypted = await this.decryptHistory(encrypted);\n await this.stateService.setDecryptedPasswordGenerationHistory(decrypted);\n }\n\n const passwordGenerationHistory =\n await this.stateService.getDecryptedPasswordGenerationHistory();\n return passwordGenerationHistory != null\n ? passwordGenerationHistory\n : new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.stateService.setEncryptedPasswordGenerationHistory(newHistory);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setEncryptedPasswordGenerationHistory(null, { userId: userId });\n await this.stateService.setDecryptedPasswordGenerationHistory(null, { userId: userId });\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = [\"bitwarden\", \"bit\", \"warden\"];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(\n history: GeneratedPasswordHistory[]\n ): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(\n history: GeneratedPasswordHistory[]\n ): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const decrypted = await this.cryptoService.decryptToUtf8(new EncString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { PolicyService as PolicyServiceAbstraction } from \"../abstractions/policy.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { OrganizationUserStatusType } from \"../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../enums/organizationUserType\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"../models/domain/masterPasswordPolicyOptions\";\nimport { Organization } from \"../models/domain/organization\";\nimport { Policy } from \"../models/domain/policy\";\nimport { ResetPasswordPolicyOptions } from \"../models/domain/resetPasswordPolicyOptions\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(\n private stateService: StateService,\n private organizationService: OrganizationService,\n private apiService: ApiService\n ) {}\n\n async clearCache(): Promise {\n await this.stateService.setDecryptedPolicies(null);\n }\n\n async getAll(type?: PolicyType, userId?: string): Promise {\n let response: Policy[] = [];\n const decryptedPolicies = await this.stateService.getDecryptedPolicies({ userId: userId });\n if (decryptedPolicies != null) {\n response = decryptedPolicies;\n } else {\n const diskPolicies = await this.stateService.getEncryptedPolicies({ userId: userId });\n for (const id in diskPolicies) {\n // eslint-disable-next-line\n if (diskPolicies.hasOwnProperty(id)) {\n response.push(new Policy(diskPolicies[id]));\n }\n }\n await this.stateService.setDecryptedPolicies(response, { userId: userId });\n }\n if (type != null) {\n return response.filter((policy) => policy.type === type);\n } else {\n return response;\n }\n }\n\n async getPolicyForOrganization(policyType: PolicyType, organizationId: string): Promise {\n const org = await this.organizationService.get(organizationId);\n if (org?.isProviderUser) {\n const orgPolicies = await this.apiService.getPolicies(organizationId);\n const policy = orgPolicies.data.find((p) => p.organizationId === organizationId);\n\n if (policy == null) {\n return null;\n }\n\n return new Policy(new PolicyData(policy));\n }\n\n const policies = await this.getAll(policyType);\n return policies.find((p) => p.organizationId === organizationId);\n }\n\n async replace(policies: { [id: string]: PolicyData }): Promise {\n await this.stateService.setDecryptedPolicies(null);\n await this.stateService.setEncryptedPolicies(policies);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setDecryptedPolicies(null, { userId: userId });\n await this.stateService.setEncryptedPolicies(null, { userId: userId });\n }\n\n async getMasterPasswordPoliciesForInvitedUsers(\n orgId: string\n ): Promise {\n const userId = await this.stateService.getUserId();\n const response = await this.apiService.getPoliciesByInvitedUser(orgId, userId);\n const policies = await this.mapPoliciesFromToken(response);\n return this.getMasterPasswordPolicyOptions(policies);\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter((p) => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (\n currentPolicy.data.minComplexity != null &&\n currentPolicy.data.minComplexity > enforcedOptions.minComplexity\n ) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (\n currentPolicy.data.minLength != null &&\n currentPolicy.data.minLength > enforcedOptions.minLength\n ) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(\n passwordStrength: number,\n newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions\n ): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (\n enforcedPolicyOptions.minComplexity > 0 &&\n enforcedPolicyOptions.minComplexity > passwordStrength\n ) {\n return false;\n }\n\n if (\n enforcedPolicyOptions.minLength > 0 &&\n enforcedPolicyOptions.minLength > newPassword.length\n ) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !/[0-9]/.test(newPassword)) {\n return false;\n }\n\n // eslint-disable-next-line\n if (enforcedPolicyOptions.requireSpecial && !/[!@#$%\\^&*]/g.test(newPassword)) {\n return false;\n }\n\n return true;\n }\n\n getResetPasswordPolicyOptions(\n policies: Policy[],\n orgId: string\n ): [ResetPasswordPolicyOptions, boolean] {\n const resetPasswordPolicyOptions = new ResetPasswordPolicyOptions();\n\n if (policies == null || orgId == null) {\n return [resetPasswordPolicyOptions, false];\n }\n\n const policy = policies.find(\n (p) => p.organizationId === orgId && p.type === PolicyType.ResetPassword && p.enabled\n );\n resetPasswordPolicyOptions.autoEnrollEnabled = policy?.data?.autoEnrollEnabled ?? false;\n\n return [resetPasswordPolicyOptions, policy?.enabled ?? false];\n }\n\n mapPoliciesFromToken(policiesResponse: ListResponse): Policy[] {\n if (policiesResponse == null || policiesResponse.data == null) {\n return null;\n }\n\n const policiesData = policiesResponse.data.map((p) => new PolicyData(p));\n return policiesData.map((p) => new Policy(p));\n }\n\n async policyAppliesToUser(\n policyType: PolicyType,\n policyFilter?: (policy: Policy) => boolean,\n userId?: string\n ) {\n const policies = await this.getAll(policyType, userId);\n const organizations = await this.organizationService.getAll(userId);\n let filteredPolicies;\n\n if (policyFilter != null) {\n filteredPolicies = policies.filter((p) => p.enabled && policyFilter(p));\n } else {\n filteredPolicies = policies.filter((p) => p.enabled);\n }\n\n const policySet = new Set(filteredPolicies.map((p) => p.organizationId));\n\n return organizations.some(\n (o) =>\n o.enabled &&\n o.status >= OrganizationUserStatusType.Accepted &&\n o.usePolicies &&\n !this.isExcemptFromPolicies(o, policyType) &&\n policySet.has(o.id)\n );\n }\n\n private isExcemptFromPolicies(organization: Organization, policyType: PolicyType) {\n if (policyType === PolicyType.MaximumVaultTimeout) {\n return organization.type === OrganizationUserType.Owner;\n }\n\n return organization.isExemptFromPolicies;\n }\n}\n","import { ProviderService as ProviderServiceAbstraction } from \"../abstractions/provider.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { Provider } from \"../models/domain/provider\";\n\nexport class ProviderService implements ProviderServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async get(id: string): Promise {\n const providers = await this.stateService.getProviders();\n // eslint-disable-next-line\n if (providers == null || !providers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Provider(providers[id]);\n }\n\n async getAll(): Promise {\n const providers = await this.stateService.getProviders();\n const response: Provider[] = [];\n for (const id in providers) {\n // eslint-disable-next-line\n if (providers.hasOwnProperty(id)) {\n response.push(new Provider(providers[id]));\n }\n }\n return response;\n }\n\n async save(providers: { [id: string]: ProviderData }) {\n await this.stateService.setProviders(providers);\n }\n}\n","import * as lunr from \"lunr\";\n\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { SearchService as SearchServiceAbstraction } from \"../abstractions/search.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport class SearchService implements SearchServiceAbstraction {\n indexedEntityId?: string = null;\n private indexing = false;\n private index: lunr.Index = null;\n private searchableMinLength = 2;\n\n constructor(\n private cipherService: CipherService,\n private logService: LogService,\n private i18nService: I18nService\n ) {\n if ([\"zh-CN\", \"zh-TW\"].indexOf(i18nService.locale) !== -1) {\n this.searchableMinLength = 1;\n }\n }\n\n clearIndex(): void {\n this.indexedEntityId = null;\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable =\n query == null ||\n (this.index == null && query.length < this.searchableMinLength) ||\n (this.index != null && query.length < this.searchableMinLength && query.indexOf(\">\") !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(indexedEntityId?: string, ciphers?: CipherView[]): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time(\"search indexing\");\n this.indexing = true;\n this.indexedEntityId = indexedEntityId;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref(\"id\");\n builder.field(\"shortid\", { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field(\"name\", { boost: 10 });\n builder.field(\"subtitle\", {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, \"\");\n }\n return c.subTitle;\n },\n });\n builder.field(\"notes\");\n builder.field(\"login.username\", {\n extractor: (c: CipherView) =>\n c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field(\"login.uris\", { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field(\"fields\", { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field(\"fields_joined\", { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field(\"attachments\", {\n extractor: (c: CipherView) => this.attachmentExtractor(c, false),\n });\n builder.field(\"attachments_joined\", {\n extractor: (c: CipherView) => this.attachmentExtractor(c, true),\n });\n builder.field(\"organizationid\", { extractor: (c: CipherView) => c.organizationId });\n ciphers = ciphers || (await this.cipherService.getAllDecrypted());\n ciphers.forEach((c) => builder.add(c));\n this.index = builder.build();\n\n this.indexing = false;\n\n this.logService.timeEnd(\"search indexing\");\n }\n\n async searchCiphers(\n query: string,\n filter: ((cipher: CipherView) => boolean) | ((cipher: CipherView) => boolean)[] = null,\n ciphers: CipherView[] = null\n ): Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === \"\") {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter((c) => filter.every((f) => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach((c) => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf(\">\") === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query((q) => {\n lunr.tokenizer(query).forEach((token) => {\n const t = token.toString();\n q.term(t, { fields: [\"name\"], wildcard: soWild });\n q.term(t, { fields: [\"subtitle\"], wildcard: soWild });\n q.term(t, { fields: [\"login.uris\"], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach((r) => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter((c) => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter((s) => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (\n query.length >= 8 &&\n (s.id.startsWith(query) ||\n s.accessId.toLocaleLowerCase().startsWith(query) ||\n (s.file?.id != null && s.file.id.startsWith(query)))\n ) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach((f) => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter((f) => f.trim() !== \"\");\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(\" \") : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach((a) => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf(\".\") > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf(\".\")));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter((f) => f.trim() !== \"\");\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(\" \") : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach((u) => {\n if (u.uri == null || u.uri === \"\") {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf(\"://\");\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { FileUploadService } from \"../abstractions/fileUpload.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { SendService as SendServiceAbstraction } from \"../abstractions/send.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SEND_KDF_ITERATIONS } from \"../enums/kdfType\";\nimport { SendType } from \"../enums/sendType\";\nimport { Utils } from \"../misc/utils\";\nimport { SendData } from \"../models/data/sendData\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { Send } from \"../models/domain/send\";\nimport { SendFile } from \"../models/domain/sendFile\";\nimport { SendText } from \"../models/domain/sendText\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport class SendService implements SendServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private fileUploadService: FileUploadService,\n private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService\n ) {}\n\n async clearCache(): Promise {\n await this.stateService.setDecryptedSends(null);\n }\n\n async encrypt(\n model: SendView,\n file: File | ArrayBuffer,\n password: string,\n key?: SymmetricCryptoKey\n ): Promise<[Send, EncArrayBuffer]> {\n let fileData: EncArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.hideEmail = model.hideEmail;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(\n password,\n model.key,\n \"sha256\",\n SEND_KDF_ITERATIONS\n );\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(\n model.file.fileName,\n file,\n model.cryptoKey\n );\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const sends = await this.stateService.getEncryptedSends();\n // eslint-disable-next-line\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const sends = await this.stateService.getEncryptedSends();\n const response: Send[] = [];\n for (const id in sends) {\n // eslint-disable-next-line\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n let decSends = await this.stateService.getDecryptedSends();\n if (decSends != null) {\n return decSends;\n }\n\n decSends = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach((send) => {\n promises.push(send.decrypt().then((f) => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n await this.stateService.setDecryptedSends(decSends);\n return decSends;\n }\n\n async saveWithServer(sendData: [Send, EncArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n try {\n const uploadDataResponse = await this.apiService.postFileTypeSend(request);\n response = uploadDataResponse.sendResponse;\n\n await this.fileUploadService.uploadSendFile(\n uploadDataResponse,\n sendData[0].file.fileName,\n sendData[1]\n );\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n response = await this.legacyServerSendFileUpload(sendData, request);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const data = new SendData(response);\n await this.upsert(data);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerSendFileUpload(\n sendData: [Send, EncArrayBuffer],\n request: SendRequest\n ): Promise {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1].buffer], { type: \"application/octet-stream\" });\n fd.append(\"model\", JSON.stringify(request));\n fd.append(\"data\", blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"model\", JSON.stringify(request));\n fd.append(\n \"data\",\n Buffer.from(sendData[1].buffer) as any,\n {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n return await this.apiService.postSendFileLegacy(fd);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n let sends = await this.stateService.getEncryptedSends();\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach((s) => {\n sends[s.id] = s;\n });\n }\n\n await this.replace(sends);\n }\n\n async replace(sends: { [id: string]: SendData }): Promise {\n await this.stateService.setDecryptedSends(null);\n await this.stateService.setEncryptedSends(sends);\n }\n\n async clear(): Promise {\n await this.stateService.setDecryptedSends(null);\n await this.stateService.setEncryptedSends(null);\n }\n\n async delete(id: string | string[]): Promise {\n const sends = await this.stateService.getEncryptedSends();\n if (sends == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach((i) => {\n delete sends[i];\n });\n }\n\n await this.replace(sends);\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const data = new SendData(response);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async (evt) => {\n try {\n const [name, data] = await this.encryptFileData(\n file.name,\n evt.target.result as ArrayBuffer,\n key\n );\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = () => {\n reject(\"Error reading file.\");\n };\n });\n }\n\n private async encryptFileData(\n fileName: string,\n data: ArrayBuffer,\n key: SymmetricCryptoKey\n ): Promise<[EncString, EncArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\n\nconst Keys = {\n settingsPrefix: \"settings_\",\n equivalentDomains: \"equivalentDomains\",\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async clearCache(): Promise {\n await this.stateService.setSettings(null);\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setSettings(null, { userId: userId });\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n const settings = await this.stateService.getSettings();\n if (settings == null) {\n // eslint-disable-next-line\n const userId = await this.stateService.getUserId();\n }\n return settings;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.stateService.setSettings(settings);\n }\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { LogService } from \"../abstractions/log.service\";\nimport { StateService as StateServiceAbstraction } from \"../abstractions/state.service\";\nimport { StateMigrationService } from \"../abstractions/stateMigration.service\";\nimport { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { StorageLocation } from \"../enums/storageLocation\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { StateFactory } from \"../factories/stateFactory\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account, AccountData } from \"../models/domain/account\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { GlobalState } from \"../models/domain/globalState\";\nimport { Policy } from \"../models/domain/policy\";\nimport { State } from \"../models/domain/state\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { WindowState } from \"../models/domain/windowState\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SendView } from \"../models/view/sendView\";\n\nconst keys = {\n global: \"global\",\n authenticatedAccounts: \"authenticatedAccounts\",\n activeUserId: \"activeUserId\",\n tempAccountSettings: \"tempAccountSettings\", // used to hold account specific settings (i.e clear clipboard) between initial migration and first account authentication\n accountActivity: \"accountActivity\",\n};\n\nconst partialKeys = {\n autoKey: \"_masterkey_auto\",\n biometricKey: \"_masterkey_biometric\",\n masterKey: \"_masterkey\",\n};\n\nexport class StateService<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> implements StateServiceAbstraction\n{\n accounts = new BehaviorSubject<{ [userId: string]: TAccount }>({});\n activeAccount = new BehaviorSubject(null);\n\n protected state: State = new State(\n this.createGlobals()\n );\n\n private hasBeenInited = false;\n\n private accountDiskCache: Map;\n\n constructor(\n protected storageService: StorageService,\n protected secureStorageService: StorageService,\n protected logService: LogService,\n protected stateMigrationService: StateMigrationService,\n protected stateFactory: StateFactory,\n protected useAccountCache: boolean = true\n ) {\n this.accountDiskCache = new Map();\n }\n\n async init(): Promise {\n if (this.hasBeenInited) {\n return;\n }\n\n if (await this.stateMigrationService.needsMigration()) {\n await this.stateMigrationService.migrate();\n }\n\n await this.initAccountState();\n this.hasBeenInited = true;\n }\n\n async initAccountState() {\n this.state.authenticatedAccounts =\n (await this.storageService.get(keys.authenticatedAccounts)) ?? [];\n for (const i in this.state.authenticatedAccounts) {\n if (i != null) {\n await this.syncAccountFromDisk(this.state.authenticatedAccounts[i]);\n }\n }\n const storedActiveUser = await this.storageService.get(keys.activeUserId);\n if (storedActiveUser != null) {\n this.state.activeUserId = storedActiveUser;\n }\n await this.pushAccounts();\n this.activeAccount.next(this.state.activeUserId);\n }\n\n async syncAccountFromDisk(userId: string) {\n if (userId == null) {\n return;\n }\n this.state.accounts[userId] = this.createAccount();\n const diskAccount = await this.getAccountFromDisk({ userId: userId });\n this.state.accounts[userId].profile = diskAccount.profile;\n }\n\n async addAccount(account: TAccount) {\n account = await this.setAccountEnvironmentUrls(account);\n this.state.authenticatedAccounts.push(account.profile.userId);\n await this.storageService.save(keys.authenticatedAccounts, this.state.authenticatedAccounts);\n this.state.accounts[account.profile.userId] = account;\n await this.scaffoldNewAccountStorage(account);\n await this.setLastActive(new Date().getTime(), { userId: account.profile.userId });\n await this.setActiveUser(account.profile.userId);\n this.activeAccount.next(account.profile.userId);\n }\n\n async setActiveUser(userId: string): Promise {\n this.clearDecryptedDataForActiveUser();\n this.state.activeUserId = userId;\n await this.storageService.save(keys.activeUserId, userId);\n this.activeAccount.next(this.state.activeUserId);\n await this.pushAccounts();\n }\n\n async clean(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n await this.deAuthenticateAccount(options.userId);\n if (options.userId === this.state.activeUserId) {\n await this.dynamicallySetActiveUser();\n }\n\n await this.removeAccountFromDisk(options?.userId);\n this.removeAccountFromMemory(options?.userId);\n await this.pushAccounts();\n }\n\n async getAccessToken(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.tokens?.accessToken;\n }\n\n async setAccessToken(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.tokens.accessToken = value;\n await this.saveAccount(account, options);\n }\n\n async getAddEditCipherInfo(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.addEditCipherInfo;\n }\n\n async setAddEditCipherInfo(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.addEditCipherInfo = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getAlwaysShowDock(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.alwaysShowDock ?? false\n );\n }\n\n async setAlwaysShowDock(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.alwaysShowDock = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getApiKeyClientId(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.profile?.apiKeyClientId;\n }\n\n async setApiKeyClientId(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.profile.apiKeyClientId = value;\n await this.saveAccount(account, options);\n }\n\n async getApiKeyClientSecret(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.keys?.apiKeyClientSecret;\n }\n\n async setApiKeyClientSecret(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.keys.apiKeyClientSecret = value;\n await this.saveAccount(account, options);\n }\n\n async getAutoConfirmFingerPrints(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.autoConfirmFingerPrints ?? false\n );\n }\n\n async setAutoConfirmFingerprints(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.autoConfirmFingerPrints = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getAutoFillOnPageLoadDefault(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.autoFillOnPageLoadDefault ?? true\n );\n }\n\n async setAutoFillOnPageLoadDefault(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.autoFillOnPageLoadDefault = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricAwaitingAcceptance(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.biometricAwaitingAcceptance ?? false\n );\n }\n\n async setBiometricAwaitingAcceptance(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricAwaitingAcceptance = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricFingerprintValidated(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.biometricFingerprintValidated ?? false\n );\n }\n\n async setBiometricFingerprintValidated(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricFingerprintValidated = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricLocked(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.settings\n ?.biometricLocked ?? false\n );\n }\n\n async setBiometricLocked(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.settings.biometricLocked = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getBiometricText(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.biometricText;\n }\n\n async setBiometricText(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricText = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricUnlock(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.biometricUnlock ?? false\n );\n }\n\n async setBiometricUnlock(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.biometricUnlock = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getCanAccessPremium(options?: StorageOptions): Promise {\n if (!(await this.getIsAuthenticated(options))) {\n return false;\n }\n\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n if (account.profile.hasPremiumPersonally) {\n return true;\n }\n\n const organizations = await this.getOrganizations(options);\n if (organizations == null) {\n return false;\n }\n\n for (const id of Object.keys(organizations)) {\n const o = organizations[id];\n if (o.enabled && o.usersGetPremium && !o.isProviderUser) {\n return true;\n }\n }\n\n return false;\n }\n\n async getClearClipboard(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.clearClipboard ?? null\n );\n }\n\n async setClearClipboard(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.clearClipboard = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getCollapsedGroupings(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.collapsedGroupings;\n }\n\n async setCollapsedGroupings(value: string[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.collapsedGroupings = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getConvertAccountToKeyConnector(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.convertAccountToKeyConnector;\n }\n\n async setConvertAccountToKeyConnector(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.convertAccountToKeyConnector = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getCryptoMasterKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.cryptoMasterKey;\n }\n\n async setCryptoMasterKey(value: SymmetricCryptoKey, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.cryptoMasterKey = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getCryptoMasterKeyAuto(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"auto\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(`${options.userId}${partialKeys.autoKey}`, options);\n }\n\n async setCryptoMasterKeyAuto(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"auto\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.autoKey, value, options);\n }\n\n async getCryptoMasterKeyB64(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultSecureStorageOptions());\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(\n `${options?.userId}${partialKeys.masterKey}`,\n options\n );\n }\n\n async setCryptoMasterKeyB64(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultSecureStorageOptions());\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.masterKey, value, options);\n }\n\n async getCryptoMasterKeyBiometric(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(\n `${options.userId}${partialKeys.biometricKey}`,\n options\n );\n }\n\n async hasCryptoMasterKeyBiometric(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return false;\n }\n return await this.secureStorageService.has(\n `${options.userId}${partialKeys.biometricKey}`,\n options\n );\n }\n\n async setCryptoMasterKeyBiometric(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.biometricKey, value, options);\n }\n\n async getDecodedToken(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.tokens?.decodedToken;\n }\n\n async setDecodedToken(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.tokens.decodedToken = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCiphers(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.ciphers?.decrypted;\n }\n\n async setDecryptedCiphers(value: CipherView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.ciphers.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCollections(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.collections?.decrypted;\n }\n\n async setDecryptedCollections(value: CollectionView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.collections.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCryptoSymmetricKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.cryptoSymmetricKey?.decrypted;\n }\n\n async setDecryptedCryptoSymmetricKey(\n value: SymmetricCryptoKey,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.cryptoSymmetricKey.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedFolders(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.folders?.decrypted;\n }\n\n async setDecryptedFolders(value: FolderView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.folders.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedOrganizationKeys(\n options?: StorageOptions\n ): Promise> {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.organizationKeys?.decrypted;\n }\n\n async setDecryptedOrganizationKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.organizationKeys.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPasswordGenerationHistory(\n options?: StorageOptions\n ): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.passwordGenerationHistory?.decrypted;\n }\n\n async setDecryptedPasswordGenerationHistory(\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.passwordGenerationHistory.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPinProtected(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.settings?.pinProtected?.decrypted;\n }\n\n async setDecryptedPinProtected(value: EncString, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.settings.pinProtected.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPolicies(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.policies?.decrypted;\n }\n\n async setDecryptedPolicies(value: Policy[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.policies.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPrivateKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.privateKey?.decrypted;\n }\n\n async setDecryptedPrivateKey(value: ArrayBuffer, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.privateKey.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedProviderKeys(\n options?: StorageOptions\n ): Promise> {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.providerKeys?.decrypted;\n }\n\n async setDecryptedProviderKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.providerKeys.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedSends(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.sends?.decrypted;\n }\n\n async setDecryptedSends(value: SendView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.sends.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDefaultUriMatch(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.defaultUriMatch;\n }\n\n async setDefaultUriMatch(value: UriMatchType, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.defaultUriMatch = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAddLoginNotification(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAddLoginNotification ?? false\n );\n }\n\n async setDisableAddLoginNotification(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAddLoginNotification = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAutoBiometricsPrompt(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAutoBiometricsPrompt ?? false\n );\n }\n\n async setDisableAutoBiometricsPrompt(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAutoBiometricsPrompt = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAutoTotpCopy(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAutoTotpCopy ?? false\n );\n }\n\n async setDisableAutoTotpCopy(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAutoTotpCopy = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableBadgeCounter(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableBadgeCounter ?? false\n );\n }\n\n async setDisableBadgeCounter(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableBadgeCounter = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableChangedPasswordNotification(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableChangedPasswordNotification ?? false\n );\n }\n\n async setDisableChangedPasswordNotification(\n value: boolean,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableChangedPasswordNotification = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableContextMenuItem(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableContextMenuItem ?? false\n );\n }\n\n async setDisableContextMenuItem(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableContextMenuItem = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableFavicon(options?: StorageOptions): Promise {\n return (\n (\n await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.disableFavicon ?? false\n );\n }\n\n async setDisableFavicon(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.disableFavicon = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getDisableGa(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableGa ?? false\n );\n }\n\n async setDisableGa(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableGa = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDontShowCardsCurrentTab(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.dontShowCardsCurrentTab ?? false\n );\n }\n\n async setDontShowCardsCurrentTab(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.dontShowCardsCurrentTab = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDontShowIdentitiesCurrentTab(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.dontShowIdentitiesCurrentTab ?? false\n );\n }\n\n async setDontShowIdentitiesCurrentTab(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.dontShowIdentitiesCurrentTab = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEmail(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.profile?.email;\n }\n\n async setEmail(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.email = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getEmailVerified(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.profile.emailVerified ?? false\n );\n }\n\n async setEmailVerified(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.emailVerified = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableAlwaysOnTop(options?: StorageOptions): Promise {\n const accountPreference = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.enableAlwaysOnTop;\n const globalPreference = (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.enableAlwaysOnTop;\n return accountPreference ?? globalPreference ?? false;\n }\n\n async setEnableAlwaysOnTop(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.enableAlwaysOnTop = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableAlwaysOnTop = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableAutoFillOnPageLoad(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.enableAutoFillOnPageLoad ?? false\n );\n }\n\n async setEnableAutoFillOnPageLoad(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.enableAutoFillOnPageLoad = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBiometric(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBiometrics ?? false\n );\n }\n\n async setEnableBiometric(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBiometrics = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBrowserIntegration(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBrowserIntegration ?? false\n );\n }\n\n async setEnableBrowserIntegration(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBrowserIntegration = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBrowserIntegrationFingerprint(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBrowserIntegrationFingerprint ?? false\n );\n }\n\n async setEnableBrowserIntegrationFingerprint(\n value: boolean,\n options?: StorageOptions\n ): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBrowserIntegrationFingerprint = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableCloseToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableCloseToTray ?? false\n );\n }\n\n async setEnableCloseToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableCloseToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableFullWidth(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.enableFullWidth ?? false\n );\n }\n\n async setEnableFullWidth(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.enableFullWidth = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnableGravitars(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.enableGravitars ?? false\n );\n }\n\n async setEnableGravitars(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.enableGravitars = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnableMinimizeToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableMinimizeToTray ?? false\n );\n }\n\n async setEnableMinimizeToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableMinimizeToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableStartToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableStartToTray ?? false\n );\n }\n\n async setEnableStartToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableStartToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableTray ?? false\n );\n }\n\n async setEnableTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.ciphers?.encrypted;\n }\n\n async setEncryptedCiphers(\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.ciphers.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedCollections(\n options?: StorageOptions\n ): Promise<{ [id: string]: CollectionData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.collections?.encrypted;\n }\n\n async setEncryptedCollections(\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.collections.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedCryptoSymmetricKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys.cryptoSymmetricKey.encrypted;\n }\n\n async setEncryptedCryptoSymmetricKey(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.cryptoSymmetricKey.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.folders?.encrypted;\n }\n\n async setEncryptedFolders(\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.folders.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedOrganizationKeys(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.organizationKeys.encrypted;\n }\n\n async setEncryptedOrganizationKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.organizationKeys.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPasswordGenerationHistory(\n options?: StorageOptions\n ): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.passwordGenerationHistory?.encrypted;\n }\n\n async setEncryptedPasswordGenerationHistory(\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.passwordGenerationHistory.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPinProtected(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.pinProtected?.encrypted;\n }\n\n async setEncryptedPinProtected(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.pinProtected.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPolicies(options?: StorageOptions): Promise<{ [id: string]: PolicyData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.policies?.encrypted;\n }\n\n async setEncryptedPolicies(\n value: { [id: string]: PolicyData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.policies.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPrivateKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.privateKey?.encrypted;\n }\n\n async setEncryptedPrivateKey(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.privateKey.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedProviderKeys(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.providerKeys?.encrypted;\n }\n\n async setEncryptedProviderKeys(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.providerKeys.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.sends.encrypted;\n }\n\n async setEncryptedSends(\n value: { [id: string]: SendData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.sends.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEntityId(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.profile?.entityId;\n }\n\n async setEntityId(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.profile.entityId = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEntityType(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.profile?.entityType;\n }\n\n async setEntityType(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.profile.entityType = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnvironmentUrls(options?: StorageOptions): Promise {\n if (this.state.activeUserId == null) {\n return await this.getGlobalEnvironmentUrls(options);\n }\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n return (await this.getAccount(options))?.settings?.environmentUrls ?? new EnvironmentUrls();\n }\n\n async setEnvironmentUrls(value: EnvironmentUrls, options?: StorageOptions): Promise {\n // Global values are set on each change and the current global settings are passed to any newly authed accounts.\n // This is to allow setting environement values before an account is active, while still allowing individual accounts to have their own environments.\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.environmentUrls = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEquivalentDomains(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.equivalentDomains;\n }\n\n async setEquivalentDomains(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.equivalentDomains = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEventCollection(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.eventCollection;\n }\n\n async setEventCollection(value: EventData[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.eventCollection = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEverBeenUnlocked(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.profile\n ?.everBeenUnlocked ?? false\n );\n }\n\n async setEverBeenUnlocked(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.everBeenUnlocked = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getForcePasswordReset(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.profile\n ?.forcePasswordReset ?? false\n );\n }\n\n async setForcePasswordReset(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.forcePasswordReset = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getInstalledVersion(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.installedVersion;\n }\n\n async setInstalledVersion(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.installedVersion = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getIsAuthenticated(options?: StorageOptions): Promise {\n return (await this.getAccessToken(options)) != null && (await this.getUserId(options)) != null;\n }\n\n async getKdfIterations(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.kdfIterations;\n }\n\n async setKdfIterations(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.kdfIterations = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getKdfType(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.kdfType;\n }\n\n async setKdfType(value: KdfType, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.kdfType = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getKeyHash(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.keyHash;\n }\n\n async setKeyHash(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.keyHash = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getLastActive(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n\n const accountActivity = await this.storageService.get<{ [userId: string]: number }>(\n keys.accountActivity,\n options\n );\n\n if (accountActivity == null || Object.keys(accountActivity).length < 1) {\n return null;\n }\n\n return accountActivity[options.userId];\n }\n\n async setLastActive(value: number, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n if (options.userId == null) {\n return;\n }\n const accountActivity =\n (await this.storageService.get<{ [userId: string]: number }>(\n keys.accountActivity,\n options\n )) ?? {};\n accountActivity[options.userId] = value;\n await this.storageService.save(keys.accountActivity, accountActivity, options);\n }\n\n async getLastSync(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.profile?.lastSync;\n }\n\n async setLastSync(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.profile.lastSync = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getLegacyEtmKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.legacyEtmKey;\n }\n\n async setLegacyEtmKey(value: SymmetricCryptoKey, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.legacyEtmKey = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getLocalData(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.data?.localData;\n }\n async setLocalData(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.data.localData = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getLocale(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.locale;\n }\n\n async setLocale(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.locale = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getMainWindowSize(options?: StorageOptions): Promise {\n return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.mainWindowSize;\n }\n\n async setMainWindowSize(value: number, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n globals.mainWindowSize = value;\n await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getMinimizeOnCopyToClipboard(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.minimizeOnCopyToClipboard ?? false\n );\n }\n\n async setMinimizeOnCopyToClipboard(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.minimizeOnCopyToClipboard = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNeverDomains(options?: StorageOptions): Promise<{ [id: string]: any }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.neverDomains;\n }\n\n async setNeverDomains(value: { [id: string]: any }, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.neverDomains = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNoAutoPromptBiometrics(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.noAutoPromptBiometrics ?? false\n );\n }\n\n async setNoAutoPromptBiometrics(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.noAutoPromptBiometrics = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNoAutoPromptBiometricsText(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.noAutoPromptBiometricsText;\n }\n\n async setNoAutoPromptBiometricsText(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.noAutoPromptBiometricsText = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getOpenAtLogin(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.openAtLogin ?? false\n );\n }\n\n async setOpenAtLogin(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.openAtLogin = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getOrganizationInvitation(options?: StorageOptions): Promise {\n return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.organizationInvitation;\n }\n\n async setOrganizationInvitation(value: any, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n globals.organizationInvitation = value;\n await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getOrganizations(options?: StorageOptions): Promise<{ [id: string]: OrganizationData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.organizations;\n }\n\n async setOrganizations(\n value: { [id: string]: OrganizationData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.organizations = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getPasswordGenerationOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.passwordGenerationOptions;\n }\n\n async setPasswordGenerationOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.passwordGenerationOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getUsernameGenerationOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.usernameGenerationOptions;\n }\n\n async setUsernameGenerationOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.usernameGenerationOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getGeneratorOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.generatorOptions;\n }\n\n async setGeneratorOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.generatorOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getProtectedPin(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.protectedPin;\n }\n\n async setProtectedPin(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.protectedPin = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getProviders(options?: StorageOptions): Promise<{ [id: string]: ProviderData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.providers;\n }\n\n async setProviders(\n value: { [id: string]: ProviderData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.providers = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getPublicKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.publicKey;\n }\n\n async setPublicKey(value: ArrayBuffer, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.publicKey = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getRefreshToken(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.tokens?.refreshToken;\n }\n\n async setRefreshToken(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.tokens.refreshToken = value;\n await this.saveAccount(account, options);\n }\n\n async getRememberedEmail(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.rememberedEmail;\n }\n\n async setRememberedEmail(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.rememberedEmail = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getSecurityStamp(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.tokens?.securityStamp;\n }\n\n async setSecurityStamp(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.tokens.securityStamp = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getSettings(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.settings?.settings;\n }\n\n async setSettings(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.settings.settings = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getSsoCodeVerifier(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.ssoCodeVerifier;\n }\n\n async setSsoCodeVerifier(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.ssoCodeVerifier = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getSsoOrgIdentifier(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.ssoOrganizationIdentifier;\n }\n\n async setSsoOrganizationIdentifier(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.ssoOrganizationIdentifier = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getSsoState(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.ssoState;\n }\n\n async setSsoState(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.ssoState = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getTheme(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.theme;\n }\n\n async setTheme(value: ThemeType, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.theme = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getTwoFactorToken(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.twoFactorToken;\n }\n\n async setTwoFactorToken(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.twoFactorToken = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getUserId(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.userId;\n }\n\n async getUsesKeyConnector(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.usesKeyConnector;\n }\n\n async setUsesKeyConnector(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.usesKeyConnector = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getVaultTimeout(options?: StorageOptions): Promise {\n const accountVaultTimeout = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.vaultTimeout;\n return accountVaultTimeout;\n }\n\n async setVaultTimeout(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.vaultTimeout = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getVaultTimeoutAction(options?: StorageOptions): Promise {\n const accountVaultTimeoutAction = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.vaultTimeoutAction;\n const globalVaultTimeoutAction = (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.vaultTimeoutAction;\n return accountVaultTimeoutAction ?? globalVaultTimeoutAction;\n }\n\n async setVaultTimeoutAction(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.vaultTimeoutAction = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getStateVersion(): Promise {\n return (await this.getGlobals(await this.defaultOnDiskLocalOptions())).stateVersion ?? 1;\n }\n\n async setStateVersion(value: number): Promise {\n const globals = await this.getGlobals(await this.defaultOnDiskOptions());\n globals.stateVersion = value;\n await this.saveGlobals(globals, await this.defaultOnDiskOptions());\n }\n\n async getWindow(): Promise {\n const globals = await this.getGlobals(await this.defaultOnDiskOptions());\n return globals?.window != null && Object.keys(globals.window).length > 0\n ? globals.window\n : new WindowState();\n }\n\n async setWindow(value: WindowState, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.window = value;\n return await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n protected async getGlobals(options: StorageOptions): Promise {\n let globals: TGlobalState;\n if (this.useMemory(options.storageLocation)) {\n globals = this.getGlobalsFromMemory();\n }\n\n if (this.useDisk && globals == null) {\n globals = await this.getGlobalsFromDisk(options);\n }\n\n return globals ?? this.createGlobals();\n }\n\n protected async saveGlobals(globals: TGlobalState, options: StorageOptions) {\n return this.useMemory(options.storageLocation)\n ? this.saveGlobalsToMemory(globals)\n : await this.saveGlobalsToDisk(globals, options);\n }\n\n protected getGlobalsFromMemory(): TGlobalState {\n return this.state.globals;\n }\n\n protected async getGlobalsFromDisk(options: StorageOptions): Promise {\n return await this.storageService.get(keys.global, options);\n }\n\n protected saveGlobalsToMemory(globals: TGlobalState): void {\n this.state.globals = globals;\n }\n\n protected async saveGlobalsToDisk(globals: TGlobalState, options: StorageOptions): Promise {\n if (options.useSecureStorage) {\n await this.secureStorageService.save(keys.global, globals, options);\n } else {\n await this.storageService.save(keys.global, globals, options);\n }\n }\n\n protected async getAccount(options: StorageOptions): Promise {\n try {\n let account: TAccount;\n if (this.useMemory(options.storageLocation)) {\n account = this.getAccountFromMemory(options);\n }\n\n if (this.useDisk(options.storageLocation) && account == null) {\n account = await this.getAccountFromDisk(options);\n }\n\n return account;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected getAccountFromMemory(options: StorageOptions): TAccount {\n if (this.state.accounts == null) {\n return null;\n }\n return this.state.accounts[this.getUserIdFromMemory(options)];\n }\n\n protected getUserIdFromMemory(options: StorageOptions): string {\n return options?.userId != null\n ? this.state.accounts[options.userId]?.profile?.userId\n : this.state.activeUserId;\n }\n\n protected async getAccountFromDisk(options: StorageOptions): Promise {\n if (options?.userId == null && this.state.activeUserId == null) {\n return null;\n }\n\n if (this.useAccountCache) {\n const cachedAccount = this.accountDiskCache.get(options.userId);\n if (cachedAccount != null) {\n return cachedAccount;\n }\n }\n\n const account = options?.useSecureStorage\n ? (await this.secureStorageService.get(options.userId, options)) ??\n (await this.storageService.get(\n options.userId,\n this.reconcileOptions(options, { htmlStorageLocation: HtmlStorageLocation.Local })\n ))\n : await this.storageService.get(options.userId, options);\n\n if (this.useAccountCache) {\n this.accountDiskCache.set(options.userId, account);\n }\n return account;\n }\n\n protected useMemory(storageLocation: StorageLocation) {\n return storageLocation === StorageLocation.Memory || storageLocation === StorageLocation.Both;\n }\n\n protected useDisk(storageLocation: StorageLocation) {\n return storageLocation === StorageLocation.Disk || storageLocation === StorageLocation.Both;\n }\n\n protected async saveAccount(\n account: TAccount,\n options: StorageOptions = {\n storageLocation: StorageLocation.Both,\n useSecureStorage: false,\n }\n ) {\n return this.useMemory(options.storageLocation)\n ? await this.saveAccountToMemory(account)\n : await this.saveAccountToDisk(account, options);\n }\n\n protected async saveAccountToDisk(account: TAccount, options: StorageOptions): Promise {\n const storageLocation = options.useSecureStorage\n ? this.secureStorageService\n : this.storageService;\n\n await storageLocation.save(`${options.userId}`, account, options);\n\n if (this.useAccountCache) {\n this.accountDiskCache.delete(options.userId);\n }\n }\n\n protected async saveAccountToMemory(account: TAccount): Promise {\n if (this.getAccountFromMemory({ userId: account.profile.userId }) !== null) {\n this.state.accounts[account.profile.userId] = account;\n }\n await this.pushAccounts();\n }\n\n protected async scaffoldNewAccountStorage(account: TAccount): Promise {\n // We don't want to manipulate the referenced in memory account\n const deepClone = JSON.parse(JSON.stringify(account));\n await this.scaffoldNewAccountLocalStorage(deepClone);\n await this.scaffoldNewAccountSessionStorage(deepClone);\n await this.scaffoldNewAccountMemoryStorage(deepClone);\n }\n\n // TODO: There is a tech debt item for splitting up these methods - only Web uses multiple storage locations in its storageService.\n // For now these methods exist with some redundancy to facilitate this special web requirement.\n protected async scaffoldNewAccountLocalStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskLocalOptions()\n )\n );\n // EnvironmentUrls are set before authenticating and should override whatever is stored from any previous session\n const environmentUrls = account.settings.environmentUrls;\n if (storedAccount?.settings != null) {\n account.settings = storedAccount.settings;\n } else if (await this.storageService.has(keys.tempAccountSettings)) {\n account.settings = await this.storageService.get(keys.tempAccountSettings);\n await this.storageService.remove(keys.tempAccountSettings);\n }\n account.settings.environmentUrls = environmentUrls;\n if (account.settings.vaultTimeoutAction === \"logOut\" && account.settings.vaultTimeout != null) {\n account.tokens.accessToken = null;\n account.tokens.refreshToken = null;\n account.profile.apiKeyClientId = null;\n account.keys.apiKeyClientSecret = null;\n }\n await this.saveAccount(\n account,\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskLocalOptions()\n )\n );\n }\n\n protected async scaffoldNewAccountMemoryStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskMemoryOptions()\n )\n );\n if (storedAccount?.settings != null) {\n storedAccount.settings.environmentUrls = account.settings.environmentUrls;\n account.settings = storedAccount.settings;\n }\n await this.storageService.save(\n account.profile.userId,\n account,\n await this.defaultOnDiskMemoryOptions()\n );\n await this.saveAccount(\n account,\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskMemoryOptions()\n )\n );\n }\n\n protected async scaffoldNewAccountSessionStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: account.profile.userId }, await this.defaultOnDiskOptions())\n );\n if (storedAccount?.settings != null) {\n storedAccount.settings.environmentUrls = account.settings.environmentUrls;\n account.settings = storedAccount.settings;\n }\n await this.storageService.save(\n account.profile.userId,\n account,\n await this.defaultOnDiskMemoryOptions()\n );\n await this.saveAccount(\n account,\n this.reconcileOptions({ userId: account.profile.userId }, await this.defaultOnDiskOptions())\n );\n }\n //\n\n protected async pushAccounts(): Promise {\n await this.pruneInMemoryAccounts();\n if (this.state?.accounts == null || Object.keys(this.state.accounts).length < 1) {\n this.accounts.next(null);\n return;\n }\n\n this.accounts.next(this.state.accounts);\n }\n\n protected reconcileOptions(\n requestedOptions: StorageOptions,\n defaultOptions: StorageOptions\n ): StorageOptions {\n if (requestedOptions == null) {\n return defaultOptions;\n }\n requestedOptions.userId = requestedOptions?.userId ?? defaultOptions.userId;\n requestedOptions.storageLocation =\n requestedOptions?.storageLocation ?? defaultOptions.storageLocation;\n requestedOptions.useSecureStorage =\n requestedOptions?.useSecureStorage ?? defaultOptions.useSecureStorage;\n requestedOptions.htmlStorageLocation =\n requestedOptions?.htmlStorageLocation ?? defaultOptions.htmlStorageLocation;\n requestedOptions.keySuffix = requestedOptions?.keySuffix ?? defaultOptions.keySuffix;\n return requestedOptions;\n }\n\n protected get defaultInMemoryOptions(): StorageOptions {\n return { storageLocation: StorageLocation.Memory, userId: this.state.activeUserId };\n }\n\n protected async defaultOnDiskOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Session,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultOnDiskLocalOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Local,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultOnDiskMemoryOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Memory,\n userId: this.state.activeUserId ?? (await this.getUserId()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultSecureStorageOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n useSecureStorage: true,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n };\n }\n\n protected async getActiveUserIdFromStorage(): Promise {\n return await this.storageService.get(keys.activeUserId);\n }\n\n protected async removeAccountFromLocalStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskLocalOptions())\n );\n await this.saveAccount(\n this.resetAccount(storedAccount),\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskLocalOptions())\n );\n }\n\n protected async removeAccountFromSessionStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskOptions())\n );\n await this.saveAccount(\n this.resetAccount(storedAccount),\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskOptions())\n );\n }\n\n protected async removeAccountFromSecureStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n await this.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.setCryptoMasterKeyBiometric(null, { userId: userId });\n await this.setCryptoMasterKeyB64(null, { userId: userId });\n }\n\n protected removeAccountFromMemory(userId: string = this.state.activeUserId): void {\n delete this.state.accounts[userId];\n if (this.useAccountCache) {\n this.accountDiskCache.delete(userId);\n }\n }\n\n protected async pruneInMemoryAccounts() {\n // We preserve settings for logged out accounts, but we don't want to consider them when thinking about active account state\n for (const userId in this.state.accounts) {\n if (!(await this.getIsAuthenticated({ userId: userId }))) {\n this.removeAccountFromMemory(userId);\n }\n }\n }\n\n // settings persist even on reset, and are not effected by this method\n protected resetAccount(account: TAccount) {\n const persistentAccountInformation = { settings: account.settings };\n return Object.assign(this.createAccount(), persistentAccountInformation);\n }\n\n protected async setAccountEnvironmentUrls(account: TAccount): Promise {\n account.settings.environmentUrls = await this.getGlobalEnvironmentUrls();\n return account;\n }\n\n protected async getGlobalEnvironmentUrls(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n return (await this.getGlobals(options)).environmentUrls ?? new EnvironmentUrls();\n }\n\n protected clearDecryptedDataForActiveUser() {\n const userId = this.state.activeUserId;\n if (userId == null || this.state?.accounts[userId]?.data == null) {\n return;\n }\n this.state.accounts[userId].data = new AccountData();\n }\n\n protected createAccount(init: Partial = null): TAccount {\n return this.stateFactory.createAccount(init);\n }\n\n protected createGlobals(init: Partial = null): TGlobalState {\n return this.stateFactory.createGlobal(init);\n }\n\n protected async deAuthenticateAccount(userId: string) {\n await this.setAccessToken(null, { userId: userId });\n await this.setLastActive(null, { userId: userId });\n this.state.authenticatedAccounts = this.state.authenticatedAccounts.filter(\n (activeUserId) => activeUserId !== userId\n );\n await this.storageService.save(keys.authenticatedAccounts, this.state.authenticatedAccounts);\n }\n\n protected async removeAccountFromDisk(userId: string) {\n await this.removeAccountFromSessionStorage(userId);\n await this.removeAccountFromLocalStorage(userId);\n await this.removeAccountFromSecureStorage(userId);\n }\n\n protected async dynamicallySetActiveUser() {\n if (this.state.accounts == null || Object.keys(this.state.accounts).length < 1) {\n await this.setActiveUser(null);\n return;\n }\n for (const userId in this.state.accounts) {\n if (userId == null) {\n continue;\n }\n if (await this.getIsAuthenticated({ userId: userId })) {\n await this.setActiveUser(userId);\n break;\n }\n await this.setActiveUser(null);\n }\n }\n\n private async getTimeoutBasedStorageOptions(options?: StorageOptions): Promise {\n const timeoutAction = await this.getVaultTimeoutAction({ userId: options?.userId });\n const timeout = await this.getVaultTimeout({ userId: options?.userId });\n const defaultOptions =\n timeoutAction === \"logOut\" && timeout != null\n ? this.defaultInMemoryOptions\n : await this.defaultOnDiskOptions();\n return this.reconcileOptions(options, defaultOptions);\n }\n\n private async saveSecureStorageKey(key: string, value: string, options?: StorageOptions) {\n return value == null\n ? await this.secureStorageService.remove(`${options.userId}${key}`, options)\n : await this.secureStorageService.save(`${options.userId}${key}`, value, options);\n }\n}\n","import { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { StateVersion } from \"../enums/stateVersion\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { StateFactory } from \"../factories/stateFactory\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account, AccountSettings } from \"../models/domain/account\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { GlobalState } from \"../models/domain/globalState\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\n\nimport { TokenService } from \"./token.service\";\n\n// Originally (before January 2022) storage was handled as a flat key/value pair store.\n// With the move to a typed object for state storage these keys should no longer be in use anywhere outside of this migration.\nconst v1Keys: { [key: string]: string } = {\n accessToken: \"accessToken\",\n alwaysShowDock: \"alwaysShowDock\",\n autoConfirmFingerprints: \"autoConfirmFingerprints\",\n autoFillOnPageLoadDefault: \"autoFillOnPageLoadDefault\",\n biometricAwaitingAcceptance: \"biometricAwaitingAcceptance\",\n biometricFingerprintValidated: \"biometricFingerprintValidated\",\n biometricText: \"biometricText\",\n biometricUnlock: \"biometric\",\n clearClipboard: \"clearClipboardKey\",\n clientId: \"apikey_clientId\",\n clientSecret: \"apikey_clientSecret\",\n collapsedGroupings: \"collapsedGroupings\",\n convertAccountToKeyConnector: \"convertAccountToKeyConnector\",\n defaultUriMatch: \"defaultUriMatch\",\n disableAddLoginNotification: \"disableAddLoginNotification\",\n disableAutoBiometricsPrompt: \"noAutoPromptBiometrics\",\n disableAutoTotpCopy: \"disableAutoTotpCopy\",\n disableBadgeCounter: \"disableBadgeCounter\",\n disableChangedPasswordNotification: \"disableChangedPasswordNotification\",\n disableContextMenuItem: \"disableContextMenuItem\",\n disableFavicon: \"disableFavicon\",\n disableGa: \"disableGa\",\n dontShowCardsCurrentTab: \"dontShowCardsCurrentTab\",\n dontShowIdentitiesCurrentTab: \"dontShowIdentitiesCurrentTab\",\n emailVerified: \"emailVerified\",\n enableAlwaysOnTop: \"enableAlwaysOnTopKey\",\n enableAutoFillOnPageLoad: \"enableAutoFillOnPageLoad\",\n enableBiometric: \"enabledBiometric\",\n enableBrowserIntegration: \"enableBrowserIntegration\",\n enableBrowserIntegrationFingerprint: \"enableBrowserIntegrationFingerprint\",\n enableCloseToTray: \"enableCloseToTray\",\n enableFullWidth: \"enableFullWidth\",\n enableGravatars: \"enableGravatars\",\n enableMinimizeToTray: \"enableMinimizeToTray\",\n enableStartToTray: \"enableStartToTrayKey\",\n enableTray: \"enableTray\",\n encKey: \"encKey\", // Generated Symmetric Key\n encOrgKeys: \"encOrgKeys\",\n encPrivate: \"encPrivateKey\",\n encProviderKeys: \"encProviderKeys\",\n entityId: \"entityId\",\n entityType: \"entityType\",\n environmentUrls: \"environmentUrls\",\n equivalentDomains: \"equivalentDomains\",\n eventCollection: \"eventCollection\",\n forcePasswordReset: \"forcePasswordReset\",\n history: \"generatedPasswordHistory\",\n installedVersion: \"installedVersion\",\n kdf: \"kdf\",\n kdfIterations: \"kdfIterations\",\n key: \"key\", // Master Key\n keyHash: \"keyHash\",\n lastActive: \"lastActive\",\n localData: \"sitesLocalData\",\n locale: \"locale\",\n mainWindowSize: \"mainWindowSize\",\n minimizeOnCopyToClipboard: \"minimizeOnCopyToClipboardKey\",\n neverDomains: \"neverDomains\",\n noAutoPromptBiometricsText: \"noAutoPromptBiometricsText\",\n openAtLogin: \"openAtLogin\",\n passwordGenerationOptions: \"passwordGenerationOptions\",\n pinProtected: \"pinProtectedKey\",\n protectedPin: \"protectedPin\",\n refreshToken: \"refreshToken\",\n ssoCodeVerifier: \"ssoCodeVerifier\",\n ssoIdentifier: \"ssoOrgIdentifier\",\n ssoState: \"ssoState\",\n stamp: \"securityStamp\",\n theme: \"theme\",\n userEmail: \"userEmail\",\n userId: \"userId\",\n usesConnector: \"usesKeyConnector\",\n vaultTimeoutAction: \"vaultTimeoutAction\",\n vaultTimeout: \"lockOption\",\n rememberedEmail: \"rememberedEmail\",\n};\n\nconst v1KeyPrefixes: { [key: string]: string } = {\n ciphers: \"ciphers_\",\n collections: \"collections_\",\n folders: \"folders_\",\n lastSync: \"lastSync_\",\n policies: \"policies_\",\n twoFactorToken: \"twoFactorToken_\",\n organizations: \"organizations_\",\n providers: \"providers_\",\n sends: \"sends_\",\n settings: \"settings_\",\n};\n\nconst keys = {\n global: \"global\",\n authenticatedAccounts: \"authenticatedAccounts\",\n activeUserId: \"activeUserId\",\n tempAccountSettings: \"tempAccountSettings\", // used to hold account specific settings (i.e clear clipboard) between initial migration and first account authentication\n accountActivity: \"accountActivity\",\n};\n\nconst partialKeys = {\n autoKey: \"_masterkey_auto\",\n biometricKey: \"_masterkey_biometric\",\n masterKey: \"_masterkey\",\n};\n\nexport class StateMigrationService<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n constructor(\n protected storageService: StorageService,\n protected secureStorageService: StorageService,\n protected stateFactory: StateFactory\n ) {}\n\n async needsMigration(): Promise {\n const currentStateVersion = await this.getCurrentStateVersion();\n return currentStateVersion == null || currentStateVersion < StateVersion.Latest;\n }\n\n async migrate(): Promise {\n let currentStateVersion = await this.getCurrentStateVersion();\n while (currentStateVersion < StateVersion.Latest) {\n switch (currentStateVersion) {\n case StateVersion.One:\n await this.migrateStateFrom1To2();\n break;\n case StateVersion.Two:\n await this.migrateStateFrom2To3();\n break;\n case StateVersion.Three:\n await this.migrateStateFrom3To4();\n break;\n }\n\n currentStateVersion += 1;\n }\n }\n\n protected async migrateStateFrom1To2(): Promise {\n const clearV1Keys = async (clearingUserId?: string) => {\n for (const key in v1Keys) {\n if (key == null) {\n continue;\n }\n await this.set(v1Keys[key], null);\n }\n if (clearingUserId != null) {\n for (const keyPrefix in v1KeyPrefixes) {\n if (keyPrefix == null) {\n continue;\n }\n await this.set(v1KeyPrefixes[keyPrefix] + userId, null);\n }\n }\n };\n\n // Some processes, like biometrics, may have already defined a value before migrations are run.\n // We don't want to null out those values if they don't exist in the old storage scheme (like for new installs)\n // So, the OOO for migration is that we:\n // 1. Check for an existing storage value from the old storage structure OR\n // 2. Check for a value already set by processes that run before migration OR\n // 3. Assign the default value\n const globals =\n (await this.get(keys.global)) ?? this.stateFactory.createGlobal(null);\n globals.stateVersion = StateVersion.Two;\n globals.environmentUrls =\n (await this.get(v1Keys.environmentUrls)) ?? globals.environmentUrls;\n globals.locale = (await this.get(v1Keys.locale)) ?? globals.locale;\n globals.noAutoPromptBiometrics =\n (await this.get(v1Keys.disableAutoBiometricsPrompt)) ??\n globals.noAutoPromptBiometrics;\n globals.noAutoPromptBiometricsText =\n (await this.get(v1Keys.noAutoPromptBiometricsText)) ??\n globals.noAutoPromptBiometricsText;\n globals.ssoCodeVerifier =\n (await this.get(v1Keys.ssoCodeVerifier)) ?? globals.ssoCodeVerifier;\n globals.ssoOrganizationIdentifier =\n (await this.get(v1Keys.ssoIdentifier)) ?? globals.ssoOrganizationIdentifier;\n globals.ssoState = (await this.get(v1Keys.ssoState)) ?? globals.ssoState;\n globals.rememberedEmail =\n (await this.get(v1Keys.rememberedEmail)) ?? globals.rememberedEmail;\n globals.theme = (await this.get(v1Keys.theme)) ?? globals.theme;\n globals.vaultTimeout = (await this.get(v1Keys.vaultTimeout)) ?? globals.vaultTimeout;\n globals.vaultTimeoutAction =\n (await this.get(v1Keys.vaultTimeoutAction)) ?? globals.vaultTimeoutAction;\n globals.window = (await this.get(v1Keys.mainWindowSize)) ?? globals.window;\n globals.enableTray = (await this.get(v1Keys.enableTray)) ?? globals.enableTray;\n globals.enableMinimizeToTray =\n (await this.get(v1Keys.enableMinimizeToTray)) ?? globals.enableMinimizeToTray;\n globals.enableCloseToTray =\n (await this.get(v1Keys.enableCloseToTray)) ?? globals.enableCloseToTray;\n globals.enableStartToTray =\n (await this.get(v1Keys.enableStartToTray)) ?? globals.enableStartToTray;\n globals.openAtLogin = (await this.get(v1Keys.openAtLogin)) ?? globals.openAtLogin;\n globals.alwaysShowDock =\n (await this.get(v1Keys.alwaysShowDock)) ?? globals.alwaysShowDock;\n globals.enableBrowserIntegration =\n (await this.get(v1Keys.enableBrowserIntegration)) ??\n globals.enableBrowserIntegration;\n globals.enableBrowserIntegrationFingerprint =\n (await this.get(v1Keys.enableBrowserIntegrationFingerprint)) ??\n globals.enableBrowserIntegrationFingerprint;\n\n const userId =\n (await this.get(v1Keys.userId)) ?? (await this.get(v1Keys.entityId));\n\n const defaultAccount = this.stateFactory.createAccount(null);\n const accountSettings: AccountSettings = {\n autoConfirmFingerPrints:\n (await this.get(v1Keys.autoConfirmFingerprints)) ??\n defaultAccount.settings.autoConfirmFingerPrints,\n autoFillOnPageLoadDefault:\n (await this.get(v1Keys.autoFillOnPageLoadDefault)) ??\n defaultAccount.settings.autoFillOnPageLoadDefault,\n biometricLocked: null,\n biometricUnlock:\n (await this.get(v1Keys.biometricUnlock)) ??\n defaultAccount.settings.biometricUnlock,\n clearClipboard:\n (await this.get(v1Keys.clearClipboard)) ?? defaultAccount.settings.clearClipboard,\n defaultUriMatch:\n (await this.get(v1Keys.defaultUriMatch)) ?? defaultAccount.settings.defaultUriMatch,\n disableAddLoginNotification:\n (await this.get(v1Keys.disableAddLoginNotification)) ??\n defaultAccount.settings.disableAddLoginNotification,\n disableAutoBiometricsPrompt:\n (await this.get(v1Keys.disableAutoBiometricsPrompt)) ??\n defaultAccount.settings.disableAutoBiometricsPrompt,\n disableAutoTotpCopy:\n (await this.get(v1Keys.disableAutoTotpCopy)) ??\n defaultAccount.settings.disableAutoTotpCopy,\n disableBadgeCounter:\n (await this.get(v1Keys.disableBadgeCounter)) ??\n defaultAccount.settings.disableBadgeCounter,\n disableChangedPasswordNotification:\n (await this.get(v1Keys.disableChangedPasswordNotification)) ??\n defaultAccount.settings.disableChangedPasswordNotification,\n disableContextMenuItem:\n (await this.get(v1Keys.disableContextMenuItem)) ??\n defaultAccount.settings.disableContextMenuItem,\n disableGa: (await this.get(v1Keys.disableGa)) ?? defaultAccount.settings.disableGa,\n dontShowCardsCurrentTab:\n (await this.get(v1Keys.dontShowCardsCurrentTab)) ??\n defaultAccount.settings.dontShowCardsCurrentTab,\n dontShowIdentitiesCurrentTab:\n (await this.get(v1Keys.dontShowIdentitiesCurrentTab)) ??\n defaultAccount.settings.dontShowIdentitiesCurrentTab,\n enableAlwaysOnTop:\n (await this.get(v1Keys.enableAlwaysOnTop)) ??\n defaultAccount.settings.enableAlwaysOnTop,\n enableAutoFillOnPageLoad:\n (await this.get(v1Keys.enableAutoFillOnPageLoad)) ??\n defaultAccount.settings.enableAutoFillOnPageLoad,\n enableBiometric:\n (await this.get(v1Keys.enableBiometric)) ??\n defaultAccount.settings.enableBiometric,\n enableFullWidth:\n (await this.get(v1Keys.enableFullWidth)) ??\n defaultAccount.settings.enableFullWidth,\n enableGravitars:\n (await this.get(v1Keys.enableGravatars)) ??\n defaultAccount.settings.enableGravitars,\n environmentUrls: globals.environmentUrls ?? defaultAccount.settings.environmentUrls,\n equivalentDomains:\n (await this.get(v1Keys.equivalentDomains)) ??\n defaultAccount.settings.equivalentDomains,\n minimizeOnCopyToClipboard:\n (await this.get(v1Keys.minimizeOnCopyToClipboard)) ??\n defaultAccount.settings.minimizeOnCopyToClipboard,\n neverDomains:\n (await this.get(v1Keys.neverDomains)) ?? defaultAccount.settings.neverDomains,\n passwordGenerationOptions:\n (await this.get(v1Keys.passwordGenerationOptions)) ??\n defaultAccount.settings.passwordGenerationOptions,\n pinProtected: {\n decrypted: null,\n encrypted: await this.get(v1Keys.pinProtected),\n },\n protectedPin: await this.get(v1Keys.protectedPin),\n settings: userId == null ? null : await this.get(v1KeyPrefixes.settings + userId),\n vaultTimeout:\n (await this.get(v1Keys.vaultTimeout)) ?? defaultAccount.settings.vaultTimeout,\n vaultTimeoutAction:\n (await this.get(v1Keys.vaultTimeoutAction)) ??\n defaultAccount.settings.vaultTimeoutAction,\n };\n\n // (userId == null) = no logged in user (so no known userId) and we need to temporarily store account specific settings in state to migrate on first auth\n // (userId != null) = we have a currently authed user (so known userId) with encrypted data and other key settings we can move, no need to temporarily store account settings\n if (userId == null) {\n await this.set(keys.tempAccountSettings, accountSettings);\n await this.set(keys.global, globals);\n await this.set(keys.authenticatedAccounts, []);\n await this.set(keys.activeUserId, null);\n await clearV1Keys();\n return;\n }\n\n globals.twoFactorToken = await this.get(v1KeyPrefixes.twoFactorToken + userId);\n await this.set(keys.global, globals);\n await this.set(userId, {\n data: {\n addEditCipherInfo: null,\n ciphers: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: CipherData }>(v1KeyPrefixes.ciphers + userId),\n },\n collapsedGroupings: null,\n collections: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: CollectionData }>(\n v1KeyPrefixes.collections + userId\n ),\n },\n eventCollection: await this.get(v1Keys.eventCollection),\n folders: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: FolderData }>(v1KeyPrefixes.folders + userId),\n },\n localData: null,\n organizations: await this.get<{ [id: string]: OrganizationData }>(\n v1KeyPrefixes.organizations + userId\n ),\n passwordGenerationHistory: {\n decrypted: null,\n encrypted: await this.get(v1Keys.history),\n },\n policies: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: PolicyData }>(v1KeyPrefixes.policies + userId),\n },\n providers: await this.get<{ [id: string]: ProviderData }>(v1KeyPrefixes.providers + userId),\n sends: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: SendData }>(v1KeyPrefixes.sends + userId),\n },\n },\n keys: {\n apiKeyClientSecret: await this.get(v1Keys.clientSecret),\n cryptoMasterKey: null,\n cryptoMasterKeyAuto: null,\n cryptoMasterKeyB64: null,\n cryptoMasterKeyBiometric: null,\n cryptoSymmetricKey: {\n encrypted: await this.get(v1Keys.encKey),\n decrypted: null,\n },\n legacyEtmKey: null,\n organizationKeys: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encOrgKeys),\n },\n privateKey: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encPrivate),\n },\n providerKeys: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encProviderKeys),\n },\n publicKey: null,\n },\n profile: {\n apiKeyClientId: await this.get(v1Keys.clientId),\n authenticationStatus: null,\n convertAccountToKeyConnector: await this.get(v1Keys.convertAccountToKeyConnector),\n email: await this.get(v1Keys.userEmail),\n emailVerified: await this.get(v1Keys.emailVerified),\n entityId: null,\n entityType: null,\n everBeenUnlocked: null,\n forcePasswordReset: null,\n hasPremiumPersonally: null,\n kdfIterations: await this.get(v1Keys.kdfIterations),\n kdfType: await this.get(v1Keys.kdf),\n keyHash: await this.get(v1Keys.keyHash),\n lastSync: null,\n userId: userId,\n usesKeyConnector: null,\n },\n settings: accountSettings,\n tokens: {\n accessToken: await this.get(v1Keys.accessToken),\n decodedToken: null,\n refreshToken: await this.get(v1Keys.refreshToken),\n securityStamp: null,\n },\n });\n\n await this.set(keys.authenticatedAccounts, [userId]);\n await this.set(keys.activeUserId, userId);\n\n const accountActivity: { [userId: string]: number } = {\n [userId]: await this.get(v1Keys.lastActive),\n };\n accountActivity[userId] = await this.get(v1Keys.lastActive);\n await this.set(keys.accountActivity, accountActivity);\n\n await clearV1Keys(userId);\n\n if (await this.secureStorageService.has(v1Keys.key, { keySuffix: \"biometric\" })) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.biometricKey}`,\n await this.secureStorageService.get(v1Keys.key, { keySuffix: \"biometric\" }),\n { keySuffix: \"biometric\" }\n );\n await this.secureStorageService.remove(v1Keys.key, { keySuffix: \"biometric\" });\n }\n\n if (await this.secureStorageService.has(v1Keys.key, { keySuffix: \"auto\" })) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.autoKey}`,\n await this.secureStorageService.get(v1Keys.key, { keySuffix: \"auto\" }),\n { keySuffix: \"auto\" }\n );\n await this.secureStorageService.remove(v1Keys.key, { keySuffix: \"auto\" });\n }\n\n if (await this.secureStorageService.has(v1Keys.key)) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.masterKey}`,\n await this.secureStorageService.get(v1Keys.key)\n );\n await this.secureStorageService.remove(v1Keys.key);\n }\n }\n\n protected async migrateStateFrom2To3(): Promise {\n const authenticatedUserIds = await this.get(keys.authenticatedAccounts);\n await Promise.all(\n authenticatedUserIds.map(async (userId) => {\n const account = await this.get(userId);\n if (\n account?.profile?.hasPremiumPersonally === null &&\n account.tokens?.accessToken != null\n ) {\n const decodedToken = await TokenService.decodeToken(account.tokens.accessToken);\n account.profile.hasPremiumPersonally = decodedToken.premium;\n await this.set(userId, account);\n }\n })\n );\n\n const globals = await this.getGlobals();\n globals.stateVersion = StateVersion.Three;\n await this.set(keys.global, globals);\n }\n\n protected async migrateStateFrom3To4(): Promise {\n const authenticatedUserIds = await this.get(keys.authenticatedAccounts);\n await Promise.all(\n authenticatedUserIds.map(async (userId) => {\n const account = await this.get(userId);\n if (account?.profile?.everBeenUnlocked != null) {\n delete account.profile.everBeenUnlocked;\n return this.set(userId, account);\n }\n })\n );\n\n const globals = await this.getGlobals();\n globals.stateVersion = StateVersion.Four;\n await this.set(keys.global, globals);\n }\n\n protected get options(): StorageOptions {\n return { htmlStorageLocation: HtmlStorageLocation.Local };\n }\n\n protected get(key: string): Promise {\n return this.storageService.get(key, this.options);\n }\n\n protected set(key: string, value: any): Promise {\n if (value == null) {\n return this.storageService.remove(key, this.options);\n }\n return this.storageService.save(key, value, this.options);\n }\n\n protected async getGlobals(): Promise {\n return await this.get(keys.global);\n }\n\n protected async getCurrentStateVersion(): Promise {\n return (await this.getGlobals())?.stateVersion ?? StateVersion.One;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { ProviderService } from \"../abstractions/provider.service\";\nimport { SendService } from \"../abstractions/send.service\";\nimport { SettingsService } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SyncService as SyncServiceAbstraction } from \"../abstractions/sync.service\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport { CollectionDetailsResponse } from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress = false;\n\n constructor(\n private apiService: ApiService,\n private settingsService: SettingsService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private cryptoService: CryptoService,\n private collectionService: CollectionService,\n private messagingService: MessagingService,\n private policyService: PolicyService,\n private sendService: SendService,\n private logService: LogService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private organizationService: OrganizationService,\n private providerService: ProviderService,\n private logoutCallback: (expired: boolean) => Promise\n ) {}\n\n async getLastSync(): Promise {\n if ((await this.stateService.getUserId()) == null) {\n return null;\n }\n\n const lastSync = await this.stateService.getLastSync();\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date, userId?: string): Promise {\n await this.stateService.setLastSync(date.toJSON(), { userId: userId });\n }\n\n @sequentialize(() => \"fullSync\")\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.stateService.getIsAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n try {\n await this.apiService.refreshIdentityToken();\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(response.ciphers);\n await this.syncSends(response.sends);\n await this.syncSettings(response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if (\n (!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)\n ) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n await this.folderService.upsert(new FolderData(remoteFolder));\n this.messagingService.send(\"syncedUpsertedFolder\", { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedFolder\", { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (\n !shouldUpdate &&\n checkCollections &&\n notification.organizationId != null &&\n notification.collectionIds != null &&\n notification.collectionIds.length > 0\n ) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n await this.cipherService.upsert(new CipherData(remoteCipher));\n this.messagingService.send(\"syncedUpsertedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if (\n (!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)\n ) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n await this.sendService.upsert(new SendData(remoteSend));\n this.messagingService.send(\"syncedUpsertedSend\", { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedSend\", { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send(\"syncStarted\");\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send(\"syncCompleted\", { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.stateService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error(\"Stamp has changed\");\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setProviderKeys(response.providers);\n await this.cryptoService.setOrgKeys(response.organizations, response.providerOrganizations);\n await this.stateService.setSecurityStamp(response.securityStamp);\n await this.stateService.setEmailVerified(response.emailVerified);\n await this.stateService.setForcePasswordReset(response.forcePasswordReset);\n await this.keyConnectorService.setUsesKeyConnector(response.usesKeyConnector);\n\n const organizations: { [id: string]: OrganizationData } = {};\n response.organizations.forEach((o) => {\n organizations[o.id] = new OrganizationData(o);\n });\n\n const providers: { [id: string]: ProviderData } = {};\n response.providers.forEach((p) => {\n providers[p.id] = new ProviderData(p);\n });\n\n response.providerOrganizations.forEach((o) => {\n if (organizations[o.id] == null) {\n organizations[o.id] = new OrganizationData(o);\n organizations[o.id].isProviderUser = true;\n }\n });\n\n await this.organizationService.save(organizations);\n await this.providerService.save(providers);\n\n if (await this.keyConnectorService.userNeedsMigration()) {\n await this.keyConnectorService.setConvertAccountRequired(true);\n this.messagingService.send(\"convertAccountToKeyConnector\");\n } else {\n this.keyConnectorService.removeConvertAccountRequired();\n }\n }\n\n private async syncFolders(response: FolderResponse[]) {\n const folders: { [id: string]: FolderData } = {};\n response.forEach((f) => {\n folders[f.id] = new FolderData(f);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData } = {};\n response.forEach((c) => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData } = {};\n response.forEach((c) => {\n ciphers[c.id] = new CipherData(c);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(response: SendResponse[]) {\n const sends: { [id: string]: SendData } = {};\n response.forEach((s) => {\n sends[s.id] = new SendData(s);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach((global) => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData } = {};\n if (response != null) {\n response.forEach((p) => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { StateService } from \"../abstractions/state.service\";\nimport { TokenService as TokenServiceAbstraction } from \"../abstractions/token.service\";\nimport { Utils } from \"../misc/utils\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport class TokenService implements TokenServiceAbstraction {\n static decodeToken(token: string): Promise {\n if (token == null) {\n throw new Error(\"Token not provided.\");\n }\n\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"JWT must have 3 parts\");\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error(\"Cannot decode the token\");\n }\n\n const decodedToken = JSON.parse(decoded);\n return decodedToken;\n }\n\n constructor(private stateService: StateService) {}\n\n async setTokens(\n accessToken: string,\n refreshToken: string,\n clientIdClientSecret: [string, string]\n ): Promise {\n await this.setToken(accessToken);\n await this.setRefreshToken(refreshToken);\n if (clientIdClientSecret != null) {\n await this.setClientId(clientIdClientSecret[0]);\n await this.setClientSecret(clientIdClientSecret[1]);\n }\n }\n\n async setClientId(clientId: string): Promise {\n return await this.stateService.setApiKeyClientId(clientId);\n }\n\n async getClientId(): Promise {\n return await this.stateService.getApiKeyClientId();\n }\n\n async setClientSecret(clientSecret: string): Promise {\n return await this.stateService.setApiKeyClientSecret(clientSecret);\n }\n\n async getClientSecret(): Promise {\n return await this.stateService.getApiKeyClientSecret();\n }\n\n async setToken(token: string): Promise {\n await this.stateService.setAccessToken(token);\n }\n\n async getToken(): Promise {\n return await this.stateService.getAccessToken();\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n return await this.stateService.setRefreshToken(refreshToken);\n }\n\n async getRefreshToken(): Promise {\n return await this.stateService.getRefreshToken();\n }\n\n async setTwoFactorToken(tokenResponse: IdentityTokenResponse): Promise {\n return await this.stateService.setTwoFactorToken(tokenResponse.twoFactorToken);\n }\n\n async getTwoFactorToken(): Promise {\n return await this.stateService.getTwoFactorToken();\n }\n\n async clearTwoFactorToken(): Promise {\n return await this.stateService.setTwoFactorToken(null);\n }\n\n async clearToken(userId?: string): Promise {\n await this.stateService.setAccessToken(null, { userId: userId });\n await this.stateService.setRefreshToken(null, { userId: userId });\n await this.stateService.setApiKeyClientId(null, { userId: userId });\n await this.stateService.setApiKeyClientSecret(null, { userId: userId });\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n async decodeToken(token?: string): Promise {\n const storedToken = await this.stateService.getDecodedToken();\n if (token === null && storedToken != null) {\n return storedToken;\n }\n\n token = token ?? (await this.stateService.getAccessToken());\n\n if (token == null) {\n throw new Error(\"Token not found.\");\n }\n\n return TokenService.decodeToken(token);\n }\n\n async getTokenExpirationDate(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.exp === \"undefined\") {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n async tokenSecondsRemaining(offsetSeconds = 0): Promise {\n const d = await this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + offsetSeconds * 1000);\n return Math.round(msRemaining / 1000);\n }\n\n async tokenNeedsRefresh(minutes = 5): Promise {\n const sRemaining = await this.tokenSecondsRemaining();\n return sRemaining < 60 * minutes;\n }\n\n async getUserId(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.sub === \"undefined\") {\n throw new Error(\"No user id found\");\n }\n\n return decoded.sub as string;\n }\n\n async getEmail(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.email === \"undefined\") {\n throw new Error(\"No email found\");\n }\n\n return decoded.email as string;\n }\n\n async getEmailVerified(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.email_verified === \"undefined\") {\n throw new Error(\"No email verification found\");\n }\n\n return decoded.email_verified as boolean;\n }\n\n async getName(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.name === \"undefined\") {\n return null;\n }\n\n return decoded.name as string;\n }\n\n async getPremium(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.premium === \"undefined\") {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n async getIssuer(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.iss === \"undefined\") {\n throw new Error(\"No issuer found\");\n }\n\n return decoded.iss as string;\n }\n\n async getIsExternal(): Promise {\n const decoded = await this.decodeToken();\n\n return Array.isArray(decoded.amr) && decoded.amr.includes(\"external\");\n }\n}\n","import { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TotpService as TotpServiceAbstraction } from \"../abstractions/totp.service\";\nimport { Utils } from \"../misc/utils\";\n\nconst B32Chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nconst SteamChars = \"23456789BCDFGHJKMNPQRTVWXY\";\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: \"sha1\" | \"sha256\" | \"sha512\" = \"sha1\";\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf(\"otpauth://\") === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf(\"steam://\") === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has(\"digits\") && params.get(\"digits\") != null) {\n try {\n const digitParams = parseInt(params.get(\"digits\").trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch {\n this.logService.error(\"Invalid digits param.\");\n }\n }\n if (params.has(\"period\") && params.get(\"period\") != null) {\n try {\n const periodParam = parseInt(params.get(\"period\").trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch {\n this.logService.error(\"Invalid period param.\");\n }\n }\n if (params.has(\"secret\") && params.get(\"secret\") != null) {\n keyB32 = params.get(\"secret\");\n }\n if (params.has(\"algorithm\") && params.get(\"algorithm\") != null) {\n const algParam = params.get(\"algorithm\").toLowerCase();\n if (algParam === \"sha1\" || algParam === \"sha256\" || algParam === \"sha512\") {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr(\"steam://\".length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, \"0\");\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n const offset = hash[hash.length - 1] & 0xf;\n const binary =\n ((hash[offset] & 0x7f) << 24) |\n ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) |\n (hash[offset + 3] & 0xff);\n\n let otp = \"\";\n if (isSteamAuth) {\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, \"0\");\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf(\"otpauth://\") === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has(\"period\") && params.get(\"period\") != null) {\n try {\n period = parseInt(params.get(\"period\").trim(), null);\n } catch {\n this.logService.error(\"Invalid period param.\");\n }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.stateService.getDisableAutoTotpCopy());\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? \"0\" : \"\") + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = \"\";\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = \"\";\n let hex = \"\";\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, \"0\");\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(\n keyBytes: Uint8Array,\n timeBytes: Uint8Array,\n alg: \"sha1\" | \"sha256\" | \"sha512\"\n ) {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { I18nService } from \"../abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport {\n TwoFactorProviderDetails,\n TwoFactorService as TwoFactorServiceAbstraction,\n} from \"../abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"../enums/twoFactorProviderType\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\n\nexport const TwoFactorProviders: Partial> =\n {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: \"Duo\",\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: \"Duo (Organization)\",\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n [TwoFactorProviderType.WebAuthn]: {\n type: TwoFactorProviderType.WebAuthn,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n };\n\nexport class TwoFactorService implements TwoFactorServiceAbstraction {\n private twoFactorProvidersData: Map;\n private selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n constructor(\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t(\"emailTitle\");\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t(\"emailDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name =\n this.i18nService.t(\"authenticatorAppTitle\");\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t(\"authenticatorAppDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t(\"duoDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n \"Duo (\" + this.i18nService.t(\"organization\") + \")\";\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t(\"duoOrganizationDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].name = this.i18nService.t(\"webAuthnTitle\");\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].description =\n this.i18nService.t(\"webAuthnDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t(\"yubiKeyTitle\");\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description =\n this.i18nService.t(\"yubiKeyDesc\");\n }\n\n getSupportedProviders(win: Window): TwoFactorProviderDetails[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) &&\n this.platformUtilsService.supportsDuo()\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.WebAuthn) &&\n this.platformUtilsService.supportsWebAuthn(win)\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.WebAuthn]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultProvider(webAuthnSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (\n this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)\n ) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((_value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.WebAuthn && !webAuthnSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n setSelectedProvider(type: TwoFactorProviderType) {\n this.selectedTwoFactorProviderType = type;\n }\n\n clearSelectedProvider() {\n this.selectedTwoFactorProviderType = null;\n }\n\n setProviders(response: IdentityTwoFactorResponse) {\n this.twoFactorProvidersData = response.twoFactorProviders2;\n }\n\n clearProviders() {\n this.twoFactorProvidersData = null;\n }\n\n getProviders() {\n return this.twoFactorProvidersData;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { UserVerificationService as UserVerificationServiceAbstraction } from \"../abstractions/userVerification.service\";\nimport { VerificationType } from \"../enums/verificationType\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { Verification } from \"../types/verification\";\n\n/**\n * Used for general-purpose user verification throughout the app.\n * Use it to verify the input collected by UserVerificationComponent.\n */\nexport class UserVerificationService implements UserVerificationServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private i18nService: I18nService,\n private apiService: ApiService\n ) {}\n\n /**\n * Create a new request model to be used for server-side verification\n * @param verification User-supplied verification data (Master Password or OTP)\n * @param requestClass The request model to create\n * @param alreadyHashed Whether the master password is already hashed\n */\n async buildRequest(\n verification: Verification,\n requestClass?: new () => T,\n alreadyHashed?: boolean\n ) {\n this.validateInput(verification);\n\n const request =\n requestClass != null ? new requestClass() : (new SecretVerificationRequest() as T);\n\n if (verification.type === VerificationType.OTP) {\n request.otp = verification.secret;\n } else {\n request.masterPasswordHash = alreadyHashed\n ? verification.secret\n : await this.cryptoService.hashPassword(verification.secret, null);\n }\n\n return request;\n }\n\n /**\n * Used to verify the Master Password client-side, or send the OTP to the server for verification (with no other data)\n * Generally used for client-side verification only.\n * @param verification User-supplied verification data (Master Password or OTP)\n */\n async verifyUser(verification: Verification): Promise {\n this.validateInput(verification);\n\n if (verification.type === VerificationType.OTP) {\n const request = new VerifyOTPRequest(verification.secret);\n try {\n await this.apiService.postAccountVerifyOTP(request);\n } catch (e) {\n throw new Error(this.i18nService.t(\"invalidVerificationCode\"));\n }\n } else {\n const passwordValid = await this.cryptoService.compareAndUpdateKeyHash(\n verification.secret,\n null\n );\n if (!passwordValid) {\n throw new Error(this.i18nService.t(\"invalidMasterPassword\"));\n }\n }\n return true;\n }\n\n async requestOTP() {\n await this.apiService.postAccountRequestOTP();\n }\n\n private validateInput(verification: Verification) {\n if (verification?.secret == null || verification.secret === \"\") {\n if (verification.type === VerificationType.OTP) {\n throw new Error(this.i18nService.t(\"verificationCodeRequired\"));\n } else {\n throw new Error(this.i18nService.t(\"masterPassRequired\"));\n }\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { UsernameGenerationService as BaseUsernameGenerationService } from \"../abstractions/usernameGeneration.service\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\n\nconst DefaultOptions = {\n type: \"word\",\n wordCapitalize: true,\n wordIncludeNumber: true,\n subaddressType: \"random\",\n catchallType: \"random\",\n forwardedService: \"simplelogin\",\n forwardedAnonAddyDomain: \"anonaddy.me\",\n};\n\nexport class UsernameGenerationService implements BaseUsernameGenerationService {\n constructor(\n private cryptoService: CryptoService,\n private stateService: StateService,\n private apiService: ApiService\n ) {}\n\n generateUsername(options: any): Promise {\n if (options.type === \"catchall\") {\n return this.generateCatchall(options);\n } else if (options.type === \"subaddress\") {\n return this.generateSubaddress(options);\n } else if (options.type === \"forwarded\") {\n return this.generateForwarded(options);\n } else {\n return this.generateWord(options);\n }\n }\n\n async generateWord(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.wordCapitalize == null) {\n o.wordCapitalize = true;\n }\n if (o.wordIncludeNumber == null) {\n o.wordIncludeNumber = true;\n }\n\n const wordIndex = await this.cryptoService.randomNumber(0, EEFLongWordList.length - 1);\n let word = EEFLongWordList[wordIndex];\n if (o.wordCapitalize) {\n word = word.charAt(0).toUpperCase() + word.slice(1);\n }\n if (o.wordIncludeNumber) {\n const num = await this.cryptoService.randomNumber(1, 9999);\n word = word + this.zeroPad(num.toString(), 4);\n }\n return word;\n }\n\n async generateSubaddress(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n const subaddressEmail = o.subaddressEmail;\n if (subaddressEmail == null || subaddressEmail.length < 3) {\n return o.subaddressEmail;\n }\n const atIndex = subaddressEmail.indexOf(\"@\");\n if (atIndex < 1 || atIndex >= subaddressEmail.length - 1) {\n return subaddressEmail;\n }\n if (o.subaddressType == null) {\n o.subaddressType = \"random\";\n }\n\n const emailBeginning = subaddressEmail.substr(0, atIndex);\n const emailEnding = subaddressEmail.substr(atIndex + 1, subaddressEmail.length);\n\n let subaddressString = \"\";\n if (o.subaddressType === \"random\") {\n subaddressString = await this.randomString(8);\n } else if (o.subaddressType === \"website-name\") {\n subaddressString = o.website;\n }\n return emailBeginning + \"+\" + subaddressString + \"@\" + emailEnding;\n }\n\n async generateCatchall(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.catchallDomain == null || o.catchallDomain === \"\") {\n return null;\n }\n if (o.catchallType == null) {\n o.catchallType = \"random\";\n }\n\n let startString = \"\";\n if (o.catchallType === \"random\") {\n startString = await this.randomString(8);\n } else if (o.catchallType === \"website-name\") {\n startString = o.website;\n }\n return startString + \"@\" + o.catchallDomain;\n }\n\n async generateForwarded(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.forwardedService == null) {\n return null;\n }\n\n if (o.forwardedService === \"simplelogin\") {\n if (o.forwardedSimpleLoginApiKey == null || o.forwardedSimpleLoginApiKey === \"\") {\n return null;\n }\n return this.generateSimpleLoginAlias(o.forwardedSimpleLoginApiKey, o.website);\n } else if (o.forwardedService === \"anonaddy\") {\n if (\n o.forwardedAnonAddyApiToken == null ||\n o.forwardedAnonAddyApiToken === \"\" ||\n o.forwardedAnonAddyDomain == null ||\n o.forwardedAnonAddyDomain == \"\"\n ) {\n return null;\n }\n return this.generateAnonAddyAlias(\n o.forwardedAnonAddyApiToken,\n o.forwardedAnonAddyDomain,\n o.website\n );\n } else if (o.forwardedService === \"firefoxrelay\") {\n if (o.forwardedFirefoxApiToken == null || o.forwardedFirefoxApiToken === \"\") {\n return null;\n }\n return this.generateFirefoxRelayAlias(o.forwardedFirefoxApiToken, o.website);\n }\n\n return null;\n }\n\n async getOptions(): Promise {\n let options = await this.stateService.getUsernameGenerationOptions();\n if (options == null) {\n options = Object.assign({}, DefaultOptions);\n } else {\n options = Object.assign({}, DefaultOptions, options);\n }\n await this.stateService.setUsernameGenerationOptions(options);\n return options;\n }\n\n async saveOptions(options: any) {\n await this.stateService.setUsernameGenerationOptions(options);\n }\n\n private async randomString(length: number) {\n let str = \"\";\n const charSet = \"abcdefghijklmnopqrstuvwxyz1234567890\";\n for (let i = 0; i < length; i++) {\n const randomCharIndex = await this.cryptoService.randomNumber(0, charSet.length - 1);\n str += charSet.charAt(randomCharIndex);\n }\n return str;\n }\n\n // ref: https://stackoverflow.com/a/10073788\n private zeroPad(number: string, width: number) {\n return number.length >= width\n ? number\n : new Array(width - number.length + 1).join(\"0\") + number;\n }\n\n private async generateSimpleLoginAlias(apiKey: string, website: string): Promise {\n if (apiKey == null || apiKey === \"\") {\n throw \"Invalid SimpleLogin API key.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authentication: apiKey,\n \"Content-Type\": \"application/json\",\n }),\n };\n let url = \"https://app.simplelogin.io/api/alias/random/new\";\n if (website != null) {\n url += \"?hostname=\" + website;\n }\n requestInit.body = JSON.stringify({\n note: (website != null ? \"Website: \" + website + \". \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json.alias;\n }\n if (response.status === 401) {\n throw \"Invalid SimpleLogin API key.\";\n }\n try {\n const json = await response.json();\n if (json?.error != null) {\n throw \"SimpleLogin error:\" + json.error;\n }\n } catch {\n // Do nothing...\n }\n throw \"Unknown SimpleLogin error occurred.\";\n }\n\n private async generateAnonAddyAlias(\n apiToken: string,\n domain: string,\n websiteNote: string\n ): Promise {\n if (apiToken == null || apiToken === \"\") {\n throw \"Invalid AnonAddy API token.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authorization: \"Bearer \" + apiToken,\n \"Content-Type\": \"application/json\",\n }),\n };\n const url = \"https://app.anonaddy.com/api/v1/aliases\";\n requestInit.body = JSON.stringify({\n domain: domain,\n description:\n (websiteNote != null ? \"Website: \" + websiteNote + \". \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json?.data?.email;\n }\n if (response.status === 401) {\n throw \"Invalid AnonAddy API token.\";\n }\n throw \"Unknown AnonAddy error occurred.\";\n }\n\n private async generateFirefoxRelayAlias(apiToken: string, website: string): Promise {\n if (apiToken == null || apiToken === \"\") {\n throw \"Invalid Firefox Relay API token.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authorization: \"Token \" + apiToken,\n \"Content-Type\": \"application/json\",\n }),\n };\n const url = \"https://relay.firefox.com/api/v1/relayaddresses/\";\n requestInit.body = JSON.stringify({\n enabled: true,\n generated_for: website,\n description: (website != null ? website + \" - \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json?.full_address;\n }\n if (response.status === 401) {\n throw \"Invalid Firefox Relay API token.\";\n }\n throw \"Unknown Firefox Relay error occurred.\";\n }\n}\n","import { AuthService } from \"../abstractions/auth.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { SearchService } from \"../abstractions/search.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"../abstractions/vaultTimeout.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { PolicyType } from \"../enums/policyType\";\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n private inited = false;\n\n constructor(\n private cipherService: CipherService,\n private folderService: FolderService,\n private collectionService: CollectionService,\n private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService,\n private searchService: SearchService,\n private tokenService: TokenService,\n private policyService: PolicyService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private authService: AuthService,\n private lockedCallback: (userId?: string) => Promise = null,\n private loggedOutCallback: (expired: boolean, userId?: string) => Promise = null\n ) {}\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n return;\n }\n\n for (const userId in this.stateService.accounts.getValue()) {\n if (userId != null && (await this.shouldLock(userId))) {\n await this.executeTimeoutAction(userId);\n }\n }\n }\n\n async lock(allowSoftLock = false, userId?: string): Promise {\n const authed = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!authed) {\n return;\n }\n\n if (await this.keyConnectorService.getUsesKeyConnector()) {\n const pinSet = await this.isPinLockSet();\n const pinLock =\n (pinSet[0] && (await this.stateService.getDecryptedPinProtected()) != null) || pinSet[1];\n\n if (!pinLock && !(await this.isBiometricLockSet())) {\n await this.logOut(userId);\n }\n }\n\n if (userId == null || userId === (await this.stateService.getUserId())) {\n this.searchService.clearIndex();\n }\n\n await this.stateService.setEverBeenUnlocked(true, { userId: userId });\n await this.stateService.setBiometricLocked(true, { userId: userId });\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n\n await this.cryptoService.clearKey(false, userId);\n await this.cryptoService.clearOrgKeys(true, userId);\n await this.cryptoService.clearKeyPair(true, userId);\n await this.cryptoService.clearEncKey(true, userId);\n\n await this.folderService.clearCache(userId);\n await this.cipherService.clearCache(userId);\n await this.collectionService.clearCache(userId);\n\n this.messagingService.send(\"locked\", { userId: userId });\n\n if (this.lockedCallback != null) {\n await this.lockedCallback(userId);\n }\n }\n\n async logOut(userId?: string): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback(false, userId);\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.stateService.setVaultTimeout(timeout);\n\n // We swap these tokens from being on disk for lock actions, and in memory for logout actions\n // Get them here to set them to their new location after changing the timeout action and clearing if needed\n const token = await this.tokenService.getToken();\n const refreshToken = await this.tokenService.getRefreshToken();\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n\n const currentAction = await this.stateService.getVaultTimeoutAction();\n if ((timeout != null || timeout === 0) && action === \"logOut\" && action !== currentAction) {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.tokenService.clearToken();\n }\n\n await this.stateService.setVaultTimeoutAction(action);\n\n await this.tokenService.setToken(token);\n await this.tokenService.setRefreshToken(refreshToken);\n await this.tokenService.setClientId(clientId);\n await this.tokenService.setClientSecret(clientSecret);\n\n await this.cryptoService.toggleKey();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.stateService.getProtectedPin();\n const pinProtectedKey = await this.stateService.getEncryptedPinProtected();\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.stateService.getBiometricUnlock();\n }\n\n async getVaultTimeout(userId?: string): Promise {\n const vaultTimeout = await this.stateService.getVaultTimeout({ userId: userId });\n\n if (\n await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout, null, userId)\n ) {\n const policy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout, userId);\n // Remove negative values, and ensure it's smaller than maximum allowed value according to policy\n let timeout = Math.min(vaultTimeout, policy[0].data.minutes);\n\n if (vaultTimeout == null || timeout < 0) {\n timeout = policy[0].data.minutes;\n }\n\n // We really shouldn't need to set the value here, but multiple services relies on this value being correct.\n if (vaultTimeout !== timeout) {\n await this.stateService.setVaultTimeout(timeout, { userId: userId });\n }\n\n return timeout;\n }\n\n return vaultTimeout;\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setEverBeenUnlocked(false, { userId: userId });\n await this.stateService.setDecryptedPinProtected(null, { userId: userId });\n await this.stateService.setProtectedPin(null, { userId: userId });\n }\n\n private async shouldLock(userId: string): Promise {\n const authStatus = await this.authService.getAuthStatus(userId);\n if (\n authStatus === AuthenticationStatus.Locked ||\n authStatus === AuthenticationStatus.LoggedOut\n ) {\n return false;\n }\n\n const vaultTimeout = await this.getVaultTimeout(userId);\n if (vaultTimeout == null || vaultTimeout < 0) {\n return false;\n }\n\n const lastActive = await this.stateService.getLastActive({ userId: userId });\n if (lastActive == null) {\n return false;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = (new Date().getTime() - lastActive) / 1000;\n return diffSeconds >= vaultTimeoutSeconds;\n }\n\n private async executeTimeoutAction(userId: string): Promise {\n const timeoutAction = await this.stateService.getVaultTimeoutAction({ userId: userId });\n timeoutAction === \"logOut\" ? await this.logOut(userId) : await this.lock(true, userId);\n }\n}\n","import * as forge from \"node-forge\";\n\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { Utils } from \"../misc/utils\";\nimport { DecryptParameters } from \"../models/domain/decryptParameters\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n\n constructor(win: Window) {\n this.crypto = typeof win.crypto !== \"undefined\" ? win.crypto : null;\n this.subtle =\n !!this.crypto && typeof win.crypto.subtle !== \"undefined\" ? win.crypto.subtle : null;\n }\n\n async pbkdf2(\n password: string | ArrayBuffer,\n salt: string | ArrayBuffer,\n algorithm: \"sha256\" | \"sha512\",\n iterations: number\n ): Promise {\n const wcLen = algorithm === \"sha256\" ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: \"PBKDF2\",\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\n \"raw\",\n passwordBuf,\n { name: \"PBKDF2\" } as any,\n false,\n [\"deriveBits\"]\n );\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(\n ikm: ArrayBuffer,\n salt: string | ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: \"HKDF\",\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\"raw\", ikm, { name: \"HKDF\" } as any, false, [\n \"deriveBits\",\n ]);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(\n prk: ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ): Promise {\n const hashLen = algorithm === \"sha256\" ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error(\"outputByteSize is too large.\");\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error(\"prk is too small.\");\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(\n value: string | ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"\n ): Promise {\n if (algorithm === \"md5\") {\n const md = algorithm === \"md5\" ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, \"raw\");\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(\n value: ArrayBuffer,\n key: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ): Promise {\n const signingAlgorithm = {\n name: \"HMAC\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\"raw\", key, signingAlgorithm, false, [\"sign\"]);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n };\n const impKey = await this.subtle.importKey(\"raw\", macKey, signingAlgorithm, false, [\"sign\"]);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: \"sha1\" | \"sha256\" | \"sha512\"): Promise {\n const hmac = forge.hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = forge.hmac.create();\n hmac.start(\"sha256\", macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" } as any, false, [\n \"encrypt\",\n ]);\n return await this.subtle.encrypt({ name: \"AES-CBC\", iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ): DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = forge.util.createBuffer(parameters.data);\n const decipher = forge.cipher.createDecipher(\"AES-CBC\", parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString();\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" } as any, false, [\n \"decrypt\",\n ]);\n return await this.subtle.decrypt({ name: \"AES-CBC\", iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(\n data: ArrayBuffer,\n publicKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: \"RSA-OAEP\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey(\"spki\", publicKey, rsaParams, false, [\"encrypt\"]);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(\n data: ArrayBuffer,\n privateKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: \"RSA-OAEP\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey(\"pkcs8\", privateKey, rsaParams, false, [\"decrypt\"]);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: \"RSA-OAEP\",\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm(\"sha1\") },\n };\n const impPrivateKey = await this.subtle.importKey(\"pkcs8\", privateKey, rsaParams, true, [\n \"decrypt\",\n ]);\n const jwkPrivateKey = await this.subtle.exportKey(\"jwk\", impPrivateKey);\n const jwkPublicKeyParams = {\n kty: \"RSA\",\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: \"RSA-OAEP\",\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey(\"jwk\", jwkPublicKeyParams, rsaParams, true, [\n \"encrypt\",\n ]);\n return await this.subtle.exportKey(\"spki\", impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: \"RSA-OAEP\",\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm(\"sha1\") },\n };\n const keyPair = (await this.subtle.generateKey(rsaParams, true, [\n \"encrypt\",\n \"decrypt\",\n ])) as CryptoKeyPair;\n const publicKey = await this.subtle.exportKey(\"spki\", keyPair.publicKey);\n const privateKey = await this.subtle.exportKey(\"pkcs8\", keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof value === \"string\") {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof value === \"string\") {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"): string {\n if (algorithm === \"md5\") {\n throw new Error(\"MD5 is not supported in WebCrypto.\");\n }\n return algorithm === \"sha1\" ? \"SHA-1\" : algorithm === \"sha256\" ? \"SHA-256\" : \"SHA-512\";\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from \"@angular/core\";\n\ntype BadgeTypes = \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\" | \"info\";\n\nconst styles: Record = {\n primary: [\"tw-bg-primary-500\"],\n secondary: [\"tw-bg-text-muted\"],\n success: [\"tw-bg-success-500\"],\n danger: [\"tw-bg-danger-500\"],\n warning: [\"tw-bg-warning-500\"],\n info: [\"tw-bg-info-500\"],\n};\n\nconst hoverStyles: Record = {\n primary: [\"hover:tw-bg-primary-700\"],\n secondary: [\"hover:tw-bg-secondary-700\"],\n success: [\"hover:tw-bg-success-700\"],\n danger: [\"hover:tw-bg-danger-700\"],\n warning: [\"hover:tw-bg-warning-700\"],\n info: [\"hover:tw-bg-info-700\"],\n};\n\n@Directive({\n selector: \"span[bit-badge], a[bit-badge], button[bit-badge]\",\n})\nexport class BadgeComponent implements OnInit, OnChanges {\n @HostBinding(\"class\") @Input(\"class\") classList = \"\";\n\n @Input() badgeType: BadgeTypes = \"primary\";\n\n private isSpan = false;\n\n constructor(private el: ElementRef) {\n this.isSpan = el?.nativeElement?.nodeName == \"SPAN\";\n }\n\n ngOnInit(): void {\n this.classList = this.classes.join(\" \");\n }\n\n ngOnChanges() {\n this.ngOnInit();\n }\n\n get classes() {\n return [\n \"tw-inline-block\",\n \"tw-py-1\",\n \"tw-px-1.5\",\n \"tw-font-bold\",\n \"tw-leading-none\",\n \"tw-text-center\",\n \"!tw-text-contrast\",\n \"tw-rounded\",\n \"tw-border-none\",\n \"tw-box-border\",\n \"tw-whitespace-no-wrap\",\n \"tw-text-xs\",\n \"hover:tw-no-underline\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n ]\n .concat(styles[this.badgeType])\n .concat(this.isSpan ? [] : hoverStyles[this.badgeType]);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { BadgeComponent } from \"./badge.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [BadgeComponent],\n declarations: [BadgeComponent],\n})\nexport class BadgeModule {}\n","export * from \"./badge.component\";\nexport * from \"./badge.module\";\n","import { Component, Input, OnInit, Output, EventEmitter } from \"@angular/core\";\n\ntype BannerTypes = \"premium\" | \"info\" | \"warning\" | \"danger\";\n\nconst defaultIcon: Record = {\n premium: \"bwi-star\",\n info: \"bwi-info-circle\",\n warning: \"bwi-exclamation-triangle\",\n danger: \"bwi-error\",\n};\n\n@Component({\n selector: \"bit-banner\",\n templateUrl: \"./banner.component.html\",\n})\nexport class BannerComponent implements OnInit {\n @Input(\"bannerType\") bannerType: BannerTypes = \"info\";\n @Input() icon: string;\n @Input() useAlertRole = true;\n\n @Output() onClose = new EventEmitter();\n\n ngOnInit(): void {\n this.icon ??= defaultIcon[this.bannerType];\n }\n\n get bannerClass() {\n switch (this.bannerType) {\n case \"danger\":\n return \"tw-bg-danger-500\";\n case \"info\":\n return \"tw-bg-info-500\";\n case \"premium\":\n return \"tw-bg-success-500\";\n case \"warning\":\n return \"tw-bg-warning-500\";\n }\n }\n}\n","\n \n \n \n \n \n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { BannerComponent } from \"./banner.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [BannerComponent],\n declarations: [BannerComponent],\n})\nexport class BannerModule {}\n","export * from \"./banner.component\";\nexport * from \"./banner.module\";\n","import { Input, HostBinding, OnChanges, Directive, OnInit } from \"@angular/core\";\n\nexport type ButtonTypes = \"primary\" | \"secondary\" | \"danger\";\n\nconst buttonStyles: Record = {\n primary: [\n \"tw-border-primary-500\",\n \"tw-bg-primary-500\",\n \"!tw-text-contrast\",\n \"hover:tw-bg-primary-700\",\n \"hover:tw-border-primary-700\",\n \"focus:tw-bg-primary-700\",\n \"focus:tw-border-primary-700\",\n ].join(\" \"),\n secondary: [\n \"tw-bg-transparent\",\n \"tw-border-text-muted\",\n \"!tw-text-muted\",\n \"hover:tw-bg-secondary-500\",\n \"hover:tw-border-secondary-500\",\n \"hover:!tw-text-contrast\",\n \"focus:tw-bg-secondary-500\",\n \"focus:tw-border-secondary-500\",\n \"focus:!tw-text-contrast\",\n ].join(\" \"),\n danger: [\n \"tw-bg-transparent\",\n \"tw-border-danger-500\",\n \"!tw-text-danger\",\n \"hover:tw-bg-danger-500\",\n \"hover:tw-border-danger-500\",\n \"hover:!tw-text-contrast\",\n \"focus:tw-bg-danger-500\",\n \"focus:tw-border-danger-500\",\n \"focus:!tw-text-contrast\",\n ].join(\" \"),\n};\n\n@Directive({\n selector: \"button[bit-button], a[bit-button]\",\n})\nexport class ButtonComponent implements OnInit, OnChanges {\n @HostBinding(\"class\") @Input() classList = \"\";\n\n @Input()\n buttonType: ButtonTypes = \"secondary\";\n\n @Input()\n block = false;\n\n ngOnInit(): void {\n this.classList = this.classes.join(\" \");\n }\n\n ngOnChanges() {\n this.ngOnInit();\n }\n\n get classes(): string[] {\n return [\n \"tw-font-semibold\",\n \"tw-py-1.5\",\n \"tw-px-3\",\n \"tw-rounded\",\n \"tw-transition\",\n \"tw-border\",\n \"tw-border-solid\",\n \"tw-text-center\",\n \"hover:tw-no-underline\",\n \"disabled:tw-bg-secondary-100\",\n \"disabled:tw-border-secondary-100\",\n \"disabled:!tw-text-main\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n this.block ? \"tw-w-full tw-block\" : \"tw-inline-block\",\n buttonStyles[this.buttonType ?? \"secondary\"],\n ];\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { ButtonComponent } from \"./button.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [ButtonComponent],\n declarations: [ButtonComponent],\n})\nexport class ButtonModule {}\n","export * from \"./button.component\";\nexport * from \"./button.module\";\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\ntype CalloutTypes = \"success\" | \"info\" | \"warning\" | \"danger\";\n\nconst defaultIcon: Record = {\n success: \"bwi-check\",\n info: \"bwi-info-circle\",\n warning: \"bwi-exclamation-triangle\",\n danger: \"bwi-error\",\n};\n\nconst defaultI18n: Partial> = {\n warning: \"warning\",\n danger: \"error\",\n};\n\n@Component({\n selector: \"bit-callout\",\n templateUrl: \"callout.component.html\",\n})\nexport class CalloutComponent implements OnInit {\n @Input() type: CalloutTypes = \"info\";\n @Input() icon: string;\n @Input() title: string;\n @Input() useAlertRole = false;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit() {\n this.icon ??= defaultIcon[this.type];\n if (this.title == null && defaultI18n[this.type] != null) {\n this.title = this.i18nService.t(defaultI18n[this.type]);\n }\n }\n\n get calloutClass() {\n switch (this.type) {\n case \"danger\":\n return \"tw-border-l-danger-500\";\n case \"info\":\n return \"tw-border-l-info-500\";\n case \"success\":\n return \"tw-border-l-success-500\";\n case \"warning\":\n return \"tw-border-l-warning-500\";\n }\n }\n\n get headerClass() {\n switch (this.type) {\n case \"danger\":\n return \"!tw-text-danger\";\n case \"info\":\n return \"!tw-text-info\";\n case \"success\":\n return \"!tw-text-success\";\n case \"warning\":\n return \"!tw-text-warning\";\n }\n }\n}\n","\n \n \n {{ title }}\n \n \n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { CalloutComponent } from \"./callout.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [CalloutComponent],\n declarations: [CalloutComponent],\n})\nexport class CalloutModule {}\n","export * from \"./callout.module\";\nexport * from \"./callout.component\";\n","export * from \"./badge\";\nexport * from \"./banner\";\nexport * from \"./button\";\nexport * from \"./callout\";\nexport * from \"./menu\";\n","export * from \"./menu.module\";\nexport * from \"./menu.component\";\nexport * from \"./menu-trigger-for.directive\";\nexport * from \"./menu-item.component\";\nexport * from \"./menu-divider.component\";\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"bit-menu-divider\",\n templateUrl: \"./menu-divider.component.html\",\n})\nexport class MenuDividerComponent {}\n","\n","import { FocusableOption } from \"@angular/cdk/a11y\";\nimport { Component, ElementRef, HostBinding } from \"@angular/core\";\n\n@Component({\n selector: \"[bit-menu-item]\",\n template: ``,\n})\nexport class MenuItemComponent implements FocusableOption {\n @HostBinding(\"class\") classList = [\n \"tw-block\",\n \"tw-py-1\",\n \"tw-px-4\",\n \"!tw-text-main\",\n \"!tw-no-underline\",\n \"tw-cursor-pointer\",\n \"tw-border-none\",\n \"tw-bg-background\",\n \"tw-text-left\",\n \"hover:tw-bg-secondary-100\",\n \"focus:tw-bg-secondary-100\",\n \"focus:tw-z-50\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n \"active:!tw-ring-0\",\n \"active:!tw-ring-offset-0\",\n ].join(\" \");\n @HostBinding(\"attr.role\") role = \"menuitem\";\n @HostBinding(\"tabIndex\") tabIndex = \"-1\";\n\n constructor(private elementRef: ElementRef) {}\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { filter, mergeWith } from \"rxjs/operators\";\n\nimport { MenuComponent } from \"./menu.component\";\n\n@Directive({\n selector: \"[bitMenuTriggerFor]\",\n})\nexport class MenuTriggerForDirective implements OnDestroy {\n @HostBinding(\"attr.aria-expanded\") isOpen = false;\n @HostBinding(\"attr.aria-haspopup\") hasPopup = \"menu\";\n @HostBinding(\"attr.role\") role = \"button\";\n\n @Input(\"bitMenuTriggerFor\") menu: MenuComponent;\n\n private overlayRef: OverlayRef;\n private defaultMenuConfig: OverlayConfig = {\n panelClass: \"bit-menu-panel\",\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originX: \"start\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n },\n {\n originX: \"end\",\n originY: \"bottom\",\n overlayX: \"end\",\n overlayY: \"top\",\n },\n ])\n .withLockedPosition(true)\n .withFlexibleDimensions(false)\n .withPush(false),\n };\n private closedEventsSub: Subscription;\n private keyDownEventsSub: Subscription;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay\n ) {}\n\n @HostListener(\"click\") toggleMenu() {\n this.isOpen ? this.destroyMenu() : this.openMenu();\n }\n\n ngOnDestroy() {\n this.disposeAll();\n }\n\n private openMenu() {\n if (this.menu == null) {\n throw new Error(\"Cannot find bit-menu element\");\n }\n\n this.isOpen = true;\n this.overlayRef = this.overlay.create(this.defaultMenuConfig);\n\n const templatePortal = new TemplatePortal(this.menu.templateRef, this.viewContainerRef);\n this.overlayRef.attach(templatePortal);\n\n this.closedEventsSub = this.getClosedEvents().subscribe((event: KeyboardEvent | undefined) => {\n if (event?.key === \"Tab\") {\n // Required to ensure tab order resumes correctly\n this.elementRef.nativeElement.focus();\n }\n this.destroyMenu();\n });\n this.keyDownEventsSub = this.overlayRef\n .keydownEvents()\n .subscribe((event: KeyboardEvent) => this.menu.keyManager.onKeydown(event));\n }\n\n private destroyMenu() {\n if (this.overlayRef == null || !this.isOpen) {\n return;\n }\n\n this.isOpen = false;\n this.disposeAll();\n }\n\n private getClosedEvents(): Observable {\n const detachments = this.overlayRef.detachments();\n const escKey = this.overlayRef\n .keydownEvents()\n .pipe(filter((event: KeyboardEvent) => event.key === \"Escape\" || event.key === \"Tab\"));\n const backdrop = this.overlayRef.backdropClick();\n const menuClosed = this.menu.closed;\n\n return detachments.pipe(mergeWith(escKey, backdrop, menuClosed));\n }\n\n private disposeAll() {\n this.closedEventsSub?.unsubscribe();\n this.overlayRef?.dispose();\n this.keyDownEventsSub?.unsubscribe();\n }\n}\n","import { FocusKeyManager } from \"@angular/cdk/a11y\";\nimport {\n Component,\n Output,\n TemplateRef,\n ViewChild,\n EventEmitter,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from \"@angular/core\";\n\nimport { MenuItemComponent } from \"./menu-item.component\";\n\n@Component({\n selector: \"bit-menu\",\n templateUrl: \"./menu.component.html\",\n exportAs: \"menuComponent\",\n})\nexport class MenuComponent implements AfterContentInit {\n @ViewChild(TemplateRef) templateRef: TemplateRef;\n @Output() closed = new EventEmitter();\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList;\n keyManager: FocusKeyManager;\n\n ngAfterContentInit() {\n this.keyManager = new FocusKeyManager(this.menuItems).withWrap();\n }\n}\n","\n \n \n \n\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { MenuDividerComponent } from \"./menu-divider.component\";\nimport { MenuItemComponent } from \"./menu-item.component\";\nimport { MenuTriggerForDirective } from \"./menu-trigger-for.directive\";\nimport { MenuComponent } from \"./menu.component\";\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [MenuComponent, MenuTriggerForDirective, MenuItemComponent, MenuDividerComponent],\n exports: [MenuComponent, MenuTriggerForDirective, MenuItemComponent, MenuDividerComponent],\n})\nexport class MenuModule {}\n","import { StateService as BaseStateService } from \"jslib-common/abstractions/state.service\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\n\nimport { Account } from \"src/models/account\";\n\nexport abstract class StateService extends BaseStateService {\n getRememberEmail: (options?: StorageOptions) => Promise;\n setRememberEmail: (value: boolean, options?: StorageOptions) => Promise;\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { EmergencyAccessAcceptRequest } from \"jslib-common/models/request/emergencyAccessAcceptRequest\";\n\nimport { BaseAcceptComponent } from \"../common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-emergency\",\n templateUrl: \"accept-emergency.component.html\",\n})\nexport class AcceptEmergencyComponent extends BaseAcceptComponent {\n name: string;\n\n protected requiredParameters: string[] = [\"id\", \"name\", \"email\", \"token\"];\n protected failedShortMessage = \"emergencyInviteAcceptFailedShort\";\n protected failedMessage = \"emergencyInviteAcceptFailed\";\n\n constructor(\n router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n route: ActivatedRoute,\n private apiService: ApiService,\n stateService: StateService\n ) {\n super(router, platformUtilsService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"emergencyInviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, \" \");\n }\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"emergencyAccess\" | i18n }}

\n
\n
\n

\n {{ name }}\n

\n

{{ \"acceptEmergencyAccess\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { OrganizationUserAcceptRequest } from \"jslib-common/models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\n\nimport { BaseAcceptComponent } from \"../common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-organization\",\n templateUrl: \"accept-organization.component.html\",\n})\nexport class AcceptOrganizationComponent extends BaseAcceptComponent {\n orgName: string;\n\n protected requiredParameters: string[] = [\"organizationId\", \"organizationUserId\", \"token\"];\n\n constructor(\n router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n route: ActivatedRoute,\n private apiService: ApiService,\n stateService: StateService,\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private logService: LogService\n ) {\n super(router, platformUtilsService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n if (await this.performResetPasswordAutoEnroll(qParams)) {\n this.actionPromise = this.apiService\n .postOrganizationUserAccept(qParams.organizationId, qParams.organizationUserId, request)\n .then(() => {\n // Retrieve Public Key\n return this.apiService.getOrganizationKeys(qParams.organizationId);\n })\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create request and execute enrollment\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n qParams.organizationId,\n await this.stateService.getUserId(),\n resetRequest\n );\n });\n } else {\n this.actionPromise = this.apiService.postOrganizationUserAccept(\n qParams.organizationId,\n qParams.organizationUserId,\n request\n );\n }\n\n await this.actionPromise;\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"inviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n\n await this.stateService.setOrganizationInvitation(null);\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, \" \");\n }\n await this.stateService.setOrganizationInvitation(qParams);\n }\n\n private async performResetPasswordAutoEnroll(qParams: any): Promise {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(\n qParams.organizationId,\n qParams.token,\n qParams.email,\n qParams.organizationUserId\n );\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(\n policyList,\n qParams.organizationId\n );\n // Return true if policy enabled and auto-enroll enabled\n return result[1] && result[0].autoEnrollEnabled;\n }\n\n return false;\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"joinOrganization\" | i18n }}

\n
\n
\n

\n {{ orgName }}\n {{ email }}\n

\n

{{ \"joinOrganizationDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { HintComponent as BaseHintComponent } from \"jslib-angular/components/hint.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-hint\",\n templateUrl: \"hint.component.html\",\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n apiService: ApiService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService\n ) {\n super(router, i18nService, apiService, platformUtilsService, logService);\n }\n}\n","\n
\n
\n

{{ \"passwordHint\" | i18n }}

\n
\n
\n
\n \n \n {{ \"enterEmailToGetHint\" | i18n }}\n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n\n","import { Component, NgZone } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { LockComponent as BaseLockComponent } from \"jslib-angular/components/lock.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\n\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-lock\",\n templateUrl: \"lock.component.html\",\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n cryptoService: CryptoService,\n vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService,\n private routerService: RouterService,\n stateService: StateService,\n apiService: ApiService,\n logService: LogService,\n keyConnectorService: KeyConnectorService,\n ngZone: NgZone\n ) {\n super(\n router,\n i18nService,\n platformUtilsService,\n messagingService,\n cryptoService,\n vaultTimeoutService,\n environmentService,\n stateService,\n apiService,\n logService,\n keyConnectorService,\n ngZone\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.onSuccessfulSubmit = async () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl && previousUrl !== \"/\" && previousUrl.indexOf(\"lock\") === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigateByUrl(this.successRoute);\n };\n }\n}\n","
\n
\n
\n

\n \n

\n

{{ \"yourVaultIsLocked\" | i18n }}

\n
\n
\n
\n \n
\n \n \n \n \n
\n \n {{ \"loggedInAsEmailOn\" | i18n: email:webVaultHostname }}\n \n
\n
\n
\n \n {{ \"unlock\" | i18n }} \n \n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, NgZone } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { LoginComponent as BaseLoginComponent } from \"jslib-angular/components/login.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { StateService } from \"../../abstractions/state.service\";\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-login\",\n templateUrl: \"login.component.html\",\n})\nexport class LoginComponent extends BaseLoginComponent {\n showResetPasswordAutoEnrollWarning = false;\n enforcedPasswordPolicyOptions: MasterPasswordPolicyOptions;\n policies: ListResponse;\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService,\n cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService,\n private policyService: PolicyService,\n logService: LogService,\n ngZone: NgZone,\n protected stateService: StateService,\n private messagingService: MessagingService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n platformUtilsService,\n i18nService,\n stateService,\n environmentService,\n passwordGenerationService,\n cryptoFunctionService,\n logService,\n ngZone\n );\n this.onSuccessfulLogin = async () => {\n this.messagingService.send(\"setFullWidth\");\n };\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.email != null && qParams.email.indexOf(\"@\") > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.routerService.setPreviousUrl(\"/settings/premium\");\n } else if (qParams.org != null) {\n const route = this.router.createUrlTree([\"create-organization\"], {\n queryParams: { plan: qParams.org },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n const route = this.router.createUrlTree([\"setup/families-for-enterprise\"], {\n queryParams: { token: qParams.sponsorshipToken },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n await super.ngOnInit();\n this.rememberEmail = await this.stateService.getRememberEmail();\n });\n\n const invite = await this.stateService.getOrganizationInvitation();\n if (invite != null) {\n let policyList: Policy[] = null;\n try {\n this.policies = await this.apiService.getPoliciesByToken(\n invite.organizationId,\n invite.token,\n invite.email,\n invite.organizationUserId\n );\n policyList = this.policyService.mapPoliciesFromToken(this.policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const resetPasswordPolicy = this.policyService.getResetPasswordPolicyOptions(\n policyList,\n invite.organizationId\n );\n // Set to true if policy enabled and auto-enroll enabled\n this.showResetPasswordAutoEnrollWarning =\n resetPasswordPolicy[1] && resetPasswordPolicy[0].autoEnrollEnabled;\n\n this.enforcedPasswordPolicyOptions =\n await this.policyService.getMasterPasswordPolicyOptions(policyList);\n }\n }\n }\n\n async goAfterLogIn() {\n // Check master password against policy\n if (this.enforcedPasswordPolicyOptions != null) {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n const masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n\n // If invalid, save policies and require update\n if (\n !this.policyService.evaluateMasterPassword(\n masterPasswordScore,\n this.masterPassword,\n this.enforcedPasswordPolicyOptions\n )\n ) {\n const policiesData: { [id: string]: PolicyData } = {};\n this.policies.data.map((p) => (policiesData[p.id] = new PolicyData(p)));\n await this.policyService.replace(policiesData);\n this.router.navigate([\"update-password\"]);\n return;\n }\n }\n\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl) {\n this.router.navigateByUrl(previousUrl);\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n\n async submit() {\n await this.stateService.setRememberEmail(this.rememberEmail);\n if (!this.rememberEmail) {\n await this.stateService.setRememberedEmail(null);\n }\n await super.submit();\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n return userInput;\n }\n}\n","
\n
\n
\n \"Bitwarden\"\n

{{ \"loginOrCreateNewAccount\" | i18n }}

\n
\n
\n \n {{ \"resetPasswordAutoEnrollInviteWarning\" | i18n }}\n \n
\n \n \n
\n
\n \n
\n \n \n \n \n
\n \n {{ \"getMasterPasswordHint\" | i18n }}\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n {{ \"logIn\" | i18n }} \n \n \n \n \n {{ \"createAccount\" | i18n }}\n \n
\n \n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { DeleteRecoverRequest } from \"jslib-common/models/request/deleteRecoverRequest\";\n\n@Component({\n selector: \"app-recover-delete\",\n templateUrl: \"recover-delete.component.html\",\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deleteRecoverEmailSent\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"deleteAccount\" | i18n }}

\n
\n
\n

{{ \"deleteRecoverDesc\" | i18n }}

\n
\n \n \n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorRecoveryRequest } from \"jslib-common/models/request/twoFactorRecoveryRequest\";\n\n@Component({\n selector: \"app-recover-two-factor\",\n templateUrl: \"recover-two-factor.component.html\",\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private cryptoService: CryptoService,\n private authService: AuthService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, \"\").toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"twoStepRecoverDisabled\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"recoverAccountTwoStep\" | i18n }}

\n
\n
\n

\n {{ \"recoverAccountTwoStepDesc\" | i18n }}\n {{ \"learnMore\" | i18n }}\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { RegisterComponent as BaseRegisterComponent } from \"jslib-angular/components/register.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { ReferenceEventRequest } from \"jslib-common/models/request/referenceEventRequest\";\n\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-register\",\n templateUrl: \"register.component.html\",\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = \"\";\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n cryptoService: CryptoService,\n apiService: ApiService,\n private route: ActivatedRoute,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService,\n environmentService: EnvironmentService,\n logService: LogService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n i18nService,\n cryptoService,\n apiService,\n stateService,\n platformUtilsService,\n passwordGenerationService,\n environmentService,\n logService\n );\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe((qParams) => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf(\"@\") > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.routerService.setPreviousUrl(\"/settings/premium\");\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n const route = this.router.createUrlTree([\"create-organization\"], {\n queryParams: { plan: qParams.org },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = (\"; \" + document.cookie)\n .split(\"; reference=\")\n .pop()\n .split(\";\")\n .shift();\n }\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n // After logging in redirect them to setup the families sponsorship\n const route = this.router.createUrlTree([\"setup/families-for-enterprise\"], {\n queryParams: { plan: qParams.sponsorshipToken },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n if (this.referenceData.id === \"\") {\n this.referenceData.id = null;\n }\n });\n const invite = await this.stateService.getOrganizationInvitation();\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(\n invite.organizationId,\n invite.token,\n invite.email,\n invite.organizationUserId\n );\n if (policies.data != null) {\n const policiesData = policies.data.map((p) => new PolicyData(p));\n this.policies = policiesData.map((p) => new Policy(p));\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(\n this.policies\n );\n }\n\n await super.ngOnInit();\n }\n\n async submit() {\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n this.masterPasswordScore,\n this.masterPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return;\n }\n\n await super.submit();\n }\n}\n","
\n \n \n
\n
\n
\n
\n
\n
\n \n\n
\n
\n
\n
\n \n \n

The Bitwarden Password Manager

\n

\n Trusted by millions of individuals, teams, and organizations worldwide for secure\n password storage and sharing.\n

\n

Store logins, secure notes, and more

\n

Collaborate and share securely

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

\n Start Your Teams
Enterprise Free Trial Now\n

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Collaborate and share securely

\n

Deploy and manage quickly and easily

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

\n Start Your Teams
Enterprise Free Trial Now\n

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Collaborate and share securely

\n

Deploy and manage quickly and easily

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

Start Your Premium Account Now

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Store logins, secure notes, and more

\n

Secure your account with advanced two-step login

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n
\n
\n
\n
\n
\n

{{ \"createAccount\" | i18n }}

\n
\n
\n \n {{ \"createOrganizationCreatePersonalAccount\" | i18n }}\n \n
\n \n \n {{ \"emailAddressDesc\" | i18n }}\n
\n
\n \n \n {{ \"yourNameDesc\" | i18n }}\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n {{ \"masterPassDesc\" | i18n }}\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n \"No more excuses; start using Bitwarden today. The identity you save could be your\n own. The money definitely will be.\"\n
\n
\n
\n\n \n
\n
\n \n \n \n
\n
\n “Bitwarden boasts the backing of some of the world's best security experts and an\n attractive, easy-to-use interface”\n
\n
\n
\n \n \n \n \n \n \n \n \n \n\n","import { Component } from \"@angular/core\";\n\nimport { RemovePasswordComponent as BaseRemovePasswordComponent } from \"jslib-angular/components/remove-password.component\";\n\n@Component({\n selector: \"app-remove-password\",\n templateUrl: \"remove-password.component.html\",\n})\nexport class RemovePasswordComponent extends BaseRemovePasswordComponent {}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"removeMasterPassword\" | i18n }}

\n
\n
\n
\n

{{ \"convertOrganizationEncryptionDesc\" | i18n: organization.name }}

\n\n \n \n {{ \"removeMasterPassword\" | i18n }}\n \n \n \n {{ \"leaveOrganization\" | i18n }}\n \n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { SetPasswordComponent as BaseSetPasswordComponent } from \"jslib-angular/components/set-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\n\n@Component({\n selector: \"app-set-password\",\n templateUrl: \"set-password.component.html\",\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n router: Router,\n syncService: SyncService,\n route: ActivatedRoute,\n stateService: StateService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n router,\n apiService,\n syncService,\n route,\n stateService\n );\n }\n}\n","
\n
\n
\n

{{ \"setMasterPassword\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n {{ \"ssoCompleteRegistration\" | i18n }}\n \n {{ \"resetPasswordAutoEnrollInviteWarning\" | i18n }}\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n {{ \"masterPassDesc\" | i18n }}\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SsoComponent as BaseSsoComponent } from \"jslib-angular/components/sso.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-sso\",\n templateUrl: \"sso.component.html\",\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n route: ActivatedRoute,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService,\n environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService,\n logService: LogService\n ) {\n super(\n authService,\n router,\n i18nService,\n route,\n stateService,\n platformUtilsService,\n apiService,\n cryptoFunctionService,\n environmentService,\n passwordGenerationService,\n logService\n );\n this.redirectUri = window.location.origin + \"/sso-connector.html\";\n this.clientId = \"web\";\n }\n\n async ngOnInit() {\n super.ngOnInit();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.stateService.getSsoOrgIdentifier();\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n });\n }\n\n async submit() {\n await this.stateService.setSsoOrganizationIdentifier(this.identifier);\n if (this.clientId === \"browser\") {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t(\"ssoHandOff\")};SameSite=strict`;\n }\n super.submit();\n }\n}\n","\n
\n
\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ \"ssoLogInWithOrgIdentifier\" | i18n }}

\n
\n \n \n
\n
\n
\n \n {{ \"logIn\" | i18n }} \n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from \"jslib-angular/components/two-factor-options.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\n\n@Component({\n selector: \"app-two-factor-options\",\n templateUrl: \"two-factor-options.component.html\",\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(\n twoFactorService: TwoFactorService,\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService\n ) {\n super(twoFactorService, router, i18nService, platformUtilsService, window);\n }\n}\n","
\n
\n
\n
\n

{{ \"twoStepOptions\" | i18n }}

\n \n ×\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n

{{ p.name }}

\n {{ p.description }}\n
\n
\n \n {{ \"select\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n \"rc\n
\n
\n

{{ \"recoveryCodeTitle\" | i18n }}

\n {{ \"recoveryCodeDesc\" | i18n }}\n
\n
\n \n {{ \"select\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from \"jslib-angular/components/two-factor.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nimport { RouterService } from \"../services/router.service\";\n\nimport { TwoFactorOptionsComponent } from \"./two-factor-options.component\";\n\n@Component({\n selector: \"app-two-factor\",\n templateUrl: \"two-factor.component.html\",\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild(\"twoFactorOptions\", { read: ViewContainerRef, static: true })\n twoFactorOptionsModal: ViewContainerRef;\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n apiService: ApiService,\n platformUtilsService: PlatformUtilsService,\n stateService: StateService,\n environmentService: EnvironmentService,\n private modalService: ModalService,\n route: ActivatedRoute,\n logService: LogService,\n twoFactorService: TwoFactorService,\n appIdService: AppIdService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n i18nService,\n apiService,\n platformUtilsService,\n window,\n environmentService,\n stateService,\n route,\n logService,\n twoFactorService,\n appIdService\n );\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async anotherMethod() {\n const [modal] = await this.modalService.openViewRef(\n TwoFactorOptionsComponent,\n this.twoFactorOptionsModal,\n (comp) => {\n comp.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n comp.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async goAfterLogIn() {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl) {\n this.router.navigateByUrl(previousUrl);\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n}\n","\n
\n \n

{{ title }}

\n
\n
\n \n

\n {{ \"enterVerificationCodeApp\" | i18n }}\n

\n

\n {{ \"enterVerificationCodeEmail\" | i18n: twoFactorEmail }}\n

\n
\n \n \n \n \n {{ \"sendVerificationCodeEmailAgain\" | i18n }}\n \n \n
\n \n \n

{{ \"insertYubiKey\" | i18n }}

\n \n \n \n \"\"\n \n
\n \n \n
\n
\n \n
\n \n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n

{{ \"noTwoStepProviders\" | i18n }}

\n

{{ \"noTwoStepProviders2\" | i18n }}

\n
\n
\n
\n \n
\n
\n \n \n {{ \"continue\" | i18n }}\n \n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n \n
\n
\n
\n \n\n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { UpdatePasswordComponent as BaseUpdatePasswordComponent } from \"jslib-angular/components/update-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\n@Component({\n selector: \"app-update-password\",\n templateUrl: \"update-password.component.html\",\n})\nexport class UpdatePasswordComponent extends BaseUpdatePasswordComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n apiService: ApiService,\n logService: LogService,\n stateService: StateService,\n userVerificationService: UserVerificationService\n ) {\n super(\n router,\n i18nService,\n platformUtilsService,\n passwordGenerationService,\n policyService,\n cryptoService,\n messagingService,\n apiService,\n stateService,\n userVerificationService,\n logService\n );\n }\n}\n","
\n
\n
\n

{{ \"updateMasterPassword\" | i18n }}

\n
\n
\n {{ \"masterPasswordInvalidWarning\" | i18n }} \n \n\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from \"jslib-angular/components/update-temp-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\n\n@Component({\n selector: \"app-update-temp-password\",\n templateUrl: \"update-temp-password.component.html\",\n})\nexport class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent {\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n apiService: ApiService,\n logService: LogService,\n stateService: StateService,\n syncService: SyncService\n ) {\n super(\n i18nService,\n platformUtilsService,\n passwordGenerationService,\n policyService,\n cryptoService,\n messagingService,\n apiService,\n stateService,\n syncService,\n logService\n );\n }\n}\n","
\n
\n
\n

{{ \"updateMasterPassword\" | i18n }}

\n
\n
\n {{ \"updateMasterPasswordWarning\" | i18n }} \n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VerifyEmailRequest } from \"jslib-common/models/request/verifyEmailRequest\";\n\n@Component({\n selector: \"app-verify-email-token\",\n templateUrl: \"verify-email-token.component.html\",\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token)\n );\n if (await this.stateService.getIsAuthenticated()) {\n await this.apiService.refreshIdentityToken();\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"emailVerified\"));\n this.router.navigate([\"/\"]);\n return;\n } catch (e) {\n this.logService.error(e);\n }\n }\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"emailVerifiedFailed\"));\n this.router.navigate([\"/\"]);\n });\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { VerifyDeleteRecoverRequest } from \"jslib-common/models/request/verifyDeleteRecoverRequest\";\n\n@Component({\n selector: \"app-verify-recover-delete\",\n templateUrl: \"verify-recover-delete.component.html\",\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private logService: LogService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate([\"/\"]);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"accountDeleted\"),\n this.i18nService.t(\"accountDeletedDesc\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"deleteAccount\" | i18n }}

\n
\n
\n {{ \"deleteAccountWarning\" | i18n }}\n

\n {{ email }}\n

\n

{{ \"deleteRecoverConfirmDesc\" | i18n }}

\n
\n
\n \n {{ \"deleteAccount\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, NgZone, OnDestroy, OnInit, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport * as jq from \"jquery\";\nimport { IndividualConfig, ToastrService } from \"ngx-toastr\";\nimport Swal from \"sweetalert2\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { NotificationsService } from \"jslib-common/abstractions/notifications.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SettingsService } from \"jslib-common/abstractions/settings.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\n\nimport { DisableSendPolicy } from \"./organizations/policies/disable-send.component\";\nimport { MasterPasswordPolicy } from \"./organizations/policies/master-password.component\";\nimport { PasswordGeneratorPolicy } from \"./organizations/policies/password-generator.component\";\nimport { PersonalOwnershipPolicy } from \"./organizations/policies/personal-ownership.component\";\nimport { RequireSsoPolicy } from \"./organizations/policies/require-sso.component\";\nimport { ResetPasswordPolicy } from \"./organizations/policies/reset-password.component\";\nimport { SendOptionsPolicy } from \"./organizations/policies/send-options.component\";\nimport { SingleOrgPolicy } from \"./organizations/policies/single-org.component\";\nimport { TwoFactorAuthenticationPolicy } from \"./organizations/policies/two-factor-authentication.component\";\nimport { PolicyListService } from \"./services/policy-list.service\";\nimport { RouterService } from \"./services/router.service\";\n\nconst BroadcasterSubscriptionId = \"AppComponent\";\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: \"app-root\",\n templateUrl: \"app.component.html\",\n})\nexport class AppComponent implements OnDestroy, OnInit {\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(\n private broadcasterService: BroadcasterService,\n private tokenService: TokenService,\n private folderService: FolderService,\n private settingsService: SettingsService,\n private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService,\n private cipherService: CipherService,\n private authService: AuthService,\n private router: Router,\n private toastrService: ToastrService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService,\n private cryptoService: CryptoService,\n private collectionService: CollectionService,\n private sanitizer: DomSanitizer,\n private searchService: SearchService,\n private notificationsService: NotificationsService,\n private routerService: RouterService,\n private stateService: StateService,\n private eventService: EventService,\n private policyService: PolicyService,\n protected policyListService: PolicyListService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"loggedIn\":\n this.notificationsService.updateConnection(false);\n break;\n case \"loggedOut\":\n this.routerService.setPreviousUrl(null);\n this.notificationsService.updateConnection(false);\n break;\n case \"unlocked\":\n this.notificationsService.updateConnection(false);\n break;\n case \"authBlocked\":\n this.routerService.setPreviousUrl(message.url);\n this.router.navigate([\"/\"]);\n break;\n case \"logout\":\n this.logOut(!!message.expired);\n break;\n case \"lockVault\":\n await this.vaultTimeoutService.lock();\n break;\n case \"locked\":\n this.notificationsService.updateConnection(false);\n this.router.navigate([\"lock\"]);\n break;\n case \"lockedUrl\":\n this.routerService.setPreviousUrl(message.url);\n break;\n case \"syncStarted\":\n break;\n case \"syncCompleted\":\n break;\n case \"upgradeOrganization\": {\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"upgradeOrganizationDesc\"),\n this.i18nService.t(\"upgradeOrganization\"),\n this.i18nService.t(\"upgradeOrganization\"),\n this.i18nService.t(\"cancel\")\n );\n if (upgradeConfirmed) {\n this.router.navigate([\n \"organizations\",\n message.organizationId,\n \"settings\",\n \"billing\",\n ]);\n }\n break;\n }\n case \"premiumRequired\": {\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"premiumRequiredDesc\"),\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (premiumConfirmed) {\n this.router.navigate([\"settings/premium\"]);\n }\n break;\n }\n case \"emailVerificationRequired\": {\n const emailVerificationConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"emailVerificationRequiredDesc\"),\n this.i18nService.t(\"emailVerificationRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (emailVerificationConfirmed) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/create-bitwarden-account/\"\n );\n }\n break;\n }\n case \"showToast\":\n this.showToast(message);\n break;\n case \"setFullWidth\":\n this.setFullWidth();\n break;\n case \"convertAccountToKeyConnector\":\n this.router.navigate([\"/remove-password\"]);\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll(\".modal\"));\n for (const modal of modals) {\n (jq(modal) as any).modal(\"hide\");\n }\n\n if (document.querySelector(\".swal-modal\") != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.policyListService.addPolicies([\n new TwoFactorAuthenticationPolicy(),\n new MasterPasswordPolicy(),\n new PasswordGeneratorPolicy(),\n new SingleOrgPolicy(),\n new RequireSsoPolicy(),\n new PersonalOwnershipPolicy(),\n new DisableSendPolicy(),\n new SendOptionsPolicy(),\n new ResetPasswordPolicy(),\n ]);\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.stateService.getUserId();\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.cryptoService.clearKeys(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.keyConnectorService.clear(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n if (expired) {\n this.platformUtilsService.showToast(\n \"warning\",\n this.i18nService.t(\"loggedOut\"),\n this.i18nService.t(\"loginExpired\")\n );\n }\n\n await this.stateService.clean({ userId: userId });\n Swal.close();\n this.router.navigate([\"/\"]);\n });\n }\n\n private async recordActivity() {\n const now = new Date().getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.stateService.setLastActive(now);\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n let message = \"\";\n\n const options: Partial = {};\n\n if (typeof msg.text === \"string\") {\n message = msg.text;\n } else if (msg.text.length === 1) {\n message = msg.text[0];\n } else {\n msg.text.forEach(\n (t: string) =>\n (message += \"

\" + this.sanitizer.sanitize(SecurityContext.HTML, t) + \"

\")\n );\n options.enableHtml = true;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n options.enableHtml = true;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n options.timeOut = msg.options.timeout;\n }\n }\n\n this.toastrService.show(message, msg.title, options, \"toast-\" + msg.type);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.stateService.getEnableFullWidth();\n if (enableFullWidth) {\n document.body.classList.add(\"full-width\");\n } else {\n document.body.classList.remove(\"full-width\");\n }\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Directive()\nexport abstract class BaseAcceptComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n actionPromise: Promise;\n\n protected requiredParameters: string[] = [];\n protected failedShortMessage = \"inviteAcceptFailedShort\";\n protected failedMessage = \"inviteAcceptFailed\";\n\n constructor(\n protected router: Router,\n protected platformUtilService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected route: ActivatedRoute,\n protected stateService: StateService\n ) {}\n\n abstract authedHandler(qParams: any): Promise;\n abstract unauthedHandler(qParams: any): Promise;\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n let error = this.requiredParameters.some((e) => qParams?.[e] == null || qParams[e] === \"\");\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.stateService.getIsAuthenticated();\n\n if (this.authed) {\n try {\n await this.authedHandler(qParams);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n this.email = qParams.email;\n await this.unauthedHandler(qParams);\n }\n }\n\n if (error) {\n const message =\n errorMessage != null\n ? this.i18nService.t(this.failedShortMessage, errorMessage)\n : this.i18nService.t(this.failedMessage);\n this.platformUtilService.showToast(\"error\", null, message, { timeout: 10000 });\n this.router.navigate([\"/\"]);\n }\n\n this.loading = false;\n });\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { EventView } from \"jslib-common/models/view/eventView\";\n\nimport { EventService } from \"src/app/services/event.service\";\n\n@Directive()\nexport abstract class BaseEventsComponent {\n loading = true;\n loaded = false;\n events: EventView[];\n start: string;\n end: string;\n dirtyDates = true;\n continuationToken: string;\n refreshPromise: Promise;\n exportPromise: Promise;\n morePromise: Promise;\n\n abstract readonly exportFileName: string;\n\n constructor(\n protected eventService: EventService,\n protected i18nService: I18nService,\n protected exportService: ExportService,\n protected platformUtilsService: PlatformUtilsService,\n protected logService: LogService\n ) {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n }\n\n async exportEvents() {\n if (this.appApiPromiseUnfulfilled() || this.dirtyDates) {\n return;\n }\n\n this.loading = true;\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n try {\n this.exportPromise = this.export(dates[0], dates[1]);\n\n await this.exportPromise;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n this.exportPromise = null;\n this.loading = false;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.appApiPromiseUnfulfilled()) {\n return;\n }\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n this.loading = true;\n let events: EventView[] = [];\n try {\n const promise = this.loadAndParseEvents(\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n const result = await promise;\n this.continuationToken = result.continuationToken;\n events = result.events;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.dirtyDates = false;\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n\n protected abstract requestEvents(\n startDate: string,\n endDate: string,\n continuationToken: string\n ): Promise>;\n protected abstract getUserName(r: EventResponse, userId: string): { name: string; email: string };\n\n protected async loadAndParseEvents(\n startDate: string,\n endDate: string,\n continuationToken: string\n ) {\n const response = await this.requestEvents(startDate, endDate, continuationToken);\n\n const events = await Promise.all(\n response.data.map(async (r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.getUserName(r, userId);\n const userName = user != null ? user.name : this.i18nService.t(\"unknown\");\n\n return new EventView({\n message: eventInfo.message,\n humanReadableMessage: eventInfo.humanReadableMessage,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: r.installationId != null ? `Installation: ${r.installationId}` : userName,\n userEmail: user != null ? user.email : \"\",\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n installationId: r.installationId,\n });\n })\n );\n return { continuationToken: response.continuationToken, events: events };\n }\n\n protected parseDates() {\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidDateRange\")\n );\n return null;\n }\n return dates;\n }\n\n protected appApiPromiseUnfulfilled() {\n return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null;\n }\n\n private async export(start: string, end: string) {\n let continuationToken = this.continuationToken;\n let events = [].concat(this.events);\n\n while (continuationToken != null) {\n const result = await this.loadAndParseEvents(start, end, continuationToken);\n continuationToken = result.continuationToken;\n events = events.concat(result.events);\n }\n\n const data = await this.exportService.getEventExport(events);\n const fileName = this.exportService.getFileName(this.exportFileName, \"csv\");\n this.platformUtilsService.saveFile(window, data, { type: \"text/plain\" }, fileName);\n }\n}\n","import { Directive, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\nimport { ProviderUserUserDetailsResponse } from \"jslib-common/models/response/provider/providerUserResponse\";\n\nimport { UserConfirmComponent } from \"../organizations/manage/user-confirm.component\";\n\ntype StatusType = OrganizationUserStatusType | ProviderUserStatusType;\n\nconst MaxCheckedCount = 500;\n\n@Directive()\nexport abstract class BasePeopleComponent<\n UserType extends ProviderUserUserDetailsResponse | OrganizationUserUserDetailsResponse\n> {\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(this.userStatusType.Invited)\n ? this.statusMap.get(this.userStatusType.Invited).length\n : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(this.userStatusType.Accepted)\n ? this.statusMap.get(this.userStatusType.Accepted).length\n : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(this.userStatusType.Confirmed)\n ? this.statusMap.get(this.userStatusType.Confirmed).length\n : 0;\n }\n\n get showConfirmUsers(): boolean {\n return (\n this.allUsers != null &&\n this.statusMap != null &&\n this.allUsers.length > 1 &&\n this.confirmedCount > 0 &&\n this.confirmedCount < 3 &&\n this.acceptedCount > 0\n );\n }\n\n get showBulkConfirmUsers(): boolean {\n return this.acceptedCount > 0;\n }\n\n abstract userType: typeof OrganizationUserType | typeof ProviderUserType;\n abstract userStatusType: typeof OrganizationUserStatusType | typeof ProviderUserStatusType;\n\n loading = true;\n statusMap = new Map();\n status: StatusType;\n users: UserType[] = [];\n pagedUsers: UserType[] = [];\n searchText: string;\n actionPromise: Promise;\n\n protected allUsers: UserType[] = [];\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n\n constructor(\n protected apiService: ApiService,\n private searchService: SearchService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected cryptoService: CryptoService,\n protected validationService: ValidationService,\n protected modalService: ModalService,\n private logService: LogService,\n private searchPipe: SearchPipe,\n protected userNamePipe: UserNamePipe,\n protected stateService: StateService\n ) {}\n\n abstract edit(user: UserType): void;\n abstract getUsers(): Promise>;\n abstract deleteUser(id: string): Promise;\n abstract reinviteUser(id: string): Promise;\n abstract confirmUser(user: UserType, publicKey: Uint8Array): Promise;\n\n async load() {\n const response = await this.getUsers();\n this.statusMap.clear();\n for (const status of Utils.iterateEnum(this.userStatusType)) {\n this.statusMap.set(status, []);\n }\n\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, \"email\"));\n this.allUsers.forEach((u) => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: StatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n // Reset checkbox selecton\n this.selectAll(false);\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(\n this.users.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) {\n (user as any).checked = select == null ? !(user as any).checked : select;\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n\n const filteredUsers = this.searchPipe.transform(\n this.users,\n this.searchText,\n \"name\",\n \"email\",\n \"id\"\n );\n\n const selectCount =\n select && filteredUsers.length > MaxCheckedCount ? MaxCheckedCount : filteredUsers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkUser(filteredUsers[i], select);\n }\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n invite() {\n this.edit(null);\n }\n\n async remove(user: UserType) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.deleteWarningMessage(user),\n this.userNamePipe.transform(user),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.deleteUser(user.id);\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.userNamePipe.transform(user))\n );\n this.removeUser(user);\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async reinvite(user: UserType) {\n if (this.actionPromise != null) {\n return;\n }\n\n this.actionPromise = this.reinviteUser(user.id);\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenReinvited\", this.userNamePipe.transform(user))\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async confirm(user: UserType) {\n function updateUser(self: BasePeopleComponent) {\n user.status = self.userStatusType.Confirmed;\n const mapIndex = self.statusMap.get(self.userStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(self.userStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(self.userStatusType.Confirmed).push(user);\n }\n }\n\n const confirmUser = async (publicKey: Uint8Array) => {\n try {\n this.actionPromise = this.confirmUser(user, publicKey);\n await this.actionPromise;\n updateUser(this);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(user))\n );\n } catch (e) {\n this.validationService.showError(e);\n throw e;\n } finally {\n this.actionPromise = null;\n }\n };\n\n if (this.actionPromise != null) {\n return;\n }\n\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const autoConfirm = await this.stateService.getAutoConfirmFingerPrints();\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(\n UserConfirmComponent,\n this.confirmModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.userId = user != null ? user.userId : null;\n comp.publicKey = publicKey;\n comp.onConfirmedUser.subscribe(async () => {\n try {\n comp.formPromise = confirmUser(publicKey);\n await comp.formPromise;\n modal.close();\n } catch (e) {\n this.logService.error(e);\n }\n });\n }\n );\n return;\n }\n\n try {\n const fingerprint = await this.cryptoService.getFingerprint(user.userId, publicKey.buffer);\n this.logService.info(`User's fingerprint: ${fingerprint.join(\"-\")}`);\n } catch (e) {\n this.logService.error(e);\n }\n await confirmUser(publicKey);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n protected deleteWarningMessage(user: UserType): string {\n return this.i18nService.t(\"removeUserConfirmation\");\n }\n\n protected getCheckedUsers() {\n return this.users.filter((u) => (u as any).checked);\n }\n\n protected removeUser(user: UserType) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(user.status)) {\n index = this.statusMap.get(user.status).indexOf(user);\n if (index > -1) {\n this.statusMap.get(user.status).splice(index, 1);\n }\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-nested-checkbox\",\n templateUrl: \"nested-checkbox.component.html\",\n})\nexport class NestedCheckboxComponent {\n @Input() parentId: string;\n @Input() checkboxes: { id: string; get: () => boolean; set: (v: boolean) => void }[];\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n get parentIndeterminate() {\n return !this.parentChecked && this.checkboxes.some((c) => c.get());\n }\n\n get parentChecked() {\n return this.checkboxes.every((c) => c.get());\n }\n\n set parentChecked(value: boolean) {\n this.checkboxes.forEach((c) => {\n c.set(value);\n });\n }\n\n pascalize(s: string) {\n return Utils.camelToPascalCase(s);\n }\n}\n","
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { NavigationPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\n@Component({\n selector: \"app-organization-switcher\",\n templateUrl: \"organization-switcher.component.html\",\n})\nexport class OrganizationSwitcherComponent implements OnInit {\n constructor(private organizationService: OrganizationService, private i18nService: I18nService) {}\n\n @Input() activeOrganization: Organization = null;\n organizations: Organization[] = [];\n\n loaded = false;\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const orgs = await this.organizationService.getAll();\n this.organizations = orgs\n .filter((org) => NavigationPermissionsService.canAccessAdmin(org))\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n this.loaded = true;\n }\n}\n","
\n \n \n
\n
\n {{ activeOrganization.name }}\n {{ \"organization\" | i18n }}\n
\n
\n \n
\n
\n \n
\n \n
\n \n {{ \"organizationIsDisabled\" | i18n }}\n
\n
\n \n
\n \n {{ \"accessingUsingProvider\" | i18n: activeOrganization.providerName }}\n
\n
\n \n\n \n \n \n\n","import { Component } from \"@angular/core\";\n\nimport { PasswordRepromptComponent as BasePasswordRepromptComponent } from \"jslib-angular/components/password-reprompt.component\";\n\n@Component({\n templateUrl: \"password-reprompt.component.html\",\n})\nexport class PasswordRepromptComponent extends BasePasswordRepromptComponent {}\n","
\n
\n
\n
\n

\n {{ \"passwordConfirmation\" | i18n }}\n

\n \n
\n
\n {{ \"passwordConfirmationDesc\" | i18n }}\n\n
\n \n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, Input, OnChanges } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-password-strength\",\n templateUrl: \"password-strength.component.html\",\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = \"bg-danger\";\n text: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = \"bg-success\";\n this.text = this.i18nService.t(\"strong\");\n break;\n case 3:\n this.color = \"bg-primary\";\n this.text = this.i18nService.t(\"good\");\n break;\n case 2:\n this.color = \"bg-warning\";\n this.text = this.i18nService.t(\"weak\");\n break;\n default:\n this.color = \"bg-danger\";\n this.text = this.score != null ? this.i18nService.t(\"weak\") : null;\n break;\n }\n }\n}\n","
\n \n \n {{ text }}\n \n
\n\n","import { Component } from \"@angular/core\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\n\n@Component({\n selector: \"app-premium-badge\",\n template: `\n \n `,\n})\nexport class PremiumBadgeComponent {\n constructor(private messagingService: MessagingService) {}\n\n premiumRequired() {\n this.messagingService.send(\"premiumRequired\");\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class HomeGuard implements CanActivate {\n constructor(private router: Router, private authService: AuthService) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n return this.router.createUrlTree([\"/login\"], { queryParams: route.queryParams });\n }\n if (authStatus === AuthenticationStatus.Locked) {\n return this.router.createUrlTree([\"/lock\"], { queryParams: route.queryParams });\n }\n return this.router.createUrlTree([\"/vault\"], { queryParams: route.queryParams });\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-footer\",\n templateUrl: \"footer.component.html\",\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year = \"2015\";\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n }\n}\n","
\n
\n
© {{ year }}, Bitwarden Inc.
\n
\n
\n {{ \"versionNumber\" | i18n: version }}\n
\n
\n
\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-frontend-layout\",\n templateUrl: \"frontend-layout.component.html\",\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year = \"2015\";\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n document.body.classList.add(\"layout_frontend\");\n }\n\n ngOnDestroy() {\n document.body.classList.remove(\"layout_frontend\");\n }\n}\n","\n
\n © {{ year }}, Bitwarden Inc.
\n {{ \"versionNumber\" | i18n: version }}\n
\n","import { Component, NgZone, OnInit } from \"@angular/core\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\nimport { NavigationPermissionsService as OrgNavigationPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\n@Component({\n selector: \"app-navbar\",\n templateUrl: \"navbar.component.html\",\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n providers: Provider[] = [];\n organizations: Organization[] = [];\n\n constructor(\n private messagingService: MessagingService,\n private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService,\n private providerService: ProviderService,\n private syncService: SyncService,\n private organizationService: OrganizationService,\n private i18nService: I18nService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone\n ) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === \"\") {\n this.name = this.email;\n }\n\n // Ensure providers and organizations are loaded\n if ((await this.syncService.getLastSync()) == null) {\n await this.syncService.fullSync(false);\n }\n this.providers = await this.providerService.getAll();\n\n this.organizations = await this.buildOrganizations();\n\n this.broadcasterService.subscribe(this.constructor.name, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"organizationCreated\":\n if (this.organizations.length < 1) {\n this.organizations = await this.buildOrganizations();\n }\n break;\n }\n });\n });\n }\n\n async buildOrganizations() {\n const allOrgs = await this.organizationService.getAll();\n return allOrgs\n .filter((org) => OrgNavigationPermissionsService.canAccessAdmin(org))\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n lock() {\n this.messagingService.send(\"lockVault\");\n }\n\n logOut() {\n this.messagingService.send(\"logout\");\n }\n}\n","
\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"app-user-layout\",\n templateUrl: \"user-layout.component.html\",\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n }\n}\n","\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { UserVerificationComponent } from \"jslib-angular/components/user-verification.component\";\n\nimport { AcceptEmergencyComponent } from \"../accounts/accept-emergency.component\";\nimport { AcceptOrganizationComponent } from \"../accounts/accept-organization.component\";\nimport { HintComponent } from \"../accounts/hint.component\";\nimport { LockComponent } from \"../accounts/lock.component\";\nimport { LoginComponent } from \"../accounts/login.component\";\nimport { RecoverDeleteComponent } from \"../accounts/recover-delete.component\";\nimport { RecoverTwoFactorComponent } from \"../accounts/recover-two-factor.component\";\nimport { RegisterComponent } from \"../accounts/register.component\";\nimport { RemovePasswordComponent } from \"../accounts/remove-password.component\";\nimport { SetPasswordComponent } from \"../accounts/set-password.component\";\nimport { SsoComponent } from \"../accounts/sso.component\";\nimport { TwoFactorOptionsComponent } from \"../accounts/two-factor-options.component\";\nimport { TwoFactorComponent } from \"../accounts/two-factor.component\";\nimport { UpdatePasswordComponent } from \"../accounts/update-password.component\";\nimport { UpdateTempPasswordComponent } from \"../accounts/update-temp-password.component\";\nimport { VerifyEmailTokenComponent } from \"../accounts/verify-email-token.component\";\nimport { VerifyRecoverDeleteComponent } from \"../accounts/verify-recover-delete.component\";\nimport { NestedCheckboxComponent } from \"../components/nested-checkbox.component\";\nimport { OrganizationSwitcherComponent } from \"../components/organization-switcher.component\";\nimport { PasswordRepromptComponent } from \"../components/password-reprompt.component\";\nimport { PasswordStrengthComponent } from \"../components/password-strength.component\";\nimport { PremiumBadgeComponent } from \"../components/premium-badge.component\";\nimport { FooterComponent } from \"../layouts/footer.component\";\nimport { FrontendLayoutComponent } from \"../layouts/frontend-layout.component\";\nimport { NavbarComponent } from \"../layouts/navbar.component\";\nimport { UserLayoutComponent } from \"../layouts/user-layout.component\";\nimport { OrganizationLayoutComponent } from \"../organizations/layouts/organization-layout.component\";\nimport { BulkConfirmComponent as OrgBulkConfirmComponent } from \"../organizations/manage/bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent as OrgBulkRemoveComponent } from \"../organizations/manage/bulk/bulk-remove.component\";\nimport { BulkStatusComponent as OrgBulkStatusComponent } from \"../organizations/manage/bulk/bulk-status.component\";\nimport { CollectionAddEditComponent as OrgCollectionAddEditComponent } from \"../organizations/manage/collection-add-edit.component\";\nimport { CollectionsComponent as OrgManageCollectionsComponent } from \"../organizations/manage/collections.component\";\nimport { EntityEventsComponent as OrgEntityEventsComponent } from \"../organizations/manage/entity-events.component\";\nimport { EntityUsersComponent as OrgEntityUsersComponent } from \"../organizations/manage/entity-users.component\";\nimport { EventsComponent as OrgEventsComponent } from \"../organizations/manage/events.component\";\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from \"../organizations/manage/group-add-edit.component\";\nimport { GroupsComponent as OrgGroupsComponent } from \"../organizations/manage/groups.component\";\nimport { ManageComponent as OrgManageComponent } from \"../organizations/manage/manage.component\";\nimport { PeopleComponent as OrgPeopleComponent } from \"../organizations/manage/people.component\";\nimport { PoliciesComponent as OrgPoliciesComponent } from \"../organizations/manage/policies.component\";\nimport { PolicyEditComponent as OrgPolicyEditComponent } from \"../organizations/manage/policy-edit.component\";\nimport { ResetPasswordComponent as OrgResetPasswordComponent } from \"../organizations/manage/reset-password.component\";\nimport { UserAddEditComponent as OrgUserAddEditComponent } from \"../organizations/manage/user-add-edit.component\";\nimport { UserConfirmComponent as OrgUserConfirmComponent } from \"../organizations/manage/user-confirm.component\";\nimport { UserGroupsComponent as OrgUserGroupsComponent } from \"../organizations/manage/user-groups.component\";\nimport { DisableSendPolicyComponent } from \"../organizations/policies/disable-send.component\";\nimport { MasterPasswordPolicyComponent } from \"../organizations/policies/master-password.component\";\nimport { PasswordGeneratorPolicyComponent } from \"../organizations/policies/password-generator.component\";\nimport { PersonalOwnershipPolicyComponent } from \"../organizations/policies/personal-ownership.component\";\nimport { RequireSsoPolicyComponent } from \"../organizations/policies/require-sso.component\";\nimport { ResetPasswordPolicyComponent } from \"../organizations/policies/reset-password.component\";\nimport { SendOptionsPolicyComponent } from \"../organizations/policies/send-options.component\";\nimport { SingleOrgPolicyComponent } from \"../organizations/policies/single-org.component\";\nimport { TwoFactorAuthenticationPolicyComponent } from \"../organizations/policies/two-factor-authentication.component\";\nimport { AccountComponent as OrgAccountComponent } from \"../organizations/settings/account.component\";\nimport { AdjustSubscription } from \"../organizations/settings/adjust-subscription.component\";\nimport { BillingSyncApiKeyComponent } from \"../organizations/settings/billing-sync-api-key.component\";\nimport { ChangePlanComponent } from \"../organizations/settings/change-plan.component\";\nimport { DeleteOrganizationComponent } from \"../organizations/settings/delete-organization.component\";\nimport { DownloadLicenseComponent } from \"../organizations/settings/download-license.component\";\nimport { ImageSubscriptionHiddenComponent as OrgSubscriptionHiddenComponent } from \"../organizations/settings/image-subscription-hidden.component\";\nimport { OrganizationBillingComponent } from \"../organizations/settings/organization-billing.component\";\nimport { OrganizationSubscriptionComponent } from \"../organizations/settings/organization-subscription.component\";\nimport { SettingsComponent as OrgSettingComponent } from \"../organizations/settings/settings.component\";\nimport { TwoFactorSetupComponent as OrgTwoFactorSetupComponent } from \"../organizations/settings/two-factor-setup.component\";\nimport { AcceptFamilySponsorshipComponent } from \"../organizations/sponsorships/accept-family-sponsorship.component\";\nimport { FamiliesForEnterpriseSetupComponent } from \"../organizations/sponsorships/families-for-enterprise-setup.component\";\nimport { ExportComponent as OrgExportComponent } from \"../organizations/tools/export.component\";\nimport { ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent } from \"../organizations/tools/exposed-passwords-report.component\";\nimport { ImportComponent as OrgImportComponent } from \"../organizations/tools/import.component\";\nimport { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent } from \"../organizations/tools/inactive-two-factor-report.component\";\nimport { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from \"../organizations/tools/reused-passwords-report.component\";\nimport { ToolsComponent as OrgToolsComponent } from \"../organizations/tools/tools.component\";\nimport { UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent } from \"../organizations/tools/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent } from \"../organizations/tools/weak-passwords-report.component\";\nimport { AddEditComponent as OrgAddEditComponent } from \"../organizations/vault/add-edit.component\";\nimport { AttachmentsComponent as OrgAttachmentsComponent } from \"../organizations/vault/attachments.component\";\nimport { CiphersComponent as OrgCiphersComponent } from \"../organizations/vault/ciphers.component\";\nimport { CollectionsComponent as OrgCollectionsComponent } from \"../organizations/vault/collections.component\";\nimport { ProvidersComponent } from \"../providers/providers.component\";\nimport { BreachReportComponent } from \"../reports/breach-report.component\";\nimport { ExposedPasswordsReportComponent } from \"../reports/exposed-passwords-report.component\";\nimport { InactiveTwoFactorReportComponent } from \"../reports/inactive-two-factor-report.component\";\nimport { ReportCardComponent } from \"../reports/report-card.component\";\nimport { ReportListComponent } from \"../reports/report-list.component\";\nimport { ReportsComponent } from \"../reports/reports.component\";\nimport { ReusedPasswordsReportComponent } from \"../reports/reused-passwords-report.component\";\nimport { UnsecuredWebsitesReportComponent } from \"../reports/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"../reports/weak-passwords-report.component\";\nimport { AccessComponent } from \"../send/access.component\";\nimport { AddEditComponent as SendAddEditComponent } from \"../send/add-edit.component\";\nimport { EffluxDatesComponent as SendEffluxDatesComponent } from \"../send/efflux-dates.component\";\nimport { SendComponent } from \"../send/send.component\";\nimport { AccountComponent } from \"../settings/account.component\";\nimport { AddCreditComponent } from \"../settings/add-credit.component\";\nimport { AdjustPaymentComponent } from \"../settings/adjust-payment.component\";\nimport { AdjustStorageComponent } from \"../settings/adjust-storage.component\";\nimport { ApiKeyComponent } from \"../settings/api-key.component\";\nimport { BillingSyncKeyComponent } from \"../settings/billing-sync-key.component\";\nimport { ChangeEmailComponent } from \"../settings/change-email.component\";\nimport { ChangeKdfComponent } from \"../settings/change-kdf.component\";\nimport { ChangePasswordComponent } from \"../settings/change-password.component\";\nimport { CreateOrganizationComponent } from \"../settings/create-organization.component\";\nimport { DeauthorizeSessionsComponent } from \"../settings/deauthorize-sessions.component\";\nimport { DeleteAccountComponent } from \"../settings/delete-account.component\";\nimport { DomainRulesComponent } from \"../settings/domain-rules.component\";\nimport { EmergencyAccessAddEditComponent } from \"../settings/emergency-access-add-edit.component\";\nimport { EmergencyAccessAttachmentsComponent } from \"../settings/emergency-access-attachments.component\";\nimport { EmergencyAccessConfirmComponent } from \"../settings/emergency-access-confirm.component\";\nimport { EmergencyAccessTakeoverComponent } from \"../settings/emergency-access-takeover.component\";\nimport { EmergencyAccessViewComponent } from \"../settings/emergency-access-view.component\";\nimport { EmergencyAccessComponent } from \"../settings/emergency-access.component\";\nimport { EmergencyAddEditComponent } from \"../settings/emergency-add-edit.component\";\nimport { OrganizationPlansComponent } from \"../settings/organization-plans.component\";\nimport { PaymentMethodComponent } from \"../settings/payment-method.component\";\nimport { PaymentComponent } from \"../settings/payment.component\";\nimport { PreferencesComponent } from \"../settings/preferences.component\";\nimport { PremiumComponent } from \"../settings/premium.component\";\nimport { ProfileComponent } from \"../settings/profile.component\";\nimport { PurgeVaultComponent } from \"../settings/purge-vault.component\";\nimport { SecurityKeysComponent } from \"../settings/security-keys.component\";\nimport { SecurityComponent } from \"../settings/security.component\";\nimport { SettingsComponent } from \"../settings/settings.component\";\nimport { SponsoredFamiliesComponent } from \"../settings/sponsored-families.component\";\nimport { SponsoringOrgRowComponent } from \"../settings/sponsoring-org-row.component\";\nimport { SubscriptionComponent } from \"../settings/subscription.component\";\nimport { TaxInfoComponent } from \"../settings/tax-info.component\";\nimport { TwoFactorAuthenticatorComponent } from \"../settings/two-factor-authenticator.component\";\nimport { TwoFactorDuoComponent } from \"../settings/two-factor-duo.component\";\nimport { TwoFactorEmailComponent } from \"../settings/two-factor-email.component\";\nimport { TwoFactorRecoveryComponent } from \"../settings/two-factor-recovery.component\";\nimport { TwoFactorSetupComponent } from \"../settings/two-factor-setup.component\";\nimport { TwoFactorVerifyComponent } from \"../settings/two-factor-verify.component\";\nimport { TwoFactorWebAuthnComponent } from \"../settings/two-factor-webauthn.component\";\nimport { TwoFactorYubiKeyComponent } from \"../settings/two-factor-yubikey.component\";\nimport { UpdateKeyComponent } from \"../settings/update-key.component\";\nimport { UpdateLicenseComponent } from \"../settings/update-license.component\";\nimport { UserBillingHistoryComponent } from \"../settings/user-billing-history.component\";\nimport { UserSubscriptionComponent } from \"../settings/user-subscription.component\";\nimport { VaultTimeoutInputComponent } from \"../settings/vault-timeout-input.component\";\nimport { VerifyEmailComponent } from \"../settings/verify-email.component\";\nimport { ExportComponent } from \"../tools/export.component\";\nimport { GeneratorComponent } from \"../tools/generator.component\";\nimport { ImportComponent } from \"../tools/import.component\";\nimport { PasswordGeneratorHistoryComponent } from \"../tools/password-generator-history.component\";\nimport { ToolsComponent } from \"../tools/tools.component\";\nimport { AddEditCustomFieldsComponent } from \"../vault/add-edit-custom-fields.component\";\nimport { AddEditComponent } from \"../vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../vault/attachments.component\";\nimport { BulkActionsComponent } from \"../vault/bulk-actions.component\";\nimport { BulkDeleteComponent } from \"../vault/bulk-delete.component\";\nimport { BulkMoveComponent } from \"../vault/bulk-move.component\";\nimport { BulkRestoreComponent } from \"../vault/bulk-restore.component\";\nimport { BulkShareComponent } from \"../vault/bulk-share.component\";\nimport { CiphersComponent } from \"../vault/ciphers.component\";\nimport { CollectionsComponent } from \"../vault/collections.component\";\nimport { FolderAddEditComponent } from \"../vault/folder-add-edit.component\";\nimport { ShareComponent } from \"../vault/share.component\";\n\nimport { PipesModule } from \"./pipes/pipes.module\";\nimport { SharedModule } from \"./shared.module\";\nimport { VaultFilterModule } from \"./vault-filter/vault-filter.module\";\nimport { OrganizationBadgeModule } from \"./vault/modules/organization-badge/organization-badge.module\";\n\n// Please do not add to this list of declarations - we should refactor these into modules when doing so makes sense until there are none left.\n// If you are building new functionality, please create or extend a feature module instead.\n@NgModule({\n imports: [SharedModule, VaultFilterModule, OrganizationBadgeModule, PipesModule],\n declarations: [\n PremiumBadgeComponent,\n AcceptEmergencyComponent,\n AcceptFamilySponsorshipComponent,\n AcceptOrganizationComponent,\n AccessComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AddEditCustomFieldsComponent,\n AddEditCustomFieldsComponent,\n AdjustPaymentComponent,\n AdjustStorageComponent,\n AdjustSubscription,\n ApiKeyComponent,\n AttachmentsComponent,\n BillingSyncApiKeyComponent,\n BillingSyncKeyComponent,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DisableSendPolicyComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FamiliesForEnterpriseSetupComponent,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n HintComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n LockComponent,\n LoginComponent,\n MasterPasswordPolicyComponent,\n NavbarComponent,\n NestedCheckboxComponent,\n OrganizationSwitcherComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationLayoutComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgBulkStatusComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupsComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPoliciesComponent,\n OrgPolicyEditComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgSubscriptionHiddenComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrgWeakPasswordsReportComponent,\n GeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordGeneratorPolicyComponent,\n PasswordRepromptComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PaymentMethodComponent,\n PersonalOwnershipPolicyComponent,\n PreferencesComponent,\n PremiumBadgeComponent,\n PremiumComponent,\n ProfileComponent,\n ProvidersComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n RemovePasswordComponent,\n ReportCardComponent,\n ReportListComponent,\n ReportsComponent,\n RequireSsoPolicyComponent,\n ResetPasswordPolicyComponent,\n ReusedPasswordsReportComponent,\n SecurityComponent,\n SecurityKeysComponent,\n SendAddEditComponent,\n SendComponent,\n SendEffluxDatesComponent,\n SendOptionsPolicyComponent,\n SetPasswordComponent,\n SettingsComponent,\n ShareComponent,\n SingleOrgPolicyComponent,\n SponsoredFamiliesComponent,\n SponsoringOrgRowComponent,\n SsoComponent,\n SubscriptionComponent,\n TaxInfoComponent,\n ToolsComponent,\n TwoFactorAuthenticationPolicyComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdatePasswordComponent,\n UpdateTempPasswordComponent,\n UserBillingHistoryComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserVerificationComponent,\n VaultTimeoutInputComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n exports: [\n PremiumBadgeComponent,\n AcceptEmergencyComponent,\n AcceptOrganizationComponent,\n AccessComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AddEditCustomFieldsComponent,\n AddEditCustomFieldsComponent,\n AdjustPaymentComponent,\n AdjustStorageComponent,\n AdjustSubscription,\n ApiKeyComponent,\n AttachmentsComponent,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DisableSendPolicyComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FamiliesForEnterpriseSetupComponent,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n HintComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n LockComponent,\n LoginComponent,\n MasterPasswordPolicyComponent,\n NavbarComponent,\n NestedCheckboxComponent,\n OrganizationSwitcherComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationLayoutComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgBulkStatusComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupsComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPoliciesComponent,\n OrgPolicyEditComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrgWeakPasswordsReportComponent,\n GeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordGeneratorPolicyComponent,\n PasswordRepromptComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PaymentMethodComponent,\n PersonalOwnershipPolicyComponent,\n PreferencesComponent,\n PremiumBadgeComponent,\n PremiumComponent,\n ProfileComponent,\n ProvidersComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n RemovePasswordComponent,\n ReportCardComponent,\n ReportListComponent,\n ReportsComponent,\n RequireSsoPolicyComponent,\n ResetPasswordPolicyComponent,\n ReusedPasswordsReportComponent,\n SecurityComponent,\n SecurityKeysComponent,\n SendAddEditComponent,\n SendComponent,\n SendEffluxDatesComponent,\n SendOptionsPolicyComponent,\n SetPasswordComponent,\n SettingsComponent,\n ShareComponent,\n SingleOrgPolicyComponent,\n SponsoredFamiliesComponent,\n SponsoringOrgRowComponent,\n SsoComponent,\n SubscriptionComponent,\n TaxInfoComponent,\n ToolsComponent,\n TwoFactorAuthenticationPolicyComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdatePasswordComponent,\n UpdateTempPasswordComponent,\n UserBillingHistoryComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserVerificationComponent,\n VaultTimeoutInputComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n})\nexport class LooseComponentsModule {}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Pipe({\n name: \"orgNameFromId\",\n pure: true,\n})\nexport class GetOrgNameFromIdPipe implements PipeTransform {\n transform(value: string, organizations: Organization[]) {\n const orgName = organizations.find((o) => o.id === value)?.name;\n return orgName;\n }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { GetOrgNameFromIdPipe } from \"./get-organization-name.pipe\";\n\n@NgModule({\n imports: [],\n declarations: [GetOrgNameFromIdPipe],\n exports: [GetOrgNameFromIdPipe],\n})\nexport class PipesModule {}\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { DatePipe, registerLocaleData, CommonModule } from \"@angular/common\";\nimport localeAf from \"@angular/common/locales/af\";\nimport localeAz from \"@angular/common/locales/az\";\nimport localeBe from \"@angular/common/locales/be\";\nimport localeBg from \"@angular/common/locales/bg\";\nimport localeBn from \"@angular/common/locales/bn\";\nimport localeBs from \"@angular/common/locales/bs\";\nimport localeCa from \"@angular/common/locales/ca\";\nimport localeCs from \"@angular/common/locales/cs\";\nimport localeDa from \"@angular/common/locales/da\";\nimport localeDe from \"@angular/common/locales/de\";\nimport localeEl from \"@angular/common/locales/el\";\nimport localeEnGb from \"@angular/common/locales/en-GB\";\nimport localeEnIn from \"@angular/common/locales/en-IN\";\nimport localeEo from \"@angular/common/locales/eo\";\nimport localeEs from \"@angular/common/locales/es\";\nimport localeEt from \"@angular/common/locales/et\";\nimport localeFi from \"@angular/common/locales/fi\";\nimport localeFil from \"@angular/common/locales/fil\";\nimport localeFr from \"@angular/common/locales/fr\";\nimport localeHe from \"@angular/common/locales/he\";\nimport localeHi from \"@angular/common/locales/hi\";\nimport localeHr from \"@angular/common/locales/hr\";\nimport localeHu from \"@angular/common/locales/hu\";\nimport localeId from \"@angular/common/locales/id\";\nimport localeIt from \"@angular/common/locales/it\";\nimport localeJa from \"@angular/common/locales/ja\";\nimport localeKa from \"@angular/common/locales/ka\";\nimport localeKm from \"@angular/common/locales/km\";\nimport localeKn from \"@angular/common/locales/kn\";\nimport localeKo from \"@angular/common/locales/ko\";\nimport localeLv from \"@angular/common/locales/lv\";\nimport localeMl from \"@angular/common/locales/ml\";\nimport localeNb from \"@angular/common/locales/nb\";\nimport localeNl from \"@angular/common/locales/nl\";\nimport localeNn from \"@angular/common/locales/nn\";\nimport localePl from \"@angular/common/locales/pl\";\nimport localePtBr from \"@angular/common/locales/pt\";\nimport localePtPt from \"@angular/common/locales/pt-PT\";\nimport localeRo from \"@angular/common/locales/ro\";\nimport localeRu from \"@angular/common/locales/ru\";\nimport localeSi from \"@angular/common/locales/si\";\nimport localeSk from \"@angular/common/locales/sk\";\nimport localeSl from \"@angular/common/locales/sl\";\nimport localeSr from \"@angular/common/locales/sr\";\nimport localeSv from \"@angular/common/locales/sv\";\nimport localeTr from \"@angular/common/locales/tr\";\nimport localeUk from \"@angular/common/locales/uk\";\nimport localeVi from \"@angular/common/locales/vi\";\nimport localeZhCn from \"@angular/common/locales/zh-Hans\";\nimport localeZhTw from \"@angular/common/locales/zh-Hant\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { RouterModule } from \"@angular/router\";\nimport { BadgeModule, ButtonModule, CalloutModule, MenuModule } from \"@bitwarden/components\";\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\nimport { ToastrModule } from \"ngx-toastr\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nregisterLocaleData(localeAf, \"af\");\nregisterLocaleData(localeAz, \"az\");\nregisterLocaleData(localeBe, \"be\");\nregisterLocaleData(localeBg, \"bg\");\nregisterLocaleData(localeBn, \"bn\");\nregisterLocaleData(localeBs, \"bs\");\nregisterLocaleData(localeCa, \"ca\");\nregisterLocaleData(localeCs, \"cs\");\nregisterLocaleData(localeDa, \"da\");\nregisterLocaleData(localeDe, \"de\");\nregisterLocaleData(localeEl, \"el\");\nregisterLocaleData(localeEnGb, \"en-GB\");\nregisterLocaleData(localeEnIn, \"en-IN\");\nregisterLocaleData(localeEo, \"eo\");\nregisterLocaleData(localeEs, \"es\");\nregisterLocaleData(localeEt, \"et\");\nregisterLocaleData(localeFi, \"fi\");\nregisterLocaleData(localeFil, \"fil\");\nregisterLocaleData(localeFr, \"fr\");\nregisterLocaleData(localeHe, \"he\");\nregisterLocaleData(localeHi, \"hi\");\nregisterLocaleData(localeHr, \"hr\");\nregisterLocaleData(localeHu, \"hu\");\nregisterLocaleData(localeId, \"id\");\nregisterLocaleData(localeIt, \"it\");\nregisterLocaleData(localeJa, \"ja\");\nregisterLocaleData(localeKa, \"ka\");\nregisterLocaleData(localeKm, \"km\");\nregisterLocaleData(localeKn, \"kn\");\nregisterLocaleData(localeKo, \"ko\");\nregisterLocaleData(localeLv, \"lv\");\nregisterLocaleData(localeMl, \"ml\");\nregisterLocaleData(localeNb, \"nb\");\nregisterLocaleData(localeNl, \"nl\");\nregisterLocaleData(localeNn, \"nn\");\nregisterLocaleData(localePl, \"pl\");\nregisterLocaleData(localePtBr, \"pt-BR\");\nregisterLocaleData(localePtPt, \"pt-PT\");\nregisterLocaleData(localeRo, \"ro\");\nregisterLocaleData(localeRu, \"ru\");\nregisterLocaleData(localeSi, \"si\");\nregisterLocaleData(localeSk, \"sk\");\nregisterLocaleData(localeSl, \"sl\");\nregisterLocaleData(localeSr, \"sr\");\nregisterLocaleData(localeSv, \"sv\");\nregisterLocaleData(localeTr, \"tr\");\nregisterLocaleData(localeUk, \"uk\");\nregisterLocaleData(localeVi, \"vi\");\nregisterLocaleData(localeZhCn, \"zh-CN\");\nregisterLocaleData(localeZhTw, \"zh-TW\");\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n FormsModule,\n InfiniteScrollModule,\n JslibModule,\n ReactiveFormsModule,\n RouterModule,\n BadgeModule,\n ButtonModule,\n CalloutModule,\n ToastrModule,\n BadgeModule,\n ButtonModule,\n MenuModule,\n ],\n exports: [\n CommonModule,\n DragDropModule,\n FormsModule,\n InfiniteScrollModule,\n JslibModule,\n ReactiveFormsModule,\n RouterModule,\n BadgeModule,\n ButtonModule,\n CalloutModule,\n ToastrModule,\n BadgeModule,\n ButtonModule,\n MenuModule,\n ],\n providers: [DatePipe],\n bootstrap: [],\n})\nexport class SharedModule {}\n","import { Component } from \"@angular/core\";\n\nimport { CollectionFilterComponent as BaseCollectionFilterComponent } from \"jslib-angular/modules/vault-filter/components/collection-filter.component\";\n\n@Component({\n selector: \"app-collection-filter\",\n templateUrl: \"collection-filter.component.html\",\n})\nexport class CollectionFilterComponent extends BaseCollectionFilterComponent {}\n","\n
\n \n \n \n

 {{ collectionsGrouping.name | i18n }}

\n
\n
    \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n\n","import { Component } from \"@angular/core\";\n\nimport { FolderFilterComponent as BaseFolderFilterComponent } from \"jslib-angular/modules/vault-filter/components/folder-filter.component\";\n\n@Component({\n selector: \"app-folder-filter\",\n templateUrl: \"folder-filter.component.html\",\n})\nexport class FolderFilterComponent extends BaseFolderFilterComponent {}\n","\n
\n \n \n \n

 {{ \"folders\" | i18n }}

\n \n \n \n
\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n \n\n","import { AfterContentInit, Component, Input } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { SsoComponent } from \"jslib-angular/components/sso.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-link-sso\",\n templateUrl: \"link-sso.component.html\",\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri = \"/settings/organizations\";\n\n constructor(\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n apiService: ApiService,\n authService: AuthService,\n router: Router,\n route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService,\n passwordGenerationService: PasswordGenerationService,\n stateService: StateService,\n environmentService: EnvironmentService,\n logService: LogService\n ) {\n super(\n authService,\n router,\n i18nService,\n route,\n stateService,\n platformUtilsService,\n apiService,\n cryptoFunctionService,\n environmentService,\n passwordGenerationService,\n logService\n );\n\n this.returnUri = \"/settings/organizations\";\n this.redirectUri = window.location.origin + \"/sso-connector.html\";\n this.clientId = \"web\";\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n","\n \n {{ \"linkSso\" | i18n }}\n\n","import { Component } from \"@angular/core\";\n\nimport { OrganizationFilterComponent as BaseOrganizationFilterComponent } from \"jslib-angular/modules/vault-filter/components/organization-filter.component\";\n\n@Component({\n selector: \"app-organization-filter\",\n templateUrl: \"organization-filter.component.html\",\n})\nexport class OrganizationFilterComponent extends BaseOrganizationFilterComponent {\n displayText = \"allVaults\";\n}\n","\n \n \n \n \n \n
\n \n \n \n \n  {{ organizationGrouping.name | i18n }}\n \n
\n \n \n \n
\n \n
\n
\n \n
\n \n \n \n \n  {{ organizationGrouping.name | i18n }}\n \n
\n \n
\n \n
\n\n","import { Component, Input } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\n\n@Component({\n selector: \"app-organization-options\",\n templateUrl: \"organization-options.component.html\",\n})\nexport class OrganizationOptionsComponent {\n actionPromise: Promise;\n policies: Policy[];\n loaded = false;\n\n @Input() organization: Organization;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private apiService: ApiService,\n private syncService: SyncService,\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.loaded = true;\n }\n\n allowEnrollmentChanges(org: Organization): boolean {\n if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) {\n const policy = this.policies.find((p) => p.organizationId === org.id);\n if (policy != null && policy.enabled) {\n return org.resetPasswordEnrolled && policy.data.autoEnrollEnabled ? false : true;\n }\n }\n\n return false;\n }\n\n showEnrolledStatus(org: Organization): boolean {\n return (\n org.useResetPassword &&\n org.resetPasswordEnrolled &&\n this.policies.some((p) => p.organizationId === org.id && p.enabled)\n );\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"unlinkSsoConfirmation\"),\n org.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, \"Unlinked SSO\");\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"leaveOrganizationConfirmation\"),\n org.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"leftOrganization\"));\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n\n async toggleResetPasswordEnrollment(org: Organization) {\n // Set variables\n let keyString: string = null;\n let toastStringRef = \"withdrawPasswordResetSuccess\";\n\n // Enrolling\n if (!org.resetPasswordEnrolled) {\n // Alert user about enrollment\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"resetPasswordEnrollmentWarning\"),\n null,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n // Retrieve Public Key\n this.actionPromise = this.apiService\n .getOrganizationKeys(org.id)\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n keyString = encryptedKey.encryptedString;\n toastStringRef = \"enrollPasswordResetSuccess\";\n\n // Create request and execute enrollment\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n org.id,\n org.userId,\n request\n );\n })\n .then(() => {\n return this.syncService.fullSync(true);\n });\n } else {\n // Withdrawal\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n this.actionPromise = this.apiService\n .putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request)\n .then(() => {\n return this.syncService.fullSync(true);\n });\n }\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(toastStringRef));\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n}\n","\n \n {{ \"loading\" | i18n }}\n\n
\n \n \n {{ \"enrollPasswordReset\" | i18n }}\n \n \n \n {{ \"withdrawPasswordReset\" | i18n }}\n \n \n \n \n {{ \"unlinkSso\" | i18n }}\n \n \n \n \n \n \n
\n","import { Component } from \"@angular/core\";\n\nimport { StatusFilterComponent as BaseStatusFilterComponent } from \"jslib-angular/modules/vault-filter/components/status-filter.component\";\n\n@Component({\n selector: \"app-status-filter\",\n templateUrl: \"status-filter.component.html\",\n})\nexport class StatusFilterComponent extends BaseStatusFilterComponent {}\n","\n
    \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n \n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { TypeFilterComponent as BaseTypeFilterComponent } from \"jslib-angular/modules/vault-filter/components/type-filter.component\";\n\n@Component({\n selector: \"app-type-filter\",\n templateUrl: \"type-filter.component.html\",\n})\nexport class TypeFilterComponent extends BaseTypeFilterComponent {}\n","
\n \n \n \n

 {{ \"types\" | i18n }}

\n
\n
    \n \n \n \n \n \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { VaultFilterComponent as BaseVaultFilterComponent } from \"jslib-angular/modules/vault-filter/vault-filter.component\";\nimport { VaultFilterService } from \"jslib-angular/modules/vault-filter/vault-filter.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-vault-filter\",\n templateUrl: \"vault-filter.component.html\",\n})\nexport class VaultFilterComponent extends BaseVaultFilterComponent {\n @Input() showOrgFilter = true;\n @Input() showFolders = true;\n @Input() showFavorites = true;\n\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchPlaceholder: string;\n searchText = \"\";\n\n organization: Organization;\n\n constructor(vaultFilterService: VaultFilterService) {\n super(vaultFilterService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n\n // This method exists because the vault component gets its data mixed up during the initial sync on first login. It looks for data before the sync is complete.\n // It should be removed as soon as doing so makes sense.\n async reloadOrganizations() {\n this.organizations = await this.vaultFilterService.buildOrganizations();\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n\n async initCollections() {\n return await this.vaultFilterService.buildCollections(this.organization?.id);\n }\n}\n","
\n
\n \n
\n
\n
\n {{ \"filters\" | i18n }}\n \n \n \n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\n\nimport { VaultFilterService } from \"jslib-angular/modules/vault-filter/vault-filter.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nimport { SharedModule } from \"../shared.module\";\n\nimport { CollectionFilterComponent } from \"./components/collection-filter.component\";\nimport { FolderFilterComponent } from \"./components/folder-filter.component\";\nimport { LinkSsoComponent } from \"./components/link-sso.component\";\nimport { OrganizationFilterComponent } from \"./components/organization-filter.component\";\nimport { OrganizationOptionsComponent } from \"./components/organization-options.component\";\nimport { StatusFilterComponent } from \"./components/status-filter.component\";\nimport { TypeFilterComponent } from \"./components/type-filter.component\";\nimport { VaultFilterComponent } from \"./vault-filter.component\";\n\n@NgModule({\n imports: [SharedModule],\n declarations: [\n VaultFilterComponent,\n CollectionFilterComponent,\n FolderFilterComponent,\n OrganizationFilterComponent,\n OrganizationOptionsComponent,\n StatusFilterComponent,\n TypeFilterComponent,\n LinkSsoComponent,\n ],\n exports: [VaultFilterComponent],\n providers: [\n {\n provide: VaultFilterService,\n useClass: VaultFilterService,\n deps: [\n StateService,\n OrganizationService,\n FolderService,\n CipherService,\n CollectionService,\n PolicyService,\n ],\n },\n ],\n})\nexport class VaultFilterModule {}\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { IndividualVaultComponent } from \"./individual-vault.component\";\nconst routes: Routes = [\n {\n path: \"\",\n component: IndividualVaultComponent,\n data: { titleId: \"vaults\" },\n },\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class IndividualVaultRoutingModule {}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { UpdateKeyComponent } from \"../../../../settings/update-key.component\";\nimport { AddEditComponent } from \"../../../../vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../../../../vault/attachments.component\";\nimport { CiphersComponent } from \"../../../../vault/ciphers.component\";\nimport { CollectionsComponent } from \"../../../../vault/collections.component\";\nimport { FolderAddEditComponent } from \"../../../../vault/folder-add-edit.component\";\nimport { ShareComponent } from \"../../../../vault/share.component\";\nimport { VaultFilterComponent } from \"../../../vault-filter/vault-filter.component\";\nimport { VaultService } from \"../../vault.service\";\n\nconst BroadcasterSubscriptionId = \"VaultComponent\";\n\n@Component({\n selector: \"app-vault\",\n templateUrl: \"individual-vault.component.html\",\n})\nexport class IndividualVaultComponent implements OnInit, OnDestroy {\n @ViewChild(\"vaultFilter\", { static: true }) filterComponent: VaultFilterComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n @ViewChild(\"folderAddEdit\", { read: ViewContainerRef, static: true })\n folderAddEditModalRef: ViewContainerRef;\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"share\", { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild(\"collections\", { read: ViewContainerRef, static: true })\n collectionsModalRef: ViewContainerRef;\n @ViewChild(\"updateKeyTemplate\", { read: ViewContainerRef, static: true })\n updateKeyModalRef: ViewContainerRef;\n\n favorites = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n organizationId: string = null;\n myVaultOnly = false;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n deleted = false;\n trashCleanupWarning: string = null;\n activeFilter: VaultFilter = new VaultFilter();\n\n constructor(\n private syncService: SyncService,\n private route: ActivatedRoute,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService,\n private modalService: ModalService,\n private tokenService: TokenService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private platformUtilsService: PlatformUtilsService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private stateService: StateService,\n private organizationService: OrganizationService,\n private vaultService: VaultService,\n private cipherService: CipherService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf(\"MSIE\") !== -1;\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost()\n ? \"trashCleanupWarningSelfHosted\"\n : \"trashCleanupWarning\"\n );\n\n this.route.queryParams.pipe(first()).subscribe(async (params) => {\n await this.syncService.fullSync(false);\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n this.showPremiumCallout =\n !this.showVerifyEmail && !canAccessPremium && !this.platformUtilsService.isSelfHost();\n\n this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n this.filterComponent.reloadOrganizations();\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n\n if (params.cipherId) {\n const cipherView = new CipherView();\n cipherView.id = params.cipherId;\n if (params.action === \"clone\") {\n await this.cloneCipher(cipherView);\n } else if (params.action === \"edit\") {\n await this.editCipher(cipherView);\n }\n }\n await this.ciphersComponent.reload();\n\n this.route.queryParams.subscribe(async (params) => {\n if (params.cipherId) {\n if ((await this.cipherService.get(params.cipherId)) != null) {\n this.editCipherId(params.cipherId);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unknownCipher\")\n );\n this.router.navigate([], {\n queryParams: { cipherId: null },\n queryParamsHandling: \"merge\",\n });\n }\n }\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await Promise.all([\n this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),\n this.filterComponent.reloadOrganizations(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n });\n }\n\n get isShowingCards() {\n return (\n this.showBrowserOutdated ||\n this.showPremiumCallout ||\n this.showUpdateKey ||\n this.showVerifyEmail\n );\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async applyVaultFilter(vaultFilter: VaultFilter) {\n this.ciphersComponent.showAddNew = vaultFilter.status !== \"trash\";\n this.activeFilter = vaultFilter;\n await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === \"trash\");\n this.filterComponent.searchPlaceholder = this.vaultService.calculateSearchBarLocalizationString(\n this.activeFilter\n );\n this.go();\n }\n\n async applyOrganizationFilter(orgId: string) {\n if (orgId == null) {\n this.activeFilter.resetOrganization();\n this.activeFilter.myVaultOnly = true;\n } else {\n this.activeFilter.selectedOrganizationId = orgId;\n }\n await this.applyVaultFilter(this.activeFilter);\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n private buildFilter(): (cipher: CipherView) => boolean {\n return (cipher) => {\n let cipherPassesFilter = true;\n if (this.activeFilter.status === \"favorites\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.favorite;\n }\n if (this.activeFilter.status === \"trash\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.isDeleted;\n }\n if (this.activeFilter.cipherType != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.type === this.activeFilter.cipherType;\n }\n if (\n this.activeFilter.selectedFolder &&\n this.activeFilter.selectedFolderId != \"none\" &&\n cipherPassesFilter\n ) {\n cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) {\n cipherPassesFilter =\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1;\n }\n if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId;\n }\n if (this.activeFilter.myVaultOnly && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === null;\n }\n return cipherPassesFilter;\n };\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.organizationService.get(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send(\"upgradeOrganization\", {\n organizationId: cipher.organizationId,\n });\n return;\n }\n }\n\n let madeAttachmentChanges = false;\n const [modal] = await this.modalService.openViewRef(\n AttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onReuploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n }\n );\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async shareCipher(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n ShareComponent,\n this.shareModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onSharedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n CollectionsComponent,\n this.collectionsModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async addFolder() {\n const [modal] = await this.modalService.openViewRef(\n FolderAddEditComponent,\n this.folderAddEditModalRef,\n (comp) => {\n comp.folderId = null;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n }\n );\n }\n\n async editFolder(folderId: string) {\n const [modal] = await this.modalService.openViewRef(\n FolderAddEditComponent,\n this.folderAddEditModalRef,\n (comp) => {\n comp.folderId = folderId;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n comp.onDeletedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n }\n );\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === \"none\" ? null : this.folderId;\n if (this.activeFilter.selectedCollectionId != null) {\n const collection = this.filterComponent.collections.fullList.filter(\n (c) => c.id === this.activeFilter.selectedCollectionId\n );\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.activeFilter.selectedCollectionId];\n }\n }\n if (this.activeFilter.selectedFolderId && this.activeFilter.selectedFolder) {\n component.folderId = this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedOrganizationId) {\n component.organizationId = this.activeFilter.selectedOrganizationId;\n }\n }\n\n async editCipher(cipher: CipherView) {\n return this.editCipherId(cipher?.id);\n }\n\n async editCipherId(id: string) {\n const cipher = await this.cipherService.get(id);\n if (cipher != null && cipher.reprompt != 0) {\n if (!(await this.passwordRepromptService.showPasswordPrompt())) {\n this.go({ cipherId: null });\n return;\n }\n }\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.cipherId = id;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n\n modal.onClosedPromise().then(() => {\n this.go({ cipherId: null });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n async updateKey() {\n await this.modalService.openViewRef(UpdateKeyComponent, this.updateKeyModalRef);\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: \"merge\",\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n {{ \"vaultItems\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n \n \n {{ \"addItem\" | i18n }}\n \n
\n
\n \n {{ trashCleanupWarning }}\n \n \n \n
\n
\n
\n
\n \n {{ \"updateKeyTitle\" | i18n }}\n
\n
\n

{{ \"updateEncryptionKeyShortDesc\" | i18n }}

\n \n
\n
\n \n
\n
\n \n {{ \"updateBrowser\" | i18n }}\n
\n
\n

{{ \"updateBrowserDesc\" | i18n }}

\n \n {{ \"updateBrowser\" | i18n }}\n \n
\n
\n
\n
\n {{ \"goPremium\" | i18n }}\n
\n
\n

{{ \"premiumUpgradeUnlockFeatures\" | i18n }}

\n \n {{ \"goPremium\" | i18n }}\n \n
\n
\n
\n
\n
\n\n\n\n\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { VaultModule } from \"../../vault.module\";\n\nimport { IndividualVaultRoutingModule } from \"./individual-vault-routing.module\";\nimport { IndividualVaultComponent } from \"./individual-vault.component\";\n\n@NgModule({\n imports: [VaultModule, IndividualVaultRoutingModule],\n declarations: [IndividualVaultComponent],\n exports: [IndividualVaultComponent],\n})\nexport class IndividualVaultModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { SharedModule } from \"../../../shared.module\";\n\nimport { OrganizationNameBadgeComponent } from \"./organization-name-badge.component\";\n\n@NgModule({\n imports: [SharedModule],\n declarations: [OrganizationNameBadgeComponent],\n exports: [OrganizationNameBadgeComponent],\n})\nexport class OrganizationBadgeModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-org-badge\",\n templateUrl: \"organization-name-badge.component.html\",\n})\nexport class OrganizationNameBadgeComponent implements OnInit {\n @Input() organizationName: string;\n @Input() profileName: string;\n\n @Output() onOrganizationClicked = new EventEmitter();\n\n color: string;\n textColor: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit(): void {\n if (this.organizationName == null || this.organizationName === \"\") {\n this.organizationName = this.i18nService.t(\"me\");\n this.color = this.stringToColor(this.profileName.toUpperCase());\n }\n if (this.color == null) {\n this.color = this.stringToColor(this.organizationName.toUpperCase());\n }\n this.textColor = this.pickTextColorBasedOnBgColor();\n }\n\n // This value currently isn't stored anywhere, only calculated in the app-avatar component\n // Once we are allowing org colors to be changed and saved, change this out\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = \"#\";\n for (let i = 0; i < 3; i++) {\n const value = (hash >> (i * 8)) & 0xff;\n color += (\"00\" + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n // There are a few ways to calculate text color for contrast, this one seems to fit accessibility guidelines best.\n // https://stackoverflow.com/a/3943023/6869691\n private pickTextColorBasedOnBgColor() {\n const color = this.color.charAt(0) === \"#\" ? this.color.substring(1, 7) : this.color;\n const r = parseInt(color.substring(0, 2), 16); // hexToR\n const g = parseInt(color.substring(2, 4), 16); // hexToG\n const b = parseInt(color.substring(4, 6), 16); // hexToB\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? \"black !important\" : \"white !important\";\n }\n\n emitOnOrganizationClicked() {\n this.onOrganizationClicked.emit();\n }\n}\n","\n {{ organizationName | ellipsis: 13 }}\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { OrganizationVaultComponent } from \"./organization-vault.component\";\nconst routes: Routes = [\n {\n path: \"\",\n component: OrganizationVaultComponent,\n data: { titleId: \"vaults\" },\n },\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationVaultRoutingModule {}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { EntityEventsComponent } from \"../../../../organizations/manage/entity-events.component\";\nimport { AddEditComponent } from \"../../../../organizations/vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../../../../organizations/vault/attachments.component\";\nimport { CiphersComponent } from \"../../../../organizations/vault/ciphers.component\";\nimport { CollectionsComponent } from \"../../../../organizations/vault/collections.component\";\nimport { VaultFilterComponent } from \"../../../vault-filter/vault-filter.component\";\nimport { VaultService } from \"../../vault.service\";\n\nconst BroadcasterSubscriptionId = \"OrgVaultComponent\";\n\n@Component({\n selector: \"app-org-vault\",\n templateUrl: \"organization-vault.component.html\",\n})\nexport class OrganizationVaultComponent implements OnInit, OnDestroy {\n @ViewChild(\"vaultFilter\", { static: true }) vaultFilterComponent: VaultFilterComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"collections\", { read: ViewContainerRef, static: true })\n collectionsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted = false;\n trashCleanupWarning: string = null;\n activeFilter: VaultFilter = new VaultFilter();\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private messagingService: MessagingService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService,\n private vaultService: VaultService,\n private cipherService: CipherService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n ngOnInit() {\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost()\n ? \"trashCleanupWarningSelfHosted\"\n : \"trashCleanupWarning\"\n );\n this.route.parent.params.subscribe(async (params: any) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.vaultFilterComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.ciphersComponent.searchText = this.vaultFilterComponent.searchText = qParams.search;\n if (!this.organization.canViewAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await Promise.all([\n this.vaultFilterComponent.reloadCollectionsAndFolders(\n new VaultFilter({\n selectedOrganizationId: this.organization.id,\n } as Partial)\n ),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.vaultFilterComponent.reloadCollectionsAndFolders(\n new VaultFilter({ selectedOrganizationId: this.organization.id } as Partial)\n );\n await this.ciphersComponent.reload();\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter((c) => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n this.route.queryParams.subscribe(async (params) => {\n if (params.cipherId) {\n if (\n // Handle users with implicit collection access since they use the admin endpoint\n this.organization.canEditAnyCollection ||\n (await this.cipherService.get(params.cipherId)) != null\n ) {\n this.editCipherId(params.cipherId);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unknownCipher\")\n );\n this.router.navigate([], {\n queryParams: { cipherId: null },\n queryParamsHandling: \"merge\",\n });\n }\n }\n });\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async applyVaultFilter(vaultFilter: VaultFilter) {\n this.ciphersComponent.showAddNew = vaultFilter.status !== \"trash\";\n this.activeFilter = vaultFilter;\n await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === \"trash\");\n this.vaultFilterComponent.searchPlaceholder =\n this.vaultService.calculateSearchBarLocalizationString(this.activeFilter);\n this.go();\n }\n\n private buildFilter(): (cipher: CipherView) => boolean {\n return (cipher) => {\n let cipherPassesFilter = true;\n if (this.activeFilter.status === \"favorites\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.favorite;\n }\n if (this.activeFilter.status === \"trash\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.isDeleted;\n }\n if (this.activeFilter.cipherType != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.type === this.activeFilter.cipherType;\n }\n if (\n this.activeFilter.selectedFolder != null &&\n this.activeFilter.selectedFolderId != \"none\" &&\n cipherPassesFilter\n ) {\n cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) {\n cipherPassesFilter =\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1;\n }\n if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId;\n }\n if (this.activeFilter.myVaultOnly && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === null;\n }\n return cipherPassesFilter;\n };\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: cipher.organizationId });\n return;\n }\n\n let madeAttachmentChanges = false;\n\n const [modal] = await this.modalService.openViewRef(\n AttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true));\n }\n );\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n CollectionsComponent,\n this.collectionsModalRef,\n (comp) => {\n if (this.organization.canEditAnyCollection) {\n comp.collectionIds = cipher.collectionIds;\n comp.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n async editCipher(cipher: CipherView) {\n return this.editCipherId(cipher?.id);\n }\n\n async editCipherId(cipherId: string) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher != null && cipher.reprompt != 0) {\n if (!(await this.passwordRepromptService.showPasswordPrompt())) {\n this.go({ cipherId: null });\n return;\n }\n }\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.organization = this.organization;\n comp.cipherId = cipherId;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n\n modal.onClosedPromise().then(() => {\n this.go({ cipherId: null });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = cipher.name;\n comp.organizationId = this.organization.id;\n comp.entityId = cipher.id;\n comp.showUser = true;\n comp.entity = \"cipher\";\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: \"merge\",\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n {{ \"vaultItems\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n \n \n {{ \"addItem\" | i18n }}\n \n
\n
\n \n {{ trashCleanupWarning }}\n \n \n \n
\n
\n
\n\n\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { VaultModule } from \"../../vault.module\";\n\nimport { OrganizationVaultRoutingModule } from \"./organization-vault-routing.module\";\nimport { OrganizationVaultComponent } from \"./organization-vault.component\";\n\n@NgModule({\n imports: [VaultModule, OrganizationVaultRoutingModule],\n declarations: [OrganizationVaultComponent],\n exports: [OrganizationVaultComponent],\n})\nexport class OrganizationVaultModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { LooseComponentsModule } from \"../loose-components.module\";\nimport { SharedModule } from \"../shared.module\";\nimport { VaultFilterModule } from \"../vault-filter/vault-filter.module\";\n\nimport { VaultService } from \"./vault.service\";\n\n@NgModule({\n imports: [SharedModule, VaultFilterModule, LooseComponentsModule],\n exports: [SharedModule, VaultFilterModule, LooseComponentsModule],\n providers: [\n {\n provide: VaultService,\n useClass: VaultService,\n },\n ],\n})\nexport class VaultModule {}\n","import { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\n\nexport class VaultService {\n calculateSearchBarLocalizationString(vaultFilter: VaultFilter): string {\n if (vaultFilter.status === \"favorites\") {\n return \"searchFavorites\";\n }\n if (vaultFilter.status === \"trash\") {\n return \"searchTrash\";\n }\n if (vaultFilter.cipherType != null) {\n return \"searchType\";\n }\n if (vaultFilter.selectedFolderId != null && vaultFilter.selectedFolderId != \"none\") {\n return \"searchFolder\";\n }\n if (vaultFilter.selectedCollectionId != null) {\n return \"searchCollection\";\n }\n if (vaultFilter.selectedOrganizationId != null) {\n return \"searchOrganization\";\n }\n if (vaultFilter.myVaultOnly) {\n return \"searchMyVault\";\n }\n\n return \"searchVault\";\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\n@Injectable()\nexport class PermissionsGuard implements CanActivate {\n constructor(\n private router: Router,\n private organizationService: OrganizationService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private syncService: SyncService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // TODO: We need to fix this issue once and for all.\n if ((await this.syncService.getLastSync()) == null) {\n await this.syncService.fullSync(false);\n }\n\n const org = await this.organizationService.get(route.params.organizationId);\n if (org == null) {\n return this.router.createUrlTree([\"/\"]);\n }\n\n if (!org.isOwner && !org.enabled) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"organizationIsDisabled\")\n );\n return this.router.createUrlTree([\"/\"]);\n }\n\n const permissions = route.data == null ? [] : (route.data.permissions as Permissions[]);\n if (permissions != null && !org.hasAnyPermission(permissions)) {\n // Handle linkable ciphers for organizations the user only has view access to\n // https://bitwarden.atlassian.net/browse/EC-203\n if (state.root.queryParamMap.has(\"cipherId\")) {\n return this.router.createUrlTree([\"/vault\"], {\n queryParams: {\n cipherId: state.root.queryParamMap.get(\"cipherId\"),\n },\n });\n }\n\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"accessDenied\"));\n return this.router.createUrlTree([\"/\"]);\n }\n\n return true;\n }\n}\n","import { Component, NgZone, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { NavigationPermissionsService } from \"../services/navigation-permissions.service\";\n\nconst BroadcasterSubscriptionId = \"OrganizationLayoutComponent\";\n\n@Component({\n selector: \"app-organization-layout\",\n templateUrl: \"organization-layout.component.html\",\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone\n ) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.params.subscribe(async (params: any) => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"updatedOrgLicense\":\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n }\n\n get showManageTab(): boolean {\n return NavigationPermissionsService.canAccessManage(this.organization);\n }\n\n get showToolsTab(): boolean {\n return NavigationPermissionsService.canAccessTools(this.organization);\n }\n\n get showSettingsTab(): boolean {\n return NavigationPermissionsService.canAccessSettings(this.organization);\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport\n ? \"tools/import\"\n : \"tools/exposed-passwords-report\";\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = \"manage/people\";\n break;\n case this.organization.canViewAssignedCollections || this.organization.canViewAllCollections:\n route = \"manage/collections\";\n break;\n case this.organization.canManageGroups:\n route = \"manage/groups\";\n break;\n case this.organization.canManagePolicies:\n route = \"manage/policies\";\n break;\n case this.organization.canAccessEventLogs:\n route = \"manage/events\";\n break;\n }\n return route;\n }\n}\n","\n\n\n\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { OrganizationUserBulkConfirmRequest } from \"jslib-common/models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\n\nimport { BulkUserDetails } from \"./bulk-status.component\";\n\n@Component({\n selector: \"app-bulk-confirm\",\n templateUrl: \"bulk-confirm.component.html\",\n})\nexport class BulkConfirmComponent implements OnInit {\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n excludedUsers: BulkUserDetails[];\n filteredUsers: BulkUserDetails[];\n publicKeys: Map = new Map();\n fingerprints: Map = new Map();\n statuses: Map = new Map();\n\n loading = true;\n done = false;\n error: string;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n private i18nService: I18nService\n ) {}\n\n async ngOnInit() {\n this.excludedUsers = this.users.filter((u) => !this.isAccepted(u));\n this.filteredUsers = this.users.filter((u) => this.isAccepted(u));\n\n if (this.filteredUsers.length <= 0) {\n this.done = true;\n }\n\n const response = await this.getPublicKeys();\n\n for (const entry of response.data) {\n const publicKey = Utils.fromB64ToArray(entry.key);\n const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.publicKeys.set(entry.id, publicKey);\n this.fingerprints.set(entry.id, fingerprint.join(\"-\"));\n }\n }\n\n this.loading = false;\n }\n\n async submit() {\n this.loading = true;\n try {\n const key = await this.getCryptoKey();\n const userIdsWithKeys: any[] = [];\n for (const user of this.filteredUsers) {\n const publicKey = this.publicKeys.get(user.id);\n if (publicKey == null) {\n continue;\n }\n const encryptedKey = await this.cryptoService.rsaEncrypt(key.key, publicKey.buffer);\n userIdsWithKeys.push({\n id: user.id,\n key: encryptedKey.encryptedString,\n });\n }\n const response = await this.postConfirmRequest(userIdsWithKeys);\n\n response.data.forEach((entry) => {\n const error = entry.error !== \"\" ? entry.error : this.i18nService.t(\"bulkConfirmMessage\");\n this.statuses.set(entry.id, error);\n });\n\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n this.loading = false;\n }\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === OrganizationUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new OrganizationUserBulkRequest(this.filteredUsers.map((user) => user.id));\n return await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getOrgKey(this.organizationId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request);\n }\n}\n","import { Component, Input } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\n\nimport { BulkUserDetails } from \"./bulk-status.component\";\n\n@Component({\n selector: \"app-bulk-remove\",\n templateUrl: \"bulk-remove.component.html\",\n})\nexport class BulkRemoveComponent {\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n statuses: Map = new Map();\n\n loading = false;\n done = false;\n error: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService) {}\n\n async submit() {\n this.loading = true;\n try {\n const response = await this.deleteUsers();\n\n response.data.forEach((entry) => {\n const error = entry.error !== \"\" ? entry.error : this.i18nService.t(\"bulkRemovedMessage\");\n this.statuses.set(entry.id, error);\n });\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n\n this.loading = false;\n }\n\n protected async deleteUsers() {\n const request = new OrganizationUserBulkRequest(this.users.map((user) => user.id));\n return await this.apiService.deleteManyOrganizationUsers(this.organizationId, request);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"bulkConfirmStatus\" | i18n }}\n

\n \n ×\n \n
\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}{{ \"status\" | i18n }}
\n \n \n {{ item.user.email }}\n {{ item.user.name }}\n \n {{ item.message }}\n \n {{ item.message }}\n
\n
\n
\n \n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\n\nexport interface BulkUserDetails {\n id: string;\n name: string;\n email: string;\n status: OrganizationUserStatusType | ProviderUserStatusType;\n}\n\ntype BulkStatusEntry = {\n user: BulkUserDetails;\n error: boolean;\n message: string;\n};\n\n@Component({\n selector: \"app-bulk-status\",\n templateUrl: \"bulk-status.component.html\",\n})\nexport class BulkStatusComponent {\n users: BulkStatusEntry[];\n loading = false;\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { CollectionRequest } from \"jslib-common/models/request/collectionRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\n@Component({\n selector: \"app-collection-add-edit\",\n templateUrl: \"collection-add-edit.component.html\",\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Input() canSave: boolean;\n @Input() canDelete: boolean;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode = false;\n accessGroups = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n const organization = await this.organizationService.get(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data\n .map((r) => r)\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editCollection\");\n try {\n const collection = await this.apiService.getCollectionDetails(\n this.organizationId,\n this.collectionId\n );\n this.name = await this.cryptoService.decryptToUtf8(\n new EncString(collection.name),\n this.orgKey\n );\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach((s) => {\n const group = this.groups.filter((g) => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"addCollection\");\n }\n\n this.groups.forEach((g) => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error(\"No encryption key for this organization.\");\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups\n .filter((g) => (g as any).checked && !g.accessAll)\n .map(\n (g) => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords)\n );\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(\n this.organizationId,\n this.collectionId,\n request\n );\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedCollectionId\" : \"createdCollectionId\", this.name)\n );\n this.onSavedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteCollectionConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedCollectionId\", this.name)\n );\n this.onDeletedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"externalIdDesc\" | i18n }}\n
\n \n

\n {{ \"groupAccess\" | i18n }}\n
\n \n \n
\n

\n
\n {{ \"noGroupsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{ \"name\" | i18n }}{{ \"hidePasswords\" | i18n }}{{ \"readOnly\" | i18n }}
\n \n \n {{ g.name }}\n \n \n {{ \"groupAccessAllItems\" | i18n }}\n \n \n \n \n \n
\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from \"jslib-common/models/response/collectionResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\nimport { CollectionAddEditComponent } from \"./collection-add-edit.component\";\nimport { EntityUsersComponent } from \"./entity-users.component\";\n\n@Component({\n selector: \"app-org-manage-collections\",\n templateUrl: \"collections.component.html\",\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"usersTemplate\", { read: ViewContainerRef, static: true })\n usersModalRef: ViewContainerRef;\n\n loading = true;\n organization: Organization;\n canCreate = false;\n organizationId: string;\n collections: CollectionView[];\n assignedCollections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private collectionService: CollectionService,\n private modalService: ModalService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private searchService: SearchService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n this.canCreate = this.organization.canCreateNewCollections;\n\n const decryptCollections = async (r: ListResponse) => {\n const collections = r.data\n .filter((c) => c.organizationId === this.organizationId)\n .map((d) => new Collection(new CollectionData(d as CollectionDetailsResponse)));\n return await this.collectionService.decryptMany(collections);\n };\n\n if (this.organization.canViewAssignedCollections) {\n const response = await this.apiService.getUserCollections();\n this.assignedCollections = await decryptCollections(response);\n }\n\n if (this.organization.canViewAllCollections) {\n const response = await this.apiService.getCollections(this.organizationId);\n this.collections = await decryptCollections(response);\n } else {\n this.collections = this.assignedCollections;\n }\n\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections = this.pagedCollections.concat(\n this.collections.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n async edit(collection: CollectionView) {\n const canCreate = collection == null && this.canCreate;\n const canEdit = collection != null && this.canEdit(collection);\n const canDelete = collection != null && this.canDelete(collection);\n\n if (!(canCreate || canEdit || canDelete)) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingPermissions\"));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n CollectionAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.collectionId = collection != null ? collection.id : null;\n comp.canSave = canCreate || canEdit;\n comp.canDelete = canDelete;\n comp.onSavedCollection.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedCollection.subscribe(() => {\n modal.close();\n this.removeCollection(collection);\n });\n }\n );\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteCollectionConfirmation\"),\n collection.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedCollectionId\", collection.name)\n );\n this.removeCollection(collection);\n } catch (e) {\n this.logService.error(e);\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingPermissions\"));\n }\n }\n\n async users(collection: CollectionView) {\n const [modal] = await this.modalService.openViewRef(\n EntityUsersComponent,\n this.usersModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.entity = \"collection\";\n comp.entityId = collection.id;\n comp.entityName = collection.name;\n\n comp.onEditedUsers.subscribe(() => {\n this.load();\n modal.close();\n });\n }\n );\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n canEdit(collection: CollectionView) {\n if (this.organization.canEditAnyCollection) {\n return true;\n }\n\n if (\n this.organization.canEditAssignedCollections &&\n this.assignedCollections.some((c) => c.id === collection.id)\n ) {\n return true;\n }\n return false;\n }\n\n canDelete(collection: CollectionView) {\n if (this.organization.canDeleteAnyCollection) {\n return true;\n }\n\n if (\n this.organization.canDeleteAssignedCollections &&\n this.assignedCollections.some((c) => c.id === collection.id)\n ) {\n return true;\n }\n return false;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{ \"collections\" | i18n }}

\n
\n
\n \n \n
\n \n \n {{ \"newCollection\" | i18n }}\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noCollectionsInList\" | i18n }}

\n \n \n \n \n {{ c.name }}\n \n \n
\n \n \n \n
\n \n \n {{ \"users\" | i18n }}\n \n \n \n {{ \"delete\" | i18n }}\n \n
\n
\n \n \n \n \n\n\n\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\n\nimport { EventService } from \"../../services/event.service\";\n\n@Component({\n selector: \"app-entity-events\",\n templateUrl: \"entity-events.component.html\",\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: \"user\" | \"cipher\";\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() providerId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private eventService: EventService,\n private platformUtilsService: PlatformUtilsService,\n private userNamePipe: UserNamePipe,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidDateRange\")\n );\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === \"user\" && this.providerId) {\n promise = this.apiService.getEventsProviderUser(\n this.providerId,\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n } else if (this.entity === \"user\") {\n promise = this.apiService.getEventsOrganizationUser(\n this.organizationId,\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n } else {\n promise = this.apiService.getEventsCipher(\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.continuationToken = response.continuationToken;\n const events = await Promise.all(\n response.data.map(async (r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user =\n this.showUser && userId != null && this.orgUsersUserIdMap.has(userId)\n ? this.orgUsersUserIdMap.get(userId)\n : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t(\"unknown\") : null,\n userEmail: user != null ? user.email : this.showUser ? \"\" : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n })\n );\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"eventLogs\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n
\n \n \n -\n \n \n
\n \n \n {{ \"refresh\" | i18n }}\n \n
\n
\n
\n {{ \"noEventsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\n\n@Component({\n selector: \"app-entity-users\",\n templateUrl: \"entity-users.component.html\",\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: \"group\" | \"collection\";\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter((u) => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, \"email\"));\n if (this.entity === \"group\") {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === \"collection\") {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach((u) => {\n if (this.entity === \"collection\" && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === \"collection\" && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === \"collection\") {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === \"group\") {\n const selections = this.users.filter((u) => (u as any).checked).map((u) => u.id);\n this.formPromise = this.apiService.putGroupUsers(\n this.organizationId,\n this.entityId,\n selections\n );\n } else {\n const selections = this.users\n .filter((u) => (u as any).checked && !u.accessAll)\n .map(\n (u) =>\n new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords)\n );\n this.formPromise = this.apiService.putCollectionUsers(\n this.organizationId,\n this.entityId,\n selections\n );\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"updatedUsers\"));\n this.onEditedUsers.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"userAccess\" | i18n }}\n {{ entityName }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n
\n
\n \n \n
\n
\n \n {{ \"all\" | i18n }}\n \n \n {{ \"selected\" | i18n }}\n {{\n selectedCount\n }}\n \n
\n
\n \n
\n {{ \"noUsersInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
  {{ \"name\" | i18n }} {{ \"userType\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n \n {{ \"readOnly\" | i18n }}\n
\n \n \n \n \n \n {{ u.email }}\n {{ \"invited\" | i18n }}\n {{ \"accepted\" | i18n }}\n {{ u.name }}\n \n \n \n {{ \"userAccessAllItems\" | i18n }}\n \n \n {{ \"owner\" | i18n }}\n {{ \"admin\" | i18n }}\n {{\n \"manager\" | i18n\n }}\n {{ \"user\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\nimport { BaseEventsComponent } from \"../../common/base.events.component\";\nimport { EventService } from \"../../services/event.service\";\n\n@Component({\n selector: \"app-org-events\",\n templateUrl: \"events.component.html\",\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName = \"org-events\";\n organizationId: string;\n organization: Organization;\n\n private orgUsersUserIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n eventService: EventService,\n i18nService: I18nService,\n exportService: ExportService,\n platformUtilsService: PlatformUtilsService,\n private router: Router,\n logService: LogService,\n private userNamePipe: UserNamePipe,\n private organizationService: OrganizationService,\n private providerService: ProviderService\n ) {\n super(eventService, i18nService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.organization = await this.organizationService.get(this.organizationId);\n if (this.organization == null || !this.organization.useEvents) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n\n if (this.organization.providerId != null) {\n try {\n const provider = await this.providerService.get(this.organization.providerId);\n if (\n provider != null &&\n (await this.providerService.get(this.organization.providerId)).canManageUsers\n ) {\n const providerUsersResponse = await this.apiService.getProviderUsers(\n this.organization.providerId\n );\n providerUsersResponse.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, {\n name: `${name} (${this.organization.providerName})`,\n email: u.email,\n });\n });\n }\n } catch (e) {\n this.logService.warning(e);\n }\n }\n\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsOrganization(\n this.organizationId,\n startDate,\n endDate,\n continuationToken\n );\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n if (userId == null) {\n return null;\n }\n\n if (this.orgUsersUserIdMap.has(userId)) {\n return this.orgUsersUserIdMap.get(userId);\n }\n\n if (r.providerId != null && r.providerId === this.organization.providerId) {\n return {\n name: this.organization.providerName,\n };\n }\n\n return null;\n }\n}\n","
\n

{{ \"eventLogs\" | i18n }}

\n
\n
\n \n \n -\n \n \n
\n
\n \n \n {{ \"refresh\" | i18n }}\n \n \n
\n \n \n {{ \"export\" | i18n }}\n \n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noEventsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { GroupRequest } from \"jslib-common/models/request/groupRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { CollectionDetailsResponse } from \"jslib-common/models/response/collectionResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-group-add-edit\",\n templateUrl: \"group-add-edit.component.html\",\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n name: string;\n externalId: string;\n access: \"all\" | \"selected\" = \"selected\";\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editGroup\");\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? \"all\" : \"selected\";\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"addGroup\");\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(\n (r) => new Collection(new CollectionData(r as CollectionDetailsResponse))\n );\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === \"all\";\n if (!request.accessAll) {\n request.collections = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedGroupId\" : \"createdGroupId\", this.name)\n );\n this.onSavedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteGroupConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedGroupId\", this.name)\n );\n this.onDeletedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"externalIdDesc\" | i18n }}\n
\n

\n
\n {{ \"accessControl\" | i18n }}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n  \n {{ \"name\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n {{ \"readOnly\" | i18n }}\n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\nimport { EntityUsersComponent } from \"./entity-users.component\";\nimport { GroupAddEditComponent } from \"./group-add-edit.component\";\n\n@Component({\n selector: \"app-org-groups\",\n templateUrl: \"groups.component.html\",\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"usersTemplate\", { read: ViewContainerRef, static: true })\n usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private i18nService: I18nService,\n private modalService: ModalService,\n private platformUtilsService: PlatformUtilsService,\n private router: Router,\n private searchService: SearchService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.organizationService.get(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(\n this.groups.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n async edit(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(\n GroupAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.groupId = group != null ? group.id : null;\n comp.onSavedGroup.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedGroup.subscribe(() => {\n modal.close();\n this.removeGroup(group);\n });\n }\n );\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteGroupConfirmation\"),\n group.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedGroupId\", group.name)\n );\n this.removeGroup(group);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async users(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(\n EntityUsersComponent,\n this.usersModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.entity = \"group\";\n comp.entityId = group.id;\n comp.entityName = group.name;\n\n comp.onEditedUsers.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{ \"groups\" | i18n }}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noGroupsInList\" | i18n }}

\n \n \n \n \n {{ g.name }}\n \n \n \n \n \n \n \n\n\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-org-manage\",\n templateUrl: \"manage.component.html\",\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n accessSso = false;\n\n constructor(private route: ActivatedRoute, private organizationService: OrganizationService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessSso = this.organization.useSso;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"manage\" | i18n }}
\n
\n \n {{ \"people\" | i18n }}\n \n \n {{ \"collections\" | i18n }}\n \n \n {{ \"groups\" | i18n }}\n \n \n {{ \"policies\" | i18n }}\n \n \n {{ \"singleSignOn\" | i18n }}\n \n \n {{ \"eventLogs\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"jslib-common/models/request/organizationUserConfirmRequest\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { OrganizationUserBulkResponse } from \"jslib-common/models/response/organizationUserBulkResponse\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\n\nimport { BasePeopleComponent } from \"../../common/base.people.component\";\n\nimport { BulkConfirmComponent } from \"./bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./bulk/bulk-remove.component\";\nimport { BulkStatusComponent } from \"./bulk/bulk-status.component\";\nimport { EntityEventsComponent } from \"./entity-events.component\";\nimport { ResetPasswordComponent } from \"./reset-password.component\";\nimport { UserAddEditComponent } from \"./user-add-edit.component\";\nimport { UserGroupsComponent } from \"./user-groups.component\";\n\n@Component({\n selector: \"app-org-people\",\n templateUrl: \"people.component.html\",\n})\nexport class PeopleComponent\n extends BasePeopleComponent\n implements OnInit\n{\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"groupsTemplate\", { read: ViewContainerRef, static: true })\n groupsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n @ViewChild(\"resetPasswordTemplate\", { read: ViewContainerRef, static: true })\n resetPasswordModalRef: ViewContainerRef;\n @ViewChild(\"bulkStatusTemplate\", { read: ViewContainerRef, static: true })\n bulkStatusModalRef: ViewContainerRef;\n @ViewChild(\"bulkConfirmTemplate\", { read: ViewContainerRef, static: true })\n bulkConfirmModalRef: ViewContainerRef;\n @ViewChild(\"bulkRemoveTemplate\", { read: ViewContainerRef, static: true })\n bulkRemoveModalRef: ViewContainerRef;\n\n userType = OrganizationUserType;\n userStatusType = OrganizationUserStatusType;\n\n organizationId: string;\n status: OrganizationUserStatusType = null;\n accessEvents = false;\n accessGroups = false;\n canResetPassword = false; // User permission (admin/custom)\n orgUseResetPassword = false; // Org plan ability\n orgHasKeys = false; // Org public/private keys\n orgResetPasswordPolicyEnabled = false;\n callingUserType: OrganizationUserType = null;\n\n constructor(\n apiService: ApiService,\n private route: ActivatedRoute,\n i18nService: I18nService,\n modalService: ModalService,\n platformUtilsService: PlatformUtilsService,\n cryptoService: CryptoService,\n private router: Router,\n searchService: SearchService,\n validationService: ValidationService,\n private policyService: PolicyService,\n logService: LogService,\n searchPipe: SearchPipe,\n userNamePipe: UserNamePipe,\n private syncService: SyncService,\n stateService: StateService,\n private organizationService: OrganizationService\n ) {\n super(\n apiService,\n searchService,\n i18nService,\n platformUtilsService,\n cryptoService,\n validationService,\n modalService,\n logService,\n searchPipe,\n userNamePipe,\n stateService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.organizationService.get(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate([\"../collections\"], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n this.canResetPassword = organization.canManageUsersPassword;\n this.orgUseResetPassword = organization.useResetPassword;\n this.callingUserType = organization.type;\n this.orgHasKeys = organization.hasPublicAndPrivateKeys;\n\n // Backfill pub/priv key if necessary\n if (this.canResetPassword && !this.orgHasKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n const response = await this.apiService.postOrganizationKeys(this.organizationId, request);\n if (response != null) {\n this.orgHasKeys = response.publicKey != null && response.privateKey != null;\n await this.syncService.fullSync(true); // Replace oganizations with new data\n } else {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n }\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter((u) => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n });\n });\n }\n\n async load() {\n const resetPasswordPolicy = await this.policyService.getPolicyForOrganization(\n PolicyType.ResetPassword,\n this.organizationId\n );\n this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled;\n super.load();\n }\n\n getUsers(): Promise> {\n return this.apiService.getOrganizationUsers(this.organizationId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteOrganizationUser(this.organizationId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postOrganizationUserReinvite(this.organizationId, id);\n }\n\n async confirmUser(\n user: OrganizationUserUserDetailsResponse,\n publicKey: Uint8Array\n ): Promise {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean {\n // Hierarchy check\n let callingUserHasPermission = false;\n\n switch (this.callingUserType) {\n case OrganizationUserType.Owner:\n callingUserHasPermission = true;\n break;\n case OrganizationUserType.Admin:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner;\n break;\n case OrganizationUserType.Custom:\n callingUserHasPermission =\n orgUser.type !== OrganizationUserType.Owner &&\n orgUser.type !== OrganizationUserType.Admin;\n break;\n }\n\n // Final\n return (\n this.canResetPassword &&\n callingUserHasPermission &&\n this.orgUseResetPassword &&\n this.orgHasKeys &&\n orgUser.resetPasswordEnrolled &&\n this.orgResetPasswordPolicyEnabled &&\n orgUser.status === OrganizationUserStatusType.Confirmed\n );\n }\n\n showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean {\n return (\n this.orgUseResetPassword &&\n orgUser.resetPasswordEnrolled &&\n this.orgResetPasswordPolicyEnabled\n );\n }\n\n async edit(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.usesKeyConnector = user?.usesKeyConnector;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n }\n );\n }\n\n async groups(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserGroupsComponent,\n this.groupsModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRemoveComponent,\n this.bulkRemoveModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter((u) => u.status === OrganizationUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"noSelectedUsersApplicable\")\n );\n return;\n }\n\n try {\n const request = new OrganizationUserBulkRequest(filteredUsers.map((user) => user.id));\n const response = this.apiService.postManyOrganizationUserReinvite(\n this.organizationId,\n request\n );\n this.showBulkStatus(\n users,\n filteredUsers,\n response,\n this.i18nService.t(\"bulkReinviteMessage\")\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkConfirmComponent,\n this.bulkConfirmModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = \"user\";\n });\n }\n\n async resetPassword(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n ResetPasswordComponent,\n this.resetPasswordModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.email = user != null ? user.email : null;\n comp.organizationId = this.organizationId;\n comp.id = user != null ? user.id : null;\n\n comp.onPasswordReset.subscribe(() => {\n modal.close();\n this.load();\n });\n }\n );\n }\n\n protected deleteWarningMessage(user: OrganizationUserUserDetailsResponse): string {\n if (user.usesKeyConnector) {\n return this.i18nService.t(\"removeUserConfirmationKeyConnector\");\n }\n\n return super.deleteWarningMessage(user);\n }\n\n private async showBulkStatus(\n users: OrganizationUserUserDetailsResponse[],\n filteredUsers: OrganizationUserUserDetailsResponse[],\n request: Promise>,\n successfullMessage: string\n ) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n BulkStatusComponent,\n this.bulkStatusModalRef,\n (comp) => {\n comp.loading = true;\n }\n );\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data\n .filter((r) => r.error !== \"\")\n .reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map((user) => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n // eslint-disable-next-line\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t(\"bulkFilteredMessage\");\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","
\n

{{ \"people\" | i18n }}

\n
\n
\n \n {{ \"all\" | i18n }}\n {{ allCount }}\n \n \n {{ \"invited\" | i18n }}\n {{ invitedCount }}\n \n \n {{ \"accepted\" | i18n }}\n {{\n acceptedCount\n }}\n \n
\n
\n \n \n
\n
\n \n \n \n
\n \n \n \n {{ \"confirmSelected\" | i18n }}\n \n \n
\n \n \n
\n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noUsersInList\" | i18n }}

\n \n \n {{ \"usersNeedConfirmed\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ u.email }}\n {{\n \"invited\" | i18n\n }}\n {{\n \"accepted\" | i18n\n }}\n {{ u.name }}\n \n \n \n \n {{ \"userUsingTwoStep\" | i18n }}\n \n \n \n {{ \"enrolledPasswordReset\" | i18n }}\n \n \n \n {{ \"owner\" | i18n }}\n {{ \"admin\" | i18n }}\n {{ \"manager\" | i18n }}\n {{ \"user\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"groups\" | i18n }}\n \n \n \n {{ \"eventLogs\" | i18n }}\n \n \n \n {{ \"resetPassword\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n \n \n \n \n
\n\n\n\n\n\n\n\n\n\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { PolicyListService } from \"../../services/policy-list.service\";\nimport { BasePolicy } from \"../policies/base-policy.component\";\n\nimport { PolicyEditComponent } from \"./policy-edit.component\";\n\n@Component({\n selector: \"app-org-policies\",\n templateUrl: \"policies.component.html\",\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild(\"editTemplate\", { read: ViewContainerRef, static: true })\n editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: BasePolicy[];\n organization: Organization;\n\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private modalService: ModalService,\n private organizationService: OrganizationService,\n private policyListService: PolicyListService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.organization = await this.organizationService.get(this.organizationId);\n if (this.organization == null || !this.organization.usePolicies) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n\n this.policies = this.policyListService.getPolicies();\n\n await this.load();\n\n // Handle policies component launch from Event message\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach((op) => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n\n this.loading = false;\n }\n\n async edit(policy: BasePolicy) {\n const [modal] = await this.modalService.openViewRef(\n PolicyEditComponent,\n this.editModalRef,\n (comp) => {\n comp.policy = policy;\n comp.organizationId = this.organizationId;\n comp.policiesEnabledMap = this.policiesEnabledMap;\n comp.onSavedPolicy.subscribe(() => {\n modal.close();\n this.load();\n });\n }\n );\n }\n}\n","
\n

{{ \"policies\" | i18n }}

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n \n \n \n \n \n
\n {{ p.name | i18n }}\n {{\n \"enabled\" | i18n\n }}\n {{ p.description | i18n }}\n
\n\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { BasePolicy, BasePolicyComponent } from \"../policies/base-policy.component\";\n\n@Component({\n selector: \"app-policy-edit\",\n templateUrl: \"policy-edit.component.html\",\n})\nexport class PolicyEditComponent {\n @Input() policy: BasePolicy;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n @ViewChild(\"policyForm\", { read: ViewContainerRef, static: true })\n policyFormRef: ViewContainerRef;\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n defaultTypes: any[];\n policyComponent: BasePolicyComponent;\n\n private policyResponse: PolicyResponse;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private logService: LogService\n ) {}\n\n async ngAfterViewInit() {\n await this.load();\n this.loading = false;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.policy.component);\n this.policyComponent = this.policyFormRef.createComponent(factory)\n .instance as BasePolicyComponent;\n this.policyComponent.policy = this.policy;\n this.policyComponent.policyResponse = this.policyResponse;\n\n this.cdr.detectChanges();\n }\n\n async load() {\n try {\n this.policyResponse = await this.apiService.getPolicy(this.organizationId, this.policy.type);\n } catch (e) {\n if (e.statusCode === 404) {\n this.policyResponse = new PolicyResponse({ Enabled: false });\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n let request: PolicyRequest;\n try {\n request = await this.policyComponent.buildRequest(this.policiesEnabledMap);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, e.message);\n return;\n }\n\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.policy.type, request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"editedPolicyId\", this.i18nService.t(this.policy.name))\n );\n this.onSavedPolicy.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"editPolicy\" | i18n }} - {{ policy.name | i18n }}\n

\n \n ×\n \n
\n\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ policy.description | i18n }}

\n \n
\n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { OrganizationUserResetPasswordRequest } from \"jslib-common/models/request/organizationUserResetPasswordRequest\";\n\n@Component({\n selector: \"app-reset-password\",\n templateUrl: \"reset-password.component.html\",\n})\nexport class ResetPasswordComponent implements OnInit {\n @Input() name: string;\n @Input() email: string;\n @Input() id: string;\n @Input() organizationId: string;\n @Output() onPasswordReset = new EventEmitter();\n\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n newPassword: string = null;\n showPassword = false;\n masterPasswordScore: number;\n formPromise: Promise;\n private newPasswordStrengthTimeout: any;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService,\n private cryptoService: CryptoService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n // Get Enforced Policy Options\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n get loggedOutWarningName() {\n return this.name != null ? this.name : this.i18nService.t(\"thisUser\");\n }\n\n async generatePassword() {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.newPassword = await this.passwordGenerationService.generatePassword(options);\n this.updatePasswordStrength();\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"newPassword\").focus();\n }\n\n copy(value: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"password\"))\n );\n }\n\n async submit() {\n // Validation\n if (this.newPassword == null || this.newPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n if (this.newPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return false;\n }\n\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n this.masterPasswordScore,\n this.newPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return;\n }\n\n if (this.masterPasswordScore < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return false;\n }\n }\n\n // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password\n try {\n this.formPromise = this.apiService\n .getOrganizationUserResetPasswordDetails(this.organizationId, this.id)\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordDetailsError\"));\n }\n\n const kdfType = response.kdf;\n const kdfIterations = response.kdfIterations;\n const resetPasswordKey = response.resetPasswordKey;\n const encryptedPrivateKey = response.encryptedPrivateKey;\n\n // Decrypt Organization's encrypted Private Key with org key\n const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId);\n const decPrivateKey = await this.cryptoService.decryptToBytes(\n new EncString(encryptedPrivateKey),\n orgSymKey\n );\n\n // Decrypt User's Reset Password Key to get EncKey\n const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey);\n const userEncKey = new SymmetricCryptoKey(decValue);\n\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(\n this.newPassword,\n this.email.trim().toLowerCase(),\n kdfType,\n kdfIterations\n );\n const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey);\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n // Create request\n const request = new OrganizationUserResetPasswordRequest();\n request.key = newEncKey[1].encryptedString;\n request.newMasterPasswordHash = newPasswordHash;\n\n // Change user's password\n return this.apiService.putOrganizationUserResetPassword(\n this.organizationId,\n this.id,\n request\n );\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"resetPasswordSuccess\")\n );\n this.onPasswordReset.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n updatePasswordStrength() {\n if (this.newPasswordStrengthTimeout != null) {\n clearTimeout(this.newPasswordStrengthTimeout);\n }\n this.newPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.newPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n if (this.name != null && this.name !== \"\") {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(\" \"));\n }\n return userInput;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"resetPassword\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n {{ \"resetPasswordLoggedOutWarning\" | i18n: loggedOutWarningName }}\n \n \n \n
\n
\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { PermissionsApi } from \"jslib-common/models/api/permissionsApi\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { OrganizationUserInviteRequest } from \"jslib-common/models/request/organizationUserInviteRequest\";\nimport { OrganizationUserUpdateRequest } from \"jslib-common/models/request/organizationUserUpdateRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { CollectionDetailsResponse } from \"jslib-common/models/response/collectionResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-user-add-edit\",\n templateUrl: \"user-add-edit.component.html\",\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Input() usesKeyConnector = false;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: \"all\" | \"selected\" = \"selected\";\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n manageAllCollectionsCheckboxes = [\n {\n id: \"createNewCollections\",\n get: () => this.permissions.createNewCollections,\n set: (v: boolean) => (this.permissions.createNewCollections = v),\n },\n {\n id: \"editAnyCollection\",\n get: () => this.permissions.editAnyCollection,\n set: (v: boolean) => (this.permissions.editAnyCollection = v),\n },\n {\n id: \"deleteAnyCollection\",\n get: () => this.permissions.deleteAnyCollection,\n set: (v: boolean) => (this.permissions.deleteAnyCollection = v),\n },\n ];\n\n manageAssignedCollectionsCheckboxes = [\n {\n id: \"editAssignedCollections\",\n get: () => this.permissions.editAssignedCollections,\n set: (v: boolean) => (this.permissions.editAssignedCollections = v),\n },\n {\n id: \"deleteAssignedCollections\",\n get: () => this.permissions.deleteAssignedCollections,\n set: (v: boolean) => (this.permissions.deleteAssignedCollections = v),\n },\n ];\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editUser\");\n try {\n const user = await this.apiService.getOrganizationUser(\n this.organizationId,\n this.organizationUserId\n );\n this.access = user.accessAll ? \"all\" : \"selected\";\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteUser\");\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(\n (r) => new Collection(new CollectionData(r as CollectionDetailsResponse))\n );\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n Object.assign(p, clearPermissions ? new PermissionsApi() : this.permissions);\n return p;\n }\n\n handleDependentPermissions() {\n // Manage Password Reset must have Manage Users enabled\n if (this.permissions.manageResetPassword && !this.permissions.manageUsers) {\n this.permissions.manageUsers = true;\n (document.getElementById(\"manageUsers\") as HTMLInputElement).checked = true;\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"resetPasswordManageUsers\")\n );\n }\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== \"all\") {\n collections = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === \"all\";\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(\n request.permissions ?? new PermissionsApi(),\n request.type !== OrganizationUserType.Custom\n );\n this.formPromise = this.apiService.putOrganizationUser(\n this.organizationId,\n this.organizationUserId,\n request\n );\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === \"all\";\n request.type = this.type;\n request.permissions = this.setRequestPermissions(\n request.permissions ?? new PermissionsApi(),\n request.type !== OrganizationUserType.Custom\n );\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const message = this.usesKeyConnector\n ? \"removeUserConfirmationKeyConnector\"\n : \"removeUserConfirmation\";\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(message),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(\n this.organizationId,\n this.organizationUserId\n );\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.name)\n );\n this.onDeletedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"inviteUserDesc\" | i18n }}

\n
\n \n \n {{ \"inviteMultipleEmailDesc\" | i18n: \"20\" }}\n
\n
\n

\n {{ \"userType\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n

\n {{ \"permissions\" | i18n }}\n

\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

\n
\n {{ \"accessControl\" | i18n }}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n  \n {{ \"name\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n {{ \"readOnly\" | i18n }}\n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-user-confirm\",\n templateUrl: \"user-confirm.component.html\",\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() publicKey: Uint8Array;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n formPromise: Promise;\n\n constructor(\n private cryptoService: CryptoService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n try {\n if (this.publicKey != null) {\n const fingerprint = await this.cryptoService.getFingerprint(\n this.userId,\n this.publicKey.buffer\n );\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.stateService.setAutoConfirmFingerprints(true);\n }\n\n this.onConfirmedUser.emit();\n }\n}\n","
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { OrganizationUserUpdateGroupsRequest } from \"jslib-common/models/request/organizationUserUpdateGroupsRequest\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\n@Component({\n selector: \"app-user-groups\",\n templateUrl: \"user-groups.component.html\",\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map((r) => r);\n groups.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId,\n this.organizationUserId\n );\n if (userGroups != null && this.groups != null) {\n userGroups.forEach((ug) => {\n const group = this.groups.filter((g) => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter((g) => (g as any).checked).map((g) => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(\n this.organizationId,\n this.organizationUserId,\n request\n );\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"editedGroupsForUser\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"groupAccess\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ \"groupAccessUserDesc\" | i18n }}

\n
\n {{ \"noGroupsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ g.name }}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { PermissionsGuard } from \"./guards/permissions.guard\";\nimport { OrganizationLayoutComponent } from \"./layouts/organization-layout.component\";\nimport { CollectionsComponent } from \"./manage/collections.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { GroupsComponent } from \"./manage/groups.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { PoliciesComponent } from \"./manage/policies.component\";\nimport { NavigationPermissionsService } from \"./services/navigation-permissions.service\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { OrganizationBillingComponent } from \"./settings/organization-billing.component\";\nimport { OrganizationSubscriptionComponent } from \"./settings/organization-subscription.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { TwoFactorSetupComponent } from \"./settings/two-factor-setup.component\";\nimport { ExportComponent } from \"./tools/export.component\";\nimport { ExposedPasswordsReportComponent } from \"./tools/exposed-passwords-report.component\";\nimport { ImportComponent } from \"./tools/import.component\";\nimport { InactiveTwoFactorReportComponent } from \"./tools/inactive-two-factor-report.component\";\nimport { ReusedPasswordsReportComponent } from \"./tools/reused-passwords-report.component\";\nimport { ToolsComponent } from \"./tools/tools.component\";\nimport { UnsecuredWebsitesReportComponent } from \"./tools/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"./tools/weak-passwords-report.component\";\n\nconst routes: Routes = [\n {\n path: \":organizationId\",\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuard, PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"admin\"),\n },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"vault\" },\n {\n path: \"vault\",\n loadChildren: async () =>\n (await import(\"../modules/vault/modules/organization-vault/organization-vault.module\"))\n .OrganizationVaultModule,\n },\n {\n path: \"tools\",\n component: ToolsComponent,\n canActivate: [PermissionsGuard],\n data: { permissions: NavigationPermissionsService.getPermissions(\"tools\") },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"import\",\n },\n {\n path: \"import\",\n component: ImportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"importData\",\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: \"export\",\n component: ExportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"exportVault\",\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: \"exposed-passwords-report\",\n component: ExposedPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"exposedPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"inactive-two-factor-report\",\n component: InactiveTwoFactorReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"inactive2faReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"reused-passwords-report\",\n component: ReusedPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"reusedPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"unsecured-websites-report\",\n component: UnsecuredWebsitesReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"unsecuredWebsitesReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"weak-passwords-report\",\n component: WeakPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"weakPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: \"manage\",\n component: ManageComponent,\n canActivate: [PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"manage\"),\n },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"people\",\n },\n {\n path: \"collections\",\n component: CollectionsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"collections\",\n permissions: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n ],\n },\n },\n {\n path: \"events\",\n component: EventsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"eventLogs\",\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: \"groups\",\n component: GroupsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"groups\",\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: \"people\",\n component: PeopleComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"people\",\n permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword],\n },\n },\n {\n path: \"policies\",\n component: PoliciesComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"policies\",\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n canActivate: [PermissionsGuard],\n data: { permissions: NavigationPermissionsService.getPermissions(\"settings\") },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"account\" },\n { path: \"account\", component: AccountComponent, data: { titleId: \"myOrganization\" } },\n {\n path: \"two-factor\",\n component: TwoFactorSetupComponent,\n data: { titleId: \"twoStepLogin\" },\n },\n {\n path: \"billing\",\n component: OrganizationBillingComponent,\n canActivate: [PermissionsGuard],\n data: { titleId: \"billing\", permissions: [Permissions.ManageBilling] },\n },\n {\n path: \"subscription\",\n component: OrganizationSubscriptionComponent,\n data: { titleId: \"subscription\" },\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationsRoutingModule {}\n","import { Directive, Input, OnInit } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nexport abstract class BasePolicy {\n abstract name: string;\n abstract description: string;\n abstract type: PolicyType;\n abstract component: any;\n\n display(organization: Organization) {\n return true;\n }\n}\n\n@Directive()\nexport abstract class BasePolicyComponent implements OnInit {\n @Input() policyResponse: PolicyResponse;\n @Input() policy: BasePolicy;\n\n enabled = new FormControl(false);\n data: FormGroup = null;\n\n ngOnInit(): void {\n this.enabled.setValue(this.policyResponse.enabled);\n\n if (this.policyResponse.data != null) {\n this.loadData();\n }\n }\n\n loadData() {\n this.data.patchValue(this.policyResponse.data ?? {});\n }\n\n buildRequestData() {\n if (this.data != null) {\n return this.data.value;\n }\n\n return null;\n }\n\n buildRequest(policiesEnabledMap: Map) {\n const request = new PolicyRequest();\n request.enabled = this.enabled.value;\n request.type = this.policy.type;\n request.data = this.buildRequestData();\n\n return Promise.resolve(request);\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class DisableSendPolicy extends BasePolicy {\n name = \"disableSend\";\n description = \"disableSendPolicyDesc\";\n type = PolicyType.DisableSend;\n component = DisableSendPolicyComponent;\n}\n\n@Component({\n selector: \"policy-disable-send\",\n templateUrl: \"disable-send.component.html\",\n})\nexport class DisableSendPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"disableSendExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class MasterPasswordPolicy extends BasePolicy {\n name = \"masterPass\";\n description = \"masterPassPolicyDesc\";\n type = PolicyType.MasterPassword;\n component = MasterPasswordPolicyComponent;\n}\n\n@Component({\n selector: \"policy-master-password\",\n templateUrl: \"master-password.component.html\",\n})\nexport class MasterPasswordPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n minComplexity: [null],\n minLength: [null],\n requireUpper: [null],\n requireLower: [null],\n requireNumbers: [null],\n requireSpecial: [null],\n });\n\n passwordScores: { name: string; value: number }[];\n showKeyConnectorInfo = false;\n\n constructor(\n private formBuilder: FormBuilder,\n i18nService: I18nService,\n private organizationService: OrganizationService\n ) {\n super();\n\n this.passwordScores = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: i18nService.t(\"weak\") + \" (0)\", value: 0 },\n { name: i18nService.t(\"weak\") + \" (1)\", value: 1 },\n { name: i18nService.t(\"weak\") + \" (2)\", value: 2 },\n { name: i18nService.t(\"good\") + \" (3)\", value: 3 },\n { name: i18nService.t(\"strong\") + \" (4)\", value: 4 },\n ];\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.organizationService.get(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n","\n {{ \"keyConnectorPolicyRestriction\" | i18n }}\n\n\n
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class PasswordGeneratorPolicy extends BasePolicy {\n name = \"passwordGenerator\";\n description = \"passwordGeneratorPolicyDesc\";\n type = PolicyType.PasswordGenerator;\n component = PasswordGeneratorPolicyComponent;\n}\n\n@Component({\n selector: \"policy-password-generator\",\n templateUrl: \"password-generator.component.html\",\n})\nexport class PasswordGeneratorPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n defaultType: [null],\n minLength: [null],\n useUpper: [null],\n useLower: [null],\n useNumbers: [null],\n useSpecial: [null],\n minNumbers: [null],\n minSpecial: [null],\n minNumberWords: [null],\n capitalize: [null],\n includeNumber: [null],\n });\n\n defaultTypes: { name: string; value: string }[];\n\n constructor(private formBuilder: FormBuilder, i18nService: I18nService) {\n super();\n\n this.defaultTypes = [\n { name: i18nService.t(\"userPreference\"), value: null },\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"passphrase\"), value: \"passphrase\" },\n ];\n }\n}\n","
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n

{{ \"password\" | i18n }}

\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n

{{ \"passphrase\" | i18n }}

\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class PersonalOwnershipPolicy extends BasePolicy {\n name = \"personalOwnership\";\n description = \"personalOwnershipPolicyDesc\";\n type = PolicyType.PersonalOwnership;\n component = PersonalOwnershipPolicyComponent;\n}\n\n@Component({\n selector: \"policy-personal-ownership\",\n templateUrl: \"personal-ownership.component.html\",\n})\nexport class PersonalOwnershipPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"personalOwnershipExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class RequireSsoPolicy extends BasePolicy {\n name = \"requireSso\";\n description = \"requireSsoPolicyDesc\";\n type = PolicyType.RequireSso;\n component = RequireSsoPolicyComponent;\n\n display(organization: Organization) {\n return organization.useSso;\n }\n}\n\n@Component({\n selector: \"policy-require-sso\",\n templateUrl: \"require-sso.component.html\",\n})\nexport class RequireSsoPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t(\"requireSsoPolicyReqError\"));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"requireSsoPolicyReq\" | i18n }}\n\n\n {{ \"requireSsoExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class ResetPasswordPolicy extends BasePolicy {\n name = \"resetPasswordPolicy\";\n description = \"resetPasswordPolicyDescription\";\n type = PolicyType.ResetPassword;\n component = ResetPasswordPolicyComponent;\n\n display(organization: Organization) {\n return organization.useResetPassword;\n }\n}\n\n@Component({\n selector: \"policy-reset-password\",\n templateUrl: \"reset-password.component.html\",\n})\nexport class ResetPasswordPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n autoEnrollEnabled: false,\n });\n\n defaultTypes: { name: string; value: string }[];\n showKeyConnectorInfo = false;\n\n constructor(private formBuilder: FormBuilder, private organizationService: OrganizationService) {\n super();\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.organizationService.get(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n","\n {{ \"keyConnectorPolicyRestriction\" | i18n }}\n\n\n\n {{ \"resetPasswordPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n

{{ \"resetPasswordPolicyAutoEnroll\" | i18n }}

\n

{{ \"resetPasswordPolicyAutoEnrollDescription\" | i18n }}

\n \n {{ \"resetPasswordPolicyAutoEnrollWarning\" | i18n }}\n \n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class SendOptionsPolicy extends BasePolicy {\n name = \"sendOptions\";\n description = \"sendOptionsPolicyDesc\";\n type = PolicyType.SendOptions;\n component = SendOptionsPolicyComponent;\n}\n\n@Component({\n selector: \"policy-send-options\",\n templateUrl: \"send-options.component.html\",\n})\nexport class SendOptionsPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n disableHideEmail: false,\n });\n\n constructor(private formBuilder: FormBuilder) {\n super();\n }\n}\n","\n {{ \"sendOptionsExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n

{{ \"options\" | i18n }}

\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class SingleOrgPolicy extends BasePolicy {\n name = \"singleOrg\";\n description = \"singleOrgDesc\";\n type = PolicyType.SingleOrg;\n component = SingleOrgPolicyComponent;\n}\n\n@Component({\n selector: \"policy-single-org\",\n templateUrl: \"single-org.component.html\",\n})\nexport class SingleOrgPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n if (!this.enabled.value) {\n if (policiesEnabledMap.get(PolicyType.RequireSso) ?? false) {\n throw new Error(\n this.i18nService.t(\"disableRequiredError\", this.i18nService.t(\"requireSso\"))\n );\n }\n\n if (policiesEnabledMap.get(PolicyType.MaximumVaultTimeout) ?? false) {\n throw new Error(\n this.i18nService.t(\"disableRequiredError\", this.i18nService.t(\"maximumVaultTimeoutLabel\"))\n );\n }\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"singleOrgPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class TwoFactorAuthenticationPolicy extends BasePolicy {\n name = \"twoStepLogin\";\n description = \"twoStepLoginPolicyDesc\";\n type = PolicyType.TwoFactorAuthentication;\n component = TwoFactorAuthenticationPolicyComponent;\n}\n\n@Component({\n selector: \"policy-two-factor-authentication\",\n templateUrl: \"two-factor-authentication.component.html\",\n})\nexport class TwoFactorAuthenticationPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"twoStepLoginPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Permissions } from \"jslib-common/enums/permissions\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nconst permissions = {\n manage: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n tools: [Permissions.AccessImportExport, Permissions.AccessReports],\n settings: [Permissions.ManageOrganization],\n};\n\nexport class NavigationPermissionsService {\n static getPermissions(route: keyof typeof permissions | \"admin\") {\n if (route === \"admin\") {\n return Object.values(permissions).reduce((previous, current) => previous.concat(current), []);\n }\n\n return permissions[route];\n }\n\n static canAccessAdmin(organization: Organization): boolean {\n return (\n this.canAccessTools(organization) ||\n this.canAccessSettings(organization) ||\n this.canAccessManage(organization)\n );\n }\n\n static canAccessTools(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"tools\"));\n }\n\n static canAccessSettings(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"settings\"));\n }\n\n static canAccessManage(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"manage\"));\n }\n}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUpdateRequest } from \"jslib-common/models/request/organizationUpdateRequest\";\nimport { OrganizationResponse } from \"jslib-common/models/response/organizationResponse\";\n\nimport { ApiKeyComponent } from \"../../settings/api-key.component\";\nimport { PurgeVaultComponent } from \"../../settings/purge-vault.component\";\nimport { TaxInfoComponent } from \"../../settings/tax-info.component\";\n\nimport { DeleteOrganizationComponent } from \"./delete-organization.component\";\n\n@Component({\n selector: \"app-org-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n @ViewChild(\"deleteOrganizationTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n @ViewChild(\"purgeOrganizationTemplate\", { read: ViewContainerRef, static: true })\n purgeModalRef: ViewContainerRef;\n @ViewChild(\"apiKeyTemplate\", { read: ViewContainerRef, static: true })\n apiKeyModalRef: ViewContainerRef;\n @ViewChild(\"rotateApiKeyTemplate\", { read: ViewContainerRef, static: true })\n rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n canManageBilling = true;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n\n constructor(\n private modalService: ModalService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private router: Router,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.canManageBilling = (\n await this.organizationService.get(this.organizationId)\n ).canManageBilling;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch (e) {\n this.logService.error(e);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n\n // Backfill pub/priv key if necessary\n if (!this.org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationUpdated\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"taxInfoUpdated\"));\n }\n\n async deleteOrganization() {\n await this.modalService.openViewRef(\n DeleteOrganizationComponent,\n this.deleteModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.onSuccess.subscribe(() => {\n this.router.navigate([\"/\"]);\n });\n }\n );\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef, (comp) => {\n comp.organizationId = this.organizationId;\n });\n }\n\n async viewApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.apiKeyModalRef, (comp) => {\n comp.keyType = \"organization\";\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n comp.scope = \"api.organization\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"apiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyDesc\";\n });\n }\n\n async rotateApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateApiKeyModalRef, (comp) => {\n comp.keyType = \"organization\";\n comp.isRotation = true;\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n comp.scope = \"api.organization\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"apiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyRotateDesc\";\n });\n }\n}\n","
\n

{{ \"myOrganization\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n\n\n
\n

{{ \"apiKey\" | i18n }}

\n
\n

\n {{ \"apiKeyDesc\" | i18n }}\n \n {{ \"learnMore\" | i18n }}\n \n

\n \n \n\n
\n

{{ \"taxInformation\" | i18n }}

\n
\n

{{ \"taxInformationDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n\n \n \n\n
\n

{{ \"dangerZone\" | i18n }}

\n
\n
\n
\n

{{ \"dangerZoneDesc\" | i18n }}

\n \n \n
\n
\n\n\n\n\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationSubscriptionUpdateRequest } from \"jslib-common/models/request/organizationSubscriptionUpdateRequest\";\n\n@Component({\n selector: \"app-adjust-subscription\",\n templateUrl: \"adjust-subscription.component.html\",\n})\nexport class AdjustSubscription {\n @Input() organizationId: string;\n @Input() maxAutoscaleSeats: number;\n @Input() currentSeatCount: number;\n @Input() seatPrice = 0;\n @Input() interval = \"year\";\n @Output() onAdjusted = new EventEmitter();\n\n formPromise: Promise;\n limitSubscription: boolean;\n newSeatCount: number;\n newMaxSeats: number;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n ngOnInit() {\n this.limitSubscription = this.maxAutoscaleSeats != null;\n this.newSeatCount = this.currentSeatCount;\n this.newMaxSeats = this.maxAutoscaleSeats;\n }\n\n async submit() {\n try {\n const seatAdjustment = this.newSeatCount - this.currentSeatCount;\n const request = new OrganizationSubscriptionUpdateRequest(seatAdjustment, this.newMaxSeats);\n this.formPromise = this.apiService.postOrganizationUpdateSubscription(\n this.organizationId,\n request\n );\n\n await this.formPromise;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"subscriptionUpdated\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n this.onAdjusted.emit();\n }\n\n limitSubscriptionChanged() {\n if (!this.limitSubscription) {\n this.newMaxSeats = null;\n }\n }\n\n get adjustedSeatTotal(): number {\n return this.newSeatCount * this.seatPrice;\n }\n\n get maxSeatTotal(): number {\n return this.newMaxSeats * this.seatPrice;\n }\n}\n","
\n
\n
\n
\n \n \n \n {{ \"total\" | i18n }}: {{ newSeatCount || 0 }} ×\n {{ seatPrice | currency: \"$\" }} = {{ adjustedSeatTotal | currency: \"$\" }} /\n {{ interval | i18n }}\n \n
\n
\n
\n
\n
\n \n \n
\n {{ \"limitSubscriptionDesc\" | i18n }}\n
\n
\n
\n
\n \n \n \n {{ \"maxSeatCost\" | i18n }}: {{ newMaxSeats || 0 }} ×\n {{ seatPrice | currency: \"$\" }} = {{ maxSeatTotal | currency: \"$\" }} /\n {{ interval | i18n }}\n \n
\n
\n \n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { OrganizationApiKeyType } from \"jslib-common/enums/organizationApiKeyType\";\nimport { OrganizationApiKeyRequest } from \"jslib-common/models/request/organizationApiKeyRequest\";\nimport { ApiKeyResponse } from \"jslib-common/models/response/apiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-billing-sync-api-key\",\n templateUrl: \"billing-sync-api-key.component.html\",\n})\nexport class BillingSyncApiKeyComponent {\n organizationId: string;\n hasBillingToken: boolean;\n\n showRotateScreen: boolean;\n masterPassword: Verification;\n formPromise: Promise;\n clientSecret?: string;\n keyRevisionDate?: Date;\n lastSyncDate?: Date = null;\n\n constructor(\n private userVerificationService: UserVerificationService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n copy() {\n this.platformUtilsService.copyToClipboard(this.clientSecret);\n }\n\n async submit() {\n if (this.showRotateScreen) {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword, OrganizationApiKeyRequest)\n .then((request) => {\n request.type = OrganizationApiKeyType.BillingSync;\n return this.apiService.postOrganizationRotateApiKey(this.organizationId, request);\n });\n const response = await this.formPromise;\n await this.load(response);\n this.showRotateScreen = false;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"billingSyncApiKeyRotated\")\n );\n } else {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword, OrganizationApiKeyRequest)\n .then((request) => {\n request.type = OrganizationApiKeyType.BillingSync;\n return this.apiService.postOrganizationApiKey(this.organizationId, request);\n });\n const response = await this.formPromise;\n await this.load(response);\n }\n }\n\n async load(response: ApiKeyResponse) {\n this.clientSecret = response.apiKey;\n this.keyRevisionDate = response.revisionDate;\n this.hasBillingToken = true;\n const syncStatus = await this.apiService.getSponsorshipSyncStatus(this.organizationId);\n this.lastSyncDate = syncStatus.lastSyncDate;\n }\n\n cancelRotate() {\n this.showRotateScreen = false;\n }\n\n rotateToken() {\n this.showRotateScreen = true;\n }\n\n private dayDiff(date1: Date, date2: Date): number {\n const diffTime = Math.abs(date2.getTime() - date1.getTime());\n return Math.round(diffTime / (1000 * 60 * 60 * 24));\n }\n\n get submitButtonText(): string {\n if (this.showRotateScreen) {\n return this.i18nService.t(\"rotateToken\");\n }\n\n return this.i18nService.t(this.hasBillingToken ? \"continue\" : \"generateToken\");\n }\n\n get showLastSyncText(): boolean {\n // If the keyRevisionDate is later than the lastSyncDate we need to show\n // a warning that they need to put the billing sync key in their self hosted install\n return this.lastSyncDate && this.lastSyncDate > this.keyRevisionDate;\n }\n\n get showAwaitingSyncText(): boolean {\n return this.lastSyncDate && this.lastSyncDate <= this.keyRevisionDate;\n }\n\n get daysBetween(): number {\n return this.dayDiff(this.keyRevisionDate, new Date());\n }\n}\n","
\n
\n \n
\n

\n {{ (hasBillingToken ? \"viewBillingSyncToken\" : \"generateBillingSyncToken\") | i18n }}\n

\n \n ×\n \n
\n
\n \n \n \n

{{ \"rotateBillingSyncTokenTitle\" | i18n }}

\n \n {{ \"rotateBillingSyncTokenWarning\" | i18n }}\n \n
\n\n
\n

{{ \"copyPasteBillingSync\" | i18n }}

\n \n
\n \n
\n \n \n \n
\n
\n
\n {{ \"lastSync\" | i18n }}:\n {{ lastSyncDate | date: \"medium\" }}\n
\n
\n \n {{\n (daysBetween === 1 ? \"awaitingSyncSingular\" : \"awaitingSyncPlural\")\n | i18n: daysBetween\n }}\n
\n
\n
\n
\n \n \n \n {{ submitButtonText }}\n \n \n \n {{ \"close\" | i18n }}\n \n \n {{ \"cancel\" | i18n }}\n \n \n {{ \"rotateToken\" | i18n }}\n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\n\n@Component({\n selector: \"app-change-plan\",\n templateUrl: \"change-plan.component.html\",\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private logService: LogService) {}\n\n async submit() {\n try {\n this.onChanged.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{ \"changeBillingPlan\" | i18n }}

\n

{{ \"changeBillingPlanUpgrade\" | i18n }}

\n \n \n
\n
\n","import { Component, EventEmitter, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { Verification } from \"jslib-common/types/verification\";\n\nclass CountBasedLocalizationKey {\n singular: string;\n plural: string;\n\n getKey(count: number) {\n return count == 1 ? this.singular : this.plural;\n }\n\n constructor(singular: string, plural: string) {\n this.singular = singular;\n this.plural = plural;\n }\n}\n\nclass OrganizationContentSummaryItem {\n count: number;\n get localizationKey(): string {\n return this.localizationKeyOptions.getKey(this.count);\n }\n private localizationKeyOptions: CountBasedLocalizationKey;\n constructor(count: number, localizationKeyOptions: CountBasedLocalizationKey) {\n this.count = count;\n this.localizationKeyOptions = localizationKeyOptions;\n }\n}\n\nclass OrganizationContentSummary {\n totalItemCount = 0;\n itemCountByType: OrganizationContentSummaryItem[] = [];\n}\n\n@Component({\n selector: \"app-delete-organization\",\n templateUrl: \"delete-organization.component.html\",\n})\nexport class DeleteOrganizationComponent implements OnInit {\n organizationId: string;\n loaded: boolean;\n deleteOrganizationRequestType: \"InvalidFamiliesForEnterprise\" | \"RegularDelete\" = \"RegularDelete\";\n organizationName: string;\n organizationContentSummary: OrganizationContentSummary = new OrganizationContentSummary();\n @Output() onSuccess: EventEmitter = new EventEmitter();\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private logService: LogService,\n private cipherService: CipherService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit(): Promise {\n await this.load();\n }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.deleteOrganization(this.organizationId, request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"organizationDeleted\"),\n this.i18nService.t(\"organizationDeletedDesc\")\n );\n this.onSuccess.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async load() {\n this.organizationName = (await this.organizationService.get(this.organizationId)).name;\n this.organizationContentSummary = await this.buildOrganizationContentSummary();\n this.loaded = true;\n }\n\n private async buildOrganizationContentSummary(): Promise {\n const organizationContentSummary = new OrganizationContentSummary();\n const organizationItems = (\n await this.cipherService.getAllFromApiForOrganization(this.organizationId)\n ).filter((item) => item.deletedDate == null);\n\n if (organizationItems.length < 1) {\n return organizationContentSummary;\n }\n\n organizationContentSummary.totalItemCount = organizationItems.length;\n for (const cipherType of Utils.iterateEnum(CipherType)) {\n const count = this.getOrganizationItemCountByType(organizationItems, cipherType);\n if (count > 0) {\n organizationContentSummary.itemCountByType.push(\n new OrganizationContentSummaryItem(\n count,\n this.getOrganizationItemLocalizationKeysByType(CipherType[cipherType])\n )\n );\n }\n }\n\n return organizationContentSummary;\n }\n\n private getOrganizationItemCountByType(items: CipherView[], type: CipherType) {\n return items.filter((item) => item.type == type).length;\n }\n\n private getOrganizationItemLocalizationKeysByType(type: string): CountBasedLocalizationKey {\n return new CountBasedLocalizationKey(`type${type}`, `type${type}Plural`);\n }\n}\n","
\n
\n \n
\n

{{ \"deleteOrganization\" | i18n }}

\n \n ×\n \n
\n
\n {{\n \"deletingOrganizationIsPermanentWarning\" | i18n: organizationName\n }}\n

\n \n {{ \"orgCreatedSponsorshipInvalid\" | i18n }}\n \n \n 0\">\n {{ \"deletingOrganizationContentWarning\" | i18n: organizationName }}\n

    \n
  • \n {{ type.count }} {{ type.localizationKey | i18n }}\n
  • \n
\n {{ \"deletingOrganizationActiveUserAccountsWarning\" | i18n }}\n \n \n

\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-download-license\",\n templateUrl: \"download-license.component.html\",\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n if (this.installationId == null || this.installationId === \"\") {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(\n this.organizationId,\n this.installationId\n );\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(\n window,\n licenseString,\n null,\n \"bitwarden_organization_license.json\"\n );\n this.onDownloaded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{ \"downloadLicense\" | i18n }}

\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\n// Component is used so that the SVG can embed CSS color variables\n@Component({\n selector: \"app-image-org-subscription-hidden\",\n templateUrl: \"image-subscription-hidden.component.svg\",\n})\nexport class ImageSubscriptionHiddenComponent {}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { TransactionType } from \"jslib-common/enums/transactionType\";\nimport { VerifyBankRequest } from \"jslib-common/models/request/verifyBankRequest\";\nimport { BillingResponse } from \"jslib-common/models/response/billingResponse\";\n\n@Component({\n selector: \"app-org-billing\",\n templateUrl: \"./organization-billing.component.html\",\n})\nexport class OrganizationBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n // TODO - Make sure to properly split out the billing/invoice and payment method/account during org admin refresh\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(\n this.organizationId,\n request\n );\n await this.verifyBankPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"verifiedBankAccount\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"addCredit\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"changePaymentMethod\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return (\n this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp)\n );\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","
\n

\n {{ \"billing\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ (isCreditBalance ? \"accountCredit\" : \"accountBalance\") | i18n }}

\n

\n {{ creditOrBalance | currency: \"$\" }}\n

\n

{{ \"creditAppliedDesc\" | i18n }}

\n \n {{ \"addCredit\" | i18n }}\n \n \n \n

{{ \"paymentMethod\" | i18n }}

\n

{{ \"noPaymentMethod\" | i18n }}

\n \n \n

{{ \"verifyBankAccountDesc\" | i18n }} {{ \"verifyBankAccountFailureWarning\" | i18n }}

\n \n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n
$0.
\n
\n \n
\n \n \n {{ \"verifyBankAccount\" | i18n }}\n \n \n \n

\n \n {{ \"inAppPurchase\" | i18n }}\n {{ paymentSource.description }}\n

\n
\n \n {{ (paymentSource ? \"changePaymentMethod\" : \"addPaymentMethod\") | i18n }}\n \n \n \n

{{ \"invoices\" | i18n }}

\n

{{ \"noInvoices\" | i18n }}

\n \n \n \n \n \n \n \n \n \n
{{ i.date | date: \"mediumDate\" }}\n \n \n \n {{ \"invoiceNumber\" | i18n: i.number }}\n {{ i.amount | currency: \"$\" }}\n \n \n {{ \"paid\" | i18n }}\n \n \n \n {{ \"unpaid\" | i18n }}\n \n
\n

{{ \"transactions\" | i18n }}

\n

{{ \"noTransactions\" | i18n }}

\n \n \n \n \n \n \n \n {{ t.amount | currency: \"$\" }}\n \n \n \n
{{ t.createdDate | date: \"mediumDate\" }}\n \n {{ \"chargeNoun\" | i18n }}\n \n {{ \"refundNoun\" | i18n }}\n \n \n {{ t.details }}\n
\n * {{ \"chargesStatement\" | i18n: \"BITWARDEN\" }}\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationApiKeyType } from \"jslib-common/enums/organizationApiKeyType\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { BillingSyncConfigApi } from \"jslib-common/models/api/billingSyncConfigApi\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationConnectionResponse } from \"jslib-common/models/response/organizationConnectionResponse\";\nimport { OrganizationSubscriptionResponse } from \"jslib-common/models/response/organizationSubscriptionResponse\";\n\nimport { BillingSyncKeyComponent } from \"src/app/settings/billing-sync-key.component\";\n\nimport { BillingSyncApiKeyComponent } from \"./billing-sync-api-key.component\";\n\n@Component({\n selector: \"app-org-subscription\",\n templateUrl: \"organization-subscription.component.html\",\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n @ViewChild(\"setupBillingSyncTemplate\", { read: ViewContainerRef, static: true })\n setupBillingSyncModalRef: ViewContainerRef;\n\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n showAdjustSeatAutoscale = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showBillingSyncKey = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n hasBillingSyncToken: boolean;\n\n userOrg: Organization;\n existingBillingSyncConnection: OrganizationConnectionResponse;\n\n removeSponsorshipPromise: Promise;\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n @ViewChild(\"rotateBillingSyncKeyTemplate\", { read: ViewContainerRef, static: true })\n billingSyncKeyViewContainerRef: ViewContainerRef;\n billingSyncKeyRef: [ModalRef, BillingSyncKeyComponent];\n\n constructor(\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private messagingService: MessagingService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private logService: LogService,\n private modalService: ModalService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n this.userOrg = await this.organizationService.get(this.organizationId);\n if (this.userOrg.canManageBilling) {\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n }\n const apiKeyResponse = await this.apiService.getOrganizationApiKeyInformation(\n this.organizationId\n );\n this.hasBillingSyncToken = apiKeyResponse.data.some(\n (i) => i.keyType === OrganizationApiKeyType.BillingSync\n );\n\n if (this.selfHosted) {\n this.showBillingSyncKey = await this.apiService.getCloudCommunicationsEnabled();\n }\n\n if (this.showBillingSyncKey) {\n this.existingBillingSyncConnection = await this.apiService.getOrganizationConnection(\n this.organizationId,\n OrganizationConnectionType.CloudBillingSync,\n BillingSyncConfigApi\n );\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"reinstateConfirmation\"),\n this.i18nService.t(\"reinstateSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\")\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reinstated\"));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"cancelConfirmation\"),\n this.i18nService.t(\"cancelSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"canceledSubscription\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async changePlan() {\n this.showChangePlan = !this.showChangePlan;\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n async manageBillingSync() {\n const [ref] = await this.modalService.openViewRef(\n BillingSyncApiKeyComponent,\n this.setupBillingSyncModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.hasBillingToken = this.hasBillingSyncToken;\n }\n );\n ref.onClosed.subscribe(async () => {\n await this.load();\n });\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send(\"updatedOrgLicense\");\n }\n }\n\n subscriptionAdjusted() {\n this.load();\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n async removeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeSponsorshipConfirmation\"),\n this.i18nService.t(\"removeSponsorship\"),\n this.i18nService.t(\"remove\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n\n if (!isConfirmed) {\n return;\n }\n\n try {\n this.removeSponsorshipPromise = this.apiService.deleteRemoveSponsorship(this.organizationId);\n await this.removeSponsorshipPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removeSponsorshipSuccess\")\n );\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async manageBillingSyncSelfHosted() {\n this.billingSyncKeyRef = await this.modalService.openViewRef(\n BillingSyncKeyComponent,\n this.billingSyncKeyViewContainerRef,\n (comp) => {\n comp.entityId = this.organizationId;\n comp.existingConnectionId = this.existingBillingSyncConnection?.id;\n comp.billingSyncKey = this.existingBillingSyncConnection?.config?.billingSyncKey;\n comp.setParentConnection = (\n connection: OrganizationConnectionResponse\n ) => {\n this.existingBillingSyncConnection = connection;\n this.billingSyncKeyRef[0].close();\n };\n }\n );\n }\n\n get isExpired() {\n return (\n this.sub != null && this.sub.expiration != null && new Date(this.sub.expiration) < new Date()\n );\n }\n\n get subscriptionMarkedForCancel() {\n return (\n this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate\n );\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb\n ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2)\n : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? \"month\" : \"year\";\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get seats() {\n return this.sub.seats;\n }\n\n get maxAutoscaleSeats() {\n return this.sub.maxAutoscaleSeats;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get isSponsoredSubscription(): boolean {\n return this.sub.subscription?.items.some((i) => i.sponsoredSubscriptionItem);\n }\n\n get canDownloadLicense() {\n return (\n (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled)\n );\n }\n\n get canManageBillingSync() {\n return (\n !this.selfHosted &&\n (this.sub.planType === PlanType.EnterpriseAnnually ||\n this.sub.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.EnterpriseAnnually2019 ||\n this.sub.planType === PlanType.EnterpriseMonthly2019)\n );\n }\n\n get subscriptionDesc() {\n if (this.sub.planType === PlanType.Free) {\n return this.i18nService.t(\"subscriptionFreePlan\", this.sub.seats.toString());\n } else if (\n this.sub.planType === PlanType.FamiliesAnnually ||\n this.sub.planType === PlanType.FamiliesAnnually2019\n ) {\n if (this.isSponsoredSubscription) {\n return this.i18nService.t(\"subscriptionSponsoredFamiliesPlan\", this.sub.seats.toString());\n } else {\n return this.i18nService.t(\"subscriptionFamiliesPlan\", this.sub.seats.toString());\n }\n } else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {\n return this.i18nService.t(\"subscriptionMaxReached\", this.sub.seats.toString());\n } else if (this.sub.maxAutoscaleSeats == null) {\n return this.i18nService.t(\"subscriptionUserSeatsUnlimitedAutoscale\");\n } else {\n return this.i18nService.t(\n \"subscriptionUserSeatsLimitedAutoscale\",\n this.sub.maxAutoscaleSeats.toString()\n );\n }\n }\n\n get showChangePlanButton() {\n return this.subscription == null && this.sub.planType === PlanType.Free && !this.showChangePlan;\n }\n\n get billingSyncSetUp() {\n return this.existingBillingSyncConnection?.id != null;\n }\n}\n","
\n

\n {{ \"subscription\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n\n
\n \n

{{ \"billingManagedByProvider\" | i18n: this.userOrg.providerName }}

\n

{{ \"billingContactProviderForAssistance\" | i18n }}

\n
\n
\n\n\n \n {{ \"subscriptionCanceled\" | i18n }}\n \n

{{ \"subscriptionPendingCanceled\" | i18n }}

\n \n \n {{ \"reinstateSubscription\" | i18n }}\n \n \n \n
\n
\n
\n
{{ \"billingPlan\" | i18n }}
\n
{{ sub.plan.name }}
\n \n
{{ \"status\" | i18n }}
\n
\n {{\n isSponsoredSubscription ? \"sponsored\" : subscription.status || \"-\"\n }}\n {{\n \"pendingCancellation\" | i18n\n }}\n
\n
{{ \"nextCharge\" | i18n }}
\n
\n {{\n nextInvoice\n ? (nextInvoice.date | date: \"mediumDate\") +\n \", \" +\n (nextInvoice.amount | currency: \"$\")\n : \"-\"\n }}\n
\n
\n
\n
\n
\n {{ \"details\" | i18n }}\n \n \n \n \n \n \n \n
\n {{ i.name }} {{ i.quantity > 1 ? \"×\" + i.quantity : \"\" }} @\n {{ i.amount | currency: \"$\" }}\n {{ i.quantity * i.amount | currency: \"$\" }} /{{ i.interval | i18n }}
\n
\n \n
\n
\n
{{ \"provider\" | i18n }}
\n
{{ \"yourProviderIs\" | i18n: userOrg.providerName }}
\n
\n
\n
\n
\n \n \n {{ \"changeBillingPlan\" | i18n }}\n \n \n \n

{{ \"manageSubscription\" | i18n }}

\n

{{ subscriptionDesc }}

\n \n
\n \n \n
\n
\n \n \n {{ \"removeSponsorship\" | i18n }}\n \n

{{ \"storage\" | i18n }}

\n

{{ \"subscriptionStorage\" | i18n: sub.maxStorageGb || 0:sub.storageName || \"0 MB\" }}

\n
\n \n {{ storagePercentage / 100 | percent }}\n
\n \n \n
\n
\n \n \n {{ \"removeStorage\" | i18n }}\n \n
\n \n
\n
\n \n

{{ \"selfHostingTitle\" | i18n }}

\n

\n {{ \"selfHostingEnterpriseOrganizationSectionCopy\" | i18n }}\n

\n
\n \n {{ \"downloadLicense\" | i18n }}\n \n \n {{ (hasBillingSyncToken ? \"manageBillingSync\" : \"setUpBillingSync\") | i18n }}\n \n
\n
\n \n
\n

{{ \"additionalOptions\" | i18n }}

\n

\n {{ \"additionalOptionsDesc\" | i18n }}\n

\n
\n \n \n {{ \"cancelSubscription\" | i18n }}\n \n
\n
\n \n
\n
{{ \"billingPlan\" | i18n }}
\n
{{ sub.plan.name }}
\n
{{ \"expiration\" | i18n }}
\n
\n {{ sub.expiration | date: \"mediumDate\" }}\n \n \n {{ \"licenseIsExpired\" | i18n }}\n \n
\n
{{ \"neverExpires\" | i18n }}
\n
\n
\n \n \n {{ \"manageSubscription\" | i18n }}\n \n
\n
\n
\n \n ×\n \n

{{ \"updateLicense\" | i18n }}

\n \n
\n
\n
\n

\n {{ \"billingSync\" | i18n }}\n

\n

\n {{ \"billingSyncDesc\" | i18n }}\n

\n \n {{ \"manageBillingSync\" | i18n }}\n \n \n {{ \"lastSync\" | i18n }}:\n \n {{ userOrg.familySponsorshipLastSyncDate | date: \"medium\" }}\n \n \n {{ \"never\" | i18n | lowercase }}\n \n \n
\n
\n\n\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-org-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent {\n access2fa = false;\n showBilling: boolean;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n const organization = await this.organizationService.get(params.organizationId);\n this.showBilling = !this.platformUtilsService.isSelfHost() && organization.canManageBilling;\n this.access2fa = organization.use2fa;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"settings\" | i18n }}
\n
\n \n {{ \"myOrganization\" | i18n }}\n \n \n {{ \"subscription\" | i18n }}\n \n \n {{ \"billing\" | i18n }}\n \n \n {{ \"twoStepLogin\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nimport { TwoFactorDuoComponent } from \"../../settings/two-factor-duo.component\";\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from \"../../settings/two-factor-setup.component\";\n\n@Component({\n selector: \"app-two-factor-setup\",\n templateUrl: \"../../settings/two-factor-setup.component.html\",\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(\n apiService: ApiService,\n modalService: ModalService,\n messagingService: MessagingService,\n policyService: PolicyService,\n private route: ActivatedRoute,\n stateService: StateService\n ) {\n super(apiService, modalService, messagingService, policyService, stateService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo: {\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n }\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","
\n

{{ \"twoStepLogin\" | i18n }}

\n
\n

{{ \"twoStepLoginDesc\" | i18n }}

\n

{{ \"twoStepLoginOrganizationDesc\" | i18n }}

\n\n

{{ \"twoStepLoginRecoveryWarning\" | i18n }}

\n \n
\n

\n {{ \"providers\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n\n {{ \"twoStepLoginPolicyUserWarning\" | i18n }}\n\n
    \n
  • \n
    \n \n
    \n
    \n

    \n {{ p.name }}\n \n \n {{ \"enabled\" | i18n }}\n \n \n

    \n {{ p.description }}\n
    \n
    \n \n {{ \"manage\" | i18n }}\n \n
    \n
  • \n
\n\n\n\n\n\n\n\n","import { Component } from \"@angular/core\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-family-sponsorship\",\n templateUrl: \"accept-family-sponsorship.component.html\",\n})\nexport class AcceptFamilySponsorshipComponent extends BaseAcceptComponent {\n failedShortMessage = \"inviteAcceptFailedShort\";\n failedMessage = \"inviteAcceptFailed\";\n\n requiredParameters = [\"email\", \"token\"];\n\n async authedHandler(qParams: any) {\n this.router.navigate([\"/setup/families-for-enterprise\"], { queryParams: qParams });\n }\n\n async unauthedHandler(qParams: any) {\n if (!qParams.register) {\n this.router.navigate([\"/login\"], { queryParams: { email: qParams.email } });\n } else {\n this.router.navigate([\"/register\"], { queryParams: { email: qParams.email } });\n }\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PlanSponsorshipType } from \"jslib-common/enums/planSponsorshipType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationSponsorshipRedeemRequest } from \"jslib-common/models/request/organization/organizationSponsorshipRedeemRequest\";\n\nimport { DeleteOrganizationComponent } from \"src/app/organizations/settings/delete-organization.component\";\nimport { OrganizationPlansComponent } from \"src/app/settings/organization-plans.component\";\n\n@Component({\n selector: \"families-for-enterprise-setup\",\n templateUrl: \"families-for-enterprise-setup.component.html\",\n})\nexport class FamiliesForEnterpriseSetupComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: false })\n set organizationPlansComponent(value: OrganizationPlansComponent) {\n if (!value) {\n return;\n }\n\n value.plan = PlanType.FamiliesAnnually;\n value.product = ProductType.Families;\n value.acceptingSponsorship = true;\n value.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this));\n }\n\n @ViewChild(\"deleteOrganizationTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n\n loading = true;\n badToken = false;\n formPromise: Promise;\n\n token: string;\n existingFamilyOrganizations: Organization[];\n\n showNewOrganization = false;\n _organizationPlansComponent: OrganizationPlansComponent;\n _selectedFamilyOrganizationId = \"\";\n\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private syncService: SyncService,\n private validationService: ValidationService,\n private organizationService: OrganizationService,\n private modalService: ModalService\n ) {}\n\n async ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const error = qParams.token == null;\n if (error) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"sponsoredFamiliesAcceptFailed\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/\"]);\n return;\n }\n\n this.token = qParams.token;\n\n await this.syncService.fullSync(true);\n this.badToken = !(await this.apiService.postPreValidateSponsorshipToken(this.token));\n this.loading = false;\n\n this.existingFamilyOrganizations = (await this.organizationService.getAll()).filter(\n (o) => o.planProductType === ProductType.Families\n );\n\n if (this.existingFamilyOrganizations.length === 0) {\n this.selectedFamilyOrganizationId = \"createNew\";\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit(this._selectedFamilyOrganizationId);\n await this.formPromise;\n this.formPromise = null;\n }\n\n get selectedFamilyOrganizationId() {\n return this._selectedFamilyOrganizationId;\n }\n\n set selectedFamilyOrganizationId(value: string) {\n this._selectedFamilyOrganizationId = value;\n this.showNewOrganization = value === \"createNew\";\n }\n\n private async doSubmit(organizationId: string) {\n try {\n const request = new OrganizationSponsorshipRedeemRequest();\n request.planSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise;\n request.sponsoredOrganizationId = organizationId;\n\n await this.apiService.postRedeemSponsorship(this.token, request);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"sponsoredFamiliesOfferRedeemed\")\n );\n await this.syncService.fullSync(true);\n\n this.router.navigate([\"/\"]);\n } catch (e) {\n if (this.showNewOrganization) {\n await this.modalService.openViewRef(\n DeleteOrganizationComponent,\n this.deleteModalRef,\n (comp) => {\n comp.organizationId = organizationId;\n comp.deleteOrganizationRequestType = \"InvalidFamiliesForEnterprise\";\n comp.onSuccess.subscribe(() => {\n this.router.navigate([\"/\"]);\n });\n }\n );\n }\n this.validationService.showError(this.i18nService.t(\"sponsorshipTokenHasExpired\"));\n }\n }\n\n private async onOrganizationCreateSuccess(value: any) {\n // Use newly created organization id\n await this.doSubmit(value.organizationId);\n }\n}\n","
\n
\n

{{ \"sponsoredFamiliesOffer\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n {{ \"badToken\" | i18n }}\n
\n \n

\n {{ \"acceptBitwardenFamiliesHelp\" | i18n }}\n

\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n \n
\n\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\nimport { ExportComponent as BaseExportComponent } from \"../../tools/export.component\";\n\n@Component({\n selector: \"app-org-export\",\n templateUrl: \"../../tools/export.component.html\",\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(\n cryptoService: CryptoService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n exportService: ExportService,\n eventService: EventService,\n private route: ActivatedRoute,\n policyService: PolicyService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n formBuilder: FormBuilder\n ) {\n super(\n cryptoService,\n i18nService,\n platformUtilsService,\n exportService,\n eventService,\n policyService,\n logService,\n userVerificationService,\n formBuilder\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n });\n await super.ngOnInit();\n }\n\n async checkExportDisabled() {\n return;\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName(\"org\");\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","\n
\n

{{ \"exportVault\" | i18n }}

\n
\n\n \n {{ \"personalVaultExportPolicyInEffect\" | i18n }}\n \n \n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"exportVault\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent } from \"../../reports/exposed-passwords-report.component\";\n\n@Component({\n selector: \"app-org-exposed-passwords-report\",\n templateUrl: \"../../reports/exposed-passwords-report.component.html\",\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n auditService: AuditService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private organizationService: OrganizationService,\n private route: ActivatedRoute,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n auditService,\n modalService,\n messagingService,\n stateService,\n passwordRepromptService\n );\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await this.checkAccess();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

{{ \"exposedPasswordsReport\" | i18n }}

\n
\n

{{ \"exposedPasswordsReportDesc\" | i18n }}

\n\n \n {{ \"checkExposedPasswords\" | i18n }}\n\n
\n \n {{ \"noExposedPasswords\" | i18n }}\n \n \n \n {{ \"exposedPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"exposedXTimes\" | i18n: (exposedPasswordMap.get(c.id) | number) }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\n\nimport { ImportComponent as BaseImportComponent } from \"../../tools/import.component\";\n\n@Component({\n selector: \"app-org-import\",\n templateUrl: \"../../tools/import.component.html\",\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(\n i18nService: I18nService,\n importService: ImportService,\n router: Router,\n private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private organizationService: OrganizationService,\n logService: LogService\n ) {\n super(i18nService, importService, router, platformUtilsService, policyService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.successNavigate = [\"organizations\", this.organizationId, \"vault\"];\n await super.ngOnInit();\n this.importBlockedByPolicy = false;\n });\n const organization = await this.organizationService.get(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"importWarning\", this.organizationName),\n this.i18nService.t(\"warning\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","
\n

{{ \"importData\" | i18n }}

\n
\n\n {{ \"personalOwnershipPolicyInEffectImports\" | i18n }}\n\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/export-your-data/\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-lastpass/\n \n \n Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and\n save the CSV file.\n \n \n In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the\n CSV file.\n \n \n In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export\n Data\", then click \"Export CSV\" for your \"Accounts\".\n \n \n Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\"\n and save the XML file.\n \n \n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to \"Settings\" → \"Export\" button and save the file \"As CSV\".\n \n \n Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the\n \"KeePass XML (2.x)\" option.\n \n \n Using the Universal Password Manager desktop application, navigate to \"Database\" →\n \"Export\" and save the CSV file.\n \n \n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to \"Settings\". Click the \"Export accounts\" button to save the CSV file.\n \n \n Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and\n click \"Show me my data\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Click on your \"account email\" (top\n right) and select \"Settings\". Go to \"Export\" and find the \"Export to .csv File\" option. Click\n \"Export\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Click on your \"account email\" (top\n right) and select \"Settings\". Go to \"Export\" and find the \"Export to .json File\" option. Click\n \"Export\" to save the JSON file.\n \n \n \n The process is exactly the same as importing from Google Chrome.\n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-chrome/\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-firefox/.\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-safari/.\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-1password/.\n \n \n Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To\n XML\". In the dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\"\n button and save the XML file.\n \n \n Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\".\n Select \"OK\" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n \n \n Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" →\n \"Export\". Select the \".json\" file format option and save the JSON file.\n \n \n Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML\n format...\" and save the XML file.\n \n \n Log in to Dashlane, click on \"My Account\" → \"Settings\" → \"Export file\" and select\n \"Export as a CSV file\". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n \n \n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n \n \n Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\"\n and save the CSV file.\n \n \n Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\"\n → \"Export all\". Select the unencrypted format XML option and save the XML file.\n \n \n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n \"App Settings\". Click the \"Export\" button, enter your password and save the CSV file.\n \n \n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the\n \"download HTML+JSON\" button to save the HTML file.\n \n \n Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) →\n \"Options\" → \"Account & Data\" and click the \"Export\" button. Select all of your data,\n change the \"Format\" to \"CSV file\" and then click the \"Export\" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n \n \n Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the\n passwords you would like to export and click the \"Export\" button at the top of the listing.\n Choose the \"csv (lastpass)\" export format and click the \"Export\" button.\n \n \n Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the\n dialog that pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save\n the CSV file.\n \n \n Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" →\n \"Password Boss JSON - not encrypted\" and save the JSON file.\n \n \n Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\".\n Select \"All Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n zoho_export.csv.\n \n \n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to \"Export\" → \"Export as CSV\" and save the CSV file.\n \n \n Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\"\n section and click \"Backup to CSV\" to save the CSV file.\n \n \n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n GNOME Keyring Import/Export\n python script to your desktop as pw_helper.py. Open terminal and run\n chmod +rx Desktop/pw_helper.py and then\n python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the\n resulting my_passwords.json file here to Bitwarden.\n \n \n Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the\n \"Fields to export\" button and check all of the fields, change the \"Output format\" to \"CSV\",\n and then click the \"Start\" button to save the CSV file.\n \n \n Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the\n \"Download\" button to save the CSV file.\n \n \n Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\"\n window switch to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your\n vault's passphrase and click the \"Export\" button to save the JSON file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export\n data\". Select the \"Export\" button for the \"Export to CSV file\" option to save the CSV file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export\n data\". Select the \"Export\" button for the \"Export to JSON file\" option to save the JSON file.\n \n \n Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export\n Passwords\". Select the \"Export\" button, enter your master password, and save the FSK file.\n \n \n Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" →\n \"Import/Export\". Locate the \"Export to text file\" section and select the \"Export\" button to\n save the TXT file.\n \n \n Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" →\n \"Export\". Enter your master password and select the \"Export Anyway\" button to save the CSV\n file.\n \n \n Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" →\n \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT\n file.\n \n \n Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer's downloads folder.\n \n \n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n \n \n Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and\n select \"CSV File\" to save the CSV file.\n \n \n Open the BlackBerry Password Keeper application, then navigate to \"Settings\" →\n \"Import/Export\". Select \"Export Passwords\" and follow the instructions on screen to save the\n unencrypted CSV file.\n \n \n Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon\n and select \"Export\" to save the CSV file.\n \n \n Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then\n click \"Yes\" on the dialog and save the CSV file.\n \n \n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n \n \n From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the\n CSV file.\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n {{ \"importData\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent } from \"../../reports/inactive-two-factor-report.component\";\n\n@Component({\n selector: \"app-inactive-two-factor-report\",\n templateUrl: \"../../reports/inactive-two-factor-report.component.html\",\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService,\n private organizationService: OrganizationService\n ) {\n super(\n cipherService,\n modalService,\n messagingService,\n stateService,\n logService,\n passwordRepromptService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","
\n

\n {{ \"inactive2faReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"inactive2faReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noInactive2fa\" | i18n }}\n \n \n \n {{ \"inactive2faFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"instructions\" | i18n }}\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent } from \"../../reports/reused-passwords-report.component\";\n\n@Component({\n selector: \"app-reused-passwords-report\",\n templateUrl: \"../../reports/reused-passwords-report.component.html\",\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(cipherService, modalService, messagingService, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

\n {{ \"reusedPasswordsReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"reusedPasswordsReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noReusedPasswords\" | i18n }}\n \n \n \n {{ \"reusedPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"reusedXTimes\" | i18n: passwordUseMap.get(c.login.password) }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-org-tools\",\n templateUrl: \"tools.component.html\",\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private messagingService: MessagingService\n ) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: this.organization.id });\n }\n}\n","
\n \n \n {{ \"loading\" | i18n }}\n \n \n
\n
\n \n
\n
\n {{ \"reports\" | i18n }}\n
\n \n {{ \"upgrade\" | i18n }}\n \n
\n
\n
\n \n {{ \"exposedPasswordsReport\" | i18n }}\n \n \n {{ \"reusedPasswordsReport\" | i18n }}\n \n \n {{ \"weakPasswordsReport\" | i18n }}\n \n \n {{ \"unsecuredWebsitesReport\" | i18n }}\n \n \n {{ \"inactive2faReport\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n \n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent } from \"../../reports/unsecured-websites-report.component\";\n\n@Component({\n selector: \"app-unsecured-websites-report\",\n templateUrl: \"../../reports/unsecured-websites-report.component.html\",\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(cipherService, modalService, messagingService, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","
\n

\n {{ \"unsecuredWebsitesReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"unsecuredWebsitesReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noUnsecuredWebsites\" | i18n }}\n \n \n \n {{ \"unsecuredWebsitesFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent } from \"../../reports/weak-passwords-report.component\";\n\n@Component({\n selector: \"app-weak-passwords-report\",\n templateUrl: \"../../reports/weak-passwords-report.component.html\",\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n passwordGenerationService: PasswordGenerationService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n passwordGenerationService,\n modalService,\n messagingService,\n stateService,\n passwordRepromptService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

\n {{ \"weakPasswordsReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"weakPasswordsReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noWeakPasswords\" | i18n }}\n \n \n \n {{ \"weakPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ passwordStrengthMap.get(c.id)[0] | i18n }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherCreateRequest } from \"jslib-common/models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"jslib-common/models/request/cipherRequest\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"../../vault/add-edit.component\";\n\n@Component({\n selector: \"app-org-vault-add-edit\",\n templateUrl: \"../../vault/add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n totpService: TotpService,\n passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService,\n messagingService: MessagingService,\n eventService: EventService,\n policyService: PolicyService,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService,\n organizationService: OrganizationService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n totpService,\n passwordGenerationService,\n messagingService,\n eventService,\n policyService,\n organizationService,\n logService,\n passwordRepromptService\n );\n }\n\n protected allowOwnershipAssignment() {\n if (\n this.ownershipOptions != null &&\n (this.ownershipOptions.length > 1 || !this.allowPersonal)\n ) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canEditAnyCollection;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canEditAnyCollection) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canEditAnyCollection || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted\n ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"personalOwnershipPolicyInEffect\" | i18n }}\n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n {{ \"upgrade\" | i18n }}\n \n
\n
\n \n {{ totpSec }}\n \n \n \n \n \n \n \n {{\n totpCodeFormatted\n }}\n \n \n \n
\n
\n
\n \n \n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n \n {{ \"newUri\" | i18n }}\n \n \n \n \n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n

{{ \"ownership\" | i18n }}

\n
\n
\n \n \n \n \n
\n
\n
\n \n

{{ \"collections\" | i18n }}

\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n {{ \"dateUpdated\" | i18n }}:\n {{ cipher.revisionDate | date: \"medium\" }}\n
\n
\n {{ \"datePasswordUpdated\" | i18n }}:\n {{ cipher.passwordRevisionDisplayDate | date: \"medium\" }}\n
\n
\n {{ \"passwordHistory\" | i18n }}:\n \n {{ cipher.passwordHistory.length }}\n \n
\n
\n
\n {{ ph.lastUsedDate | date: \"short\" }} -\n {{ ph.password }}\n
\n
\n
\n
\n \n

{{ \"options\" | i18n }}

\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n {{ (cipher?.isDeleted ? \"restore\" : \"save\") | i18n }}\n \n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"../../vault/attachments.component\";\n\n@Component({\n selector: \"app-org-vault-attachments\",\n templateUrl: \"../../vault/attachments.component.html\",\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n stateService,\n platformUtilsService,\n apiService,\n logService\n );\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canEditAnyCollection && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(\n this.cipherDomain,\n file,\n this.organization.canEditAnyCollection\n );\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canEditAnyCollection;\n }\n}\n","
\n
\n \n
\n

\n {{ \"attachments\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n {{ a.fileName }}\n
\n \n \n {{ \"attachmentFixDesc\" | i18n }}\n \n {{ \"fix\" | i18n }}\n \n
\n
\n {{ a.sizeName }}\n
\n \n \n \n \n
\n
\n

{{ \"newAttachment\" | i18n }}

\n \n \n {{ \"maxFileSize\" | i18n }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CiphersComponent as BaseCiphersComponent } from \"../../vault/ciphers.component\";\n\n@Component({\n selector: \"app-org-vault-ciphers\",\n templateUrl: \"../../vault/ciphers.component.html\",\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(\n searchService: SearchService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n cipherService: CipherService,\n eventService: EventService,\n totpService: TotpService,\n passwordRepromptService: PasswordRepromptService,\n logService: LogService,\n stateService: StateService,\n organizationService: OrganizationService,\n tokenService: TokenService,\n private apiService: ApiService\n ) {\n super(\n searchService,\n i18nService,\n platformUtilsService,\n cipherService,\n eventService,\n totpService,\n stateService,\n passwordRepromptService,\n logService,\n organizationService,\n tokenService\n );\n }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.deleted = deleted || false;\n if (this.organization.canEditAnyCollection) {\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n } else {\n this.allCiphers = (await this.cipherService.getAllDecrypted()).filter(\n (c) => c.organizationId === this.organization.id\n );\n }\n await this.searchService.indexCiphers(this.organization.id, this.allCiphers);\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canViewAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) =>\n c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n await super.search(timeout, this.allCiphers);\n }\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted\n ? this.apiService.deleteCipherAdmin(id)\n : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canEditAnyCollection && c.hasOldAttachments;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n {{ \"attachments\" | i18n }}\n \n \n {{ \"attachmentsNeedFix\" | i18n }}\n \n \n
\n {{ c.subTitle }}\n \n 0 && !organization\" class=\"tw-w-28\">\n \n \n \n \n \n \n \n \n \n \n \n \n {{ \"copyPassword\" | i18n }}\n \n \n \n {{ \"copyVerificationCode\" | i18n }}\n \n \n \n \n \n \n {{ \"clone\" | i18n }}\n \n \n \n {{ \"moveToOrganization\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ \"loading\" | i18n }}\n \n \n

{{ \"noItemsInList\" | i18n }}

\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherCollectionsRequest } from \"jslib-common/models/request/cipherCollectionsRequest\";\n\nimport { CollectionsComponent as BaseCollectionsComponent } from \"../../vault/collections.component\";\n\n@Component({\n selector: \"app-org-vault-collections\",\n templateUrl: \"../../vault/collections.component.html\",\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n private apiService: ApiService,\n logService: LogService\n ) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canViewAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canEditAnyCollection) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"collections\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n

{{ \"collectionsDesc\" | i18n }}

\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { LockGuard } from \"jslib-angular/guards/lock.guard\";\nimport { UnauthGuard } from \"jslib-angular/guards/unauth.guard\";\n\nimport { AcceptEmergencyComponent } from \"./accounts/accept-emergency.component\";\nimport { AcceptOrganizationComponent } from \"./accounts/accept-organization.component\";\nimport { HintComponent } from \"./accounts/hint.component\";\nimport { LockComponent } from \"./accounts/lock.component\";\nimport { LoginComponent } from \"./accounts/login.component\";\nimport { RecoverDeleteComponent } from \"./accounts/recover-delete.component\";\nimport { RecoverTwoFactorComponent } from \"./accounts/recover-two-factor.component\";\nimport { RegisterComponent } from \"./accounts/register.component\";\nimport { RemovePasswordComponent } from \"./accounts/remove-password.component\";\nimport { SetPasswordComponent } from \"./accounts/set-password.component\";\nimport { SsoComponent } from \"./accounts/sso.component\";\nimport { TwoFactorComponent } from \"./accounts/two-factor.component\";\nimport { UpdatePasswordComponent } from \"./accounts/update-password.component\";\nimport { UpdateTempPasswordComponent } from \"./accounts/update-temp-password.component\";\nimport { VerifyEmailTokenComponent } from \"./accounts/verify-email-token.component\";\nimport { VerifyRecoverDeleteComponent } from \"./accounts/verify-recover-delete.component\";\nimport { HomeGuard } from \"./guards/home.guard\";\nimport { FrontendLayoutComponent } from \"./layouts/frontend-layout.component\";\nimport { UserLayoutComponent } from \"./layouts/user-layout.component\";\nimport { AcceptFamilySponsorshipComponent } from \"./organizations/sponsorships/accept-family-sponsorship.component\";\nimport { FamiliesForEnterpriseSetupComponent } from \"./organizations/sponsorships/families-for-enterprise-setup.component\";\nimport { AccessComponent } from \"./send/access.component\";\nimport { SendComponent } from \"./send/send.component\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { CreateOrganizationComponent } from \"./settings/create-organization.component\";\nimport { DomainRulesComponent } from \"./settings/domain-rules.component\";\nimport { EmergencyAccessViewComponent } from \"./settings/emergency-access-view.component\";\nimport { EmergencyAccessComponent } from \"./settings/emergency-access.component\";\nimport { PreferencesComponent } from \"./settings/preferences.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SponsoredFamiliesComponent } from \"./settings/sponsored-families.component\";\nimport { ExportComponent } from \"./tools/export.component\";\nimport { GeneratorComponent } from \"./tools/generator.component\";\nimport { ImportComponent } from \"./tools/import.component\";\nimport { ToolsComponent } from \"./tools/tools.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: FrontendLayoutComponent,\n data: { doNotSaveUrl: true },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n children: [], // Children lets us have an empty component.\n canActivate: [HomeGuard], // Redirects either to vault, login or lock page.\n },\n { path: \"login\", component: LoginComponent, canActivate: [UnauthGuard] },\n { path: \"2fa\", component: TwoFactorComponent, canActivate: [UnauthGuard] },\n {\n path: \"register\",\n component: RegisterComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"createAccount\" },\n },\n {\n path: \"sso\",\n component: SsoComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"enterpriseSingleSignOn\" },\n },\n {\n path: \"set-password\",\n component: SetPasswordComponent,\n data: { titleId: \"setMasterPassword\" },\n },\n {\n path: \"hint\",\n component: HintComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"passwordHint\" },\n },\n {\n path: \"lock\",\n component: LockComponent,\n canActivate: [LockGuard],\n },\n { path: \"verify-email\", component: VerifyEmailTokenComponent },\n {\n path: \"accept-organization\",\n component: AcceptOrganizationComponent,\n data: { titleId: \"joinOrganization\", doNotSaveUrl: false },\n },\n {\n path: \"accept-emergency\",\n component: AcceptEmergencyComponent,\n data: { titleId: \"acceptEmergency\", doNotSaveUrl: false },\n },\n {\n path: \"accept-families-for-enterprise\",\n component: AcceptFamilySponsorshipComponent,\n data: { titleId: \"acceptFamilySponsorship\", doNotSaveUrl: false },\n },\n { path: \"recover\", pathMatch: \"full\", redirectTo: \"recover-2fa\" },\n {\n path: \"recover-2fa\",\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"recoverAccountTwoStep\" },\n },\n {\n path: \"recover-delete\",\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"deleteAccount\" },\n },\n {\n path: \"verify-recover-delete\",\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"deleteAccount\" },\n },\n {\n path: \"send/:sendId/:key\",\n component: AccessComponent,\n data: { title: \"Bitwarden Send\" },\n },\n {\n path: \"update-temp-password\",\n component: UpdateTempPasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"updateTempPassword\" },\n },\n {\n path: \"update-password\",\n component: UpdatePasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"updatePassword\" },\n },\n {\n path: \"remove-password\",\n component: RemovePasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"removeMasterPassword\" },\n },\n ],\n },\n {\n path: \"\",\n component: UserLayoutComponent,\n canActivate: [AuthGuard],\n children: [\n {\n path: \"vault\",\n loadChildren: async () =>\n (await import(\"./modules/vault/modules/individual-vault/individual-vault.module\"))\n .IndividualVaultModule,\n },\n { path: \"sends\", component: SendComponent, data: { title: \"Send\" } },\n {\n path: \"create-organization\",\n component: CreateOrganizationComponent,\n data: { titleId: \"newOrganization\" },\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"account\" },\n { path: \"account\", component: AccountComponent, data: { titleId: \"myAccount\" } },\n {\n path: \"preferences\",\n component: PreferencesComponent,\n data: { titleId: \"preferences\" },\n },\n {\n path: \"security\",\n loadChildren: async () =>\n (await import(\"./settings/security-routing.module\")).SecurityRoutingModule,\n },\n {\n path: \"domain-rules\",\n component: DomainRulesComponent,\n data: { titleId: \"domainRules\" },\n },\n {\n path: \"subscription\",\n loadChildren: async () =>\n (await import(\"./settings/subscription-routing.module\")).SubscriptionRoutingModule,\n },\n {\n path: \"emergency-access\",\n children: [\n {\n path: \"\",\n component: EmergencyAccessComponent,\n data: { titleId: \"emergencyAccess\" },\n },\n {\n path: \":id\",\n component: EmergencyAccessViewComponent,\n data: { titleId: \"emergencyAccess\" },\n },\n ],\n },\n {\n path: \"sponsored-families\",\n component: SponsoredFamiliesComponent,\n data: { titleId: \"sponsoredFamilies\" },\n },\n ],\n },\n {\n path: \"tools\",\n component: ToolsComponent,\n canActivate: [AuthGuard],\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"generator\" },\n { path: \"import\", component: ImportComponent, data: { titleId: \"importData\" } },\n { path: \"export\", component: ExportComponent, data: { titleId: \"exportVault\" } },\n {\n path: \"generator\",\n component: GeneratorComponent,\n data: { titleId: \"generator\" },\n },\n ],\n },\n {\n path: \"reports\",\n loadChildren: async () =>\n (await import(\"./reports/reports-routing.module\")).ReportsRoutingModule,\n },\n { path: \"setup/families-for-enterprise\", component: FamiliesForEnterpriseSetupComponent },\n ],\n },\n {\n path: \"organizations\",\n loadChildren: () =>\n import(\"./organizations/organization-routing.module\").then(\n (m) => m.OrganizationsRoutingModule\n ),\n },\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: \"always\",\n // enableTracing: true,\n }),\n ],\n exports: [RouterModule],\n})\nexport class OssRoutingModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { LooseComponentsModule } from \"./modules/loose-components.module\";\nimport { PipesModule } from \"./modules/pipes/pipes.module\";\nimport { SharedModule } from \"./modules/shared.module\";\nimport { VaultFilterModule } from \"./modules/vault-filter/vault-filter.module\";\nimport { OrganizationBadgeModule } from \"./modules/vault/modules/organization-badge/organization-badge.module\";\n\n@NgModule({\n imports: [\n SharedModule,\n LooseComponentsModule,\n VaultFilterModule,\n OrganizationBadgeModule,\n PipesModule,\n ],\n exports: [LooseComponentsModule, VaultFilterModule, OrganizationBadgeModule, PipesModule],\n bootstrap: [],\n})\nexport class OssModule {}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"app-providers\",\n templateUrl: \"providers.component.html\",\n})\nexport class ProvidersComponent implements OnInit {\n providers: Provider[];\n loaded = false;\n actionPromise: Promise;\n\n constructor(private providerService: ProviderService, private i18nService: I18nService) {}\n\n async ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n await this.load();\n }\n\n async load() {\n const providers = await this.providerService.getAll();\n providers.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.providers = providers;\n this.loaded = true;\n }\n}\n","\n
\n
\n

{{ \"providers\" | i18n }}

\n
\n

\n \n {{ \"loading\" | i18n }}\n

\n \n \n \n \n \n \n \n \n
\n \n \n {{ p.name }}\n \n \n {{ \"providerIsDisabled\" | i18n }}\n \n
\n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { BreachAccountResponse } from \"jslib-common/models/response/breachAccountResponse\";\n\n@Component({\n selector: \"app-breach-report\",\n templateUrl: \"breach-report.component.html\",\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private stateService: StateService) {}\n\n async ngOnInit() {\n this.username = await this.stateService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","
\n

{{ \"dataBreachReport\" | i18n }}

\n
\n

{{ \"breachDesc\" | i18n }}

\n
\n
\n
\n \n \n {{ \"breachCheckUsernameEmail\" | i18n }}\n
\n
\n \n \n {{ \"checkBreaches\" | i18n }}\n \n\n
\n

{{ \"reportError\" | i18n }}...

\n \n \n {{ \"breachUsernameNotFound\" | i18n: checkedUsername }}\n \n \n {{ \"breachUsernameFound\" | i18n: checkedUsername:breachedAccounts.length }}\n \n
    \n
  • \n
    \n
    \n \"\"\n
    \n
    \n

    {{ a.title }}

    \n

    \n

    {{ \"compromisedData\" | i18n }}:

    \n
      \n
    • {{ d }}
    • \n
    \n
    \n
    \n
    \n
    {{ \"website\" | i18n }}
    \n
    {{ a.domain }}
    \n
    {{ \"affectedUsers\" | i18n }}
    \n
    {{ a.pwnCount | number }}
    \n
    {{ \"breachOccurred\" | i18n }}
    \n
    {{ a.breachDate | date: \"mediumDate\" }}
    \n
    {{ \"breachReported\" | i18n }}
    \n
    {{ a.addedDate | date: \"mediumDate\" }}
    \n
    \n
    \n
    \n
  • \n
\n
\n
\n","import { Directive, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { AddEditComponent as OrgAddEditComponent } from \"../organizations/vault/add-edit.component\";\nimport { AddEditComponent } from \"../vault/add-edit.component\";\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n constructor(\n private modalService: ModalService,\n protected messagingService: MessagingService,\n public requiresPaid: boolean,\n private stateService: StateService,\n protected passwordRepromptService: PasswordRepromptService\n ) {}\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n async selectCipher(cipher: CipherView) {\n if (!(await this.repromptCipher(cipher))) {\n return;\n }\n\n const type = this.organization != null ? OrgAddEditComponent : AddEditComponent;\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n type,\n this.cipherAddEditModalRef,\n (comp: OrgAddEditComponent | AddEditComponent) => {\n if (this.organization != null) {\n (comp as OrgAddEditComponent).organization = this.organization;\n comp.organizationId = this.organization.id;\n }\n\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n }\n );\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.stateService.getCanAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send(\"premiumRequired\");\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n\n protected async repromptCipher(c: CipherView) {\n return (\n c.reprompt === CipherRepromptType.None ||\n (await this.passwordRepromptService.showPasswordPrompt())\n );\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-exposed-passwords-report\",\n templateUrl: \"exposed-passwords-report.component.html\",\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(\n protected cipherService: CipherService,\n protected auditService: AuditService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then((exposedCount) => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-inactive-two-factor-report\",\n templateUrl: \"inactive-two-factor-report.component.html\",\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private logService: LogService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch (e) {\n this.logService.error(e);\n }\n\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n (c.login.totp != null && c.login.totp !== \"\") ||\n !c.login.hasUris ||\n c.isDeleted\n ) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== \"\") {\n const uri = u.uri.replace(\"www.\", \"\");\n const domain = Utils.getDomain(uri);\n if (domain != null && this.services.has(domain)) {\n if (this.services.get(domain) != null) {\n docs.set(c.id, this.services.get(domain));\n }\n inactive2faCiphers.push(c);\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request(\"https://2fa.directory/api/v3/totp.json\"));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const service of responseJson) {\n const serviceData = service[1];\n if (serviceData.domain == null) {\n continue;\n }\n if (serviceData.documentation == null) {\n continue;\n }\n if (serviceData[\"additional-domains\"] != null) {\n for (const additionalDomain of serviceData[\"additional-domains\"]) {\n this.services.set(additionalDomain, serviceData.documentation);\n }\n }\n this.services.set(serviceData.domain, serviceData.documentation);\n }\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nexport enum ReportTypes {\n \"exposedPasswords\" = \"exposedPasswords\",\n \"reusedPasswords\" = \"reusedPasswords\",\n \"weakPasswords\" = \"weakPasswords\",\n \"unsecuredWebsites\" = \"unsecuredWebsites\",\n \"inactive2fa\" = \"inactive2fa\",\n \"dataBreach\" = \"dataBreach\",\n}\n\ntype ReportEntry = {\n title: string;\n description: string;\n route: string;\n icon: string;\n requiresPremium: boolean;\n};\n\nconst reports: Record = {\n exposedPasswords: {\n title: \"exposedPasswordsReport\",\n description: \"exposedPasswordsReportDesc\",\n route: \"exposed-passwords-report\",\n icon: `\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n reusedPasswords: {\n title: \"reusedPasswordsReport\",\n description: \"reusedPasswordsReportDesc\",\n route: \"reused-passwords-report\",\n icon: `\n \n \n \n \n \n `,\n requiresPremium: true,\n },\n weakPasswords: {\n title: \"weakPasswordsReport\",\n description: \"weakPasswordsReportDesc\",\n route: \"weak-passwords-report\",\n icon: `\n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n unsecuredWebsites: {\n title: \"unsecuredWebsitesReport\",\n description: \"unsecuredWebsitesReportDesc\",\n route: \"unsecured-websites-report\",\n icon: `\n \n \n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n inactive2fa: {\n title: \"inactive2faReport\",\n description: \"inactive2faReportDesc\",\n route: \"inactive-two-factor-report\",\n icon: `\n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n dataBreach: {\n title: \"dataBreachReport\",\n description: \"breachDesc\",\n route: \"breach-report\",\n icon: `\n \n \n \n \n \n \n \n \n \n \n `,\n requiresPremium: false,\n },\n};\n\n@Component({\n selector: \"app-report-card\",\n templateUrl: \"report-card.component.html\",\n})\nexport class ReportCardComponent implements OnInit {\n @Input() type: ReportTypes;\n\n report: ReportEntry;\n\n hasPremium: boolean;\n\n constructor(\n private stateService: StateService,\n private messagingService: MessagingService,\n private sanitizer: DomSanitizer\n ) {}\n\n async ngOnInit() {\n this.report = reports[this.type];\n\n this.hasPremium = await this.stateService.getCanAccessPremium();\n }\n\n get premium() {\n return this.report.requiresPremium && !this.hasPremium;\n }\n\n get route() {\n if (this.premium) {\n return null;\n }\n\n return this.report.route;\n }\n\n get icon() {\n return this.sanitizer.bypassSecurityTrustHtml(this.report.icon);\n }\n\n click() {\n if (this.premium) {\n this.messagingService.send(\"premiumRequired\");\n }\n }\n}\n","\n
\n \n
\n
\n
\n

{{ report.title | i18n }}

\n

{{ report.description | i18n }}

\n
\n {{ \"premium\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\n\nimport { ReportTypes } from \"./report-card.component\";\n\n@Component({\n selector: \"app-report-list\",\n templateUrl: \"report-list.component.html\",\n})\nexport class ReportListComponent {\n reports = [\n ReportTypes.exposedPasswords,\n ReportTypes.reusedPasswords,\n ReportTypes.weakPasswords,\n ReportTypes.unsecuredWebsites,\n ReportTypes.inactive2fa,\n ReportTypes.dataBreach,\n ];\n}\n","
\n

{{ \"reports\" | i18n }}

\n
\n\n

{{ \"reportsDesc\" | i18n }}

\n\n
\n
\n \n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\n\nimport { BreachReportComponent } from \"./breach-report.component\";\nimport { ExposedPasswordsReportComponent } from \"./exposed-passwords-report.component\";\nimport { InactiveTwoFactorReportComponent } from \"./inactive-two-factor-report.component\";\nimport { ReportListComponent } from \"./report-list.component\";\nimport { ReportsComponent } from \"./reports.component\";\nimport { ReusedPasswordsReportComponent } from \"./reused-passwords-report.component\";\nimport { UnsecuredWebsitesReportComponent } from \"./unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"./weak-passwords-report.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: ReportsComponent,\n canActivate: [AuthGuard],\n children: [\n { path: \"\", pathMatch: \"full\", component: ReportListComponent, data: { homepage: true } },\n {\n path: \"breach-report\",\n component: BreachReportComponent,\n data: { titleId: \"dataBreachReport\" },\n },\n {\n path: \"reused-passwords-report\",\n component: ReusedPasswordsReportComponent,\n data: { titleId: \"reusedPasswordsReport\" },\n },\n {\n path: \"unsecured-websites-report\",\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: \"unsecuredWebsitesReport\" },\n },\n {\n path: \"weak-passwords-report\",\n component: WeakPasswordsReportComponent,\n data: { titleId: \"weakPasswordsReport\" },\n },\n {\n path: \"exposed-passwords-report\",\n component: ExposedPasswordsReportComponent,\n data: { titleId: \"exposedPasswordsReport\" },\n },\n {\n path: \"inactive-two-factor-report\",\n component: InactiveTwoFactorReportComponent,\n data: { titleId: \"inactive2faReport\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ReportsRoutingModule {}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\n@Component({\n selector: \"app-reports\",\n templateUrl: \"reports.component.html\",\n})\nexport class ReportsComponent implements OnDestroy {\n homepage = true;\n subscription: Subscription;\n\n constructor(router: Router) {\n this.subscription = router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event) => {\n this.homepage = (event as NavigationEnd).url == \"/reports\";\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-reused-passwords-report\",\n templateUrl: \"reused-passwords-report.component.html\",\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(\n (c) =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1\n );\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-unsecured-websites-report\",\n templateUrl: \"unsecured-websites-report.component.html\",\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter((c) => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some((u) => u.uri != null && u.uri.indexOf(\"http://\") === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-weak-passwords-report\",\n templateUrl: \"weak-passwords-report.component.html\",\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(\n protected cipherService: CipherService,\n protected passwordGenerationService: PasswordGenerationService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n const isUserNameNotEmpty = (c: CipherView): boolean => {\n return c.login.username != null && c.login.username.trim() !== \"\";\n };\n const getCacheKey = (c: CipherView): string => {\n return c.login.password + \"_____\" + (isUserNameNotEmpty(c) ? c.login.username : \"\");\n };\n\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n const hasUserName = isUserNameNotEmpty(c);\n const cacheKey = getCacheKey(c);\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUserName) {\n const atPosition = c.login.username.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput\n .concat(\n c.login.username\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n )\n .filter((i) => i.length >= 3);\n } else {\n userInput = c.login.username\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n .filter((i) => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(\n c.login.password,\n userInput.length > 0 ? userInput : null\n );\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n weakPasswordCiphers.sort((a, b) => {\n return (\n this.passwordStrengthCache.get(getCacheKey(a)) -\n this.passwordStrengthCache.get(getCacheKey(b))\n );\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return [\"strong\", \"success\"];\n case 3:\n return [\"good\", \"primary\"];\n case 2:\n return [\"weak\", \"warning\"];\n default:\n return [\"veryWeak\", \"danger\"];\n }\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SEND_KDF_ITERATIONS } from \"jslib-common/enums/kdfType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SendAccess } from \"jslib-common/models/domain/sendAccess\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { SendAccessRequest } from \"jslib-common/models/request/sendAccessRequest\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\nimport { SendAccessResponse } from \"jslib-common/models/response/sendAccessResponse\";\nimport { SendAccessView } from \"jslib-common/models/view/sendAccessView\";\n\n@Component({\n selector: \"app-send-access\",\n templateUrl: \"access.component.html\",\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n hideEmail = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(\n private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute,\n private cryptoService: CryptoService\n ) {}\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async (params) => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n const downloadData = await this.apiService.getSendFileDownloadData(\n this.send,\n this.accessRequest\n );\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingSendFile\"));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"sendTypeText\"))\n );\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n this.hideEmail = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(\n this.password,\n keyArray,\n \"sha256\",\n SEND_KDF_ITERATIONS\n );\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n this.hideEmail =\n this.creatorIdentifier == null &&\n !this.passwordRequired &&\n !this.loading &&\n !this.unavailable;\n }\n}\n","
\n
\n
\n

Bitwarden Send

\n
\n
\n

{{ \"sendCreatorIdentifier\" | i18n: creatorIdentifier }}

\n
\n
\n \n {{ \"viewSendHiddenEmailWarning\" | i18n }}\n {{\n \"learnMore\" | i18n\n }}.\n \n
\n
\n \n
\n","import { DatePipe } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"jslib-angular/components/send/add-edit.component\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-send-add-edit\",\n templateUrl: \"add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n datePipe: DatePipe,\n sendService: SendService,\n stateService: StateService,\n messagingService: MessagingService,\n policyService: PolicyService,\n logService: LogService\n ) {\n super(\n i18nService,\n platformUtilsService,\n environmentService,\n datePipe,\n sendService,\n messagingService,\n policyService,\n logService,\n stateService\n );\n }\n\n async copyLinkToClipboard(link: string): Promise {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n return new Promise((resolve) => {\n window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500);\n });\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"sendDisabledWarning\" | i18n }}\n \n \n {{ \"sendOptionsPolicyInEffect\" | i18n }}\n
    \n
  • {{ \"sendDisableHideEmailInEffect\" | i18n }}
  • \n
\n
\n
\n
\n \n \n {{ \"sendNameDesc\" | i18n }}\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n {{ \"sendTextDesc\" | i18n }}\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n {{ \"file\" | i18n }}\n {{ send.file.fileName }} ({{ send.file.sizeName }})\n
\n
\n \n \n {{ \"sendFileDesc\" | i18n }} {{ \"maxFileSize\" | i18n }}\n
\n
\n
\n

{{ \"share\" | i18n }}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n

{{ \"options\" | i18n }}

\n \n \n \n
\n
\n \n \n
\n
\n \n \n
{{ \"maxAccessCountDesc\" | i18n }}
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n \n
\n
\n
{{ \"sendPasswordDesc\" | i18n }}
\n
\n
\n
\n \n \n
{{ \"sendNotesDesc\" | i18n }}
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n\n","import { DatePipe } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { ControlContainer, NgForm } from \"@angular/forms\";\n\nimport { EffluxDatesComponent as BaseEffluxDatesComponent } from \"jslib-angular/components/send/efflux-dates.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-send-efflux-dates\",\n templateUrl: \"efflux-dates.component.html\",\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class EffluxDatesComponent extends BaseEffluxDatesComponent {\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe\n ) {\n super(i18nService, platformUtilsService, datePipe);\n }\n}\n","
\n
\n \n \n \n \n
\n \n \n
\n
\n \n
\n \n \n \n {{ o.twelveHour }}\n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
{{ \"deletionDateDesc\" | i18n }}
\n
\n
\n
\n \n \n {{ \"clear\" | i18n }}\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n {{ o.twelveHour }}\n \n \n
\n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
{{ \"expirationDateDesc\" | i18n }}
\n
\n
\n","import { Component, NgZone, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { SendComponent as BaseSendComponent } from \"jslib-angular/components/send/send.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\nimport { AddEditComponent } from \"./add-edit.component\";\n\nconst BroadcasterSubscriptionId = \"SendComponent\";\n\n@Component({\n selector: \"app-send\",\n templateUrl: \"send.component.html\",\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild(\"sendAddEdit\", { read: ViewContainerRef, static: true })\n sendAddEditModalRef: ViewContainerRef;\n\n constructor(\n sendService: SendService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n ngZone: NgZone,\n searchService: SearchService,\n policyService: PolicyService,\n private modalService: ModalService,\n private broadcasterService: BroadcasterService,\n logService: LogService\n ) {\n super(\n sendService,\n i18nService,\n platformUtilsService,\n environmentService,\n ngZone,\n searchService,\n policyService,\n logService\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = await this.editSend(null);\n component.type = this.type;\n }\n\n async editSend(send: SendView) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.sendAddEditModalRef,\n (comp) => {\n comp.sendId = send == null ? null : send.id;\n comp.onSavedSend.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onDeletedSend.subscribe(async () => {\n modal.close();\n await this.load();\n });\n }\n );\n\n return childComponent;\n }\n}\n","
\n \n {{ \"sendDisabledWarning\" | i18n }}\n \n
\n
\n
\n
\n {{ \"filters\" | i18n }}\n
\n
\n \n
\n
    \n
  • \n \n \n \n
  • \n
\n
\n
\n
\n

{{ \"types\" | i18n }}

\n
\n
    \n
  • \n \n \n {{ \"sendTypeText\" | i18n }}\n \n \n
  • \n
  • \n \n \n {{ \"sendTypeFile\" | i18n }}\n \n \n
  • \n
\n
\n
\n
\n
\n
\n
\n

\n {{ \"send\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n {{ \"createSend\" | i18n }}\n \n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n \n \n
\n
\n {{ s.name }}\n \n \n {{ \"disabled\" | i18n }}\n \n \n \n {{ \"password\" | i18n }}\n \n \n \n {{ \"maxAccessCountReached\" | i18n }}\n \n \n \n {{ \"expired\" | i18n }}\n \n \n \n {{ \"pendingDeletion\" | i18n }}\n \n
\n {{ s.deletionDate | date: \"medium\" }}\n
\n \n \n \n \n \n \n \n {{ \"removePassword\" | i18n }}\n \n \n \n
\n
\n \n \n {{ \"loading\" | i18n }}\n \n \n

{{ \"noSendsInList\" | i18n }}

\n \n
\n
\n
\n
\n
\n\n","import { Injectable } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { DeviceType } from \"jslib-common/enums/deviceType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService, private policyService: PolicyService) {}\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + \":59.999\");\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error(\"Invalid date range.\");\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise {\n const appInfo = this.getAppInfo(ev.deviceType);\n const { message, humanReadableMessage } = await this.getEventMessage(ev, options);\n return {\n message: message,\n humanReadableMessage: humanReadableMessage,\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private async getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = \"\";\n let humanReadableMsg = \"\";\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = humanReadableMsg = this.i18nService.t(\"loggedIn\");\n break;\n case EventType.User_ChangedPassword:\n msg = humanReadableMsg = this.i18nService.t(\"changedPassword\");\n break;\n case EventType.User_Updated2fa:\n msg = humanReadableMsg = this.i18nService.t(\"enabledUpdated2fa\");\n break;\n case EventType.User_Disabled2fa:\n msg = humanReadableMsg = this.i18nService.t(\"disabled2fa\");\n break;\n case EventType.User_Recovered2fa:\n msg = humanReadableMsg = this.i18nService.t(\"recovered2fa\");\n break;\n case EventType.User_FailedLogIn:\n msg = humanReadableMsg = this.i18nService.t(\"failedLogin\");\n break;\n case EventType.User_FailedLogIn2fa:\n msg = humanReadableMsg = this.i18nService.t(\"failedLogin2fa\");\n break;\n case EventType.User_ClientExportedVault:\n msg = humanReadableMsg = this.i18nService.t(\"exportedVault\");\n break;\n case EventType.User_UpdatedTempPassword:\n msg = humanReadableMsg = this.i18nService.t(\"updatedMasterPassword\");\n break;\n case EventType.User_MigratedKeyToKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"migratedKeyConnector\");\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t(\"createdItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"createdItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t(\"editedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"editedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t(\"permanentlyDeletedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"permanentlyDeletedItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t(\"deletedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"deletedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t(\"restoredItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"restoredItemId\", this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t(\"createdAttachmentForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"createdAttachmentForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t(\"deletedAttachmentForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"deletedAttachmentForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t(\"movedItemIdToOrg\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"movedItemIdToOrg\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t(\"viewedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"viewedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t(\"viewedPasswordItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"viewedPasswordItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t(\"viewedHiddenFieldItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"viewedHiddenFieldItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t(\"viewedSecurityCodeItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"viewedSecurityCodeItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t(\"copiedHiddenFieldItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"copiedHiddenFieldItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t(\"copiedPasswordItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"copiedPasswordItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t(\"copiedSecurityCodeItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"copiedSecurityCodeItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t(\"autofilledItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"autofilledItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t(\"editedCollectionsForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"editedCollectionsForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t(\"createdCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"createdCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t(\"editedCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t(\"deletedCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"deletedCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t(\"createdGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"createdGroupId\", this.getShortId(ev.groupId));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t(\"editedGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"editedGroupId\", this.getShortId(ev.groupId));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t(\"deletedGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"deletedGroupId\", this.getShortId(ev.groupId));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t(\"invitedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"invitedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t(\"confirmedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"confirmedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t(\"editedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t(\"removedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"removedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t(\"editedGroupsForUser\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedGroupsForUser\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t(\"unlinkedSsoUser\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"unlinkedSsoUser\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetPassword_Enroll:\n msg = this.i18nService.t(\"eventEnrollPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventEnrollPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetPassword_Withdraw:\n msg = this.i18nService.t(\"eventWithdrawPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventWithdrawPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_AdminResetPassword:\n msg = this.i18nService.t(\"eventAdminPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventAdminPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetSsoLink:\n msg = this.i18nService.t(\"eventResetSsoLink\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventResetSsoLink\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_FirstSsoLogin:\n msg = this.i18nService.t(\"firstSsoLogin\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"firstSsoLogin\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n // Org\n case EventType.Organization_Updated:\n msg = humanReadableMsg = this.i18nService.t(\"editedOrgSettings\");\n break;\n case EventType.Organization_PurgedVault:\n msg = humanReadableMsg = this.i18nService.t(\"purgedOrganizationVault\");\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n case EventType.Organization_VaultAccessed:\n msg = humanReadableMsg = this.i18nService.t(\"vaultAccessedByProvider\");\n break;\n case EventType.Organization_EnabledSso:\n msg = humanReadableMsg = this.i18nService.t(\"enabledSso\");\n break;\n case EventType.Organization_DisabledSso:\n msg = humanReadableMsg = this.i18nService.t(\"disabledSso\");\n break;\n case EventType.Organization_EnabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"enabledKeyConnector\");\n break;\n case EventType.Organization_DisabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"disabledKeyConnector\");\n break;\n case EventType.Organization_SponsorshipsSynced:\n msg = humanReadableMsg = this.i18nService.t(\"sponsorshipsSynced\");\n break;\n // Policies\n case EventType.Policy_Updated: {\n msg = this.i18nService.t(\"modifiedPolicyId\", this.formatPolicyId(ev));\n\n const policies = await this.policyService.getAll();\n const policy = policies.filter((p) => p.id === ev.policyId)[0];\n let p1 = this.getShortId(ev.policyId);\n if (policy != null) {\n p1 = PolicyType[policy.type];\n }\n\n humanReadableMsg = this.i18nService.t(\"modifiedPolicyId\", p1);\n break;\n }\n // Provider users:\n case EventType.ProviderUser_Invited:\n msg = this.i18nService.t(\"invitedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"invitedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Confirmed:\n msg = this.i18nService.t(\"confirmedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"confirmedUserId\",\n this.getShortId(ev.providerUserId)\n );\n break;\n case EventType.ProviderUser_Updated:\n msg = this.i18nService.t(\"editedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"editedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Removed:\n msg = this.i18nService.t(\"removedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"removedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderOrganization_Created:\n msg = this.i18nService.t(\"createdOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"createdOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_Added:\n msg = this.i18nService.t(\"addedOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"addedOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_Removed:\n msg = this.i18nService.t(\"removedOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"removedOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_VaultAccessed:\n msg = this.i18nService.t(\"accessedClientVault\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"accessedClientVault\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n default:\n break;\n }\n return {\n message: msg === \"\" ? null : msg,\n humanReadableMessage: humanReadableMsg === \"\" ? null : humanReadableMsg,\n };\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return [\"bwi-android\", this.i18nService.t(\"mobile\") + \" - Android\"];\n case DeviceType.iOS:\n return [\"bwi-apple\", this.i18nService.t(\"mobile\") + \" - iOS\"];\n case DeviceType.UWP:\n return [\"bwi-windows\", this.i18nService.t(\"mobile\") + \" - Windows\"];\n case DeviceType.ChromeExtension:\n return [\"bwi-chrome\", this.i18nService.t(\"extension\") + \" - Chrome\"];\n case DeviceType.FirefoxExtension:\n return [\"bwi-firefox\", this.i18nService.t(\"extension\") + \" - Firefox\"];\n case DeviceType.OperaExtension:\n return [\"bwi-opera\", this.i18nService.t(\"extension\") + \" - Opera\"];\n case DeviceType.EdgeExtension:\n return [\"bwi-edge\", this.i18nService.t(\"extension\") + \" - Edge\"];\n case DeviceType.VivaldiExtension:\n return [\"bwi-puzzle\", this.i18nService.t(\"extension\") + \" - Vivaldi\"];\n case DeviceType.SafariExtension:\n return [\"bwi-safari\", this.i18nService.t(\"extension\") + \" - Safari\"];\n case DeviceType.WindowsDesktop:\n return [\"bwi-windows\", this.i18nService.t(\"desktop\") + \" - Windows\"];\n case DeviceType.MacOsDesktop:\n return [\"bwi-apple\", this.i18nService.t(\"desktop\") + \" - macOS\"];\n case DeviceType.LinuxDesktop:\n return [\"bwi-linux\", this.i18nService.t(\"desktop\") + \" - Linux\"];\n case DeviceType.ChromeBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Chrome\"];\n case DeviceType.FirefoxBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Firefox\"];\n case DeviceType.OperaBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Opera\"];\n case DeviceType.SafariBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Safari\"];\n case DeviceType.VivaldiBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Vivaldi\"];\n case DeviceType.EdgeBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Edge\"];\n case DeviceType.IEBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - IE\"];\n case DeviceType.UnknownBrowser:\n return [\n \"bwi-globe\",\n this.i18nService.t(\"webVault\") + \" - \" + this.i18nService.t(\"unknown\"),\n ];\n default:\n return [\"bwi-globe\", this.i18nService.t(\"unknown\")];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return \"\" + shortId + \"\";\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" +\n ev.organizationId +\n \"/vault?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.cipherId\n );\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/groups?search=\" + shortId\n );\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/collections?search=\" + shortId\n );\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" +\n ev.organizationId +\n \"/manage/people?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.organizationUserId\n );\n return a.outerHTML;\n }\n\n private formatProviderUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/providers/\" +\n ev.providerId +\n \"/manage/people?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.providerUserId\n );\n return a.outerHTML;\n }\n\n private formatProviderOrganizationId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerOrganizationId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\"href\", \"#/providers/\" + ev.providerId + \"/clients?search=\" + shortId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/policies?policyId=\" + ev.policyId\n );\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement(\"a\");\n a.title = this.i18nService.t(\"view\");\n a.innerHTML = \"\" + shortId + \"\";\n return a;\n }\n\n private getShortId(id: string) {\n return id?.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return (\n date.getFullYear() +\n \"-\" +\n this.pad(date.getMonth() + 1) +\n \"-\" +\n this.pad(date.getDate()) +\n \"T\" +\n this.pad(date.getHours()) +\n \":\" +\n this.pad(date.getMinutes())\n );\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? \"0\" : \"\") + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { WINDOW } from \"jslib-angular/services/jslib-services.module\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport {\n EnvironmentService as EnvironmentServiceAbstraction,\n Urls,\n} from \"jslib-common/abstractions/environment.service\";\nimport { EventService as EventLoggingServiceAbstraction } from \"jslib-common/abstractions/event.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"jslib-common/abstractions/notifications.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService as StateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService as TwoFactorServiceAbstraction } from \"jslib-common/abstractions/twoFactor.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\nimport { ContainerService } from \"jslib-common/services/container.service\";\nimport { EventService as EventLoggingService } from \"jslib-common/services/event.service\";\nimport { VaultTimeoutService as VaultTimeoutService } from \"jslib-common/services/vaultTimeout.service\";\n\nimport { I18nService as I18nService } from \"../../services/i18n.service\";\n\n@Injectable()\nexport class InitService {\n constructor(\n @Inject(WINDOW) private win: Window,\n private environmentService: EnvironmentServiceAbstraction,\n private notificationsService: NotificationsServiceAbstraction,\n private vaultTimeoutService: VaultTimeoutServiceAbstraction,\n private i18nService: I18nServiceAbstraction,\n private eventLoggingService: EventLoggingServiceAbstraction,\n private twoFactorService: TwoFactorServiceAbstraction,\n private stateService: StateServiceAbstraction,\n private platformUtilsService: PlatformUtilsServiceAbstraction,\n private cryptoService: CryptoServiceAbstraction\n ) {}\n\n init() {\n return async () => {\n await this.stateService.init();\n\n const urls = process.env.URLS as Urls;\n urls.base ??= this.win.location.origin;\n this.environmentService.setUrls(urls);\n\n setTimeout(() => this.notificationsService.init(), 3000);\n\n (this.vaultTimeoutService as VaultTimeoutService).init(true);\n const locale = await this.stateService.getLocale();\n await (this.i18nService as I18nService).init(locale);\n (this.eventLoggingService as EventLoggingService).init(true);\n this.twoFactorService.init();\n const htmlEl = this.win.document.documentElement;\n htmlEl.classList.add(\"locale_\" + this.i18nService.translationLocale);\n\n // Initial theme is set in index.html which must be updated if there are any changes to theming logic\n this.platformUtilsService.onDefaultSystemThemeChange(async (sysTheme) => {\n const bwTheme = await this.stateService.getTheme();\n if (bwTheme === ThemeType.System) {\n htmlEl.classList.remove(\"theme_\" + ThemeType.Light, \"theme_\" + ThemeType.Dark);\n htmlEl.classList.add(\"theme_\" + sysTheme);\n }\n });\n\n const containerService = new ContainerService(this.cryptoService);\n containerService.attachToWindow(this.win);\n };\n }\n}\n","import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector } from \"@angular/core\";\nimport * as jq from \"jquery\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService as BaseModalService } from \"jslib-angular/services/modal.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Injectable()\nexport class ModalService extends BaseModalService {\n el: any = null;\n modalOpen = false;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n applicationRef: ApplicationRef,\n injector: Injector,\n private messagingService: MessagingService\n ) {\n super(componentFactoryResolver, applicationRef, injector);\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n modalRef.onCreated.pipe(first()).subscribe(() => {\n const modals = Array.from(document.querySelectorAll(\".modal\"));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal(\"show\");\n\n this.el.on(\"show.bs.modal\", () => {\n modalRef.show();\n this.messagingService.send(\"modalShow\");\n });\n this.el.on(\"shown.bs.modal\", () => {\n modalRef.shown();\n this.messagingService.send(\"modalShown\");\n if (!Utils.isMobileBrowser) {\n this.el.find(\"*[appAutoFocus]\").focus();\n }\n });\n this.el.on(\"hide.bs.modal\", () => {\n this.messagingService.send(\"modalClose\");\n });\n this.el.on(\"hidden.bs.modal\", () => {\n modalRef.closed();\n this.messagingService.send(\"modalClosed\");\n });\n }\n });\n\n modalRef.onClose.pipe(first()).subscribe(() => {\n if (this.el != null) {\n this.el.modal(\"hide\");\n }\n });\n }\n}\n","import { BasePolicy } from \"../organizations/policies/base-policy.component\";\n\nexport class PolicyListService {\n private policies: BasePolicy[] = [];\n\n addPolicies(policies: BasePolicy[]) {\n this.policies.push(...policies);\n }\n\n getPolicies(): BasePolicy[] {\n return this.policies;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Title } from \"@angular/platform-browser\";\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\nimport { filter } from \"rxjs\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n i18nService: I18nService\n ) {\n this.currentUrl = this.router.url;\n\n router.events\n .pipe(filter((e) => e instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.currentUrl = event.url;\n\n let title = i18nService.t(\"pageTitle\", \"Bitwarden\");\n let child = this.activatedRoute.firstChild;\n while (child.firstChild) {\n child = child.firstChild;\n }\n\n const titleId: string = child?.snapshot?.data?.titleId;\n const rawTitle: string = child?.snapshot?.data?.title;\n const updateUrl = !child?.snapshot?.data?.doNotSaveUrl ?? true;\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== \"\") {\n title = newTitle + \" | \" + title;\n }\n }\n this.titleService.setTitle(title);\n if (updateUrl) {\n this.setPreviousUrl(this.currentUrl);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","import { APP_INITIALIZER, NgModule } from \"@angular/core\";\nimport { ToastrModule } from \"ngx-toastr\";\n\nimport {\n JslibServicesModule,\n SECURE_STORAGE,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n LOCALES_DIRECTORY,\n SYSTEM_LANGUAGE,\n} from \"jslib-angular/services/jslib-services.module\";\nimport { ModalService as ModalServiceAbstraction } from \"jslib-angular/services/modal.service\";\nimport { ApiService as ApiServiceAbstraction } from \"jslib-common/abstractions/api.service\";\nimport { CipherService as CipherServiceAbstraction } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService as CollectionServiceAbstraction } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService as FolderServiceAbstraction } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService as ImportServiceAbstraction } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService as MessagingServiceAbstraction } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService as BaseStateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { StateMigrationService as StateMigrationServiceAbstraction } from \"jslib-common/abstractions/stateMigration.service\";\nimport { StorageService as StorageServiceAbstraction } from \"jslib-common/abstractions/storage.service\";\nimport { StateFactory } from \"jslib-common/factories/stateFactory\";\nimport { ImportService } from \"jslib-common/services/import.service\";\n\nimport { StateService as StateServiceAbstraction } from \"../../abstractions/state.service\";\nimport { Account } from \"../../models/account\";\nimport { GlobalState } from \"../../models/globalState\";\nimport { BroadcasterMessagingService } from \"../../services/broadcasterMessaging.service\";\nimport { HtmlStorageService } from \"../../services/htmlStorage.service\";\nimport { I18nService } from \"../../services/i18n.service\";\nimport { MemoryStorageService } from \"../../services/memoryStorage.service\";\nimport { PasswordRepromptService } from \"../../services/passwordReprompt.service\";\nimport { StateService } from \"../../services/state.service\";\nimport { StateMigrationService } from \"../../services/stateMigration.service\";\nimport { WebPlatformUtilsService } from \"../../services/webPlatformUtils.service\";\nimport { HomeGuard } from \"../guards/home.guard\";\nimport { PermissionsGuard as OrgPermissionsGuard } from \"../organizations/guards/permissions.guard\";\nimport { NavigationPermissionsService as OrgPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\nimport { EventService } from \"./event.service\";\nimport { InitService } from \"./init.service\";\nimport { ModalService } from \"./modal.service\";\nimport { PolicyListService } from \"./policy-list.service\";\nimport { RouterService } from \"./router.service\";\n\n@NgModule({\n imports: [ToastrModule, JslibServicesModule],\n declarations: [],\n providers: [\n OrgPermissionsService,\n OrgPermissionsGuard,\n InitService,\n RouterService,\n EventService,\n PolicyListService,\n {\n provide: APP_INITIALIZER,\n useFactory: (initService: InitService) => initService.init(),\n deps: [InitService],\n multi: true,\n },\n {\n provide: STATE_FACTORY,\n useValue: new StateFactory(GlobalState, Account),\n },\n {\n provide: STATE_SERVICE_USE_CACHE,\n useValue: false,\n },\n {\n provide: I18nServiceAbstraction,\n useClass: I18nService,\n deps: [SYSTEM_LANGUAGE, LOCALES_DIRECTORY],\n },\n { provide: StorageServiceAbstraction, useClass: HtmlStorageService },\n {\n provide: SECURE_STORAGE,\n // TODO: platformUtilsService.isDev has a helper for this, but using that service here results in a circular dependency.\n // We have a tech debt item in the backlog to break up platformUtilsService, but in the meantime simply checking the environement here is less cumbersome.\n useClass: process.env.NODE_ENV === \"development\" ? HtmlStorageService : MemoryStorageService,\n },\n {\n provide: PlatformUtilsServiceAbstraction,\n useClass: WebPlatformUtilsService,\n },\n { provide: MessagingServiceAbstraction, useClass: BroadcasterMessagingService },\n { provide: ModalServiceAbstraction, useClass: ModalService },\n {\n provide: ImportServiceAbstraction,\n useClass: ImportService,\n deps: [\n CipherServiceAbstraction,\n FolderServiceAbstraction,\n ApiServiceAbstraction,\n I18nServiceAbstraction,\n CollectionServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n CryptoServiceAbstraction,\n ],\n },\n {\n provide: StateMigrationServiceAbstraction,\n useClass: StateMigrationService,\n deps: [StorageServiceAbstraction, SECURE_STORAGE, STATE_FACTORY],\n },\n {\n provide: StateServiceAbstraction,\n useClass: StateService,\n deps: [\n StorageServiceAbstraction,\n SECURE_STORAGE,\n LogService,\n StateMigrationServiceAbstraction,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n ],\n },\n {\n provide: BaseStateServiceAbstraction,\n useExisting: StateServiceAbstraction,\n },\n {\n provide: PasswordRepromptServiceAbstraction,\n useClass: PasswordRepromptService,\n },\n HomeGuard,\n ],\n})\nexport class ServicesModule {}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nimport { DeauthorizeSessionsComponent } from \"./deauthorize-sessions.component\";\nimport { DeleteAccountComponent } from \"./delete-account.component\";\nimport { PurgeVaultComponent } from \"./purge-vault.component\";\n\n@Component({\n selector: \"app-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n @ViewChild(\"deauthorizeSessionsTemplate\", { read: ViewContainerRef, static: true })\n deauthModalRef: ViewContainerRef;\n @ViewChild(\"purgeVaultTemplate\", { read: ViewContainerRef, static: true })\n purgeModalRef: ViewContainerRef;\n @ViewChild(\"deleteAccountTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n\n showChangeEmail = true;\n\n constructor(\n private modalService: ModalService,\n private apiService: ApiService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.showChangeEmail = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n\n async deauthorizeSessions() {\n await this.modalService.openViewRef(DeauthorizeSessionsComponent, this.deauthModalRef);\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef);\n }\n\n async deleteAccount() {\n await this.modalService.openViewRef(DeleteAccountComponent, this.deleteModalRef);\n }\n}\n","
\n

{{ \"myAccount\" | i18n }}

\n
\n\n\n
\n

{{ \"changeEmail\" | i18n }}

\n
\n \n
\n
\n

{{ \"dangerZone\" | i18n }}

\n
\n
\n
\n

{{ \"dangerZoneDesc\" | i18n }}

\n \n \n \n
\n
\n\n\n\n\n\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { PayPalConfig } from \"jslib-common/abstractions/environment.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { BitPayInvoiceRequest } from \"jslib-common/models/request/bitPayInvoiceRequest\";\n\n@Component({\n selector: \"app-add-credit\",\n templateUrl: \"add-credit.component.html\",\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(\"ppButtonForm\", { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction: string;\n ppButtonBusinessId: string;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(\n private stateService: StateService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private organizationService: OrganizationService,\n private logService: LogService\n ) {\n const payPalConfig = process.env.PAYPAL_CONFIG as PayPalConfig;\n this.ppButtonFormAction = payPalConfig.buttonAction;\n this.ppButtonBusinessId = payPalConfig.businessId;\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = \"20.00\";\n }\n this.ppButtonCustomField = \"organization_id:\" + this.organizationId;\n const org = await this.organizationService.get(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = \"10.00\";\n }\n this.userId = await this.stateService.getUserId();\n this.subject = await this.stateService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = \"user_id:\" + this.userId;\n }\n this.ppButtonCustomField += \",account_credit:1\";\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === \"\") {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch (e) {\n this.logService.error(e);\n }\n return;\n }\n try {\n this.onAdded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== \"\") {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2)\n .toString();\n return;\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.creditAmount = \"\";\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== \"\") {\n try {\n return parseFloat(this.creditAmount);\n } catch (e) {\n this.logService.error(e);\n }\n }\n return null;\n }\n}\n","
\n
\n \n

{{ \"addCredit\" | i18n }}

\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
$USD
\n \n
\n
\n
\n {{ \"creditDelayed\" | i18n }}\n
\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { PaymentRequest } from \"jslib-common/models/request/paymentRequest\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-adjust-payment\",\n templateUrl: \"adjust-payment.component.html\",\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then((result) => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"updatedPaymentMethod\")\n );\n this.onAdjusted.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === \"US\") {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","
\n
\n \n

\n {{ (currentType != null ? \"changePaymentMethod\" : \"addPaymentMethod\") | i18n }}\n

\n \n \n \n \n
\n
\n","import { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StorageRequest } from \"jslib-common/models/request/storageRequest\";\nimport { PaymentResponse } from \"jslib-common/models/response/paymentResponse\";\n\nimport { PaymentComponent } from \"./payment.component\";\n\n@Component({\n selector: \"app-adjust-storage\",\n templateUrl: \"adjust-storage.component.html\",\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = \"year\";\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(\n this.organizationId,\n request\n );\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(\n result.paymentIntentClientSecret,\n null\n );\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.platformUtilsService.showToast(\n \"warning\",\n null,\n this.i18nService.t(\"couldNotChargeCardPayInvoice\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"../billing\"], { relativeTo: this.activatedRoute });\n } else {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"adjustedStorage\", request.storageGbAdjustment.toString())\n );\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","
\n
\n \n

{{ (add ? \"addStorage\" : \"removeStorage\") | i18n }}

\n
\n
\n \n \n
\n
\n
\n {{ \"total\" | i18n }}: {{ storageAdjustment || 0 }} GB ×\n {{ storageGbPrice | currency: \"$\" }} = {{ adjustedStorageTotal | currency: \"$\" }} /{{\n interval | i18n\n }}\n
\n \n \n \n {{ (add ? \"storageAddNote\" : \"storageRemoveNote\") | i18n }}\n \n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { ApiKeyResponse } from \"jslib-common/models/response/apiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-api-key\",\n templateUrl: \"api-key.component.html\",\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: SecretVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: Verification;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(\n private userVerificationService: UserVerificationService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.postKey(this.entityId, request));\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ apiKeyTitle | i18n }}

\n \n ×\n \n
\n
\n

{{ apiKeyDescription | i18n }}

\n \n \n\n {{ apiKeyWarning | i18n }}\n \n

\n client_id:
\n {{ clientId }}\n

\n

\n client_secret:
\n {{ clientSecret }}\n

\n

\n scope:
\n {{ scope }}\n

\n

\n grant_type:
\n {{ grantType }}\n

\n \n
\n
\n \n \n {{ (isRotation ? \"rotateApiKey\" : \"viewApiKey\") | i18n }}\n \n \n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { BillingSyncConfigApi } from \"jslib-common/models/api/billingSyncConfigApi\";\nimport { BillingSyncConfigRequest } from \"jslib-common/models/request/billingSyncConfigRequest\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { OrganizationConnectionResponse } from \"jslib-common/models/response/organizationConnectionResponse\";\n\n@Component({\n selector: \"app-billing-sync-key\",\n templateUrl: \"billing-sync-key.component.html\",\n})\nexport class BillingSyncKeyComponent {\n entityId: string;\n existingConnectionId: string;\n billingSyncKey: string;\n setParentConnection: (connection: OrganizationConnectionResponse) => void;\n\n formPromise: Promise> | Promise;\n\n constructor(private apiService: ApiService, private logService: LogService) {}\n\n async submit() {\n try {\n const request = new OrganizationConnectionRequest(\n this.entityId,\n OrganizationConnectionType.CloudBillingSync,\n true,\n new BillingSyncConfigRequest(this.billingSyncKey)\n );\n if (this.existingConnectionId == null) {\n this.formPromise = this.apiService.createOrganizationConnection(\n request,\n BillingSyncConfigApi\n );\n } else {\n this.formPromise = this.apiService.updateOrganizationConnection(\n request,\n BillingSyncConfigApi,\n this.existingConnectionId\n );\n }\n const response = (await this\n .formPromise) as OrganizationConnectionResponse;\n this.existingConnectionId = response?.id;\n this.billingSyncKey = response?.config?.billingSyncKey;\n this.setParentConnection(response);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async deleteConnection() {\n this.formPromise = this.apiService.deleteOrganizationConnection(this.existingConnectionId);\n await this.formPromise;\n this.setParentConnection(null);\n }\n}\n","
\n
\n \n
\n

{{ \"manageBillingSync\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"billingSyncKeyDesc\" | i18n }}

\n
\n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { EmailRequest } from \"jslib-common/models/request/emailRequest\";\nimport { EmailTokenRequest } from \"jslib-common/models/request/emailTokenRequest\";\n\n@Component({\n selector: \"app-change-email\",\n templateUrl: \"change-email.component.html\",\n})\nexport class ChangeEmailComponent implements OnInit {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n showTwoFactorEmailWarning = false;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n const twoFactorProviders = await this.apiService.getTwoFactorProviders();\n this.showTwoFactorEmailWarning = twoFactorProviders.data.some(\n (p) => p.type === TwoFactorProviderType.Email && p.enabled\n );\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.stateService.getKdfType();\n const kdfIterations = await this.stateService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n this.newEmail,\n kdf,\n kdfIterations\n );\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n newKey\n );\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"emailChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","
\n \n {{ \"changeEmailTwoFactorWarning\" | i18n }}\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n

{{ \"changeEmailDesc\" | i18n: newEmail }}

\n {{ \"loggedOutWarning\" | i18n }}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { DEFAULT_KDF_ITERATIONS, KdfType } from \"jslib-common/enums/kdfType\";\nimport { KdfRequest } from \"jslib-common/models/request/kdfRequest\";\n\n@Component({\n selector: \"app-change-kdf\",\n templateUrl: \"change-kdf.component.html\",\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n recommendedKdfIterations = DEFAULT_KDF_ITERATIONS;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {\n this.kdfOptions = [{ name: \"PBKDF2 SHA-256\", value: KdfType.PBKDF2_SHA256 }];\n }\n\n async ngOnInit() {\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.stateService.getEmail();\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n email,\n this.kdf,\n this.kdfIterations\n );\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n newKey\n );\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"encKeySettingsChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n

{{ \"encKeySettings\" | i18n }}

\n
\n{{ \"loggedOutWarning\" | i18n }}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n

{{ \"kdfIterationsDesc\" | i18n: (recommendedKdfIterations | number) }}

\n {{ \"warning\" | i18n }}: {{ \"kdfIterationsWarning\" | i18n: (50000 | number) }}\n
\n
\n
\n
\n \n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"jslib-angular/components/change-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EmergencyAccessStatusType } from \"jslib-common/enums/emergencyAccessStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { CipherWithIdRequest } from \"jslib-common/models/request/cipherWithIdRequest\";\nimport { EmergencyAccessUpdateRequest } from \"jslib-common/models/request/emergencyAccessUpdateRequest\";\nimport { FolderWithIdRequest } from \"jslib-common/models/request/folderWithIdRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { PasswordRequest } from \"jslib-common/models/request/passwordRequest\";\nimport { SendWithIdRequest } from \"jslib-common/models/request/sendWithIdRequest\";\nimport { UpdateKeyRequest } from \"jslib-common/models/request/updateKeyRequest\";\n\n@Component({\n selector: \"app-change-password\",\n templateUrl: \"change-password.component.html\",\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private syncService: SyncService,\n private apiService: ApiService,\n private sendService: SendService,\n private organizationService: OrganizationService,\n private keyConnectorService: KeyConnectorService,\n private router: Router\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n if (await this.keyConnectorService.getUsesKeyConnector()) {\n this.router.navigate([\"/settings/security/two-factor\"]);\n }\n await super.ngOnInit();\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"oldAttachmentsNeedFixDesc\"),\n null,\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"close\"),\n \"warning\"\n );\n if (learnMore) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/attachments/#add-storage-space\"\n );\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"updateEncryptionKeyWarning\") +\n \" \" +\n this.i18nService.t(\"updateEncryptionKeyExportWarning\") +\n \" \" +\n this.i18nService.t(\"rotateEncKeyConfirmation\"),\n this.i18nService.t(\"rotateEncKeyTitle\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(\n newMasterPasswordHash: string,\n newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, EncString]\n ) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(\n this.currentMasterPassword,\n null\n );\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"masterPasswordChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n const sends = await this.sendService.getAll();\n await Promise.all(\n sends.map(async (send) => {\n const cryptoKey = await this.cryptoService.decryptToBytes(send.key, null);\n send.key = (await this.cryptoService.encrypt(cryptoKey, encKey[0])) ?? send.key;\n request.sends.push(new SendWithIdRequest(send));\n })\n );\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n\n await this.updateAllResetPasswordKeys(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n\n private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) {\n const orgs = await this.organizationService.getAll();\n\n for (const org of orgs) {\n // If not already enrolled, skip\n if (!org.resetPasswordEnrolled) {\n continue;\n }\n\n // Retrieve public key\n const response = await this.apiService.getOrganizationKeys(org.id);\n const publicKey = Utils.fromB64ToArray(response?.publicKey);\n\n // Re-enroll - encrpyt user's encKey.key with organization public key\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create/Execute request\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = encryptedKey.encryptedString;\n\n await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n }\n }\n}\n","
\n

{{ \"changeMasterPassword\" | i18n }}

\n
\n\n{{ \"loggedOutWarning\" | i18n }}\n\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n
\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\n\nimport { OrganizationPlansComponent } from \"./organization-plans.component\";\n\n@Component({\n selector: \"app-create-organization\",\n templateUrl: \"create-organization.component.html\",\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true })\n orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.plan === \"families\") {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === \"teams\") {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === \"enterprise\") {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n });\n }\n}\n","
\n
\n
\n
\n

{{ \"newOrganization\" | i18n }}

\n
\n

{{ \"newOrganizationDesc\" | i18n }}

\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-deauthorize-sessions\",\n templateUrl: \"deauthorize-sessions.component.html\",\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private messagingService: MessagingService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.postSecurityStamp(request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"sessionsDeauthorized\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"deauthorizeSessions\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"deauthorizeSessionsDesc\" | i18n }}

\n {{ \"deauthorizeSessionsWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-delete-account\",\n templateUrl: \"delete-account.component.html\",\n})\nexport class DeleteAccountComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private messagingService: MessagingService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.deleteAccount(request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"accountDeleted\"),\n this.i18nService.t(\"accountDeletedDesc\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"deleteAccount\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"deleteAccountDesc\" | i18n }}

\n {{ \"deleteAccountWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UpdateDomainsRequest } from \"jslib-common/models/request/updateDomainsRequest\";\n\n@Component({\n selector: \"app-domain-rules\",\n templateUrl: \"domain-rules.component.html\",\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map((d) => d.join(\", \"));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map((d) => {\n return {\n domains: d.domains.join(\", \"),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push(\"\");\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global\n .filter((d) => d.excluded)\n .map((d) => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom\n .filter((d) => d != null && d.trim() !== \"\")\n .map((d) => d.split(\",\").map((d2) => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"domainsUpdated\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","
\n

{{ \"domainRules\" | i18n }}

\n
\n

{{ \"domainRulesDesc\" | i18n }}

\n
\n

{{ \"customEqDomains\" | i18n }}

\n

\n \n {{ \"loading\" | i18n }}\n

\n \n
\n
\n \n \n
\n \n \n \n
\n \n {{ \"newCustomDomainDesc\" | i18n }}\n
\n \n

{{ \"globalEqDomains\" | i18n }}

\n

\n \n {{ \"loading\" | i18n }}\n

\n 0\">\n \n \n \n \n \n \n
{{ d.domains }}\n
\n \n \n \n
\n \n \n {{ \"exclude\" | i18n }}\n \n \n \n {{ \"include\" | i18n }}\n \n \n \n {{ \"customize\" | i18n }}\n \n
\n
\n
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EmergencyAccessType } from \"jslib-common/enums/emergencyAccessType\";\nimport { EmergencyAccessInviteRequest } from \"jslib-common/models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessUpdateRequest } from \"jslib-common/models/request/emergencyAccessUpdateRequest\";\n\n@Component({\n selector: \"emergency-access-add-edit\",\n templateUrl: \"emergency-access-add-edit.component.html\",\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly = false;\n editMode = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number }[];\n waitTime: number;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t(\"oneDay\"), value: 1 },\n { name: this.i18nService.t(\"days\", \"2\"), value: 2 },\n { name: this.i18nService.t(\"days\", \"7\"), value: 7 },\n { name: this.i18nService.t(\"days\", \"14\"), value: 14 },\n { name: this.i18nService.t(\"days\", \"30\"), value: 30 },\n { name: this.i18nService.t(\"days\", \"90\"), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editEmergencyContact\");\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteEmergencyContact\");\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSaved.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","
\n
\n \n
\n

\n \n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"inviteEmergencyContactDesc\" | i18n }}

\n
\n \n \n
\n
\n

\n {{ \"userAccess\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n {{ \"waitTimeDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"jslib-angular/components/attachments.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\n@Component({\n selector: \"emergency-access-attachments\",\n templateUrl: \"../vault/attachments.component.html\",\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n platformUtilsService,\n apiService,\n window,\n logService,\n stateService\n );\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"emergency-access-confirm\",\n templateUrl: \"emergency-access-confirm.component.html\",\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(\n private apiService: ApiService,\n private cryptoService: CryptoService,\n private stateService: StateService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.stateService.setAutoConfirmFingerprints(true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ChangePasswordComponent } from \"jslib-angular/components/change-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { KdfType } from \"jslib-common/enums/kdfType\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { EmergencyAccessPasswordRequest } from \"jslib-common/models/request/emergencyAccessPasswordRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\n@Component({\n selector: \"emergency-access-takeover\",\n templateUrl: \"emergency-access-takeover.component.html\",\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private apiService: ApiService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map(\n (policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse))\n );\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(\n policies\n );\n }\n }\n\n async submit() {\n if (!(await this.strongPassword())) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(\n this.emergencyAccessId\n );\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unexpectedError\")\n );\n return;\n }\n\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n takeoverResponse.kdf,\n takeoverResponse.kdfIterations\n );\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"takeover\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n {{ \"loggedOutWarning\" | i18n }}\n \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { EmergencyAccessViewResponse } from \"jslib-common/models/response/emergencyAccessResponse\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { EmergencyAccessAttachmentsComponent } from \"./emergency-access-attachments.component\";\nimport { EmergencyAddEditComponent } from \"./emergency-add-edit.component\";\n\n@Component({\n selector: \"emergency-access-view\",\n templateUrl: \"emergency-access-view.component.html\",\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n loaded = false;\n\n constructor(\n private cipherService: CipherService,\n private cryptoService: CryptoService,\n private modalService: ModalService,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe((qParams) => {\n if (qParams.id == null) {\n return this.router.navigate([\"settings/emergency-access\"]);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n async selectCipher(cipher: CipherView) {\n // eslint-disable-next-line\n const [_, childComponent] = await this.modalService.openViewRef(\n EmergencyAddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.cipher = cipher;\n }\n );\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n this.loaded = true;\n }\n\n async viewAttachments(cipher: CipherView) {\n await this.modalService.openViewRef(\n EmergencyAccessAttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.cipher = cipher;\n comp.emergencyAccessId = this.id;\n }\n );\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach((cipherResponse) => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then((c) => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","
\n

{{ \"vault\" | i18n }}

\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n
\n
\n \n \n {{ \"loading\" | i18n }}\n \n
\n\n\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { EmergencyAccessStatusType } from \"jslib-common/enums/emergencyAccessStatusType\";\nimport { EmergencyAccessType } from \"jslib-common/enums/emergencyAccessType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EmergencyAccessConfirmRequest } from \"jslib-common/models/request/emergencyAccessConfirmRequest\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n} from \"jslib-common/models/response/emergencyAccessResponse\";\n\nimport { EmergencyAccessAddEditComponent } from \"./emergency-access-add-edit.component\";\nimport { EmergencyAccessConfirmComponent } from \"./emergency-access-confirm.component\";\nimport { EmergencyAccessTakeoverComponent } from \"./emergency-access-takeover.component\";\n\n@Component({\n selector: \"emergency-access\",\n templateUrl: \"emergency-access.component.html\",\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"takeoverTemplate\", { read: ViewContainerRef, static: true })\n takeoverModalRef: ViewContainerRef;\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private userNamePipe: UserNamePipe,\n private logService: LogService,\n private stateService: StateService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n const orgs = await this.organizationService.getAll();\n this.isOrganizationOwner = orgs.some((o) => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n async edit(details: EmergencyAccessGranteeDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(details);\n comp.emergencyAccessId = details?.id;\n comp.readOnly = !this.canAccessPremium;\n comp.onSaved.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeleted.subscribe(() => {\n modal.close();\n this.remove(details);\n });\n }\n );\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenReinvited\", contact.email)\n );\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.stateService.getAutoConfirmFingerPrints();\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessConfirmComponent,\n this.confirmModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(contact);\n comp.emergencyAccessId = contact.id;\n comp.userId = contact?.granteeId;\n comp.onConfirmed.subscribe(async () => {\n modal.close();\n\n comp.formPromise = this.doConfirmation(contact);\n await comp.formPromise;\n\n updateUser();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(contact))\n );\n });\n }\n );\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(contact))\n );\n this.actionPromise = null;\n }\n\n async remove(\n details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse\n ) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeUserConfirmation\"),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.userNamePipe.transform(details))\n );\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"requestAccessConfirmation\", details.waitTimeDays.toString()),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"requestAccess\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"requestSent\", this.userNamePipe.transform(details))\n );\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(\n details.type === EmergencyAccessType.View ? \"view\" : \"takeover\"\n );\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"approveAccessConfirmation\", this.userNamePipe.transform(details), type),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"approve\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"emergencyApproved\", this.userNamePipe.transform(details))\n );\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"emergencyRejected\", this.userNamePipe.transform(details))\n );\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessTakeoverComponent,\n this.takeoverModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(details);\n comp.email = details.email;\n comp.emergencyAccessId = details != null ? details.id : null;\n\n comp.onDone.subscribe(() => {\n modal.close();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"passwordResetFor\", this.userNamePipe.transform(details))\n );\n });\n }\n );\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n this.logService.debug(\n \"User's fingerprint: \" +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join(\"-\")\n );\n } catch {\n // Ignore errors since it's just a debug message\n }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","
\n

{{ \"emergencyAccess\" | i18n }}

\n
\n

\n {{ \"emergencyAccessDesc\" | i18n }}\n \n {{ \"learnMore\" | i18n }}.\n \n

\n\n

\n {{ \"warning\" | i18n }}: {{ \"emergencyAccessOwnerWarning\" | i18n }}\n

\n\n
\n

\n {{ \"trustedEmergencyContacts\" | i18n }}\n \n

\n
\n \n \n {{ \"addEmergencyContact\" | i18n }}\n \n
\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n \n {{ c.email }}\n {{ \"invited\" | i18n }}\n {{\n \"accepted\" | i18n\n }}\n {{ \"emergencyAccessRecoveryInitiated\" | i18n }}\n {{ \"emergencyAccessRecoveryApproved\" | i18n }}\n\n {{\n \"view\" | i18n\n }}\n {{\n \"takeover\" | i18n\n }}\n\n {{ c.name }}\n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"approve\" | i18n }}\n \n \n \n {{ \"reject\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n
\n\n

{{ \"noTrustedContacts\" | i18n }}

\n\n
\n

{{ \"designatedEmergencyContacts\" | i18n }}

\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n \n {{ c.email }}\n {{ \"invited\" | i18n }}\n {{\n \"accepted\" | i18n\n }}\n {{ \"emergencyAccessRecoveryInitiated\" | i18n }}\n {{ \"emergencyAccessRecoveryApproved\" | i18n }}\n\n {{\n \"view\" | i18n\n }}\n {{\n \"takeover\" | i18n\n }}\n\n {{ c.name }}\n \n
\n \n \n \n
\n \n \n {{ \"requestAccess\" | i18n }}\n \n \n \n {{ \"takeover\" | i18n }}\n \n \n \n {{ \"view\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n
\n\n

{{ \"noGrantedAccess\" | i18n }}

\n\n\n\n\n","import { Component } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"../vault/add-edit.component\";\n\n@Component({\n selector: \"app-org-vault-add-edit\",\n templateUrl: \"../vault/add-edit.component.html\",\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n totpService: TotpService,\n passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService,\n eventService: EventService,\n policyService: PolicyService,\n passwordRepromptService: PasswordRepromptService,\n organizationService: OrganizationService,\n logService: LogService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n totpService,\n passwordGenerationService,\n messagingService,\n eventService,\n policyService,\n organizationService,\n logService,\n passwordRepromptService\n );\n }\n\n async load() {\n this.title = this.i18nService.t(\"viewItem\");\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { OrganizationCreateRequest } from \"jslib-common/models/request/organizationCreateRequest\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUpgradeRequest } from \"jslib-common/models/request/organizationUpgradeRequest\";\nimport { ProviderOrganizationCreateRequest } from \"jslib-common/models/request/provider/providerOrganizationCreateRequest\";\nimport { PlanResponse } from \"jslib-common/models/response/planResponse\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-organization-plans\",\n templateUrl: \"organization-plans.component.html\",\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() acceptingSponsorship = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Input() providerId: string;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading = true;\n selfHosted = false;\n ownedBusiness = false;\n premiumAccessAddon = false;\n additionalStorage = 0;\n additionalSeats = 0;\n name: string;\n billingEmail: string;\n clientOwnerEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock = false;\n discount = 0;\n\n plans: PlanResponse[];\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private router: Router,\n private syncService: SyncService,\n private policyService: PolicyService,\n private organizationService: OrganizationService,\n private logService: LogService,\n private messagingService: MessagingService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n\n if (this.providerId) {\n this.ownedBusiness = true;\n this.changedOwnedBusiness();\n }\n\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find((plan) => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual ? \"year\" : \"month\";\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter((plan) => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter((plan) => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter((plan) => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans.filter(\n (plan) =>\n !plan.legacyYear &&\n !plan.disabled &&\n (plan.isAnnual || plan.product === this.productTypes.Free)\n );\n\n if (this.acceptingSponsorship) {\n const familyPlan = this.plans.find((plan) => plan.type === PlanType.FamiliesAnnually);\n this.discount = familyPlan.basePrice;\n validPlans = [familyPlan];\n }\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(\n (plan) => !plan.legacyYear && !plan.disabled && plan.product === this.product\n );\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal - this.discount;\n }\n\n get freeTrial() {\n return this.selectedPlan.trialPeriodDays != null;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null\n ? (this.taxComponent.taxRate / 100) * this.subtotal\n : 0;\n }\n\n get total() {\n return this.subtotal + this.taxCharges || 0;\n }\n\n get paymentDesc() {\n if (this.acceptingSponsorship) {\n return this.i18nService.t(\"paymentSponsored\");\n } else if (this.freeTrial && this.createOrganization) {\n return this.i18nService.t(\"paymentChargedWithTrial\");\n } else {\n return this.i18nService.t(\"paymentCharged\", this.i18nService.t(this.selectedPlanInterval));\n }\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (\n !this.additionalSeats &&\n !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption\n ) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== \"US\";\n // Bank Account payments are only available for US customers\n if (\n this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount\n ) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy();\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n\n try {\n const doSubmit = async (): Promise => {\n let orgId: string = null;\n if (this.createOrganization) {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t(\"defaultCollection\"),\n shareKey[1]\n );\n const collectionCt = collection.encryptedString;\n const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]);\n\n if (this.selfHosted) {\n orgId = await this.createSelfHosted(key, collectionCt, orgKeys);\n } else {\n orgId = await this.createCloudHosted(key, collectionCt, orgKeys, shareKey[1]);\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"organizationCreated\"),\n this.i18nService.t(\"organizationReadyToGo\")\n );\n } else {\n orgId = await this.updateOrganization(orgId);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationUpgraded\")\n );\n }\n\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (!this.acceptingSponsorship) {\n this.router.navigate([\"/organizations/\" + orgId]);\n }\n\n return orgId;\n };\n\n this.formPromise = doSubmit();\n const organizationId = await this.formPromise;\n this.onSuccess.emit({ organizationId: organizationId });\n this.messagingService.send(\"organizationCreated\", organizationId);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async userHasBlockingSingleOrgPolicy() {\n return this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n private async updateOrganization(orgId: string) {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon =\n this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n // Retrieve org info to backfill pub/priv key if necessary\n const org = await this.organizationService.get(this.organizationId);\n if (!org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n return this.organizationId;\n }\n\n private async createCloudHosted(\n key: string,\n collectionCt: string,\n orgKeys: [string, EncString],\n orgKey: SymmetricCryptoKey\n ) {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n const tokenResult = await this.paymentComponent.createPaymentToken();\n\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon =\n this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n\n if (this.providerId) {\n const providerRequest = new ProviderOrganizationCreateRequest(this.clientOwnerEmail, request);\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n providerRequest.organizationCreateRequest.key = (\n await this.cryptoService.encrypt(orgKey.key, providerKey)\n ).encryptedString;\n const orgId = (\n await this.apiService.postProviderCreateOrganization(this.providerId, providerRequest)\n ).organizationId;\n\n return orgId;\n } else {\n return (await this.apiService.postOrganization(request)).id;\n }\n }\n\n private async createSelfHosted(key: string, collectionCt: string, orgKeys: [string, EncString]) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n throw new Error(this.i18nService.t(\"selectFile\"));\n }\n\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n fd.append(\"key\", key);\n fd.append(\"collectionName\", collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n const orgId = response.id;\n\n // Org Keys live outside of the OrganizationLicense - add the keys to the org here\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n await this.apiService.postOrganizationKeys(orgId, request);\n\n return orgId;\n }\n}\n","\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"uploadLicenseFileOrg\" | i18n }}

\n
\n
\n \n \n {{\n \"licenseFileDesc\" | i18n: \"bitwarden_organization_license.json\"\n }}\n
\n \n
\n
\n\n

{{ \"generalInformation\" | i18n }}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n {{ \"clientOwnerDesc\" | i18n: \"20\" }}\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n

{{ \"chooseYourPlan\" | i18n }}

\n
\n \n \n
\n
\n \n

{{ \"users\" | i18n }}

\n
\n
\n \n \n {{ \"userSeatsHowManyDesc\" | i18n }}\n
\n
\n
\n

{{ \"addons\" | i18n }}

\n
\n
\n \n \n {{\n \"userSeatsAdditionalDesc\"\n | i18n: selectedPlan.baseSeats:(seatPriceMonthly(selectedPlan) | currency: \"$\")\n }}\n
\n
\n
\n
\n \n \n {{\n \"additionalStorageIntervalDesc\"\n | i18n\n : \"1 GB\"\n : (additionalStoragePriceMonthly(selectedPlan) | currency: \"$\")\n : (\"month\" | i18n)\n }}\n
\n
\n
\n
\n
\n \n \n
\n {{\n \"premiumAccessDesc\" | i18n: (3.33 | currency: \"$\"):(\"month\" | i18n)\n }}\n
\n
\n

{{ \"summary\" | i18n }}

\n
\n \n \n
\n
\n

\n {{ (createOrganization ? \"paymentInformation\" : \"billingInformation\") | i18n }}\n

\n \n {{ paymentDesc }}\n \n \n \n
\n
\n {{ \"planPrice\" | i18n }}: {{ subtotal | currency: \"USD $\" }}\n
\n \n {{ \"estimatedTax\" | i18n }}: {{ taxCharges | currency: \"USD $\" }}\n \n
\n
\n

\n {{ \"total\" | i18n }}: {{ total | currency: \"USD $\" }}/{{\n selectedPlanInterval | i18n\n }}\n

\n
\n \n \n \n
\n
\n {{ \"singleOrgBlockCreateMessage\" | i18n }}\n
\n
\n \n \n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\n\n@Component({\n selector: \"app-payment-method\",\n templateUrl: \"payment-method.component.html\",\n})\nexport class PaymentMethodComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingPaymentResponse;\n paymentMethodType = PaymentMethodType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n if (this.platformUtilsService.isSelfHost()) {\n this.router.navigate([\"/settings/subscription\"]);\n }\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.billing = await this.apiService.getUserBillingPayment();\n this.loading = false;\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"addCredit\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"changePaymentMethod\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return (\n this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp)\n );\n }\n}\n","
\n

\n {{ \"paymentMethod\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ (isCreditBalance ? \"accountCredit\" : \"accountBalance\") | i18n }}

\n

\n {{ creditOrBalance | currency: \"$\" }}\n

\n

{{ \"creditAppliedDesc\" | i18n }}

\n \n \n \n

{{ \"paymentMethod\" | i18n }}

\n

{{ \"noPaymentMethod\" | i18n }}

\n \n

\n \n {{ \"inAppPurchase\" | i18n }}\n {{ paymentSource.description }}\n

\n
\n \n \n \n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\n\nimport ThemeVariables from \"src/scss/export.module.scss\";\n\nconst lightInputColor = ThemeVariables.lightInputColor;\nconst lightInputPlaceholderColor = ThemeVariables.lightInputPlaceholderColor;\nconst darkInputColor = ThemeVariables.darkInputColor;\nconst darkInputPlaceholderColor = ThemeVariables.darkInputPlaceholderColor;\n\n@Component({\n selector: \"app-payment\",\n templateUrl: \"payment.component.html\",\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: \"\",\n currency: \"USD\",\n country: \"US\",\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n private StripeElementStyle: any;\n private StripeElementClasses: any;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private apiService: ApiService,\n private logService: LogService\n ) {\n this.stripeScript = window.document.createElement(\"script\");\n this.stripeScript.src = \"https://js.stripe.com/v3/\";\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(process.env.STRIPE_KEY);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement(\"script\");\n this.btScript.src = `scripts/dropin.js?cache=${process.env.CACHE_TAG}`;\n this.btScript.async = true;\n this.StripeElementStyle = {\n base: {\n color: null,\n fontFamily:\n '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: \"14px\",\n fontSmoothing: \"antialiased\",\n \"::placeholder\": {\n color: null,\n },\n },\n invalid: {\n color: null,\n },\n };\n this.StripeElementClasses = {\n focus: \"is-focused\",\n empty: \"is-empty\",\n invalid: \"is-invalid\",\n };\n }\n\n async ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n await this.setTheme();\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll(\"iframe\")).forEach((el) => {\n if (el.src != null && el.src.indexOf(\"stripe\") > -1) {\n try {\n window.document.body.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll(\"script\")).forEach((el) => {\n if (el.src != null && el.src.indexOf(\"paypal\") > -1) {\n try {\n window.document.head.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n const btStylesheet = window.document.head.querySelector(\"#braintree-dropin-stylesheet\");\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch (e) {\n this.logService.error(e);\n }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create(\n {\n authorization: process.env.BRAINTREE_KEY,\n container: \"#bt-dropin-container\",\n paymentOptionPriority: [\"paypal\"],\n paypal: {\n flow: \"vault\",\n buttonStyle: {\n label: \"pay\",\n size: \"medium\",\n shape: \"pill\",\n color: \"blue\",\n tagline: \"false\",\n },\n },\n },\n (createErr: any, instance: any) => {\n if (createErr != null) {\n // eslint-disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n }\n );\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance\n .requestPaymentMethod()\n .then((payload: any) => {\n resolve([payload.nonce, this.method]);\n })\n .catch((err: any) => {\n reject(err.message);\n });\n } else if (\n this.method === PaymentMethodType.Card ||\n this.method === PaymentMethodType.BankAccount\n ) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService\n .postSetupPayment()\n .then((clientSecret) =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement)\n )\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === \"succeeded\") {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken(\"bank_account\", this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () =>\n this.showMethods\n ? this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement)\n : this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === \"succeeded\") {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create(\"cardNumber\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: \"\",\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create(\"cardExpiry\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create(\"cardCvc\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: \"\",\n });\n }\n this.stripeCardNumberElement.mount(\"#stripe-card-number-element\");\n this.stripeCardExpiryElement.mount(\"#stripe-card-expiry-element\");\n this.stripeCardCvcElement.mount(\"#stripe-card-cvc-element\");\n }\n }, 50);\n }\n\n private async setTheme() {\n const theme = await this.platformUtilsService.getEffectiveTheme();\n if (theme === ThemeType.Dark) {\n this.StripeElementStyle.base.color = darkInputColor;\n this.StripeElementStyle.base[\"::placeholder\"].color = darkInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = darkInputColor;\n } else {\n this.StripeElementStyle.base.color = lightInputColor;\n this.StripeElementStyle.base[\"::placeholder\"].color = lightInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = lightInputColor;\n }\n }\n}\n","
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n\n \n {{ \"verifyBankAccountInitialDesc\" | i18n }} {{ \"verifyBankAccountFailureWarning\" | i18n }}\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n {{ \"paypalClickSubmit\" | i18n }}\n
\n
\n\n \n {{ \"makeSureEnoughCredit\" | i18n }}\n \n\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-preferences\",\n templateUrl: \"preferences.component.html\",\n})\nexport class PreferencesComponent implements OnInit {\n vaultTimeoutAction = \"lock\";\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n theme: ThemeType;\n locale: string;\n vaultTimeouts: { name: string; value: number }[];\n localeOptions: any[];\n themeOptions: any[];\n\n vaultTimeout: FormControl = new FormControl(null);\n\n private startingLocale: string;\n private startingTheme: ThemeType;\n\n constructor(\n private stateService: StateService,\n private i18nService: I18nService,\n private vaultTimeoutService: VaultTimeoutService,\n private platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService\n ) {\n this.vaultTimeouts = [\n { name: i18nService.t(\"oneMinute\"), value: 1 },\n { name: i18nService.t(\"fiveMinutes\"), value: 5 },\n { name: i18nService.t(\"fifteenMinutes\"), value: 15 },\n { name: i18nService.t(\"thirtyMinutes\"), value: 30 },\n { name: i18nService.t(\"oneHour\"), value: 60 },\n { name: i18nService.t(\"fourHours\"), value: 240 },\n { name: i18nService.t(\"onRefresh\"), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t(\"never\"), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach((locale) => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += \" - \" + i18nService.localeNames.get(locale);\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, \"name\"));\n localeOptions.splice(0, 0, { name: i18nService.t(\"default\"), value: null });\n this.localeOptions = localeOptions;\n this.themeOptions = [\n { name: i18nService.t(\"themeLight\"), value: ThemeType.Light },\n { name: i18nService.t(\"themeDark\"), value: ThemeType.Dark },\n { name: i18nService.t(\"themeSystem\"), value: ThemeType.System },\n ];\n }\n\n async ngOnInit() {\n this.vaultTimeout.setValue(await this.vaultTimeoutService.getVaultTimeout());\n this.vaultTimeoutAction = await this.stateService.getVaultTimeoutAction();\n this.disableIcons = await this.stateService.getDisableFavicon();\n this.enableGravatars = await this.stateService.getEnableGravitars();\n this.enableFullWidth = await this.stateService.getEnableFullWidth();\n\n this.locale = (await this.stateService.getLocale()) ?? null;\n this.startingLocale = this.locale;\n\n this.theme = await this.stateService.getTheme();\n this.startingTheme = this.theme;\n }\n\n async submit() {\n if (!this.vaultTimeout.valid) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"vaultTimeoutToLarge\"));\n return;\n }\n\n await this.vaultTimeoutService.setVaultTimeoutOptions(\n this.vaultTimeout.value,\n this.vaultTimeoutAction\n );\n await this.stateService.setDisableFavicon(this.disableIcons);\n await this.stateService.setEnableGravitars(this.enableGravatars);\n await this.stateService.setEnableFullWidth(this.enableFullWidth);\n this.messagingService.send(\"setFullWidth\");\n if (this.theme !== this.startingTheme) {\n await this.stateService.setTheme(this.theme);\n this.startingTheme = this.theme;\n const effectiveTheme = await this.platformUtilsService.getEffectiveTheme();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.remove(\"theme_\" + ThemeType.Light, \"theme_\" + ThemeType.Dark);\n htmlEl.classList.add(\"theme_\" + effectiveTheme);\n }\n await this.stateService.setLocale(this.locale);\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"preferencesUpdated\")\n );\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === \"logOut\") {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"vaultTimeoutLogOutConfirmation\"),\n this.i18nService.t(\"vaultTimeoutLogOutConfirmationTitle\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n if (!confirmed) {\n this.vaultTimeoutAction = \"lock\";\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","
\n

{{ \"preferences\" | i18n }}

\n
\n

{{ \"preferencesDesc\" | i18n }}

\n
\n
\n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n \n {{ \"languageDesc\" | i18n }}\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n {{ \"disableIconsDesc\" | i18n }}\n
\n
\n
\n \n \n \n \n \n
\n {{ \"enableGravatarsDesc\" | i18n }}\n
\n
\n
\n \n \n
\n {{ \"enableFullWidthDesc\" | i18n }}\n
\n
\n
\n
\n \n \n {{ \"themeDesc\" | i18n }}\n
\n
\n
\n \n
\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-premium\",\n templateUrl: \"premium.component.html\",\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService,\n private router: Router,\n private messagingService: MessagingService,\n private syncService: SyncService,\n private logService: LogService,\n private stateService: StateService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate([\"/settings/subscription/user-subscription\"]);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"verifyEmailFirst\")\n );\n return;\n }\n\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent\n .createPaymentToken()\n .then((result) => {\n const fd = new FormData();\n fd.append(\"paymentMethodType\", result[1].toString());\n if (result[0] != null) {\n fd.append(\"paymentToken\", result[0]);\n }\n fd.append(\"additionalStorageGb\", (this.additionalStorage || 0).toString());\n fd.append(\"country\", this.taxInfoComponent.taxInfo.country);\n fd.append(\"postalCode\", this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n })\n .then((paymentResponse) => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(\n paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium()\n );\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"premiumUpdated\"));\n this.messagingService.send(\"purchasedPremium\");\n this.router.navigate([\"/settings/subscription/user-subscription\"]);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null\n ? (this.taxInfoComponent.taxRate / 100) * this.subtotal\n : 0;\n }\n\n get total(): number {\n return this.subtotal + this.taxCharges || 0;\n }\n}\n","
\n

{{ \"subscription\" | i18n }}

\n
\n
\n

{{ \"goPremium\" | i18n }}

\n
\n\n {{ \"alreadyPremiumFromOrg\" | i18n }}\n\n\n

{{ \"premiumUpgradeUnlockFeatures\" | i18n }}

\n
    \n
  • \n \n {{ \"premiumSignUpStorage\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpTwoStep\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpEmergency\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpReports\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpTotp\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpSupport\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpFuture\" | i18n }}\n
  • \n
\n

\n {{ \"premiumPrice\" | i18n: (premiumPrice | currency: \"$\") }}\n

\n \n {{ \"purchasePremium\" | i18n }}\n \n
\n\n

{{ \"uploadLicenseFilePremium\" | i18n }}

\n
\n
\n \n \n {{\n \"licenseFileDesc\" | i18n: \"bitwarden_premium_license.json\"\n }}\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n
\n
\n

{{ \"addons\" | i18n }}

\n
\n
\n \n \n {{\n \"additionalStorageIntervalDesc\"\n | i18n: \"1 GB\":(storageGbPrice | currency: \"$\"):(\"year\" | i18n)\n }}\n
\n
\n

{{ \"summary\" | i18n }}

\n {{ \"premiumMembership\" | i18n }}: {{ premiumPrice | currency: \"$\" }}
\n {{ \"additionalStorageGb\" | i18n }}: {{ additionalStorage || 0 }} GB ×\n {{ storageGbPrice | currency: \"$\" }} =\n {{ additionalStorageTotal | currency: \"$\" }}\n
\n

{{ \"paymentInformation\" | i18n }}

\n \n \n
\n
\n {{ \"planPrice\" | i18n }}: {{ subtotal | currency: \"USD $\" }}\n
\n \n {{ \"estimatedTax\" | i18n }}: {{ taxCharges | currency: \"USD $\" }}\n \n
\n
\n

\n {{ \"total\" | i18n }}: {{ total | currency: \"USD $\" }}/{{ \"year\" | i18n }}\n

\n
\n {{ \"paymentChargedAnnually\" | i18n }}\n \n \n {{ \"submit\" | i18n }}\n \n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UpdateProfileRequest } from \"jslib-common/models/request/updateProfileRequest\";\nimport { ProfileResponse } from \"jslib-common/models/response/profileResponse\";\n\n@Component({\n selector: \"app-profile\",\n templateUrl: \"profile.component.html\",\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n hidePasswordHint = false;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(\n await this.stateService.getUserId()\n );\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n this.hidePasswordHint = await this.keyConnectorService.getUsesKeyConnector();\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"accountUpdated\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n

\n {{ \"yourAccountsFingerprint\" | i18n }}:\n \n
\n {{ fingerprint }}\n

\n
\n
\n \n\n","import { Component, Input } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-purge-vault\",\n templateUrl: \"purge-vault.component.html\",\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private router: Router,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.postPurgeCiphers(request, this.organizationId));\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"vaultPurged\"));\n if (this.organizationId != null) {\n this.router.navigate([\"organizations\", this.organizationId, \"vault\"]);\n } else {\n this.router.navigate([\"vault\"]);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"purgeVault\" | i18n }}

\n \n ×\n \n
\n
\n

{{ (organizationId ? \"purgeOrgVaultDesc\" : \"purgeVaultDesc\") | i18n }}

\n {{ \"purgeVaultWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nimport { ApiKeyComponent } from \"./api-key.component\";\n\n@Component({\n selector: \"app-security-keys\",\n templateUrl: \"security-keys.component.html\",\n})\nexport class SecurityKeysComponent implements OnInit {\n @ViewChild(\"viewUserApiKeyTemplate\", { read: ViewContainerRef, static: true })\n viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild(\"rotateUserApiKeyTemplate\", { read: ViewContainerRef, static: true })\n rotateUserApiKeyModalRef: ViewContainerRef;\n\n showChangeKdf = true;\n\n constructor(\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private modalService: ModalService,\n private apiService: ApiService\n ) {}\n\n async ngOnInit() {\n this.showChangeKdf = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n\n async viewUserApiKey() {\n const entityId = await this.stateService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.viewUserApiKeyModalRef, (comp) => {\n comp.keyType = \"user\";\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n comp.scope = \"api\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"userApiKeyWarning\";\n comp.apiKeyDescription = \"userApiKeyDesc\";\n });\n }\n\n async rotateUserApiKey() {\n const entityId = await this.stateService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateUserApiKeyModalRef, (comp) => {\n comp.keyType = \"user\";\n comp.isRotation = true;\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n comp.scope = \"api\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"userApiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyRotateDesc\";\n });\n }\n}\n","\n\n

{{ \"apiKey\" | i18n }}

\n\n

\n {{ \"userApiKeyDesc\" | i18n }}\n

\n\n\n\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { ChangePasswordComponent } from \"./change-password.component\";\nimport { SecurityKeysComponent } from \"./security-keys.component\";\nimport { SecurityComponent } from \"./security.component\";\nimport { TwoFactorSetupComponent } from \"./two-factor-setup.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: SecurityComponent,\n data: { titleId: \"security\" },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"change-password\" },\n {\n path: \"change-password\",\n component: ChangePasswordComponent,\n data: { titleId: \"masterPassword\" },\n },\n {\n path: \"two-factor\",\n component: TwoFactorSetupComponent,\n data: { titleId: \"twoStepLogin\" },\n },\n {\n path: \"security-keys\",\n component: SecurityKeysComponent,\n data: { titleId: \"keys\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SecurityRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\n\n@Component({\n selector: \"app-security\",\n templateUrl: \"security.component.html\",\n})\nexport class SecurityComponent {\n showChangePassword = true;\n\n constructor(private keyConnectorService: KeyConnectorService) {}\n\n async ngOnInit() {\n this.showChangePassword = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n}\n","\n\n","import { Component, NgZone, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\nimport { StateService } from \"../../abstractions/state.service\";\n\nconst BroadcasterSubscriptionId = \"SettingsComponent\";\n\n@Component({\n selector: \"app-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n hasFamilySponsorshipAvailable: boolean;\n hideSubscription: boolean;\n\n constructor(\n private tokenService: TokenService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService,\n private organizationService: OrganizationService,\n private stateService: StateService,\n private apiService: ApiService\n ) {}\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"purchasedPremium\":\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n this.hasFamilySponsorshipAvailable = await this.organizationService.canManageSponsorships();\n const hasPremiumFromOrg = await this.stateService.getCanAccessPremium();\n let billing = null;\n if (!this.selfHosted) {\n billing = await this.apiService.getUserBillingHistory();\n }\n this.hideSubscription =\n !this.premium && hasPremiumFromOrg && (this.selfHosted || billing?.hasNoHistory);\n }\n}\n","
\n
\n
\n
\n
{{ \"accountSettings\" | i18n }}
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\n\nimport { notAllowedValueAsync } from \"jslib-angular/validators/notAllowedValueAsync.validator\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PlanSponsorshipType } from \"jslib-common/enums/planSponsorshipType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-sponsored-families\",\n templateUrl: \"sponsored-families.component.html\",\n})\nexport class SponsoredFamiliesComponent implements OnInit {\n loading = false;\n\n availableSponsorshipOrgs: Organization[] = [];\n activeSponsorshipOrgs: Organization[] = [];\n\n // Conditional display properties\n formPromise: Promise;\n\n sponsorshipForm: FormGroup;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private syncService: SyncService,\n private organizationService: OrganizationService,\n private formBuilder: FormBuilder,\n private stateService: StateService\n ) {\n this.sponsorshipForm = this.formBuilder.group({\n selectedSponsorshipOrgId: [\n \"\",\n {\n validators: [Validators.required],\n },\n ],\n sponsorshipEmail: [\n \"\",\n {\n validators: [Validators.email],\n asyncValidators: [\n notAllowedValueAsync(async () => await this.stateService.getEmail(), true),\n ],\n updateOn: \"blur\",\n },\n ],\n });\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n async submit() {\n this.formPromise = this.apiService.postCreateSponsorship(\n this.sponsorshipForm.value.selectedSponsorshipOrgId,\n {\n sponsoredEmail: this.sponsorshipForm.value.sponsorshipEmail,\n planSponsorshipType: PlanSponsorshipType.FamiliesForEnterprise,\n friendlyName: this.sponsorshipForm.value.sponsorshipEmail,\n }\n );\n\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"sponsorshipCreated\"));\n this.formPromise = null;\n this.resetForm();\n await this.load(true);\n }\n\n async load(forceReload = false) {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n if (forceReload) {\n await this.syncService.fullSync(true);\n }\n\n const allOrgs = await this.organizationService.getAll();\n this.availableSponsorshipOrgs = allOrgs.filter((org) => org.familySponsorshipAvailable);\n\n this.activeSponsorshipOrgs = allOrgs.filter(\n (org) => org.familySponsorshipFriendlyName !== null\n );\n\n if (this.availableSponsorshipOrgs.length === 1) {\n this.sponsorshipForm.patchValue({\n selectedSponsorshipOrgId: this.availableSponsorshipOrgs[0].id,\n });\n }\n this.loading = false;\n }\n\n get sponsorshipEmailControl() {\n return this.sponsorshipForm.controls[\"sponsorshipEmail\"];\n }\n\n private async resetForm() {\n this.sponsorshipForm.reset();\n }\n\n get anyActiveSponsorships(): boolean {\n return this.activeSponsorshipOrgs.length > 0;\n }\n\n get anyOrgsAvailable(): boolean {\n return this.availableSponsorshipOrgs.length > 0;\n }\n\n get isSelfHosted(): boolean {\n return this.platformUtilsService.isSelfHost();\n }\n}\n","
\n

{{ \"sponsoredFamilies\" | i18n }}

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

\n {{ \"sponsoredFamiliesEligible\" | i18n }}\n

\n
\n {{ \"sponsoredFamiliesInclude\" | i18n }}:\n
    \n
  • {{ \"sponsoredFamiliesPremiumAccess\" | i18n }}
  • \n
  • {{ \"sponsoredFamiliesSharedCollections\" | i18n }}
  • \n
\n
\n \n
\n \n \n \n \n \n
\n
\n \n \n \n \n {{ \"cannotSponsorSelf\" | i18n }}\n \n \n \n {{ \"invalidEmail\" | i18n }}\n \n
\n
\n \n
\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"recipient\" | i18n }}{{ \"sponsoringOrg\" | i18n }}{{ \"status\" | i18n }}
\n
\n {{ \"sponsoredFamiliesLeaveCopy\" | i18n }}\n
\n\n","import { formatDate } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"[sponsoring-org-row]\",\n templateUrl: \"sponsoring-org-row.component.html\",\n})\nexport class SponsoringOrgRowComponent implements OnInit {\n @Input() sponsoringOrg: Organization = null;\n @Input() isSelfHosted = false;\n\n @Output() sponsorshipRemoved = new EventEmitter();\n\n statusMessage = \"loading\";\n statusClass: \"text-success\" | \"text-danger\" = \"text-success\";\n\n revokeSponsorshipPromise: Promise;\n resendEmailPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private logService: LogService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n ngOnInit(): void {\n this.setStatus(\n this.isSelfHosted,\n this.sponsoringOrg.familySponsorshipToDelete,\n this.sponsoringOrg.familySponsorshipValidUntil,\n this.sponsoringOrg.familySponsorshipLastSyncDate\n );\n }\n\n async revokeSponsorship() {\n try {\n this.revokeSponsorshipPromise = this.doRevokeSponsorship();\n await this.revokeSponsorshipPromise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.revokeSponsorshipPromise = null;\n }\n\n async resendEmail() {\n this.resendEmailPromise = this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id);\n await this.resendEmailPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"emailSent\"));\n this.resendEmailPromise = null;\n }\n\n get isSentAwaitingSync() {\n return this.isSelfHosted && !this.sponsoringOrg.familySponsorshipLastSyncDate;\n }\n\n private async doRevokeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"revokeSponsorshipConfirmation\"),\n `${this.i18nService.t(\"remove\")} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`,\n this.i18nService.t(\"remove\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n\n if (!isConfirmed) {\n return;\n }\n\n await this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reclaimedFreePlan\"));\n this.sponsorshipRemoved.emit();\n }\n\n private setStatus(\n selfHosted: boolean,\n toDelete?: boolean,\n validUntil?: Date,\n lastSyncDate?: Date\n ) {\n /*\n * Possible Statuses:\n * Requested (self-hosted only)\n * Sent\n * Active\n * RequestRevoke\n * RevokeWhenExpired\n */\n\n if (toDelete && validUntil) {\n // They want to delete but there is a valid until date which means there is an active sponsorship\n this.statusMessage = this.i18nService.t(\n \"revokeWhenExpired\",\n formatDate(validUntil, \"MM/dd/yyyy\", this.i18nService.locale)\n );\n this.statusClass = \"text-danger\";\n } else if (toDelete) {\n // They want to delete and we don't have a valid until date so we can\n // this should only happen on a self-hosted install\n this.statusMessage = this.i18nService.t(\"requestRemoved\");\n this.statusClass = \"text-danger\";\n } else if (validUntil) {\n // They don't want to delete and they have a valid until date\n // that means they are actively sponsoring someone\n this.statusMessage = this.i18nService.t(\"active\");\n this.statusClass = \"text-success\";\n } else if (selfHosted && lastSyncDate) {\n // We are on a self-hosted install and it has been synced but we have not gotten\n // a valid until date so we can't know if they are actively sponsoring someone\n this.statusMessage = this.i18nService.t(\"sent\");\n this.statusClass = \"text-success\";\n } else if (!selfHosted) {\n // We are in cloud and all other status checks have been false therefore we have\n // sent the request but it hasn't been accepted yet\n this.statusMessage = this.i18nService.t(\"sent\");\n this.statusClass = \"text-success\";\n } else {\n // We are on a self-hosted install and we have not synced yet\n this.statusMessage = this.i18nService.t(\"requested\");\n this.statusClass = \"text-success\";\n }\n }\n}\n","\n {{ sponsoringOrg.familySponsorshipFriendlyName }}\n\n{{ sponsoringOrg.name }}\n\n {{ statusMessage }}\n\n\n
\n \n \n \n
\n \n \n {{ \"resendEmail\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { PaymentMethodComponent } from \"./payment-method.component\";\nimport { PremiumComponent } from \"./premium.component\";\nimport { SubscriptionComponent } from \"./subscription.component\";\nimport { UserBillingHistoryComponent } from \"./user-billing-history.component\";\nimport { UserSubscriptionComponent } from \"./user-subscription.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: SubscriptionComponent,\n data: { titleId: \"subscription\" },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"premium\" },\n {\n path: \"user-subscription\",\n component: UserSubscriptionComponent,\n data: { titleId: \"premiumMembership\" },\n },\n {\n path: \"premium\",\n component: PremiumComponent,\n data: { titleId: \"goPremium\" },\n },\n {\n path: \"payment-method\",\n component: PaymentMethodComponent,\n data: { titleId: \"paymentMethod\" },\n },\n {\n path: \"billing-history\",\n component: UserBillingHistoryComponent,\n data: { titleId: \"billingHistory\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SubscriptionRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\n@Component({\n selector: \"app-subscription\",\n templateUrl: \"subscription.component.html\",\n})\nexport class SubscriptionComponent {\n hasPremium: boolean;\n selfHosted: boolean;\n\n constructor(\n private tokenService: TokenService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n async ngOnInit() {\n this.hasPremium = await this.tokenService.getPremium();\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n get subscriptionRoute(): string {\n return this.hasPremium ? \"user-subscription\" : \"premium\";\n }\n}\n","\n\n","import { Component, EventEmitter, Output } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationTaxInfoUpdateRequest } from \"jslib-common/models/request/organizationTaxInfoUpdateRequest\";\nimport { TaxInfoUpdateRequest } from \"jslib-common/models/request/taxInfoUpdateRequest\";\nimport { TaxRateResponse } from \"jslib-common/models/response/taxRateResponse\";\n\n@Component({\n selector: \"app-tax-info\",\n templateUrl: \"tax-info.component.html\",\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: \"US\",\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: \"US\",\n includeTaxId: false,\n };\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || \"US\";\n this.taxInfo.includeTaxId =\n this.taxInfo.country !== \"US\" &&\n (!!taxInfo.taxId ||\n !!taxInfo.line1 ||\n !!taxInfo.line2 ||\n !!taxInfo.city ||\n !!taxInfo.state);\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || \"US\";\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== \"US\") {\n this.onCountryChanged.emit();\n }\n });\n\n const taxRates = await this.apiService.getTaxRates();\n this.taxRates = taxRates.data;\n this.loading = false;\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(\n (x) => x.country === this.taxInfo.country && x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise((resolve) => {\n resolve();\n });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId\n ? this.apiService.putOrganizationTaxInfo(\n this.organizationId,\n request as OrganizationTaxInfoUpdateRequest\n )\n : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === \"US\") {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n // eslint-disable-next-line\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"jslib-common/models/request/updateTwoFactorAuthenticatorRequest\";\nimport { TwoFactorAuthenticatorResponse } from \"jslib-common/models/response/twoFactorAuthenticatorResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-authenticator\",\n templateUrl: \"two-factor-authenticator.component.html\",\n})\nexport class TwoFactorAuthenticatorComponent\n extends TwoFactorBaseComponent\n implements OnInit, OnDestroy\n{\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n userVerificationService: UserVerificationService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n private stateService: StateService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n this.qrScript = window.document.createElement(\"script\");\n this.qrScript.src = \"scripts/qrious.min.js\";\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorAuthenticatorRequest);\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.stateService.getEmail();\n window.setTimeout(() => {\n new (window as any).QRious({\n element: document.getElementById(\"qr\"),\n value:\n \"otpauth://totp/Bitwarden:\" +\n encodeURIComponent(email) +\n \"?secret=\" +\n encodeURIComponent(this.key) +\n \"&issuer=Bitwarden\",\n size: 160,\n });\n }, 100);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"authenticatorAppTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n \"Authenticator\n

{{ \"twoStepAuthenticatorDesc\" | i18n }}

\n

\n 1. {{ \"twoStepAuthenticatorDownloadApp\" | i18n }}\n

\n
\n \n \n

{{ \"twoStepLoginProviderEnabled\" | i18n }}

\n {{ \"twoStepAuthenticatorReaddDesc\" | i18n }}\n
\n \"Authenticator\n

{{ \"twoStepAuthenticatorNeedApp\" | i18n }}

\n
\n
    \n
  • \n {{ \"iosDevices\" | i18n }}:\n Authy\n
  • \n
  • \n {{ \"androidDevices\" | i18n }}:\n Authy\n
  • \n
  • \n {{ \"windowsDevices\" | i18n }}:\n Microsoft Authenticator\n
  • \n
\n

{{ \"twoStepAuthenticatorAppsRecommended\" | i18n }}

\n

\n 2. {{ \"twoStepAuthenticatorScanCode\" | i18n }}\n

\n
\n

\n
\n {{ key }}\n

\n \n \n \n \n
\n
\n \n \n
\n \n
\n
\n
\n","import { Directive, EventEmitter, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { TwoFactorProviderRequest } from \"jslib-common/models/request/twoFactorProviderRequest\";\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected hashedSecret: string;\n protected verificationType: VerificationType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected logService: LogService,\n protected userVerificationService: UserVerificationService\n ) {}\n\n protected auth(authResponse: any) {\n this.hashedSecret = authResponse.secret;\n this.verificationType = authResponse.verificationType;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.onUpdated.emit(true);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"twoStepDisableDesc\"),\n this.i18nService.t(\"disable\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n const request = await this.buildRequestModel(TwoFactorProviderRequest);\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"twoStepDisabled\"));\n this.onUpdated.emit(false);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async buildRequestModel(\n requestClass: new () => T\n ) {\n return this.userVerificationService.buildRequest(\n {\n secret: this.hashedSecret,\n type: this.verificationType,\n },\n requestClass,\n true\n );\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorDuoRequest } from \"jslib-common/models/request/updateTwoFactorDuoRequest\";\nimport { TwoFactorDuoResponse } from \"jslib-common/models/response/twoFactorDuoResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-duo\",\n templateUrl: \"two-factor-duo.component.html\",\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorDuoRequest);\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(\n this.organizationId,\n request\n );\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n Duo\n

\n \n ×\n \n
\n \n \n \n
\n \n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \"Duo\n {{ \"twoFactorDuoIntegrationKey\" | i18n }}: {{ ikey }}\n
\n {{ \"twoFactorDuoSecretKey\" | i18n }}: {{ skey }}\n
\n {{ \"twoFactorDuoApiHostname\" | i18n }}: {{ host }}\n
\n \n \"Duo\n

{{ \"twoFactorDuoDesc\" | i18n }}

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorEmailRequest } from \"jslib-common/models/request/twoFactorEmailRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"jslib-common/models/request/updateTwoFactorEmailRequest\";\nimport { TwoFactorEmailResponse } from \"jslib-common/models/response/twoFactorEmailResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-email\",\n templateUrl: \"two-factor-email.component.html\",\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n private stateService: StateService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = await this.buildRequestModel(TwoFactorEmailRequest);\n request.email = this.email;\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorEmailRequest);\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === \"\")) {\n this.email = await this.stateService.getEmail();\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"emailTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n {{ \"email\" | i18n }}: {{ email }}\n \n \n

\n {{ \"twoFactorEmailDesc\" | i18n }}\n \"Email\n

\n
\n \n \n
\n
\n \n \n {{ \"sendEmail\" | i18n }}\n \n \n {{ \"verificationCodeEmailSent\" | i18n: sentEmail }}\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorRecoverResponse } from \"jslib-common/models/response/twoFactorRescoverResponse\";\n\n@Component({\n selector: \"app-two-factor-recovery\",\n templateUrl: \"two-factor-recovery.component.html\",\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) {}\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write(\n '
' +\n \"

\" +\n this.i18nService.t(\"twoFactorRecoveryYourCode\") +\n \":

\" +\n \"\" +\n this.code +\n \"
\" +\n '

' +\n new Date() +\n \"

\"\n );\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s\n .replace(/(.{4})/g, \"$1 \")\n .trim()\n .toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"recoveryCodeTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n

{{ \"twoFactorRecoveryYourCode\" | i18n }}:

\n {{ code }}\n
\n \n {{ \"twoFactorRecoveryNoCode\" | i18n }}\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component, OnInit, Type, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorProviders } from \"jslib-common/services/twoFactor.service\";\n\nimport { TwoFactorAuthenticatorComponent } from \"./two-factor-authenticator.component\";\nimport { TwoFactorDuoComponent } from \"./two-factor-duo.component\";\nimport { TwoFactorEmailComponent } from \"./two-factor-email.component\";\nimport { TwoFactorRecoveryComponent } from \"./two-factor-recovery.component\";\nimport { TwoFactorWebAuthnComponent } from \"./two-factor-webauthn.component\";\nimport { TwoFactorYubiKeyComponent } from \"./two-factor-yubikey.component\";\n\n@Component({\n selector: \"app-two-factor-setup\",\n templateUrl: \"two-factor-setup.component.html\",\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild(\"recoveryTemplate\", { read: ViewContainerRef, static: true })\n recoveryModalRef: ViewContainerRef;\n @ViewChild(\"authenticatorTemplate\", { read: ViewContainerRef, static: true })\n authenticatorModalRef: ViewContainerRef;\n @ViewChild(\"yubikeyTemplate\", { read: ViewContainerRef, static: true })\n yubikeyModalRef: ViewContainerRef;\n @ViewChild(\"duoTemplate\", { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild(\"emailTemplate\", { read: ViewContainerRef, static: true })\n emailModalRef: ViewContainerRef;\n @ViewChild(\"webAuthnTemplate\", { read: ViewContainerRef, static: true })\n webAuthnModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n modal: ModalRef;\n\n constructor(\n protected apiService: ApiService,\n protected modalService: ModalService,\n protected messagingService: MessagingService,\n protected policyService: PolicyService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n\n for (const key in TwoFactorProviders) {\n // eslint-disable-next-line\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach((p) => {\n this.providers.forEach((p2) => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator: {\n const authComp = await this.openModal(\n this.authenticatorModalRef,\n TwoFactorAuthenticatorComponent\n );\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n }\n case TwoFactorProviderType.Yubikey: {\n const yubiComp = await this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n }\n case TwoFactorProviderType.Duo: {\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n }\n case TwoFactorProviderType.Email: {\n const emailComp = await this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n }\n case TwoFactorProviderType.WebAuthn: {\n const webAuthnComp = await this.openModal(\n this.webAuthnModalRef,\n TwoFactorWebAuthnComponent\n );\n webAuthnComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.WebAuthn);\n });\n break;\n }\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected async openModal(ref: ViewContainerRef, type: Type): Promise {\n const [modal, childComponent] = await this.modalService.openViewRef(type, ref);\n this.modal = modal;\n\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach((p) => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter((p) => p.enabled).length === 1) {\n this.showPolicyWarning = await this.policyService.policyAppliesToUser(\n PolicyType.TwoFactorAuthentication\n );\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { TwoFactorAuthenticatorResponse } from \"jslib-common/models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"jslib-common/models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"jslib-common/models/response/twoFactorEmailResponse\";\nimport { TwoFactorRecoverResponse } from \"jslib-common/models/response/twoFactorRescoverResponse\";\nimport { TwoFactorWebAuthnResponse } from \"jslib-common/models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"jslib-common/models/response/twoFactorYubiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\ntype TwoFactorResponse =\n | TwoFactorRecoverResponse\n | TwoFactorDuoResponse\n | TwoFactorEmailResponse\n | TwoFactorWebAuthnResponse\n | TwoFactorAuthenticatorResponse\n | TwoFactorYubiKeyResponse;\n\n@Component({\n selector: \"app-two-factor-verify\",\n templateUrl: \"two-factor-verify.component.html\",\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n secret: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private logService: LogService,\n private userVerificationService: UserVerificationService\n ) {}\n\n async submit() {\n let hashedSecret: string;\n\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.secret).then((request) => {\n hashedSecret =\n this.secret.type === VerificationType.MasterPassword\n ? request.masterPasswordHash\n : request.otp;\n return this.apiCall(request);\n });\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n secret: hashedSecret,\n verificationType: this.secret.type,\n });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private apiCall(request: SecretVerificationRequest): Promise {\n switch (this.type) {\n case -1 as TwoFactorProviderType:\n return this.apiService.getTwoFactorRecover(request);\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n return this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n return this.apiService.getTwoFactorDuo(request);\n }\n case TwoFactorProviderType.Email:\n return this.apiService.getTwoFactorEmail(request);\n case TwoFactorProviderType.WebAuthn:\n return this.apiService.getTwoFactorWebAuthn(request);\n case TwoFactorProviderType.Authenticator:\n return this.apiService.getTwoFactorAuthenticator(request);\n case TwoFactorProviderType.Yubikey:\n return this.apiService.getTwoFactorYubiKey(request);\n }\n }\n}\n","
\n
\n

{{ \"twoStepLoginAuthDesc\" | i18n }}

\n \n \n
\n
\n \n \n
\n
\n","import { Component, NgZone } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"jslib-common/models/request/updateTwoFactorWebAuthnRequest\";\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from \"jslib-common/models/response/twoFactorWebAuthnResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-webauthn\",\n templateUrl: \"two-factor-webauthn.component.html\",\n})\nexport class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.WebAuthn;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n webAuthnError: boolean;\n webAuthnListening: boolean;\n webAuthnResponse: PublicKeyCredential;\n challengePromise: Promise;\n formPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n if (this.webAuthnResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnRequest);\n request.deviceResponse = this.webAuthnResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorWebAuthn(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t(\"webAuthnkeyX\", key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeU2fConfirmation\"),\n name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnDeleteRequest);\n request.id = key.id;\n try {\n key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = await this.buildRequestModel(SecretVerificationRequest);\n try {\n this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private readDevice(webAuthnChallenge: ChallengeResponse) {\n // eslint-disable-next-line\n console.log(\"listening for key...\");\n this.resetWebAuthn(true);\n\n navigator.credentials\n .create({\n publicKey: webAuthnChallenge,\n })\n .then((data: PublicKeyCredential) => {\n this.ngZone.run(() => {\n this.webAuthnListening = false;\n this.webAuthnResponse = data;\n });\n })\n .catch((err) => {\n // eslint-disable-next-line\n console.error(err);\n this.resetWebAuthn(false);\n // TODO: Should we display the actual error?\n this.webAuthnError = true;\n });\n }\n\n private resetWebAuthn(listening = false) {\n this.webAuthnResponse = null;\n this.webAuthnError = false;\n this.webAuthnListening = listening;\n }\n\n private processResponse(response: TwoFactorWebAuthnResponse) {\n this.resetWebAuthn();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter((k) => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i,\n name: key[0].name,\n configured: true,\n migrated: key[0].migrated,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"webAuthnTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \n

{{ \"twoFactorWebAuthnWarning\" | i18n }}

\n
    \n
  • {{ \"twoFactorWebAuthnSupportWeb\" | i18n }}
  • \n
\n
\n \"FIDO2\n
    \n \n \n {{ \"webAuthnkeyX\" | i18n: i + 1 }}\n {{ k.name }}\n \n \n {{ \"webAuthnMigrated\" | i18n }}\n \n \n 1 && k.configured\">\n \n -\n {{ \"remove\" | i18n }}\n \n \n
\n
\n

{{ \"twoFactorWebAuthnAdd\" | i18n }}:

\n
    \n
  1. {{ \"twoFactorU2fGiveName\" | i18n }}
  2. \n
  3. {{ \"twoFactorU2fPlugInReadKey\" | i18n }}
  4. \n
  5. {{ \"twoFactorU2fTouchButton\" | i18n }}
  6. \n
  7. {{ \"twoFactorU2fSaveForm\" | i18n }}
  8. \n
\n
\n
\n \n \n
\n
\n \n {{ \"readKey\" | i18n }}\n \n \n \n \n \n \n \n {{ \"twoFactorU2fWaiting\" | i18n }}...\n \n \n \n {{ \"twoFactorU2fClickSave\" | i18n }}\n \n \n \n {{ \"twoFactorU2fProblemReadingTryAgain\" | i18n }}\n \n \n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n \n {{ \"disableAllKeys\" | i18n }}\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"jslib-common/models/request/updateTwoFactorYubioOtpRequest\";\nimport { TwoFactorYubiKeyResponse } from \"jslib-common/models/response/twoFactorYubiKeyResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-yubikey\",\n templateUrl: \"two-factor-yubikey.component.html\",\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n const request = await this.buildRequestModel(UpdateTwoFactorYubioOtpRequest);\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"yubikeysUpdated\"));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = \"•\", size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n YubiKey\n

\n \n ×\n \n
\n \n \n \n
\n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \n

{{ \"twoFactorYubikeyWarning\" | i18n }}

\n
    \n
  • {{ \"twoFactorYubikeySupportUsb\" | i18n }}
  • \n
  • {{ \"twoFactorYubikeySupportMobile\" | i18n }}
  • \n
\n
\n \"YubiKey\n

{{ \"twoFactorYubikeyAdd\" | i18n }}:

\n
    \n
  1. {{ \"twoFactorYubikeyPlugIn\" | i18n }}
  2. \n
  3. {{ \"twoFactorYubikeySelectKey\" | i18n }}
  4. \n
  5. {{ \"twoFactorYubikeyTouchButton\" | i18n }}
  6. \n
  7. {{ \"twoFactorYubikeySaveForm\" | i18n }}
  8. \n
\n
\n
\n
\n \n \n
\n {{ k.existingKey }}\n \n \n \n
\n
\n
\n {{ \"nfcSupport\" | i18n }}\n
\n \n \n
\n {{ \"twoFactorYubikeySupportsNfcDesc\" | i18n }}\n
\n
\n \n \n \n {{ \"disableAllKeys\" | i18n }}\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { CipherWithIdRequest } from \"jslib-common/models/request/cipherWithIdRequest\";\nimport { FolderWithIdRequest } from \"jslib-common/models/request/folderWithIdRequest\";\nimport { UpdateKeyRequest } from \"jslib-common/models/request/updateKeyRequest\";\n\n@Component({\n selector: \"app-update-key\",\n templateUrl: \"update-key.component.html\",\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private syncService: SyncService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private logService: LogService\n ) {}\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then((request) => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"keyUpdated\"),\n this.i18nService.t(\"logBackInOthersToo\"),\n { timeout: 15000 }\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","
\n
\n \n
\n

{{ \"updateEncryptionKey\" | i18n }}

\n \n ×\n \n
\n
\n

\n {{ \"updateEncryptionKeyShortDesc\" | i18n }} {{ \"updateEncryptionKeyDesc\" | i18n }}\n {{ \"learnMore\" | i18n }}\n

\n {{ \"updateEncryptionKeyWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-update-license\",\n templateUrl: \"update-license.component.html\",\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"updatedLicense\"));\n this.onUpdated.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n \n {{\n \"licenseFileDesc\"\n | i18n\n : (!organizationId\n ? \"bitwarden_premium_license.json\"\n : \"bitwarden_organization_license.json\")\n }}\n
\n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { TransactionType } from \"jslib-common/enums/transactionType\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\n\n@Component({\n selector: \"app-user-billing\",\n templateUrl: \"user-billing-history.component.html\",\n})\nexport class UserBillingHistoryComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n billing: BillingHistoryResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n if (this.platformUtilsService.isSelfHost()) {\n this.router.navigate([\"/settings/subscription\"]);\n }\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.billing = await this.apiService.getUserBillingHistory();\n this.loading = false;\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","
\n

\n {{ \"billingHistory\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"invoices\" | i18n }}

\n

{{ \"noInvoices\" | i18n }}

\n \n \n \n \n \n \n \n \n \n
{{ i.date | date: \"mediumDate\" }}\n \n \n \n {{ \"invoiceNumber\" | i18n: i.number }}\n {{ i.amount | currency: \"$\" }}\n \n \n {{ \"paid\" | i18n }}\n \n \n \n {{ \"unpaid\" | i18n }}\n \n
\n

{{ \"transactions\" | i18n }}

\n

{{ \"noTransactions\" | i18n }}

\n \n \n \n \n \n \n \n {{ t.amount | currency: \"$\" }}\n \n \n \n
{{ t.createdDate | date: \"mediumDate\" }}\n \n {{ \"chargeNoun\" | i18n }}\n \n {{ \"refundNoun\" | i18n }}\n \n \n {{ t.details }}\n
\n * {{ \"chargesStatement\" | i18n: \"BITWARDEN\" }}\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { SubscriptionResponse } from \"jslib-common/models/response/subscriptionResponse\";\n\n@Component({\n selector: \"app-user-subscription\",\n templateUrl: \"user-subscription.component.html\",\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(\n private tokenService: TokenService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private router: Router,\n private logService: LogService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate([\"/settings/subscription/premium\"]);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"manageSubscriptionFromStore\"),\n this.i18nService.t(\"cancelSubscription\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"reinstateConfirmation\"),\n this.i18nService.t(\"reinstateSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\")\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reinstated\"));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"manageSubscriptionFromStore\"),\n this.i18nService.t(\"cancelSubscription\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"cancelConfirmation\"),\n this.i18nService.t(\"cancelSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"canceledSubscription\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(\n window,\n licenseString,\n null,\n \"bitwarden_premium_license.json\"\n );\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(add ? \"addStorage\" : \"removeStorage\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return (\n this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate\n );\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb\n ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2)\n : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n\n get title(): string {\n return this.i18nService.t(this.selfHosted ? \"subscription\" : \"premiumMembership\");\n }\n}\n","\n

\n {{ title }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n\n\n \n {{ \"loading\" | i18n }}\n\n\n \n {{ \"subscriptionCanceled\" | i18n }}\n \n

{{ \"subscriptionPendingCanceled\" | i18n }}

\n \n \n {{ \"reinstateSubscription\" | i18n }}\n \n \n
\n
{{ \"expiration\" | i18n }}
\n
{{ sub.expiration | date: \"mediumDate\" }}
\n
{{ \"neverExpires\" | i18n }}
\n
\n
\n
\n
\n
{{ \"status\" | i18n }}
\n
\n {{ (subscription && subscription.status) || \"-\" }}\n {{\n \"pendingCancellation\" | i18n\n }}\n
\n
{{ \"nextCharge\" | i18n }}
\n
\n {{\n nextInvoice\n ? (nextInvoice.date | date: \"mediumDate\") +\n \", \" +\n (nextInvoice.amount | currency: \"$\")\n : \"-\"\n }}\n
\n
\n
\n
\n {{ \"details\" | i18n }}\n \n \n \n \n \n \n \n
\n {{ i.name }} {{ i.quantity > 1 ? \"×\" + i.quantity : \"\" }} @\n {{ i.amount | currency: \"$\" }}\n {{ i.quantity * i.amount | currency: \"$\" }} /{{ i.interval | i18n }}
\n
\n
\n \n
\n \n \n {{ \"manageSubscription\" | i18n }}\n \n
\n
\n
\n \n ×\n \n

{{ \"updateLicense\" | i18n }}

\n \n \n
\n
\n
\n \n
\n \n {{ \"downloadLicense\" | i18n }}\n \n \n \n {{ \"cancelSubscription\" | i18n }}\n \n
\n

{{ \"storage\" | i18n }}

\n

{{ \"subscriptionStorage\" | i18n: sub.maxStorageGb || 0:sub.storageName || \"0 MB\" }}

\n
\n \n {{ storagePercentage / 100 | percent }}\n
\n \n \n
\n
\n \n \n {{ \"removeStorage\" | i18n }}\n \n
\n \n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { VaultTimeoutInputComponent as VaultTimeoutInputComponentBase } from \"jslib-angular/components/settings/vault-timeout-input.component\";\n\n@Component({\n selector: \"app-vault-timeout-input\",\n templateUrl: \"vault-timeout-input.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n ],\n})\nexport class VaultTimeoutInputComponent extends VaultTimeoutInputComponentBase {}\n","\n {{ \"vaultTimeoutPolicyInEffect\" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }}\n\n\n
\n
\n \n \n \n \n {{ \"vaultTimeoutDesc\" | i18n }}\n
\n
\n \n
\n
\n \n {{ \"hours\" | i18n }}\n
\n
\n \n {{ \"minutes\" | i18n }}\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-verify-email\",\n templateUrl: \"verify-email.component.html\",\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"checkInboxForVerification\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n}\n","
\n
\n {{ \"verifyEmail\" | i18n }}\n
\n
\n

{{ \"verifyEmailDesc\" | i18n }}

\n \n \n \n {{ \"sendEmail\" | i18n }}\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { ExportComponent as BaseExportComponent } from \"jslib-angular/components/export.component\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\n@Component({\n selector: \"app-export\",\n templateUrl: \"export.component.html\",\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(\n cryptoService: CryptoService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n exportService: ExportService,\n eventService: EventService,\n policyService: PolicyService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n formBuilder: FormBuilder\n ) {\n super(\n cryptoService,\n i18nService,\n platformUtilsService,\n exportService,\n eventService,\n policyService,\n window,\n logService,\n userVerificationService,\n formBuilder\n );\n }\n\n protected saved() {\n super.saved();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"exportSuccess\"));\n }\n}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { GeneratorComponent as BaseGeneratorComponent } from \"jslib-angular/components/generator.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UsernameGenerationService } from \"jslib-common/abstractions/usernameGeneration.service\";\n\nimport { PasswordGeneratorHistoryComponent } from \"./password-generator-history.component\";\n\n@Component({\n selector: \"app-generator\",\n templateUrl: \"generator.component.html\",\n})\nexport class GeneratorComponent extends BaseGeneratorComponent {\n @ViewChild(\"historyTemplate\", { read: ViewContainerRef, static: true })\n historyModalRef: ViewContainerRef;\n\n constructor(\n passwordGenerationService: PasswordGenerationService,\n usernameGenerationService: UsernameGenerationService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n logService: LogService,\n route: ActivatedRoute,\n private modalService: ModalService\n ) {\n super(\n passwordGenerationService,\n usernameGenerationService,\n platformUtilsService,\n stateService,\n i18nService,\n logService,\n route,\n window\n );\n // Cannot use Firefox Relay on the web vault yet due to CORS issues with Firefox Relay API\n this.forwardOptions.splice(\n this.forwardOptions.findIndex((o) => o.value === \"firefoxrelay\"),\n 1\n );\n }\n\n async history() {\n await this.modalService.openViewRef(PasswordGeneratorHistoryComponent, this.historyModalRef);\n }\n\n lengthChanged() {\n document.getElementById(\"length\").focus();\n }\n\n minNumberChanged() {\n document.getElementById(\"min-number\").focus();\n }\n\n minSpecialChanged() {\n document.getElementById(\"min-special\").focus();\n }\n}\n","
\n

{{ \"generator\" | i18n }}

\n
\n\n {{ \"passwordGeneratorPolicyInEffect\" | i18n }}\n\n
\n
\n
\n
\n \n\n
\n \n
\n \n \n
\n
\n\n
\n \n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n \n
\n
\n
\n\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n {{ \"regenerateUsername\" | i18n }}\n \n \n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport * as JSZip from \"jszip\";\nimport Swal, { SweetAlertIcon } from \"sweetalert2\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { ImportOption, ImportType } from \"jslib-common/enums/importOptions\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\n@Component({\n selector: \"app-import\",\n templateUrl: \"import.component.html\",\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: ImportType = null;\n fileContents: string;\n formPromise: Promise;\n loading = false;\n importBlockedByPolicy = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = [\"vault\"];\n\n constructor(\n protected i18nService: I18nService,\n protected importService: ImportService,\n protected router: Router,\n protected platformUtilsService: PlatformUtilsService,\n protected policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.setImportOptions();\n\n this.importBlockedByPolicy = await this.policyService.policyAppliesToUser(\n PolicyType.PersonalOwnership\n );\n }\n\n async submit() {\n if (this.importBlockedByPolicy) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"personalOwnershipPolicyInEffectImports\")\n );\n return;\n }\n\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFormat\")\n );\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (\n (files == null || files.length === 0) &&\n (this.fileContents == null || this.fileContents === \"\")\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (fileContents == null || fileContents === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"importSuccess\"));\n this.router.navigate(this.successNavigate);\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions\n .concat(this.importOptions)\n .filter((o) => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t(\"instructionsFor\", results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [\n {\n id: null,\n name: \"-- \" + this.i18nService.t(\"select\") + \" --\",\n },\n ...this.importService.featuredImportOptions,\n ];\n this.importOptions = [...this.importService.regularImportOptions].sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator\n ? this.i18nService.collator.compare(a.name, b.name)\n : a.name.localeCompare(b.name);\n });\n }\n\n private async error(error: Error) {\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: \"error\" as SweetAlertIcon,\n iconHtml: ``,\n input: \"textarea\",\n inputValue: error.message,\n inputAttributes: {\n readonly: \"true\",\n },\n titleText: this.i18nService.t(\"importError\"),\n text: this.i18nService.t(\"importErrorDesc\"),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t(\"ok\"),\n onOpen: (popupEl) => {\n popupEl.querySelector(\".swal2-textarea\").scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n if (this.format === \"1password1pux\") {\n return this.extract1PuxContent(file);\n }\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, \"utf-8\");\n reader.onload = (evt) => {\n if (this.format === \"lastpasscsv\" && file.type === \"text/html\") {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, \"text/html\");\n const pre = doc.querySelector(\"pre\");\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n\n private extract1PuxContent(file: File): Promise {\n return new JSZip()\n .loadAsync(file)\n .then((zip) => {\n return zip.file(\"export.data\").async(\"string\");\n })\n .then(\n function success(content) {\n return content;\n },\n function error(e) {\n return \"\";\n }\n );\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from \"jslib-angular/components/password-generator-history.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-password-generator-history\",\n templateUrl: \"password-generator-history.component.html\",\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService\n ) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","
\n
\n
\n
\n

{{ \"passwordHistory\" | i18n }}

\n \n ×\n \n
\n
\n
    \n
  • \n
    \n
    \n {{ h.date | date: \"medium\" }}\n
\n
\n \n \n \n
\n \n \n
\n
\n {{ \"noPasswordsInList\" | i18n }}\n
\n
\n \n
\n \n \n \n
\n
\n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-tools\",\n templateUrl: \"tools.component.html\",\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private stateService: StateService, private messagingService: MessagingService) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n}\n","
\n \n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from \"jslib-angular/components/add-edit-custom-fields.component\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-vault-add-edit-custom-fields\",\n templateUrl: \"add-edit-custom-fields.component.html\",\n})\nexport class AddEditCustomFieldsComponent extends BaseAddEditCustomFieldsComponent {\n @Input() viewOnly: boolean;\n @Input() copy: (value: string, typeI18nKey: string, aType: string) => void;\n\n constructor(i18nService: I18nService, eventService: EventService) {\n super(i18nService, eventService);\n }\n}\n","\n

{{ \"customFields\" | i18n }}

\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n
\n
\n \n
\n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n \n \n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n
\n
\n \n \n \n {{ \"newCustomField\" | i18n }}\n \n
\n
\n \n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"jslib-angular/components/add-edit.component\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { LoginUriView } from \"jslib-common/models/view/loginUriView\";\n\n@Component({\n selector: \"app-vault-add-edit\",\n templateUrl: \"add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n protected totpService: TotpService,\n protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService,\n eventService: EventService,\n protected policyService: PolicyService,\n organizationService: OrganizationService,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n messagingService,\n eventService,\n policyService,\n logService,\n passwordRepromptService,\n organizationService\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n if (\n this.cipher.type === CipherType.Login &&\n this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)\n ) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(typeI18nKey))\n );\n\n if (this.editMode) {\n if (typeI18nKey === \"password\") {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === \"securityCode\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === \"H_Field\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send(\"upgradeOrganization\", {\n organizationId: this.cipher.organizationId,\n });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (\n this.cipher == null ||\n this.cipher.type !== CipherType.Login ||\n this.cipher.login.totp == null\n ) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted =\n this.totpCode.substring(0, half) + \" \" + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (\n (!this.editMode || this.cloneMode) &&\n this.ownershipOptions != null &&\n (this.ownershipOptions.length > 1 || !this.allowPersonal)\n );\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round(((78.6 / intervalSeconds) * mod + \"e+2\") as any) + \"e-2\");\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"jslib-angular/components/attachments.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\n@Component({\n selector: \"app-vault-attachments\",\n templateUrl: \"attachments.component.html\",\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n platformUtilsService,\n apiService,\n window,\n logService,\n stateService\n );\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { BulkDeleteComponent } from \"./bulk-delete.component\";\nimport { BulkMoveComponent } from \"./bulk-move.component\";\nimport { BulkRestoreComponent } from \"./bulk-restore.component\";\nimport { BulkShareComponent } from \"./bulk-share.component\";\nimport { CiphersComponent } from \"./ciphers.component\";\n\n@Component({\n selector: \"app-vault-bulk-actions\",\n templateUrl: \"bulk-actions.component.html\",\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild(\"bulkDeleteTemplate\", { read: ViewContainerRef, static: true })\n bulkDeleteModalRef: ViewContainerRef;\n @ViewChild(\"bulkRestoreTemplate\", { read: ViewContainerRef, static: true })\n bulkRestoreModalRef: ViewContainerRef;\n @ViewChild(\"bulkMoveTemplate\", { read: ViewContainerRef, static: true })\n bulkMoveModalRef: ViewContainerRef;\n @ViewChild(\"bulkShareTemplate\", { read: ViewContainerRef, static: true })\n bulkShareModalRef: ViewContainerRef;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n async bulkDelete() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkDeleteComponent,\n this.bulkDeleteModalRef,\n (comp) => {\n comp.permanent = this.deleted;\n comp.cipherIds = selectedIds;\n comp.organization = this.organization;\n comp.onDeleted.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkRestore() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRestoreComponent,\n this.bulkRestoreModalRef,\n (comp) => {\n comp.cipherIds = selectedIds;\n comp.onRestored.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkShare() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkShareComponent,\n this.bulkShareModalRef,\n (comp) => {\n comp.ciphers = selectedCiphers;\n comp.onShared.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkMove() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkMoveComponent,\n this.bulkMoveModalRef,\n (comp) => {\n comp.cipherIds = selectedIds;\n comp.onMoved.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n private async promptPassword() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n const notProtected = !selectedCiphers.find(\n (cipher) => cipher.reprompt !== CipherRepromptType.None\n );\n\n return notProtected || (await this.passwordRepromptService.showPasswordPrompt());\n }\n}\n","
\n \n \n \n
\n \n \n {{ \"moveSelected\" | i18n }}\n \n \n \n {{ \"moveSelectedToOrg\" | i18n }}\n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherBulkDeleteRequest } from \"jslib-common/models/request/cipherBulkDeleteRequest\";\n\n@Component({\n selector: \"app-vault-bulk-delete\",\n templateUrl: \"bulk-delete.component.html\",\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private apiService: ApiService\n ) {}\n\n async submit() {\n if (!this.organization || !this.organization.canEditAnyCollection) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.permanent ? \"permanentlyDeletedItems\" : \"deletedItems\")\n );\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ (permanent ? \"permanentlyDeleteSelected\" : \"deleteSelected\") | i18n }}\n

\n \n ×\n \n
\n
\n {{\n (permanent ? \"permanentlyDeleteSelectedItemsDesc\" : \"deleteSelectedItemsDesc\")\n | i18n: cipherIds.length\n }}\n
\n
\n \n \n {{ (permanent ? \"permanentlyDelete\" : \"delete\") | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\n@Component({\n selector: \"app-vault-bulk-move\",\n templateUrl: \"bulk-move.component.html\",\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private folderService: FolderService\n ) {}\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"movedItems\"));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveSelected\" | i18n }}\n

\n \n ×\n \n
\n
\n

{{ \"moveSelectedItemsDesc\" | i18n: cipherIds.length }}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-vault-bulk-restore\",\n templateUrl: \"bulk-restore.component.html\",\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItems\"));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"restoreSelected\" | i18n }}\n

\n \n ×\n \n
\n
\n {{ \"restoreSelectedItemsDesc\" | i18n: cipherIds.length }}\n
\n
\n \n \n {{ \"restore\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-bulk-share\",\n templateUrl: \"bulk-share.component.html\",\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private organizationService: OrganizationService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(\n (c) => !c.hasOldAttachments && c.organizationId == null\n );\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter((c) => !c.readOnly);\n this.organizations = await this.organizationService.getAll();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.organizationId\n );\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(\n this.shareableCiphers,\n this.organizationId,\n checkedCollectionIds\n );\n await this.formPromise;\n this.onShared.emit();\n const orgName =\n this.organizations.find((o) => o.id === this.organizationId)?.name ??\n this.i18nService.t(\"organization\");\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"movedItemsToOrg\", orgName)\n );\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n\n get canSave() {\n if (\n this.shareableCiphers != null &&\n this.shareableCiphers.length > 0 &&\n this.collections != null\n ) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveSelectedToOrg\" | i18n }}\n

\n \n ×\n \n
\n
\n

{{ \"moveManyToOrgDesc\" | i18n }}

\n

\n {{\n \"moveSelectedItemsCountDesc\"\n | i18n: this.ciphers.length:shareableCiphers.length:nonShareableCount\n }}\n

\n
\n \n \n \n \n
\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, Output } from \"@angular/core\";\n\nimport { CiphersComponent as BaseCiphersComponent } from \"jslib-angular/components/ciphers.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: \"app-vault-ciphers\",\n templateUrl: \"ciphers.component.html\",\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n @Output() onOrganzationBadgeClicked = new EventEmitter();\n\n pagedCiphers: CipherView[] = [];\n pageSize = 200;\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n organizations: Organization[] = [];\n profileName: string;\n\n private didScroll = false;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(\n searchService: SearchService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected cipherService: CipherService,\n protected eventService: EventService,\n protected totpService: TotpService,\n protected stateService: StateService,\n protected passwordRepromptService: PasswordRepromptService,\n private logService: LogService,\n private organizationService: OrganizationService,\n private tokenService: TokenService\n ) {\n super(searchService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n // load() is called after the page loads and the first sync has completed.\n // Do not use ngOnInit() for anything that requires sync data.\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n await super.load(filter, deleted);\n this.profileName = await this.tokenService.getName();\n this.organizations = await this.organizationService.getAll();\n this.userHasPremiumAccess = await this.stateService.getCanAccessPremium();\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(\n this.ciphers.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n\n async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(\n this.searchText,\n [this.filter, this.deletedFilter],\n indexedCiphers\n );\n this.resetPaging();\n }\n\n launch(uri: string) {\n this.platformUtilsService.launchUri(uri);\n }\n\n async attachments(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onAttachmentsClicked.emit(c);\n }\n\n async share(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n async clone(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\n permanent ? \"permanentlyDeleteItemConfirmation\" : \"deleteItemConfirmation\"\n ),\n this.i18nService.t(permanent ? \"permanentlyDeleteItem\" : \"deleteItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(permanent ? \"permanentlyDeletedItem\" : \"deletedItem\")\n );\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"restoreItemConfirmation\"),\n this.i18nService.t(\"restoreItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItem\"));\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (\n this.passwordRepromptService.protectedFields().includes(aType) &&\n !(await this.repromptCipher(cipher))\n ) {\n return;\n }\n\n if (value == null || (aType === \"TOTP\" && !this.displayTotpCopyButton(cipher))) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n if (!cipher.viewPassword) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(typeI18nKey))\n );\n\n if (typeI18nKey === \"password\" || typeI18nKey === \"verificationCodeTotp\") {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === \"securityCode\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount =\n select && this.ciphers.length > MaxCheckedCount ? MaxCheckedCount : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter((c) => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map((c) => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (\n (cipher?.login?.hasTotp ?? false) && (cipher.organizationUseTotp || this.userHasPremiumAccess)\n );\n }\n\n async selectCipher(cipher: CipherView) {\n if (await this.repromptCipher(cipher)) {\n super.selectCipher(cipher);\n }\n }\n\n onOrganizationClicked(organizationId: string) {\n this.onOrganzationBadgeClicked.emit(organizationId);\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent\n ? this.cipherService.deleteWithServer(id)\n : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n\n protected async repromptCipher(c: CipherView) {\n return (\n c.reprompt === CipherRepromptType.None ||\n (await this.passwordRepromptService.showPasswordPrompt())\n );\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\n\nimport { CollectionsComponent as BaseCollectionsComponent } from \"jslib-angular/components/collections.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-collections\",\n templateUrl: \"collections.component.html\",\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n logService: LogService\n ) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { FolderAddEditComponent as BaseFolderAddEditComponent } from \"jslib-angular/components/folder-add-edit.component\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-folder-add-edit\",\n templateUrl: \"folder-add-edit.component.html\",\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService\n ) {\n super(folderService, i18nService, platformUtilsService, logService);\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n \n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnDestroy } from \"@angular/core\";\n\nimport { ShareComponent as BaseShareComponent } from \"jslib-angular/components/share.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-share\",\n templateUrl: \"share.component.html\",\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n organizationService: OrganizationService,\n logService: LogService\n ) {\n super(\n collectionService,\n platformUtilsService,\n i18nService,\n cipherService,\n logService,\n organizationService\n );\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveToOrganization\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n {{ \"noOrganizationsList\" | i18n }}\n
\n
\n

{{ \"moveToOrgDesc\" | i18n }}

\n
\n \n \n \n \n
\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n {{ \"newOrganization\" | i18n }}\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nconst routes: Routes = [{ path: \"**\", redirectTo: \"\" }];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class WildcardRoutingModule {}\n","import {\n Account as BaseAccount,\n AccountSettings as BaseAccountSettings,\n} from \"jslib-common/models/domain/account\";\n\nexport class AccountSettings extends BaseAccountSettings {\n vaultTimeout: number = process.env.NODE_ENV === \"development\" ? null : 15;\n}\n\nexport class Account extends BaseAccount {\n settings?: AccountSettings = new AccountSettings();\n\n constructor(init: Partial) {\n super(init);\n Object.assign(this.settings, {\n ...new AccountSettings(),\n ...this.settings,\n });\n }\n}\n","import { ThemeType } from \"jslib-common/enums/themeType\";\nimport { GlobalState as BaseGlobalState } from \"jslib-common/models/domain/globalState\";\n\nexport class GlobalState extends BaseGlobalState {\n theme?: ThemeType = ThemeType.Light;\n rememberEmail = true;\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\n\n@Injectable()\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) {}\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { StorageService } from \"jslib-common/abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"jslib-common/enums/htmlStorageLocation\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\n\n@Injectable()\nexport class HtmlStorageService implements StorageService {\n get defaultOptions(): StorageOptions {\n return { htmlStorageLocation: HtmlStorageLocation.Session };\n }\n\n get(key: string, options: StorageOptions = this.defaultOptions): Promise {\n let json: string = null;\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n json = window.localStorage.getItem(key);\n break;\n case HtmlStorageLocation.Session:\n default:\n json = window.sessionStorage.getItem(key);\n break;\n }\n\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string, options: StorageOptions = this.defaultOptions): Promise {\n return (await this.get(key, options)) != null;\n }\n\n save(key: string, obj: any, options: StorageOptions = this.defaultOptions): Promise {\n if (obj == null) {\n return this.remove(key, options);\n }\n\n if (obj instanceof Set) {\n obj = Array.from(obj);\n }\n\n const json = JSON.stringify(obj);\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n window.localStorage.setItem(key, json);\n break;\n case HtmlStorageLocation.Session:\n default:\n window.sessionStorage.setItem(key, json);\n break;\n }\n return Promise.resolve();\n }\n\n remove(key: string, options: StorageOptions = this.defaultOptions): Promise {\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n window.localStorage.removeItem(key);\n break;\n case HtmlStorageLocation.Session:\n default:\n window.sessionStorage.removeItem(key);\n break;\n }\n return Promise.resolve();\n }\n}\n","import { I18nService as BaseI18nService } from \"jslib-common/services/i18n.service\";\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || \"en-US\", localesDirectory, async (formattedLocale: string) => {\n const filePath =\n this.localesDirectory +\n \"/\" +\n formattedLocale +\n \"/messages.json?cache=\" +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n // Please leave 'en' where it is, as it's our fallback language in case no translation can be found\n this.supportedTranslationLocales = [\n \"en\",\n \"af\",\n \"az\",\n \"be\",\n \"bg\",\n \"bn\",\n \"bs\",\n \"ca\",\n \"cs\",\n \"da\",\n \"de\",\n \"el\",\n \"en-GB\",\n \"en-IN\",\n \"eo\",\n \"es\",\n \"et\",\n \"fi\",\n \"fil\",\n \"fr\",\n \"he\",\n \"hi\",\n \"hr\",\n \"hu\",\n \"id\",\n \"it\",\n \"ja\",\n \"ka\",\n \"km\",\n \"kn\",\n \"ko\",\n \"lv\",\n \"ml\",\n \"nb\",\n \"nl\",\n \"nn\",\n \"pl\",\n \"pt-PT\",\n \"pt-BR\",\n \"ro\",\n \"ru\",\n \"si\",\n \"sk\",\n \"sl\",\n \"sr\",\n \"sv\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"zh-CN\",\n \"zh-TW\",\n ];\n }\n}\n","import { StorageService } from \"jslib-common/abstractions/storage.service\";\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { PasswordRepromptService as BasePasswordRepromptService } from \"jslib-angular/services/passwordReprompt.service\";\n\nimport { PasswordRepromptComponent } from \"../app/components/password-reprompt.component\";\n\n@Injectable()\nexport class PasswordRepromptService extends BasePasswordRepromptService {\n component = PasswordRepromptComponent;\n}\n","import { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { FolderData } from \"jslib-common/models/data/folderData\";\nimport { SendData } from \"jslib-common/models/data/sendData\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\nimport { StateService as BaseStateService } from \"jslib-common/services/state.service\";\n\nimport { StateService as StateServiceAbstraction } from \"../abstractions/state.service\";\nimport { Account } from \"../models/account\";\nimport { GlobalState } from \"../models/globalState\";\n\nexport class StateService\n extends BaseStateService\n implements StateServiceAbstraction\n{\n async addAccount(account: Account) {\n // Apply web overides to default account values\n account = new Account(account);\n await super.addAccount(account);\n }\n\n async getRememberEmail(options?: StorageOptions) {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.rememberEmail;\n }\n\n async setRememberEmail(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.rememberEmail = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedCiphers(options);\n }\n\n async setEncryptedCiphers(\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedCiphers(value, options);\n }\n\n async getEncryptedCollections(\n options?: StorageOptions\n ): Promise<{ [id: string]: CollectionData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedCollections(options);\n }\n\n async setEncryptedCollections(\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedCollections(value, options);\n }\n\n async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedFolders(options);\n }\n\n async setEncryptedFolders(\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedFolders(value, options);\n }\n\n async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedSends(options);\n }\n\n async setEncryptedSends(\n value: { [id: string]: SendData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedSends(value, options);\n }\n\n override async getLastSync(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getLastSync(options);\n }\n\n override async setLastSync(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setLastSync(value, options);\n }\n}\n","import { StateMigrationService as BaseStateMigrationService } from \"jslib-common/services/stateMigration.service\";\n\nimport { Account } from \"../models/account\";\nimport { GlobalState } from \"../models/globalState\";\n\nexport class StateMigrationService extends BaseStateMigrationService {\n protected async migrationStateFrom1To2(): Promise {\n await super.migrateStateFrom1To2();\n const globals = (await this.get(\"global\")) ?? this.stateFactory.createGlobal(null);\n globals.rememberEmail = (await this.get(\"rememberEmail\")) ?? globals.rememberEmail;\n await this.set(\"global\", globals);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport Swal, { SweetAlertIcon } from \"sweetalert2\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ClientType } from \"jslib-common/enums/clientType\";\nimport { DeviceType } from \"jslib-common/enums/deviceType\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\n\n@Injectable()\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n private browserCache: DeviceType = null;\n private prefersColorSchemeDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n constructor(\n private i18nService: I18nService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (\n navigator.userAgent.indexOf(\" Firefox/\") !== -1 ||\n navigator.userAgent.indexOf(\" Gecko/\") !== -1\n ) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(\" OPR/\") >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(\" Edg/\") !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(\" Vivaldi/\") !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (\n navigator.userAgent.indexOf(\" Safari/\") !== -1 &&\n navigator.userAgent.indexOf(\"Chrome\") === -1\n ) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(\" Chrome/\") !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(\" Trident/\") !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace(\"browser\", \"\");\n }\n\n getClientType() {\n return ClientType.Web;\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement(\"a\");\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = \"_blank\";\n a.rel = \"noreferrer noopener\";\n }\n a.classList.add(\"d-none\");\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith(\".pdf\")) {\n type = \"application/pdf\";\n doDownload = false;\n } else if (fileNameLower.endsWith(\".xlsx\")) {\n type = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n } else if (fileNameLower.endsWith(\".docx\")) {\n type = \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n } else if (fileNameLower.endsWith(\".pptx\")) {\n type = \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n } else if (fileNameLower.endsWith(\".csv\")) {\n type = \"text/csv\";\n } else if (fileNameLower.endsWith(\".png\")) {\n type = \"image/png\";\n } else if (fileNameLower.endsWith(\".jpg\") || fileNameLower.endsWith(\".jpeg\")) {\n type = \"image/jpeg\";\n } else if (fileNameLower.endsWith(\".gif\")) {\n type = \"image/gif\";\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n\n const a = win.document.createElement(\"a\");\n if (doDownload) {\n a.download = fileName;\n } else if (!this.isSafari()) {\n a.target = \"_blank\";\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = \"fixed\";\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n\n getApplicationVersion(): Promise {\n return Promise.resolve(process.env.APPLICATION_VERSION || \"-\");\n }\n\n supportsWebAuthn(win: Window): boolean {\n return typeof PublicKeyCredential !== \"undefined\";\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(\n type: \"error\" | \"success\" | \"warning\" | \"info\",\n title: string,\n text: string | string[],\n options?: any\n ): void {\n this.messagingService.send(\"showToast\", {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(\n body: string,\n title?: string,\n confirmText?: string,\n cancelText?: string,\n type?: string,\n bodyIsHtml = false\n ) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case \"success\":\n iconClasses = \"bwi-check text-success\";\n break;\n case \"warning\":\n iconClasses = \"bwi-exclamation-triangle text-warning\";\n break;\n case \"error\":\n iconClasses = \"bwi-error text-danger\";\n break;\n case \"info\":\n iconClasses = \"bwi-info-circle text-info\";\n break;\n default:\n break;\n }\n }\n\n const bootstrapModal = document.querySelector(\"div.modal\");\n if (bootstrapModal != null) {\n bootstrapModal.removeAttribute(\"tabindex\");\n }\n\n const iconHtmlStr =\n iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n titleText: title,\n showCancelButton: cancelText != null,\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t(\"ok\") : confirmText,\n });\n\n if (bootstrapModal != null) {\n bootstrapModal.setAttribute(\"tabindex\", \"-1\");\n }\n\n return confirmed.value;\n }\n\n isDev(): boolean {\n return process.env.NODE_ENV === \"development\";\n }\n\n isSelfHost(): boolean {\n return process.env.ENV.toString() === \"selfhosted\";\n }\n\n copyToClipboard(text: string, options?: any): void | boolean {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData(\"Text\", text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported(\"copy\")) {\n const textarea = doc.createElement(\"textarea\");\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = \"fixed\";\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains(\"modal-open\")) {\n copyEl = doc.body.querySelector(\".modal\");\n }\n copyEl.appendChild(textarea);\n textarea.select();\n let success = false;\n try {\n // Security exception may be thrown by some browsers.\n success = doc.execCommand(\"copy\");\n if (!success) {\n this.logService.debug(\"Copy command unsupported or disabled.\");\n }\n } catch (e) {\n // eslint-disable-next-line\n console.warn(\"Copy to clipboard failed.\", e);\n } finally {\n copyEl.removeChild(textarea);\n }\n return success;\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error(\"Cannot read from clipboard on web.\");\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme(): Promise {\n return Promise.resolve(this.prefersColorSchemeDark.matches ? ThemeType.Dark : ThemeType.Light);\n }\n\n async getEffectiveTheme(): Promise {\n const theme = await this.stateService.getTheme();\n if (theme === ThemeType.Dark) {\n return ThemeType.Dark;\n } else if (theme === ThemeType.System) {\n return this.getDefaultSystemTheme();\n } else {\n return ThemeType.Light;\n }\n }\n\n onDefaultSystemThemeChange(callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown) {\n try {\n this.prefersColorSchemeDark.addEventListener(\"change\", ({ matches }) => {\n callback(matches ? ThemeType.Dark : ThemeType.Light);\n });\n } catch (e) {\n // Safari older than v14\n this.prefersColorSchemeDark.addListener((ev) => {\n callback(ev.matches ? ThemeType.Dark : ThemeType.Light);\n });\n }\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"darkInputColor\":\"#fff\",\"darkInputPlaceholderColor\":\"#bac0ce\",\"lightInputColor\":\"#465057\",\"lightInputPlaceholderColor\":\"#b6b8b8\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t148: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_bitwarden_web_vault\"] = self[\"webpackChunk_bitwarden_web_vault\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [734], () => (__webpack_require__(22977)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","routes","path","loadChildren","ProvidersModule","AppRoutingModule","RouterModule","forChild","AppComponent","ngOnInit","super","this","policyListService","addPolicies","MaximumVaultTimeoutPolicy","DisablePersonalVaultExportPolicy","AppModule","OverlayModule","OssModule","JslibModule","BrowserAnimationsModule","FormsModule","ReactiveFormsModule","ServicesModule","InfiniteScrollModule","DragDropModule","OssRoutingModule","OrganizationsModule","WildcardRoutingModule","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","BaseCvaComponent","constructor","controlDir","internalControl","FormControl","onValueChangesInternal","value","onChange","valueAccessor","describedById","showDescribedBy","controlId","helperText","control","hasError","isRequired","hasValidator","Validators","required","dirtyRequired","valueChanges","subscribe","onBlurInternal","onTouched","writeValue","setValue","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","disable","enable","InputCheckboxComponent","InputTextReadOnlyComponent","platformUtilsService","showCopy","showLaunch","copy","copyToClipboard","launchUri","url","InputTextComponent","stripSpaces","transformValue","newValue","emitEvent","doStripSpaces","onValueChangeInternal","replace","disabled","SelectComponent","defaultSigningAlgorithm","SsoComponent","formBuilder","route","apiService","i18nService","organizationService","ssoType","SsoType","ssoTypeOptions","name","t","None","OpenIdConnect","Saml2","samlSigningAlgorithms","saml2SigningBehaviourOptions","Saml2SigningBehavior","IfIdpWantAuthnRequestsSigned","Always","Never","saml2BindingTypeOptions","Saml2BindingType","HttpRedirect","HttpPost","saml2NameIdFormatOptions","Saml2NameIdFormat","NotConfigured","Unspecified","EmailAddress","X509SubjectName","WindowsDomainQualifiedName","KerberosPrincipalName","EntityIdentifier","Persistent","Transient","connectRedirectOptions","OpenIdConnectRedirectBehavior","RedirectGet","FormPost","showOpenIdCustomizations","loading","haveTestedKeyConnector","enabled","openIdForm","group","authority","clientId","clientSecret","metadataAddress","redirectBehavior","getClaimsFromUserInfoEndpoint","additionalScopes","additionalUserIdClaimTypes","additionalEmailClaimTypes","additionalNameClaimTypes","acrValues","expectedReturnAcrValue","updateOn","samlForm","spNameIdFormat","spOutboundSigningAlgorithm","spSigningBehavior","spMinIncomingSigningAlgorithm","spWantAssertionsSigned","spValidateCertificates","idpEntityId","idpBindingType","idpSingleSignOnServiceUrl","idpSingleLogoutServiceUrl","idpX509PublicCert","idpOutboundSigningAlgorithm","idpAllowUnsolicitedAuthnResponse","idpAllowOutboundLogoutRequests","idpWantAuthnRequestsSigned","ssoConfigForm","configType","keyConnectorEnabled","keyConnectorUrl","openId","saml","get","newType","updateValueAndValidity","parent","params","organizationId","load","organization","ssoSettings","getOrganizationSso","populateForm","callbackPath","urls","signedOutCallbackPath","spEntityId","spMetadataUrl","spAcsUrl","submit","validateForm","validateKeyConnectorUrl","valid","readOutErrors","request","OrganizationSsoRequest","data","SsoConfigApi","fromView","formPromise","postOrganizationSso","response","showToast","markAsPending","getKeyConnectorAlive","setErrors","invalidUrl","toggleOpenIdCustomizations","getErrorCount","form","Object","values","controls","reduce","acc","FormGroup","errors","keys","length","enableTestKeyConnector","Utils","isNullOrWhitespace","samlSigningAlgorithmOptions","map","algorithm","forEach","markAsDirty","markAsTouched","ssoConfigView","SsoConfigView","patchValue","errorText","errorCount","errorCountText","toString","div","document","createElement","className","id","setAttribute","innerText","existing","getElementById","remove","body","append","component","OrganizationLayoutComponent","canActivate","AuthGuard","PermissionsGuard","children","ManageComponent","permissions","NavigationPermissionsService","getPermissions","concat","Permissions","ManageSso","OrganizationsRoutingModule","CommonModule","BasePolicy","description","type","PolicyType","DisablePersonalVaultExport","DisablePersonalVaultExportPolicyComponent","BasePolicyComponent","MaximumVaultTimeout","MaximumVaultTimeoutPolicyComponent","hours","minutes","loadData","policyResponse","Math","floor","buildRequestData","buildRequest","policiesEnabledMap","singleOrgEnabled","SingleOrg","Error","AddOrganizationComponent","providerService","webProviderService","validationService","onAddedOrganization","EventEmitter","providerId","provider","add","showDialog","addOrganizationToProvider","e","showError","emit","DisallowedPlanTypes","PlanType","Free","FamiliesAnnually2019","FamiliesAnnually","ClientsComponent","searchService","logService","modalService","manageOrganizations","showAddExisting","didScroll","pageSize","pagedClientsCount","queryParams","pipe","first","qParams","searchText","search","getProviderClients","clients","ProviderUserType","ProviderAdmin","candidateOrgs","getAll","filter","o","isOwner","allowedOrgsIds","Promise","all","getOrganization","then","orgs","includes","planType","addableOrganizations","isPaging","searching","isSearching","resetPaging","isSearchable","pagedClients","loadMore","pagedLength","pagedSize","slice","addExistingOrganization","modal","openViewRef","addModalRef","comp","organizations","close","error","organizationName","actionPromise","detachOrganizastion","ViewContainerRef","CreateOrganizationComponent","OrganizationPlansComponent","router","indexOf","AccessEventLogs","canAccessEventLogs","ManageProvider","isProviderAdmin","ManageUsers","canManageUsers","navigate","ProviderGuard","AcceptProviderComponent","BaseAcceptComponent","stateService","platformUtilService","failedMessage","requiredParameters","authedHandler","ProviderUserAcceptRequest","token","postProviderUserAccept","providerUserId","timeout","unauthedHandler","providerName","BulkConfirmComponent","isAccepted","user","status","ProviderUserStatusType","Accepted","getPublicKeys","ProviderUserBulkRequest","filteredUsers","postProviderUsersPublicKey","getCryptoKey","cryptoService","getProviderKey","postConfirmRequest","userIdsWithKeys","ProviderUserBulkConfirmRequest","postProviderUserBulkConfirm","BulkRemoveComponent","deleteUsers","users","deleteManyProviderUsers","EventsComponent","BaseEventsComponent","eventService","exportService","userNamePipe","exportFileName","providerUsersUserIdMap","Map","providerUsersIdMap","useEvents","getProviderUsers","u","transform","set","email","userId","loadEvents","loaded","requestEvents","startDate","endDate","continuationToken","getEventsProvider","getUserName","r","has","exportEvents","accessEvents","PeopleComponent","BasePeopleComponent","searchPipe","userType","userStatusType","viewEvents","Confirmed","events","relativeTo","getUsers","deleteUser","deleteProviderUser","reinviteUser","postProviderUserReinvite","confirmUser","publicKey","providerKey","key","rsaEncrypt","buffer","ProviderUserConfirmRequest","encryptedString","postProviderUserConfirm","edit","UserAddEditComponent","addEditModalRef","onSavedUser","onDeletedUser","removeUser","EntityEventsComponent","eventsModalRef","entityId","showUser","entity","bulkRemove","bulkRemoveModalRef","getCheckedUsers","onClosedPromise","bulkReinvite","Invited","postManyProviderUserReinvite","showBulkStatus","bulkConfirm","bulkConfirmModalRef","successfullMessage","childComponent","BulkStatusComponent","bulkStatusModalRef","onShown","keyedErrors","a","x","keyedFilteredUsers","message","hasOwnProperty","selectAll","invite","editMode","ServiceUser","PermissionsApi","showCustom","access","title","getProviderUser","ProviderUserUpdateRequest","putProviderUser","ProviderUserInviteRequest","emails","trim","split","postProviderUserInvite","delete","deletePromise","ProvidersLayoutComponent","classList","showMenuBar","showManageTab","showSettingsTab","manageRoute","ProvidersComponent","FrontendLayoutComponent","SetupProviderComponent","titleId","SetupComponent","pathMatch","redirectTo","SettingsComponent","AccountComponent","ProvidersRoutingModule","componentFactoryResolver","registerComponentFactoryResolver","WebProviderService","syncService","orgKey","getOrgKey","encryptedOrgKey","encrypt","ProviderAddOrganizationRequest","postProviderAddOrganization","fullSync","deleteProviderOrganization","selfHosted","isSelfHost","getProvider","ProviderUpdateRequest","businessName","billingEmail","putProvider","failedShortMessage","authed","replaceUrl","doSubmit","makeShareKey","ProviderSetupRequest","postProviderSetup","AddEditCustomFieldsComponent","addFieldType","FieldType","Text","linkedFieldOptions","cipherType","CipherType","fieldType","eventType","EventType","addFieldTypeOptions","Hidden","Boolean","addFieldLinkedTypeOption","Linked","ngOnChanges","changes","thisCipherType","setLinkedFieldOptions","firstChange","resetCipherLinkedFields","addField","cipher","fields","f","FieldView","newField","linkedId","push","removeField","field","i","splice","toggleFieldValue","showValue","collect","Cipher_ClientToggledHiddenFieldVisible","trackByFunction","index","item","drop","event","moveItemInArray","previousIndex","currentIndex","options","linkedFieldOption","i18nKey","sort","getSortFunction","AddEditComponent","cipherService","folderService","auditService","collectionService","messagingService","policyService","passwordRepromptService","cloneMode","folderId","onSavedCipher","onDeletedCipher","onRestoredCipher","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","onGenerateUsername","collections","showPassword","showCardNumber","showCardCode","ownershipOptions","currentDate","Date","allowPersonal","reprompt","canUseReprompt","typeOptions","Login","Card","Identity","SecureNote","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","uriMatchOptions","UriMatchType","Domain","Host","StartsWith","RegularExpression","Exact","autofillOnPageLoadOptions","init","policyAppliesToUser","PersonalOwnership","myEmail","getEmail","OrganizationUserStatusType","writeableCollections","loadCollections","cipherId","addEditCipherInfo","getAddEditCipherInfo","collectionIds","setAddEditCipherInfo","loadCipher","decrypt","CipherView","login","LoginView","uris","LoginUriView","card","CardView","identity","IdentityView","secureNote","SecureNoteView","SecureNoteType","Generic","CipherRepromptType","organizationChanged","c","checked","folders","getAllDecrypted","previousCipherId","Cipher_ClientViewed","isDeleted","restore","uri","encryptCipher","saveCipher","send","addUri","removeUri","cancel","attachments","share","editCollections","deleteCipher","restorePromise","restoreCipher","generateUsername","username","generatePassword","password","togglePassword","focus","Cipher_ClientToggledPasswordVisible","toggleCardNumber","Cipher_ClientToggledCardNumberVisible","toggleCardCode","Cipher_ClientToggledCardCodeVisible","toggleUriOptions","showOptions","match","loginUriMatchChanged","org","organizationUseTotp","useTotp","checkPassword","checkPasswordPromise","passwordLeaked","matches","repromptChanged","Password","readOnly","saveWithServer","deleteWithServer","softDeleteWithServer","restoreWithServer","AttachmentsComponent","win","onUploadedAttachment","onDeletedAttachment","onReuploadedAttachment","deletePromises","reuploadPromises","emergencyAccessId","hasUpdatedKey","fileEl","files","size","saveCipherAttachment","cipherDomain","attachment","deleteCipherAttachment","download","downloading","canAccessAttachments","getAttachmentData","ErrorResponse","statusCode","getSingleMessage","fetch","Request","cache","buf","arrayBuffer","decBuf","decryptFromBytes","saveFile","fileName","hasEncKey","canAccessPremium","getCanAccessPremium","reuploadCipherAttachment","admin","resolve","saveAttachmentRawWithServer","foundAttachment","a2","file","saveAttachmentWithServer","attachmentId","deleteAttachmentWithServer","Window","AvatarComponent","sanitizer","cryptoFunctionService","charCount","textColor","fontSize","fontWeight","dynamic","circle","generate","getEnableGravitars","hashBytes","hash","toLowerCase","fromBufferToHex","src","chars","upperData","toUpperCase","getFirstLetters","unicodeSafeSubstring","regexpEmojiPresentation","charObj","getCharText","color","stringToColor","svg","getSvg","appendChild","html","window","outerHTML","svgHtml","btoa","unescape","encodeURIComponent","str","charCodeAt","substr","count","parts","text","svgTag","style","backgroundColor","width","height","character","textTag","textContent","characters","join","CalloutComponent","useAlertRole","calloutStyle","undefined","enforcedPolicyMessage","icon","getPasswordScoreAlertDisplay","enforcedPolicyOptions","minComplexity","CaptchaProtectedComponent","environmentService","captchaSiteKey","captchaToken","setupCaptcha","webVaultUrl","getWebVaultUrl","captcha","CaptchaIFrame","info","showCaptcha","handleCaptchaRequired","ChangePasswordComponent","passwordGenerationService","getMasterPasswordPolicyOptions","strongPassword","setupSubmitActions","kdf","getKdfType","kdfIterations","getKdfIterations","makeKey","masterPassword","masterPasswordHash","hashPassword","encKey","getEncKey","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","score","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","setTimeout","masterPasswordScore","logOut","userInput","atPosition","CiphersComponent","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","ciphers","searchPlaceholder","deleted","searchPending","searchTimeout","deletedFilter","applyFilter","reload","refresh","indexedCiphers","doSearch","selectCipher","rightClickCipher","addCipher","addCipherOptions","searchCiphers","CollectionsComponent","allowSelectNone","onSavedCollections","loadCipherCollections","selectedCollectionIds","saveCollections","saveCollectionsWithServer","ExportScopeCalloutComponent","show","hasOrganizations","scopeConfig","scopeIdentifier","ExportComponent","userVerificationService","onSaved","disabledByPolicy","exportForm","format","secret","formatOptions","checkExportDisabled","encryptedFormat","warningDialog","verifyUser","getExportData","downloadFile","saved","collectEvent","getExport","getFileName","prefix","extension","User_ClientExportedVault","csv","FolderAddEditComponent","onSavedFolder","onDeletedFolder","folder","FolderView","GeneratorComponent","usernameGenerationService","comingFromAddEdit","onSelected","usernameOptions","passwordOptions","avoidAmbiguous","usernameWebsite","passTypeOptions","usernameTypeOptions","desc","subaddressOptions","catchallOptions","forwardOptions","passwordOptionsResponse","getOptions","enforcedPasswordPolicyOptions","ambiguous","subaddressEmail","subaddressType","catchallType","website","websiteOption","generatorOptions","getGeneratorOptions","regenerateWithoutButtonPress","regenerate","typeChanged","setGeneratorOptions","regeneratePassword","regenerateUsername","sliderChanged","savePasswordOptions","addHistory","sliderInput","normalizePasswordOptions","saveOptions","saveUsernameOptions","usernameGeneratingPromise","copyOptions","select","toggleOptions","uppercase","lowercase","number","special","querySelector","normalizeOptions","successRoute","postPasswordHint","PasswordHintRequest","onSuccessfulSubmit","cardIcons","Visa","Mastercard","Amex","Discover","JCB","Maestro","UnionPay","IconComponent","iconsUrl","getIconsUrl","image","fallbackImage","imageEnabled","getDisableFavicon","setLoginIcon","setCardIcon","hostnameUri","isWebsite","getHostname","brand","LockComponent","vaultTimeoutService","keyConnectorService","ngZone","pin","pinLock","webVaultHostname","invalidPinAttempts","activeAccount","failed","pinSet","makeKeyFromPin","getDecryptedPinProtected","protectedPin","getProtectedPin","decryptToUtf8","EncString","setKeyAndContinue","passwordValid","getKeyHash","compareAndUpdateKeyHash","SecretVerificationRequest","serverKeyHash","HashPurpose","ServerAuthorization","postAccountVerifyPassword","localKeyHash","LocalAuthorization","setKeyHash","decPin","pinKey","makePinKey","setDecryptedPinProtected","unlockBiometric","biometricLock","success","getKey","KeySuffixOptions","Biometric","doContinue","input","isStable","onStable","take","setKey","setBiometricLocked","setEverBeenUnlocked","disableFavicon","setDisableFavicon","isPinLockSet","supportsBiometric","isBiometricLockSet","hasKeyStored","supportsSecureStorage","biometricText","getBiometricText","usesKeyConnector","getUsesKeyConnector","hideInput","vaultUrl","LoginComponent","authService","rememberEmail","twoFactorRoute","forcePasswordResetRoute","alwaysRememberEmail","getRememberedEmail","isBrowser","isNode","focusInput","credentials","PasswordLogInCredentials","logIn","setRememberedEmail","requiresTwoFactor","onSuccessfulLoginTwoFactorNavigate","forcePasswordReset","onSuccessfulLoginForceResetNavigate","onSuccessfulLogin","onSuccessfulLoginNavigate","launchSsoBrowser","ssoRedirectUri","numbers","state","ssoCodeVerifier","codeVerifierHash","codeChallenge","fromBufferToUrlB64","setSsoState","setSsoCodeVerifier","webUrl","DynamicModalComponent","cd","el","focusTrapFactory","modalRef","ngAfterViewInit","loadChildComponent","childComponentType","setComponentParameters","componentRef","instance","detectChanges","created","nativeElement","focusTrap","create","focusFirstTabbableElementWhenReady","componentType","componentFactory","resolveComponentFactory","modalContentRef","clear","createComponent","ngOnDestroy","destroy","getFocus","autoFocusEl","_parentInjector","_additionalTokens","notFoundValue","flags","_onCreated","Subject","_onClose","_onClosed","_onShow","_onShown","onCreated","asObservable","onClose","onClosed","onShow","next","shown","result","lastResult","closed","toPromise","PasswordGeneratorHistoryComponent","history","getHistory","PasswordRepromptComponent","RegisterComponent","confirmMasterPassword","hint","showTerms","acceptPolicies","masterPasswordScoreWidth","masterPasswordScoreColor","masterPasswordScoreText","DEFAULT_KDF_TYPE","DEFAULT_KDF_ITERATIONS","hashedPassword","makeKeyPair","RegisterRequest","referenceData","KeysRequest","orgInvite","getOrganizationInvitation","organizationUserId","postRegister","confirmField","RemovePasswordComponent","continuing","leaving","getManagingOrganization","convert","migrateUser","removeConvertAccountRequired","leave","postLeaveOrganization","datePipe","sendService","onSavedSend","onDeletedSend","copyLink","disableSend","disableHideEmail","sendType","SendType","emailVerified","alertShown","File","sendLinkBaseUrl","getSendUrl","link","accessId","urlB64Key","isSafari","isDateTimeLocalSupported","isFirefox","sendId","setDates","deletionDate","expirationDate","DisableSend","SendOptions","p","getEmailVerified","loadSend","SendView","SendFileView","SendTextView","setDate","getDate","hasPassword","encryptSend","encSend","uploadPromise","copySuccess","copyLinkToClipboard","sendData","togglePasswordVisible","BrowserPath","DateField","DatePreset","EffluxDatesComponent","datesChanged","datesForm","selectedDeletionDatePreset","selectedExpirationDatePreset","defaultDeletionDateTime","defaultExpirationDateTime","fallbackDeletionDate","fallbackDeletionTime","fallbackExpirationDate","fallbackExpirationTime","deletionDatePresets","OneHour","OneDay","TwoDays","ThreeDays","SevenDays","ThirtyDays","Custom","expirationDatePresets","browserPath","Firefox","Safari","Default","formattedDeletionDate","now","miliseconds","setTime","getTime","formattedExpirationDate","safariDeletionTimePresetOptions","safariTimePresetOptions","DeletionDate","safariExpirationTimePresetOptions","ExpriationDate","nextWeek","setInitialFormValues","emitDates","onDeletionDatePresetSelect","clearExpiration","initialDeletionDate","toISOString","toTimeString","initialExpirationDate","twentyFourHour","noon","midnight","ams","pms","h","m","hour","midnightOption","twelveHour","noonOption","amOption","pmOption","validTimes","SendComponent","refreshing","expired","sends","filteredSends","hasSearched","onSuccessfulLoad","s","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","searchTextChanged","clearSelections","selectedAll","selectType","selectedType","searchSends","SetPasswordComponent","syncLoading","identifier","resetPasswordAutoEnroll","getOrganizationAutoEnrollStatus","orgId","resetPasswordEnabled","getMasterPasswordPoliciesForInvitedUsers","SetPasswordRequest","setPassword","onSetPasswordSuccess","getOrganizationKeys","getUserId","fromB64ToArray","userEncKey","encryptedKey","resetRequest","OrganizationUserResetPasswordEnrollmentRequest","resetPasswordKey","putOrganizationUserResetPasswordEnrollment","onSuccessfulChangePassword","setKdfType","setKdfIterations","setEncKey","setEncPrivateKey","VaultTimeoutInputComponent","vaultTimeout","custom","CUSTOM_VALUE","vaultTimeoutPolicy","vaultTimeoutPolicyHours","vaultTimeoutPolicyMinutes","vaultTimeouts","validatorChange","getVaultTimeout","current","max","every","validate","policyError","registerOnValidatorChange","ShareComponent","onSharedCipher","allCollections","filterCollections","cipherView","orgName","find","shareWithServer","canSave","loggingIn","changePasswordRoute","code","codeVerifier","getSsoCodeVerifier","getSsoState","checkState","getOrgIdentifierFromState","redirectUri","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","authorizeUrl","buildAuthorizeUrl","sameWindow","preValidateSso","getIdentityUrl","userIdentifier","getSsoUserIdentifier","orgIdFromState","SsoLogInCredentials","sso","resetMasterPassword","onSuccessfulLoginChangePasswordNavigate","stateSplit","checkStateSplit","BitwardenToast","toastrService","toastPackage","trigger","opacity","transition","animate","BitwardenToastGlobalConfig","DefaultNoComponentGlobalConfig","toastComponent","BitwardenToastModule","static","config","ngModule","providers","provide","TOAST_CONFIG","useValue","default","TwoFactorOptionsComponent","twoFactorService","onProviderSelected","onRecoverSelected","getSupportedProviders","choose","recover","TwoFactorComponent","appIdService","remember","webAuthnReady","webAuthnNewTab","TwoFactorProviders","providerType","TwoFactorProviderType","selectedProviderType","Authenticator","webAuthnSupported","webAuthn","twoFactorEmail","loginRoute","supportsWebAuthn","webAuthnAllow","authing","getProviders","needsLock","WebAuthnIFrame","getDefaultProvider","cleanupWebAuthn","providerData","WebAuthn","authWebAuthn","Duo","OrganizationDuo","DuoWebSDK","iframe","host","sig_request","Signature","submit_callback","sig","Email","sendEmail","stop","start","logInTwoFactor","TokenRequestTwoFactor","doToast","emailPromise","TwoFactorEmailRequest","deviceIdentifier","getAppId","postTwoFactorEmail","cleanup","authingWithPassword","authingWithSso","authingWithApiKey","UpdatePasswordComponent","setOrganizationInvitation","currentMasterPassword","VerificationType","MasterPassword","PasswordRequest","newMasterPasswordHash","postPassword","UpdateTempPasswordComponent","newKey","newPasswordHash","newEncKey","UpdateTempPasswordRequest","masterPasswordHint","putUpdateTempPassword","UserVerificationComponent","disableRequestOTP","sentCode","processChanges","requestOTP","obj","OTP","NG_VALUE_ACCESSOR","multi","useExisting","A11yInvalidDirective","formControlDirective","sub","statusChanges","unsubscribe","A11yTitleDirective","renderer","appA11yTitle","hasAttribute","ApiActionDirective","appApiAction","captchaRequired","AutofocusDirective","appAutofocus","condition","autofocus","isMobileBrowser","BlurClickDirective","onClick","blur","FallbackSrcDirective","onError","appFallbackSrc","InputStripSpacesDirective","onInput","InputVerbatimDirective","appInputVerbatim","disableComplete","NotPremiumDirective","templateRef","viewContainer","createEmbeddedView","SelectCopyDirective","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","substring","StopClickDirective","$event","preventDefault","StopPropDirective","stopPropagation","TrueFalseValueDirective","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","ev","target","setProperty","forwardRef","routerState","authStatus","getAuthStatus","AuthenticationStatus","LoggedOut","Locked","createUrlTree","promptBiometric","getConvertAccountRequired","LockGuard","homepage","loginpage","redirectUrl","UnauthGuard","CreditCardNumberPipe","DatePipe","I18nPipe","SearchPipe","UserNamePipe","forRoot","maxOpened","autoDismiss","closeButton","CollectionFilterComponent","hide","onNodeCollapseStateChange","onFilterChange","collectionsGrouping","collectionNodes","fullList","nestedCollections","nestedList","isCollapsed","node","collapsedFilterNodes","collection","activeFilter","resetFilter","selectedCollectionId","toggleCollapse","FolderFilterComponent","onAddFolder","onEditFolder","foldersGrouping","folderNodes","nestedFolders","selectedFolder","selectedFolderId","addFolder","editFolder","OrganizationFilterComponent","organizationGrouping","displayMode","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","hasActiveFilter","myVaultOnly","selectedOrganizationId","applyOrganizationFilter","refreshCollectionsAndFolders","applyMyVaultFilter","clearFilter","VaultFilter","StatusFilterComponent","hideFavorites","hideTrash","cipherStatus","TypeFilterComponent","selectedCipherType","typesNode","cipherTypeEnum","assign","hasId","resetOrganization","VaultFilterComponent","vaultFilterService","hideFolders","hideCollections","hideOrganizations","isLoaded","displayCollections","buildCollapsedFilterNodes","buildOrganizations","checkForPersonalOwnershipPolicy","checkForSingleOrganizationPolicy","buildFolders","initCollections","buildCollections","toggleFilterNodeCollapseState","storeCollapsedFilterNodes","reloadCollectionsAndFolders","pruneInvalidatedFilterSelections","reloadOrganizations","pruneInvalidFolderSelection","pruneInvalidCollectionSelection","VaultFilterService","setCollapsedGroupings","Array","from","Set","getCollapsedGroupings","storedFolders","orgCiphers","oc","getAllNested","DynamicTreeNode","storedCollections","ColorPasswordPipe","generateTemplate","templateGenerator","passwordArray","colorizedPassword","isSpecial","numberFormats","cardLength","blocks","Other","creditCardNumber","rules","matchingRule","chunks","total","EllipsisPipe","limit","completeWords","ellipsis","lastIndexOf","p1","p2","p3","items","prop1","prop2","prop3","BroadcasterService","WINDOW","InjectionToken","SECURE_STORAGE","STATE_FACTORY","STATE_SERVICE_USE_CACHE","LOGOUT_CALLBACK","LOCKED_CALLBACK","CLIENT_TYPE","LOCALES_DIRECTORY","SYSTEM_LANGUAGE","JslibServicesModule","ValidationService","ModalService","LOCALE_ID","useFactory","translationLocale","deps","I18nService","navigator","language","StateFactory","GlobalState","Account","MessagingService","AppIdService","useClass","StorageService","AuditService","CryptoFunctionService","ApiService","AuthService","CryptoService","TokenService","PlatformUtilsService","LogService","KeyConnectorService","EnvironmentService","StateService","TwoFactorService","CipherService","settingsService","fileUploadService","injector","SearchService","SettingsService","FileUploadService","Injector","FolderService","ConsoleLogService","CollectionService","TotpService","PasswordGenerationService","PolicyService","UsernameGenerationService","SyncService","SendService","OrganizationService","ProviderService","VaultTimeoutService","StateMigrationService","ExportService","NotificationsService","WebCryptoFunctionService","EventService","UserVerificationService","PasswordRepromptService","ModalConfig","allowMultipleModals","applicationRef","modalList","factoryResolvers","addEventListener","modalCount","topModal","viewContainerRef","modalComponentRef","openInternal","insert","hostView","open","attachToDom","createModalComponent","attachView","domElem","rootNodes","detachView","pop","setupHandlers","backdrop","modalEl","dialogEl","zIndex","prepend","modals","querySelectorAll","closeElement","ModalRef","WeakMap","ModalInjector","protectedFields","showPasswordPrompt","ref","defaultErrorMessage","validationErrors","getAllMessages","dirty","valueGetter","caseInsensitive","notAllowedValue","controlValue","indexedEntityId","AuthenticationType","ClientType","DeviceType","EmergencyAccessStatusType","EmergencyAccessType","EncryptionType","FileUploadType","HtmlStorageLocation","featuredImportOptions","regularImportOptions","KdfType","PBKDF2_SHA256","SEND_KDF_ITERATIONS","LoginLinkedId","CardLinkedId","IdentityLinkedId","LogLevelType","NotificationType","OrganizationApiKeyType","OrganizationConnectionType","OrganizationUserType","PaymentMethodType","PlanSponsorshipType","ProductType","StateVersion","StorageLocation","ThemeType","TransactionType","accountConstructor","args","globalStateConstructor","globalStateFactory","GlobalStateFactory","accountFactory","AccountFactory","createGlobal","createAccount","AscendoCsvImporter","BaseImporter","parse","ImportResult","results","parseCsv","initLoginCipher","notes","getValueOrDefault","val","fieldLower","passwordFieldNames","usernameFieldNames","uriFieldNames","makeUriArray","processKvp","convertToNoteIfNeeded","cleanupCipher","AvastCsvImporter","web","AvastJsonImporter","JSON","logins","custName","note","pwd","loginName","label","cards","cardholderName","holderName","cardNumber","cvv","getCardBrand","month","expMonth","year","expYear","AviraCsvImporter","nameFromUrl","secondary_username","newLineRegex","notesFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","doc","DOMParser","parseFromString","header","parseOptions","splitNewLine","papa","row","warning","parseSingleRowCsv","rowData","parsedRow","loginUri","fixUri","returnArr","hostname","startsWith","defaultValue","cardNum","re","RegExp","test","setCardExpiration","expiration","moveFoldersToCollections","folderRelationships","collectionRelationships","CollectionView","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","parentNode","favorite","processFolder","folderName","folderIndex","hasFolder","processFullName","fullName","nameParts","firstName","lastName","middleName","BitwardenCsvImporter","col","addCollection","collectionIndex","parseInt","console","delimPosition","totp","login_totp","login_username","login_password","login_uri","BitwardenJsonImporter","passwordProtected","missingPassword","errorMessage","encrypted","parseEncrypted","parseDecrypted","encKeyValidation_DO_NOT_EDIT","encKeyValidation","groupingsMap","CollectionWithIdExport","toDomain","view","FolderWithIdExport","CipherWithIdExport","passwordHistory","cId","toView","BitwardenPasswordProtectedImporter","parsedData","cannotParseFile","encData","clearTextData","jdoc","salt","kdfType","BlackBerryCsvImporter","grouping","fav","extra","BlurCsvImporter","domain","OfficialProps","ButtercupCsvImporter","URL","processingCustomFields","prop","ChromeCsvImporter","ClipperzHtmlImporter","textarea","entry","currentVersion","property","actionType","labelLower","CodebookCsvImporter","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","_mappedCredentialsColums","_mappedPersonalInfoAsIdentiyColumns","_mappedSecureNoteColumns","DashlaneCsvImporter","parsePersonalInformationRecordAsIdentity","rowKeys","category","parseCredentialsRecord","parsePaymentRecord","parseIdRecord","parsePersonalInformationRecord","parseSecureNoteRecords","otpSecret","importUnmappedFields","account_name","mappedValues","cc_number","expiration_month","expiration_year","account_holder","account_number","licenseNumber","passportNumber","ssn","first_name","middle_name","last_name","item_name","dataRow","phone","phone_number","address1","address","city","postalCode","zip","country","HandledResults","DashlaneJsonImporter","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","pseudo","addressName","addressFull","zipcode","bank","owner","nameProperty","EncryptrCsvImporter","Label","Notes","CVV","expiry","Expiry","expParts","EnpassCsvImporter","firstRow","containsField","fieldValue","fieldName","fieldNameLower","EnpassJsonImporter","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","some","sensitive","uuid","parent_uuid","titlePrefix","tree","FirefoxCsvImporter","FSecureFskImporter","service","creditNumber","creditCvv","creditExpiry","GnomeJsonImporter","keyRing","display_name","attributes","username_value","attr","ImportError","passwordRequired","NotesHeader","ApplicationsHeader","WebsitesHeader","Delimiter","KasperskyTxtImporter","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","n","w","nameKey","itemComment","itemCommentKey","l","colonIndex","KeePass2XmlImporter","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","KeePassXCsvImporter","Title","Group","KeeperCsvImporter","LastPassCsvImporter","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","company","address2","address3","charAt","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","Number","monthString","getMonth","isNaN","Company","State","Country","dataObj","processingNotes","extraPart","LogMeOnceCsvImporter","MeldiumCsvImporter","DisplayName","UserName","Url","MSecureCsvImporter","mappedBaseColumns","_mappedUserAccountColumns","_mappedCreditCardColumns","_mappedIdentityColumns","_mappedIdCardColumns","_mappedTwoFaColumns","_mappedUserNoteColumns","MykiCsvImporter","nickname","additionalInfo","twofaSecret","authToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","idType","idName","idCountry","idNumber","content","NordPassCsvImporter","record","recordType","evaluateType","cardholdername","cardnumber","cvc","expirydate","full_name","importRecord","lowerProperty","OnePassword1PifImporter","line","trashed","hmac","processStandardItem","processWinOpVaultItem","overview","URLs","details","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","location","secureContents","maxSize","time","b","ph","PasswordHistoryView","lastUsedDate","designationKey","valueKey","k","toUTCString","fieldDesignation","street","OnePassword1PuxImporter","accounts","vaults","vault","categoryUuid","CategoryEnum","Database","WirelessRouter","Server","API_Credential","CreditCard","BankAccount","SoftwareLicense","EmailAccount","MedicalRecord","DriversLicense","OutdoorLicense","Membership","Passport","RewardsProgram","SocialSecurityNumber","favIndex","processOverview","processLoginFields","processDetails","processSections","tags","capitalize","inputString","loginFields","loginField","designation","LoginFieldTypeEnum","CheckBox","parseSectionFields","anyField","getFieldName","extractValue","fillLogin","fillApiCredentials","fillCreditCard","fillBankAccount","fillIdentity","fillDriversLicense","fillOutdoorLicense","fillMembership","fillPassport","fillRewardsProgram","fillSSN","email_address","guarded","date","monthYear","historyItems","IgnoredProperties","OnePasswordCsvImporter","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","func","bind","readableDate","OnePasswordMacCsvImporter","OnePasswordWinCsvImporter","setIdentityAddress","expSplit","PadlockCsvImporter","headers","v","tag","PassKeepCsvImporter","getValue","PassmanJsonImporter","otp","custom_fields","customField","field_type","PasspackCsvImporter","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","PasswordAgentCsvImporter","newVersion","altFormat","PasswordBossJsonImporter","login_url","identifiers","valObj","expDate","getFullYear","cf","PasswordDragonXmlImporter","records","categoryText","accountName","tagName","PasswordSafeXmlImporter","passwordSafe","notesDelimiter","getAttribute","groupText","PasswordWalletTxtImporter","RememBearCsvImporter","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","RoboFormCsvImporter","Folder","Name","Pwd","Rf_fields","SafariCsvImporter","OTPAuth","SafeInCloudXmlImporter","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","candidates","choice","SaferPassCsvImporter","SecureSafeCsvImporter","Comment","SplashIdCsvImporter","parseFieldsToNotes","startIndex","StickyPasswordXmlImporter","loginNodes","loginNode","accountId","usernameText","passwordText","titleText","linkText","notesText","groupId","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","TrueKeyCsvImporter","memo","kind","expiryDate","document_content","UpmCsvImporter","YotiCsvImporter","ZohoVaultCsvImporter","ChamberName","parseData","SecretData","CustomData","IFrameComponent","successCallback","errorCallback","infoCallback","parsedMessage","siteKey","initComponent","createParams","locale","iframeId","parseFunction","parseMessage","connectorLink","sendMessage","contentWindow","postMessage","base64Encode","String","fromCharCode","removeEventListener","version","URLSearchParams","stringify","href","validMessage","origin","LinkedMetadata","propertyKey","_i18nKey","prototype","ApiLogInStrategy","LogInStrategy","tokenService","tokenResponse","apiUseKeyConnector","getKeyConnectorUrl","getAndSetKey","tokenRequest","ApiTokenRequest","buildTwoFactor","buildDeviceRequest","startLogIn","saveAccountInformation","setApiKeyClientId","setApiKeyClientSecret","captchaBypassToken","twoFactor","captchaResponse","setTwoFactor","clearSelectedProvider","postIdentityToken","IdentityTwoFactorResponse","processTwoFactorResponse","IdentityCaptchaResponse","processCaptchaResponse","IdentityTokenResponse","processTokenResponse","appId","DeviceRequest","userProvidedTwoFactor","storedTwoFactorToken","getTwoFactorToken","Remember","accountInformation","decodeToken","accessToken","addAccount","profile","AccountProfile","hasPremiumPersonally","premium","tokens","AccountTokens","refreshToken","AuthResult","twoFactorToken","setTwoFactorToken","privateKey","createKeyPairForOldAccount","twoFactorProviders","twoFactorProviders2","setProviders","postAccountKeys","PasswordLogInStrategy","localHashedPassword","makePreloginKey","PasswordTokenRequest","SsoLogInStrategy","newSsoUser","convertNewSsoUserToKeyConnector","SsoTokenRequest","cacheKey","descriptor","originalMethod","caches","getCache","argsCacheKey","onFinally","apply","catch","err","ServiceUtils","nodeTree","partIndex","delimiter","end","partName","TreeNode","nestedTraverse","newPartName","getTreeNodeObject","throttleKey","allThrottles","throttles","getThrottles","argsThrottleKey","queue","reject","exec","nodeURL","inited","process","release","isMobile","isAppleMobileBrowser","isAppleMobile","global","g","Uint8Array","Buffer","binaryString","atob","bytes","fromUrlB64ToB64","strUtf8","arr","binary","byteLength","fromB64toUrlB64","fromBufferToB64","b64Str","encodedString","decodeURIComponent","escape","call","urlB64Str","output","fromB64ToUtf8","utfStr","fromUtf8ToArray","random","uriString","getUrl","httpUrl","tldEndingRegex","getUrlObject","tldjs","isValid","validIpAddress","urlDomain","getDomain","pair","collator","compare","localeCompare","source","ipString","mobile","userAgent","vendor","opera","hasProtocol","anchor","btnText","allow","EEFLongWordList","BillingSyncConfigApi","BaseResponse","billingSyncKey","getResponseProperty","CardApi","FieldApi","IdentityApi","LoginApi","passwordRevisionDate","autofillOnPageLoad","LoginUriApi","accessEventLogs","accessImportExport","accessReports","manageAllCollections","manageAssignedCollections","createNewCollections","editAnyCollection","deleteAnyCollection","editAssignedCollections","deleteAssignedCollections","manageCiphers","manageGroups","manageSso","managePolicies","manageUsers","manageResetPassword","SecureNoteApi","SendFileApi","sizeName","SendTextApi","hidden","idpDisableOutboundLogoutRequests","api","viewPassword","revisionDate","deletedDate","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","PasswordHistoryData","externalId","LoginUriData","usePolicies","useGroups","useDirectory","use2fa","useApi","useSso","useKeyConnector","useResetPassword","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","resetPasswordEnrolled","hasPublicAndPrivateKeys","familySponsorshipFriendlyName","familySponsorshipAvailable","planProductType","familySponsorshipLastSyncDate","familySponsorshipValidUntil","familySponsorshipToDelete","maxAccessCount","accessCount","hideEmail","SendTextData","SendFileData","EncryptionPair","DataEncryptionPair","AccountData","policies","passwordGenerationHistory","AccountKeys","cryptoSymmetricKey","organizationKeys","providerKeys","AccountSettings","environmentUrls","EnvironmentUrls","pinProtected","vaultTimeoutAction","settings","Attachment","buildDomainModel","decryptObj","AttachmentView","containerService","bitwardenContainerService","getCryptoService","decValue","decryptToBytes","SymmetricCryptoKey","toAttachmentData","buildDataModel","requiresCaptcha","toCardData","Cipher","localData","Field","model","promise","decAttachment","decField","decPh","toCipherData","CipherData","toLoginData","toSecureNoteData","toIdentityData","toFieldData","toPasswordHistoryData","Collection","hidePasswords","notEncList","objProp","notEncStringList","viewModel","promises","self","theProp","mapProp","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","base","icons","notifications","webVault","keyConnector","theme","System","WindowState","stateVersion","One","Sso","Api","LoginUri","toLoginUriData","MasterPasswordPolicyOptions","minLength","requireUpper","requireLower","requireNumbers","requireSpecial","isProviderUser","canAccess","Owner","isManager","Manager","Admin","isAdmin","canAccessImportExport","canAccessReports","canCreateNewCollections","canEditAnyCollection","canDeleteAnyCollection","canViewAllCollections","canEditAssignedCollections","canDeleteAssignedCollections","canViewAssignedCollections","canManageGroups","canManageSso","canManagePolicies","canManageUsersPassword","isExemptFromPolicies","hasAnyPermission","AccessImportExport","AccessReports","CreateNewCollections","EditAnyCollection","DeleteAnyCollection","EditAssignedCollections","DeleteAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsersPassword","ManageBilling","canManageBilling","hasProvider","PasswordGeneratorPolicyOptions","defaultType","useUppercase","useLowercase","useNumbers","numberCount","useSpecial","specialCount","minNumberWords","includeNumber","inEffect","Policy","canCreateOrganizations","ResetPasswordPolicyOptions","autoEnrollEnabled","Send","SendText","SendFile","cryptoKey","makeSendKey","SendAccess","creatorIdentifier","SendAccessView","comparator","sortedCiphersByUrl","timeouts","isCached","addCiphers","Ciphers","resetTimer","getLastUsed","getLastLaunched","getNext","updateLastUsedIndex","lastUsedIndex","lastLaunched","y","valueOf","getNextIndex","globals","authenticatedAccounts","accountActivity","macKey","keyB64","encKeyB64","macKeyB64","CardExport","req","CipherExport","FieldExport","LoginExport","SecureNoteExport","IdentityExport","build","CollectionExport","humanReadableMessage","appIcon","appName","userName","userEmail","ip","installationId","FolderExport","LoginUriExport","orgIdentifier","ids","CipherWithIdRequest","CipherRequest","lastKnownRevisionDate","attachments2","attachmentRequest","AttachmentRequest","groups","getDevice","getDeviceString","pushToken","EmailRequest","EmailTokenRequest","FolderWithIdRequest","FolderRequest","TokenRequest","device","toIdentityToken","scope","grant_type","client_secret","alterIdentityTokenHeaders","fromUtf8ToUrlB64","code_verifier","redirect_uri","client_id","deviceType","deviceName","twoFactorProvider","twoFactorRemember","KdfRequest","encryptedPrivateKey","OrganizationApiKeyRequest","OrganizationKeysRequest","seatAdjustment","maxAutoscaleSeats","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","groupIds","PaymentRequest","clientOwnerEmail","organizationCreateRequest","fileLength","SendWithIdRequest","SendRequest","TwoFactorProviderRequest","TwoFactorRecoveryRequest","culture","OrganizationUserResetPasswordRequest","UpdateTwoFactorAuthenticatorRequest","UpdateTwoFactorDuoRequest","UpdateTwoFactorEmailRequest","UpdateTwoFactorWebAuthnDeleteRequest","UpdateTwoFactorWebAuthnRequest","UpdateTwoFactorYubioOtpRequest","ApiKeyResponse","apiKey","AttachmentResponse","AttachmentUploadDataResponse","fileUploadType","cipherResponse","cipherMiniResponse","CipherResponse","propertyName","exactName","otherCasePropertyName","BillingHistoryResponse","invoices","transactions","BillingTransactionResponse","BillingInvoiceResponse","hasNoHistory","BillingPaymentResponse","balance","paymentSource","BillingSourceResponse","BillingResponse","cardBrand","needsVerification","pdfUrl","paid","amount","createdDate","refunded","partiallyRefunded","refundedAmount","paymentMethodType","BreachAccountResponse","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","PasswordHistoryResponse","CollectionResponse","SelectionReadOnlyResponse","DomainsResponse","globalEquivalentDomains","equivalentDomains","d","GlobalDomainResponse","EmergencyAccessGranteeDetailsResponse","granteeId","waitTimeDays","creationDate","EmergencyAccessGrantorDetailsResponse","grantorId","EmergencyAccessTakeoverResponse","keyEncrypted","EmergencyAccessViewResponse","identityResponse","errorModel","responseErrorModel","HCaptcha_SiteKey","messages","lastSep","EventResponse","collectionId","policyId","providerOrganizationId","actingUserId","ipAddress","FolderResponse","domains","excluded","GroupResponse","accessAll","access_token","expiresIn","expires_in","refresh_token","tokenType","token_type","KeyConnectorUserKeyResponse","KeysResponse","ListResponse","dr","NotificationResponse","contextId","payload","SyncCipherCreate","SyncCipherDelete","SyncCipherUpdate","SyncLoginDelete","SyncCipherNotification","SyncFolderCreate","SyncFolderDelete","SyncFolderUpdate","SyncFolderNotification","SyncVault","SyncCiphers","SyncOrgKeys","SyncSettings","LogOut","UserNotification","SyncSendCreate","SyncSendUpdate","SyncSendDelete","SyncSendNotification","OrganizationSsoResponse","SsoUrls","OrganizationApiKeyInformationResponse","keyType","OrganizationAutoEnrollStatusResponse","OrganizationConnectionResponse","rawConfig","OrganizationKeysResponse","OrganizationResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","plan","PlanResponse","OrganizationSponsorshipSyncStatusResponse","lastSyncDate","OrganizationSubscriptionResponse","storageName","storageGb","subscription","BillingSubscriptionResponse","upcomingInvoice","BillingSubscriptionUpcomingInvoiceResponse","OrganizationUserBulkPublicKeyResponse","OrganizationUserBulkResponse","OrganizationUserResponse","twoFactorEnabled","OrganizationUserResetPasswordDetailsReponse","PaymentResponse","userProfile","ProfileResponse","paymentIntentClientSecret","product","isAnnual","nameLocalizationKey","descriptionLocalizationKey","canBeUsedByBusiness","baseSeats","baseStorageGb","maxUsers","hasAdditionalSeatsOption","maxAdditionalSeats","hasAdditionalStorageOption","maxAdditionalStorage","hasPremiumAccessOption","trialPeriodDays","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","hasTotp","has2fa","hasApi","hasSso","hasResetPassword","upgradeSortOrder","displaySortOrder","legacyYear","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","basePrice","seatPrice","additionalStoragePricePerGb","premiumAccessOptionPrice","PolicyResponse","PreloginResponse","ProfileOrganizationResponse","familySponsorshipLastSyncDateString","familySponsorshipValidUntilString","ProfileProviderOrganizationResponse","ProfileProviderResponse","providerOrganizations","securityStamp","ProviderOrganizationResponse","ProviderResponse","ProviderUserBulkPublicKeyResponse","ProviderUserBulkResponse","ProviderUserResponse","SendAccessResponse","SendFileDownloadDataResponse","SendFileUploadDataResponse","sendResponse","SendResponse","SubscriptionResponse","license","usingInAppPurchase","trialEndDate","periodStartDate","periodEndDate","cancelledDate","cancelAtEndDate","cancelled","BillingSubscriptionItemResponse","quantity","interval","sponsoredSubscriptionItem","SyncResponse","CollectionDetailsResponse","TaxInfoResponse","taxId","taxIdType","line1","line2","TaxRateResponse","rate","TwoFactorAuthenticatorResponse","TwoFactorDuoResponse","secretKey","integrationKey","TwoFactorEmailResponse","TwoFactorProviderResponse","TwoFactorRecoverResponse","TwoFactorWebAuthnResponse","KeyResponse","migrated","ChallengeResponse","attestation","authenticatorSelection","challenge","fromUrlB64ToArray","excludeCredentials","extensions","pubKeyCredParams","rp","TwoFactorYubiKeyResponse","key1","key2","key3","key4","key5","nfc","UserKeyResponse","fileSize","ItemView","_brand","_number","_subTitle","maskedCode","repeat","maskedNumber","subTitle","exp","formatYear","CardholderName","ExpMonth","ExpYear","Code","Brand","hasPasswordHistory","hasAttachments","hasOldAttachments","hasFields","passwordRevisionDisplayDate","linkedFieldValue","linkedFieldI18nKey","showCount","maskedValue","_firstName","_lastName","fullAddress","fullAddressPart2","addressPart2","MiddleName","Address1","Address2","Address3","City","PostalCode","Ssn","PassportNumber","LicenseNumber","FirstName","LastName","FullName","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","getHost","hostnameOrUri","hostOrUri","canLaunch","hasUris","maskedPassword","maskedText","maxAccessCountReached","pendingDelete","View","logoutCallback","customUserAgent","isWebClient","isDesktopClient","IEBrowser","ChromeBrowser","EdgeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","UnknownBrowser","VivaldiBrowser","WindowsDesktop","MacOsDesktop","LinuxDesktop","Headers","Accept","identityToken","getClientType","qsStringify","getCredentials","method","responseJson","isJsonResponse","json","TwoFactorProviders2","clearTwoFactorToken","refreshIdentityToken","doAuthRefresh","getProfile","getUserSubscription","getTaxInfo","putProfile","putTaxInfo","postPrelogin","isDev","getApiUrl","postEmailToken","postEmail","postSetKeyConnectorKey","postSecurityStamp","deleteAccount","getAccountRevisionDate","postPremium","postIapCheck","postReinstatePremium","postCancelPremium","postAccountStorage","postAccountPayment","postAccountLicense","postAccountKey","postAccountVerifyEmail","postAccountVerifyEmailToken","postAccountRecoverDelete","postAccountRecoverDeleteToken","postAccountKdf","deleteSsoUser","postUserApiKey","postUserRotateApiKey","postAccountRequestOTP","postAccountVerifyOTP","postConvertToKeyConnector","getUserBillingHistory","getUserBillingPayment","getFolder","postFolder","putFolder","deleteFolder","getSend","postSendAccess","apiUrl","getSendFileDownloadData","getSends","postSend","postFileTypeSend","renewSendFileUploadUrl","fileId","postSendFile","postSendFileLegacy","putSend","putSendRemovePassword","deleteSend","getCipher","getCipherAdmin","getCiphersOrganization","postCipher","postCipherCreate","postCipherAdmin","putCipher","putCipherAdmin","deleteCipherAdmin","deleteManyCiphers","deleteManyCiphersAdmin","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","putCipherCollectionsAdmin","postPurgeCiphers","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteCipherAdmin","putDeleteManyCiphers","putDeleteManyCiphersAdmin","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","postCipherAttachmentLegacy","postCipherAttachmentAdminLegacy","deleteCipherAttachmentAdmin","postShareCipherAttachment","renewAttachmentUploadUrl","postAttachmentFile","getCollectionDetails","CollectionGroupDetailsResponse","getUserCollections","getCollections","getCollectionUsers","postCollection","putCollection","putCollectionUsers","deleteCollection","deleteCollectionUser","getGroupDetails","GroupDetailsResponse","getGroups","getGroupUsers","postGroup","putGroup","putGroupUsers","deleteGroup","deleteGroupUser","getPolicy","getPolicies","getPoliciesByToken","getPoliciesByInvitedUser","putPolicy","getOrganizationUser","OrganizationUserDetailsResponse","getOrganizationUserGroups","getOrganizationUsers","OrganizationUserUserDetailsResponse","getOrganizationUserResetPasswordDetails","postOrganizationUserInvite","postOrganizationUserReinvite","postManyOrganizationUserReinvite","postOrganizationUserAccept","postOrganizationUserConfirm","postOrganizationUsersPublicKey","postOrganizationUserBulkConfirm","putOrganizationUser","putOrganizationUserGroups","putOrganizationUserResetPassword","deleteOrganizationUser","deleteManyOrganizationUsers","getPlans","postImportDirectory","postPublicImportDirectory","getTaxRates","getSettingsDomains","putSettingsDomains","getSync","getTwoFactorProviders","getTwoFactorOrganizationProviders","getTwoFactorAuthenticator","getTwoFactorEmail","getTwoFactorDuo","getTwoFactorOrganizationDuo","getTwoFactorYubiKey","getTwoFactorWebAuthn","getTwoFactorWebAuthnChallenge","getTwoFactorRecover","putTwoFactorAuthenticator","putTwoFactorEmail","putTwoFactorDuo","putTwoFactorOrganizationDuo","putTwoFactorYubiKey","putTwoFactorWebAuthn","deviceResponse","rawId","getClientExtensionResults","AttestationObject","attestationObject","clientDataJson","clientDataJSON","deleteTwoFactorWebAuthn","putTwoFactorDisable","putTwoFactorOrganizationDisable","postTwoFactorRecover","postTwoFactorEmailSetup","getEmergencyAccessTrusted","getEmergencyAccessGranted","getEmergencyAccess","getEmergencyGrantorPolicies","putEmergencyAccess","deleteEmergencyAccess","postEmergencyAccessInvite","postEmergencyAccessReinvite","postEmergencyAccessAccept","postEmergencyAccessConfirm","postEmergencyAccessInitiate","postEmergencyAccessApprove","postEmergencyAccessReject","postEmergencyAccessTakeover","postEmergencyAccessPassword","postEmergencyAccessView","getOrganizationBilling","getOrganizationSubscription","getCloudCommunicationsEnabled","getOrganizationConnection","createOrganizationConnection","updateOrganizationConnection","organizationConnectionId","deleteOrganizationConnection","getOrganizationLicense","getOrganizationTaxInfo","postOrganization","putOrganization","putOrganizationTaxInfo","postOrganizationLicense","postOrganizationLicenseUpdate","postOrganizationApiKey","getOrganizationApiKeyInformation","postOrganizationRotateApiKey","postOrganizationUpgrade","postOrganizationUpdateSubscription","postOrganizationSeat","postOrganizationStorage","postOrganizationPayment","postOrganizationVerifyBank","postOrganizationCancel","postOrganizationReinstate","deleteOrganization","postOrganizationKeys","ProviderUserUserDetailsResponse","ProviderOrganizationOrganizationDetailsResponse","postProviderCreateOrganization","getEvents","addEventParameters","getEventsCipher","getEventsOrganization","getEventsOrganizationUser","getEventsProviderUser","postEventsCollect","authHeader","getActiveBearerToken","Authorization","getEventsUrl","getUserPublicKey","getHibpBreach","postBitPayInvoice","postSetupPayment","getUserKeyFromKeyConnector","handleError","postUserKeyToKeyConnector","getToken","tokenNeedsRefresh","getApplicationVersion","nativeFetch","postCreateSponsorship","sponsoredOrgId","getSponsorshipSyncStatus","deleteRevokeSponsorship","sponsoringOrganizationId","deleteRemoveSponsorship","sponsoringOrgId","postPreValidateSponsorshipToken","sponsorshipToken","postRedeemSponsorship","postResendSponsorshipOffer","getRefreshToken","doRefreshToken","getClientId","getClientSecret","doApiTokenRefresh","decodedToken","setTokens","deviceRequest","setToken","hasResponse","alterHeaders","requestUrl","requestInit","FormData","tokenError","isTextResponse","Message","hasBaseUrl","typeHeader","storageService","makeAndGetAppId","getAnonymousAppId","existingId","htmlStorageLocation","Local","guid","newGuid","save","hashStart","hashEnding","breachedAccounts","throttle","logInStrategy","strategy","clearState","saveState","callback","getIsAuthenticated","Auto","getEverBeenUnlocked","hasKeyInMemory","Unlocked","preloginResponse","PreloginRequest","startSessionTimeout","clearSessionTimeout","sessionTimeout","upload","renewalCallback","azureUploadBlob","azureUploadBlocks","urlObject","searchParams","blobResponse","baseUrl","blockSize","getMaxBlockSize","blockIndex","numBlocks","ceil","blocksStaged","renewUrlIfNecessary","blockUrl","blockId","encodedBlockId","blockData","blockHeaders","blockRequest","blockResponse","blockListUrl","blockListXml","utfBlockId","fromUtf8ToB64","blockIdList","xml","Version","day","compareTo","encryptedFileName","encryptedFileData","apiCall","fd","blob","Blob","filepath","contentType","subscribers","messageCallback","DomainMatchBlacklist","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","getDecryptedCipherCache","getDecryptedCiphers","setDecryptedCipherCache","setDecryptedCiphers","clearIndex","indexCiphers","clearCache","clearDecryptedCiphersState","originalCipher","existingCipher","existingHiddenFields","hiddenFields","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encField","encryptField","fieldModel","phModels","encPhs","encPh","encryptPasswordHistory","phModel","getEncryptedCiphers","getLocalData","decCiphers","hasKey","getLocaleSortingFunction","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","eqDomain","matchingDomains","getDefaultUriMatch","domainUrlHost","urlHost","getAllFromApiForOrganization","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedDate","ciphersLocalData","setLocalData","decryptedCipherCache","cached","updateLastLaunchedDate","saveNeverDomain","getNeverDomains","setNeverDomains","CipherCreateRequest","upsert","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","shareManyWithServer","encCiphers","CipherBulkShareRequest","unencryptedFile","reader","FileReader","readAsArrayBuffer","onload","evt","cData","onerror","filename","encFileName","dataEncKey","encryptToBytes","adminRequest","uploadDataResponse","uploadCipherAttachment","legacyServerAttachmentFileUpload","CipherCollectionsRequest","setEncryptedCiphers","clearEncryptedCiphersState","moveManyWithServer","CipherBulkMoveRequest","deleteManyWithServer","CipherBulkDeleteRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","softDeleteManyWithServer","clearDeletedDate","restoreManyWithServer","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","autofillOnPageLoadDefault","getAutoFillOnPageLoadDefault","clearSortedCiphers","sequentialize","setDecryptedCollections","decryptMany","decCollections","getEncryptedCollections","decryptedCollections","getDecryptedCollections","nodes","collectionCopy","getNested","CollectionData","setEncryptedCollections","timersMap","debug","write","Debug","Info","Warning","level","log","warn","hrtime","timeEnd","elapsed","attachToWindow","attachToGlobal","setCryptoMasterKey","storeKey","keyHash","setDecryptedCryptoSymmetricKey","setEncryptedCryptoSymmetricKey","encPrivateKey","setDecryptedPrivateKey","setEncryptedPrivateKey","setOrgKeys","providerOrgs","orgKeys","providerOrg","setDecryptedOrganizationKeys","setEncryptedOrganizationKeys","setProviderKeys","setDecryptedProviderKeys","setEncryptedProviderKeys","keySuffix","inMemoryKey","getCryptoMasterKey","symmetricKey","getKeyFromStorage","retrieveKeyFromStorage","validateKey","clearSecretKeyStore","storedKeyHash","getEncKeyHelper","getPublicKey","inMemoryPublicKey","getPrivateKey","rsaExtractPublicKey","setPublicKey","decryptedPrivateKey","getDecryptedPrivateKey","getEncryptedPrivateKey","getFingerprint","keyFingerprint","userFingerprint","hkdfExpand","hashPhrase","getOrgKeys","decryptedOrganizationKeys","getDecryptedOrganizationKeys","encOrgKeys","getEncryptedOrganizationKeys","rsaDecrypt","getProviderKeys","decryptedProviderKeys","getDecryptedProviderKeys","encProviderKeys","getEncryptedProviderKeys","getCryptoMasterKeyAuto","hasCryptoMasterKeyBiometric","getEncryptedCryptoSymmetricKey","clearKey","clearSecretStorage","setLegacyEtmKey","clearStoredKey","setCryptoMasterKeyAuto","setCryptoMasterKeyBiometric","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","keysToClear","clearOrgKeys","clearProviderKeys","clearPinProtectedKey","setEncryptedPinProtected","clearKeys","toggleKey","pbkdf2","protectedKeyCs","pinProtectedKey","getEncryptedPinProtected","decKey","shareKey","randomBytes","keyPair","rsaGenerateKeyPair","stretchKey","keyMaterial","sendKey","hkdf","hashPurpose","iterations","theKey","getKeyForEncryption","buildEncKey","plainValue","plainBuf","encObj","aesEncrypt","encValue","macLen","encBytes","EncArrayBuffer","privateKeyValue","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","encString","decipher","aesDecryptToBytes","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","log2","bytesNeeded","mask","pow","byteArray","shouldStoreKey","getBiometricUnlock","getCryptoMasterKeyBiometric","EncryptedObject","macData","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","computedMac","hmacFast","compareFast","aesDecryptFast","aesDecrypt","legacyKey","getLegacyEtmKey","minimumEntropy","entropyPerWord","numWords","hashArr","phrase","hashNumber","bigInt","fromArray","remainder","mod","divide","encKeyEnc","getDecryptedCryptoSymmetricKey","decEncKey","encKeyCipher","symmetricCryptoKey","urlsSubject","setUrlsFromStorage","getNotificationsUrl","notificationsUrl","identityUrl","eventsUrl","getEnvironmentUrls","envUrls","setUrls","formatUrl","setEnvironmentUrls","getUrls","checkOnInterval","uploadEvents","setInterval","uploadImmediately","orgIds","eventCollection","getEventCollection","EventData","setEventCollection","EventRequest","clearEvents","getOrganizationExport","getEncryptedExport","getDecryptedExport","getPasswordProtectedExport","clearText","encText","jsonDoc","getOrganizationEncryptedExport","getOrganizationDecryptedExport","getEventExport","unparse","EventExport","padNumber","getHours","getMinutes","getSeconds","decFolders","exportCiphers","buildCommonCipher","collectionPromises","decCol","cipherPromises","decCipher","collectionsMap","num","padCharacter","numString","azureFileUploadService","AzureFileUploadService","bitwardenFileUploadService","BitwardenFileUploadService","uploadSendFile","uploadData","Direct","Azure","setDecryptedFolders","getEncryptedFolders","decryptedFolders","getDecryptedFolders","noneFolder","folderCopy","FolderData","setEncryptedFolders","updates","systemLanguage","localesDirectory","getLocalesJson","supportedTranslationLocales","localeNames","defaultMessages","localeMessages","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","getImportOptions","import","importer","fileContents","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporter","getImporterInstance","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","CollectionRequest","itemType","setUsesKeyConnector","userNeedsMigration","loggedInUsingSso","getIsExternal","requiredByOrganization","userIsNotUsingKeyConnector","keyConnectorRequest","KeyConnectorUserKeyRequest","handleKeyConnectorError","userKeyResponse","keyArr","pubKey","privKey","setPasswordRequest","SetKeyConnectorKeyRequest","setConvertAccountRequired","setConvertAccountToKeyConnector","getConvertAccountToKeyConnector","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","on","processNotification","onclose","reconnect","isAuthedAndUnlocked","updateConnection","sync","reconnectFromActivity","disconnectFromInactivity","notification","isAuthenticated","payloadUserId","UserId","myUserId","syncUpsertCipher","syncDeleteCipher","syncUpsertFolder","syncDeleteFolder","syncUpsertSend","syncDeleteSend","getOrganizations","Organization","getByIdentifier","setOrganizations","canManageSponsorships","DefaultOptions","minNumber","minUppercase","minLowercase","minSpecial","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","getPasswordGenerationOptions","setPasswordGenerationOptions","enforcedOptions","enforcePasswordGeneratorPoliciesOnOptions","getPasswordGeneratorPolicyOptions","PasswordGenerator","currentPolicy","useUpper","useLower","minNumbers","getDecryptedPasswordGenerationHistory","getEncryptedPasswordGenerationHistory","decrypted","decryptHistory","setDecryptedPasswordGenerationHistory","currentHistory","matchesPrevious","unshift","GeneratedPasswordHistory","newHistory","encryptHistory","setEncryptedPasswordGenerationHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","array","j","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","setDecryptedPolicies","decryptedPolicies","getDecryptedPolicies","diskPolicies","getEncryptedPolicies","policy","getPolicyForOrganization","policyType","PolicyData","setEncryptedPolicies","mapPoliciesFromToken","newPassword","toLocaleLowerCase","toLocaleUpperCase","getResetPasswordPolicyOptions","resetPasswordPolicyOptions","ResetPassword","policiesResponse","policyFilter","filteredPolicies","policySet","isExcemptFromPolicies","Provider","indexing","searchableMinLength","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","getIndexForSearch","searchCiphersBasic","ciphersMap","searchResults","soWild","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","setDecryptedSends","fileData","passwordHash","ArrayBuffer","encryptFileData","parseFile","getEncryptedSends","decSends","getDecryptedSends","legacyServerSendFileUpload","SendData","setEncryptedSends","Keys","setSettings","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","partialKeys","secureStorageService","stateMigrationService","stateFactory","useAccountCache","BehaviorSubject","createGlobals","hasBeenInited","accountDiskCache","needsMigration","migrate","initAccountState","syncAccountFromDisk","storedActiveUser","activeUserId","pushAccounts","diskAccount","getAccountFromDisk","setAccountEnvironmentUrls","scaffoldNewAccountStorage","setLastActive","setActiveUser","clearDecryptedDataForActiveUser","clean","reconcileOptions","defaultInMemoryOptions","deAuthenticateAccount","dynamicallySetActiveUser","removeAccountFromDisk","removeAccountFromMemory","getAccessToken","getTimeoutBasedStorageOptions","getAccount","setAccessToken","saveAccount","getAlwaysShowDock","getGlobals","defaultOnDiskOptions","alwaysShowDock","setAlwaysShowDock","saveGlobals","getApiKeyClientId","apiKeyClientId","getApiKeyClientSecret","apiKeyClientSecret","getAutoConfirmFingerPrints","autoConfirmFingerPrints","setAutoConfirmFingerprints","autoFillOnPageLoadDefault","setAutoFillOnPageLoadDefault","getBiometricAwaitingAcceptance","biometricAwaitingAcceptance","setBiometricAwaitingAcceptance","getBiometricFingerprintValidated","biometricFingerprintValidated","setBiometricFingerprintValidated","getBiometricLocked","biometricLocked","setBiometricText","biometricUnlock","setBiometricUnlock","getClearClipboard","defaultOnDiskLocalOptions","clearClipboard","setClearClipboard","collapsedGroupings","convertAccountToKeyConnector","cryptoMasterKey","defaultSecureStorageOptions","saveSecureStorageKey","getCryptoMasterKeyB64","setCryptoMasterKeyB64","getDecodedToken","setDecodedToken","defaultUriMatch","setDefaultUriMatch","getDisableAddLoginNotification","disableAddLoginNotification","setDisableAddLoginNotification","getDisableAutoBiometricsPrompt","disableAutoBiometricsPrompt","setDisableAutoBiometricsPrompt","getDisableAutoTotpCopy","disableAutoTotpCopy","setDisableAutoTotpCopy","getDisableBadgeCounter","disableBadgeCounter","setDisableBadgeCounter","getDisableChangedPasswordNotification","disableChangedPasswordNotification","setDisableChangedPasswordNotification","getDisableContextMenuItem","disableContextMenuItem","setDisableContextMenuItem","getDisableGa","disableGa","setDisableGa","getDontShowCardsCurrentTab","dontShowCardsCurrentTab","setDontShowCardsCurrentTab","getDontShowIdentitiesCurrentTab","dontShowIdentitiesCurrentTab","setDontShowIdentitiesCurrentTab","setEmail","setEmailVerified","getEnableAlwaysOnTop","accountPreference","enableAlwaysOnTop","globalPreference","setEnableAlwaysOnTop","getEnableAutoFillOnPageLoad","enableAutoFillOnPageLoad","setEnableAutoFillOnPageLoad","getEnableBiometric","enableBiometrics","setEnableBiometric","getEnableBrowserIntegration","enableBrowserIntegration","setEnableBrowserIntegration","getEnableBrowserIntegrationFingerprint","enableBrowserIntegrationFingerprint","setEnableBrowserIntegrationFingerprint","getEnableCloseToTray","enableCloseToTray","setEnableCloseToTray","getEnableFullWidth","enableFullWidth","setEnableFullWidth","enableGravitars","setEnableGravitars","getEnableMinimizeToTray","enableMinimizeToTray","setEnableMinimizeToTray","getEnableStartToTray","enableStartToTray","setEnableStartToTray","getEnableTray","enableTray","setEnableTray","defaultOnDiskMemoryOptions","getEntityId","setEntityId","getEntityType","entityType","setEntityType","getGlobalEnvironmentUrls","everBeenUnlocked","getForcePasswordReset","setForcePasswordReset","getInstalledVersion","installedVersion","setInstalledVersion","getLastActive","getLastSync","lastSync","setLastSync","legacyEtmKey","getLocale","setLocale","getMainWindowSize","mainWindowSize","setMainWindowSize","getMinimizeOnCopyToClipboard","minimizeOnCopyToClipboard","setMinimizeOnCopyToClipboard","neverDomains","getNoAutoPromptBiometrics","noAutoPromptBiometrics","setNoAutoPromptBiometrics","getNoAutoPromptBiometricsText","noAutoPromptBiometricsText","setNoAutoPromptBiometricsText","getOpenAtLogin","openAtLogin","setOpenAtLogin","organizationInvitation","passwordGenerationOptions","getUsernameGenerationOptions","usernameGenerationOptions","setUsernameGenerationOptions","setProtectedPin","setRefreshToken","rememberedEmail","getSecurityStamp","setSecurityStamp","getSsoOrgIdentifier","ssoOrganizationIdentifier","setSsoOrganizationIdentifier","ssoState","getTheme","setTheme","setVaultTimeout","getVaultTimeoutAction","accountVaultTimeoutAction","globalVaultTimeoutAction","setVaultTimeoutAction","getStateVersion","setStateVersion","getWindow","setWindow","useMemory","storageLocation","getGlobalsFromMemory","useDisk","getGlobalsFromDisk","saveGlobalsToMemory","saveGlobalsToDisk","useSecureStorage","getAccountFromMemory","getUserIdFromMemory","cachedAccount","Memory","Both","Disk","saveAccountToMemory","saveAccountToDisk","deepClone","scaffoldNewAccountLocalStorage","scaffoldNewAccountSessionStorage","scaffoldNewAccountMemoryStorage","storedAccount","pruneInMemoryAccounts","requestedOptions","defaultOptions","Session","getActiveUserIdFromStorage","removeAccountFromLocalStorage","resetAccount","removeAccountFromSessionStorage","removeAccountFromSecureStorage","persistentAccountInformation","timeoutAction","v1Keys","autoConfirmFingerprints","enableBiometric","enableGravatars","encPrivate","lastActive","ssoIdentifier","stamp","usesConnector","v1KeyPrefixes","currentStateVersion","getCurrentStateVersion","Latest","migrateStateFrom1To2","Two","migrateStateFrom2To3","Three","migrateStateFrom3To4","clearV1Keys","clearingUserId","keyPrefix","defaultAccount","accountSettings","cryptoMasterKeyAuto","cryptoMasterKeyB64","cryptoMasterKeyBiometric","authenticationStatus","authenticatedUserIds","Four","syncInProgress","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","syncSettings","syncPolicies","isEdit","localFolder","remoteFolder","shouldUpdate","localCipher","checkCollections","remoteCipher","localSend","remoteSend","successfully","OrganizationData","ProviderData","decoded","fromUrlB64ToUtf8","clientIdClientSecret","setClientId","setClientSecret","clearToken","storedToken","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","round","email_verified","getName","getPremium","getIssuer","iss","amr","B32Chars","SteamChars","getCode","period","digits","keyB32","isOtpAuth","isSteamAuth","getQueryParams","digitParams","periodParam","algParam","epoch","timeHex","leftPad","decToHex","timeBytes","fromHexToArray","keyBytes","b32ToBytes","sign","offset","fullCode","trunc","getTimeInterval","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","priority","Yubikey","selectedTwoFactorProviderType","twoFactorProvidersData","supportsDuo","providerPriority","_value","setSelectedProvider","clearProviders","requestClass","alreadyHashed","validateInput","VerifyOTPRequest","wordCapitalize","wordIncludeNumber","forwardedService","forwardedAnonAddyDomain","generateCatchall","generateSubaddress","generateForwarded","generateWord","word","zeroPad","atIndex","emailBeginning","emailEnding","subaddressString","randomString","catchallDomain","startString","forwardedSimpleLoginApiKey","generateSimpleLoginAlias","forwardedAnonAddyApiToken","generateAnonAddyAlias","forwardedFirefoxApiToken","generateFirefoxRelayAlias","charSet","redirect","Authentication","alias","apiToken","websiteNote","generated_for","full_address","lockedCallback","loggedOutCallback","startCheck","checkVaultTimeout","isViewOpen","shouldLock","executeTimeoutAction","lock","allowSoftLock","setVaultTimeoutOptions","action","currentAction","vaultTimeoutSeconds","crypto","subtle","wcLen","passwordBuf","toBuf","pbkdf2Params","toWebCryptoAlgorithm","impKey","importKey","deriveBits","ikm","outputByteSize","hkdfParams","prk","hashLen","infoBuf","infoArr","runningOkmLength","previousT","okm","md","forge","md5","sha1","valueBytes","toByteString","update","fromByteStringToArray","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","jwkPrivateKey","exportKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","fromBufferToByteString","styles","primary","secondary","danger","hoverStyles","BadgeComponent","badgeType","isSpan","nodeName","classes","BadgeModule","defaultIcon","BannerComponent","bannerType","bannerClass","BannerModule","buttonStyles","ButtonComponent","buttonType","block","ButtonModule","defaultI18n","calloutClass","headerClass","CalloutModule","MenuDividerComponent","MenuItemComponent","role","tabIndex","MenuTriggerForDirective","overlay","isOpen","hasPopup","defaultMenuConfig","panelClass","hasBackdrop","backdropClass","scrollStrategy","scrollStrategies","reposition","positionStrategy","position","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","withLockedPosition","withFlexibleDimensions","withPush","toggleMenu","destroyMenu","openMenu","disposeAll","menu","overlayRef","templatePortal","TemplatePortal","attach","closedEventsSub","getClosedEvents","keyDownEventsSub","keydownEvents","keyManager","onKeydown","detachments","escKey","backdropClick","menuClosed","mergeWith","dispose","MenuComponent","ngAfterContentInit","FocusKeyManager","menuItems","withWrap","TemplateRef","MenuModule","AcceptEmergencyComponent","EmergencyAccessAcceptRequest","AcceptOrganizationComponent","OrganizationUserAcceptRequest","performResetPasswordAutoEnroll","policyList","HintComponent","routerService","previousUrl","getPreviousUrl","navigateByUrl","showResetPasswordAutoEnrollWarning","goAfterLogIn","setPreviousUrl","getRememberEmail","resetPasswordPolicy","policiesData","setRememberEmail","RecoverDeleteComponent","DeleteRecoverRequest","RecoverTwoFactorComponent","recoveryCode","showCreateOrgMessage","layout","ReferenceEventRequest","flow","reference","cookie","shift","storedIdentifier","anotherMethod","twoFactorOptionsModal","VerifyEmailTokenComponent","VerifyEmailRequest","VerifyRecoverDeleteComponent","VerifyDeleteRecoverRequest","BroadcasterSubscriptionId","broadcasterService","notificationsService","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","run","command","setFullWidth","NavigationEnd","jq","TwoFactorAuthenticationPolicy","MasterPasswordPolicy","PasswordGeneratorPolicy","SingleOrgPolicy","RequireSsoPolicy","PersonalOwnershipPolicy","DisableSendPolicy","SendOptionsPolicy","ResetPasswordPolicy","idleStateChanged","msg","sanitize","SecurityContext","HTML","enableHtml","trustedHtml","timeOut","dirtyDates","defaultDates","getDefaultDateFilters","appApiPromiseUnfulfilled","dates","parseDates","exportPromise","export","clearExisting","loadAndParseEvents","refreshPromise","morePromise","eventInfo","getEventInfo","EventView","formatDateFilters","statusMap","pagedUsers","allUsers","pagedUsersCount","allCount","invitedCount","acceptedCount","confirmedCount","showConfirmUsers","showBulkConfirmUsers","iterateEnum","checkUser","selectCount","deleteWarningMessage","reinvite","confirm","mapIndex","updateUser","publicKeyResponse","autoConfirm","UserConfirmComponent","confirmModalRef","onConfirmedUser","fingerprint","NestedCheckboxComponent","parentIndeterminate","parentChecked","checkboxes","pascalize","camelToPascalCase","OrganizationSwitcherComponent","activeOrganization","canAccessAdmin","PasswordStrengthComponent","showText","scoreWidth","PremiumBadgeComponent","premiumRequired","HomeGuard","FooterComponent","NavbarComponent","UserLayoutComponent","LooseComponentsModule","SharedModule","VaultFilterModule","OrganizationBadgeModule","PipesModule","GetOrgNameFromIdPipe","registerLocaleData","ToastrModule","LinkSsoComponent","displayText","OrganizationOptionsComponent","allowEnrollmentChanges","showEnrolledStatus","unlinkSso","toggleResetPasswordEnrollment","keyString","toastStringRef","showOrgFilter","showFolders","showFavorites","onSearchTextChanged","IndividualVaultComponent","IndividualVaultRoutingModule","changeDetectorRef","vaultService","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","trashCleanupWarning","filterComponent","cloneCipher","editCipher","ciphersComponent","editCipherId","queryParamsHandling","isShowingCards","applyVaultFilter","vaultFilter","showAddNew","buildFilter","calculateSearchBarLocalizationString","go","filterSearchText","cipherPassesFilter","editCipherAttachments","madeAttachmentChanges","attachmentsModalRef","shareCipher","shareModalRef","editCipherCollections","collectionsModalRef","folderAddEditModalRef","cipherAddEditModalRef","updateKey","UpdateKeyComponent","updateKeyModalRef","IndividualVaultModule","VaultModule","OrganizationNameBadgeComponent","onOrganizationClicked","profileName","pickTextColorBasedOnBgColor","emitOnOrganizationClicked","OrganizationVaultComponent","OrganizationVaultRoutingModule","vaultFilterComponent","clearFilters","OrganizationVaultModule","VaultService","root","queryParamMap","canAccessManage","showToolsTab","canAccessTools","canAccessSettings","toolsRoute","publicKeys","fingerprints","statuses","done","excludedUsers","OrganizationUserBulkRequest","OrganizationUserBulkConfirmRequest","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","accessGroups","groupsResponse","check","SelectionReadOnlyRequest","canCreate","pagedCollectionsCount","decryptCollections","assignedCollections","pagedCollections","canEdit","canDelete","removeCollection","EntityUsersComponent","usersModalRef","entityName","onEditedUsers","orgUsersUserIdMap","orgUsersIdMap","organizationUserType","organizationUserStatusType","showSelected","selectedCount","loadUsers","selectedChanged","filterSelected","selections","GroupAddEditComponent","onSavedGroup","onDeletedGroup","GroupRequest","GroupsComponent","pagedGroupsCount","pagedGroups","removeGroup","accessPolicies","accessSso","canResetPassword","orgUseResetPassword","orgHasKeys","orgResetPasswordPolicyEnabled","callingUserType","orgShareKey","OrganizationUserConfirmRequest","allowResetPassword","orgUser","callingUserHasPermission","UserGroupsComponent","groupsModalRef","resetPassword","ResetPasswordComponent","resetPasswordModalRef","onPasswordReset","PoliciesComponent","policyIdFromEvents","orgPolicy","orgPolicies","op","PolicyEditComponent","editModalRef","onSavedPolicy","cdr","factory","policyComponent","policyFormRef","Enabled","loggedOutWarningName","orgSymKey","decPrivateKey","newPasswordStrengthTimeout","User","manageAllCollectionsCheckboxes","manageAssignedCollectionsCheckboxes","customUserTypeSelected","setRequestPermissions","clearPermissions","handleDependentPermissions","OrganizationUserUpdateRequest","OrganizationUserInviteRequest","dontAskAgain","userGroups","ug","OrganizationUserUpdateGroupsRequest","ToolsComponent","ImportComponent","ExposedPasswordsReportComponent","InactiveTwoFactorReportComponent","ReusedPasswordsReportComponent","UnsecuredWebsitesReportComponent","WeakPasswordsReportComponent","TwoFactorSetupComponent","OrganizationBillingComponent","OrganizationSubscriptionComponent","display","PolicyRequest","DisableSendPolicyComponent","MasterPasswordPolicyComponent","showKeyConnectorInfo","passwordScores","PasswordGeneratorPolicyComponent","defaultTypes","PersonalOwnershipPolicyComponent","RequireSso","RequireSsoPolicyComponent","ResetPasswordPolicyComponent","SendOptionsPolicyComponent","SingleOrgPolicyComponent","TwoFactorAuthentication","TwoFactorAuthenticationPolicyComponent","manage","tools","previous","canUseApi","OrganizationUpdateRequest","submitTaxInfo","taxFormPromise","taxInfo","DeleteOrganizationComponent","deleteModalRef","onSuccess","purgeVault","PurgeVaultComponent","purgeModalRef","viewApiKey","ApiKeyComponent","apiKeyModalRef","postKey","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","TaxInfoComponent","AdjustSubscription","onAdjusted","limitSubscription","newSeatCount","currentSeatCount","newMaxSeats","OrganizationSubscriptionUpdateRequest","limitSubscriptionChanged","adjustedSeatTotal","maxSeatTotal","BillingSyncApiKeyComponent","showRotateScreen","BillingSync","keyRevisionDate","hasBillingToken","syncStatus","cancelRotate","rotateToken","dayDiff","date1","date2","diffTime","abs","submitButtonText","showLastSyncText","showAwaitingSyncText","daysBetween","ChangePlanComponent","onChanged","onCanceled","defaultUpgradePlan","defaultUpgradeProduct","Families","CountBasedLocalizationKey","singular","plural","OrganizationContentSummaryItem","localizationKeyOptions","localizationKey","OrganizationContentSummary","totalItemCount","itemCountByType","deleteOrganizationRequestType","organizationContentSummary","buildOrganizationContentSummary","organizationItems","getOrganizationItemCountByType","getOrganizationItemLocalizationKeysByType","DownloadLicenseComponent","onDownloaded","licenseString","ImageSubscriptionHiddenComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","billing","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","isCreditBalance","creditOrBalance","AppleInApp","GoogleInApp","adjustSeatsAdd","showAdjustSeats","showAdjustSeatAutoscale","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showBillingSyncKey","showDownloadLicense","showChangePlan","userOrg","apiKeyResponse","hasBillingSyncToken","existingBillingSyncConnection","CloudBillingSync","reinstate","reinstatePromise","cancelPromise","changePlan","closeChangePlan","changed","downloadLicense","manageBillingSync","setupBillingSyncModalRef","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","subscriptionAdjusted","adjustStorage","closeStorage","removeSponsorship","removeSponsorshipPromise","manageBillingSyncSelfHosted","billingSyncKeyRef","BillingSyncKeyComponent","billingSyncKeyViewContainerRef","existingConnectionId","setParentConnection","connection","isExpired","subscriptionMarkedForCancel","nextInvoice","storagePercentage","toFixed","storageProgressWidth","billingInterval","storageGbPrice","canAdjustSeats","isSponsoredSubscription","canDownloadLicense","canManageBillingSync","EnterpriseAnnually","EnterpriseMonthly","EnterpriseAnnually2019","EnterpriseMonthly2019","subscriptionDesc","showChangePlanButton","billingSyncSetUp","access2fa","showBilling","duoComp","openModal","duoModalRef","TwoFactorDuoComponent","onUpdated","updateStatus","filterProvider","AcceptFamilySponsorshipComponent","register","FamiliesForEnterpriseSetupComponent","badToken","showNewOrganization","_selectedFamilyOrganizationId","organizationPlansComponent","acceptingSponsorship","onOrganizationCreateSuccess","existingFamilyOrganizations","selectedFamilyOrganizationId","OrganizationSponsorshipRedeemRequest","planSponsorshipType","FamiliesForEnterprise","sponsoredOrganizationId","manageableCiphers","checkAccess","getAllCiphers","canManageCipher","importService","successNavigate","importBlockedByPolicy","upgradeOrganization","totpService","allowOwnershipAssignment","viewOnly","reupload","showFixOldAttachments","onEventsClicked","allCiphers","doNotSaveUrl","AccessComponent","PreferencesComponent","SecurityRoutingModule","DomainRulesComponent","SubscriptionRoutingModule","EmergencyAccessComponent","EmergencyAccessViewComponent","SponsoredFamiliesComponent","ReportsRoutingModule","useHash","paramsInheritanceStrategy","BreachReportComponent","checkedUsername","CipherReportComponent","requiresPaid","hasLoaded","setCiphers","repromptCipher","accessPremium","exposedPasswordMap","exposedPasswordCiphers","exposedCount","services","cipherDocs","load2fa","inactive2faCiphers","docs","serviceData","documentation","additionalDomain","ReportTypes","reports","exposedPasswords","requiresPremium","reusedPasswords","weakPasswords","unsecuredWebsites","inactive2fa","dataBreach","ReportCardComponent","report","hasPremium","bypassSecurityTrustHtml","click","ReportListComponent","ReportsComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","unsecuredCiphers","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","isUserNameNotEmpty","getCacheKey","hasUserName","scoreKey","unavailable","sendText","downloadData","accessRequest","toggleText","keyArray","SendAccessRequest","sendAccess","ControlContainer","NgForm","addSend","editSend","sendAddEditModalRef","toDateTimeLocalString","filterStart","filterEnd","EventOptions","appInfo","getAppInfo","getEventMessage","humanReadableMsg","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_UpdatedTempPassword","User_MigratedKeyToKeyConnector","Cipher_Created","formatCipherId","getShortId","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","formatCollectionId","Collection_Updated","Collection_Deleted","Group_Created","formatGroupId","Group_Updated","Group_Deleted","OrganizationUser_Invited","formatOrgUserId","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","OrganizationUser_ResetPassword_Enroll","OrganizationUser_ResetPassword_Withdraw","OrganizationUser_AdminResetPassword","OrganizationUser_ResetSsoLink","OrganizationUser_FirstSsoLogin","Organization_Updated","Organization_PurgedVault","Organization_VaultAccessed","Organization_EnabledSso","Organization_DisabledSso","Organization_EnabledKeyConnector","Organization_DisabledKeyConnector","Organization_SponsorshipsSynced","Policy_Updated","formatPolicyId","ProviderUser_Invited","formatProviderUserId","ProviderUser_Confirmed","ProviderUser_Updated","ProviderUser_Removed","ProviderOrganization_Created","formatProviderOrganizationId","ProviderOrganization_Added","ProviderOrganization_Removed","ProviderOrganization_VaultAccessed","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","shortId","cipherInfo","makeAnchor","innerHTML","pad","norm","InitService","eventLoggingService","htmlEl","documentElement","onDefaultSystemThemeChange","sysTheme","Light","Dark","ContainerService","modalOpen","RouterService","activatedRoute","titleService","currentUrl","child","firstChild","snapshot","rawTitle","updateUrl","newTitle","setTitle","PolicyListService","APP_INITIALIZER","initService","HtmlStorageService","MemoryStorageService","WebPlatformUtilsService","BroadcasterMessagingService","ImportService","showChangeEmail","deauthorizeSessions","DeauthorizeSessionsComponent","deauthModalRef","DeleteAccountComponent","AddCreditComponent","PayPal","onAdded","ppLoading","payPalConfig","ppButtonFormAction","ppButtonBusinessId","creditAmount","ppButtonCustomField","subject","returnUrl","ppButtonFormRef","BitPay","BitPayInvoiceRequest","credit","creditAmountNumber","bitPayUrl","formatAmount","floatAmount","parseFloat","ElementRef","AdjustPaymentComponent","paymentComponent","createPaymentToken","paymentToken","taxInfoComponent","changeCountry","hideBank","changeMethod","PaymentComponent","AdjustStorageComponent","storageAdjustment","StorageRequest","storageGbAdjustment","paymentFailed","handleStripeCardPayment","adjustedStorageTotal","OrganizationConnectionRequest","BillingSyncConfigRequest","deleteConnection","ChangeEmailComponent","tokenSent","showTwoFactorEmailWarning","newEmail","reset","ChangeKdfComponent","kdfOptions","recommendedKdfIterations","rotateEncKey","rotateEncKeyClicked","UpdateKeyRequest","updateEmergencyAccesses","updateAllResetPasswordKeys","emergencyAccess","allowedStatuses","RecoveryInitiated","RecoveryApproved","filteredAccesses","updateRequest","EmergencyAccessUpdateRequest","orgPlansComponent","TeamsAnnually","Teams","Enterprise","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","indexTrackBy","EmergencyAccessAddEditComponent","onDeleted","emergencyAccessType","waitTimes","waitTime","EmergencyAccessInviteRequest","EmergencyAccessAttachmentsComponent","EmergencyAccessConfirmComponent","onConfirmed","EmergencyAccessTakeoverComponent","onDone","takeoverResponse","oldKeyBuffer","oldEncKey","EmergencyAccessPasswordRequest","EmergencyAddEditComponent","viewAttachments","cipherData","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","grantedContacts","contact","doConfirmation","removeGrantee","removeGrantor","requestAccess","approve","takeover","takeoverModalRef","EmergencyAccessConfirmRequest","showFree","showCancel","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","discount","plans","changedOwnedBusiness","createOrganization","selectedPlan","selectedPlanInterval","selectableProducts","validPlans","familyPlan","selectablePlans","additionalStoragePriceMonthly","seatPriceMonthly","additionalStorageTotal","seatTotal","subtotal","subTotal","freeTrial","taxCharges","taxComponent","taxRate","paymentDesc","changedProduct","changedCountry","userHasBlockingSingleOrgPolicy","collectionCt","createSelfHosted","createCloudHosted","updateOrganization","OrganizationUpgradeRequest","additionalStorageGb","billingAddressCountry","billingAddressPostalCode","OrganizationCreateRequest","collectionName","tokenResult","includeTaxId","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","providerRequest","ProviderOrganizationCreateRequest","PaymentMethodComponent","lightInputColor","lightInputPlaceholderColor","darkInputColor","darkInputPlaceholderColor","showMethods","hidePaypal","hideCredit","routing_number","account_holder_name","account_holder_type","currency","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","async","Stripe","elements","setStripeElement","btScript","StripeElementStyle","fontFamily","fontSmoothing","invalid","StripeElementClasses","empty","Credit","head","removeChild","btStylesheet","braintree","dropin","authorization","container","paymentOptionPriority","paypal","buttonStyle","shape","tagline","createErr","requestPaymentMethod","nonce","handleCardSetup","setupIntent","payment_method","createToken","handleCardPayment","paymentIntent","placeholder","mount","getEffectiveTheme","localeOptions","themeOptions","disableIcons","startingLocale","startingTheme","effectiveTheme","vaultTimeoutActionChanged","PremiumComponent","premiumPrice","finalizePremium","paymentResponse","ProfileComponent","hidePasswordHint","UpdateProfileRequest","SecurityKeysComponent","showChangeKdf","viewUserApiKey","viewUserApiKeyModalRef","rotateUserApiKey","rotateUserApiKeyModalRef","SecurityComponent","showChangePassword","hasFamilySponsorshipAvailable","hasPremiumFromOrg","hideSubscription","availableSponsorshipOrgs","activeSponsorshipOrgs","sponsorshipForm","selectedSponsorshipOrgId","validators","sponsorshipEmail","asyncValidators","notAllowedValueAsync","sponsoredEmail","friendlyName","resetForm","forceReload","allOrgs","sponsorshipEmailControl","anyActiveSponsorships","anyOrgsAvailable","isSelfHosted","SponsoringOrgRowComponent","sponsoringOrg","sponsorshipRemoved","statusMessage","statusClass","setStatus","revokeSponsorship","revokeSponsorshipPromise","doRevokeSponsorship","resendEmail","resendEmailPromise","isSentAwaitingSync","toDelete","validUntil","formatDate","SubscriptionComponent","UserSubscriptionComponent","UserBillingHistoryComponent","subscriptionRoute","onCountryChanged","pristine","taxRates","localTaxRate","getTaxInfoRequest","hasChanged","TwoFactorAuthenticatorComponent","TwoFactorBaseComponent","qrScript","auth","authResponse","processResponse","buildRequestModel","QRious","element","twoFactorProviderType","hashedSecret","verificationType","enableFunction","ikey","skey","TwoFactorEmailComponent","sentEmail","TwoFactorRecoveryComponent","print","onafterprint","formatString","showPolicyWarning","evaluatePolicies","authenticatorModalRef","yubikeyModalRef","TwoFactorYubiKeyComponent","emailModalRef","webAuthnModalRef","TwoFactorWebAuthnComponent","recoveryModalRef","TwoFactorVerifyComponent","onAuthed","keyIdAvailable","keysConfiguredCount","webAuthnResponse","removePromise","readKey","challengePromise","readDevice","webAuthnChallenge","resetWebAuthn","webAuthnListening","webAuthnError","listening","configured","disablePromise","existingKey","padRight","makeRequest","UpdateLicenseComponent","updatePromise","NG_VALIDATORS","VerifyEmailComponent","findIndex","historyModalRef","lengthChanged","minNumberChanged","minSpecialChanged","setImportOptions","getFileContents","getFormatInstructionTitle","importOptions","fire","heightAuto","buttonsStyling","iconHtml","inputValue","inputAttributes","readonly","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","extract1PuxContent","readAsText","pre","JSZip","loadAsync","showRevisionDate","viewingPasswordHistory","cleanUp","totpUpdateCode","totpTick","totpInterval","toggleFavorite","launch","typeI18nKey","aType","confirmed","viewHistory","clearInterval","totpCode","half","totpCodeFormatted","intervalSeconds","totpSec","totpDash","totpLow","BulkActionsComponent","bulkDelete","promptPassword","selectedIds","getSelectedIds","BulkDeleteComponent","bulkDeleteModalRef","permanent","cipherIds","bulkRestore","BulkRestoreComponent","bulkRestoreModalRef","onRestored","bulkShare","selectedCiphers","getSelected","BulkShareComponent","bulkShareModalRef","onShared","bulkMove","BulkMoveComponent","bulkMoveModalRef","onMoved","deleteCiphersAdmin","deleteCiphers","deleteRequest","nonShareableCount","shareableCiphers","checkedCollectionIds","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","onOrganzationBadgeClicked","pagedCiphers","userHasPremiumAccess","pagedCiphersCount","clone","displayTotpCopyButton","checkCipher","subscriber","arg","localStorage","getItem","sessionStorage","setItem","removeItem","filePath","localesResult","store","migrationStateFrom1To2","browserCache","prefersColorSchemeDark","matchMedia","chrome","Web","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","rel","blobData","blobOptions","fileNameLower","doDownload","endsWith","createObjectURL","PublicKeyCredential","confirmText","cancelText","bodyIsHtml","iconClasses","bootstrapModal","removeAttribute","iconHtmlStr","showCancelButton","cancelButtonText","clipboardData","setData","queryCommandSupported","copyEl","contains","execCommand","readFromClipboard","authenticateBiometric","getDefaultSystemTheme","addListener","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","O","chunkIds","notFulfilled","Infinity","fulfilled","getter","__esModule","definition","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/app/main.ee8beff7eee047674b0f.js b/app/main.ee8beff7eee047674b0f.js new file mode 100644 index 00000000..f6fc68bd --- /dev/null +++ b/app/main.ee8beff7eee047674b0f.js @@ -0,0 +1,2 @@ +(()=>{var e,t={52165:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppRoutingModule=void 0;const r=n(68012),o=n(32621),a=(n(68012),[{path:"providers",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(33150)))).ProvidersModule}))}]);class s{}t.AppRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[r.RouterModule.forChild(a)],r.RouterModule]})},63395:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppComponent=void 0;const i=n(27914),r=n(64281),o=n(47075),a=n(32621),s=n(68012);class l extends i.AppComponent{ngOnInit(){super.ngOnInit(),this.policyListService.addPolicies([new o.MaximumVaultTimeoutPolicy,new r.DisablePersonalVaultExportPolicy])}}t.AppComponent=l,l.ɵfac=function(){let e;return function(t){return(e||(e=a.ɵɵgetInheritedFactory(l)))(t||l)}}(),l.ɵcmp=a.ɵɵdefineComponent({type:l,selectors:[["app-root"]],features:[a.ɵɵInheritDefinitionFeature],decls:2,vars:0,template:function(e,t){1&e&&(a.ɵɵelement(0,"router-outlet"),a.ɵɵtext(1,"\n"))},directives:[s.RouterOutlet],encapsulation:2})},65895:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppModule=void 0;const i=n(83072),r=n(2336),o=n(96832),a=n(3435),s=n(68012),l=n(37407),c=n(44926),d=n(49173),p=n(77537),u=n(52976),m=n(7643),h=n(52165),v=n(63395),f=n(40299),g=n(32621);class y{}t.AppModule=y,y.ɵfac=function(e){return new(e||y)},y.ɵmod=g.ɵɵdefineNgModule({type:y,bootstrap:[v.AppComponent]}),y.ɵinj=g.ɵɵdefineInjector({imports:[[r.OverlayModule,p.OssModule,c.JslibModule,a.BrowserAnimationsModule,o.FormsModule,o.ReactiveFormsModule,u.ServicesModule,l.InfiniteScrollModule,i.DragDropModule,h.AppRoutingModule,d.OssRoutingModule,f.OrganizationsModule,s.RouterModule,m.WildcardRoutingModule]]})},22977:(e,t,n)=>{"use strict";const i=n(61248),r=n(32621);n(43734),n(19755),n(28981),n(5812),n(51857);const o=n(65895);r.enableProdMode(),i.platformBrowser().bootstrapModule(o.AppModule,{preserveWhitespaces:!0})},16653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCvaComponent=void 0;const i=n(96832),r=n(89924),o=n(32621),a=n(96832);class s{constructor(e){this.controlDir=e,this.internalControl=new i.FormControl(""),this.onValueChangesInternal=e=>this.onChange(e),this.controlDir.valueAccessor=this}get describedById(){return this.showDescribedBy?this.controlId+"Desc":null}get showDescribedBy(){return null!=this.helperText||this.controlDir.control.hasError("required")}get isRequired(){return this.controlDir.control.hasValidator(i.Validators.required)||this.controlDir.control.hasValidator(r.dirtyRequired)}ngOnInit(){this.internalControl.valueChanges.subscribe(this.onValueChangesInternal)}onBlurInternal(){this.onTouched()}writeValue(e){this.internalControl.setValue(e)}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){e?this.internalControl.disable():this.internalControl.enable()}}t.BaseCvaComponent=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(a.NgControl,2))},s.ɵdir=o.ɵɵdefineDirective({type:s,inputs:{label:"label",controlId:"controlId",helperText:"helperText"}})},64897:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputCheckboxComponent=void 0;const i=n(16653),r=n(32621),o=n(96832),a=n(57490);function s(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",5),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵattribute("id",e.describedById),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.helperText)}}class l extends i.BaseCvaComponent{}t.InputCheckboxComponent=l,l.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(l)))(t||l)}}(),l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["app-input-checkbox"]],features:[r.ɵɵInheritDefinitionFeature],decls:13,vars:6,consts:[[1,"form-group"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"formControl","blur"],[1,"form-check-label"],["class","form-text text-muted",4,"ngIf"],[1,"form-text","text-muted"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",3),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,s,2,2,"small",4),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-describedby",t.describedById),r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate(t.label),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.showDescribedBy))},directives:[o.CheckboxControlValueAccessor,o.NgControlStatus,o.FormControlDirective,a.NgIf],encapsulation:2})},3867:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputTextReadOnlyComponent=void 0;n(73828);const i=n(32621),r=n(73828),o=n(57490),a=n(8863),s=n(99729);function l(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"div",4),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"button",5),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);const t=i.ɵɵnextContext();return t.launchUri(t.controlValue)})),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4,"\n "),i.ɵɵelement(5,"i",6),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(3,1,"launch")))}function c(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"div",4),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"button",5),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);const t=i.ɵɵnextContext();return t.copy(t.controlValue)})),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4,"\n "),i.ɵɵelement(5,"i",7),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(3,1,"copyValue")))}class d{constructor(e){this.platformUtilsService=e,this.showCopy=!0,this.showLaunch=!1}copy(e){this.platformUtilsService.copyToClipboard(e)}launchUri(e){this.platformUtilsService.launchUri(e)}}t.InputTextReadOnlyComponent=d,d.ɵfac=function(e){return new(e||d)(i.ɵɵdirectiveInject(r.PlatformUtilsService))},d.ɵcmp=i.ɵɵdefineComponent({type:d,selectors:[["app-input-text-readonly"]],inputs:{controlValue:"controlValue",label:"label",showCopy:"showCopy",showLaunch:"showLaunch"},decls:15,vars:4,consts:[[1,"form-group"],[1,"input-group"],["readonly","",1,"form-control",3,"value"],["class","input-group-append",4,"ngIf"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-external-link"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"label"),i.ɵɵtext(3),i.ɵɵelementEnd(),i.ɵɵtext(4,"\n "),i.ɵɵelementStart(5,"div",1),i.ɵɵtext(6,"\n "),i.ɵɵelement(7,"input",2),i.ɵɵtext(8,"\n "),i.ɵɵtemplate(9,l,8,3,"div",3),i.ɵɵtext(10,"\n "),i.ɵɵtemplate(11,c,8,3,"div",3),i.ɵɵtext(12,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(13,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(14,"\n")),2&e&&(i.ɵɵadvance(3),i.ɵɵtextInterpolate(t.label),i.ɵɵadvance(4),i.ɵɵproperty("value",t.controlValue),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showLaunch),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showCopy))},directives:[o.NgIf,a.A11yTitleDirective],pipes:[s.I18nPipe],encapsulation:2})},874:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputTextComponent=void 0;const i=n(16653),r=n(32621),o=n(57490),a=n(96832),s=n(99729);function l(e,t){1&e&&(r.ɵɵelementStart(0,"small",4),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("(",r.ɵɵpipeBind1(2,1,"required"),")"))}function c(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",7),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.helperText,"\n ")}}function d(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",8),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",9),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",10),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(6,2,"error"),":"),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",e.controlDir.control.hasError(e.helperTextSameAsError)?e.helperText:r.ɵɵpipeBind2(8,4,"fieldRequiredError",e.label),"\n ")}}function p(e,t){if(1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,c,2,1,"small",5),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,d,9,7,"small",6),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵattribute("id",e.describedById),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",null!=e.helperText&&!e.controlDir.control.hasError(e.helperTextSameAsError)),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.controlDir.control.hasError("required"))}}class u extends i.BaseCvaComponent{constructor(){super(...arguments),this.stripSpaces=!1,this.transformValue=null,this.onValueChangesInternal=e=>{let t=e;null!=this.transformValue&&(t=this.transformValue(e),this.internalControl.setValue(t,{emitEvent:!1})),this.onChange(t)}}ngOnInit(){super.ngOnInit(),this.stripSpaces&&(this.transformValue=this.doStripSpaces)}writeValue(e){this.internalControl.setValue(null==e?"":e)}onValueChangeInternal(e){let t=e;null!=this.transformValue&&(t=this.transformValue(e),this.internalControl.setValue(t,{emitEvent:!1}))}doStripSpaces(e){return e.replace(/ /g,"")}}t.InputTextComponent=u,u.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(u)))(t||u)}}(),u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["app-input-text","label","","controlId",""]],inputs:{helperTextSameAsError:"helperTextSameAsError",requiredErrorMessage:"requiredErrorMessage",stripSpaces:"stripSpaces"},features:[r.ɵɵInheritDefinitionFeature],attrs:["label","","controlId",""],decls:12,vars:8,consts:[[1,"form-group"],["class","text-muted form-text d-inline",4,"ngIf"],[1,"form-control",3,"formControl","blur"],[4,"ngIf"],[1,"text-muted","form-text","d-inline"],["class","form-text text-muted",4,"ngIf"],["class","error-inline","role","alert",4,"ngIf"],[1,"form-text","text-muted"],["role","alert",1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle"],[1,"sr-only"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"label"),r.ɵɵtext(3),r.ɵɵtemplate(4,l,3,3,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"input",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,p,6,3,"div",3),r.ɵɵtext(10,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",t.label,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.isRequired),r.ɵɵadvance(3),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-describedby",t.describedById)("aria-invalid",t.controlDir.control.invalid),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.showDescribedBy))},directives:[o.NgIf,a.DefaultValueAccessor,a.NgControlStatus,a.FormControlDirective],pipes:[s.I18nPipe],encapsulation:2})},60528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectComponent=void 0;const i=n(16653),r=n(32621),o=n(57490),a=n(96832),s=n(99729);function l(e,t){1&e&&(r.ɵɵelementStart(0,"small",4),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("(",r.ɵɵpipeBind1(2,1,"required"),")"))}function c(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",5),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵpropertyInterpolate("disabled",e.disabled),r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}class d extends i.BaseCvaComponent{}t.SelectComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-select"]],inputs:{selectOptions:"selectOptions"},features:[r.ɵɵInheritDefinitionFeature],decls:13,vars:7,consts:[[1,"form-group"],["class","text-muted form-text d-inline",4,"ngIf"],[1,"form-control",3,"formControl","blur"],[3,"ngValue","disabled",4,"ngFor","ngForOf"],[1,"text-muted","form-text","d-inline"],[3,"ngValue","disabled"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"label"),r.ɵɵtext(3),r.ɵɵtemplate(4,l,3,3,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"select",2),r.ɵɵlistener("blur",(function(){return t.onBlurInternal()})),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,c,2,3,"option",3),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵattribute("for",t.controlId),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",t.label,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.isRequired),r.ɵɵadvance(3),r.ɵɵproperty("formControl",t.internalControl),r.ɵɵattribute("id",t.controlId)("aria-invalid",t.controlDir.control.invalid),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",t.selectOptions))},directives:[o.NgIf,a.SelectControlValueAccessor,a.NgControlStatus,a.FormControlDirective,o.NgForOf,a.NgSelectOption,a.ɵNgSelectMultipleOption],pipes:[s.I18nPipe],encapsulation:2})},19213:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoComponent=void 0;const r=n(96832),o=(n(68012),n(89924)),a=(n(91674),n(51554),n(63513),n(73828),n(37084)),s=n(82769),l=n(21021),c=n(20577),d=n(56259),p=n(32621),u=n(96832),m=n(68012),h=n(91674),v=n(73828),f=n(51554),g=n(63513),y=n(57490),x=n(56820),S=n(64897),b=n(8863),w=n(60528),C=n(51626),I=n(5495),E=n(24006),P=n(3867),O=n(874),k=n(1142),A=n(99729);function T(e,t){1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",3),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",4),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementContainerEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function M(e,t){1&e&&(p.ɵɵelement(0,"i",21),p.ɵɵpipe(1,"i18n")),2&e&&p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,1,"loading"))}function B(e,t){1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,"keyConnectorTest"),"\n "))}function D(e,t){1&e&&(p.ɵɵelementStart(0,"small",35),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,4,"keyConnectorTestFail"),"\n "))}function R(e,t){1&e&&(p.ɵɵtext(0,"\n "),p.ɵɵelementStart(1,"small",37),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",38),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n ")),2&e&&(p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(5,1,"keyConnectorTestSuccess"),"\n "))}function F(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",32),p.ɵɵtext(1,"\n "),p.ɵɵtemplate(2,D,9,6,"small",33),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,R,7,3,"ng-template",null,34,p.ɵɵtemplateRefExtractor),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵreference(5),t=p.ɵɵnextContext(3);p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.keyConnectorUrl.hasError("invalidUrl"))("ngIfElse",e)}}function U(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"app-callout",23),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n\n "),p.ɵɵelementStart(6,"div",9),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"label",24),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelementStart(11,"small",25),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementStart(16,"div",26),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"input",27),p.ɵɵlistener("change",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).haveTestedKeyConnector=!1})),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n "),p.ɵɵelementStart(20,"div",28),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"button",29),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).validateKeyConnectorUrl()})),p.ɵɵtext(23,"\n "),p.ɵɵtemplate(24,M,2,3,"i",30),p.ɵɵtext(25,"\n "),p.ɵɵtemplate(26,B,3,3,"span",1),p.ɵɵtext(27,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(28,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵtemplate(31,F,7,2,"div",31),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(2),p.ɵɵproperty("useAlertRole",!0),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,8,"keyConnectorWarning"),"\n "),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(10,10,"keyConnectorUrl"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("(",p.ɵɵpipeBind1(13,12,"required"),")"),p.ɵɵadvance(10),p.ɵɵproperty("disabled",!e.enableTestKeyConnector),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.keyConnectorUrl.pending),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.keyConnectorUrl.pending),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.haveTestedKeyConnector)}}const V=function(e,t){return{"bwi-angle-down":e,"bwi-chevron-up":t}};function N(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",40),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"h2",41),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n\n "),p.ɵɵelement(8,"app-input-text-readonly",42),p.ɵɵpipe(9,"i18n"),p.ɵɵtext(10,"\n\n "),p.ɵɵelement(11,"app-input-text-readonly",42),p.ɵɵpipe(12,"i18n"),p.ɵɵtext(13,"\n\n "),p.ɵɵelement(14,"app-input-text",43),p.ɵɵpipe(15,"i18n"),p.ɵɵtext(16,"\n\n "),p.ɵɵelement(17,"app-input-text",44),p.ɵɵpipe(18,"i18n"),p.ɵɵtext(19,"\n\n "),p.ɵɵelement(20,"app-input-text",45),p.ɵɵpipe(21,"i18n"),p.ɵɵtext(22,"\n\n "),p.ɵɵelement(23,"app-input-text",46),p.ɵɵpipe(24,"i18n"),p.ɵɵpipe(25,"i18n"),p.ɵɵtext(26,"\n\n "),p.ɵɵelementStart(27,"app-select",47),p.ɵɵpipe(28,"i18n"),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n\n "),p.ɵɵelement(31,"app-input-checkbox",48),p.ɵɵpipe(32,"i18n"),p.ɵɵtext(33,"\n\n "),p.ɵɵtext(34,"\n "),p.ɵɵelementStart(35,"div",49),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).toggleOpenIdCustomizations()})),p.ɵɵtext(36,"\n "),p.ɵɵelementStart(37,"h3",50),p.ɵɵtext(38),p.ɵɵpipe(39,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n "),p.ɵɵelementStart(41,"button",51),p.ɵɵtext(42,"\n "),p.ɵɵelement(43,"i",52),p.ɵɵtext(44,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(45,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(46,"\n "),p.ɵɵelementStart(47,"div",53),p.ɵɵtext(48,"\n "),p.ɵɵelement(49,"app-input-text",54),p.ɵɵpipe(50,"i18n"),p.ɵɵpipe(51,"i18n"),p.ɵɵtext(52,"\n\n "),p.ɵɵelement(53,"app-input-text",55),p.ɵɵpipe(54,"i18n"),p.ɵɵpipe(55,"i18n"),p.ɵɵtext(56,"\n\n "),p.ɵɵelement(57,"app-input-text",56),p.ɵɵpipe(58,"i18n"),p.ɵɵpipe(59,"i18n"),p.ɵɵtext(60,"\n\n "),p.ɵɵelement(61,"app-input-text",57),p.ɵɵpipe(62,"i18n"),p.ɵɵpipe(63,"i18n"),p.ɵɵtext(64,"\n\n "),p.ɵɵelement(65,"app-input-text",58),p.ɵɵpipe(66,"i18n"),p.ɵɵtext(67,"\n\n "),p.ɵɵelement(68,"app-input-text",59),p.ɵɵpipe(69,"i18n"),p.ɵɵtext(70,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(71,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(72,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵproperty("formGroup",e.openIdForm),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,32,"openIdConnectConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(9,34,"callbackPath"))("controlValue",e.callbackPath),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(12,36,"signedOutCallbackPath"))("controlValue",e.signedOutCallbackPath),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(15,38,"authority"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(18,40,"clientId"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(21,42,"clientSecret"))("stripSpaces",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(24,44,"metadataAddress"))("stripSpaces",!0)("helperText",p.ɵɵpipeBind1(25,46,"openIdAuthorityRequired")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(28,48,"oidcRedirectBehavior"))("selectOptions",e.connectRedirectOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(32,50,"getClaimsFromUserInfoEndpoint")),p.ɵɵadvance(7),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(39,52,"openIdOptionalCustomizations"),"\n "),p.ɵɵadvance(3),p.ɵɵattribute("aria-expanded",e.showOpenIdCustomizations),p.ɵɵadvance(2),p.ɵɵproperty("ngClass",p.ɵɵpureFunction2(74,V,!e.showOpenIdCustomizations,e.showOpenIdCustomizations)),p.ɵɵadvance(4),p.ɵɵproperty("hidden",!e.showOpenIdCustomizations),p.ɵɵadvance(2),p.ɵɵproperty("label",p.ɵɵpipeBind1(50,54,"additionalScopes"))("helperText",p.ɵɵpipeBind1(51,56,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(54,58,"additionalUserIdClaimTypes"))("helperText",p.ɵɵpipeBind1(55,60,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(58,62,"additionalEmailClaimTypes"))("helperText",p.ɵɵpipeBind1(59,64,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(62,66,"additionalNameClaimTypes"))("helperText",p.ɵɵpipeBind1(63,68,"separateMultipleWithComma")),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(66,70,"acrValues")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(69,72,"expectedReturnAcrValue"))}}function _(e,t){1&e&&(p.ɵɵelementStart(0,"small",77),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵpipe(9,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(8,4,"fieldRequiredError",p.ɵɵpipeBind1(9,7,"idpX509PublicCert")),"\n "))}function j(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"div",40),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"h2",41),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n\n "),p.ɵɵelement(9,"app-input-text-readonly",42),p.ɵɵpipe(10,"i18n"),p.ɵɵtext(11,"\n\n "),p.ɵɵelement(12,"app-input-text-readonly",60),p.ɵɵpipe(13,"i18n"),p.ɵɵtext(14,"\n\n "),p.ɵɵelement(15,"app-input-text-readonly",42),p.ɵɵpipe(16,"i18n"),p.ɵɵtext(17,"\n\n "),p.ɵɵelementStart(18,"app-select",61),p.ɵɵpipe(19,"i18n"),p.ɵɵtext(20,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(21,"\n\n "),p.ɵɵelementStart(22,"app-select",62),p.ɵɵpipe(23,"i18n"),p.ɵɵtext(24,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(25,"\n\n "),p.ɵɵelementStart(26,"app-select",63),p.ɵɵpipe(27,"i18n"),p.ɵɵtext(28,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n\n "),p.ɵɵelementStart(30,"app-select",64),p.ɵɵpipe(31,"i18n"),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n\n "),p.ɵɵelement(34,"app-input-checkbox",65),p.ɵɵpipe(35,"i18n"),p.ɵɵtext(36,"\n\n "),p.ɵɵelement(37,"app-input-checkbox",66),p.ɵɵpipe(38,"i18n"),p.ɵɵtext(39,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n\n "),p.ɵɵtext(41,"\n "),p.ɵɵelementStart(42,"div",40),p.ɵɵtext(43,"\n "),p.ɵɵelementStart(44,"h2",41),p.ɵɵtext(45),p.ɵɵpipe(46,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(47,"\n\n "),p.ɵɵelement(48,"app-input-text",67),p.ɵɵpipe(49,"i18n"),p.ɵɵtext(50,"\n\n "),p.ɵɵelementStart(51,"app-select",68),p.ɵɵpipe(52,"i18n"),p.ɵɵtext(53,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(54,"\n\n "),p.ɵɵelement(55,"app-input-text",69),p.ɵɵpipe(56,"i18n"),p.ɵɵpipe(57,"i18n"),p.ɵɵtext(58,"\n\n "),p.ɵɵelement(59,"app-input-text",70),p.ɵɵpipe(60,"i18n"),p.ɵɵtext(61,"\n\n "),p.ɵɵelementStart(62,"div",9),p.ɵɵtext(63,"\n "),p.ɵɵelementStart(64,"label",71),p.ɵɵtext(65),p.ɵɵpipe(66,"i18n"),p.ɵɵelementStart(67,"small",25),p.ɵɵtext(68),p.ɵɵpipe(69,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(70,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(71,"\n "),p.ɵɵelement(72,"textarea",72),p.ɵɵtext(73,"\n "),p.ɵɵtemplate(74,_,10,9,"small",73),p.ɵɵtext(75,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(76,"\n\n "),p.ɵɵelementStart(77,"app-select",74),p.ɵɵpipe(78,"i18n"),p.ɵɵtext(79,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(80,"\n\n "),p.ɵɵtext(81,"\n "),p.ɵɵtext(82,"\n\n "),p.ɵɵelement(83,"app-input-checkbox",75),p.ɵɵpipe(84,"i18n"),p.ɵɵtext(85,"\n\n "),p.ɵɵelement(86,"app-input-checkbox",76),p.ɵɵpipe(87,"i18n"),p.ɵɵtext(88,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(89,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(2);p.ɵɵproperty("formGroup",e.samlForm),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,35,"samlSpConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(10,37,"spEntityId"))("controlValue",e.spEntityId),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(13,39,"spMetadataUrl"))("controlValue",e.spMetadataUrl)("showLaunch",!0),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(16,41,"spAcsUrl"))("controlValue",e.spAcsUrl),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(19,43,"spNameIdFormat"))("selectOptions",e.saml2NameIdFormatOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(23,45,"spOutboundSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(27,47,"spSigningBehavior"))("selectOptions",e.saml2SigningBehaviourOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(31,49,"spMinIncomingSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(35,51,"spWantAssertionsSigned")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(38,53,"spValidateCertificates")),p.ɵɵadvance(8),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(46,55,"samlIdpConfig")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(49,57,"idpEntityId")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(52,59,"idpBindingType"))("selectOptions",e.saml2BindingTypeOptions),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(56,61,"idpSingleSignOnServiceUrl"))("helperText",p.ɵɵpipeBind1(57,63,"idpSingleSignOnServiceUrlRequired"))("stripSpaces",!0),p.ɵɵadvance(4),p.ɵɵproperty("label",p.ɵɵpipeBind1(60,65,"idpSingleLogoutServiceUrl"))("stripSpaces",!0),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(66,67,"idpX509PublicCert"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("(",p.ɵɵpipeBind1(69,69,"required"),")"),p.ɵɵadvance(6),p.ɵɵproperty("ngIf",e.samlForm.get("idpX509PublicCert").hasError("required")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(78,71,"idpOutboundSigningAlgorithm"))("selectOptions",e.samlSigningAlgorithmOptions),p.ɵɵadvance(6),p.ɵɵproperty("label",p.ɵɵpipeBind1(84,73,"idpAllowOutboundLogoutRequests")),p.ɵɵadvance(3),p.ɵɵproperty("label",p.ɵɵpipeBind1(87,75,"idpSignAuthenticationRequests"))}}function z(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",78),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"span",4),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd()),2&e){const e=t.ngIf;p.ɵɵadvance(5),p.ɵɵtextInterpolate1("",p.ɵɵpipeBind1(6,2,"error"),":"),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(8,4,1===e?"formErrorSummarySingle":"formErrorSummaryPlural",e),"\n ")}}function H(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",5,6),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submit()})),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"p"),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementStart(6,"a",7),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelement(11,"br"),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n\n "),p.ɵɵtext(15,"\n "),p.ɵɵelementContainerStart(16),p.ɵɵtext(17,"\n "),p.ɵɵelement(18,"app-input-checkbox",8),p.ɵɵpipe(19,"i18n"),p.ɵɵpipe(20,"i18n"),p.ɵɵtext(21,"\n\n "),p.ɵɵelementStart(22,"div",9),p.ɵɵtext(23,"\n "),p.ɵɵelementStart(24,"label"),p.ɵɵtext(25),p.ɵɵpipe(26,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(27,"\n "),p.ɵɵelementStart(28,"div",10),p.ɵɵtext(29,"\n "),p.ɵɵelement(30,"input",11),p.ɵɵtext(31,"\n "),p.ɵɵelementStart(32,"label",12),p.ɵɵtext(33),p.ɵɵpipe(34,"i18n"),p.ɵɵelementStart(35,"small"),p.ɵɵtext(36),p.ɵɵpipe(37,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(38,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(39,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(40,"\n "),p.ɵɵelementStart(41,"div",13),p.ɵɵtext(42,"\n "),p.ɵɵelement(43,"input",14),p.ɵɵtext(44,"\n "),p.ɵɵelementStart(45,"label",15),p.ɵɵtext(46),p.ɵɵpipe(47,"i18n"),p.ɵɵelementStart(48,"a",16),p.ɵɵpipe(49,"i18n"),p.ɵɵtext(50,"\n "),p.ɵɵelement(51,"i",17),p.ɵɵtext(52,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(53,"\n "),p.ɵɵelementStart(54,"small"),p.ɵɵtext(55),p.ɵɵpipe(56,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(57,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(58,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(59,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(60,"\n\n "),p.ɵɵtext(61,"\n "),p.ɵɵtemplate(62,U,34,14,"ng-container",1),p.ɵɵtext(63,"\n\n "),p.ɵɵelementStart(64,"app-select",18),p.ɵɵpipe(65,"i18n"),p.ɵɵtext(66,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(67,"\n "),p.ɵɵelementContainerEnd(),p.ɵɵtext(68,"\n\n "),p.ɵɵtext(69,"\n "),p.ɵɵtemplate(70,N,73,77,"div",19),p.ɵɵtext(71,"\n\n "),p.ɵɵtext(72,"\n "),p.ɵɵtemplate(73,j,90,77,"div",19),p.ɵɵtext(74,"\n\n "),p.ɵɵelementStart(75,"button",20),p.ɵɵtext(76,"\n "),p.ɵɵelement(77,"i",21),p.ɵɵpipe(78,"i18n"),p.ɵɵtext(79,"\n "),p.ɵɵelementStart(80,"span"),p.ɵɵtext(81),p.ɵɵpipe(82,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(83,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(84,"\n "),p.ɵɵtemplate(85,z,9,7,"div",22),p.ɵɵtext(86,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("formGroup",t.ssoConfigForm)("appApiAction",t.formPromise),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(5,27,"ssoPolicyHelpStart"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,29,"ssoPolicyHelpLink")),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(10,31,"ssoPolicyHelpEnd"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(13,33,"ssoPolicyHelpKeyConnector"),"\n "),p.ɵɵadvance(6),p.ɵɵproperty("formControl",t.enabled)("label",p.ɵɵpipeBind1(19,35,"allowSso"))("helperText",p.ɵɵpipeBind1(20,37,"allowSsoDesc")),p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(26,39,"memberDecryptionOption")),p.ɵɵadvance(5),p.ɵɵproperty("value",!1),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(34,41,"masterPass"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(37,43,"memberDecryptionPassDesc")),p.ɵɵadvance(7),p.ɵɵproperty("value",!0),p.ɵɵattribute("disabled",!t.organization.useKeyConnector||null),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(47,45,"keyConnector"),"\n "),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("appA11yTitle",p.ɵɵpipeBind1(49,47,"learnMore")),p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(56,49,"memberDecryptionKeyConnectorDesc")),p.ɵɵadvance(7),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("keyConnectorEnabled").value),p.ɵɵadvance(2),p.ɵɵproperty("label",p.ɵɵpipeBind1(65,51,"type"))("selectOptions",t.ssoTypeOptions),p.ɵɵadvance(6),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("configType").value===t.ssoType.OpenIdConnect),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",t.ssoConfigForm.get("configType").value===t.ssoType.Saml2),p.ɵɵadvance(2),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(78,53,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(82,55,"save")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.getErrorCount(t.ssoConfigForm))}}const L="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";class K{constructor(e,t,n,i,r,s){this.formBuilder=e,this.route=t,this.apiService=n,this.platformUtilsService=i,this.i18nService=r,this.organizationService=s,this.ssoType=a.SsoType,this.ssoTypeOptions=[{name:this.i18nService.t("selectType"),value:a.SsoType.None,disabled:!0},{name:"OpenID Connect",value:a.SsoType.OpenIdConnect},{name:"SAML 2.0",value:a.SsoType.Saml2}],this.samlSigningAlgorithms=["http://www.w3.org/2001/04/xmldsig-more#rsa-sha256","http://www.w3.org/2000/09/xmldsig#rsa-sha384","http://www.w3.org/2000/09/xmldsig#rsa-sha512","http://www.w3.org/2000/09/xmldsig#rsa-sha1"],this.saml2SigningBehaviourOptions=[{name:"If IdP Wants Authn Requests Signed",value:a.Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned},{name:"Always",value:a.Saml2SigningBehavior.Always},{name:"Never",value:a.Saml2SigningBehavior.Never}],this.saml2BindingTypeOptions=[{name:"Redirect",value:a.Saml2BindingType.HttpRedirect},{name:"HTTP POST",value:a.Saml2BindingType.HttpPost}],this.saml2NameIdFormatOptions=[{name:"Not Configured",value:a.Saml2NameIdFormat.NotConfigured},{name:"Unspecified",value:a.Saml2NameIdFormat.Unspecified},{name:"Email Address",value:a.Saml2NameIdFormat.EmailAddress},{name:"X.509 Subject Name",value:a.Saml2NameIdFormat.X509SubjectName},{name:"Windows Domain Qualified Name",value:a.Saml2NameIdFormat.WindowsDomainQualifiedName},{name:"Kerberos Principal Name",value:a.Saml2NameIdFormat.KerberosPrincipalName},{name:"Entity Identifier",value:a.Saml2NameIdFormat.EntityIdentifier},{name:"Persistent",value:a.Saml2NameIdFormat.Persistent},{name:"Transient",value:a.Saml2NameIdFormat.Transient}],this.connectRedirectOptions=[{name:"Redirect GET",value:a.OpenIdConnectRedirectBehavior.RedirectGet},{name:"Form POST",value:a.OpenIdConnectRedirectBehavior.FormPost}],this.showOpenIdCustomizations=!1,this.loading=!0,this.haveTestedKeyConnector=!1,this.enabled=this.formBuilder.control(!1),this.openIdForm=this.formBuilder.group({authority:["",o.dirtyRequired],clientId:["",o.dirtyRequired],clientSecret:["",o.dirtyRequired],metadataAddress:[],redirectBehavior:[a.OpenIdConnectRedirectBehavior.RedirectGet,o.dirtyRequired],getClaimsFromUserInfoEndpoint:[],additionalScopes:[],additionalUserIdClaimTypes:[],additionalEmailClaimTypes:[],additionalNameClaimTypes:[],acrValues:[],expectedReturnAcrValue:[]},{updateOn:"blur"}),this.samlForm=this.formBuilder.group({spNameIdFormat:[a.Saml2NameIdFormat.NotConfigured],spOutboundSigningAlgorithm:[L],spSigningBehavior:[a.Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned],spMinIncomingSigningAlgorithm:[L],spWantAssertionsSigned:[],spValidateCertificates:[],idpEntityId:["",o.dirtyRequired],idpBindingType:[a.Saml2BindingType.HttpRedirect],idpSingleSignOnServiceUrl:[],idpSingleLogoutServiceUrl:[],idpX509PublicCert:["",o.dirtyRequired],idpOutboundSigningAlgorithm:[L],idpAllowUnsolicitedAuthnResponse:[],idpAllowOutboundLogoutRequests:[!0],idpWantAuthnRequestsSigned:[]},{updateOn:"blur"}),this.ssoConfigForm=this.formBuilder.group({configType:[a.SsoType.None],keyConnectorEnabled:[!1],keyConnectorUrl:[""],openId:this.openIdForm,saml:this.samlForm})}ngOnInit(){return i(this,void 0,void 0,(function*(){this.ssoConfigForm.get("configType").valueChanges.subscribe((e=>{e===a.SsoType.OpenIdConnect?(this.openIdForm.enable(),this.samlForm.disable()):e===a.SsoType.Saml2?(this.openIdForm.disable(),this.samlForm.enable()):(this.openIdForm.disable(),this.samlForm.disable())})),this.samlForm.get("spSigningBehavior").valueChanges.subscribe((()=>this.samlForm.get("idpX509PublicCert").updateValueAndValidity())),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load()}))))}))}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId);const e=yield this.apiService.getOrganizationSso(this.organizationId);this.populateForm(e),this.callbackPath=e.urls.callbackPath,this.signedOutCallbackPath=e.urls.signedOutCallbackPath,this.spEntityId=e.urls.spEntityId,this.spMetadataUrl=e.urls.spMetadataUrl,this.spAcsUrl=e.urls.spAcsUrl,this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){if(this.validateForm(this.ssoConfigForm),this.ssoConfigForm.get("keyConnectorEnabled").value&&(yield this.validateKeyConnectorUrl()),!this.ssoConfigForm.valid)return void this.readOutErrors();const e=new c.OrganizationSsoRequest;e.enabled=this.enabled.value,e.data=l.SsoConfigApi.fromView(this.ssoConfigForm.value),this.formPromise=this.apiService.postOrganizationSso(this.organizationId,e);try{const e=yield this.formPromise;this.populateForm(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("ssoSettingsSaved"))}catch(t){}this.formPromise=null}))}validateKeyConnectorUrl(){return i(this,void 0,void 0,(function*(){if(!this.haveTestedKeyConnector){this.keyConnectorUrl.markAsPending();try{yield this.apiService.getKeyConnectorAlive(this.keyConnectorUrl.value),this.keyConnectorUrl.updateValueAndValidity()}catch(e){this.keyConnectorUrl.setErrors({invalidUrl:!0})}this.haveTestedKeyConnector=!0}}))}toggleOpenIdCustomizations(){this.showOpenIdCustomizations=!this.showOpenIdCustomizations}getErrorCount(e){return Object.values(e.controls).reduce(((e,t)=>t instanceof r.FormGroup?e+this.getErrorCount(t):null==t.errors?e:e+Object.keys(t.errors).length),0)}get enableTestKeyConnector(){var e;return this.ssoConfigForm.get("keyConnectorEnabled").value&&!s.Utils.isNullOrWhitespace(null===(e=this.keyConnectorUrl)||void 0===e?void 0:e.value)}get keyConnectorUrl(){return this.ssoConfigForm.get("keyConnectorUrl")}get samlSigningAlgorithmOptions(){return this.samlSigningAlgorithms.map((e=>({name:e,value:e})))}validateForm(e){Object.values(e.controls).forEach((e=>{e.disabled||(e instanceof r.FormGroup?this.validateForm(e):(e.markAsDirty(),e.markAsTouched(),e.updateValueAndValidity()))}))}populateForm(e){if(this.enabled.setValue(e.enabled),null!=e.data){const t=new d.SsoConfigView(e.data);this.ssoConfigForm.patchValue(t)}}readOutErrors(){const e=this.i18nService.t("error"),t=this.getErrorCount(this.ssoConfigForm),n=this.i18nService.t(1===t?"formErrorSummarySingle":"formErrorSummaryPlural",t.toString()),i=document.createElement("div");i.className="sr-only",i.id="srErrorCount",i.setAttribute("aria-live","polite"),i.innerText=e+": "+n;const r=document.getElementById("srErrorCount");null!=r&&r.remove(),document.body.append(i)}}t.SsoComponent=K,K.ɵfac=function(e){return new(e||K)(p.ɵɵdirectiveInject(u.FormBuilder),p.ɵɵdirectiveInject(m.ActivatedRoute),p.ɵɵdirectiveInject(h.ApiService),p.ɵɵdirectiveInject(v.PlatformUtilsService),p.ɵɵdirectiveInject(f.I18nService),p.ɵɵdirectiveInject(g.OrganizationService))},K.ɵcmp=p.ɵɵdefineComponent({type:K,selectors:[["app-org-manage-sso"]],decls:11,vars:5,consts:[[1,"page-header","d-flex"],[4,"ngIf"],[3,"formGroup","appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[3,"formGroup","appApiAction","ngSubmit"],["form",""],["routerLink","../policies"],["controlId","enabled",3,"formControl","label","helperText"],[1,"form-group"],[1,"form-check","form-check-block"],["type","radio","id","memberDecryptionPass","formControlName","keyConnectorEnabled",1,"form-check-input",3,"value"],["for","memberDecryptionPass",1,"form-check-label"],[1,"form-check","mt-2","form-check-block"],["type","radio","id","memberDecryptionKey","formControlName","keyConnectorEnabled",1,"form-check-input",3,"value"],["for","memberDecryptionKey",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/about-key-connector/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["controlId","type","formControlName","configType",3,"label","selectOptions"],[3,"formGroup",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["id","errorSummary","class","error-summary text-danger",4,"ngIf"],["type","warning",3,"useAlertRole"],["for","keyConnectorUrl"],[1,"text-muted","form-text","d-inline"],[1,"input-group"],["formControlName","keyConnectorUrl","id","keyConnectorUrl","aria-describedby","keyConnectorUrlDesc","appInputStripSpaces","","appA11yInvalid","",1,"form-control",3,"change"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["id","keyConnectorUrlDesc","aria-live","polite",4,"ngIf"],["id","keyConnectorUrlDesc","aria-live","polite"],["class","error-inline",4,"ngIf","ngIfElse"],["keyConnectorSuccess",""],[1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle"],[1,"text-success"],["aria-hidden","true",1,"bwi","bwi-check-circle"],[3,"formGroup"],[1,"config-section"],[1,"secondary-header"],[3,"label","controlValue"],["controlId","authority","formControlName","authority",3,"label","stripSpaces"],["controlId","clientId","formControlName","clientId",3,"label","stripSpaces"],["controlId","clientSecret","formControlName","clientSecret",3,"label","stripSpaces"],["controlId","metadataAddress","formControlName","metadataAddress",3,"label","stripSpaces","helperText"],["controlId","redirectBehavior","formControlName","redirectBehavior",3,"label","selectOptions"],["controlId","getClaimsFromUserInfoEndpoint","formControlName","getClaimsFromUserInfoEndpoint",3,"label"],[1,"section-header","d-flex","flex-row","align-items-center","mt-3","mb-3",3,"click"],["id","customizations-header",1,"mb-0","mr-2"],["type","button","appStopClick","","role","button","aria-controls","customizations","aria-labelledby","customizations-header",1,"mb-1","btn","btn-link"],["aria-hidden","true",1,"bwi",3,"ngClass"],["id","customizations",3,"hidden"],["controlId","additionalScopes","formControlName","additionalScopes",3,"label","helperText"],["controlId","additionalUserIdClaimTypes","formControlName","additionalUserIdClaimTypes",3,"label","helperText"],["controlId","additionalEmailClaimTypes","formControlName","additionalEmailClaimTypes",3,"label","helperText"],["controlId","additionalNameClaimTypes","formControlName","additionalNameClaimTypes",3,"label","helperText"],["controlId","acrValues","helperText","acr_values","formControlName","acrValues",3,"label"],["controlId","expectedReturnAcrValue","helperText","acr_validation","formControlName","expectedReturnAcrValue",3,"label"],[3,"label","controlValue","showLaunch"],["controlId","spNameIdFormat","formControlName","spNameIdFormat",3,"label","selectOptions"],["controlId","spOutboundSigningAlgorithm","formControlName","spOutboundSigningAlgorithm",3,"label","selectOptions"],["controlId","spSigningBehavior","formControlName","spSigningBehavior",3,"label","selectOptions"],["controlId","spMinIncomingSigningAlgorithm","formControlName","spMinIncomingSigningAlgorithm",3,"label","selectOptions"],["controlId","spWantAssertionsSigned","formControlName","spWantAssertionsSigned",3,"label"],["controlId","spValidateCertificates","formControlName","spValidateCertificates",3,"label"],["controlId","idpEntityId","formControlName","idpEntityId",3,"label"],["controlId","idpBindingType","formControlName","idpBindingType",3,"label","selectOptions"],["controlId","idpSingleSignOnServiceUrl","formControlName","idpSingleSignOnServiceUrl",3,"label","helperText","stripSpaces"],["controlId","idpSingleLogoutServiceUrl","formControlName","idpSingleLogoutServiceUrl",3,"label","stripSpaces"],["for","idpX509PublicCert"],["formControlName","idpX509PublicCert","rows","6","id","idpX509PublicCert","appA11yInvalid","","aria-describedby","idpX509PublicCertDesc",1,"form-control","form-control-sm","text-monospace"],["id","idpX509PublicCertDesc","class","error-inline","role","alert",4,"ngIf"],["controlId","idpOutboundSigningAlgorithm","formControlName","idpOutboundSigningAlgorithm",3,"label","selectOptions"],["controlId","idpAllowOutboundLogoutRequests","formControlName","idpAllowOutboundLogoutRequests",3,"label"],["controlId","idpWantAuthnRequestsSigned","formControlName","idpWantAuthnRequestsSigned",3,"label"],["id","idpX509PublicCertDesc","role","alert",1,"error-inline"],["id","errorSummary",1,"error-summary","text-danger"]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n\n"),p.ɵɵtemplate(7,T,9,6,"ng-container",1),p.ɵɵtext(8,"\n\n"),p.ɵɵtemplate(9,H,87,57,"form",2),p.ɵɵtext(10,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,3,"singleSignOn")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!t.loading))},directives:[y.NgIf,u.ɵNgNoValidate,u.NgControlStatusGroup,u.FormGroupDirective,x.ApiActionDirective,m.RouterLinkWithHref,S.InputCheckboxComponent,u.NgControlStatus,u.FormControlDirective,u.RadioControlValueAccessor,u.DefaultValueAccessor,u.FormControlName,b.A11yTitleDirective,w.SelectComponent,C.CalloutComponent,I.InputStripSpacesDirective,E.A11yInvalidDirective,P.InputTextReadOnlyComponent,O.InputTextComponent,k.StopClickDirective,y.NgClass],pipes:[A.I18nPipe],encapsulation:2})},62421:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(47880),a=n(70734),s=n(45231),l=n(2021),c=n(13637),d=n(19213),p=n(32621),u=(n(68012),[{path:"organizations/:organizationId",component:s.OrganizationLayoutComponent,canActivate:[r.AuthGuard,a.PermissionsGuard],children:[{path:"manage",component:l.ManageComponent,canActivate:[a.PermissionsGuard],data:{permissions:c.NavigationPermissionsService.getPermissions("manage").concat(o.Permissions.ManageSso)},children:[{path:"sso",component:d.SsoComponent}]}]}]);class m{}t.OrganizationsRoutingModule=m,m.ɵfac=function(e){return new(e||m)},m.ɵmod=p.ɵɵdefineNgModule({type:m}),m.ɵinj=p.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(u)],i.RouterModule]})},40299:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsModule=void 0;const i=n(57490),r=n(96832),o=n(44926),a=n(62421),s=n(32621);class l{}t.OrganizationsModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({imports:[[i.CommonModule,r.FormsModule,r.ReactiveFormsModule,o.JslibModule,a.OrganizationsRoutingModule]]})},64281:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisablePersonalVaultExportPolicyComponent=t.DisablePersonalVaultExportPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(99729);class l extends r.BasePolicy{constructor(){super(...arguments),this.name="disablePersonalVaultExport",this.description="disablePersonalVaultExportDesc",this.type=i.PolicyType.DisablePersonalVaultExport,this.component=c}}t.DisablePersonalVaultExportPolicy=l;class c extends r.BasePolicyComponent{}t.DisablePersonalVaultExportPolicyComponent=c,c.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(c)))(t||c)}}(),c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["policy-disable-personal-vault-export"]],features:[o.ɵɵInheritDefinitionFeature],decls:12,vars:4,consts:[[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,2,"enabled")))},directives:[a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective],pipes:[s.I18nPipe],encapsulation:2})},47075:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MaximumVaultTimeoutPolicyComponent=t.MaximumVaultTimeoutPolicy=void 0;n(96832),n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51554),l=n(51626),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="maximumVaultTimeout",this.description="maximumVaultTimeoutDesc",this.type=i.PolicyType.MaximumVaultTimeout,this.component=p}}t.MaximumVaultTimeoutPolicy=d;class p extends r.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.i18nService=t,this.data=this.formBuilder.group({hours:[null],minutes:[null]})}loadData(){var e;const t=null===(e=this.policyResponse.data)||void 0===e?void 0:e.minutes;null!=t&&this.data.patchValue({hours:Math.floor(t/60),minutes:t%60})}buildRequestData(){return null==this.data.value.hours&&null==this.data.value.minutes?null:{minutes:60*this.data.value.hours+this.data.value.minutes}}buildRequest(e){var t;const n=null!==(t=e.get(i.PolicyType.SingleOrg))&&void 0!==t&&t;if(this.enabled.value&&!n)throw new Error(this.i18nService.t("requireSsoPolicyReqError"));const r=this.buildRequestData();if(null==(null==r?void 0:r.minutes)||(null==r?void 0:r.minutes)<=0)throw new Error(this.i18nService.t("invalidMaximumVaultTimeout"));return super.buildRequest(e)}}t.MaximumVaultTimeoutPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.FormBuilder),o.ɵɵdirectiveInject(s.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-maximum-timeout"]],features:[o.ɵɵInheritDefinitionFeature],decls:48,vars:20,consts:[["type","tip",3,"title"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],["for","hours"],[1,"row"],[1,"col-6"],["id","hours","type","number","min","0","name","hours","formControlName","hours",1,"form-control"],["id","minutes","type","number","min","0","max","59","name","minutes","formControlName","minutes",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n\n"),o.ɵɵelementStart(5,"div",1),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",2),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"input",3),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"label",4),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n\n"),o.ɵɵelementStart(17,"div",5),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",1),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",6),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"div",7),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"div",8),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"input",9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"small"),o.ɵɵtext(32),o.ɵɵpipe(33,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",8),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"input",10),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"small"),o.ɵɵtext(41),o.ɵɵpipe(42,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n")),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,8,"prerequisite")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,10,"requireSsoPolicyReq"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,12,"enabled")),o.ɵɵadvance(5),o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,14,"maximumVaultTimeoutLabel")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(33,16,"hours")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(42,18,"minutes")))},directives:[l.CalloutComponent,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.NgControlStatusGroup,a.FormGroupDirective,a.MinValidator,a.NumberValueAccessor,a.DefaultValueAccessor,a.FormControlName,a.MaxValidator],pipes:[c.I18nPipe],encapsulation:2})},32656:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddOrganizationComponent=void 0;const r=n(32621),o=(n(47594),n(51554),n(73828),n(68291),n(49003),n(32621)),a=n(68291),s=n(49003),l=n(51554),c=n(73828),d=n(47594),p=n(8863),u=n(57490),m=n(15370),h=n(99729);function v(e,t){1&e&&(o.ɵɵelementStart(0,"div",10),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",11),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(5,4,"loading"),"\n "))}function f(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",14),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-avatar",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"td"),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",16),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).add(t)})),o.ɵɵtext(13,"\n Add\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("data",e.name)("circle",!0)("fontSize",14),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",e.name,"\n "),o.ɵɵadvance(4),o.ɵɵproperty("disabled",n.formPromise)}}function g(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"table",12),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,f,16,5,"tr",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.organizations)}}class y{constructor(e,t,n,i,o){this.providerService=e,this.webProviderService=t,this.i18nService=n,this.platformUtilsService=i,this.validationService=o,this.onAddedOrganization=new r.EventEmitter,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){null!=this.providerId&&(this.provider=yield this.providerService.get(this.providerId),this.loading=!1)}))}add(e){return i(this,void 0,void 0,(function*(){if(this.formPromise)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("addOrganizationConfirmation",e.name,this.provider.name),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.formPromise=this.webProviderService.addOrganizationToProvider(this.providerId,e.id),yield this.formPromise}catch(t){return void this.validationService.showError(t)}finally{this.formPromise=null}this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationJoinedProvider")),this.onAddedOrganization.emit()}))}}t.AddOrganizationComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.ProviderService),o.ɵɵdirectiveInject(s.WebProviderService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.ValidationService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["provider-add-organization"]],inputs:{providerId:"providerId",organizations:"organizations"},outputs:{onAddedOrganization:"onAddedOrganization"},decls:30,vars:8,consts:[["role","dialog","aria-modal","true","aria-labelledby","addTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content"],[1,"modal-header"],["id","addTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],[4,"ngIf"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],[1,"btn","btn-outline-secondary","pull-right",3,"disabled","click"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"h2",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",5),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",6),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",7),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,v,6,6,"div",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,g,7,1,"ng-container",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n")),2&e&&(o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(10,4,"addExistingOrganization"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,6,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading))},directives:[p.A11yTitleDirective,u.NgIf,u.NgForOf,m.AvatarComponent],pipes:[h.I18nPipe],encapsulation:2})},29063:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ClientsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(47594),n(91674),n(51554),n(36631),n(63513),n(73828),n(68291),n(60421),n(47937)),s=n(30185),l=(n(49003),n(32656)),c=n(32621),d=n(68012),p=n(68291),u=n(91674),m=n(60421),h=n(73828),v=n(51554),f=n(47594),g=n(49003),y=n(36631),x=n(64684),S=n(63513),b=n(96832),w=n(57490),C=n(15370),I=n(8863),E=n(1142),P=n(99729),O=n(50154),k=["add"];function A(e,t){1&e&&(c.ɵɵelementStart(0,"a",8),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"newClientOrganization"),"\n "))}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",10),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().addExistingOrganization()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"addExistingOrganization"),"\n "))}function M(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",11),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",12),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function B(e,t){1&e&&(c.ɵɵelementStart(0,"p"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"noClientsInList")))}function D(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",19),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",20),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"button",21),c.ɵɵpipe(5,"i18n"),c.ɵɵtext(6,"\n "),c.ɵɵelement(7,"i",22),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",23),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"a",24),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(3).remove(t)})),c.ɵɵtext(13,"\n "),c.ɵɵelement(14,"i",25),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(5,2,"options")),c.ɵɵadvance(11),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(16,4,"remove"),"\n "))}const R=function(e){return["/organizations",e]};function F(e,t){if(1&e&&(c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",15),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"app-avatar",16),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td"),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"a",17),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵtemplate(13,D,20,6,"td",18),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit,n=c.ɵɵnextContext(3);c.ɵɵadvance(4),c.ɵɵproperty("data",e.organizationName)("circle",!0)("fontSize",14),c.ɵɵadvance(5),c.ɵɵproperty("routerLink",c.ɵɵpureFunction1(6,R,e.organizationId)),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.organizationName),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",n.manageOrganizations)}}function U(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"table",13),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tbody"),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,F,15,8,"tr",14),c.ɵɵtext(7,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function V(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,3,3,"p",6),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,U,10,3,"ng-container",6),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}function N(e,t){}const _=[a.PlanType.Free,a.PlanType.FamiliesAnnually2019,a.PlanType.FamiliesAnnually];class j{constructor(e,t,n,i,r,o,a,s,l,c,d){this.route=e,this.providerService=t,this.apiService=n,this.searchService=i,this.platformUtilsService=r,this.i18nService=o,this.validationService=a,this.webProviderService=s,this.logService=l,this.modalService=c,this.organizationService=d,this.loading=!0,this.manageOrganizations=!1,this.showAddExisting=!1,this.didScroll=!1,this.pageSize=100,this.pagedClientsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))}))))}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getProviderClients(this.providerId);this.clients=null!=e.data&&e.data.length>0?e.data:[],this.manageOrganizations=(yield this.providerService.get(this.providerId)).type===s.ProviderUserType.ProviderAdmin;const t=(yield this.organizationService.getAll()).filter((e=>e.isOwner&&null==e.providerId)),n=yield Promise.all(t.map((e=>this.apiService.getOrganization(e.id)))).then((e=>e.filter((e=>!_.includes(e.planType))).map((e=>e.id))));this.addableOrganizations=t.filter((e=>n.includes(e.id))),this.showAddExisting=0!==this.addableOrganizations.length,this.loading=!1}))}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.clients&&this.clients.length>this.pageSize}isSearching(){return this.searchService.isSearchable(this.searchText)}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedClients=[],this.loadMore()}))}loadMore(){if(!this.clients||this.clients.length<=this.pageSize)return;const e=this.pagedClients.length;let t=this.pageSize;0===e&&this.pagedClientsCount>this.pageSize&&(t=this.pagedClientsCount),this.clients.length>e&&(this.pagedClients=this.pagedClients.concat(this.clients.slice(e,e+t))),this.pagedClientsCount=this.pagedClients.length,this.didScroll=this.pagedClients.length>this.pageSize}addExistingOrganization(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(l.AddOrganizationComponent,this.addModalRef,(t=>{t.providerId=this.providerId,t.organizations=this.addableOrganizations,t.onAddedOrganization.subscribe((()=>i(this,void 0,void 0,(function*(){try{yield this.load(),e.close()}catch(t){this.logService.error(`Handled exception: ${t}`)}}))))}))}))}remove(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("detachOrganizationConfirmation"),e.organizationName,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;this.actionPromise=this.webProviderService.detachOrganizastion(this.providerId,e.id);try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("detachedOrganization",e.organizationName)),yield this.load()}catch(t){this.validationService.showError(t)}this.actionPromise=null}))}}t.ClientsComponent=j,j.ɵfac=function(e){return new(e||j)(c.ɵɵdirectiveInject(d.ActivatedRoute),c.ɵɵdirectiveInject(p.ProviderService),c.ɵɵdirectiveInject(u.ApiService),c.ɵɵdirectiveInject(m.SearchService),c.ɵɵdirectiveInject(h.PlatformUtilsService),c.ɵɵdirectiveInject(v.I18nService),c.ɵɵdirectiveInject(f.ValidationService),c.ɵɵdirectiveInject(g.WebProviderService),c.ɵɵdirectiveInject(y.LogService),c.ɵɵdirectiveInject(x.ModalService),c.ɵɵdirectiveInject(S.OrganizationService))},j.ɵcmp=c.ɵɵdefineComponent({type:j,selectors:[["ng-component"]],viewQuery:function(e,t){if(1&e&&c.ɵɵviewQuery(k,7,r.ViewContainerRef),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.addModalRef=e.first)}},decls:32,vars:19,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["class","btn btn-sm btn-outline-primary ml-3","routerLink","create",4,"ngIf"],["class","btn btn-sm btn-outline-primary ml-3",3,"click",4,"ngIf"],[4,"ngIf"],["add",""],["routerLink","create",1,"btn","btn-sm","btn-outline-primary","ml-3"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],[3,"routerLink"],["class","table-list-options",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n\n "),c.ɵɵelementStart(6,"div",1),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div"),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",2),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",3),c.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,A,5,3,"a",4),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,T,5,3,"button",5),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n\n"),c.ɵɵtemplate(24,M,9,6,"ng-container",6),c.ɵɵtext(25,"\n\n"),c.ɵɵtemplate(26,V,6,2,"ng-container",6),c.ɵɵpipe(27,"search"),c.ɵɵtext(28,"\n\n"),c.ɵɵtemplate(29,N,0,0,"ng-template",null,7,c.ɵɵtemplateRefExtractor),c.ɵɵtext(31,"\n")),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,8,"clients")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,10,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(15,12,"search")),c.ɵɵproperty("ngModel",t.searchText),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.manageOrganizations),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.manageOrganizations&&t.showAddExisting),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&c.ɵɵpipeBind4(27,14,t.clients,t.searchText,"organizationName","id")))},directives:[b.DefaultValueAccessor,b.NgControlStatus,b.NgModel,w.NgIf,d.RouterLinkWithHref,w.NgForOf,C.AvatarComponent,I.A11yTitleDirective,E.StopClickDirective],pipes:[P.I18nPipe,O.SearchPipe],encapsulation:2})},53402:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CreateOrganizationComponent=void 0;n(68012);const r=n(28360),o=n(32621),a=n(68012),s=n(28360),l=n(99729);class c{constructor(e){this.route=e}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId}))))}}t.CreateOrganizationComponent=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵdirectiveInject(a.ActivatedRoute))},c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["app-create-organization"]],viewQuery:function(e,t){if(1&e&&o.ɵɵviewQuery(r.OrganizationPlansComponent,7),2&e){let e;o.ɵɵqueryRefresh(e=o.ɵɵloadQuery())&&(t.orgPlansComponent=e.first)}},decls:13,vars:7,consts:[[1,"page-header"],[3,"providerId"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelement(11,"app-organization-plans",1),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newClientOrganization")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,5,"newClientOrganizationDesc")),o.ɵɵadvance(3),o.ɵɵproperty("providerId",t.providerId))},directives:[s.OrganizationPlansComponent],pipes:[l.I18nPipe],encapsulation:2})},82074:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsGuard=void 0;n(68012),n(68291);const r=n(47880),o=n(32621),a=n(68291),s=n(68012);class l{constructor(e,t){this.providerService=e,this.router=t}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.providerService.get(e.params.providerId),n=null==e.data?null:e.data.permissions;return!!(-1!==n.indexOf(r.Permissions.AccessEventLogs)&&t.canAccessEventLogs||-1!==n.indexOf(r.Permissions.ManageProvider)&&t.isProviderAdmin||-1!==n.indexOf(r.Permissions.ManageUsers)&&t.canManageUsers)||(this.router.navigate(["/providers",t.id]),!1)}))}}t.PermissionsGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.ProviderService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},60261:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderGuard=void 0;n(68012),n(51554),n(73828),n(68291);const r=n(32621),o=n(68012),a=n(73828),s=n(51554),l=n(68291);class c{constructor(e,t,n,i){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.providerService=i}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.providerService.get(e.params.providerId);return null==t?(this.router.navigate(["/"]),!1):!(!t.isProviderAdmin&&!t.enabled)||(this.platformUtilsService.showToast("error",null,this.i18nService.t("providerIsDisabled")),this.router.navigate(["/"]),!1)}))}}t.ProviderGuard=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵinject(o.Router),r.ɵɵinject(a.PlatformUtilsService),r.ɵɵinject(s.I18nService),r.ɵɵinject(l.ProviderService))},c.ɵprov=r.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},34221:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptProviderComponent=void 0;n(68012),n(91674),n(51554),n(73828),n(73569);const r=n(82900),o=n(50009),a=n(32621),s=n(68012),l=n(51554),c=n(73569),d=n(91674),p=n(73828),u=n(57490),m=n(99729);function h(e,t){1&e&&(a.ɵɵelementStart(0,"div",2),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",3),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",4),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",5),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",6),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))}const v=function(e){return{email:e}};function f(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",8),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",9),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",10),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",11),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",12),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"p",4),a.ɵɵtext(15),a.ɵɵelementStart(16,"strong",13),a.ɵɵtext(17),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"p"),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelement(24,"hr"),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"div",14),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"a",15),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"a",16),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,8,"joinProvider")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",e.providerName,"\n "),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.email),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,10,"joinProviderDesc")),a.ɵɵadvance(7),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(16,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,12,"logIn"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(18,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(34,14,"createAccount"),"\n ")}}class g extends o.BaseAcceptComponent{constructor(e,t,n,i,r,o){super(e,o,t,n,i),this.apiService=r,this.failedMessage="providerInviteAcceptFailed",this.requiredParameters=["providerId","providerUserId","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new r.ProviderUserAcceptRequest;t.token=e.token,yield this.apiService.postProviderUserAccept(e.providerId,e.providerUserId,t),this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("providerInviteAcceptedDesc"),{timeout:1e4}),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.providerName=e.providerName}))}}t.AcceptProviderComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(c.StateService),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.PlatformUtilsService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["app-accept-provider"]],features:[a.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-block","mt-2"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,h,17,6,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,f,41,20,"div",1),a.ɵɵtext(3,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[u.NgIf,s.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},48620:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkConfirmComponent=void 0;const r=n(72418),o=n(64279),a=n(69316),s=n(61692),l=n(32621),c=n(8863),d=n(57490),p=n(51626),u=n(15370),m=n(99729),h=n(52080);function v(e,t){1&e&&(l.ɵɵelementStart(0,"div",15),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,4,"loading"),"\n "))}function f(e,t){1&e&&(l.ɵɵelementStart(0,"app-callout",17),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function g(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function y(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,y,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",n.fingerprints.get(e.id),"\n ")}}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,S,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵpipe(16,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(16,9,"bulkFilteredMessage"),"\n ")}}function w(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementStart(5,"a",19),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"table",20),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"thead"),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"tr"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"th",21),l.ɵɵtext(17),l.ɵɵpipe(18,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"th"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,x,17,9,"tr",22),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,b,18,11,"tr",22),l.ɵɵtext(29,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,6,"fingerprintEnsureIntegrityVerify"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(7,8,"learnMore"),""),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(18,10,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,12,"fingerprint")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.excludedUsers)}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit,t=l.ɵɵnextContext(2);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function E(e,t){1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,C,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵtemplate(14,I,2,1,"td",11),l.ɵɵtext(15,"\n "),l.ɵɵtemplate(16,E,3,3,"td",11),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",n.statuses.has(e.id)),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function O(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"table",20),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"thead"),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"tr"),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"th",21),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"th"),l.ɵɵtext(13),l.ɵɵpipe(14,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵtemplate(18,P,18,10,"tr",22),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,3,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(14,5,"status")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers)}}function k(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span"),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,3,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,5,"confirm"))}}class A extends s.BulkConfirmComponent{isAccepted(e){return e.status===r.ProviderUserStatusType.Accepted}getPublicKeys(){return i(this,void 0,void 0,(function*(){const e=new a.ProviderUserBulkRequest(this.filteredUsers.map((e=>e.id)));return yield this.apiService.postProviderUsersPublicKey(this.providerId,e)}))}getCryptoKey(){return this.cryptoService.getProviderKey(this.providerId)}postConfirmRequest(e){return i(this,void 0,void 0,(function*(){const t=new o.ProviderUserBulkConfirmRequest(e);return yield this.apiService.postProviderUserBulkConfirm(this.providerId,t)}))}}t.BulkConfirmComponent=A,A.ɵfac=function(){let e;return function(t){return(e||(e=l.ɵɵgetInheritedFactory(A)))(t||A)}}(),A.ɵcmp=l.ɵɵdefineComponent({type:A,selectors:[["ng-component"]],inputs:{providerId:"providerId"},features:[l.ɵɵInheritDefinitionFeature],decls:45,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","danger"],["type","error"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",5),l.ɵɵpipe(13,"i18n"),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"span",6),l.ɵɵtext(16,"×"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",7),l.ɵɵtext(21,"\n "),l.ɵɵtemplate(22,v,6,6,"div",8),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,f,3,3,"app-callout",9),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,g,2,1,"app-callout",10),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,w,31,14,"ng-container",11),l.ɵɵtext(29,"\n "),l.ɵɵtemplate(30,O,21,7,"ng-container",11),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",12),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,k,9,7,"button",13),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"button",14),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,9,"confirmUsers"),"\n "),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(13,11,"close")),l.ɵɵadvance(10),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.filteredUsers.length<=0),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.error),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.done),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&t.done),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",!t.done),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(39,13,"close"),"\n "))},directives:[c.A11yTitleDirective,d.NgIf,p.CalloutComponent,d.NgForOf,u.AvatarComponent],pipes:[m.I18nPipe,h.UserNamePipe],encapsulation:2})},48382:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRemoveComponent=void 0;const r=n(69316),o=n(37131),a=n(32621),s=n(8863),l=n(57490),c=n(51626),d=n(15370),p=n(99729),u=n(52080);function m(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",14),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"app-callout",15),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function v(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",20),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"removeUsersWarning"),"\n "))}function f(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",24),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}function g(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"app-avatar",22),a.ɵɵpipe(5,"userName"),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"td"),a.ɵɵtext(10),a.ɵɵtemplate(11,f,2,1,"small",23),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵadvance(4),a.ɵɵproperty("data",a.ɵɵpipeBind1(5,6,e))("email",e.email)("circle",!0)("fontSize",14),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",e.email,"\n "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.name)}}function y(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,v,3,3,"app-callout",16),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"table",17),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"thead"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"tr"),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"th",18),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,g,14,8,"tr",19),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.users.length>0&&!e.error),a.ɵɵadvance(9),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,3,"user")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",e.users)}}function x(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",24),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(2);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function b(e,t){1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"app-avatar",22),a.ɵɵpipe(5,"userName"),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"td"),a.ɵɵtext(10),a.ɵɵtemplate(11,x,2,1,"small",23),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,S,2,1,"td",10),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,b,3,3,"td",10),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("data",a.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",e.email,"\n "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.name),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",n.statuses.has(e.id)),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function C(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"table",17),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"thead"),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"tr"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"th",18),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"th"),a.ɵɵtext(13),a.ɵɵpipe(14,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵtemplate(18,w,18,10,"tr",19),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(9),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,3,"user")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(14,5,"status")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",e.users)}}function I(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",25),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",26),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span"),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,5,"removeUsers"))}}class E extends o.BulkRemoveComponent{deleteUsers(){return i(this,void 0,void 0,(function*(){const e=new r.ProviderUserBulkRequest(this.users.map((e=>e.id)));return yield this.apiService.deleteManyProviderUsers(this.providerId,e)}))}}t.BulkRemoveComponent=E,E.ɵfac=function(){let e;return function(t){return(e||(e=a.ɵɵgetInheritedFactory(E)))(t||E)}}(),E.ɵcmp=a.ɵɵdefineComponent({type:E,selectors:[["ng-component"]],inputs:{providerId:"providerId"},features:[a.ɵɵInheritDefinitionFeature],decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","danger"],["type","error"],["type","warning",4,"ngIf"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["type","warning"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",2),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",3),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"h2",4),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"button",5),a.ɵɵpipe(13,"i18n"),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"span",6),a.ɵɵtext(16,"×"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"div",7),a.ɵɵtext(21,"\n "),a.ɵɵtemplate(22,m,3,3,"app-callout",8),a.ɵɵtext(23,"\n "),a.ɵɵtemplate(24,h,2,1,"app-callout",9),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,y,19,5,"ng-container",10),a.ɵɵtext(27,"\n "),a.ɵɵtemplate(28,C,21,7,"ng-container",10),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",11),a.ɵɵtext(32,"\n "),a.ɵɵtemplate(33,I,9,7,"button",12),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"button",13),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n")),2&e&&(a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(10,8,"removeUsers"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(13,10,"close")),a.ɵɵadvance(10),a.ɵɵproperty("ngIf",t.users.length<=0),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.error),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.done),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.done),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!t.done&&t.users.length>0),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(37,12,"close"),"\n "))},directives:[s.A11yTitleDirective,l.NgIf,c.CalloutComponent,l.NgForOf,d.AvatarComponent],pipes:[p.I18nPipe,u.UserNamePipe],encapsulation:2})},42378:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventsComponent=void 0;n(68012),n(52080),n(91674),n(97445),n(51554),n(36631),n(73828),n(68291);const r=n(75512),o=(n(3202),n(32621)),a=n(91674),s=n(68012),l=n(3202),c=n(51554),d=n(68291),p=n(97445),u=n(73828),m=n(36631),h=n(52080),v=n(96832),f=n(56820),g=n(57490),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",17),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noEventsInList")))}function b(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td"),o.ɵɵtext(3),o.ɵɵpipe(4,"date"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"td"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",26),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"span",17),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"td"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",27),o.ɵɵtext(17),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelement(20,"td",28),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(4,11,e.date,"medium")),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),o.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",e.userEmail),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.userName),o.ɵɵadvance(3),o.ɵɵproperty("innerHTML",e.message,o.ɵɵsanitizeHtml)}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"thead"),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"tr"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"th",21),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",22),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"span",17),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"th",23),o.ɵɵtext(18),o.ɵɵpipe(19,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"th",24),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"tbody"),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,b,22,14,"tr",25),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"timestamp")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"device")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(19,9,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"event")),o.ɵɵadvance(7),o.ɵɵproperty("ngForOf",e.events)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",29,30),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).loadEvents(!1)})),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",31),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"span"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(4,4,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"loadMore"))}}function I(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,S,3,3,"p",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,w,32,13,"table",18),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,C,10,8,"button",19),o.ɵɵtext(7,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.events||!e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.events&&e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.continuationToken)}}const E=function(e){return{"bwi-spin":e}},P=function(e){return{loading:e}};class O extends r.BaseEventsComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(n,i,o,a,l),this.apiService=e,this.route=t,this.providerService=r,this.router=s,this.userNamePipe=c,this.exportFileName="provider-events",this.providerUsersUserIdMap=new Map,this.providerUsersIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;const t=yield this.providerService.get(this.providerId);null!=t&&t.useEvents?yield this.load():this.router.navigate(["/providers",this.providerId])}))))}))}load(){return i(this,void 0,void 0,(function*(){(yield this.apiService.getProviderUsers(this.providerId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.providerUsersIdMap.set(e.id,{name:t,email:e.email}),this.providerUsersUserIdMap.set(e.userId,{name:t,email:e.email})})),yield this.loadEvents(!0),this.loaded=!0}))}requestEvents(e,t,n){return this.apiService.getEventsProvider(this.providerId,e,t,n)}getUserName(e,t){return null!=t&&this.providerUsersUserIdMap.has(t)?this.providerUsersUserIdMap.get(t):null}}t.EventsComponent=O,O.ɵfac=function(e){return new(e||O)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.ActivatedRoute),o.ɵɵdirectiveInject(l.EventService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.ProviderService),o.ɵɵdirectiveInject(p.ExportService),o.ɵɵdirectiveInject(u.PlatformUtilsService),o.ɵɵdirectiveInject(s.Router),o.ɵɵdirectiveInject(m.LogService),o.ɵɵdirectiveInject(h.UserNamePipe))},O.ɵcmp=o.ɵɵdefineComponent({type:O,selectors:[["provider-events"]],features:[o.ɵɵInheritDefinitionFeature],decls:57,vars:35,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"d-inline",3,"appApiAction"],["refreshForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["exportForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","btn-submit","manual","ml-3",3,"ngClass","disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["width","150",1,"border-top-0"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["aria-hidden","true",3,"title"],[3,"title"],[3,"innerHTML"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",1),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",2),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",3),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",4),o.ɵɵlistener("ngModelChange",(function(e){return t.start=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"span",5),o.ɵɵtext(18,"-"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"label",6),o.ɵɵtext(21),o.ɵɵpipe(22,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"input",7),o.ɵɵlistener("ngModelChange",(function(e){return t.end=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"form",8,9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"button",10),o.ɵɵlistener("click",(function(){return t.loadEvents(!0)})),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",11),o.ɵɵtext(34),o.ɵɵpipe(35,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"form",8,12),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",13),o.ɵɵlistener("click",(function(){return t.exportEvents()})),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",14),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵtemplate(53,x,9,6,"ng-container",15),o.ɵɵtext(54,"\n"),o.ɵɵtemplate(55,I,8,3,"ng-container",15),o.ɵɵtext(56,"\n")),2&e){const e=o.ɵɵreference(29),n=o.ɵɵreference(39);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"eventLogs")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,19,"startDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(15,21,"startDate")),o.ɵɵproperty("ngModel",t.start),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(22,23,"endDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(25,25,"endDate")),o.ɵɵproperty("ngModel",t.end),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.refreshPromise),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loaded&&e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(31,E,t.loaded&&e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(35,27,"refresh"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.exportPromise),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(33,P,n.loading))("disabled",t.loaded&&n.loading||t.dirtyDates),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"export")),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded)}},directives:[v.DefaultValueAccessor,v.NgControlStatus,v.NgModel,v.ɵNgNoValidate,v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.NgClass,g.NgIf,g.NgForOf],pipes:[y.I18nPipe,g.DatePipe],encapsulation:2})},13346:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ManageComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(57490),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementStart(0,"a",10),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"people"),"\n "))}function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",11),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"eventLogs"),"\n "))}function p(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",5),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",6),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",7),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,3,3,"a",8),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,d,3,3,"a",9),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"manage")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.provider.canManageUsers),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.provider.canAccessEventLogs&&e.accessEvents)}}class u{constructor(e,t){this.route=e,this.providerService=t,this.accessEvents=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.provider=yield this.providerService.get(e.providerId),this.accessEvents=this.provider.useEvents}))))}}t.ManageComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["provider-manage"]],decls:16,vars:1,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","people","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","events","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","people","routerLinkActive","active",1,"list-group-item"],["routerLink","events","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,p,13,5,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelement(11,"router-outlet"),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(6),r.ɵɵproperty("ngIf",t.provider))},directives:[s.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[l.I18nPipe],encapsulation:2})},71601:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PeopleComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(73828),n(68291),n(60421),n(73569),n(72418)),s=n(30185),l=n(69316),c=n(98407),d=n(1833),p=n(33747),u=n(87876),m=n(48620),h=n(48382),v=n(20913),f=n(32621),g=n(91674),y=n(68012),x=n(51554),S=n(64684),b=n(73828),w=n(85714),C=n(60421),I=n(47594),E=n(36631),P=n(50154),O=n(52080),k=n(73569),A=n(68291),T=n(57490),M=n(96832),B=n(8863),D=n(1142),R=n(51626),F=n(39159),U=n(15370),V=n(99729),N=n(50154),_=n(52080),j=["addEdit"],z=["groupsTemplate"],H=["eventsTemplate"],L=["bulkStatusTemplate"],K=["bulkConfirmTemplate"],q=["bulkRemoveTemplate"];function G(e,t){if(1&e&&(f.ɵɵelementStart(0,"span",30),f.ɵɵtext(1),f.ɵɵelementEnd()),2&e){const e=f.ɵɵnextContext();f.ɵɵadvance(1),f.ɵɵtextInterpolate(e.allCount)}}function W(e,t){if(1&e&&(f.ɵɵelementStart(0,"span",30),f.ɵɵtext(1),f.ɵɵelementEnd()),2&e){const e=f.ɵɵnextContext();f.ɵɵadvance(1),f.ɵɵtextInterpolate(e.invitedCount)}}function $(e,t){if(1&e&&(f.ɵɵelementStart(0,"span",31),f.ɵɵtext(1),f.ɵɵelementEnd()),2&e){const e=f.ɵɵnextContext();f.ɵɵadvance(1),f.ɵɵtextInterpolate(e.acceptedCount)}}function Y(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"button",32),f.ɵɵlistener("click",(function(){f.ɵɵrestoreView(e);return f.ɵɵnextContext().bulkConfirm()})),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",33),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd()}2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(4,1,"confirmSelected"),"\n "))}function Q(e,t){1&e&&(f.ɵɵelementContainerStart(0),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",34),f.ɵɵpipe(3,"i18n"),f.ɵɵtext(4,"\n "),f.ɵɵelementStart(5,"span",35),f.ɵɵtext(6),f.ɵɵpipe(7,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(8,"\n"),f.ɵɵelementContainerEnd()),2&e&&(f.ɵɵadvance(2),f.ɵɵpropertyInterpolate("title",f.ɵɵpipeBind1(3,2,"loading")),f.ɵɵadvance(4),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(7,4,"loading")))}function J(e,t){1&e&&(f.ɵɵelementStart(0,"p"),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"noUsersInList")))}function Z(e,t){1&e&&(f.ɵɵelementStart(0,"app-callout",39),f.ɵɵpipe(1,"i18n"),f.ɵɵtext(2),f.ɵɵpipe(3,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵpropertyInterpolate("title",f.ɵɵpipeBind1(1,2,"confirmUsers")),f.ɵɵadvance(2),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(3,4,"providerUsersNeedConfirmed"),"\n "))}function X(e,t){1&e&&(f.ɵɵelementStart(0,"span",56),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"invited")))}function ee(e,t){1&e&&(f.ɵɵelementStart(0,"span",57),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"accepted")))}function te(e,t){if(1&e&&(f.ɵɵelementStart(0,"small",58),f.ɵɵtext(1),f.ɵɵelementEnd()),2&e){const e=f.ɵɵnextContext().$implicit;f.ɵɵadvance(1),f.ɵɵtextInterpolate(e.name)}}function ne(e,t){1&e&&(f.ɵɵelementContainerStart(0),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",59),f.ɵɵpipe(3,"i18n"),f.ɵɵtext(4,"\n "),f.ɵɵelementStart(5,"span",35),f.ɵɵtext(6),f.ɵɵpipe(7,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(8,"\n "),f.ɵɵelementContainerEnd()),2&e&&(f.ɵɵadvance(2),f.ɵɵpropertyInterpolate("title",f.ɵɵpipeBind1(3,2,"userUsingTwoStep")),f.ɵɵadvance(4),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(7,4,"userUsingTwoStep")))}function ie(e,t){1&e&&(f.ɵɵelementStart(0,"span"),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"providerAdmin")))}function re(e,t){1&e&&(f.ɵɵelementStart(0,"span"),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"serviceUser")))}function oe(e,t){1&e&&(f.ɵɵelementStart(0,"span"),f.ɵɵtext(1),f.ɵɵpipe(2,"i18n"),f.ɵɵelementEnd()),2&e&&(f.ɵɵadvance(1),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(2,1,"custom")))}function ae(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"a",60),f.ɵɵlistener("click",(function(){f.ɵɵrestoreView(e);const t=f.ɵɵnextContext().$implicit;return f.ɵɵnextContext(3).reinvite(t)})),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",14),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd()}2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function se(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"a",61),f.ɵɵlistener("click",(function(){f.ɵɵrestoreView(e);const t=f.ɵɵnextContext().$implicit;return f.ɵɵnextContext(3).confirm(t)})),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",33),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd()}2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function le(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"a",60),f.ɵɵlistener("click",(function(){f.ɵɵrestoreView(e);const t=f.ɵɵnextContext().$implicit;return f.ɵɵnextContext(3).groups(t)})),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",62),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd()}2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(4,1,"groups"),"\n "))}function ce(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"a",60),f.ɵɵlistener("click",(function(){f.ɵɵrestoreView(e);const t=f.ɵɵnextContext().$implicit;return f.ɵɵnextContext(3).events(t)})),f.ɵɵtext(1,"\n "),f.ɵɵelement(2,"i",63),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd()}2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function de(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementStart(0,"tr"),f.ɵɵtext(1,"\n "),f.ɵɵelementStart(2,"td",40),f.ɵɵlistener("click",(function(){const t=f.ɵɵrestoreView(e).$implicit;return f.ɵɵnextContext(3).checkUser(t)})),f.ɵɵtext(3,"\n "),f.ɵɵelementStart(4,"input",41),f.ɵɵlistener("ngModelChange",(function(t){return f.ɵɵrestoreView(e).$implicit.checked=t})),f.ɵɵelementEnd(),f.ɵɵtext(5,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(6,"\n "),f.ɵɵelementStart(7,"td",42),f.ɵɵtext(8,"\n "),f.ɵɵelementStart(9,"app-avatar",43),f.ɵɵpipe(10,"userName"),f.ɵɵtext(11,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(12,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(13,"\n "),f.ɵɵelementStart(14,"td"),f.ɵɵtext(15,"\n "),f.ɵɵelementStart(16,"a",44),f.ɵɵlistener("click",(function(){const t=f.ɵɵrestoreView(e).$implicit;return f.ɵɵnextContext(3).edit(t)})),f.ɵɵtext(17),f.ɵɵelementEnd(),f.ɵɵtext(18,"\n "),f.ɵɵtemplate(19,X,3,3,"span",45),f.ɵɵtext(20,"\n "),f.ɵɵtemplate(21,ee,3,3,"span",46),f.ɵɵtext(22,"\n "),f.ɵɵtemplate(23,te,2,1,"small",47),f.ɵɵtext(24,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(25,"\n "),f.ɵɵelementStart(26,"td"),f.ɵɵtext(27,"\n "),f.ɵɵtemplate(28,ne,9,6,"ng-container",23),f.ɵɵtext(29,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(30,"\n "),f.ɵɵelementStart(31,"td"),f.ɵɵtext(32,"\n "),f.ɵɵtemplate(33,ie,3,3,"span",23),f.ɵɵtext(34,"\n "),f.ɵɵtemplate(35,re,3,3,"span",23),f.ɵɵtext(36,"\n "),f.ɵɵtemplate(37,oe,3,3,"span",23),f.ɵɵtext(38,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(39,"\n "),f.ɵɵelementStart(40,"td",48),f.ɵɵtext(41,"\n "),f.ɵɵelementStart(42,"div",49),f.ɵɵtext(43,"\n "),f.ɵɵelementStart(44,"button",50),f.ɵɵpipe(45,"i18n"),f.ɵɵtext(46,"\n "),f.ɵɵelement(47,"i",51),f.ɵɵtext(48,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(49,"\n "),f.ɵɵelementStart(50,"div",52),f.ɵɵtext(51,"\n "),f.ɵɵtemplate(52,ae,5,3,"a",53),f.ɵɵtext(53,"\n "),f.ɵɵtemplate(54,se,5,3,"a",54),f.ɵɵtext(55,"\n "),f.ɵɵtemplate(56,le,5,3,"a",53),f.ɵɵtext(57,"\n "),f.ɵɵtemplate(58,ce,5,3,"a",53),f.ɵɵtext(59,"\n "),f.ɵɵelementStart(60,"a",55),f.ɵɵlistener("click",(function(){const t=f.ɵɵrestoreView(e).$implicit;return f.ɵɵnextContext(3).remove(t)})),f.ɵɵtext(61,"\n "),f.ɵɵelement(62,"i",17),f.ɵɵtext(63),f.ɵɵpipe(64,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(65,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(66,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(67,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(68,"\n "),f.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=f.ɵɵnextContext(3);f.ɵɵadvance(4),f.ɵɵproperty("ngModel",e.checked),f.ɵɵadvance(5),f.ɵɵproperty("data",f.ɵɵpipeBind1(10,19,e))("email",e.email)("circle",!0)("fontSize",14),f.ɵɵadvance(8),f.ɵɵtextInterpolate(e.email),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.name),f.ɵɵadvance(5),f.ɵɵproperty("ngIf",e.twoFactorEnabled),f.ɵɵadvance(5),f.ɵɵproperty("ngIf",e.type===n.userType.ProviderAdmin),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.type===n.userType.ServiceUser),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.type===n.userType.Custom),f.ɵɵadvance(7),f.ɵɵpropertyInterpolate("appA11yTitle",f.ɵɵpipeBind1(45,21,"options")),f.ɵɵadvance(8),f.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",n.accessGroups),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",n.accessEvents&&e.status===n.userStatusType.Confirmed),f.ɵɵadvance(5),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(64,23,"remove"),"\n ")}}function pe(e,t){if(1&e){const e=f.ɵɵgetCurrentView();f.ɵɵelementContainerStart(0),f.ɵɵtext(1,"\n "),f.ɵɵtemplate(2,Z,4,6,"app-callout",36),f.ɵɵtext(3,"\n "),f.ɵɵelementStart(4,"table",37),f.ɵɵlistener("scrolled",(function(){f.ɵɵrestoreView(e);return f.ɵɵnextContext(2).loadMore()})),f.ɵɵtext(5,"\n "),f.ɵɵelementStart(6,"tbody"),f.ɵɵtext(7,"\n "),f.ɵɵtemplate(8,de,69,25,"tr",38),f.ɵɵtext(9,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(10,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(11,"\n "),f.ɵɵelementContainerEnd()}if(2&e){const e=f.ɵɵnextContext().ngIf,t=f.ɵɵnextContext();f.ɵɵadvance(2),f.ɵɵproperty("ngIf",t.showConfirmUsers),f.ɵɵadvance(2),f.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),f.ɵɵadvance(4),f.ɵɵproperty("ngForOf",e)}}function ue(e,t){if(1&e&&(f.ɵɵelementContainerStart(0),f.ɵɵtext(1,"\n "),f.ɵɵtemplate(2,J,3,3,"p",23),f.ɵɵtext(3,"\n "),f.ɵɵtemplate(4,pe,12,4,"ng-container",23),f.ɵɵtext(5,"\n"),f.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;f.ɵɵadvance(2),f.ɵɵproperty("ngIf",!e.length),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",e.length)}}function me(e,t){}function he(e,t){}function ve(e,t){}function fe(e,t){}function ge(e,t){}function ye(e,t){}const xe=function(e){return{active:e}},Se=function(e,t){return[e,t,"name","email","id"]};class be extends d.BasePeopleComponent{constructor(e,t,n,i,r,o,l,c,d,p,u,m,h,v){super(e,c,n,r,o,d,i,p,u,m,h),this.route=t,this.router=l,this.providerService=v,this.userType=s.ProviderUserType,this.userStatusType=a.ProviderUserStatusType,this.accessEvents=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;const t=yield this.providerService.get(this.providerId);t.canManageUsers?(this.accessEvents=t.useEvents,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.searchText=e.search,null!=e.viewEvents){const t=this.users.filter((t=>t.id===e.viewEvents));t.length>0&&t[0].status===a.ProviderUserStatusType.Confirmed&&this.events(t[0])}}))))):this.router.navigate(["../"],{relativeTo:this.route})}))))}getUsers(){return this.apiService.getProviderUsers(this.providerId)}deleteUser(e){return this.apiService.deleteProviderUser(this.providerId,e)}reinviteUser(e){return this.apiService.postProviderUserReinvite(this.providerId,e)}confirmUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getProviderKey(this.providerId),i=yield this.cryptoService.rsaEncrypt(n.key,t.buffer),r=new c.ProviderUserConfirmRequest;r.key=i.encryptedString,yield this.apiService.postProviderUserConfirm(this.providerId,e.id,r)}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(v.UserAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.providerId=this.providerId,n.providerUserId=null!=e?e.id:null,n.onSavedUser.subscribe((()=>{t.close(),this.load()})),n.onDeletedUser.subscribe((()=>{t.close(),this.removeUser(e)}))}))}))}events(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(u.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=this.userNamePipe.transform(e),t.providerId=this.providerId,t.entityId=e.id,t.showUser=!1,t.entity="user"}))}))}bulkRemove(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(h.BulkRemoveComponent,this.bulkRemoveModalRef,(e=>{e.providerId=this.providerId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}bulkReinvite(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const e=this.getCheckedUsers(),t=e.filter((e=>e.status===a.ProviderUserStatusType.Invited));if(t.length<=0)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("noSelectedUsersApplicable"));else{try{const n=new l.ProviderUserBulkRequest(t.map((e=>e.id))),i=this.apiService.postManyProviderUserReinvite(this.providerId,n);this.showBulkStatus(e,t,i,this.i18nService.t("bulkReinviteMessage"))}catch(n){this.validationService.showError(n)}this.actionPromise=null}}))}bulkConfirm(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(m.BulkConfirmComponent,this.bulkConfirmModalRef,(e=>{e.providerId=this.providerId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}showBulkStatus(e,t,n,r){return i(this,void 0,void 0,(function*(){const[i,o]=yield this.modalService.openViewRef(p.BulkStatusComponent,this.bulkStatusModalRef,(e=>{e.loading=!0}));let a=!1;i.onShown.subscribe((()=>{a&&i.close()}));try{const a=yield n;if(i){const n=a.data.filter((e=>""!==e.error)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t.error})),{}),i=t.reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t})),{});o.users=e.map((e=>{var t;let o=null!==(t=n[e.id])&&void 0!==t?t:r;return i.hasOwnProperty(e.id)||(o=this.i18nService.t("bulkFilteredMessage")),{user:e,error:n.hasOwnProperty(e.id),message:o}})),o.loading=!1}}catch(s){a=!0,i.close()}}))}}t.PeopleComponent=be,be.ɵfac=function(e){return new(e||be)(f.ɵɵdirectiveInject(g.ApiService),f.ɵɵdirectiveInject(y.ActivatedRoute),f.ɵɵdirectiveInject(x.I18nService),f.ɵɵdirectiveInject(S.ModalService),f.ɵɵdirectiveInject(b.PlatformUtilsService),f.ɵɵdirectiveInject(w.CryptoService),f.ɵɵdirectiveInject(y.Router),f.ɵɵdirectiveInject(C.SearchService),f.ɵɵdirectiveInject(I.ValidationService),f.ɵɵdirectiveInject(E.LogService),f.ɵɵdirectiveInject(P.SearchPipe),f.ɵɵdirectiveInject(O.UserNamePipe),f.ɵɵdirectiveInject(k.StateService),f.ɵɵdirectiveInject(A.ProviderService))},be.ɵcmp=f.ɵɵdefineComponent({type:be,selectors:[["provider-people"]],viewQuery:function(e,t){if(1&e&&(f.ɵɵviewQuery(j,7,r.ViewContainerRef),f.ɵɵviewQuery(z,7,r.ViewContainerRef),f.ɵɵviewQuery(H,7,r.ViewContainerRef),f.ɵɵviewQuery(L,7,r.ViewContainerRef),f.ɵɵviewQuery(K,7,r.ViewContainerRef),f.ɵɵviewQuery(q,7,r.ViewContainerRef)),2&e){let e;f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.addEditModalRef=e.first),f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.groupsModalRef=e.first),f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.eventsModalRef=e.first),f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.bulkStatusModalRef=e.first),f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.bulkConfirmModalRef=e.first),f.ɵɵqueryRefresh(e=f.ɵɵloadQuery())&&(t.bulkRemoveModalRef=e.first)}},features:[f.ɵɵInheritDefinitionFeature],decls:110,vars:61,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],["class","badge badge-pill badge-warning",4,"ngIf"],[1,"ml-3"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["appListDropdown","",1,"dropdown","ml-3"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["class","dropdown-item text-success","appStopClick","",3,"click",4,"ngIf"],["appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"dropdown-divider"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["eventsTemplate",""],["confirmTemplate",""],["bulkStatusTemplate",""],["bulkConfirmTemplate",""],["bulkRemoveTemplate",""],[1,"badge","badge-pill","badge-info"],[1,"badge","badge-pill","badge-warning"],["appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","info","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["type","info","icon","bwi bwi-check-circle",3,"title"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-lock",3,"title"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sitemap"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"]],template:function(e,t){1&e&&(f.ɵɵelementStart(0,"div",0),f.ɵɵtext(1,"\n "),f.ɵɵelementStart(2,"h1"),f.ɵɵtext(3),f.ɵɵpipe(4,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(5,"\n "),f.ɵɵelementStart(6,"div",1),f.ɵɵtext(7,"\n "),f.ɵɵelementStart(8,"div",2),f.ɵɵtext(9,"\n "),f.ɵɵelementStart(10,"button",3),f.ɵɵlistener("click",(function(){return t.filter(null)})),f.ɵɵtext(11),f.ɵɵpipe(12,"i18n"),f.ɵɵtemplate(13,G,2,1,"span",4),f.ɵɵtext(14,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(15,"\n "),f.ɵɵelementStart(16,"button",3),f.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Invited)})),f.ɵɵtext(17),f.ɵɵpipe(18,"i18n"),f.ɵɵtemplate(19,W,2,1,"span",4),f.ɵɵtext(20,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(21,"\n "),f.ɵɵelementStart(22,"button",3),f.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Accepted)})),f.ɵɵtext(23),f.ɵɵpipe(24,"i18n"),f.ɵɵtemplate(25,$,2,1,"span",5),f.ɵɵtext(26,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(27,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(28,"\n "),f.ɵɵelementStart(29,"div",6),f.ɵɵtext(30,"\n "),f.ɵɵelementStart(31,"label",7),f.ɵɵtext(32),f.ɵɵpipe(33,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(34,"\n "),f.ɵɵelementStart(35,"input",8),f.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),f.ɵɵpipe(36,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(37,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(38,"\n "),f.ɵɵelementStart(39,"div",9),f.ɵɵtext(40,"\n "),f.ɵɵelementStart(41,"button",10),f.ɵɵpipe(42,"i18n"),f.ɵɵtext(43,"\n "),f.ɵɵelement(44,"i",11),f.ɵɵtext(45,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(46,"\n "),f.ɵɵelementStart(47,"div",12),f.ɵɵtext(48,"\n "),f.ɵɵelementStart(49,"button",13),f.ɵɵlistener("click",(function(){return t.bulkReinvite()})),f.ɵɵtext(50,"\n "),f.ɵɵelement(51,"i",14),f.ɵɵtext(52),f.ɵɵpipe(53,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(54,"\n "),f.ɵɵtemplate(55,Y,5,3,"button",15),f.ɵɵtext(56,"\n "),f.ɵɵelementStart(57,"button",16),f.ɵɵlistener("click",(function(){return t.bulkRemove()})),f.ɵɵtext(58,"\n "),f.ɵɵelement(59,"i",17),f.ɵɵtext(60),f.ɵɵpipe(61,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(62,"\n "),f.ɵɵelement(63,"div",18),f.ɵɵtext(64,"\n "),f.ɵɵelementStart(65,"button",13),f.ɵɵlistener("click",(function(){return t.selectAll(!0)})),f.ɵɵtext(66,"\n "),f.ɵɵelement(67,"i",19),f.ɵɵtext(68),f.ɵɵpipe(69,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(70,"\n "),f.ɵɵelementStart(71,"button",13),f.ɵɵlistener("click",(function(){return t.selectAll(!1)})),f.ɵɵtext(72,"\n "),f.ɵɵelement(73,"i",20),f.ɵɵtext(74),f.ɵɵpipe(75,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(76,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(77,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(78,"\n "),f.ɵɵelementStart(79,"button",21),f.ɵɵlistener("click",(function(){return t.invite()})),f.ɵɵtext(80,"\n "),f.ɵɵelement(81,"i",22),f.ɵɵtext(82),f.ɵɵpipe(83,"i18n"),f.ɵɵelementEnd(),f.ɵɵtext(84,"\n "),f.ɵɵelementEnd(),f.ɵɵtext(85,"\n"),f.ɵɵelementEnd(),f.ɵɵtext(86,"\n"),f.ɵɵtemplate(87,Q,9,6,"ng-container",23),f.ɵɵtext(88,"\n"),f.ɵɵtemplate(89,ue,6,2,"ng-container",23),f.ɵɵpipe(90,"search"),f.ɵɵtext(91,"\n"),f.ɵɵtemplate(92,me,0,0,"ng-template",null,24,f.ɵɵtemplateRefExtractor),f.ɵɵtext(94,"\n"),f.ɵɵtemplate(95,he,0,0,"ng-template",null,25,f.ɵɵtemplateRefExtractor),f.ɵɵtext(97,"\n"),f.ɵɵtemplate(98,ve,0,0,"ng-template",null,26,f.ɵɵtemplateRefExtractor),f.ɵɵtext(100,"\n"),f.ɵɵtemplate(101,fe,0,0,"ng-template",null,27,f.ɵɵtemplateRefExtractor),f.ɵɵtext(103,"\n"),f.ɵɵtemplate(104,ge,0,0,"ng-template",null,28,f.ɵɵtemplateRefExtractor),f.ɵɵtext(106,"\n"),f.ɵɵtemplate(107,ye,0,0,"ng-template",null,29,f.ɵɵtemplateRefExtractor),f.ɵɵtext(109,"\n")),2&e&&(f.ɵɵadvance(3),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(4,22,"people")),f.ɵɵadvance(7),f.ɵɵproperty("ngClass",f.ɵɵpureFunction1(52,xe,null==t.status)),f.ɵɵadvance(1),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(12,24,"all"),"\n "),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",t.allCount),f.ɵɵadvance(3),f.ɵɵproperty("ngClass",f.ɵɵpureFunction1(54,xe,t.status==t.userStatusType.Invited)),f.ɵɵadvance(1),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(18,26,"invited"),"\n "),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",t.invitedCount),f.ɵɵadvance(3),f.ɵɵproperty("ngClass",f.ɵɵpureFunction1(56,xe,t.status==t.userStatusType.Accepted)),f.ɵɵadvance(1),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(24,28,"accepted"),"\n "),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",t.acceptedCount),f.ɵɵadvance(7),f.ɵɵtextInterpolate(f.ɵɵpipeBind1(33,30,"search")),f.ɵɵadvance(3),f.ɵɵpropertyInterpolate("placeholder",f.ɵɵpipeBind1(36,32,"search")),f.ɵɵproperty("ngModel",t.searchText),f.ɵɵadvance(6),f.ɵɵpropertyInterpolate("appA11yTitle",f.ɵɵpipeBind1(42,34,"options")),f.ɵɵadvance(11),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(53,36,"reinviteSelected"),"\n "),f.ɵɵadvance(3),f.ɵɵproperty("ngIf",t.showBulkConfirmUsers),f.ɵɵadvance(5),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(61,38,"remove"),"\n "),f.ɵɵadvance(8),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(69,40,"selectAll"),"\n "),f.ɵɵadvance(6),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(75,42,"unselectAll"),"\n "),f.ɵɵadvance(8),f.ɵɵtextInterpolate1("\n ",f.ɵɵpipeBind1(83,44,"inviteUser"),"\n "),f.ɵɵadvance(5),f.ɵɵproperty("ngIf",t.loading),f.ɵɵadvance(2),f.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedUsers:f.ɵɵpipeBindV(90,46,f.ɵɵpureFunction2(58,Se,t.users,t.searchText)))))},directives:[T.NgClass,T.NgIf,M.DefaultValueAccessor,M.NgControlStatus,M.NgModel,B.A11yTitleDirective,D.StopClickDirective,T.NgForOf,R.CalloutComponent,M.CheckboxControlValueAccessor,F.StopPropDirective,U.AvatarComponent],pipes:[V.I18nPipe,N.SearchPipe,_.UserNamePipe],encapsulation:2})},20913:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(30185)),a=n(96926),s=n(7896),l=n(731),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),f=n(57490),g=n(8863),y=n(99729);function x(e,t){if(1&e&&(c.ɵɵelementStart(0,"small",16),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function S(e,t){1&e&&(c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",18),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",19),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"p"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",28),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"label",29),c.ɵɵtext(9),c.ɵɵpipe(10,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",30),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).emails=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"small",16),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,4,"providerInviteUserDesc")),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(10,6,"email")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.emails),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(16,8,"inviteMultipleEmailDesc","20"))}}function w(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,b,19,11,"ng-container",20),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"h3"),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementStart(7,"a",21),c.ɵɵpipe(8,"i18n"),c.ɵɵtext(9,"\n "),c.ɵɵelement(10,"i",22),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",23),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"input",24),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().type=t})),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"label",25),c.ɵɵtext(19),c.ɵɵpipe(20,"i18n"),c.ɵɵelementStart(21,"small"),c.ɵɵtext(22),c.ɵɵpipe(23,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementStart(27,"div",23),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"input",26),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().type=t})),c.ɵɵelementEnd(),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"label",27),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementStart(34,"small"),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.editMode),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(6,11,"userType"),"\n "),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(8,13,"learnMore")),c.ɵɵadvance(9),c.ɵɵproperty("value",e.userType.ServiceUser)("ngModel",e.type),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(20,15,"serviceUser"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(23,17,"serviceUserDesc")),c.ɵɵadvance(7),c.ɵɵproperty("value",e.userType.ProviderAdmin)("ngModel",e.type),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(33,19,"providerAdmin"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(36,21,"providerAdminDesc"))}}function C(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",31,32),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",33),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",34),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext();c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}class I{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedUser=new r.EventEmitter,this.onDeletedUser=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.type=o.ProviderUserType.ServiceUser,this.permissions=new a.PermissionsApi,this.showCustom=!1,this.access="selected",this.userType=o.ProviderUserType}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.providerUserId,this.editMode){this.editMode=!0,this.title=this.i18nService.t("editUser");try{const e=yield this.apiService.getProviderUser(this.providerId,this.providerUserId);this.type=e.type}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteUser");this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{if(this.editMode){const e=new l.ProviderUserUpdateRequest;e.type=this.type,this.formPromise=this.apiService.putProviderUser(this.providerId,this.providerUserId,e)}else{const e=new s.ProviderUserInviteRequest;e.emails=this.emails.trim().split(/\s*,\s*/),e.type=this.type,this.formPromise=this.apiService.postProviderUserInvite(this.providerId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSavedUser.emit()}catch(e){this.logService.error(e)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeUserConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteProviderUser(this.providerId,this.providerUserId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.name)),this.onDeletedUser.emit()}catch(e){this.logService.error(e)}}))}}t.UserAddEditComponent=I,I.ɵfac=function(e){return new(e||I)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},I.ɵcmp=c.ɵɵdefineComponent({type:I,selectors:[["provider-user-add-edit"]],inputs:{name:"name",providerUserId:"providerUserId",providerId:"providerId"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:51,vars:19,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/provider-users/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","userTypeServiceUser",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeServiceUser",1,"form-check-label"],["type","radio","name","userType","id","userTypeProviderAdmin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeProviderAdmin",1,"form-check-label"],[1,"form-group","mb-4"],["for","emails"],["id","emails","type","text","name","Emails","required","","appAutoFocus","",1,"form-control",3,"ngModel","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵtemplate(11,x,2,1,"small",6),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"button",7),c.ɵɵpipe(15,"i18n"),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"span",8),c.ɵɵtext(18,"×"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,S,9,6,"div",9),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,w,40,23,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",10),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"button",11),c.ɵɵtext(29,"\n "),c.ɵɵelement(30,"i",12),c.ɵɵpipe(31,"i18n"),c.ɵɵtext(32,"\n "),c.ɵɵelementStart(33,"span"),c.ɵɵtext(34),c.ɵɵpipe(35,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"button",13),c.ɵɵtext(39),c.ɵɵpipe(40,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(41,"\n "),c.ɵɵelementStart(42,"div",14),c.ɵɵtext(43,"\n "),c.ɵɵtemplate(44,C,9,10,"button",15),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",t.title,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",t.name),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(15,11,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(31,13,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(35,15,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(40,17,"cancel"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.editMode)}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,f.NgIf,g.A11yTitleDirective,h.RadioControlValueAccessor,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,h.RequiredValidator],pipes:[y.I18nPipe],encapsulation:2})},42204:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersLayoutComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(53280),l=n(57490),c=n(59964),d=n(15370),p=n(99729);function u(e,t){1&e&&(r.ɵɵelementStart(0,"div",11),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",13),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"providerIsDisabled"),"\n "))}function m(e,t){if(1&e&&(r.ɵɵelementStart(0,"li",15),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"a",19),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",20),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("routerLink",e.manageRoute),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,2,"manage"),"\n ")}}function h(e,t){1&e&&(r.ɵɵelementStart(0,"li",15),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"a",21),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",22),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"settings"),"\n "))}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",15),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",16),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",17),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,m,8,4,"li",18),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,h,8,3,"li",18),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,3,"clients"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showManageTab),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.showSettingsTab)}}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",4),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",5),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"app-avatar",6),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"div",7),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span"),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"small",8),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,u,8,3,"div",9),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵtemplate(23,v,15,5,"ul",10),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(8),r.ɵɵproperty("data",e.provider.name)("circle",!0),r.ɵɵadvance(5),r.ɵɵtextInterpolate(e.provider.name),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(17,6,"provider")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.provider.enabled),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.showMenuBar)}}class g{constructor(e,t){this.route=e,this.providerService=t}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId,yield this.load()}))))}load(){return i(this,void 0,void 0,(function*(){this.provider=yield this.providerService.get(this.providerId)}))}get showMenuBar(){return this.showManageTab||this.showSettingsTab}get showManageTab(){return this.provider.canManageUsers||this.provider.canAccessEventLogs}get showSettingsTab(){return this.provider.isProviderAdmin}get manageRoute(){switch(!0){case this.provider.canManageUsers:return"manage/people";case this.provider.canAccessEventLogs:return"manage/events"}}}t.ProvidersLayoutComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["providers-layout"]],decls:11,vars:1,consts:[["class","org-nav",4,"ngIf"],[1,"container","page-content"],[1,"org-nav"],[1,"container","d-flex"],[1,"d-flex","flex-column"],[1,"my-auto","d-flex","align-items-center","pl-1"],["size","45",3,"data","circle"],[1,"org-name","ml-3"],[1,"text-muted"],["class","ml-3 card border-danger text-danger bg-transparent",4,"ngIf"],["class","nav nav-tabs",4,"ngIf"],[1,"ml-3","card","border-danger","text-danger","bg-transparent"],[1,"card-body","py-2"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLink","clients","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-bank"],["class","nav-item",4,"ngIf"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-sliders"],["routerLink","settings","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-cogs"]],template:function(e,t){1&e&&(r.ɵɵelement(0,"app-navbar"),r.ɵɵtext(1,"\n"),r.ɵɵtemplate(2,f,27,8,"div",0),r.ɵɵtext(3,"\n"),r.ɵɵelementStart(4,"div",1),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"router-outlet"),r.ɵɵtext(7,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n"),r.ɵɵelement(9,"app-footer"),r.ɵɵtext(10,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.provider))},directives:[s.NavbarComponent,l.NgIf,o.RouterOutlet,c.FooterComponent,d.AvatarComponent,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[p.I18nPipe],encapsulation:2})},16077:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(47880),a=n(16823),s=n(30773),l=n(29063),c=n(53402),d=n(82074),p=n(60261),u=n(34221),m=n(42378),h=n(13346),v=n(71601),f=n(42204),g=n(41860),y=n(79222),x=n(6499),S=n(7529),b=n(32621),w=(n(68012),[{path:"",canActivate:[r.AuthGuard],component:s.ProvidersComponent},{path:"",component:a.FrontendLayoutComponent,children:[{path:"setup-provider",component:x.SetupProviderComponent,data:{titleId:"setupProvider"}},{path:"accept-provider",component:u.AcceptProviderComponent,data:{titleId:"acceptProvider"}}]},{path:"",canActivate:[r.AuthGuard],children:[{path:"setup",component:S.SetupComponent},{path:":providerId",component:f.ProvidersLayoutComponent,canActivate:[p.ProviderGuard],children:[{path:"",pathMatch:"full",redirectTo:"clients"},{path:"clients/create",component:c.CreateOrganizationComponent},{path:"clients",component:l.ClientsComponent,data:{titleId:"clients"}},{path:"manage",component:h.ManageComponent,children:[{path:"",pathMatch:"full",redirectTo:"people"},{path:"people",component:v.PeopleComponent,canActivate:[d.PermissionsGuard],data:{titleId:"people",permissions:[o.Permissions.ManageUsers]}},{path:"events",component:m.EventsComponent,canActivate:[d.PermissionsGuard],data:{titleId:"eventLogs",permissions:[o.Permissions.AccessEventLogs]}}]},{path:"settings",component:y.SettingsComponent,children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:g.AccountComponent,canActivate:[d.PermissionsGuard],data:{titleId:"myProvider",permissions:[o.Permissions.ManageProvider]}}]}]}]}]);class C{}t.ProvidersRoutingModule=C,C.ɵfac=function(e){return new(e||C)},C.ɵmod=b.ɵɵdefineNgModule({type:C}),C.ɵinj=b.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(w)],i.RouterModule]})},33150:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersModule=void 0;const i=n(57490),r=(n(32621),n(96832)),o=n(44926),a=(n(64684),n(77537)),s=n(32656),l=n(82074),c=n(60261),d=n(16077),p=n(49003),u=n(32621),m=n(64684);class h{constructor(e,t){e.registerComponentFactoryResolver(s.AddOrganizationComponent,t)}}t.ProvidersModule=h,h.ɵfac=function(e){return new(e||h)(u.ɵɵinject(m.ModalService),u.ɵɵinject(u.ComponentFactoryResolver))},h.ɵmod=u.ɵɵdefineNgModule({type:h}),h.ɵinj=u.ɵɵdefineInjector({providers:[p.WebProviderService,c.ProviderGuard,l.PermissionsGuard],imports:[[i.CommonModule,r.FormsModule,a.OssModule,o.JslibModule,d.ProvidersRoutingModule]]})},49003:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebProviderService=void 0;n(91674),n(85714),n(9724);const r=n(47298),o=n(32621),a=n(85714),s=n(9724),l=n(91674);class c{constructor(e,t,n){this.cryptoService=e,this.syncService=t,this.apiService=n}addOrganizationToProvider(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getOrgKey(t),i=yield this.cryptoService.getProviderKey(e),o=yield this.cryptoService.encrypt(n.key,i),a=new r.ProviderAddOrganizationRequest;a.organizationId=t,a.key=o.encryptedString;const s=yield this.apiService.postProviderAddOrganization(e,a);return yield this.syncService.fullSync(!0),s}))}detachOrganizastion(e,t){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteProviderOrganization(e,t),yield this.syncService.fullSync(!0)}))}}t.WebProviderService=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵinject(a.CryptoService),o.ɵɵinject(s.SyncService),o.ɵɵinject(l.ApiService))},c.ɵprov=o.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},41860:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(9724);const r=n(23839),o=n(32621),a=n(91674),s=n(51554),l=n(68012),c=n(9724),d=n(73828),p=n(36631),u=n(57490),m=n(96832),h=n(56820),v=n(15370),f=n(99729);function g(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",3),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",4),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"form",5,6),o.ɵɵlistener("ngSubmit",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",7),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",8),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",9),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"label",10),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"input",11),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().provider.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",9),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",12),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"input",13),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().provider.billingEmail=t})),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",8),o.ɵɵtext(27,"\n "),o.ɵɵelement(28,"app-avatar",14),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"button",15),o.ɵɵtext(33,"\n "),o.ɵɵelement(34,"i",16),o.ɵɵpipe(35,"i18n"),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"span"),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext();o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,11,"providerName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.provider.name)("disabled",t.selfHosted),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,13,"billingEmail")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.provider.billingEmail)("disabled",t.selfHosted),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("data",t.provider.name),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(35,15,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(39,17,"save"))}}class x{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.route=n,this.syncService=i,this.platformUtilsService=r,this.logService=o,this.selfHosted=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.selfHosted=this.platformUtilsService.isSelfHost(),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.providerId=e.providerId;try{this.provider=yield this.apiService.getProvider(this.providerId)}catch(t){this.logService.error(`Handled exception: ${t}`)}})))),this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.ProviderUpdateRequest;e.name=this.provider.name,e.businessName=this.provider.businessName,e.billingEmail=this.provider.billingEmail,this.formPromise=this.apiService.putProvider(this.providerId,e).then((()=>this.syncService.fullSync(!0))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("providerUpdated"))}catch(e){this.logService.error(`Handled exception: ${e}`)}}))}}t.AccountComponent=x,x.ɵfac=function(e){return new(e||x)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ActivatedRoute),o.ɵɵdirectiveInject(c.SyncService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.LogService))},x.ɵcmp=o.ɵɵdefineComponent({type:x,selectors:[["provider-account"]],decls:11,vars:5,consts:[[1,"page-header"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail",1,"form-control",3,"ngModel","disabled","ngModelChange"],["dynamic","true","size","75","fontSize","35",3,"data"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵtemplate(7,g,9,6,"div",1),o.ɵɵtext(8,"\n"),o.ɵɵtemplate(9,y,42,19,"form",2),o.ɵɵtext(10,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"myProvider")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.provider&&!t.loading))},directives:[u.NgIf,m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,v.AvatarComponent],pipes:[f.I18nPipe],encapsulation:2})},79222:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(68012),n(68291);const r=n(32621),o=n(68012),a=n(68291),s=n(99729);class l{constructor(e,t){this.route=e,this.providerService=t}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){yield this.providerService.get(e.providerId)}))))}}t.SettingsComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.ProviderService))},l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["provider-settings"]],decls:28,vars:6,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],[1,"col-9"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",7),r.ɵɵtext(22,"\n "),r.ɵɵelement(23,"router-outlet"),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,2,"settings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,4,"myProvider"),"\n "))},directives:[o.RouterLinkWithHref,o.RouterLinkActive,o.RouterOutlet],pipes:[s.I18nPipe],encapsulation:2})},6499:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetupProviderComponent=void 0;const r=n(50009),o=n(32621),a=n(57490),s=n(68012),l=n(99729);function c(e,t){1&e&&(o.ɵɵelementStart(0,"div",2),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"img",3),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",4),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",5),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"span",6),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(8),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,4,"loading")))}const d=function(e){return{email:e}};function p(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",7),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",8),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",9),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",10),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"div",11),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"div",12),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"p"),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"hr"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",13),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"a",14),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,4,"setupProvider")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(16,6,"setupProviderLoginDesc")),o.ɵɵadvance(7),o.ɵɵproperty("queryParams",o.ɵɵpureFunction1(10,d,e.email)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(24,8,"logIn"),"\n ")}}class u extends r.BaseAcceptComponent{constructor(){super(...arguments),this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed",this.requiredParameters=["providerId","email","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){this.router.navigate(["/providers/setup"],{queryParams:e})}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){}))}}t.SetupProviderComponent=u,u.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(u)))(t||u)}}(),u.ɵcmp=o.ɵɵdefineComponent({type:u,selectors:[["app-setup-provider"]],features:[o.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,c,17,6,"div",0),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,p,31,12,"div",1),o.ɵɵtext(3,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[a.NgIf,s.RouterLinkWithHref],pipes:[l.I18nPipe],encapsulation:2})},7529:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetupComponent=void 0;n(68012);const r=n(14857),o=(n(47594),n(91674),n(85714),n(51554),n(73828),n(9724),n(22748)),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(85714),p=n(91674),u=n(9724),m=n(47594),h=n(53280),v=n(57490),f=n(59964),g=n(96832),y=n(56820),x=n(99729);function S(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",16),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).cancel()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"form",3,4),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"h2",5),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",6),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",7),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",8),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"input",9),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().name=t})),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",7),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",10),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"input",11),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().billingEmail=t})),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n\n "),a.ɵɵelementStart(28,"div",12),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"button",13),a.ɵɵtext(31,"\n "),a.ɵɵelement(32,"i",14),a.ɵɵpipe(33,"i18n"),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"span"),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵtemplate(40,S,3,3,"button",15),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(5,10,"generalInformation")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,12,"providerName")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.name),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,14,"billingEmail")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.billingEmail),a.ɵɵadvance(6),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(33,16,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,18,"submit")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.showCancel)}}class w{constructor(e,t,n,i,r,o,a,s){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.cryptoService=r,this.apiService=o,this.syncService=a,this.validationService=s,this.loading=!0,this.authed=!1}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null==e.providerId||null==e.email||null==e.token)return this.platformUtilsService.showToast("error",null,this.i18nService.t("emergencyInviteAcceptFailed"),{timeout:1e4}),void this.router.navigate(["/"]);this.providerId=e.providerId,this.token=e.token;try{const e=yield this.apiService.getProvider(this.providerId);null!=e.name&&this.router.navigate(["/providers",e.id],{replaceUrl:!0})}catch(t){this.validationService.showError(t),this.router.navigate(["/"])}}))))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.doSubmit(),yield this.formPromise,this.formPromise=null}))}doSubmit(){return i(this,void 0,void 0,(function*(){try{const e=(yield this.cryptoService.makeShareKey())[0].encryptedString,t=new o.ProviderSetupRequest;t.name=this.name,t.billingEmail=this.billingEmail,t.token=this.token,t.key=e;const n=yield this.apiService.postProviderSetup(this.providerId,t);this.platformUtilsService.showToast("success",null,this.i18nService.t("providerSetup")),yield this.syncService.fullSync(!0),this.router.navigate(["/providers",n.id])}catch(e){this.validationService.showError(e)}}))}}t.SetupComponent=w,w.ɵfac=function(e){return new(e||w)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.CryptoService),a.ɵɵdirectiveInject(p.ApiService),a.ɵɵdirectiveInject(u.SyncService),a.ɵɵdirectiveInject(m.ValidationService))},w.ɵcmp=a.ɵɵdefineComponent({type:w,selectors:[["provider-setup"]],decls:20,vars:7,consts:[[1,"container","page-content"],[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"mt-5"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"mt-4"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(a.ɵɵelement(0,"app-navbar"),a.ɵɵtext(1,"\n"),a.ɵɵelementStart(2,"div",0),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",1),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"h1"),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"p"),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n\n "),a.ɵɵtemplate(15,b,43,20,"form",2),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n"),a.ɵɵelement(18,"app-footer"),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,3,"setupProvider")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,5,"setupProviderDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.loading))},directives:[h.NavbarComponent,v.NgIf,f.FooterComponent,g.NgControlStatusGroup,g.NgForm,y.ApiActionDirective,g.DefaultValueAccessor,g.RequiredValidator,g.NgControlStatus,g.NgModel],pipes:[x.I18nPipe],encapsulation:2})},4758:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditCustomFieldsComponent=void 0;const i=n(83072),r=(n(32621),n(32034),n(51554),n(32773)),o=n(80253),a=n(67577),s=n(82769),l=(n(97144),n(58545)),c=n(32621),d=n(51554),p=n(32034);class u{constructor(e,t){this.i18nService=e,this.eventService=t,this.addFieldType=a.FieldType.Text,this.linkedFieldOptions=[],this.cipherType=r.CipherType,this.fieldType=a.FieldType,this.eventType=o.EventType,this.addFieldTypeOptions=[{name:e.t("cfTypeText"),value:a.FieldType.Text},{name:e.t("cfTypeHidden"),value:a.FieldType.Hidden},{name:e.t("cfTypeBoolean"),value:a.FieldType.Boolean}],this.addFieldLinkedTypeOption={name:this.i18nService.t("cfTypeLinked"),value:a.FieldType.Linked}}ngOnChanges(e){null!=e.thisCipherType&&(this.setLinkedFieldOptions(),e.thisCipherType.firstChange||this.resetCipherLinkedFields())}addField(){null==this.cipher.fields&&(this.cipher.fields=[]);const e=new l.FieldView;e.type=this.addFieldType,e.newField=!0,e.type===a.FieldType.Linked&&(e.linkedId=this.linkedFieldOptions[0].value),this.cipher.fields.push(e)}removeField(e){const t=this.cipher.fields.indexOf(e);t>-1&&this.cipher.fields.splice(t,1)}toggleFieldValue(e){const t=e;t.showValue=!t.showValue,this.editMode&&t.showValue&&this.eventService.collect(o.EventType.Cipher_ClientToggledHiddenFieldVisible,this.cipher.id)}trackByFunction(e,t){return e}drop(e){i.moveItemInArray(this.cipher.fields,e.previousIndex,e.currentIndex)}setLinkedFieldOptions(){if(null==this.cipher.linkedFieldOptions)return;const e=[];this.cipher.linkedFieldOptions.forEach(((t,n)=>e.push({name:this.i18nService.t(t.i18nKey),value:n}))),this.linkedFieldOptions=e.sort(s.Utils.getSortFunction(this.i18nService,"name"))}resetCipherLinkedFields(){null!=this.cipher.fields&&0!==this.cipher.fields.length&&(null!=this.cipher.linkedFieldOptions?this.cipher.fields.filter((e=>e.type===a.FieldType.Linked)).forEach((e=>e.linkedId=this.linkedFieldOptions[0].value)):this.cipher.fields=this.cipher.fields.filter((e=>e.type!==a.FieldType.Linked)))}}t.AddEditCustomFieldsComponent=u,u.ɵfac=function(e){return new(e||u)(c.ɵɵdirectiveInject(d.I18nService),c.ɵɵdirectiveInject(p.EventService))},u.ɵdir=c.ɵɵdefineDirective({type:u,inputs:{cipher:"cipher",thisCipherType:"thisCipherType",editMode:"editMode"},features:[c.ɵɵNgOnChangesFeature]})},7481:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;const r=n(32621),o=(n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(44809),n(73828),n(62166),n(73569),n(34453)),a=n(32773),s=n(80253),l=n(7368),c=n(49906),d=n(76716),p=n(71703),u=n(82769),m=n(91766),h=n(97144),v=n(48830),f=n(16506),g=n(28331),y=n(99364),x=n(32621),S=n(45330),b=n(88308),w=n(51554),C=n(73828),I=n(42982),E=n(73569),P=n(3174),O=n(45552),k=n(32034),A=n(62166),T=n(36631),M=n(44809),B=n(63513);class D{constructor(e,t,n,i,o,s,l,c,d,u,m,h,v){this.cipherService=e,this.folderService=t,this.i18nService=n,this.platformUtilsService=i,this.auditService=o,this.stateService=s,this.collectionService=l,this.messagingService=c,this.eventService=d,this.policyService=u,this.logService=m,this.passwordRepromptService=h,this.organizationService=v,this.cloneMode=!1,this.folderId=null,this.organizationId=null,this.onSavedCipher=new r.EventEmitter,this.onDeletedCipher=new r.EventEmitter,this.onRestoredCipher=new r.EventEmitter,this.onCancelled=new r.EventEmitter,this.onEditAttachments=new r.EventEmitter,this.onShareCipher=new r.EventEmitter,this.onEditCollections=new r.EventEmitter,this.onGeneratePassword=new r.EventEmitter,this.onGenerateUsername=new r.EventEmitter,this.editMode=!1,this.collections=[],this.showPassword=!1,this.showCardNumber=!1,this.showCardCode=!1,this.cipherType=a.CipherType,this.ownershipOptions=[],this.currentDate=new Date,this.allowPersonal=!0,this.reprompt=!1,this.canUseReprompt=!0,this.typeOptions=[{name:n.t("typeLogin"),value:a.CipherType.Login},{name:n.t("typeCard"),value:a.CipherType.Card},{name:n.t("typeIdentity"),value:a.CipherType.Identity},{name:n.t("typeSecureNote"),value:a.CipherType.SecureNote}],this.cardBrandOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:"Visa",value:"Visa"},{name:"Mastercard",value:"Mastercard"},{name:"American Express",value:"Amex"},{name:"Discover",value:"Discover"},{name:"Diners Club",value:"Diners Club"},{name:"JCB",value:"JCB"},{name:"Maestro",value:"Maestro"},{name:"UnionPay",value:"UnionPay"},{name:n.t("other"),value:"Other"}],this.cardExpMonthOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:"01 - "+n.t("january"),value:"1"},{name:"02 - "+n.t("february"),value:"2"},{name:"03 - "+n.t("march"),value:"3"},{name:"04 - "+n.t("april"),value:"4"},{name:"05 - "+n.t("may"),value:"5"},{name:"06 - "+n.t("june"),value:"6"},{name:"07 - "+n.t("july"),value:"7"},{name:"08 - "+n.t("august"),value:"8"},{name:"09 - "+n.t("september"),value:"9"},{name:"10 - "+n.t("october"),value:"10"},{name:"11 - "+n.t("november"),value:"11"},{name:"12 - "+n.t("december"),value:"12"}],this.identityTitleOptions=[{name:"-- "+n.t("select")+" --",value:null},{name:n.t("mr"),value:n.t("mr")},{name:n.t("mrs"),value:n.t("mrs")},{name:n.t("ms"),value:n.t("ms")},{name:n.t("dr"),value:n.t("dr")}],this.uriMatchOptions=[{name:n.t("defaultMatchDetection"),value:null},{name:n.t("baseDomain"),value:p.UriMatchType.Domain},{name:n.t("host"),value:p.UriMatchType.Host},{name:n.t("startsWith"),value:p.UriMatchType.StartsWith},{name:n.t("regEx"),value:p.UriMatchType.RegularExpression},{name:n.t("exact"),value:p.UriMatchType.Exact},{name:n.t("never"),value:p.UriMatchType.Never}],this.autofillOnPageLoadOptions=[{name:n.t("autoFillOnPageLoadUseDefault"),value:null},{name:n.t("autoFillOnPageLoadYes"),value:!0},{name:n.t("autoFillOnPageLoadNo"),value:!1}]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}init(){return i(this,void 0,void 0,(function*(){if(this.ownershipOptions.length&&(this.ownershipOptions=[]),yield this.policyService.policyAppliesToUser(c.PolicyType.PersonalOwnership))this.allowPersonal=!1;else{const e=yield this.stateService.getEmail();this.ownershipOptions.push({name:e,value:null})}(yield this.organizationService.getAll()).sort(u.Utils.getSortFunction(this.i18nService,"name")).forEach((e=>{e.enabled&&e.status===l.OrganizationUserStatusType.Confirmed&&this.ownershipOptions.push({name:e.name,value:e.id})})),this.allowPersonal||(this.organizationId=this.ownershipOptions[0].value),this.writeableCollections=yield this.loadCollections(),this.canUseReprompt=yield this.passwordRepromptService.enabled()}))}load(){return i(this,void 0,void 0,(function*(){this.editMode=null!=this.cipherId,this.editMode?(this.editMode=!0,this.cloneMode?(this.cloneMode=!0,this.title=this.i18nService.t("addItem")):this.title=this.i18nService.t("editItem")):this.title=this.i18nService.t("addItem");const e=yield this.stateService.getAddEditCipherInfo();if(null!=e&&(this.cipher=e.cipher,this.collectionIds=e.collectionIds),yield this.stateService.setAddEditCipherInfo(null),null==this.cipher)if(this.editMode){const e=yield this.loadCipher();this.cipher=yield e.decrypt(),this.cloneMode&&(this.cipher.name+=" - "+this.i18nService.t("clone"),null!=this.cipher.organizationId||this.allowPersonal||(this.cipher.organizationId=this.organizationId))}else this.cipher=new h.CipherView,this.cipher.organizationId=null==this.organizationId?null:this.organizationId,this.cipher.folderId=this.folderId,this.cipher.type=null==this.type?a.CipherType.Login:this.type,this.cipher.login=new g.LoginView,this.cipher.login.uris=[new f.LoginUriView],this.cipher.card=new m.CardView,this.cipher.identity=new v.IdentityView,this.cipher.secureNote=new y.SecureNoteView,this.cipher.secureNote.type=d.SecureNoteType.Generic,this.cipher.reprompt=o.CipherRepromptType.None;null==this.cipher||this.editMode&&null==e&&!this.cloneMode||(yield this.organizationChanged(),null!=this.collectionIds&&this.collectionIds.length>0&&this.collections.length>0&&this.collections.forEach((e=>{this.collectionIds.indexOf(e.id)>-1&&(e.checked=!0)}))),this.folders=yield this.folderService.getAllDecrypted(),this.editMode&&this.previousCipherId!==this.cipherId&&this.eventService.collect(s.EventType.Cipher_ClientViewed,this.cipherId),this.previousCipherId=this.cipherId,this.reprompt=this.cipher.reprompt!==o.CipherRepromptType.None}))}submit(){return i(this,void 0,void 0,(function*(){if(this.cipher.isDeleted)return this.restore();if(null==this.cipher.name||""===this.cipher.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;if((!this.editMode||this.cloneMode)&&!this.allowPersonal&&null==this.cipher.organizationId)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("personalOwnershipSubmitError")),!1;this.editMode&&!this.cloneMode||this.cipher.type!==a.CipherType.Login||null==this.cipher.login.uris||1!==this.cipher.login.uris.length||null!=this.cipher.login.uris[0].uri&&""!==this.cipher.login.uris[0].uri||(this.cipher.login.uris=null),this.editMode&&!this.cloneMode||null==this.cipher.organizationId||(this.cipher.collectionIds=null==this.collections?[]:this.collections.filter((e=>e.checked)).map((e=>e.id))),this.cloneMode&&(this.cipher.id=null);const e=yield this.encryptCipher();try{return this.formPromise=this.saveCipher(e),yield this.formPromise,this.cipher.id=e.id,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode&&!this.cloneMode?"editedItem":"addedItem")),this.onSavedCipher.emit(this.cipher),this.messagingService.send(this.editMode&&!this.cloneMode?"editedCipher":"addedCipher"),!0}catch(t){this.logService.error(t)}return!1}))}addUri(){this.cipher.type===a.CipherType.Login&&(null==this.cipher.login.uris&&(this.cipher.login.uris=[]),this.cipher.login.uris.push(new f.LoginUriView))}removeUri(e){if(this.cipher.type!==a.CipherType.Login||null==this.cipher.login.uris)return;const t=this.cipher.login.uris.indexOf(e);t>-1&&this.cipher.login.uris.splice(t,1)}trackByFunction(e,t){return e}cancel(){this.onCancelled.emit(this.cipher)}attachments(){this.onEditAttachments.emit(this.cipher)}share(){this.onShareCipher.emit(this.cipher)}editCollections(){this.onEditCollections.emit(this.cipher)}delete(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(this.cipher.isDeleted?"permanentlyDeleteItemConfirmation":"deleteItemConfirmation"),this.i18nService.t("deleteItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.deleteCipher(),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.cipher.isDeleted?"permanentlyDeletedItem":"deletedItem")),this.onDeletedCipher.emit(this.cipher),this.messagingService.send(this.cipher.isDeleted?"permanentlyDeletedCipher":"deletedCipher")}catch(e){this.logService.error(e)}return!0}))}restore(){return i(this,void 0,void 0,(function*(){if(!this.cipher.isDeleted)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("restoreItemConfirmation"),this.i18nService.t("restoreItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.restorePromise=this.restoreCipher(),yield this.restorePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItem")),this.onRestoredCipher.emit(this.cipher),this.messagingService.send("restoredCipher")}catch(e){this.logService.error(e)}return!0}))}generateUsername(){var e,t;return i(this,void 0,void 0,(function*(){if(null===(t=null===(e=this.cipher.login)||void 0===e?void 0:e.username)||void 0===t?void 0:t.length){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("overwriteUsernameConfirmation"),this.i18nService.t("overwriteUsername"),this.i18nService.t("yes"),this.i18nService.t("no"))))return!1}return this.onGenerateUsername.emit(),!0}))}generatePassword(){var e,t;return i(this,void 0,void 0,(function*(){if(null===(t=null===(e=this.cipher.login)||void 0===e?void 0:e.password)||void 0===t?void 0:t.length){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("overwritePasswordConfirmation"),this.i18nService.t("overwritePassword"),this.i18nService.t("yes"),this.i18nService.t("no"))))return!1}return this.onGeneratePassword.emit(),!0}))}togglePassword(){this.showPassword=!this.showPassword,document.getElementById("loginPassword").focus(),this.editMode&&this.showPassword&&this.eventService.collect(s.EventType.Cipher_ClientToggledPasswordVisible,this.cipherId)}toggleCardNumber(){return i(this,void 0,void 0,(function*(){this.showCardNumber=!this.showCardNumber,this.showCardNumber&&this.eventService.collect(s.EventType.Cipher_ClientToggledCardNumberVisible,this.cipherId)}))}toggleCardCode(){this.showCardCode=!this.showCardCode,document.getElementById("cardCode").focus(),this.editMode&&this.showCardCode&&this.eventService.collect(s.EventType.Cipher_ClientToggledCardCodeVisible,this.cipherId)}toggleUriOptions(e){const t=e;t.showOptions=(null!=t.showOptions||null==e.match)&&!t.showOptions}loginUriMatchChanged(e){const t=e;t.showOptions=null==t.showOptions||t.showOptions}organizationChanged(){return i(this,void 0,void 0,(function*(){if(null!=this.writeableCollections&&this.writeableCollections.forEach((e=>e.checked=!1)),null!=this.cipher.organizationId){this.collections=this.writeableCollections.filter((e=>e.organizationId===this.cipher.organizationId));const e=yield this.organizationService.get(this.cipher.organizationId);null!=e&&(this.cipher.organizationUseTotp=e.useTotp)}else this.collections=[]}))}checkPassword(){return i(this,void 0,void 0,(function*(){if(null!=this.checkPasswordPromise)return;if(null==this.cipher.login||null==this.cipher.login.password||""===this.cipher.login.password)return;this.checkPasswordPromise=this.auditService.passwordLeaked(this.cipher.login.password);const e=yield this.checkPasswordPromise;this.checkPasswordPromise=null,e>0?this.platformUtilsService.showToast("warning",null,this.i18nService.t("passwordExposed",e.toString())):this.platformUtilsService.showToast("success",null,this.i18nService.t("passwordSafe"))}))}repromptChanged(){this.reprompt=!this.reprompt,this.reprompt?this.cipher.reprompt=o.CipherRepromptType.Password:this.cipher.reprompt=o.CipherRepromptType.None}loadCollections(){return i(this,void 0,void 0,(function*(){return(yield this.collectionService.getAllDecrypted()).filter((e=>!e.readOnly))}))}loadCipher(){return this.cipherService.get(this.cipherId)}encryptCipher(){return this.cipherService.encrypt(this.cipher)}saveCipher(e){return this.cipherService.saveWithServer(e)}deleteCipher(){return this.cipher.isDeleted?this.cipherService.deleteWithServer(this.cipher.id):this.cipherService.softDeleteWithServer(this.cipher.id)}restoreCipher(){return this.cipherService.restoreWithServer(this.cipher.id)}}t.AddEditComponent=D,D.ɵfac=function(e){return new(e||D)(x.ɵɵdirectiveInject(S.CipherService),x.ɵɵdirectiveInject(b.FolderService),x.ɵɵdirectiveInject(w.I18nService),x.ɵɵdirectiveInject(C.PlatformUtilsService),x.ɵɵdirectiveInject(I.AuditService),x.ɵɵdirectiveInject(E.StateService),x.ɵɵdirectiveInject(P.CollectionService),x.ɵɵdirectiveInject(O.MessagingService),x.ɵɵdirectiveInject(k.EventService),x.ɵɵdirectiveInject(A.PolicyService),x.ɵɵdirectiveInject(T.LogService),x.ɵɵdirectiveInject(M.PasswordRepromptService),x.ɵɵdirectiveInject(B.OrganizationService))},D.ɵdir=x.ɵɵdefineDirective({type:D,inputs:{cloneMode:"cloneMode",folderId:"folderId",cipherId:"cipherId",type:"type",collectionIds:"collectionIds",organizationId:"organizationId"},outputs:{onSavedCipher:"onSavedCipher",onDeletedCipher:"onDeletedCipher",onRestoredCipher:"onRestoredCipher",onCancelled:"onCancelled",onEditAttachments:"onEditAttachments",onShareCipher:"onShareCipher",onEditCollections:"onEditCollections",onGeneratePassword:"onGeneratePassword",onGenerateUsername:"onGenerateUsername"}})},93705:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(33018)),a=n(32621),s=n(45330),l=n(51554),c=n(85714),d=n(73828),p=n(91674),u=n(36631),m=n(73569);class h{constructor(e,t,n,i,o,a,s,l){this.cipherService=e,this.i18nService=t,this.cryptoService=n,this.platformUtilsService=i,this.apiService=o,this.win=a,this.logService=s,this.stateService=l,this.onUploadedAttachment=new r.EventEmitter,this.onDeletedAttachment=new r.EventEmitter,this.onReuploadedAttachment=new r.EventEmitter,this.deletePromises={},this.reuploadPromises={},this.emergencyAccessId=null}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}submit(){return i(this,void 0,void 0,(function*(){if(!this.hasUpdatedKey)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("updateKey"));const e=document.getElementById("file"),t=e.files;if(null!=t&&0!==t.length)if(t[0].size>524288e3)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("maxFileSize"));else{try{this.formPromise=this.saveCipherAttachment(t[0]),this.cipherDomain=yield this.formPromise,this.cipher=yield this.cipherDomain.decrypt(),this.platformUtilsService.showToast("success",null,this.i18nService.t("attachmentSaved")),this.onUploadedAttachment.emit()}catch(n){this.logService.error(n)}e.type="",e.type="file",e.value=""}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}))}delete(e){return i(this,void 0,void 0,(function*(){if(null!=this.deletePromises[e.id])return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteAttachmentConfirmation"),this.i18nService.t("deleteAttachment"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")){try{this.deletePromises[e.id]=this.deleteCipherAttachment(e.id),yield this.deletePromises[e.id],this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedAttachment"));const t=this.cipher.attachments.indexOf(e);t>-1&&this.cipher.attachments.splice(t,1)}catch(t){this.logService.error(t)}this.deletePromises[e.id]=null,this.onDeletedAttachment.emit()}}))}download(e){return i(this,void 0,void 0,(function*(){const t=e;if(t.downloading)return;if(!this.canAccessAttachments)return void this.platformUtilsService.showToast("error",this.i18nService.t("premiumRequired"),this.i18nService.t("premiumRequiredDesc"));let n;try{n=(yield this.apiService.getAttachmentData(this.cipher.id,e.id,this.emergencyAccessId)).url}catch(r){if(!(r instanceof o.ErrorResponse&&404===r.statusCode))throw r instanceof o.ErrorResponse?new Error(r.getSingleMessage()):r;n=e.url}t.downloading=!0;const i=yield fetch(new Request(n,{cache:"no-store"}));if(200!==i.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(t.downloading=!1);try{const t=yield i.arrayBuffer(),n=null!=e.key?e.key:yield this.cryptoService.getOrgKey(this.cipher.organizationId),r=yield this.cryptoService.decryptFromBytes(t,n);this.platformUtilsService.saveFile(this.win,r,null,e.fileName)}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}t.downloading=!1}))}init(){return i(this,void 0,void 0,(function*(){this.cipherDomain=yield this.loadCipher(),this.cipher=yield this.cipherDomain.decrypt(),this.hasUpdatedKey=yield this.cryptoService.hasEncKey();const e=yield this.stateService.getCanAccessPremium();if(this.canAccessAttachments=e||null!=this.cipher.organizationId,this.canAccessAttachments){if(!this.hasUpdatedKey){(yield this.platformUtilsService.showDialog(this.i18nService.t("updateKey"),this.i18nService.t("featureUnavailable"),this.i18nService.t("learnMore"),this.i18nService.t("cancel"),"warning"))&&this.platformUtilsService.launchUri("https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key")}}else{(yield this.platformUtilsService.showDialog(this.i18nService.t("premiumRequiredDesc"),this.i18nService.t("premiumRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.platformUtilsService.launchUri("https://vault.bitwarden.com/#/?premium=purchase")}}))}reuploadCipherAttachment(e,t){return i(this,void 0,void 0,(function*(){const n=e;if(null==e.key&&!n.downloading&&null==this.reuploadPromises[e.id])try{this.reuploadPromises[e.id]=Promise.resolve().then((()=>i(this,void 0,void 0,(function*(){n.downloading=!0;const i=yield fetch(new Request(e.url,{cache:"no-store"}));if(200!==i.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(n.downloading=!1);try{const n=yield i.arrayBuffer(),r=null!=e.key?e.key:yield this.cryptoService.getOrgKey(this.cipher.organizationId),o=yield this.cryptoService.decryptFromBytes(n,r);this.cipherDomain=yield this.cipherService.saveAttachmentRawWithServer(this.cipherDomain,e.fileName,o,t),this.cipher=yield this.cipherDomain.decrypt(),this.deletePromises[e.id]=this.deleteCipherAttachment(e.id),yield this.deletePromises[e.id];const a=this.cipher.attachments.filter((t=>t.id===e.id));if(a.length>0){const e=this.cipher.attachments.indexOf(a[0]);e>-1&&this.cipher.attachments.splice(e,1)}this.platformUtilsService.showToast("success",null,this.i18nService.t("attachmentSaved")),this.onReuploadedAttachment.emit()}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}n.downloading=!1})))),yield this.reuploadPromises[e.id]}catch(r){this.logService.error(r)}}))}loadCipher(){return this.cipherService.get(this.cipherId)}saveCipherAttachment(e){return this.cipherService.saveAttachmentWithServer(this.cipherDomain,e)}deleteCipherAttachment(e){return this.cipherService.deleteAttachmentWithServer(this.cipher.id,e)}}t.AttachmentsComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.CryptoService),a.ɵɵdirectiveInject(d.PlatformUtilsService),a.ɵɵdirectiveInject(p.ApiService),a.ɵɵdirectiveInject(Window),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.StateService))},h.ɵdir=a.ɵɵdefineDirective({type:h,inputs:{cipherId:"cipherId"},outputs:{onUploadedAttachment:"onUploadedAttachment",onDeletedAttachment:"onDeletedAttachment",onReuploadedAttachment:"onReuploadedAttachment"}})},15370:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AvatarComponent=void 0;n(61248),n(1659),n(73569);const r=n(82769),o=n(32621),a=n(61248),s=n(1659),l=n(73569),c=n(57490),d=function(e){return{"rounded-circle":e}};function p(e,t){if(1&e&&o.ɵɵelement(0,"img",1),2&e){const e=o.ɵɵnextContext();o.ɵɵpropertyInterpolate("title",e.data),o.ɵɵproperty("src",e.sanitizer.bypassSecurityTrustResourceUrl(e.src),o.ɵɵsanitizeUrl)("ngClass",o.ɵɵpureFunction1(3,d,e.circle))}}class u{constructor(e,t,n){this.sanitizer=e,this.cryptoFunctionService=t,this.stateService=n,this.size=45,this.charCount=2,this.textColor="#ffffff",this.fontSize=20,this.fontWeight=300,this.dynamic=!1,this.circle=!1}ngOnInit(){this.dynamic||this.generate()}ngOnChanges(){this.dynamic&&this.generate()}generate(){return i(this,void 0,void 0,(function*(){if((yield this.stateService.getEnableGravitars())&&null!=this.email){const e=yield this.cryptoFunctionService.hash(this.email.toLowerCase().trim(),"md5"),t=r.Utils.fromBufferToHex(e).toLowerCase();this.src="https://www.gravatar.com/avatar/"+t+"?s="+this.size+"&r=pg&d=retro"}else{let e=null;const t=this.data.toUpperCase();this.charCount>1&&(e=this.getFirstLetters(t,this.charCount)),null==e&&(e=this.unicodeSafeSubstring(t,this.charCount)),e.match(r.Utils.regexpEmojiPresentation)&&(e=e.match(r.Utils.regexpEmojiPresentation)[0]);const n=this.getCharText(e),i=this.stringToColor(t),o=this.getSvg(this.size,i);o.appendChild(n);const a=window.document.createElement("div").appendChild(o).outerHTML,s=window.btoa(unescape(encodeURIComponent(a)));this.src="data:image/svg+xml;base64,"+s}}))}stringToColor(e){let t=0;for(let i=0;i>8*i&255).toString(16)).substr(-2)}return n}getFirstLetters(e,t){const n=e.split(" ");if(n.length>1){let e="";for(let i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutComponent=void 0;n(51554),n(27053);const i=n(32621),r=n(51554),o=n(57490),a=n(99729);function s(e,t){if(1&e&&i.ɵɵelement(0,"i",6),2&e){const e=i.ɵɵnextContext(2);i.ɵɵclassMapInterpolate1("bwi ",e.icon,"")}}function l(e,t){if(1&e&&(i.ɵɵelementStart(0,"h3",4),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,s,1,3,"i",5),i.ɵɵtext(3),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(2),i.ɵɵproperty("ngIf",e.icon),i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.title,"\n ")}}function c(e,t){if(1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext(2);i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectMinComplexity",e.getPasswordScoreAlertDisplay()),"\n ")}}function d(e,t){if(1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext(2);i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectMinLength",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minLength.toString()),"\n ")}}function p(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectUppercase"),"\n "))}function u(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectLowercase"),"\n "))}function m(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"policyInEffectNumbers"),"\n "))}function h(e,t){1&e&&(i.ɵɵelementStart(0,"li"),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind2(2,1,"policyInEffectSpecial","!@#$%^&*"),"\n "))}function v(e,t){if(1&e&&(i.ɵɵelementStart(0,"div",7),i.ɵɵtext(1),i.ɵɵelementStart(2,"ul"),i.ɵɵtext(3,"\n "),i.ɵɵtemplate(4,c,3,4,"li",8),i.ɵɵtext(5,"\n "),i.ɵɵtemplate(6,d,3,4,"li",8),i.ɵɵtext(7,"\n "),i.ɵɵtemplate(8,p,3,3,"li",8),i.ɵɵtext(9,"\n "),i.ɵɵtemplate(10,u,3,3,"li",8),i.ɵɵtext(11,"\n "),i.ɵɵtemplate(12,m,3,3,"li",8),i.ɵɵtext(13,"\n "),i.ɵɵtemplate(14,h,3,4,"li",8),i.ɵɵtext(15,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(16,"\n "),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.enforcedPolicyMessage,"\n "),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",(null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minComplexity)>0),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",(null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.minLength)>0),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireUpper),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireLower),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireNumbers),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",null==e.enforcedPolicyOptions?null:e.enforcedPolicyOptions.requireSpecial)}}const f=function(e){return{clickable:e}};class g{constructor(e){this.i18nService=e,this.type="info",this.useAlertRole=!1}ngOnInit(){this.calloutStyle=this.type,void 0===this.enforcedPolicyMessage&&(this.enforcedPolicyMessage=this.i18nService.t("masterPasswordPolicyInEffect")),"warning"===this.type||"danger"===this.type?("danger"===this.type&&(this.calloutStyle="danger"),void 0===this.title&&(this.title=this.i18nService.t("warning")),void 0===this.icon&&(this.icon="bwi-exclamation-triangle")):"error"===this.type?(this.calloutStyle="danger",void 0===this.title&&(this.title=this.i18nService.t("error")),void 0===this.icon&&(this.icon="bwi-error")):"tip"===this.type&&(this.calloutStyle="success",void 0===this.title&&(this.title=this.i18nService.t("tip")),void 0===this.icon&&(this.icon="bwi-lightbulb"))}getPasswordScoreAlertDisplay(){if(null==this.enforcedPolicyOptions)return"";let e;switch(this.enforcedPolicyOptions.minComplexity){case 4:e=this.i18nService.t("strong");break;case 3:e=this.i18nService.t("good");break;default:e=this.i18nService.t("weak")}return e+" ("+this.enforcedPolicyOptions.minComplexity+")"}}t.CalloutComponent=g,g.ɵfac=function(e){return new(e||g)(i.ɵɵdirectiveInject(r.I18nService))},g.ɵcmp=i.ɵɵdefineComponent({type:g,selectors:[["app-callout"]],inputs:{type:"type",icon:"icon",title:"title",clickable:"clickable",enforcedPolicyOptions:"enforcedPolicyOptions",enforcedPolicyMessage:"enforcedPolicyMessage",useAlertRole:"useAlertRole"},ngContentSelectors:["*"],decls:10,vars:9,consts:[[3,"ngClass"],["callout",""],["class","callout-heading",4,"ngIf"],["class","enforced-policy-options",4,"ngIf"],[1,"callout-heading"],["aria-hidden","true",3,"class",4,"ngIf"],["aria-hidden","true"],[1,"enforced-policy-options"],[4,"ngIf"]],template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵelementStart(0,"div",0,1),i.ɵɵtext(2,"\n "),i.ɵɵtemplate(3,l,4,2,"h3",2),i.ɵɵtext(4,"\n "),i.ɵɵtemplate(5,v,17,7,"div",3),i.ɵɵtext(6,"\n "),i.ɵɵprojection(7),i.ɵɵtext(8,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(9,"\n")),2&e&&(i.ɵɵclassMapInterpolate1("callout callout-",t.calloutStyle,""),i.ɵɵproperty("ngClass",i.ɵɵpureFunction1(7,f,t.clickable)),i.ɵɵattribute("role",t.useAlertRole?"alert":null),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",t.title),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.enforcedPolicyOptions))},directives:[o.NgClass,o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},60765:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CaptchaProtectedComponent=void 0;n(56071),n(51554),n(73828);const r=n(94700),o=n(82769),a=n(32621),s=n(56071),l=n(51554),c=n(73828);class d{constructor(e,t,n){this.environmentService=e,this.i18nService=t,this.platformUtilsService=n,this.captchaSiteKey=null,this.captchaToken=null}setupCaptcha(){return i(this,void 0,void 0,(function*(){const e=this.environmentService.getWebVaultUrl();this.captcha=new r.CaptchaIFrame(window,e,this.i18nService,(e=>{this.captchaToken=e}),(e=>{this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}),(e=>{this.platformUtilsService.showToast("info",this.i18nService.t("info"),e)}))}))}showCaptcha(){return!o.Utils.isNullOrWhitespace(this.captchaSiteKey)}handleCaptchaRequired(e){return!o.Utils.isNullOrWhitespace(e.captchaSiteKey)&&(this.captchaSiteKey=e.captchaSiteKey,this.captcha.init(e.captchaSiteKey),!0)}}t.CaptchaProtectedComponent=d,d.ɵfac=function(e){return new(e||d)(a.ɵɵdirectiveInject(s.EnvironmentService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService))},d.ɵdir=a.ɵɵdefineDirective({type:d,inputs:{captchaSiteKey:"captchaSiteKey"}})},16545:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePasswordComponent=void 0;n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569);const r=n(32621),o=n(51554),a=n(85714),s=n(45552),l=n(84275),c=n(73828),d=n(62166),p=n(73569);class u{constructor(e,t,n,i,r,o,a){this.i18nService=e,this.cryptoService=t,this.messagingService=n,this.passwordGenerationService=i,this.platformUtilsService=r,this.policyService=o,this.stateService=a}ngOnInit(){var e;return i(this,void 0,void 0,(function*(){this.email=yield this.stateService.getEmail(),null!==(e=this.enforcedPolicyOptions)&&void 0!==e||(this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions())}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.strongPassword()))return;if(!(yield this.setupSubmitActions()))return;const e=yield this.stateService.getEmail();null==this.kdf&&(this.kdf=yield this.stateService.getKdfType()),null==this.kdfIterations&&(this.kdfIterations=yield this.stateService.getKdfIterations());const t=yield this.cryptoService.makeKey(this.masterPassword,e.trim().toLowerCase(),this.kdf,this.kdfIterations),n=yield this.cryptoService.hashPassword(this.masterPassword,t);let i=null;i=null==(yield this.cryptoService.getEncKey())?yield this.cryptoService.makeEncKey(t):yield this.cryptoService.remakeEncKey(t),yield this.performSubmitActions(n,t,i)}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){}))}strongPassword(){return i(this,void 0,void 0,(function*(){if(null==this.masterPassword||""===this.masterPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;if(this.masterPassword.length<8)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength")),!1;if(this.masterPassword!==this.masterPasswordRetype)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassDoesntMatch")),!1;const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());if(null!=this.enforcedPolicyOptions&&!this.policyService.evaluateMasterPassword(e.score,this.masterPassword,this.enforcedPolicyOptions))return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet")),!1;if(null!=e&&e.score<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1}return!0}))}updatePasswordStrength(){null!=this.masterPasswordStrengthTimeout&&clearTimeout(this.masterPasswordStrengthTimeout),this.masterPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}logOut(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("logOutConfirmation"),this.i18nService.t("logOut"),this.i18nService.t("logOut"),this.i18nService.t("cancel")))&&this.messagingService.send("logout")}))}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),e}}t.ChangePasswordComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.CryptoService),r.ɵɵdirectiveInject(s.MessagingService),r.ɵɵdirectiveInject(l.PasswordGenerationService),r.ɵɵdirectiveInject(c.PlatformUtilsService),r.ɵɵdirectiveInject(d.PolicyService),r.ɵɵdirectiveInject(p.StateService))},u.ɵdir=r.ɵɵdefineDirective({type:u})},80008:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CiphersComponent=void 0;const r=n(32621),o=(n(60421),n(32621)),a=n(60421);class s{constructor(e){this.searchService=e,this.activeCipherId=null,this.onCipherClicked=new r.EventEmitter,this.onCipherRightClicked=new r.EventEmitter,this.onAddCipher=new r.EventEmitter,this.onAddCipherOptions=new r.EventEmitter,this.loaded=!1,this.ciphers=[],this.searchPlaceholder=null,this.filter=null,this.deleted=!1,this.searchPending=!1,this.searchTimeout=null,this.deletedFilter=e=>e.isDeleted===this.deleted}load(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.deleted=t||!1,yield this.applyFilter(e),this.loaded=!0}))}reload(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.loaded=!1,yield this.load(e,t)}))}refresh(){return i(this,void 0,void 0,(function*(){yield this.reload(this.filter,this.deleted)}))}applyFilter(e=null){return i(this,void 0,void 0,(function*(){this.filter=e,yield this.search(null)}))}search(e=null,t){return i(this,void 0,void 0,(function*(){this.searchPending=!1,null!=this.searchTimeout&&clearTimeout(this.searchTimeout),null!=e?(this.searchPending=!0,this.searchTimeout=setTimeout((()=>i(this,void 0,void 0,(function*(){yield this.doSearch(t),this.searchPending=!1}))),e)):yield this.doSearch(t)}))}selectCipher(e){this.onCipherClicked.emit(e)}rightClickCipher(e){this.onCipherRightClicked.emit(e)}addCipher(){this.onAddCipher.emit()}addCipherOptions(){this.onAddCipherOptions.emit()}isSearching(){return!this.searchPending&&this.searchService.isSearchable(this.searchText)}doSearch(e){return i(this,void 0,void 0,(function*(){this.ciphers=yield this.searchService.searchCiphers(this.searchText,[this.filter,this.deletedFilter],e)}))}}t.CiphersComponent=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(a.SearchService))},s.ɵdir=o.ɵɵdefineDirective({type:s,inputs:{activeCipherId:"activeCipherId"},outputs:{onCipherClicked:"onCipherClicked",onCipherRightClicked:"onCipherRightClicked",onAddCipher:"onAddCipher",onAddCipherOptions:"onAddCipherOptions"}})},84415:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const r=n(32621),o=(n(45330),n(3174),n(51554),n(36631),n(73828),n(32621)),a=n(3174),s=n(73828),l=n(51554),c=n(45330),d=n(36631);class p{constructor(e,t,n,i,o){this.collectionService=e,this.platformUtilsService=t,this.i18nService=n,this.cipherService=i,this.logService=o,this.allowSelectNone=!1,this.onSavedCollections=new r.EventEmitter,this.collections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.cipherDomain=yield this.loadCipher(),this.collectionIds=this.loadCipherCollections(),this.cipher=yield this.cipherDomain.decrypt(),this.collections=yield this.loadCollections(),this.collections.forEach((e=>e.checked=!1)),null!=this.collectionIds&&this.collections.forEach((e=>{e.checked=null!=this.collectionIds&&this.collectionIds.indexOf(e.id)>-1}))}))}submit(){return i(this,void 0,void 0,(function*(){const e=this.collections.filter((e=>!!e.checked)).map((e=>e.id));if(this.allowSelectNone||0!==e.length){this.cipherDomain.collectionIds=e;try{this.formPromise=this.saveCollections(),yield this.formPromise,this.onSavedCollections.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("editedItem"))}catch(t){this.logService.error(t)}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectOneCollection"))}))}loadCipher(){return this.cipherService.get(this.cipherId)}loadCipherCollections(){return this.cipherDomain.collectionIds}loadCollections(){return i(this,void 0,void 0,(function*(){return(yield this.collectionService.getAllDecrypted()).filter((e=>!e.readOnly&&e.organizationId===this.cipher.organizationId))}))}saveCollections(){return this.cipherService.saveCollectionsWithServer(this.cipherDomain)}}t.CollectionsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.CollectionService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.CipherService),o.ɵɵdirectiveInject(d.LogService))},p.ɵdir=o.ɵɵdefineDirective({type:p,inputs:{cipherId:"cipherId",allowSelectNone:"allowSelectNone"},outputs:{onSavedCollections:"onSavedCollections"}})},44995:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportScopeCalloutComponent=void 0;n(63513),n(73569);const r=n(32621),o=n(63513),a=n(73569),s=n(57490),l=n(51626),c=n(99729);function d(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"app-callout",1),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,e.scopeConfig.title)),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(5,4,e.scopeConfig.description,e.scopeConfig.scopeIdentifier),"\n ")}}class p{constructor(e,t){this.organizationService=e,this.stateService=t,this.organizationId=null,this.show=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){(yield this.organizationService.hasOrganizations())&&(this.scopeConfig=null!=this.organizationId?{title:"exportingOrganizationVaultTitle",description:"exportingOrganizationVaultDescription",scopeIdentifier:(yield this.organizationService.get(this.organizationId)).name}:{title:"exportingPersonalVaultTitle",description:"exportingPersonalVaultDescription",scopeIdentifier:yield this.stateService.getEmail()},this.show=!0)}))}}t.ExportScopeCalloutComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.OrganizationService),r.ɵɵdirectiveInject(a.StateService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-export-scope-callout"]],inputs:{organizationId:"organizationId"},decls:2,vars:1,consts:[[4,"ngIf"],["type","info",3,"title"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,7,7,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[s.NgIf,l.CalloutComponent],pipes:[c.I18nPipe],encapsulation:2})},21748:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;const r=n(32621),o=(n(96832),n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055),n(80253)),a=n(49906),s=n(32621),l=n(85714),c=n(51554),d=n(73828),p=n(97445),u=n(32034),m=n(62166),h=n(36631),v=n(57055),f=n(96832);class g{constructor(e,t,n,i,o,a,s,l,c,d){this.cryptoService=e,this.i18nService=t,this.platformUtilsService=n,this.exportService=i,this.eventService=o,this.policyService=a,this.win=s,this.logService=l,this.userVerificationService=c,this.formBuilder=d,this.onSaved=new r.EventEmitter,this.disabledByPolicy=!1,this.exportForm=this.formBuilder.group({format:["json"],secret:[""]}),this.formatOptions=[{name:".json",value:"json"},{name:".csv",value:"csv"},{name:".json (Encrypted)",value:"encrypted_json"}]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.checkExportDisabled()}))}checkExportDisabled(){return i(this,void 0,void 0,(function*(){this.disabledByPolicy=yield this.policyService.policyAppliesToUser(a.PolicyType.DisablePersonalVaultExport),this.disabledByPolicy&&this.exportForm.disable()}))}get encryptedFormat(){return"encrypted_json"===this.format}submit(){return i(this,void 0,void 0,(function*(){if(this.disabledByPolicy)return void this.platformUtilsService.showToast("error",null,this.i18nService.t("personalVaultExportPolicyInEffect"));if(!(yield this.warningDialog()))return;const e=this.exportForm.get("secret").value;try{yield this.userVerificationService.verifyUser(e)}catch(t){return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message)}try{this.formPromise=this.getExportData();const e=yield this.formPromise;this.downloadFile(e),this.saved(),yield this.collectEvent(),this.exportForm.get("secret").setValue("")}catch(t){this.logService.error(t)}}))}warningDialog(){return i(this,void 0,void 0,(function*(){return this.encryptedFormat?yield this.platformUtilsService.showDialog("

"+this.i18nService.t("encExportKeyWarningDesc")+"

"+this.i18nService.t("encExportAccountWarningDesc"),this.i18nService.t("confirmVaultExport"),this.i18nService.t("exportVault"),this.i18nService.t("cancel"),"warning",!0):yield this.platformUtilsService.showDialog(this.i18nService.t("exportWarningDesc"),this.i18nService.t("confirmVaultExport"),this.i18nService.t("exportVault"),this.i18nService.t("cancel"),"warning")}))}saved(){this.onSaved.emit()}getExportData(){return this.exportService.getExport(this.format)}getFileName(e){let t=this.format;return"encrypted_json"===this.format&&(e=null==e?"encrypted":"encrypted_"+e,t="json"),this.exportService.getFileName(e,t)}collectEvent(){return i(this,void 0,void 0,(function*(){yield this.eventService.collect(o.EventType.User_ClientExportedVault)}))}get format(){return this.exportForm.get("format").value}downloadFile(e){const t=this.getFileName();this.platformUtilsService.saveFile(this.win,e,{type:"text/plain"},t)}}t.ExportComponent=g,g.ɵfac=function(e){return new(e||g)(s.ɵɵdirectiveInject(l.CryptoService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.ExportService),s.ɵɵdirectiveInject(u.EventService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(Window),s.ɵɵdirectiveInject(h.LogService),s.ɵɵdirectiveInject(v.UserVerificationService),s.ɵɵdirectiveInject(f.FormBuilder))},g.ɵdir=s.ɵɵdefineDirective({type:g,outputs:{onSaved:"onSaved"}})},17301:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderAddEditComponent=void 0;const r=n(32621),o=(n(88308),n(51554),n(36631),n(73828),n(36914)),a=n(32621),s=n(88308),l=n(51554),c=n(73828),d=n(36631);class p{constructor(e,t,n,i){this.folderService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedFolder=new r.EventEmitter,this.onDeletedFolder=new r.EventEmitter,this.editMode=!1,this.folder=new o.FolderView}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.init()}))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.folder.name||""===this.folder.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;try{const e=yield this.folderService.encrypt(this.folder);return this.formPromise=this.folderService.saveWithServer(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedFolder":"addedFolder")),this.onSavedFolder.emit(this.folder),!0}catch(e){this.logService.error(e)}return!1}))}delete(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteFolderConfirmation"),this.i18nService.t("deleteFolder"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.folderService.deleteWithServer(this.folder.id),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedFolder")),this.onDeletedFolder.emit(this.folder)}catch(e){this.logService.error(e)}return!0}))}init(){return i(this,void 0,void 0,(function*(){if(this.editMode=null!=this.folderId,this.editMode){this.editMode=!0,this.title=this.i18nService.t("editFolder");const e=yield this.folderService.get(this.folderId);this.folder=yield e.decrypt()}else this.title=this.i18nService.t("addFolder")}))}}t.FolderAddEditComponent=p,p.ɵfac=function(e){return new(e||p)(a.ɵɵdirectiveInject(s.FolderService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.LogService))},p.ɵdir=a.ɵɵdefineDirective({type:p,inputs:{folderId:"folderId"},outputs:{onSavedFolder:"onSavedFolder",onDeletedFolder:"onDeletedFolder"}})},5675:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratorComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(51554),n(36631),n(84275),n(73828),n(73569),n(13444),n(32621)),s=n(84275),l=n(13444),c=n(73828),d=n(73569),p=n(51554),u=n(36631),m=n(68012);class h{constructor(e,t,n,i,o,a,s,l){this.passwordGenerationService=e,this.usernameGenerationService=t,this.platformUtilsService=n,this.stateService=i,this.i18nService=o,this.logService=a,this.route=s,this.win=l,this.comingFromAddEdit=!1,this.onSelected=new r.EventEmitter,this.usernameOptions={},this.passwordOptions={},this.username="-",this.password="-",this.showOptions=!1,this.avoidAmbiguous=!1,this.usernameWebsite=null,this.typeOptions=[{name:o.t("password"),value:"password"},{name:o.t("username"),value:"username"}],this.passTypeOptions=[{name:o.t("password"),value:"password"},{name:o.t("passphrase"),value:"passphrase"}],this.usernameTypeOptions=[{name:o.t("plusAddressedEmail"),value:"subaddress",desc:o.t("plusAddressedEmailDesc")},{name:o.t("catchallEmail"),value:"catchall",desc:o.t("catchallEmailDesc")},{name:o.t("forwardedEmail"),value:"forwarded",desc:o.t("forwardedEmailDesc")},{name:o.t("randomWord"),value:"word"}],this.subaddressOptions=[{name:o.t("random"),value:"random"}],this.catchallOptions=[{name:o.t("random"),value:"random"}],this.forwardOptions=[{name:"SimpleLogin",value:"simplelogin"},{name:"AnonAddy",value:"anonaddy"},{name:"Firefox Relay",value:"firefoxrelay"}]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){var t;const n=yield this.passwordGenerationService.getOptions();if(this.passwordOptions=n[0],this.enforcedPasswordPolicyOptions=n[1],this.avoidAmbiguous=!this.passwordOptions.ambiguous,this.passwordOptions.type="passphrase"===this.passwordOptions.type?"passphrase":"password",this.usernameOptions=yield this.usernameGenerationService.getOptions(),null==this.usernameOptions.type&&(this.usernameOptions.type="word"),null!=this.usernameOptions.subaddressEmail&&""!==this.usernameOptions.subaddressEmail||(this.usernameOptions.subaddressEmail=yield this.stateService.getEmail()),null==this.usernameWebsite)this.usernameOptions.subaddressType=this.usernameOptions.catchallType="random";else{this.usernameOptions.website=this.usernameWebsite;const e={name:this.i18nService.t("websiteName"),value:"website-name"};this.subaddressOptions.push(e),this.catchallOptions.push(e)}if("username"!==this.type&&"password"!==this.type)if("username"===e.type||"password"===e.type)this.type=e.type;else{const e=yield this.stateService.getGeneratorOptions();this.type=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:"password"}this.regenerateWithoutButtonPress()&&(yield this.regenerate())}))))}))}typeChanged(){return i(this,void 0,void 0,(function*(){yield this.stateService.setGeneratorOptions({type:this.type}),this.regenerateWithoutButtonPress()&&(yield this.regenerate())}))}regenerate(){return i(this,void 0,void 0,(function*(){"password"===this.type?yield this.regeneratePassword():"username"===this.type&&(yield this.regenerateUsername())}))}sliderChanged(){return i(this,void 0,void 0,(function*(){this.savePasswordOptions(!1),yield this.passwordGenerationService.addHistory(this.password)}))}sliderInput(){return i(this,void 0,void 0,(function*(){this.normalizePasswordOptions(),this.password=yield this.passwordGenerationService.generatePassword(this.passwordOptions)}))}savePasswordOptions(e=!0){return i(this,void 0,void 0,(function*(){this.normalizePasswordOptions(),yield this.passwordGenerationService.saveOptions(this.passwordOptions),e&&this.regenerateWithoutButtonPress()&&(yield this.regeneratePassword())}))}saveUsernameOptions(e=!0){return i(this,void 0,void 0,(function*(){yield this.usernameGenerationService.saveOptions(this.usernameOptions),"forwarded"===this.usernameOptions.type&&(this.username="-"),e&&this.regenerateWithoutButtonPress()&&(yield this.regenerateUsername())}))}regeneratePassword(){return i(this,void 0,void 0,(function*(){this.password=yield this.passwordGenerationService.generatePassword(this.passwordOptions),yield this.passwordGenerationService.addHistory(this.password)}))}regenerateUsername(){return this.generateUsername()}generateUsername(){return i(this,void 0,void 0,(function*(){try{this.usernameGeneratingPromise=this.usernameGenerationService.generateUsername(this.usernameOptions),this.username=yield this.usernameGeneratingPromise,""!==this.username&&null!==this.username||(this.username="-")}catch(e){this.logService.error(e)}}))}copy(){const e="password"===this.type,t=null!=this.win?{window:this.win}:null;this.platformUtilsService.copyToClipboard(e?this.password:this.username,t),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(e?"password":"username")))}select(){this.onSelected.emit("password"===this.type?this.password:this.username)}toggleOptions(){this.showOptions=!this.showOptions}regenerateWithoutButtonPress(){return"username"!==this.type||"forwarded"!==this.usernameOptions.type}normalizePasswordOptions(){if(this.passwordOptions.ambiguous=!this.avoidAmbiguous,!(this.passwordOptions.uppercase||this.passwordOptions.lowercase||this.passwordOptions.number||this.passwordOptions.special)&&(this.passwordOptions.lowercase=!0,null!=this.win)){const e=this.win.document.querySelector("#lowercase");e&&(e.checked=!0)}this.passwordGenerationService.normalizeOptions(this.passwordOptions,this.enforcedPasswordPolicyOptions)}}t.GeneratorComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.PasswordGenerationService),a.ɵɵdirectiveInject(l.UsernameGenerationService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.I18nService),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.ActivatedRoute),a.ɵɵdirectiveInject(Window))},h.ɵdir=a.ɵɵdefineDirective({type:h,inputs:{comingFromAddEdit:"comingFromAddEdit",type:"type"},outputs:{onSelected:"onSelected"}})},43337:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HintComponent=void 0;const r=n(77992);t.HintComponent=class{constructor(e,t,n,i,r){this.router=e,this.i18nService=t,this.apiService=n,this.platformUtilsService=i,this.logService=r,this.email="",this.successRoute="login"}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.email&&""!==this.email)if(-1!==this.email.indexOf("@"))try{this.formPromise=this.apiService.postPasswordHint(new r.PasswordHintRequest(this.email)),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("masterPassSent")),null!=this.onSuccessfulSubmit?this.onSuccessfulSubmit():null!=this.router&&this.router.navigate([this.successRoute])}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"))}))}}},18310:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.IconComponent=void 0;n(56071),n(73569);const r=n(32773),o=n(82769),a=(n(97144),n(32621)),s=n(56071),l=n(73569),c=n(57490),d=n(23042);function p(e,t){if(1&e&&a.ɵɵelement(0,"img",3),2&e){const e=a.ɵɵnextContext();a.ɵɵpropertyInterpolate("appFallbackSrc",e.fallbackImage),a.ɵɵproperty("src",e.image,a.ɵɵsanitizeUrl)}}function u(e,t){if(1&e&&a.ɵɵelement(0,"i"),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMapInterpolate1("bwi bwi-fw bwi-lg ",e.icon,"")}}const m={Visa:"card-visa",Mastercard:"card-mastercard",Amex:"card-amex",Discover:"card-discover","Diners Club":"card-diners-club",JCB:"card-jcb",Maestro:"card-maestro",UnionPay:"card-union-pay"};class h{constructor(e,t){this.stateService=t,this.iconsUrl=e.getIconsUrl()}ngOnChanges(){return i(this,void 0,void 0,(function*(){this.image=null,this.fallbackImage=null,this.imageEnabled=!(yield this.stateService.getDisableFavicon()),this.load()}))}load(){switch(this.cipher.type){case r.CipherType.Login:this.icon="bwi-globe",this.setLoginIcon();break;case r.CipherType.SecureNote:this.icon="bwi-sticky-note";break;case r.CipherType.Card:this.icon="bwi-credit-card",this.setCardIcon();break;case r.CipherType.Identity:this.icon="bwi-id-card"}}setLoginIcon(){if(this.cipher.login.uri){let t=this.cipher.login.uri,n=!1;if(0===t.indexOf("androidapp://")?(this.icon="bwi-android",this.image=null):0===t.indexOf("iosapp://")?(this.icon="bwi-apple",this.image=null):this.imageEnabled&&-1===t.indexOf("://")&&t.indexOf(".")>-1?(t="http://"+t,n=!0):this.imageEnabled&&(n=0===t.indexOf("http")&&t.indexOf(".")>-1),this.imageEnabled&&n)try{this.image=this.iconsUrl+"/"+o.Utils.getHostname(t)+"/icon.png",this.fallbackImage="images/bwi-globe.png"}catch(e){}}else this.image=null}setCardIcon(){const e=this.cipher.card.brand;this.imageEnabled&&e in m&&(this.icon="credit-card-icon "+m[e])}}t.IconComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.EnvironmentService),a.ɵɵdirectiveInject(l.StateService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["app-vault-icon"]],inputs:{cipher:"cipher"},features:[a.ɵɵNgOnChangesFeature],decls:7,vars:2,consts:[["aria-hidden","true",1,"icon"],["alt","","decoding","async","loading","lazy",3,"src","appFallbackSrc",4,"ngIf"],[3,"class",4,"ngIf"],["alt","","decoding","async","loading","lazy",3,"src","appFallbackSrc"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,p,1,2,"img",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,u,1,3,"i",2),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n")),2&e&&(a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.imageEnabled&&t.image),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.imageEnabled||!t.image))},directives:[c.NgIf,d.FallbackSrcDirective],encapsulation:2})},33793:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockComponent=void 0;n(32621),n(68012);const r=n(14857),o=(n(91674),n(85714),n(56071),n(51554),n(72277),n(36631),n(45552),n(73828),n(73569),n(82656),n(43578)),a=n(7980),s=n(82769),l=n(22205),c=n(36119),d=n(32621),p=n(68012),u=n(51554),m=n(73828),h=n(45552),v=n(85714),f=n(82656),g=n(56071),y=n(73569),x=n(91674),S=n(36631),b=n(72277);class w{constructor(e,t,n,i,r,o,a,s,l,c,d,p){this.router=e,this.i18nService=t,this.platformUtilsService=n,this.messagingService=i,this.cryptoService=r,this.vaultTimeoutService=o,this.environmentService=a,this.stateService=s,this.apiService=l,this.logService=c,this.keyConnectorService=d,this.ngZone=p,this.masterPassword="",this.pin="",this.showPassword=!1,this.pinLock=!1,this.webVaultHostname="",this.successRoute="vault",this.invalidPinAttempts=0}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.stateService.activeAccount.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.load()}))))}))}submit(){return i(this,void 0,void 0,(function*(){if(this.pinLock&&(null==this.pin||""===this.pin))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("pinRequired"));if(!this.pinLock&&(null==this.masterPassword||""===this.masterPassword))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));const e=yield this.stateService.getKdfType(),t=yield this.stateService.getKdfIterations();if(this.pinLock){let i=!0;try{if(this.pinSet[0]){const n=yield this.cryptoService.makeKeyFromPin(this.pin,this.email,e,t,yield this.stateService.getDecryptedPinProtected()),r=yield this.cryptoService.getEncKey(n),o=yield this.stateService.getProtectedPin();i=(yield this.cryptoService.decryptToUtf8(new l.EncString(o),r))!==this.pin,i||(yield this.setKeyAndContinue(n))}else{const n=yield this.cryptoService.makeKeyFromPin(this.pin,this.email,e,t);i=!1,yield this.setKeyAndContinue(n)}}catch(n){i=!0}if(i){if(this.invalidPinAttempts++,this.invalidPinAttempts>=5)return void this.messagingService.send("logout");this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidPin"))}}else{const n=yield this.cryptoService.makeKey(this.masterPassword,this.email,e,t);let r=!1;if(null!=(yield this.cryptoService.getKeyHash()))r=yield this.cryptoService.compareAndUpdateKeyHash(this.masterPassword,n);else{const e=new c.SecretVerificationRequest,t=yield this.cryptoService.hashPassword(this.masterPassword,n,o.HashPurpose.ServerAuthorization);e.masterPasswordHash=t;try{this.formPromise=this.apiService.postAccountVerifyPassword(e),yield this.formPromise,r=!0;const t=yield this.cryptoService.hashPassword(this.masterPassword,n,o.HashPurpose.LocalAuthorization);yield this.cryptoService.setKeyHash(t)}catch(i){this.logService.error(i)}}if(r){if(this.pinSet[0]){const i=yield this.stateService.getProtectedPin(),r=yield this.cryptoService.getEncKey(n),o=yield this.cryptoService.decryptToUtf8(new l.EncString(i),r),a=yield this.cryptoService.makePinKey(o,this.email,e,t);yield this.stateService.setDecryptedPinProtected(yield this.cryptoService.encrypt(n.key,a))}yield this.setKeyAndContinue(n)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidMasterPassword"))}}))}logOut(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("logOutConfirmation"),this.i18nService.t("logOut"),this.i18nService.t("logOut"),this.i18nService.t("cancel")))&&this.messagingService.send("logout")}))}unlockBiometric(){return i(this,void 0,void 0,(function*(){if(!this.biometricLock)return;const e=null!=(yield this.cryptoService.getKey(a.KeySuffixOptions.Biometric));return e&&(yield this.doContinue()),e}))}togglePassword(){this.showPassword=!this.showPassword;const e=document.getElementById(this.pinLock?"pin":"masterPassword");this.ngZone.isStable?e.focus():this.ngZone.onStable.pipe(r.take(1)).subscribe((()=>e.focus()))}setKeyAndContinue(e){return i(this,void 0,void 0,(function*(){yield this.cryptoService.setKey(e),yield this.doContinue()}))}doContinue(){return i(this,void 0,void 0,(function*(){yield this.stateService.setBiometricLocked(!1),yield this.stateService.setEverBeenUnlocked(!0);const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),this.messagingService.send("unlocked"),null!=this.onSuccessfulSubmit?yield this.onSuccessfulSubmit():null!=this.router&&this.router.navigate([this.successRoute])}))}load(){return i(this,void 0,void 0,(function*(){this.pinSet=yield this.vaultTimeoutService.isPinLockSet(),this.pinLock=this.pinSet[0]&&null!=(yield this.stateService.getDecryptedPinProtected())||this.pinSet[1],this.supportsBiometric=yield this.platformUtilsService.supportsBiometric(),this.biometricLock=(yield this.vaultTimeoutService.isBiometricLockSet())&&((yield this.cryptoService.hasKeyStored(a.KeySuffixOptions.Biometric))||!this.platformUtilsService.supportsSecureStorage()),this.biometricText=yield this.stateService.getBiometricText(),this.email=yield this.stateService.getEmail();const e=yield this.keyConnectorService.getUsesKeyConnector();this.hideInput=e&&!this.pinLock,!e||this.biometricLock||this.pinLock||(yield this.vaultTimeoutService.logOut());const t=this.environmentService.getWebVaultUrl(),n="https://vault.bitwarden.com"===t?"https://bitwarden.com":t;this.webVaultHostname=s.Utils.getHostname(n)}))}}t.LockComponent=w,w.ɵfac=function(e){return new(e||w)(d.ɵɵdirectiveInject(p.Router),d.ɵɵdirectiveInject(u.I18nService),d.ɵɵdirectiveInject(m.PlatformUtilsService),d.ɵɵdirectiveInject(h.MessagingService),d.ɵɵdirectiveInject(v.CryptoService),d.ɵɵdirectiveInject(f.VaultTimeoutService),d.ɵɵdirectiveInject(g.EnvironmentService),d.ɵɵdirectiveInject(y.StateService),d.ɵɵdirectiveInject(x.ApiService),d.ɵɵdirectiveInject(S.LogService),d.ɵɵdirectiveInject(b.KeyConnectorService),d.ɵɵdirectiveInject(d.NgZone))},w.ɵdir=d.ɵɵdefineDirective({type:w})},13744:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginComponent=void 0;n(32621),n(68012);const r=n(14857),o=(n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(82769)),a=n(70045),s=n(60765),l=n(32621),c=n(62694),d=n(68012),p=n(73828),u=n(51554),m=n(73569),h=n(56071),v=n(84275),f=n(1659),g=n(36631);class y extends s.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(o,i,n),this.authService=e,this.router=t,this.stateService=r,this.passwordGenerationService=a,this.cryptoFunctionService=s,this.logService=l,this.ngZone=c,this.email="",this.rememberEmail=!0,this.masterPassword="",this.showPassword=!1,this.twoFactorRoute="2fa",this.successRoute="vault",this.forcePasswordResetRoute="update-temp-password",this.alwaysRememberEmail=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){null!=this.email&&""!==this.email||(this.email=yield this.stateService.getRememberedEmail(),null==this.email&&(this.email="")),this.alwaysRememberEmail||(this.rememberEmail=null!=(yield this.stateService.getRememberedEmail())),o.Utils.isBrowser&&!o.Utils.isNode&&this.focusInput()}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.setupCaptcha(),null!=this.email&&""!==this.email)if(-1!==this.email.indexOf("@"))if(null!=this.masterPassword&&""!==this.masterPassword)try{const e=new a.PasswordLogInCredentials(this.email,this.masterPassword,this.captchaToken,null);this.formPromise=this.authService.logIn(e);const t=yield this.formPromise;if(this.rememberEmail||this.alwaysRememberEmail?yield this.stateService.setRememberedEmail(this.email):yield this.stateService.setRememberedEmail(null),this.handleCaptchaRequired(t))return;if(t.requiresTwoFactor)null!=this.onSuccessfulLoginTwoFactorNavigate?this.onSuccessfulLoginTwoFactorNavigate():this.router.navigate([this.twoFactorRoute]);else if(t.forcePasswordReset)null!=this.onSuccessfulLoginForceResetNavigate?this.onSuccessfulLoginForceResetNavigate():this.router.navigate([this.forcePasswordResetRoute]);else{const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute])}}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"))}))}togglePassword(){this.showPassword=!this.showPassword,this.ngZone.isStable?document.getElementById("masterPassword").focus():this.ngZone.onStable.pipe(r.take(1)).subscribe((()=>document.getElementById("masterPassword").focus()))}launchSsoBrowser(e,t){return i(this,void 0,void 0,(function*(){const n={type:"password",length:64,uppercase:!0,lowercase:!0,numbers:!0,special:!1},i=yield this.passwordGenerationService.generatePassword(n),r=yield this.passwordGenerationService.generatePassword(n),a=yield this.cryptoFunctionService.hash(r,"sha256"),s=o.Utils.fromBufferToUrlB64(a);yield this.stateService.setSsoState(i),yield this.stateService.setSsoCodeVerifier(r);const l=this.environmentService.getWebVaultUrl();this.platformUtilsService.launchUri(l+"/#/sso?clientId="+e+"&redirectUri="+encodeURIComponent(t)+"&state="+i+"&codeChallenge="+s)}))}focusInput(){document.getElementById(null==this.email||""===this.email?"email":"masterPassword").focus()}}t.LoginComponent=y,y.ɵfac=function(e){return new(e||y)(l.ɵɵdirectiveInject(c.AuthService),l.ɵɵdirectiveInject(d.Router),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.I18nService),l.ɵɵdirectiveInject(m.StateService),l.ɵɵdirectiveInject(h.EnvironmentService),l.ɵɵdirectiveInject(v.PasswordGenerationService),l.ɵɵdirectiveInject(f.CryptoFunctionService),l.ɵɵdirectiveInject(g.LogService),l.ɵɵdirectiveInject(l.NgZone))},y.ɵdir=l.ɵɵdefineDirective({type:y,inputs:{email:"email",rememberEmail:"rememberEmail"},features:[l.ɵɵInheritDefinitionFeature]})},83249:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DynamicModalComponent=void 0;n(46915);const i=n(32621),r=(n(64684),n(38387),n(32621)),o=n(64684),a=n(46915),s=n(38387),l=["modalContent"];function c(e,t){}class d{constructor(e,t,n,i,r){this.modalService=e,this.cd=t,this.el=n,this.focusTrapFactory=i,this.modalRef=r}ngAfterViewInit(){this.loadChildComponent(this.childComponentType),null!=this.setComponentParameters&&this.setComponentParameters(this.componentRef.instance),this.cd.detectChanges(),this.modalRef.created(this.el.nativeElement),this.focusTrap=this.focusTrapFactory.create(this.el.nativeElement.querySelector(".modal-dialog")),null==this.el.nativeElement.querySelector("[appAutoFocus]")&&this.focusTrap.focusFirstTabbableElementWhenReady()}loadChildComponent(e){const t=this.modalService.resolveComponentFactory(e);this.modalContentRef.clear(),this.componentRef=this.modalContentRef.createComponent(t)}ngOnDestroy(){this.componentRef&&this.componentRef.destroy(),this.focusTrap.destroy()}close(){this.modalRef.close()}getFocus(){const e=this.el.nativeElement.querySelector("[appAutoFocus]");null==e||e.focus()}}t.DynamicModalComponent=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵdirectiveInject(o.ModalService),r.ɵɵdirectiveInject(r.ChangeDetectorRef),r.ɵɵdirectiveInject(r.ElementRef),r.ɵɵdirectiveInject(a.ConfigurableFocusTrapFactory),r.ɵɵdirectiveInject(s.ModalRef))},d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-modal"]],viewQuery:function(e,t){if(1&e&&r.ɵɵviewQuery(l,7,i.ViewContainerRef),2&e){let e;r.ɵɵqueryRefresh(e=r.ɵɵloadQuery())&&(t.modalContentRef=e.first)}},decls:2,vars:0,consts:[["modalContent",""]],template:function(e,t){1&e&&r.ɵɵtemplate(0,c,0,0,"ng-template",null,0,r.ɵɵtemplateRefExtractor)},encapsulation:2})},64050:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalInjector=void 0;t.ModalInjector=class{constructor(e,t){this._parentInjector=e,this._additionalTokens=t}get(e,t,n){var i;return null!==(i=this._additionalTokens.get(e))&&void 0!==i?i:this._parentInjector.get(e,t)}}},38387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalRef=void 0;const i=n(72872),r=n(14857);t.ModalRef=class{constructor(){this._onCreated=new i.Subject,this._onClose=new i.Subject,this._onClosed=new i.Subject,this._onShow=new i.Subject,this._onShown=new i.Subject,this.onCreated=this._onCreated.asObservable(),this.onClose=this._onClose.asObservable(),this.onClosed=this._onClosed.asObservable(),this.onShow=this._onShow.asObservable(),this.onShown=this._onShow.asObservable()}show(){this._onShow.next()}shown(){this._onShown.next()}close(e){this.lastResult=e,this._onClose.next(e)}closed(){this._onClosed.next(this.lastResult)}created(e){this._onCreated.next(e)}onClosedPromise(){return this.onClosed.pipe(r.first()).toPromise()}}},61738:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorHistoryComponent=void 0;n(51554),n(84275),n(73828);const r=n(32621),o=n(84275),a=n(73828),s=n(51554);class l{constructor(e,t,n,i){this.passwordGenerationService=e,this.platformUtilsService=t,this.i18nService=n,this.win=i,this.history=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.history=yield this.passwordGenerationService.getHistory()}))}clear(){this.history=[],this.passwordGenerationService.clear()}copy(e){const t=null!=this.win?{window:this.win}:null;this.platformUtilsService.copyToClipboard(e,t),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t("password")))}}t.PasswordGeneratorHistoryComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.PasswordGenerationService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(Window))},l.ɵdir=r.ɵɵdefineDirective({type:l})},38991:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptComponent=void 0;n(85714),n(51554),n(73828),n(38387);const r=n(32621),o=n(38387),a=n(85714),s=n(73828),l=n(51554);class c{constructor(e,t,n,i){this.modalRef=e,this.cryptoService=t,this.platformUtilsService=n,this.i18nService=i,this.showPassword=!1,this.masterPassword=""}togglePassword(){this.showPassword=!this.showPassword}submit(){return i(this,void 0,void 0,(function*(){(yield this.cryptoService.compareAndUpdateKeyHash(this.masterPassword,null))?this.modalRef.close(!0):this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidMasterPassword"))}))}}t.PasswordRepromptComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.ModalRef),r.ɵɵdirectiveInject(a.CryptoService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.I18nService))},c.ɵdir=r.ɵɵdefineDirective({type:c})},11405:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterComponent=void 0;n(68012),n(91674),n(62694),n(85714),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569);const r=n(20971),o=n(74284),a=n(6556),s=n(60765),l=n(32621),c=n(62694),d=n(68012),p=n(51554),u=n(85714),m=n(91674),h=n(73569),v=n(73828),f=n(84275),g=n(56071),y=n(36631);class x extends s.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(l,n,a),this.authService=e,this.router=t,this.cryptoService=i,this.apiService=r,this.stateService=o,this.passwordGenerationService=s,this.logService=c,this.name="",this.email="",this.masterPassword="",this.confirmMasterPassword="",this.hint="",this.showPassword=!1,this.showTerms=!0,this.acceptPolicies=!1,this.successRoute="login",this.showTerms=!a.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.setupCaptcha()}))}get masterPasswordScoreWidth(){return null==this.masterPasswordScore?0:20*(this.masterPasswordScore+1)}get masterPasswordScoreColor(){switch(this.masterPasswordScore){case 4:return"success";case 3:return"primary";case 2:return"warning";default:return"danger"}}get masterPasswordScoreText(){switch(this.masterPasswordScore){case 4:return this.i18nService.t("strong");case 3:return this.i18nService.t("good");case 2:return this.i18nService.t("weak");default:return null!=this.masterPasswordScore?this.i18nService.t("weak"):null}}submit(){return i(this,void 0,void 0,(function*(){if(!this.acceptPolicies&&this.showTerms)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("acceptPoliciesError"));if(null==this.email||""===this.email)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("emailRequired"));if(-1===this.email.indexOf("@"))return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidEmail"));if(null==this.masterPassword||""===this.masterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"));if(this.masterPassword.length<8)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength"));if(this.masterPassword!==this.confirmMasterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassDoesntMatch"));const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());if(null!=e&&e.score<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return}if(this.hint===this.masterPassword)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("hintEqualsPassword"));this.name=""===this.name?null:this.name,this.email=this.email.trim().toLowerCase();const t=r.DEFAULT_KDF_TYPE,n=r.DEFAULT_KDF_ITERATIONS,i=yield this.cryptoService.makeKey(this.masterPassword,this.email,t,n),s=yield this.cryptoService.makeEncKey(i),l=yield this.cryptoService.hashPassword(this.masterPassword,i),c=yield this.cryptoService.makeKeyPair(s[0]),d=new a.RegisterRequest(this.email,this.name,l,this.hint,s[1].encryptedString,t,n,this.referenceData,this.captchaToken);d.keys=new o.KeysRequest(c[0],c[1].encryptedString);const p=yield this.stateService.getOrganizationInvitation();null!=p&&null!=p.token&&null!=p.organizationUserId&&(d.token=p.token,d.organizationUserId=p.organizationUserId);try{this.formPromise=this.apiService.postRegister(d);try{yield this.formPromise}catch(u){if(this.handleCaptchaRequired(u))return;throw u}this.platformUtilsService.showToast("success",null,this.i18nService.t("newAccountCreated")),this.router.navigate([this.successRoute],{queryParams:{email:this.email}})}catch(u){this.logService.error(u)}}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}updatePasswordStrength(){null!=this.masterPasswordStrengthTimeout&&clearTimeout(this.masterPasswordStrengthTimeout),this.masterPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),null!=this.name&&""!==this.name&&(e=e.concat(this.name.trim().toLowerCase().split(" "))),e}}t.RegisterComponent=x,x.ɵfac=function(e){return new(e||x)(l.ɵɵdirectiveInject(c.AuthService),l.ɵɵdirectiveInject(d.Router),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(u.CryptoService),l.ɵɵdirectiveInject(m.ApiService),l.ɵɵdirectiveInject(h.StateService),l.ɵɵdirectiveInject(v.PlatformUtilsService),l.ɵɵdirectiveInject(f.PasswordGenerationService),l.ɵɵdirectiveInject(g.EnvironmentService),l.ɵɵdirectiveInject(y.LogService))},x.ɵdir=l.ɵɵdefineDirective({type:x,features:[l.ɵɵInheritDefinitionFeature]})},42893:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RemovePasswordComponent=void 0;n(68012),n(91674),n(51554),n(72277),n(73828),n(73569),n(9724);const r=n(32621),o=n(68012),a=n(73569),s=n(91674),l=n(9724),c=n(73828),d=n(51554),p=n(72277);class u{constructor(e,t,n,i,r,o,a){this.router=e,this.stateService=t,this.apiService=n,this.syncService=i,this.platformUtilsService=r,this.i18nService=o,this.keyConnectorService=a,this.continuing=!1,this.leaving=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.organization=yield this.keyConnectorService.getManagingOrganization(),this.email=yield this.stateService.getEmail(),yield this.syncService.fullSync(!1),this.loading=!1}))}convert(){return i(this,void 0,void 0,(function*(){this.continuing=!0,this.actionPromise=this.keyConnectorService.migrateUser();try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedMasterPassword")),yield this.keyConnectorService.removeConvertAccountRequired(),this.router.navigate([""])}catch(e){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e.message)}}))}leave(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("leaveOrganizationConfirmation"),this.organization.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.leaving=!0,this.actionPromise=this.apiService.postLeaveOrganization(this.organization.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("leftOrganization")),yield this.keyConnectorService.removeConvertAccountRequired(),this.router.navigate([""])}catch(e){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}}))}}t.RemovePasswordComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.StateService),r.ɵɵdirectiveInject(s.ApiService),r.ɵɵdirectiveInject(l.SyncService),r.ɵɵdirectiveInject(c.PlatformUtilsService),r.ɵɵdirectiveInject(d.I18nService),r.ɵɵdirectiveInject(p.KeyConnectorService))},u.ɵdir=r.ɵɵdefineDirective({type:u})},83810:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(57490);const r=n(32621),o=(n(56071),n(51554),n(36631),n(45552),n(73828),n(62166),n(76532),n(73569),n(49906)),a=n(70149),s=n(22620),l=n(59884),c=n(1725),d=n(32621),p=n(51554),u=n(73828),m=n(56071),h=n(57490),v=n(76532),f=n(45552),g=n(62166),y=n(36631),x=n(73569);class S{constructor(e,t,n,i,o,s,l,c,d){this.i18nService=e,this.platformUtilsService=t,this.environmentService=n,this.datePipe=i,this.sendService=o,this.messagingService=s,this.policyService=l,this.logService=c,this.stateService=d,this.onSavedSend=new r.EventEmitter,this.onDeletedSend=new r.EventEmitter,this.onCancelled=new r.EventEmitter,this.copyLink=!1,this.disableSend=!1,this.disableHideEmail=!1,this.showPassword=!1,this.sendType=a.SendType,this.canAccessPremium=!0,this.emailVerified=!0,this.alertShown=!1,this.showOptions=!1,this.typeOptions=[{name:e.t("sendTypeFile"),value:a.SendType.File},{name:e.t("sendTypeText"),value:a.SendType.Text}],this.sendLinkBaseUrl=this.environmentService.getSendUrl()}get link(){return null!=this.send.id&&null!=this.send.accessId?this.sendLinkBaseUrl+this.send.accessId+"/"+this.send.urlB64Key:null}get isSafari(){return this.platformUtilsService.isSafari()}get isDateTimeLocalSupported(){return!(this.platformUtilsService.isFirefox()||this.platformUtilsService.isSafari())}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}get editMode(){return null!=this.sendId}get title(){return this.i18nService.t(this.editMode?"editSend":"createSend")}setDates(e){this.deletionDate=e.deletionDate,this.expirationDate=e.expirationDate}load(){return i(this,void 0,void 0,(function*(){if(this.disableSend=yield this.policyService.policyAppliesToUser(o.PolicyType.DisableSend),this.disableHideEmail=yield this.policyService.policyAppliesToUser(o.PolicyType.SendOptions,(e=>e.data.disableHideEmail)),this.canAccessPremium=yield this.stateService.getCanAccessPremium(),this.emailVerified=yield this.stateService.getEmailVerified(),this.canAccessPremium&&this.emailVerified||(this.type=a.SendType.Text),null==this.send)if(this.editMode){const e=yield this.loadSend();this.send=yield e.decrypt()}else this.send=new c.SendView,this.send.type=null==this.type?a.SendType.File:this.type,this.send.file=new s.SendFileView,this.send.text=new l.SendTextView,this.send.deletionDate=new Date,this.send.deletionDate.setDate(this.send.deletionDate.getDate()+7);this.hasPassword=null!=this.send.password&&""!==this.send.password.trim()}))}submit(){return i(this,void 0,void 0,(function*(){if(this.disableSend)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("sendDisabledWarning")),!1;if(null==this.send.name||""===this.send.name)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nameRequired")),!1;let e=null;if(this.send.type===a.SendType.File&&!this.editMode){const t=document.getElementById("file").files;if(null==t||0===t.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"));if(e=t[0],t[0].size>524288e3)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("maxFileSize"))}null!=this.password&&""===this.password.trim()&&(this.password=null),this.formPromise=this.encryptSend(e).then((e=>i(this,void 0,void 0,(function*(){const t=this.sendService.saveWithServer(e);if(yield t,null==this.send.id&&(this.send.id=e[0].id),null==this.send.accessId&&(this.send.accessId=e[0].accessId),this.onSavedSend.emit(this.send),this.copyLink&&null!=this.link){const e=yield this.copyLinkToClipboard(this.link);null==e||e?this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedSend":"createdSend")):(yield this.platformUtilsService.showDialog(this.i18nService.t(this.editMode?"editedSend":"createdSend"),null,this.i18nService.t("ok"),null,"success",null),yield this.copyLinkToClipboard(this.link))}}))));try{return yield this.formPromise,!0}catch(t){this.logService.error(t)}return!1}))}copyLinkToClipboard(e){return i(this,void 0,void 0,(function*(){return Promise.resolve(this.platformUtilsService.copyToClipboard(e))}))}delete(){return i(this,void 0,void 0,(function*(){if(null!=this.deletePromise)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteSendConfirmation"),this.i18nService.t("deleteSend"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{return this.deletePromise=this.sendService.deleteWithServer(this.send.id),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedSend")),yield this.load(),this.onDeletedSend.emit(this.send),!0}catch(e){this.logService.error(e)}return!1}))}typeChanged(){this.send.type!==a.SendType.File||this.alertShown||(this.canAccessPremium?this.emailVerified||(this.alertShown=!0,this.messagingService.send("emailVerificationRequired")):(this.alertShown=!0,this.messagingService.send("premiumRequired")))}toggleOptions(){this.showOptions=!this.showOptions}loadSend(){return i(this,void 0,void 0,(function*(){return this.sendService.get(this.sendId)}))}encryptSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.sendService.encrypt(this.send,e,this.password,null);try{t[0].deletionDate=null==this.deletionDate?null:new Date(this.deletionDate)}catch(n){t[0].deletionDate=null}try{t[0].expirationDate=null==this.expirationDate?null:new Date(this.expirationDate)}catch(i){t[0].expirationDate=null}return t}))}togglePasswordVisible(){this.showPassword=!this.showPassword,document.getElementById("password").focus()}}t.AddEditComponent=S,S.ɵfac=function(e){return new(e||S)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.PlatformUtilsService),d.ɵɵdirectiveInject(m.EnvironmentService),d.ɵɵdirectiveInject(h.DatePipe),d.ɵɵdirectiveInject(v.SendService),d.ɵɵdirectiveInject(f.MessagingService),d.ɵɵdirectiveInject(g.PolicyService),d.ɵɵdirectiveInject(y.LogService),d.ɵɵdirectiveInject(x.StateService))},S.ɵdir=d.ɵɵdefineDirective({type:S,inputs:{sendId:"sendId",type:"type"},outputs:{onSavedSend:"onSavedSend",onDeletedSend:"onDeletedSend",onCancelled:"onCancelled"}})},95546:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EffluxDatesComponent=void 0;n(57490);const i=n(32621),r=n(96832),o=(n(51554),n(73828),n(32621)),a=n(51554),s=n(73828),l=n(57490);var c,d,p;!function(e){e.Default="default",e.Firefox="firefox",e.Safari="safari"}(c||(c={})),function(e){e.DeletionDate="deletion",e.ExpriationDate="expiration"}(d||(d={})),function(e){e[e.OneHour=1]="OneHour",e[e.OneDay=24]="OneDay",e[e.TwoDays=48]="TwoDays",e[e.ThreeDays=72]="ThreeDays",e[e.SevenDays=168]="SevenDays",e[e.ThirtyDays=720]="ThirtyDays",e[e.Custom=0]="Custom",e[e.Never=null]="Never"}(p||(p={}));class u{constructor(e,t,n){this.i18nService=e,this.platformUtilsService=t,this.datePipe=n,this.datesChanged=new i.EventEmitter,this.datesForm=new r.FormGroup({selectedDeletionDatePreset:new r.FormControl,selectedExpirationDatePreset:new r.FormControl,defaultDeletionDateTime:new r.FormControl,defaultExpirationDateTime:new r.FormControl,fallbackDeletionDate:new r.FormControl,fallbackDeletionTime:new r.FormControl,fallbackExpirationDate:new r.FormControl,fallbackExpirationTime:new r.FormControl}),this.deletionDatePresets=[{name:this.i18nService.t("oneHour"),value:p.OneHour},{name:this.i18nService.t("oneDay"),value:p.OneDay},{name:this.i18nService.t("days","2"),value:p.TwoDays},{name:this.i18nService.t("days","3"),value:p.ThreeDays},{name:this.i18nService.t("days","7"),value:p.SevenDays},{name:this.i18nService.t("days","30"),value:p.ThirtyDays},{name:this.i18nService.t("custom"),value:p.Custom}],this.expirationDatePresets=[{name:this.i18nService.t("never"),value:p.Never}].concat([...this.deletionDatePresets])}get browserPath(){return this.platformUtilsService.isFirefox()?c.Firefox:this.platformUtilsService.isSafari()?c.Safari:c.Default}get selectedDeletionDatePreset(){return this.datesForm.get("selectedDeletionDatePreset")}get selectedExpirationDatePreset(){return this.datesForm.get("selectedExpirationDatePreset")}get defaultDeletionDateTime(){return this.datesForm.get("defaultDeletionDateTime")}get defaultExpirationDateTime(){return this.datesForm.get("defaultExpirationDateTime")}get fallbackDeletionDate(){return this.datesForm.get("fallbackDeletionDate")}get fallbackDeletionTime(){return this.datesForm.get("fallbackDeletionTime")}get fallbackExpirationDate(){return this.datesForm.get("fallbackExpirationDate")}get fallbackExpirationTime(){return this.datesForm.get("fallbackExpirationTime")}get formattedDeletionDate(){switch(this.selectedDeletionDatePreset.value){case p.Never:return this.selectedDeletionDatePreset.setValue(p.SevenDays),this.formattedDeletionDate;case p.Custom:switch(this.browserPath){case c.Safari:case c.Firefox:return this.fallbackDeletionDate.value+"T"+this.fallbackDeletionTime.value;default:return this.defaultDeletionDateTime.value}default:{const e=new Date,t=e.setTime(e.getTime()+60*this.selectedDeletionDatePreset.value*60*1e3);return new Date(t).toString()}}}get formattedExpirationDate(){switch(this.selectedExpirationDatePreset.value){case p.Never:return null;case p.Custom:switch(this.browserPath){case c.Safari:case c.Firefox:return this.fallbackExpirationDate.value&&this.fallbackExpirationTime.value||!this.editMode?this.fallbackExpirationDate.value+"T"+this.fallbackExpirationTime.value:null;default:return this.defaultExpirationDateTime.value?this.defaultExpirationDateTime.value:null}default:{const e=new Date,t=e.setTime(e.getTime()+60*this.selectedExpirationDatePreset.value*60*1e3);return new Date(t).toString()}}}get safariDeletionTimePresetOptions(){return this.safariTimePresetOptions(d.DeletionDate)}get safariExpirationTimePresetOptions(){return this.safariTimePresetOptions(d.ExpriationDate)}get nextWeek(){const e=new Date;return e.setDate(e.getDate()+7),e}ngOnInit(){this.setInitialFormValues(),this.emitDates(),this.datesForm.valueChanges.subscribe((()=>{this.emitDates()}))}onDeletionDatePresetSelect(e){this.selectedDeletionDatePreset.setValue(e)}clearExpiration(){switch(this.browserPath){case c.Safari:case c.Firefox:this.fallbackExpirationDate.setValue(null),this.fallbackExpirationTime.setValue(null);break;case c.Default:this.defaultExpirationDateTime.setValue(null)}}emitDates(){this.datesChanged.emit({deletionDate:this.formattedDeletionDate,expirationDate:this.formattedExpirationDate})}setInitialFormValues(){if(this.editMode)switch(this.selectedDeletionDatePreset.setValue(p.Custom),this.selectedExpirationDatePreset.setValue(p.Custom),this.browserPath){case c.Safari:case c.Firefox:this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0,10)),this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0,5)),null!=this.initialExpirationDate&&(this.fallbackExpirationDate.setValue(this.initialExpirationDate.toISOString().slice(0,10)),this.fallbackExpirationTime.setValue(this.initialExpirationDate.toTimeString().slice(0,5)));break;case c.Default:this.initialExpirationDate&&this.defaultExpirationDateTime.setValue(this.datePipe.transform(new Date(this.initialExpirationDate),"yyyy-MM-ddTHH:mm")),this.defaultDeletionDateTime.setValue(this.datePipe.transform(new Date(this.initialDeletionDate),"yyyy-MM-ddTHH:mm"))}else if(this.selectedDeletionDatePreset.setValue(p.SevenDays),this.selectedExpirationDatePreset.setValue(p.Never),this.browserPath===c.Safari)this.fallbackDeletionDate.setValue(this.nextWeek.toISOString().slice(0,10)),this.fallbackDeletionTime.setValue(this.safariTimePresetOptions(d.DeletionDate)[1].twentyFourHour)}safariTimePresetOptions(e){const t=[],n=[],i=[],r=[];for(let a=1;a<=12;a++)for(let e=0;e<60;e+=15){let o=a.toString(),s=e.toString();if(a<10&&(o="0"+o),e<10&&(s="0"+s),12===a){const e={twelveHour:`${o}:${s} AM`,twentyFourHour:`00:${s}`};n.push(e);const i={twelveHour:`${o}:${s} PM`,twentyFourHour:`${o}:${s}`};t.push(i)}else{const e={twelveHour:`${o}:${s} AM`,twentyFourHour:`${o}:${s}`};i.push(e);const t={twelveHour:`${o}:${s} PM`,twentyFourHour:`${a+12}:${s}`};r.push(t)}}const o=[...n,...i,...t,...r];if(e===d.ExpriationDate&&null!=this.initialExpirationDate&&this.editMode){return[{twelveHour:this.datePipe.transform(this.initialExpirationDate,"hh:mm a"),twentyFourHour:this.datePipe.transform(this.initialExpirationDate,"HH:mm")},{twelveHour:null,twentyFourHour:null},...o]}if(e===d.DeletionDate&&null!=this.initialDeletionDate&&this.editMode){return[{twelveHour:this.datePipe.transform(this.initialDeletionDate,"hh:mm a"),twentyFourHour:this.datePipe.transform(this.initialDeletionDate,"HH:mm")},...o]}return[{twelveHour:null,twentyFourHour:null},...o]}}t.EffluxDatesComponent=u,u.ɵfac=function(e){return new(e||u)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.DatePipe))},u.ɵdir=o.ɵɵdefineDirective({type:u,inputs:{initialDeletionDate:"initialDeletionDate",initialExpirationDate:"initialExpirationDate",editMode:"editMode",disabled:"disabled"},outputs:{datesChanged:"datesChanged"}})},23446:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendComponent=void 0;n(32621),n(56071),n(51554),n(36631),n(73828),n(62166),n(60421),n(76532);const r=n(49906),o=n(70149),a=n(32621),s=n(76532),l=n(51554),c=n(73828),d=n(56071),p=n(60421),u=n(62166),m=n(36631);class h{constructor(e,t,n,i,r,a,s,l){this.sendService=e,this.i18nService=t,this.platformUtilsService=n,this.environmentService=i,this.ngZone=r,this.searchService=a,this.policyService=s,this.logService=l,this.disableSend=!1,this.sendType=o.SendType,this.loaded=!1,this.loading=!0,this.refreshing=!1,this.expired=!1,this.type=null,this.sends=[],this.filteredSends=[],this.searchPending=!1,this.hasSearched=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.disableSend=yield this.policyService.policyAppliesToUser(r.PolicyType.DisableSend)}))}load(e=null){return i(this,void 0,void 0,(function*(){this.loading=!0;const e=yield this.sendService.getAllDecrypted();this.sends=e,null!=this.onSuccessfulLoad?yield this.onSuccessfulLoad():this.selectAll(),this.loading=!1,this.loaded=!0}))}reload(e=null){return i(this,void 0,void 0,(function*(){this.loaded=!1,this.sends=[],yield this.load(e)}))}refresh(){return i(this,void 0,void 0,(function*(){try{this.refreshing=!0,yield this.reload(this.filter)}finally{this.refreshing=!1}}))}applyFilter(e=null){return i(this,void 0,void 0,(function*(){this.filter=e,yield this.search(null)}))}search(e=null){return i(this,void 0,void 0,(function*(){if(this.searchPending=!1,null!=this.searchTimeout&&clearTimeout(this.searchTimeout),null==e)return this.hasSearched=this.searchService.isSearchable(this.searchText),this.filteredSends=this.sends.filter((e=>null==this.filter||this.filter(e))),void this.applyTextSearch();this.searchPending=!0,this.searchTimeout=setTimeout((()=>i(this,void 0,void 0,(function*(){this.hasSearched=this.searchService.isSearchable(this.searchText),this.filteredSends=this.sends.filter((e=>null==this.filter||this.filter(e))),this.applyTextSearch(),this.searchPending=!1}))),e)}))}removePassword(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise||null==e.password)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removePasswordConfirmation"),this.i18nService.t("removePassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.sendService.removePasswordWithServer(e.id),yield this.actionPromise,null!=this.onSuccessfulRemovePassword?this.onSuccessfulRemovePassword():(this.platformUtilsService.showToast("success",null,this.i18nService.t("removedPassword")),yield this.load())}catch(t){this.logService.error(t)}this.actionPromise=null}))}delete(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return!1;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteSendConfirmation"),this.i18nService.t("deleteSend"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.sendService.deleteWithServer(e.id),yield this.actionPromise,null!=this.onSuccessfulDelete?this.onSuccessfulDelete():(this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedSend")),yield this.refresh())}catch(t){this.logService.error(t)}return this.actionPromise=null,!0}))}copy(e){const t=this.environmentService.getSendUrl()+e.accessId+"/"+e.urlB64Key;this.platformUtilsService.copyToClipboard(t),this.platformUtilsService.showToast("success",null,this.i18nService.t("valueCopied",this.i18nService.t("sendLink")))}searchTextChanged(){this.search(200)}selectAll(){this.clearSelections(),this.selectedAll=!0,this.applyFilter(null)}selectType(e){this.clearSelections(),this.selectedType=e,this.applyFilter((t=>t.type===e))}clearSelections(){this.selectedAll=!1,this.selectedType=null}applyTextSearch(){null!=this.searchText&&(this.filteredSends=this.searchService.searchSends(this.filteredSends,this.searchText))}}t.SendComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.SendService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.EnvironmentService),a.ɵɵdirectiveInject(a.NgZone),a.ɵɵdirectiveInject(p.SearchService),a.ɵɵdirectiveInject(u.PolicyService),a.ɵɵdirectiveInject(m.LogService))},h.ɵdir=a.ɵɵdefineDirective({type:h})},24656:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(43578)),a=n(20971),s=n(82769),l=n(74284),c=n(27784),d=n(57751),p=n(16545),u=n(32621),m=n(51554),h=n(85714),v=n(45552),f=n(84275),g=n(73828),y=n(62166),x=n(68012),S=n(91674),b=n(9724),w=n(73569);class C extends p.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,d),this.router=a,this.apiService=s,this.syncService=l,this.route=c,this.syncLoading=!0,this.showPassword=!1,this.hint="",this.identifier=null,this.resetPasswordAutoEnroll=!1,this.successRoute="vault"}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){if(yield this.syncService.fullSync(!0),this.syncLoading=!1,this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){null!=e.identifier&&(this.identifier=e.identifier)})))),null!=this.identifier)try{const e=yield this.apiService.getOrganizationAutoEnrollStatus(this.identifier);this.orgId=e.id,this.resetPasswordAutoEnroll=e.resetPasswordEnabled,this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPoliciesForInvitedUsers(this.orgId)}catch(t){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}e.ngOnInit.call(this)}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return this.kdf=a.DEFAULT_KDF_TYPE,this.kdfIterations=a.DEFAULT_KDF_ITERATIONS,!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){const r=yield this.cryptoService.makeKeyPair(n[0]),o=new d.SetPasswordRequest(e,n[1].encryptedString,this.hint,this.kdf,this.kdfIterations,this.identifier,new l.KeysRequest(r[0],r[1].encryptedString));try{this.resetPasswordAutoEnroll?this.formPromise=this.apiService.setPassword(o).then((()=>i(this,void 0,void 0,(function*(){return yield this.onSetPasswordSuccess(t,n,r),this.apiService.getOrganizationKeys(this.orgId)})))).then((e=>i(this,void 0,void 0,(function*(){if(null==e)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const t=yield this.stateService.getUserId(),n=s.Utils.fromB64ToArray(e.publicKey),i=yield this.cryptoService.getEncKey(),r=yield this.cryptoService.rsaEncrypt(i.key,n.buffer),o=new c.OrganizationUserResetPasswordEnrollmentRequest;return o.resetPasswordKey=r.encryptedString,this.apiService.putOrganizationUserResetPasswordEnrollment(this.orgId,t,o)})))):this.formPromise=this.apiService.setPassword(o).then((()=>i(this,void 0,void 0,(function*(){yield this.onSetPasswordSuccess(t,n,r)})))),yield this.formPromise,null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.router.navigate([this.successRoute])}catch(a){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}onSetPasswordSuccess(e,t,n){return i(this,void 0,void 0,(function*(){yield this.stateService.setKdfType(this.kdf),yield this.stateService.setKdfIterations(this.kdfIterations),yield this.cryptoService.setKey(e),yield this.cryptoService.setEncKey(t[1].encryptedString),yield this.cryptoService.setEncPrivateKey(n[1].encryptedString);const i=yield this.cryptoService.hashPassword(this.masterPassword,e,o.HashPurpose.LocalAuthorization);yield this.cryptoService.setKeyHash(i)}))}}t.SetPasswordComponent=C,C.ɵfac=function(e){return new(e||C)(u.ɵɵdirectiveInject(m.I18nService),u.ɵɵdirectiveInject(h.CryptoService),u.ɵɵdirectiveInject(v.MessagingService),u.ɵɵdirectiveInject(f.PasswordGenerationService),u.ɵɵdirectiveInject(g.PlatformUtilsService),u.ɵɵdirectiveInject(y.PolicyService),u.ɵɵdirectiveInject(x.Router),u.ɵɵdirectiveInject(S.ApiService),u.ɵɵdirectiveInject(b.SyncService),u.ɵɵdirectiveInject(x.ActivatedRoute),u.ɵɵdirectiveInject(w.StateService))},C.ɵdir=u.ɵɵdefineDirective({type:C,features:[u.ɵɵInheritDefinitionFeature]})},96853:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutInputComponent=void 0;n(96832),n(51554),n(62166);const r=n(49906),o=n(32621),a=n(96832),s=n(62166),l=n(51554);class c{constructor(e,t,n){this.formBuilder=e,this.policyService=t,this.i18nService=n,this.form=this.formBuilder.group({vaultTimeout:[null],custom:this.formBuilder.group({hours:[null],minutes:[null]})})}get showCustom(){return this.form.get("vaultTimeout").value===c.CUSTOM_VALUE}ngOnInit(){return i(this,void 0,void 0,(function*(){if(yield this.policyService.policyAppliesToUser(r.PolicyType.MaximumVaultTimeout)){const e=yield this.policyService.getAll(r.PolicyType.MaximumVaultTimeout);this.vaultTimeoutPolicy=e[0],this.vaultTimeoutPolicyHours=Math.floor(this.vaultTimeoutPolicy.data.minutes/60),this.vaultTimeoutPolicyMinutes=this.vaultTimeoutPolicy.data.minutes%60,this.vaultTimeouts=this.vaultTimeouts.filter((e=>e.value<=this.vaultTimeoutPolicy.data.minutes&&(e.value>0||e.value===c.CUSTOM_VALUE)&&null!=e.value)),this.validatorChange()}this.form.valueChanges.subscribe((e=>i(this,void 0,void 0,(function*(){this.onChange(this.getVaultTimeout(e))})))),this.form.get("vaultTimeout").valueChanges.subscribe((e=>{if(e!==c.CUSTOM_VALUE)return;const t=Math.max(this.form.value.vaultTimeout,0);this.form.patchValue({custom:{hours:Math.floor(t/60),minutes:t%60}})}))}))}ngOnChanges(){this.vaultTimeouts.push({name:this.i18nService.t("custom"),value:c.CUSTOM_VALUE})}getVaultTimeout(e){return e.vaultTimeout!==c.CUSTOM_VALUE?e.vaultTimeout:60*e.custom.hours+e.custom.minutes}writeValue(e){null!=e&&(this.vaultTimeouts.every((t=>t.value!==e))?this.form.setValue({vaultTimeout:c.CUSTOM_VALUE,custom:{hours:Math.floor(e/60),minutes:e%60}}):this.form.patchValue({vaultTimeout:e}))}registerOnChange(e){this.onChange=e}registerOnTouched(e){}setDisabledState(e){}validate(e){var t,n;return this.vaultTimeoutPolicy&&(null===(n=null===(t=this.vaultTimeoutPolicy)||void 0===t?void 0:t.data)||void 0===n?void 0:n.minutes)e)).filter((e=>!e.readOnly));const t=yield this.organizationService.getAll();this.organizations=t.sort(a.Utils.getSortFunction(this.i18nService,"name")).filter((e=>e.enabled&&e.status===o.OrganizationUserStatusType.Confirmed));const n=yield this.cipherService.get(this.cipherId);this.cipher=yield n.decrypt(),null==this.organizationId&&this.organizations.length>0&&(this.organizationId=this.organizations[0].id),this.filterCollections()}))}filterCollections(){this.writeableCollections.forEach((e=>e.checked=!1)),null==this.organizationId||0===this.writeableCollections.length?this.collections=[]:this.collections=this.writeableCollections.filter((e=>e.organizationId===this.organizationId))}submit(){var e,t;return i(this,void 0,void 0,(function*(){const n=this.collections.filter((e=>!!e.checked)).map((e=>e.id));if(0===n.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectOneCollection"));const r=yield this.cipherService.get(this.cipherId),o=yield r.decrypt(),a=null!==(t=null===(e=this.organizations.find((e=>e.id===this.organizationId)))||void 0===e?void 0:e.name)&&void 0!==t?t:this.i18nService.t("organization");try{return this.formPromise=this.cipherService.shareWithServer(o,this.organizationId,n).then((()=>i(this,void 0,void 0,(function*(){this.onSharedCipher.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItemToOrg",o.name,a))})))),yield this.formPromise,!0}catch(s){this.logService.error(s)}return!1}))}get canSave(){if(null!=this.collections)for(let e=0;ei(this,void 0,void 0,(function*(){if(null!=e.code&&null!=e.state){const t=yield this.stateService.getSsoCodeVerifier(),n=yield this.stateService.getSsoState();yield this.stateService.setSsoCodeVerifier(null),yield this.stateService.setSsoState(null),null!=e.code&&null!=t&&null!=n&&this.checkState(n,e.state)&&(yield this.logIn(e.code,t,this.getOrgIdentifierFromState(e.state)))}else null!=e.clientId&&null!=e.redirectUri&&null!=e.state&&null!=e.codeChallenge&&(this.redirectUri=e.redirectUri,this.state=e.state,this.codeChallenge=e.codeChallenge,this.clientId=e.clientId)}))))}))}submit(e,t){return i(this,void 0,void 0,(function*(){if(this.initiateSsoFormPromise=this.preValidate(),yield this.initiateSsoFormPromise){const n=yield this.buildAuthorizeUrl(e,t);this.platformUtilsService.launchUri(n,{sameWindow:!0})}}))}preValidate(){return i(this,void 0,void 0,(function*(){return null==this.identifier||""===this.identifier?(this.platformUtilsService.showToast("error",this.i18nService.t("ssoValidationFailed"),this.i18nService.t("ssoIdentifierRequired")),!1):yield this.apiService.preValidateSso(this.identifier)}))}buildAuthorizeUrl(e,t){return i(this,void 0,void 0,(function*(){let n=this.codeChallenge,i=this.state;const r={type:"password",length:64,uppercase:!0,lowercase:!0,numbers:!0,special:!1};if(null==n){const e=yield this.passwordGenerationService.generatePassword(r),t=yield this.cryptoFunctionService.hash(e,"sha256");n=o.Utils.fromBufferToUrlB64(t),yield this.stateService.setSsoCodeVerifier(e)}null==i&&(i=yield this.passwordGenerationService.generatePassword(r),e&&(i+=`_returnUri='${e}'`)),i+=`_identifier=${this.identifier}`,yield this.stateService.setSsoState(i);let a=this.environmentService.getIdentityUrl()+"/connect/authorize?client_id="+this.clientId+"&redirect_uri="+encodeURIComponent(this.redirectUri)+"&response_type=code&scope=api offline_access&state="+i+"&code_challenge="+n+"&code_challenge_method=S256&response_mode=query&domain_hint="+encodeURIComponent(this.identifier);if(t){const e=yield this.apiService.getSsoUserIdentifier();a+=`&user_identifier=${encodeURIComponent(e)}`}return a}))}logIn(e,t,n){return i(this,void 0,void 0,(function*(){this.loggingIn=!0;try{const i=new a.SsoLogInCredentials(e,t,this.redirectUri,n);this.formPromise=this.authService.logIn(i);const r=yield this.formPromise;if(r.requiresTwoFactor)null!=this.onSuccessfulLoginTwoFactorNavigate?this.onSuccessfulLoginTwoFactorNavigate():this.router.navigate([this.twoFactorRoute],{queryParams:{identifier:n,sso:"true"}});else if(r.resetMasterPassword)null!=this.onSuccessfulLoginChangePasswordNavigate?this.onSuccessfulLoginChangePasswordNavigate():this.router.navigate([this.changePasswordRoute],{queryParams:{identifier:n}});else if(r.forcePasswordReset)null!=this.onSuccessfulLoginForceResetNavigate?this.onSuccessfulLoginForceResetNavigate():this.router.navigate([this.forcePasswordResetRoute]);else{const e=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!e),null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute])}}catch(i){this.logService.error(i),"Key Connector error"===i.message&&this.platformUtilsService.showToast("error",null,this.i18nService.t("ssoKeyConnectorError"))}this.loggingIn=!1}))}getOrgIdentifierFromState(e){if(null==e)return null;const t=e.split("_identifier=");return t.length>1?t[1]:null}checkState(e,t){if(null==e)return!1;if(null==t)return!1;const n=e.split("_identifier="),i=t.split("_identifier=");return n[0]===i[0]}}t.SsoComponent=y,y.ɵfac=function(e){return new(e||y)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.ApiService),s.ɵɵdirectiveInject(h.CryptoFunctionService),s.ɵɵdirectiveInject(v.EnvironmentService),s.ɵɵdirectiveInject(f.PasswordGenerationService),s.ɵɵdirectiveInject(g.LogService))},y.ɵdir=s.ɵɵdefineDirective({type:y})},59703:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenToastModule=t.BitwardenToastGlobalConfig=t.BitwardenToast=void 0;const i=n(98212),r=n(57490),o=(n(32621),n(68290)),a=n(32621),s=n(68290),l=n(57490);function c(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",6),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().remove()})),a.ɵɵelementStart(1,"span",7),a.ɵɵtext(2,"×"),a.ɵɵelementEnd(),a.ɵɵelementEnd()}}function d(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("[",e.duplicatesCount+1,"]")}}function p(e,t){if(1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1),a.ɵɵtemplate(2,d,2,1,"ng-container",5),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.titleClass),a.ɵɵattribute("aria-label",e.title),a.ɵɵadvance(1),a.ɵɵtextInterpolate1(" ",e.title," "),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",e.duplicatesCount)}}function u(e,t){if(1&e&&a.ɵɵelement(0,"div",8),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.messageClass),a.ɵɵproperty("innerHTML",e.message,a.ɵɵsanitizeHtml)}}function m(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",9),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵclassMap(e.options.messageClass),a.ɵɵattribute("aria-label",e.message),a.ɵɵadvance(1),a.ɵɵtextInterpolate1(" ",e.message," ")}}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵelement(1,"div",10),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵstyleProp("width",e.width+"%")}}class v extends o.Toast{constructor(e,t){super(e,t),this.toastrService=e,this.toastPackage=t}}t.BitwardenToast=v,v.ɵfac=function(e){return new(e||v)(a.ɵɵdirectiveInject(s.ToastrService),a.ɵɵdirectiveInject(s.ToastPackage))},v.ɵcmp=a.ɵɵdefineComponent({type:v,selectors:[["","toast-component2",""]],features:[a.ɵɵInheritDefinitionFeature],attrs:["toast-component2",""],decls:8,vars:5,consts:[["type","button","class","toast-close-button","aria-label","Close",3,"click",4,"ngIf"],[1,"icon"],[3,"class",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class","innerHTML",4,"ngIf"],["role","alertdialog","aria-live","polite",3,"class",4,"ngIf"],[4,"ngIf"],["type","button","aria-label","Close",1,"toast-close-button",3,"click"],["aria-hidden","true"],["role","alertdialog","aria-live","polite",3,"innerHTML"],["role","alertdialog","aria-live","polite"],[1,"toast-progress"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,c,3,0,"button",0),a.ɵɵelementStart(1,"div",1),a.ɵɵelement(2,"i"),a.ɵɵelementEnd(),a.ɵɵelementStart(3,"div"),a.ɵɵtemplate(4,p,3,5,"div",2),a.ɵɵtemplate(5,u,1,3,"div",3),a.ɵɵtemplate(6,m,2,4,"div",4),a.ɵɵelementEnd(),a.ɵɵtemplate(7,h,2,2,"div",5)),2&e&&(a.ɵɵproperty("ngIf",t.options.closeButton),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.title),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.message&&t.options.enableHtml),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.message&&!t.options.enableHtml),a.ɵɵadvance(1),a.ɵɵproperty("ngIf",t.options.progressBar))},directives:[l.NgIf],encapsulation:2,data:{animation:[i.trigger("flyInOut",[i.state("inactive",i.style({opacity:0})),i.state("active",i.style({opacity:1})),i.state("removed",i.style({opacity:0})),i.transition("inactive => active",i.animate("{{ easeTime }}ms {{ easing }}")),i.transition("active => removed",i.animate("{{ easeTime }}ms {{ easing }}"))])]}}),t.BitwardenToastGlobalConfig=Object.assign(Object.assign({},o.DefaultNoComponentGlobalConfig),{toastComponent:v});class f{static forRoot(e={}){return{ngModule:f,providers:[{provide:o.TOAST_CONFIG,useValue:{default:t.BitwardenToastGlobalConfig,config:e}}]}}}t.BitwardenToastModule=f,f.ɵfac=function(e){return new(e||f)},f.ɵmod=a.ɵɵdefineNgModule({type:f}),f.ɵinj=a.ɵɵdefineInjector({imports:[[r.CommonModule]]})},63736:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorOptionsComponent=void 0;const i=n(32621),r=(n(68012),n(51554),n(73828),n(27458),n(32621)),o=n(27458),a=n(68012),s=n(51554),l=n(73828);class c{constructor(e,t,n,r,o){this.twoFactorService=e,this.router=t,this.i18nService=n,this.platformUtilsService=r,this.win=o,this.onProviderSelected=new i.EventEmitter,this.onRecoverSelected=new i.EventEmitter,this.providers=[]}ngOnInit(){this.providers=this.twoFactorService.getSupportedProviders(this.win)}choose(e){this.onProviderSelected.emit(e.type)}recover(){this.platformUtilsService.launchUri("https://bitwarden.com/help/lost-two-step-device/"),this.onRecoverSelected.emit()}}t.TwoFactorOptionsComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.TwoFactorService),r.ɵɵdirectiveInject(a.Router),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(Window))},c.ɵdir=r.ɵɵdefineDirective({type:c,outputs:{onProviderSelected:"onProviderSelected",onRecoverSelected:"onRecoverSelected"}})},71116:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorComponent=void 0;n(68012);const r=n(51597),o=n(14857),a=(n(91674),n(5576),n(62694),n(56071),n(51554),n(36631),n(73828),n(73569),n(27458),n(97374)),s=n(28705),l=n(74598),c=n(88307),d=n(96837),p=n(60765),u=n(32621),m=n(62694),h=n(68012),v=n(51554),f=n(91674),g=n(73828),y=n(56071),x=n(73569),S=n(36631),b=n(27458),w=n(5576);class C extends p.CaptchaProtectedComponent{constructor(e,t,n,i,r,o,s,l,c,p,u,m){super(s,n,r),this.authService=e,this.router=t,this.i18nService=n,this.apiService=i,this.platformUtilsService=r,this.win=o,this.environmentService=s,this.stateService=l,this.route=c,this.logService=p,this.twoFactorService=u,this.appIdService=m,this.token="",this.remember=!1,this.webAuthnReady=!1,this.webAuthnNewTab=!1,this.providers=d.TwoFactorProviders,this.providerType=a.TwoFactorProviderType,this.selectedProviderType=a.TwoFactorProviderType.Authenticator,this.webAuthnSupported=!1,this.webAuthn=null,this.title="",this.twoFactorEmail=null,this.identifier=null,this.loginRoute="login",this.successRoute="vault",this.webAuthnSupported=this.platformUtilsService.supportsWebAuthn(o)}get webAuthnAllow(){return`publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.authing&&null!=this.twoFactorService.getProviders()){if(this.route.queryParams.pipe(o.first()).subscribe((e=>{null!=e.identifier&&(this.identifier=e.identifier)})),this.needsLock&&(this.successRoute="lock"),null!=this.win&&this.webAuthnSupported){const e=this.environmentService.getWebVaultUrl();this.webAuthn=new s.WebAuthnIFrame(this.win,e,this.webAuthnNewTab,this.platformUtilsService,this.i18nService,(e=>{this.token=e,this.submit()}),(e=>{this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),e)}),(e=>{"ready"===e&&(this.webAuthnReady=!0)}))}this.selectedProviderType=this.twoFactorService.getDefaultProvider(this.webAuthnSupported),yield this.init()}else this.router.navigate([this.loginRoute])}))}ngOnDestroy(){this.cleanupWebAuthn(),this.webAuthn=null}init(){return i(this,void 0,void 0,(function*(){if(null==this.selectedProviderType)return void(this.title=this.i18nService.t("loginUnavailable"));this.cleanupWebAuthn(),this.title=d.TwoFactorProviders[this.selectedProviderType].name;const e=this.twoFactorService.getProviders().get(this.selectedProviderType);switch(this.selectedProviderType){case a.TwoFactorProviderType.WebAuthn:this.webAuthnNewTab||setTimeout((()=>{this.authWebAuthn()}),500);break;case a.TwoFactorProviderType.Duo:case a.TwoFactorProviderType.OrganizationDuo:setTimeout((()=>{r.init({iframe:void 0,host:e.Host,sig_request:e.Signature,submit_callback:e=>i(this,void 0,void 0,(function*(){const t=e.querySelector('input[name="sig_response"]');null!=t&&(this.token=t.value,yield this.submit())}))})}),0);break;case a.TwoFactorProviderType.Email:this.twoFactorEmail=e.Email,this.twoFactorService.getProviders().size>1&&(yield this.sendEmail(!1))}}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.setupCaptcha(),null!=this.token&&""!==this.token){if(this.selectedProviderType===a.TwoFactorProviderType.WebAuthn){if(null==this.webAuthn)return;this.webAuthn.stop()}else this.selectedProviderType!==a.TwoFactorProviderType.Email&&this.selectedProviderType!==a.TwoFactorProviderType.Authenticator||(this.token=this.token.replace(" ","").trim());try{yield this.doSubmit()}catch(e){this.selectedProviderType===a.TwoFactorProviderType.WebAuthn&&null!=this.webAuthn&&this.webAuthn.start()}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("verificationCodeRequired"))}))}doSubmit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.authService.logInTwoFactor(new l.TokenRequestTwoFactor(this.selectedProviderType,this.token,this.remember),this.captchaToken);const e=yield this.formPromise,t=yield this.stateService.getDisableFavicon();yield this.stateService.setDisableFavicon(!!t),this.handleCaptchaRequired(e)||(null!=this.onSuccessfulLogin&&this.onSuccessfulLogin(),e.resetMasterPassword&&(this.successRoute="set-password"),e.forcePasswordReset&&(this.successRoute="update-temp-password"),null!=this.onSuccessfulLoginNavigate?this.onSuccessfulLoginNavigate():this.router.navigate([this.successRoute],{queryParams:{identifier:this.identifier}}))}))}sendEmail(e){return i(this,void 0,void 0,(function*(){if(this.selectedProviderType===a.TwoFactorProviderType.Email&&null==this.emailPromise){try{const t=new c.TwoFactorEmailRequest;t.email=this.authService.email,t.masterPasswordHash=this.authService.masterPasswordHash,t.deviceIdentifier=yield this.appIdService.getAppId(),this.emailPromise=this.apiService.postTwoFactorEmail(t),yield this.emailPromise,e&&this.platformUtilsService.showToast("success",null,this.i18nService.t("verificationCodeEmailSent",this.twoFactorEmail))}catch(t){this.logService.error(t)}this.emailPromise=null}}))}authWebAuthn(){const e=this.twoFactorService.getProviders().get(this.selectedProviderType);this.webAuthnSupported&&null!=this.webAuthn&&this.webAuthn.init(e)}cleanupWebAuthn(){null!=this.webAuthn&&(this.webAuthn.stop(),this.webAuthn.cleanup())}get authing(){return this.authService.authingWithPassword()||this.authService.authingWithSso()||this.authService.authingWithApiKey()}get needsLock(){return this.authService.authingWithSso()||this.authService.authingWithApiKey()}}t.TwoFactorComponent=C,C.ɵfac=function(e){return new(e||C)(u.ɵɵdirectiveInject(m.AuthService),u.ɵɵdirectiveInject(h.Router),u.ɵɵdirectiveInject(v.I18nService),u.ɵɵdirectiveInject(f.ApiService),u.ɵɵdirectiveInject(g.PlatformUtilsService),u.ɵɵdirectiveInject(Window),u.ɵɵdirectiveInject(y.EnvironmentService),u.ɵɵdirectiveInject(x.StateService),u.ɵɵdirectiveInject(h.ActivatedRoute),u.ɵɵdirectiveInject(S.LogService),u.ɵɵdirectiveInject(b.TwoFactorService),u.ɵɵdirectiveInject(w.AppIdService))},C.ɵdir=u.ɵɵdefineDirective({type:C,features:[u.ɵɵInheritDefinitionFeature]})},56117:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UpdatePasswordComponent=void 0;n(68012),n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(57055);const r=n(44254),o=n(49472),a=n(16545),s=n(32621),l=n(68012),c=n(51554),d=n(73828),p=n(84275),u=n(62166),m=n(85714),h=n(45552),v=n(91674),f=n(73569),g=n(57055),y=n(36631);class x extends a.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(t,o,a,i,n,r,l),this.router=e,this.apiService=s,this.userVerificationService=c,this.logService=d,this.showPassword=!1}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}cancel(){return i(this,void 0,void 0,(function*(){yield this.stateService.setOrganizationInvitation(null),this.router.navigate(["/vault"])}))}setupSubmitActions(){return i(this,void 0,void 0,(function*(){if(null==this.currentMasterPassword||""===this.currentMasterPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;const e={type:r.VerificationType.MasterPassword,secret:this.currentMasterPassword};try{yield this.userVerificationService.verifyUser(e)}catch(t){return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),!1}return this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations(),!0}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){try{const t=new o.PasswordRequest;t.masterPasswordHash=yield this.cryptoService.hashPassword(this.currentMasterPassword,null),t.newMasterPasswordHash=e,t.key=n[1].encryptedString,this.apiService.postPassword(t),this.platformUtilsService.showToast("success",this.i18nService.t("masterPasswordChanged"),this.i18nService.t("logBackIn")),null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.messagingService.send("logout")}catch(t){this.logService.error(t)}}))}}t.UpdatePasswordComponent=x,x.ɵfac=function(e){return new(e||x)(s.ɵɵdirectiveInject(l.Router),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.PasswordGenerationService),s.ɵɵdirectiveInject(u.PolicyService),s.ɵɵdirectiveInject(m.CryptoService),s.ɵɵdirectiveInject(h.MessagingService),s.ɵɵdirectiveInject(v.ApiService),s.ɵɵdirectiveInject(f.StateService),s.ɵɵdirectiveInject(g.UserVerificationService),s.ɵɵdirectiveInject(y.LogService))},x.ɵdir=s.ɵɵdefineDirective({type:x,features:[s.ɵɵInheritDefinitionFeature]})},73295:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724);const r=n(55931),o=n(16545),a=n(32621),s=n(51554),l=n(73828),c=n(84275),d=n(62166),p=n(85714),u=n(45552),m=n(91674),h=n(73569),v=n(9724),f=n(36631);class g extends o.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,r,o,n,t,i,s),this.apiService=a,this.syncService=l,this.logService=c,this.showPassword=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield this.syncService.fullSync(!0),e.ngOnInit.call(this)}))}togglePassword(e){this.showPassword=!this.showPassword,document.getElementById(e?"masterPasswordRetype":"masterPassword").focus()}setupSubmitActions(){return i(this,void 0,void 0,(function*(){return this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(),this.email=yield this.stateService.getEmail(),this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations(),!0}))}submit(){return i(this,void 0,void 0,(function*(){if((yield this.strongPassword())&&(yield this.setupSubmitActions()))try{const e=yield this.cryptoService.makeKey(this.masterPassword,this.email.trim().toLowerCase(),this.kdf,this.kdfIterations),t=yield this.cryptoService.hashPassword(this.masterPassword,e),n=yield this.cryptoService.getEncKey(),i=yield this.cryptoService.remakeEncKey(e,n);yield this.performSubmitActions(t,e,i)}catch(e){this.logService.error(e)}}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){try{const t=new r.UpdateTempPasswordRequest;t.key=n[1].encryptedString,t.newMasterPasswordHash=e,t.masterPasswordHint=this.hint,this.formPromise=this.apiService.putUpdateTempPassword(t),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedMasterPassword")),null!=this.onSuccessfulChangePassword?this.onSuccessfulChangePassword():this.messagingService.send("logout")}catch(t){this.logService.error(t)}}))}}t.UpdateTempPasswordComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.I18nService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.PasswordGenerationService),a.ɵɵdirectiveInject(d.PolicyService),a.ɵɵdirectiveInject(p.CryptoService),a.ɵɵdirectiveInject(u.MessagingService),a.ɵɵdirectiveInject(m.ApiService),a.ɵɵdirectiveInject(h.StateService),a.ɵɵdirectiveInject(v.SyncService),a.ɵɵdirectiveInject(f.LogService))},g.ɵdir=a.ɵɵdefineDirective({type:g,features:[a.ɵɵInheritDefinitionFeature]})},4158:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationComponent=void 0;const r=n(98212),o=n(96832),a=(n(72277),n(57055),n(44254)),s=n(32621),l=n(72277),c=n(57055),d=n(57490),p=n(96832),u=n(45728),m=n(48198),h=n(99729);function v(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",1),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"input",2),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"small",3),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"masterPass")),s.ɵɵadvance(3),s.ɵɵproperty("formControl",e.secret),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,"confirmIdentity"))}}function f(e,t){1&e&&(s.ɵɵelementStart(0,"span",10),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",11),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵproperty("@sent",void 0),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,2,"codeSent"),"\n "))}function g(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",4),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",5),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"button",6),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().requestOTP()})),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,f,5,4,"span",7),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n\n "),s.ɵɵelementStart(15,"div",4),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"label",8),s.ɵɵtext(18),s.ɵɵpipe(19,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelement(21,"input",9),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"small",3),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,7,"sendVerificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.disableRequestOTP),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,9,"sendCode"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.sentCode),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(19,11,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("formControl",e.secret),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,13,"confirmIdentity"))}}class y{constructor(e,t){this.keyConnectorService=e,this.userVerificationService=t,this.usesKeyConnector=!1,this.disableRequestOTP=!1,this.sentCode=!1,this.secret=new o.FormControl("")}ngOnInit(){return i(this,void 0,void 0,(function*(){this.usesKeyConnector=yield this.keyConnectorService.getUsesKeyConnector(),this.processChanges(this.secret.value),this.secret.valueChanges.subscribe((e=>this.processChanges(e)))}))}requestOTP(){return i(this,void 0,void 0,(function*(){if(this.usesKeyConnector){this.disableRequestOTP=!0;try{yield this.userVerificationService.requestOTP(),this.sentCode=!0}finally{this.disableRequestOTP=!1}}}))}writeValue(e){this.secret.setValue(e)}registerOnChange(e){this.onChange=e}registerOnTouched(e){}setDisabledState(e){this.disableRequestOTP=e,e?this.secret.disable():this.secret.enable()}processChanges(e){null!=this.onChange&&this.onChange({type:this.usesKeyConnector?a.VerificationType.OTP:a.VerificationType.MasterPassword,secret:e})}}t.UserVerificationComponent=y,y.ɵfac=function(e){return new(e||y)(s.ɵɵdirectiveInject(l.KeyConnectorService),s.ɵɵdirectiveInject(c.UserVerificationService))},y.ɵcmp=s.ɵɵdefineComponent({type:y,selectors:[["app-user-verification"]],features:[s.ɵɵProvidersFeature([{provide:o.NG_VALUE_ACCESSOR,multi:!0,useExisting:y}])],decls:4,vars:2,consts:[[4,"ngIf"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPasswordHash","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"formControl"],[1,"form-text","text-muted"],[1,"form-group"],[1,"d-block"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],["class","ml-2 text-success","role","alert",4,"ngIf"],["for","verificationCode"],["id","verificationCode","type","input","name","verificationCode","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"formControl"],["role","alert",1,"ml-2","text-success"],["aria-hidden","true",1,"bwi","bwi-check-circle"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,v,12,7,"ng-container",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,g,28,15,"ng-container",0),s.ɵɵtext(3,"\n")),2&e&&(s.ɵɵproperty("ngIf",!t.usesKeyConnector),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.usesKeyConnector))},directives:[d.NgIf,p.DefaultValueAccessor,p.RequiredValidator,u.AutofocusDirective,m.InputVerbatimDirective,p.NgControlStatus,p.FormControlDirective],pipes:[h.I18nPipe],encapsulation:2,data:{animation:[r.trigger("sent",[r.transition(":enter",[r.style({opacity:0}),r.animate("100ms",r.style({opacity:1}))])])]}})},24006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.A11yInvalidDirective=void 0;n(32621),n(96832);const i=n(32621),r=n(96832);class o{constructor(e,t){this.el=e,this.formControlDirective=t}ngOnInit(){this.sub=this.formControlDirective.control.statusChanges.subscribe((e=>{"INVALID"===e?this.el.nativeElement.setAttribute("aria-invalid","true"):"VALID"===e&&this.el.nativeElement.setAttribute("aria-invalid","false")}))}ngOnDestroy(){var e;null===(e=this.sub)||void 0===e||e.unsubscribe()}}t.A11yInvalidDirective=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.NgControl))},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["","appA11yInvalid",""]]})},8863:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.A11yTitleDirective=void 0;n(32621);const i=n(32621);class r{constructor(e,t){this.el=e,this.renderer=t}set appA11yTitle(e){this.title=e}ngOnInit(){this.el.nativeElement.hasAttribute("title")||this.renderer.setAttribute(this.el.nativeElement,"title",this.title),this.el.nativeElement.hasAttribute("aria-label")||this.renderer.setAttribute(this.el.nativeElement,"aria-label",this.title)}}t.A11yTitleDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(i.Renderer2))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appA11yTitle",""]],inputs:{appA11yTitle:"appA11yTitle"}})},56820:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiActionDirective=void 0;n(32621),n(36631),n(47594);const i=n(32621),r=n(47594),o=n(36631);class a{constructor(e,t,n){this.el=e,this.validationService=t,this.logService=n}ngOnChanges(e){null!=this.appApiAction&&null!=this.appApiAction.then&&(this.el.nativeElement.loading=!0,this.appApiAction.then((e=>{this.el.nativeElement.loading=!1}),(e=>{var t;this.el.nativeElement.loading=!1,e.captchaRequired?this.logService.error("Captcha required error response: "+e.getSingleMessage()):(null===(t=this.logService)||void 0===t||t.error(`Received API exception: ${e}`),this.validationService.showError(e))})))}}t.ApiActionDirective=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.ValidationService),i.ɵɵdirectiveInject(o.LogService))},a.ɵdir=i.ɵɵdefineDirective({type:a,selectors:[["","appApiAction",""]],inputs:{appApiAction:"appApiAction"},features:[i.ɵɵNgOnChangesFeature]})},45728:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutofocusDirective=void 0;n(32621);const i=n(14857),r=n(82769),o=n(32621);class a{constructor(e,t){this.el=e,this.ngZone=t}set appAutofocus(e){this.autofocus=""===e||!0===e}ngOnInit(){!r.Utils.isMobileBrowser&&this.autofocus&&(this.ngZone.isStable?this.el.nativeElement.focus():this.ngZone.onStable.pipe(i.take(1)).subscribe((()=>this.el.nativeElement.focus())))}}t.AutofocusDirective=a,a.ɵfac=function(e){return new(e||a)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.NgZone))},a.ɵdir=o.ɵɵdefineDirective({type:a,selectors:[["","appAutofocus",""]],inputs:{appAutofocus:"appAutofocus"}})},53142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurClickDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onClick(){this.el.nativeElement.blur()}}t.BlurClickDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appBlurClick",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(){return t.onClick()}))}})},23042:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FallbackSrcDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onError(){this.el.nativeElement.src=this.appFallbackSrc}}t.FallbackSrcDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appFallbackSrc",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("error",(function(){return t.onError()}))},inputs:{appFallbackSrc:"appFallbackSrc"}})},5495:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputStripSpacesDirective=void 0;n(32621);const i=n(32621);class r{constructor(e){this.el=e}onInput(){this.el.nativeElement.value=this.el.nativeElement.value.replace(/ /g,"")}}t.InputStripSpacesDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["input","appInputStripSpaces",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("input",(function(){return t.onInput()}))}})},48198:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InputVerbatimDirective=void 0;n(32621);const i=n(32621);class r{constructor(e,t){this.el=e,this.renderer=t}set appInputVerbatim(e){this.disableComplete=""===e||!0===e}ngOnInit(){this.disableComplete&&!this.el.nativeElement.hasAttribute("autocomplete")&&this.renderer.setAttribute(this.el.nativeElement,"autocomplete","off"),this.el.nativeElement.hasAttribute("autocapitalize")||this.renderer.setAttribute(this.el.nativeElement,"autocapitalize","none"),this.el.nativeElement.hasAttribute("autocorrect")||this.renderer.setAttribute(this.el.nativeElement,"autocorrect","none"),this.el.nativeElement.hasAttribute("spellcheck")||this.renderer.setAttribute(this.el.nativeElement,"spellcheck","false"),this.el.nativeElement.hasAttribute("inputmode")||this.renderer.setAttribute(this.el.nativeElement,"inputmode","verbatim")}}t.InputVerbatimDirective=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(i.Renderer2))},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appInputVerbatim",""]],inputs:{appInputVerbatim:"appInputVerbatim"}})},25243:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NotPremiumDirective=void 0;n(32621),n(73569);const r=n(32621),o=n(73569);class a{constructor(e,t,n){this.templateRef=e,this.viewContainer=t,this.stateService=n}ngOnInit(){return i(this,void 0,void 0,(function*(){(yield this.stateService.getCanAccessPremium())?this.viewContainer.clear():this.viewContainer.createEmbeddedView(this.templateRef)}))}}t.NotPremiumDirective=a,a.ɵfac=function(e){return new(e||a)(r.ɵɵdirectiveInject(r.TemplateRef),r.ɵɵdirectiveInject(r.ViewContainerRef),r.ɵɵdirectiveInject(o.StateService))},a.ɵdir=r.ɵɵdefineDirective({type:a,selectors:[["","appNotPremium",""]]})},31161:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectCopyDirective=void 0;n(32621),n(73828);const i=n(32621),r=n(73828);class o{constructor(e,t){this.el=e,this.platformUtilsService=t}onCopy(){if(null==window)return;let e="";const t=window.getSelection();for(let n=0;n-1){""===i.substr(o).trim()&&(r=o)}e+=i.substring(0,r)}this.platformUtilsService.copyToClipboard(e,{window})}}t.SelectCopyDirective=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(i.ElementRef),i.ɵɵdirectiveInject(r.PlatformUtilsService))},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["","appSelectCopy",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("copy",(function(){return t.onCopy()}))}})},1142:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StopClickDirective=void 0;const i=n(32621);class r{onClick(e){e.preventDefault()}}t.StopClickDirective=r,r.ɵfac=function(e){return new(e||r)},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appStopClick",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(e){return t.onClick(e)}))}})},39159:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StopPropDirective=void 0;const i=n(32621);class r{onClick(e){e.stopPropagation()}}t.StopPropDirective=r,r.ɵfac=function(e){return new(e||r)},r.ɵdir=i.ɵɵdefineDirective({type:r,selectors:[["","appStopProp",""]],hostBindings:function(e,t){1&e&&i.ɵɵlistener("click",(function(e){return t.onClick(e)}))}})},13803:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TrueFalseValueDirective=void 0;const i=n(32621),r=n(96832),o=n(32621);class a{constructor(e,t){this.elementRef=e,this.renderer=t,this.trueValue=!0,this.falseValue=!1,this.propagateChange=e=>{}}onHostChange(e){this.propagateChange(e.target.checked?this.trueValue:this.falseValue)}writeValue(e){e===this.trueValue?this.renderer.setProperty(this.elementRef.nativeElement,"checked",!0):this.renderer.setProperty(this.elementRef.nativeElement,"checked",!1)}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){}setDisabledState(e){}}t.TrueFalseValueDirective=a,a.ɵfac=function(e){return new(e||a)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.Renderer2))},a.ɵdir=o.ɵɵdefineDirective({type:a,selectors:[["input","type","checkbox","appTrueFalseValue",""]],hostBindings:function(e,t){1&e&&o.ɵɵlistener("change",(function(e){return t.onHostChange(e)}))},inputs:{trueValue:"trueValue",falseValue:"falseValue"},features:[o.ɵɵProvidersFeature([{provide:r.NG_VALUE_ACCESSOR,useExisting:i.forwardRef((()=>a)),multi:!0}])]})},76299:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuthGuard=void 0;n(68012),n(62694),n(72277),n(45552);const r=n(72440),o=n(32621),a=n(62694),s=n(68012),l=n(45552),c=n(72277);class d{constructor(e,t,n,i){this.authService=e,this.router=t,this.messagingService=n,this.keyConnectorService=i}canActivate(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();return e===r.AuthenticationStatus.LoggedOut?(this.messagingService.send("authBlocked",{url:t.url}),!1):e===r.AuthenticationStatus.Locked?(null!=t&&this.messagingService.send("lockedUrl",{url:t.url}),this.router.createUrlTree(["lock"],{queryParams:{promptBiometric:!0}})):!(!t.url.includes("remove-password")&&(yield this.keyConnectorService.getConvertAccountRequired()))||this.router.createUrlTree(["/remove-password"])}))}}t.AuthGuard=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router),o.ɵɵinject(l.MessagingService),o.ɵɵinject(c.KeyConnectorService))},d.ɵprov=o.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},10517:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(62694),s=n(68012);class l{constructor(e,t){this.authService=e,this.router=t,this.homepage="vault",this.loginpage="login"}canActivate(){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();if(e===r.AuthenticationStatus.Locked)return!0;const t=e===r.AuthenticationStatus.LoggedOut?this.loginpage:this.homepage;return this.router.createUrlTree([t])}))}}t.LockGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},2821:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnauthGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(62694),s=n(68012);class l{constructor(e,t){this.authService=e,this.router=t,this.homepage="vault"}canActivate(){return i(this,void 0,void 0,(function*(){const e=yield this.authService.getAuthStatus();return e===r.AuthenticationStatus.LoggedOut||(e===r.AuthenticationStatus.Locked?this.router.createUrlTree(["lock"]):this.router.createUrlTree([this.homepage]))}))}}t.UnauthGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.AuthService),o.ɵɵinject(s.Router))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},44926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JslibModule=void 0;const i=n(57490),r=n(96832),o=n(59703),a=n(83612),s=n(99729),l=n(50154),c=n(52080),d=n(32621);n(59703);class p{}t.JslibModule=p,p.ɵfac=function(e){return new(e||p)},p.ɵmod=d.ɵɵdefineNgModule({type:p}),p.ɵinj=d.ɵɵdefineInjector({providers:[a.CreditCardNumberPipe,i.DatePipe,s.I18nPipe,l.SearchPipe,c.UserNamePipe],imports:[[o.BitwardenToastModule.forRoot({maxOpened:5,autoDismiss:!0,closeButton:!0}),i.CommonModule,r.FormsModule,r.ReactiveFormsModule],o.BitwardenToastModule]})},57563:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionFilterComponent=void 0;const r=n(32621),o=(n(93370),n(94735),n(32621));class a{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.collectionsGrouping={id:"collections",name:"collections"}}get collections(){var e;return null===(e=this.collectionNodes)||void 0===e?void 0:e.fullList}get nestedCollections(){var e;return null===(e=this.collectionNodes)||void 0===e?void 0:e.nestedList}get show(){return!this.hide&&null!=this.collections&&this.collections.length>0}isCollapsed(e){return this.collapsedFilterNodes.has(e.id)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.selectedCollectionId=e.id,this.onFilterChange.emit(this.activeFilter)}toggleCollapse(e){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(e)}))}}t.CollectionFilterComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",collectionNodes:"collectionNodes",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},73821:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderFilterComponent=void 0;const r=n(32621),o=(n(93370),n(94735),n(32621));class a{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.onAddFolder=new r.EventEmitter,this.onEditFolder=new r.EventEmitter,this.foldersGrouping={id:"folders",name:"folders"}}get folders(){var e;return null===(e=this.folderNodes)||void 0===e?void 0:e.fullList}get nestedFolders(){var e;return null===(e=this.folderNodes)||void 0===e?void 0:e.nestedList}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.selectedFolder=!0,this.activeFilter.selectedFolderId=e.id,this.onFilterChange.emit(this.activeFilter)}addFolder(){this.onAddFolder.emit()}editFolder(e){this.onEditFolder.emit(e)}isCollapsed(e){return this.collapsedFilterNodes.has(e.id)}toggleCollapse(e){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(e)}))}}t.FolderFilterComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",folderNodes:"folderNodes",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange",onAddFolder:"onAddFolder",onEditFolder:"onEditFolder"}})},9177:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationFilterComponent=void 0;const r=n(32621),o=n(94735),a=n(32621);class s{constructor(){this.hide=!1,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.organizationGrouping={id:"vaults",name:"allVaults"}}get displayMode(){let e="organizationMember";return null==this.organizations||this.organizations.length<1?e="noOrganizations":this.activePersonalOwnershipPolicy&&!this.activeSingleOrganizationPolicy?e="personalOwnershipPolicy":!this.activePersonalOwnershipPolicy&&this.activeSingleOrganizationPolicy?e="singleOrganizationPolicy":this.activePersonalOwnershipPolicy&&this.activeSingleOrganizationPolicy&&(e="singleOrganizationAndPersonalOwnershipPolicies"),e}get hasActiveFilter(){return this.activeFilter.myVaultOnly||null!=this.activeFilter.selectedOrganizationId}applyOrganizationFilter(e){return i(this,void 0,void 0,(function*(){this.activeFilter.selectedOrganizationId=e.id,this.activeFilter.myVaultOnly=!1,this.activeFilter.refreshCollectionsAndFolders=!0,this.applyFilter(this.activeFilter)}))}applyMyVaultFilter(){return i(this,void 0,void 0,(function*(){this.activeFilter.selectedOrganizationId=null,this.activeFilter.myVaultOnly=!0,this.activeFilter.refreshCollectionsAndFolders=!0,this.applyFilter(this.activeFilter)}))}clearFilter(){this.activeFilter.myVaultOnly=!1,this.activeFilter.selectedOrganizationId=null,this.applyFilter(new o.VaultFilter(this.activeFilter))}applyFilter(e){this.onFilterChange.emit(e)}toggleCollapse(){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(this.organizationGrouping)}))}get isCollapsed(){return this.collapsedFilterNodes.has(this.organizationGrouping.id)}}t.OrganizationFilterComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵdir=a.ɵɵdefineDirective({type:s,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",organizations:"organizations",activeFilter:"activeFilter",activePersonalOwnershipPolicy:"activePersonalOwnershipPolicy",activeSingleOrganizationPolicy:"activeSingleOrganizationPolicy"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},80617:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StatusFilterComponent=void 0;const i=n(32621),r=(n(94735),n(32621));class o{constructor(){this.hideFavorites=!1,this.hideTrash=!1,this.onFilterChange=new i.EventEmitter}get show(){return!(this.hideFavorites&&this.hideTrash)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.status=e,this.onFilterChange.emit(this.activeFilter)}}t.StatusFilterComponent=o,o.ɵfac=function(e){return new(e||o)},o.ɵdir=r.ɵɵdefineDirective({type:o,inputs:{hideFavorites:"hideFavorites",hideTrash:"hideTrash",activeFilter:"activeFilter"},outputs:{onFilterChange:"onFilterChange"}})},74951:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFilterComponent=void 0;const r=n(32621),o=n(32773),a=(n(94735),n(32621));class s{constructor(){this.hide=!1,this.selectedCipherType=null,this.onNodeCollapseStateChange=new r.EventEmitter,this.onFilterChange=new r.EventEmitter,this.typesNode={id:"types",name:"types"},this.cipherTypeEnum=o.CipherType}get isCollapsed(){return this.collapsedFilterNodes.has(this.typesNode.id)}applyFilter(e){this.activeFilter.resetFilter(),this.activeFilter.cipherType=e,this.onFilterChange.emit(this.activeFilter)}toggleCollapse(){return i(this,void 0,void 0,(function*(){this.onNodeCollapseStateChange.emit(this.typesNode)}))}}t.TypeFilterComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵdir=a.ɵɵdefineDirective({type:s,inputs:{hide:"hide",collapsedFilterNodes:"collapsedFilterNodes",selectedCipherType:"selectedCipherType",activeFilter:"activeFilter"},outputs:{onNodeCollapseStateChange:"onNodeCollapseStateChange",onFilterChange:"onFilterChange"}})},93370:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DynamicTreeNode=void 0;t.DynamicTreeNode=class{constructor(e){Object.assign(this,e)}hasId(e){return null!=this.fullList&&this.fullList.filter((t=>t.id===e)).length>0}}},94735:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilter=void 0;t.VaultFilter=class{constructor(e){this.selectedFolder=!1,this.myVaultOnly=!1,this.refreshCollectionsAndFolders=!1,Object.assign(this,e)}resetFilter(){this.cipherType=null,this.status=null,this.selectedCollectionId=null,this.selectedFolder=!1,this.selectedFolderId=null}resetOrganization(){this.myVaultOnly=!1,this.selectedOrganizationId=null,this.resetFilter()}}},48237:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterComponent=void 0;const r=n(32621),o=n(94735),a=(n(27113),n(32621)),s=n(27113);class l{constructor(e){this.vaultFilterService=e,this.activeFilter=new o.VaultFilter,this.hideFolders=!1,this.hideCollections=!1,this.hideFavorites=!1,this.hideTrash=!1,this.hideOrganizations=!1,this.onFilterChange=new r.EventEmitter,this.onAddFolder=new r.EventEmitter,this.onEditFolder=new r.EventEmitter,this.isLoaded=!1}get displayCollections(){var e;return null!=(null===(e=this.collections)||void 0===e?void 0:e.fullList)&&this.collections.fullList.length>0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.collapsedFilterNodes=yield this.vaultFilterService.buildCollapsedFilterNodes(),this.organizations=yield this.vaultFilterService.buildOrganizations(),null!=this.organizations&&this.organizations.length>0&&(this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()),this.folders=yield this.vaultFilterService.buildFolders(),this.collections=yield this.initCollections(),this.isLoaded=!0}))}initCollections(){return i(this,void 0,void 0,(function*(){return yield this.vaultFilterService.buildCollections()}))}toggleFilterNodeCollapseState(e){return i(this,void 0,void 0,(function*(){this.collapsedFilterNodes.has(e.id)?this.collapsedFilterNodes.delete(e.id):this.collapsedFilterNodes.add(e.id),yield this.vaultFilterService.storeCollapsedFilterNodes(this.collapsedFilterNodes)}))}applyFilter(e){return i(this,void 0,void 0,(function*(){e.refreshCollectionsAndFolders&&(yield this.reloadCollectionsAndFolders(e),e=this.pruneInvalidatedFilterSelections(e)),this.onFilterChange.emit(e)}))}reloadCollectionsAndFolders(e){return i(this,void 0,void 0,(function*(){this.folders=yield this.vaultFilterService.buildFolders(e.selectedOrganizationId),this.collections=e.myVaultOnly?null:yield this.vaultFilterService.buildCollections(e.selectedOrganizationId)}))}reloadOrganizations(){return i(this,void 0,void 0,(function*(){this.organizations=yield this.vaultFilterService.buildOrganizations(),this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()}))}addFolder(){this.onAddFolder.emit()}editFolder(e){this.onEditFolder.emit(e)}pruneInvalidatedFilterSelections(e){return e=this.pruneInvalidFolderSelection(e),e=this.pruneInvalidCollectionSelection(e)}pruneInvalidFolderSelection(e){var t;return e.selectedFolder&&!(null===(t=this.folders)||void 0===t?void 0:t.hasId(e.selectedFolderId))&&(e.selectedFolder=!1,e.selectedFolderId=null),e}pruneInvalidCollectionSelection(e){var t;return null==e.selectedCollectionId||(null===(t=this.collections)||void 0===t?void 0:t.hasId(e.selectedCollectionId))||(e.selectedCollectionId=null),e}}t.VaultFilterComponent=l,l.ɵfac=function(e){return new(e||l)(a.ɵɵdirectiveInject(s.VaultFilterService))},l.ɵdir=a.ɵɵdefineDirective({type:l,inputs:{activeFilter:"activeFilter",hideFolders:"hideFolders",hideCollections:"hideCollections",hideFavorites:"hideFavorites",hideTrash:"hideTrash",hideOrganizations:"hideOrganizations"},outputs:{onFilterChange:"onFilterChange",onAddFolder:"onAddFolder",onEditFolder:"onEditFolder"}})},27113:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterService=void 0;n(45330),n(3174),n(88308),n(63513),n(62166),n(73569);const r=n(49906),o=n(93370),a=n(32621),s=n(73569),l=n(63513),c=n(88308),d=n(45330),p=n(3174),u=n(62166);class m{constructor(e,t,n,i,r,o){this.stateService=e,this.organizationService=t,this.folderService=n,this.cipherService=i,this.collectionService=r,this.policyService=o}storeCollapsedFilterNodes(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setCollapsedGroupings(Array.from(e))}))}buildCollapsedFilterNodes(){return i(this,void 0,void 0,(function*(){return new Set(yield this.stateService.getCollapsedGroupings())}))}buildOrganizations(){return i(this,void 0,void 0,(function*(){return yield this.organizationService.getAll()}))}buildFolders(e){return i(this,void 0,void 0,(function*(){const t=yield this.folderService.getAllDecrypted();let n;if(null!=e){const i=yield this.cipherService.getAllDecrypted(),r=i.filter((t=>t.organizationId==e));n=t.filter((e=>r.filter((t=>t.folderId==e.id)).length>0||i.filter((t=>t.folderId==e.id)).length<1))}else n=t;const i=yield this.folderService.getAllNested(n);return new o.DynamicTreeNode({fullList:n,nestedList:i})}))}buildCollections(e){return i(this,void 0,void 0,(function*(){const t=yield this.collectionService.getAllDecrypted();let n;n=null!=e?t.filter((t=>t.organizationId===e)):t;const i=yield this.collectionService.getAllNested(n);return new o.DynamicTreeNode({fullList:n,nestedList:i})}))}checkForSingleOrganizationPolicy(){return i(this,void 0,void 0,(function*(){return yield this.policyService.policyAppliesToUser(r.PolicyType.SingleOrg)}))}checkForPersonalOwnershipPolicy(){return i(this,void 0,void 0,(function*(){return yield this.policyService.policyAppliesToUser(r.PolicyType.PersonalOwnership)}))}}t.VaultFilterService=m,m.ɵfac=function(e){return new(e||m)(a.ɵɵinject(s.StateService),a.ɵɵinject(l.OrganizationService),a.ɵɵinject(c.FolderService),a.ɵɵinject(d.CipherService),a.ɵɵinject(p.CollectionService),a.ɵɵinject(u.PolicyService))},m.ɵprov=a.ɵɵdefineInjectable({token:m,factory:m.ɵfac})},86758:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ColorPasswordPipe=void 0;const i=n(82769),r=n(32621);class o{transform(e){return this.generateTemplate(e,((e,t)=>`${e}`))}generateTemplate(e,t){const n=Array.from(e);let r="";for(let o=0;o":e=">",a=!0;break;case" ":e=" ",a=!0}let s="letter";e.match(i.Utils.regexpEmojiPresentation)?s="emoji":a||e.match(/[^\w ]/)?s="special":e.match(/\d/)&&(s="number"),r+=t(e,s,o)}return r}}t.ColorPasswordPipe=o,o.ɵfac=function(e){return new(e||o)},o.ɵpipe=r.ɵɵdefinePipe({name:"colorPassword",type:o,pure:!0})},83612:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CreditCardNumberPipe=void 0;const i=n(32621),r={Visa:[{cardLength:16,blocks:[4,4,4,4]}],Mastercard:[{cardLength:16,blocks:[4,4,4,4]}],Maestro:[{cardLength:16,blocks:[4,4,4,4]},{cardLength:13,blocks:[4,4,5]},{cardLength:15,blocks:[4,6,5]},{cardLength:19,blocks:[4,4,4,4,3]}],Discover:[{cardLength:16,blocks:[4,4,4,4]}],"Diners Club":[{cardLength:14,blocks:[4,6,4]}],JCB:[{cardLength:16,blocks:[4,4,4,4]}],UnionPay:[{cardLength:16,blocks:[4,4,4,4]},{cardLength:19,blocks:[6,13]}],Amex:[{cardLength:15,blocks:[4,6,5]}],Other:[{cardLength:16,blocks:[4,4,4,4]}]};class o{transform(e,t){let n=r[t];null==n&&(n=r.Other);const i=e.length;let o=n.find((e=>e.cardLength==i));null==o&&(o=n[0]);const a=o.blocks,s=[];let l=0;return a.forEach((t=>{s.push(e.slice(l,l+t)),l+=t})),i>l&&s.push(e.slice(l)),s.join(" ")}}t.CreditCardNumberPipe=o,o.ɵfac=function(e){return new(e||o)},o.ɵpipe=i.ɵɵdefinePipe({name:"creditCardNumber",type:o,pure:!0})},91131:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EllipsisPipe=void 0;const i=n(32621);class r{transform(e,t=25,n=!1,i="..."){return e.length<=t?e:(t-=i.length,n&&e.length>t&&e.indexOf(" ")>0&&(t=e.substring(0,t).lastIndexOf(" ")),e.substring(0,t)+i)}}t.EllipsisPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"ellipsis",type:r,pure:!0})},99729:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.I18nPipe=void 0;n(51554);const i=n(32621),r=n(51554);class o{constructor(e){this.i18nService=e}transform(e,t,n,i){return this.i18nService.t(e,t,n,i)}}t.I18nPipe=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵdirectiveInject(r.I18nService,16))},o.ɵpipe=i.ɵɵdefinePipe({name:"i18n",type:o,pure:!0})},50154:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchPipe=void 0;const i=n(32621);class r{transform(e,t,n,i,r){return null==e||0===e.length?[]:null==t||t.length<2?e:(t=t.trim().toLowerCase(),e.filter((e=>null!=n&&null!=e[n]&&e[n].toString().toLowerCase().indexOf(t)>-1||(null!=i&&null!=e[i]&&e[i].toString().toLowerCase().indexOf(t)>-1||null!=r&&null!=e[r]&&e[r].toString().toLowerCase().indexOf(t)>-1))))}}t.SearchPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"search",type:r,pure:!0})},52080:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserNamePipe=void 0;const i=n(32621);class r{transform(e){return null==e?null:null==e.name||""===e.name.trim()?e.email:e.name}}t.UserNamePipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"userName",type:r,pure:!0})},23050:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;const i=n(45921),r=n(32621);class o extends i.BroadcasterService{}t.BroadcasterService=o,o.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(o)))(t||o)}}(),o.ɵprov=r.ɵɵdefineInjectable({token:o,factory:o.ɵfac})},41058:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JslibServicesModule=t.SYSTEM_LANGUAGE=t.LOCALES_DIRECTORY=t.CLIENT_TYPE=t.LOCKED_CALLBACK=t.LOGOUT_CALLBACK=t.STATE_SERVICE_USE_CACHE=t.STATE_FACTORY=t.SECURE_STORAGE=t.WINDOW=void 0;const i=n(32621),r=n(91674),o=n(5576),a=n(42982),s=n(62694),l=n(8470),c=n(45330),d=n(3174),p=n(85714),u=n(1659),m=n(56071),h=n(32034),v=n(97445),f=n(83594),g=n(88308),y=n(51554),x=n(72277),S=n(36631),b=n(45552),w=n(38249),C=n(63513),I=n(84275),E=n(44809),P=n(73828),O=n(62166),k=n(68291),A=n(60421),T=n(76532),M=n(2810),B=n(73569),D=n(6924),R=n(39566),F=n(9724),U=n(30694),V=n(52344),N=n(27458),_=n(57055),j=n(13444),z=n(82656),H=n(35266),L=n(31445),K=n(99010),q=n(48475),G=n(97979),W=n(36472),$=n(47262),Y=n(36833),Q=n(94778),J=n(27944),Z=n(47165),X=n(86683),ee=n(14215),te=n(48698),ne=n(1803),ie=n(66369),re=n(32840),oe=n(63231),ae=n(59135),se=n(50142),le=n(55969),ce=n(59695),de=n(32471),pe=n(23566),ue=n(94822),me=n(13998),he=n(8357),ve=n(86257),fe=n(7790),ge=n(87703),ye=n(96837),xe=n(26981),Se=n(42133),be=n(44988),we=n(75408),Ce=n(76299),Ie=n(10517),Ee=n(2821),Pe=n(23050),Oe=n(64684),ke=n(91603),Ae=n(47594),Te=n(32621);t.WINDOW=new i.InjectionToken("WINDOW"),t.SECURE_STORAGE=new i.InjectionToken("SECURE_STORAGE"),t.STATE_FACTORY=new i.InjectionToken("STATE_FACTORY"),t.STATE_SERVICE_USE_CACHE=new i.InjectionToken("STATE_SERVICE_USE_CACHE"),t.LOGOUT_CALLBACK=new i.InjectionToken("LOGOUT_CALLBACK"),t.LOCKED_CALLBACK=new i.InjectionToken("LOCKED_CALLBACK"),t.CLIENT_TYPE=new i.InjectionToken("CLIENT_TYPE"),t.LOCALES_DIRECTORY=new i.InjectionToken("LOCALES_DIRECTORY"),t.SYSTEM_LANGUAGE=new i.InjectionToken("SYSTEM_LANGUAGE");class Me{}t.JslibServicesModule=Me,Me.ɵfac=function(e){return new(e||Me)},Me.ɵmod=Te.ɵɵdefineNgModule({type:Me}),Me.ɵinj=Te.ɵɵdefineInjector({providers:[Ae.ValidationService,Ce.AuthGuard,Ee.UnauthGuard,Ie.LockGuard,Oe.ModalService,{provide:t.WINDOW,useValue:window},{provide:i.LOCALE_ID,useFactory:e=>e.translationLocale,deps:[y.I18nService]},{provide:t.LOCALES_DIRECTORY,useValue:"./locales"},{provide:t.SYSTEM_LANGUAGE,useFactory:e=>e.navigator.language,deps:[t.WINDOW]},{provide:t.STATE_FACTORY,useValue:new H.StateFactory(K.GlobalState,L.Account)},{provide:t.STATE_SERVICE_USE_CACHE,useValue:!0},{provide:t.LOGOUT_CALLBACK,useFactory:e=>(t,n)=>e.send("logout",{expired:t,userId:n}),deps:[b.MessagingService]},{provide:t.LOCKED_CALLBACK,useValue:null},{provide:o.AppIdService,useClass:G.AppIdService,deps:[R.StorageService]},{provide:a.AuditService,useClass:W.AuditService,deps:[u.CryptoFunctionService,r.ApiService]},{provide:s.AuthService,useClass:$.AuthService,deps:[p.CryptoService,r.ApiService,U.TokenService,o.AppIdService,P.PlatformUtilsService,b.MessagingService,S.LogService,x.KeyConnectorService,m.EnvironmentService,B.StateService,N.TwoFactorService,y.I18nService]},{provide:c.CipherService,useFactory:(e,t,n,i,r,o,a,s)=>new Y.CipherService(e,t,n,i,r,(()=>o.get(A.SearchService)),a,s),deps:[p.CryptoService,M.SettingsService,r.ApiService,f.FileUploadService,y.I18nService,i.Injector,S.LogService,B.StateService]},{provide:g.FolderService,useClass:ie.FolderService,deps:[p.CryptoService,r.ApiService,y.I18nService,c.CipherService,B.StateService]},{provide:S.LogService,useFactory:()=>new J.ConsoleLogService(!1)},{provide:d.CollectionService,useClass:Q.CollectionService,deps:[p.CryptoService,y.I18nService,B.StateService]},{provide:m.EnvironmentService,useClass:X.EnvironmentService,deps:[B.StateService]},{provide:V.TotpService,useClass:ge.TotpService,deps:[u.CryptoFunctionService,S.LogService,B.StateService]},{provide:U.TokenService,useClass:fe.TokenService,deps:[B.StateService]},{provide:p.CryptoService,useClass:Z.CryptoService,deps:[u.CryptoFunctionService,P.PlatformUtilsService,S.LogService,B.StateService]},{provide:I.PasswordGenerationService,useClass:se.PasswordGenerationService,deps:[p.CryptoService,O.PolicyService,B.StateService]},{provide:j.UsernameGenerationService,useClass:Se.UsernameGenerationService,deps:[p.CryptoService,B.StateService,r.ApiService]},{provide:r.ApiService,useClass:q.ApiService,deps:[U.TokenService,P.PlatformUtilsService,m.EnvironmentService,o.AppIdService,t.LOGOUT_CALLBACK]},{provide:f.FileUploadService,useClass:ne.FileUploadService,deps:[S.LogService,r.ApiService]},{provide:F.SyncService,useClass:ve.SyncService,deps:[r.ApiService,M.SettingsService,g.FolderService,c.CipherService,p.CryptoService,d.CollectionService,b.MessagingService,O.PolicyService,T.SendService,S.LogService,x.KeyConnectorService,B.StateService,C.OrganizationService,k.ProviderService,t.LOGOUT_CALLBACK]},{provide:l.BroadcasterService,useClass:Pe.BroadcasterService},{provide:M.SettingsService,useClass:ue.SettingsService,deps:[B.StateService]},{provide:z.VaultTimeoutService,useClass:be.VaultTimeoutService,deps:[c.CipherService,g.FolderService,d.CollectionService,p.CryptoService,P.PlatformUtilsService,b.MessagingService,A.SearchService,U.TokenService,O.PolicyService,x.KeyConnectorService,B.StateService,s.AuthService,t.LOCKED_CALLBACK,t.LOGOUT_CALLBACK]},{provide:B.StateService,useClass:me.StateService,deps:[R.StorageService,t.SECURE_STORAGE,S.LogService,D.StateMigrationService,t.STATE_FACTORY,t.STATE_SERVICE_USE_CACHE]},{provide:D.StateMigrationService,useClass:he.StateMigrationService,deps:[R.StorageService,t.SECURE_STORAGE,t.STATE_FACTORY]},{provide:v.ExportService,useClass:te.ExportService,deps:[g.FolderService,c.CipherService,r.ApiService,p.CryptoService]},{provide:A.SearchService,useClass:de.SearchService,deps:[c.CipherService,S.LogService,y.I18nService]},{provide:w.NotificationsService,useClass:oe.NotificationsService,deps:[F.SyncService,o.AppIdService,r.ApiService,m.EnvironmentService,t.LOGOUT_CALLBACK,S.LogService,B.StateService,s.AuthService]},{provide:u.CryptoFunctionService,useClass:we.WebCryptoFunctionService,deps:[t.WINDOW]},{provide:h.EventService,useClass:ee.EventService,deps:[r.ApiService,c.CipherService,B.StateService,S.LogService,C.OrganizationService]},{provide:O.PolicyService,useClass:le.PolicyService,deps:[B.StateService,C.OrganizationService,r.ApiService]},{provide:T.SendService,useClass:pe.SendService,deps:[p.CryptoService,r.ApiService,f.FileUploadService,y.I18nService,u.CryptoFunctionService,B.StateService]},{provide:x.KeyConnectorService,useClass:re.KeyConnectorService,deps:[B.StateService,p.CryptoService,r.ApiService,U.TokenService,S.LogService,C.OrganizationService,u.CryptoFunctionService,t.LOGOUT_CALLBACK]},{provide:_.UserVerificationService,useClass:xe.UserVerificationService,deps:[p.CryptoService,y.I18nService,r.ApiService]},{provide:E.PasswordRepromptService,useClass:ke.PasswordRepromptService},{provide:C.OrganizationService,useClass:ae.OrganizationService,deps:[B.StateService]},{provide:k.ProviderService,useClass:ce.ProviderService,deps:[B.StateService]},{provide:N.TwoFactorService,useClass:ye.TwoFactorService,deps:[y.I18nService,P.PlatformUtilsService]}]})},64684:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ModalService=t.ModalConfig=void 0;n(32621);const r=n(14857),o=n(83249),a=n(64050),s=n(38387),l=n(32621);class c{constructor(){this.allowMultipleModals=!1}}t.ModalConfig=c;class d{constructor(e,t,n){this.componentFactoryResolver=e,this.applicationRef=t,this.injector=n,this.modalList=[],this.factoryResolvers=new Map,document.addEventListener("keyup",(e=>{"Escape"===e.key&&this.modalCount>0&&this.topModal.instance.close()}))}get modalCount(){return this.modalList.length}get topModal(){return this.modalList[this.modalCount-1]}openViewRef(e,t,n=null){return i(this,void 0,void 0,(function*(){const[i,o]=this.openInternal(e,null,!1);return o.instance.setComponentParameters=n,t.insert(o.hostView),yield i.onCreated.pipe(r.first()).toPromise(),[i,o.instance.componentRef.instance]}))}open(e,t){var n;if((null===(n=null==t?void 0:t.allowMultipleModals)||void 0===n||!n)&&this.modalCount>0)return;const[i,r]=this.openInternal(e,t,!0);return i}registerComponentFactoryResolver(e,t){this.factoryResolvers.set(e,t)}resolveComponentFactory(e){return this.factoryResolvers.has(e)?this.factoryResolvers.get(e).resolveComponentFactory(e):this.componentFactoryResolver.resolveComponentFactory(e)}openInternal(e,t,n){const[i,o]=this.createModalComponent(t);if(o.instance.childComponentType=e,n){this.applicationRef.attachView(o.hostView);const e=o.hostView.rootNodes[0];document.body.appendChild(e)}return i.onClosed.pipe(r.first()).subscribe((()=>{n&&this.applicationRef.detachView(o.hostView),o.destroy(),this.modalList.pop(),this.modalCount>0&&this.topModal.instance.getFocus()})),this.setupHandlers(i),this.modalList.push(o),[i,o]}setupHandlers(e){let t=null;e.onCreated.pipe(r.first()).subscribe((n=>{document.body.classList.add("modal-open");const i=n.querySelector(".modal"),r=i.querySelector(".modal-dialog");t=document.createElement("div"),t.className="modal-backdrop fade",t.style.zIndex=`${this.modalCount}040`,i.prepend(t),r.addEventListener("click",(e=>{e.stopPropagation()})),r.style.zIndex=`${this.modalCount}050`;const o=Array.from(n.querySelectorAll('.modal-backdrop, .modal *[data-dismiss="modal"]'));for(const t of o)t.addEventListener("click",(()=>{e.close()}))})),e.onClose.pipe(r.first()).subscribe((()=>{e.closed(),0===this.modalCount&&document.body.classList.remove("modal-open")}))}createModalComponent(e){const t=new s.ModalRef,n=new WeakMap;n.set(c,e),n.set(s.ModalRef,t);return[t,this.componentFactoryResolver.resolveComponentFactory(o.DynamicModalComponent).create(new a.ModalInjector(this.injector,n))]}}t.ModalService=d,d.ɵfac=function(e){return new(e||d)(l.ɵɵinject(l.ComponentFactoryResolver),l.ɵɵinject(l.ApplicationRef),l.ɵɵinject(l.Injector))},d.ɵprov=l.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},91603:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;n(72277);const r=n(38991),o=(n(64684),n(32621)),a=n(64684),s=n(72277);class l{constructor(e,t){this.modalService=e,this.keyConnectorService=t,this.component=r.PasswordRepromptComponent}protectedFields(){return["TOTP","Password","H_Field","Card Number","Security Code"]}showPasswordPrompt(){return i(this,void 0,void 0,(function*(){if(!(yield this.enabled()))return!0;const e=this.modalService.open(this.component,{allowMultipleModals:!0});if(null==e)return!1;return!0===(yield e.onClosedPromise())}))}enabled(){return i(this,void 0,void 0,(function*(){return!(yield this.keyConnectorService.getUsesKeyConnector())}))}}t.PasswordRepromptService=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.ModalService),o.ɵɵinject(s.KeyConnectorService))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},47594:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationService=void 0;n(51554),n(73828);const i=n(32621),r=n(51554),o=n(73828);class a{constructor(e,t){this.i18nService=e,this.platformUtilsService=t}showError(e){const t=this.i18nService.t("unexpectedError");let n=[];return null!=e&&"string"==typeof e?n.push(e):null==e||"object"!=typeof e?n.push(t):null!=e.validationErrors?n=n.concat(e.getAllMessages()):n.push(e.message?e.message:t),1===n.length?this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),n[0]):n.length>1&&this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),n,{timeout:5e3*n.length}),n}}t.ValidationService=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵinject(r.I18nService),i.ɵɵinject(o.PlatformUtilsService))},a.ɵprov=i.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},89924:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dirtyRequired=void 0;const i=n(96832);t.dirtyRequired=function(e){return e.dirty?i.Validators.required(e):null}},55939:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.notAllowedValueAsync=void 0,t.notAllowedValueAsync=function(e,t=!1){return i=>n(this,void 0,void 0,(function*(){let n=yield e(),r=i.value;if(t&&(n=n.toLowerCase(),r=r.toLowerCase()),r===n)return{notAllowedValue:!0}}))}},91674:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiService=void 0;t.ApiService=class{}},5576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppIdService=void 0;t.AppIdService=class{}},42982:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuditService=void 0;t.AuditService=class{}},62694:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthService=void 0;t.AuthService=class{}},8470:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;t.BroadcasterService=class{}},45330:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherService=void 0;t.CipherService=class{}},3174:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionService=void 0;t.CollectionService=class{}},85714:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoService=void 0;t.CryptoService=class{}},1659:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoFunctionService=void 0;t.CryptoFunctionService=class{}},56071:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentService=void 0;t.EnvironmentService=class{}},32034:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventService=void 0;t.EventService=class{}},97445:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExportService=void 0;t.ExportService=class{}},83594:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadService=void 0;t.FileUploadService=class{}},88308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderService=void 0;t.FolderService=class{}},51554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;t.I18nService=class{}},11223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportService=void 0;t.ImportService=class{}},72277:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorService=void 0;t.KeyConnectorService=class{}},36631:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogService=void 0;t.LogService=class{}},45552:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MessagingService=void 0;t.MessagingService=class{}},38249:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationsService=void 0;t.NotificationsService=class{}},63513:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationService=void 0;t.OrganizationService=class{}},84275:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGenerationService=void 0;t.PasswordGenerationService=class{}},44809:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;t.PasswordRepromptService=class{}},73828:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlatformUtilsService=void 0;t.PlatformUtilsService=class{}},62166:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyService=void 0;t.PolicyService=class{}},68291:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderService=void 0;t.ProviderService=class{}},60421:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SearchService=void 0;t.SearchService=class{constructor(){this.indexedEntityId=null}}},76532:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendService=void 0;t.SendService=class{}},2810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsService=void 0;t.SettingsService=class{}},73569:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;t.StateService=class{}},6924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;t.StateMigrationService=class{}},39566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageService=void 0;t.StorageService=class{}},9724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncService=void 0;t.SyncService=class{}},30694:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenService=void 0;t.TokenService=class{}},52344:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TotpService=void 0;t.TotpService=class{}},27458:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorService=void 0;t.TwoFactorService=class{}},57055:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationService=void 0;t.UserVerificationService=class{}},13444:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UsernameGenerationService=void 0;t.UsernameGenerationService=class{}},82656:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutService=void 0;t.VaultTimeoutService=class{}},72440:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthenticationStatus=void 0,function(e){e[e.LoggedOut=0]="LoggedOut",e[e.Locked=1]="Locked",e[e.Unlocked=2]="Unlocked"}(t.AuthenticationStatus||(t.AuthenticationStatus={}))},2231:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthenticationType=void 0,function(e){e[e.Password=0]="Password",e[e.Sso=1]="Sso",e[e.Api=2]="Api"}(t.AuthenticationType||(t.AuthenticationType={}))},34453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherRepromptType=void 0,function(e){e[e.None=0]="None",e[e.Password=1]="Password"}(t.CipherRepromptType||(t.CipherRepromptType={}))},32773:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherType=void 0,function(e){e[e.Login=1]="Login",e[e.SecureNote=2]="SecureNote",e[e.Card=3]="Card",e[e.Identity=4]="Identity"}(t.CipherType||(t.CipherType={}))},69434:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClientType=void 0,function(e){e.Web="web",e.Browser="browser",e.Desktop="desktop",e.Mobile="mobile",e.Cli="cli",e.DirectoryConnector="connector"}(t.ClientType||(t.ClientType={}))},2779:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceType=void 0,function(e){e[e.Android=0]="Android",e[e.iOS=1]="iOS",e[e.ChromeExtension=2]="ChromeExtension",e[e.FirefoxExtension=3]="FirefoxExtension",e[e.OperaExtension=4]="OperaExtension",e[e.EdgeExtension=5]="EdgeExtension",e[e.WindowsDesktop=6]="WindowsDesktop",e[e.MacOsDesktop=7]="MacOsDesktop",e[e.LinuxDesktop=8]="LinuxDesktop",e[e.ChromeBrowser=9]="ChromeBrowser",e[e.FirefoxBrowser=10]="FirefoxBrowser",e[e.OperaBrowser=11]="OperaBrowser",e[e.EdgeBrowser=12]="EdgeBrowser",e[e.IEBrowser=13]="IEBrowser",e[e.UnknownBrowser=14]="UnknownBrowser",e[e.AndroidAmazon=15]="AndroidAmazon",e[e.UWP=16]="UWP",e[e.SafariBrowser=17]="SafariBrowser",e[e.VivaldiBrowser=18]="VivaldiBrowser",e[e.VivaldiExtension=19]="VivaldiExtension",e[e.SafariExtension=20]="SafariExtension"}(t.DeviceType||(t.DeviceType={}))},47200:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed",e[e.RecoveryInitiated=3]="RecoveryInitiated",e[e.RecoveryApproved=4]="RecoveryApproved"}(t.EmergencyAccessStatusType||(t.EmergencyAccessStatusType={}))},82838:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessType=void 0,function(e){e[e.View=0]="View",e[e.Takeover=1]="Takeover"}(t.EmergencyAccessType||(t.EmergencyAccessType={}))},28588:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptionType=void 0,function(e){e[e.AesCbc256_B64=0]="AesCbc256_B64",e[e.AesCbc128_HmacSha256_B64=1]="AesCbc128_HmacSha256_B64",e[e.AesCbc256_HmacSha256_B64=2]="AesCbc256_HmacSha256_B64",e[e.Rsa2048_OaepSha256_B64=3]="Rsa2048_OaepSha256_B64",e[e.Rsa2048_OaepSha1_B64=4]="Rsa2048_OaepSha1_B64",e[e.Rsa2048_OaepSha256_HmacSha256_B64=5]="Rsa2048_OaepSha256_HmacSha256_B64",e[e.Rsa2048_OaepSha1_HmacSha256_B64=6]="Rsa2048_OaepSha1_HmacSha256_B64"}(t.EncryptionType||(t.EncryptionType={}))},80253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventType=void 0,function(e){e[e.User_LoggedIn=1e3]="User_LoggedIn",e[e.User_ChangedPassword=1001]="User_ChangedPassword",e[e.User_Updated2fa=1002]="User_Updated2fa",e[e.User_Disabled2fa=1003]="User_Disabled2fa",e[e.User_Recovered2fa=1004]="User_Recovered2fa",e[e.User_FailedLogIn=1005]="User_FailedLogIn",e[e.User_FailedLogIn2fa=1006]="User_FailedLogIn2fa",e[e.User_ClientExportedVault=1007]="User_ClientExportedVault",e[e.User_UpdatedTempPassword=1008]="User_UpdatedTempPassword",e[e.User_MigratedKeyToKeyConnector=1009]="User_MigratedKeyToKeyConnector",e[e.Cipher_Created=1100]="Cipher_Created",e[e.Cipher_Updated=1101]="Cipher_Updated",e[e.Cipher_Deleted=1102]="Cipher_Deleted",e[e.Cipher_AttachmentCreated=1103]="Cipher_AttachmentCreated",e[e.Cipher_AttachmentDeleted=1104]="Cipher_AttachmentDeleted",e[e.Cipher_Shared=1105]="Cipher_Shared",e[e.Cipher_UpdatedCollections=1106]="Cipher_UpdatedCollections",e[e.Cipher_ClientViewed=1107]="Cipher_ClientViewed",e[e.Cipher_ClientToggledPasswordVisible=1108]="Cipher_ClientToggledPasswordVisible",e[e.Cipher_ClientToggledHiddenFieldVisible=1109]="Cipher_ClientToggledHiddenFieldVisible",e[e.Cipher_ClientToggledCardCodeVisible=1110]="Cipher_ClientToggledCardCodeVisible",e[e.Cipher_ClientCopiedPassword=1111]="Cipher_ClientCopiedPassword",e[e.Cipher_ClientCopiedHiddenField=1112]="Cipher_ClientCopiedHiddenField",e[e.Cipher_ClientCopiedCardCode=1113]="Cipher_ClientCopiedCardCode",e[e.Cipher_ClientAutofilled=1114]="Cipher_ClientAutofilled",e[e.Cipher_SoftDeleted=1115]="Cipher_SoftDeleted",e[e.Cipher_Restored=1116]="Cipher_Restored",e[e.Cipher_ClientToggledCardNumberVisible=1117]="Cipher_ClientToggledCardNumberVisible",e[e.Collection_Created=1300]="Collection_Created",e[e.Collection_Updated=1301]="Collection_Updated",e[e.Collection_Deleted=1302]="Collection_Deleted",e[e.Group_Created=1400]="Group_Created",e[e.Group_Updated=1401]="Group_Updated",e[e.Group_Deleted=1402]="Group_Deleted",e[e.OrganizationUser_Invited=1500]="OrganizationUser_Invited",e[e.OrganizationUser_Confirmed=1501]="OrganizationUser_Confirmed",e[e.OrganizationUser_Updated=1502]="OrganizationUser_Updated",e[e.OrganizationUser_Removed=1503]="OrganizationUser_Removed",e[e.OrganizationUser_UpdatedGroups=1504]="OrganizationUser_UpdatedGroups",e[e.OrganizationUser_UnlinkedSso=1505]="OrganizationUser_UnlinkedSso",e[e.OrganizationUser_ResetPassword_Enroll=1506]="OrganizationUser_ResetPassword_Enroll",e[e.OrganizationUser_ResetPassword_Withdraw=1507]="OrganizationUser_ResetPassword_Withdraw",e[e.OrganizationUser_AdminResetPassword=1508]="OrganizationUser_AdminResetPassword",e[e.OrganizationUser_ResetSsoLink=1509]="OrganizationUser_ResetSsoLink",e[e.OrganizationUser_FirstSsoLogin=1510]="OrganizationUser_FirstSsoLogin",e[e.Organization_Updated=1600]="Organization_Updated",e[e.Organization_PurgedVault=1601]="Organization_PurgedVault",e[e.Organization_VaultAccessed=1603]="Organization_VaultAccessed",e[e.Organization_EnabledSso=1604]="Organization_EnabledSso",e[e.Organization_DisabledSso=1605]="Organization_DisabledSso",e[e.Organization_EnabledKeyConnector=1606]="Organization_EnabledKeyConnector",e[e.Organization_DisabledKeyConnector=1607]="Organization_DisabledKeyConnector",e[e.Organization_SponsorshipsSynced=1608]="Organization_SponsorshipsSynced",e[e.Policy_Updated=1700]="Policy_Updated",e[e.ProviderUser_Invited=1800]="ProviderUser_Invited",e[e.ProviderUser_Confirmed=1801]="ProviderUser_Confirmed",e[e.ProviderUser_Updated=1802]="ProviderUser_Updated",e[e.ProviderUser_Removed=1803]="ProviderUser_Removed",e[e.ProviderOrganization_Created=1900]="ProviderOrganization_Created",e[e.ProviderOrganization_Added=1901]="ProviderOrganization_Added",e[e.ProviderOrganization_Removed=1902]="ProviderOrganization_Removed",e[e.ProviderOrganization_VaultAccessed=1903]="ProviderOrganization_VaultAccessed"}(t.EventType||(t.EventType={}))},67577:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldType=void 0,function(e){e[e.Text=0]="Text",e[e.Hidden=1]="Hidden",e[e.Boolean=2]="Boolean",e[e.Linked=3]="Linked"}(t.FieldType||(t.FieldType={}))},25423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadType=void 0,function(e){e[e.Direct=0]="Direct",e[e.Azure=1]="Azure"}(t.FileUploadType||(t.FileUploadType={}))},43578:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HashPurpose=void 0,function(e){e[e.ServerAuthorization=1]="ServerAuthorization",e[e.LocalAuthorization=2]="LocalAuthorization"}(t.HashPurpose||(t.HashPurpose={}))},46632:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlStorageLocation=void 0,function(e){e.Local="local",e.Memory="memory",e.Session="session"}(t.HtmlStorageLocation||(t.HtmlStorageLocation={}))},55766:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regularImportOptions=t.featuredImportOptions=void 0,t.featuredImportOptions=[{id:"bitwardenjson",name:"Bitwarden (json)"},{id:"bitwardencsv",name:"Bitwarden (csv)"},{id:"chromecsv",name:"Chrome (csv)"},{id:"dashlanecsv",name:"Dashlane (csv)"},{id:"firefoxcsv",name:"Firefox (csv)"},{id:"keepass2xml",name:"KeePass 2 (xml)"},{id:"lastpasscsv",name:"LastPass (csv)"},{id:"safaricsv",name:"Safari and macOS (csv)"},{id:"1password1pux",name:"1Password (1pux)"}],t.regularImportOptions=[{id:"keepassxcsv",name:"KeePassX (csv)"},{id:"1password1pif",name:"1Password (1pif)"},{id:"1passwordwincsv",name:"1Password 6 and 7 Windows (csv)"},{id:"1passwordmaccsv",name:"1Password 6 and 7 Mac (csv)"},{id:"dashlanejson",name:"Dashlane (json)"},{id:"roboformcsv",name:"RoboForm (csv)"},{id:"keepercsv",name:"Keeper (csv)"},{id:"enpasscsv",name:"Enpass (csv)"},{id:"enpassjson",name:"Enpass (json)"},{id:"safeincloudxml",name:"SafeInCloud (xml)"},{id:"pwsafexml",name:"Password Safe (xml)"},{id:"stickypasswordxml",name:"Sticky Password (xml)"},{id:"msecurecsv",name:"mSecure (csv)"},{id:"truekeycsv",name:"True Key (csv)"},{id:"passwordbossjson",name:"Password Boss (json)"},{id:"zohovaultcsv",name:"Zoho Vault (csv)"},{id:"splashidcsv",name:"SplashID (csv)"},{id:"passworddragonxml",name:"Password Dragon (xml)"},{id:"padlockcsv",name:"Padlock (csv)"},{id:"passboltcsv",name:"Passbolt (csv)"},{id:"clipperzhtml",name:"Clipperz (html)"},{id:"aviracsv",name:"Avira (csv)"},{id:"saferpasscsv",name:"SaferPass (csv)"},{id:"upmcsv",name:"Universal Password Manager (csv)"},{id:"ascendocsv",name:"Ascendo DataVault (csv)"},{id:"meldiumcsv",name:"Meldium (csv)"},{id:"passkeepcsv",name:"PassKeep (csv)"},{id:"operacsv",name:"Opera (csv)"},{id:"vivaldicsv",name:"Vivaldi (csv)"},{id:"gnomejson",name:"GNOME Passwords and Keys/Seahorse (json)"},{id:"blurcsv",name:"Blur (csv)"},{id:"passwordagentcsv",name:"Password Agent (csv)"},{id:"passpackcsv",name:"Passpack (csv)"},{id:"passmanjson",name:"Passman (json)"},{id:"avastcsv",name:"Avast Passwords (csv)"},{id:"avastjson",name:"Avast Passwords (json)"},{id:"fsecurefsk",name:"F-Secure KEY (fsk)"},{id:"kasperskytxt",name:"Kaspersky Password Manager (txt)"},{id:"remembearcsv",name:"RememBear (csv)"},{id:"passwordwallettxt",name:"PasswordWallet (txt)"},{id:"mykicsv",name:"Myki (csv)"},{id:"securesafecsv",name:"SecureSafe (csv)"},{id:"logmeoncecsv",name:"LogMeOnce (csv)"},{id:"blackberrycsv",name:"BlackBerry Password Keeper (csv)"},{id:"buttercupcsv",name:"Buttercup (csv)"},{id:"codebookcsv",name:"Codebook (csv)"},{id:"encryptrcsv",name:"Encryptr (csv)"},{id:"yoticsv",name:"Yoti (csv)"},{id:"nordpasscsv",name:"Nordpass (csv)"}]},20971:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.SEND_KDF_ITERATIONS=t.DEFAULT_KDF_ITERATIONS=t.DEFAULT_KDF_TYPE=t.KdfType=void 0,function(e){e[e.PBKDF2_SHA256=0]="PBKDF2_SHA256"}(n=t.KdfType||(t.KdfType={})),t.DEFAULT_KDF_TYPE=n.PBKDF2_SHA256,t.DEFAULT_KDF_ITERATIONS=1e5,t.SEND_KDF_ITERATIONS=1e5},7980:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeySuffixOptions=void 0,function(e){e.Auto="auto",e.Biometric="biometric"}(t.KeySuffixOptions||(t.KeySuffixOptions={}))},31909:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityLinkedId=t.CardLinkedId=t.LoginLinkedId=void 0,function(e){e[e.Username=100]="Username",e[e.Password=101]="Password"}(t.LoginLinkedId||(t.LoginLinkedId={})),function(e){e[e.CardholderName=300]="CardholderName",e[e.ExpMonth=301]="ExpMonth",e[e.ExpYear=302]="ExpYear",e[e.Code=303]="Code",e[e.Brand=304]="Brand",e[e.Number=305]="Number"}(t.CardLinkedId||(t.CardLinkedId={})),function(e){e[e.Title=400]="Title",e[e.MiddleName=401]="MiddleName",e[e.Address1=402]="Address1",e[e.Address2=403]="Address2",e[e.Address3=404]="Address3",e[e.City=405]="City",e[e.State=406]="State",e[e.PostalCode=407]="PostalCode",e[e.Country=408]="Country",e[e.Company=409]="Company",e[e.Email=410]="Email",e[e.Phone=411]="Phone",e[e.Ssn=412]="Ssn",e[e.Username=413]="Username",e[e.PassportNumber=414]="PassportNumber",e[e.LicenseNumber=415]="LicenseNumber",e[e.FirstName=416]="FirstName",e[e.LastName=417]="LastName",e[e.FullName=418]="FullName"}(t.IdentityLinkedId||(t.IdentityLinkedId={}))},71518:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogLevelType=void 0,function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(t.LogLevelType||(t.LogLevelType={}))},7837:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationType=void 0,function(e){e[e.SyncCipherUpdate=0]="SyncCipherUpdate",e[e.SyncCipherCreate=1]="SyncCipherCreate",e[e.SyncLoginDelete=2]="SyncLoginDelete",e[e.SyncFolderDelete=3]="SyncFolderDelete",e[e.SyncCiphers=4]="SyncCiphers",e[e.SyncVault=5]="SyncVault",e[e.SyncOrgKeys=6]="SyncOrgKeys",e[e.SyncFolderCreate=7]="SyncFolderCreate",e[e.SyncFolderUpdate=8]="SyncFolderUpdate",e[e.SyncCipherDelete=9]="SyncCipherDelete",e[e.SyncSettings=10]="SyncSettings",e[e.LogOut=11]="LogOut",e[e.SyncSendCreate=12]="SyncSendCreate",e[e.SyncSendUpdate=13]="SyncSendUpdate",e[e.SyncSendDelete=14]="SyncSendDelete"}(t.NotificationType||(t.NotificationType={}))},43497:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyType=void 0,function(e){e[e.Default=0]="Default",e[e.BillingSync=1]="BillingSync"}(t.OrganizationApiKeyType||(t.OrganizationApiKeyType={}))},24643:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionType=void 0,function(e){e[e.CloudBillingSync=1]="CloudBillingSync"}(t.OrganizationConnectionType||(t.OrganizationConnectionType={}))},7368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed"}(t.OrganizationUserStatusType||(t.OrganizationUserStatusType={}))},33712:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserType=void 0,function(e){e[e.Owner=0]="Owner",e[e.Admin=1]="Admin",e[e.User=2]="User",e[e.Manager=3]="Manager",e[e.Custom=4]="Custom"}(t.OrganizationUserType||(t.OrganizationUserType={}))},98523:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentMethodType=void 0,function(e){e[e.Card=0]="Card",e[e.BankAccount=1]="BankAccount",e[e.PayPal=2]="PayPal",e[e.BitPay=3]="BitPay",e[e.Credit=4]="Credit",e[e.WireTransfer=5]="WireTransfer",e[e.AppleInApp=6]="AppleInApp",e[e.GoogleInApp=7]="GoogleInApp",e[e.Check=8]="Check"}(t.PaymentMethodType||(t.PaymentMethodType={}))},47880:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Permissions=void 0,function(e){e[e.AccessEventLogs=0]="AccessEventLogs",e[e.AccessImportExport=1]="AccessImportExport",e[e.AccessReports=2]="AccessReports",e[e.ManageAllCollections=3]="ManageAllCollections",e[e.ManageAssignedCollections=4]="ManageAssignedCollections",e[e.ManageGroups=5]="ManageGroups",e[e.ManageOrganization=6]="ManageOrganization",e[e.ManagePolicies=7]="ManagePolicies",e[e.ManageProvider=8]="ManageProvider",e[e.ManageUsers=9]="ManageUsers",e[e.ManageUsersPassword=10]="ManageUsersPassword",e[e.CreateNewCollections=11]="CreateNewCollections",e[e.EditAnyCollection=12]="EditAnyCollection",e[e.DeleteAnyCollection=13]="DeleteAnyCollection",e[e.EditAssignedCollections=14]="EditAssignedCollections",e[e.DeleteAssignedCollections=15]="DeleteAssignedCollections",e[e.ManageSso=16]="ManageSso",e[e.ManageBilling=17]="ManageBilling"}(t.Permissions||(t.Permissions={}))},22931:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanSponsorshipType=void 0,function(e){e[e.FamiliesForEnterprise=0]="FamiliesForEnterprise"}(t.PlanSponsorshipType||(t.PlanSponsorshipType={}))},47937:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanType=void 0,function(e){e[e.Free=0]="Free",e[e.FamiliesAnnually2019=1]="FamiliesAnnually2019",e[e.TeamsMonthly2019=2]="TeamsMonthly2019",e[e.TeamsAnnually2019=3]="TeamsAnnually2019",e[e.EnterpriseMonthly2019=4]="EnterpriseMonthly2019",e[e.EnterpriseAnnually2019=5]="EnterpriseAnnually2019",e[e.Custom=6]="Custom",e[e.FamiliesAnnually=7]="FamiliesAnnually",e[e.TeamsMonthly=8]="TeamsMonthly",e[e.TeamsAnnually=9]="TeamsAnnually",e[e.EnterpriseMonthly=10]="EnterpriseMonthly",e[e.EnterpriseAnnually=11]="EnterpriseAnnually"}(t.PlanType||(t.PlanType={}))},49906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyType=void 0,function(e){e[e.TwoFactorAuthentication=0]="TwoFactorAuthentication",e[e.MasterPassword=1]="MasterPassword",e[e.PasswordGenerator=2]="PasswordGenerator",e[e.SingleOrg=3]="SingleOrg",e[e.RequireSso=4]="RequireSso",e[e.PersonalOwnership=5]="PersonalOwnership",e[e.DisableSend=6]="DisableSend",e[e.SendOptions=7]="SendOptions",e[e.ResetPassword=8]="ResetPassword",e[e.MaximumVaultTimeout=9]="MaximumVaultTimeout",e[e.DisablePersonalVaultExport=10]="DisablePersonalVaultExport"}(t.PolicyType||(t.PolicyType={}))},96066:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProductType=void 0,function(e){e[e.Free=0]="Free",e[e.Families=1]="Families",e[e.Teams=2]="Teams",e[e.Enterprise=3]="Enterprise"}(t.ProductType||(t.ProductType={}))},72418:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserStatusType=void 0,function(e){e[e.Invited=0]="Invited",e[e.Accepted=1]="Accepted",e[e.Confirmed=2]="Confirmed"}(t.ProviderUserStatusType||(t.ProviderUserStatusType={}))},30185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserType=void 0,function(e){e[e.ProviderAdmin=0]="ProviderAdmin",e[e.ServiceUser=1]="ServiceUser"}(t.ProviderUserType||(t.ProviderUserType={}))},76716:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteType=void 0,function(e){e[e.Generic=0]="Generic"}(t.SecureNoteType||(t.SecureNoteType={}))},70149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendType=void 0,function(e){e[e.Text=0]="Text",e[e.File=1]="File"}(t.SendType||(t.SendType={}))},37084:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Saml2SigningBehavior=t.Saml2NameIdFormat=t.Saml2BindingType=t.OpenIdConnectRedirectBehavior=t.SsoType=void 0,function(e){e[e.None=0]="None",e[e.OpenIdConnect=1]="OpenIdConnect",e[e.Saml2=2]="Saml2"}(t.SsoType||(t.SsoType={})),function(e){e[e.RedirectGet=0]="RedirectGet",e[e.FormPost=1]="FormPost"}(t.OpenIdConnectRedirectBehavior||(t.OpenIdConnectRedirectBehavior={})),function(e){e[e.HttpRedirect=1]="HttpRedirect",e[e.HttpPost=2]="HttpPost"}(t.Saml2BindingType||(t.Saml2BindingType={})),function(e){e[e.NotConfigured=0]="NotConfigured",e[e.Unspecified=1]="Unspecified",e[e.EmailAddress=2]="EmailAddress",e[e.X509SubjectName=3]="X509SubjectName",e[e.WindowsDomainQualifiedName=4]="WindowsDomainQualifiedName",e[e.KerberosPrincipalName=5]="KerberosPrincipalName",e[e.EntityIdentifier=6]="EntityIdentifier",e[e.Persistent=7]="Persistent",e[e.Transient=8]="Transient"}(t.Saml2NameIdFormat||(t.Saml2NameIdFormat={})),function(e){e[e.IfIdpWantAuthnRequestsSigned=0]="IfIdpWantAuthnRequestsSigned",e[e.Always=1]="Always",e[e.Never=3]="Never"}(t.Saml2SigningBehavior||(t.Saml2SigningBehavior={}))},40898:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateVersion=void 0,function(e){e[e.One=1]="One",e[e.Two=2]="Two",e[e.Three=3]="Three",e[e.Four=4]="Four",e[e.Latest=4]="Latest"}(t.StateVersion||(t.StateVersion={}))},67223:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageLocation=void 0,function(e){e.Both="both",e.Disk="disk",e.Memory="memory"}(t.StorageLocation||(t.StorageLocation={}))},14538:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeType=void 0,function(e){e.System="system",e.Light="light",e.Dark="dark",e.Nord="nord",e.SolarizedDark="solarizedDark"}(t.ThemeType||(t.ThemeType={}))},94285:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransactionType=void 0,function(e){e[e.Charge=0]="Charge",e[e.Credit=1]="Credit",e[e.PromotionalCredit=2]="PromotionalCredit",e[e.ReferralCredit=3]="ReferralCredit",e[e.Refund=4]="Refund"}(t.TransactionType||(t.TransactionType={}))},97374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderType=void 0,function(e){e[e.Authenticator=0]="Authenticator",e[e.Email=1]="Email",e[e.Duo=2]="Duo",e[e.Yubikey=3]="Yubikey",e[e.U2f=4]="U2f",e[e.Remember=5]="Remember",e[e.OrganizationDuo=6]="OrganizationDuo",e[e.WebAuthn=7]="WebAuthn"}(t.TwoFactorProviderType||(t.TwoFactorProviderType={}))},71703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UriMatchType=void 0,function(e){e[e.Domain=0]="Domain",e[e.Host=1]="Host",e[e.StartsWith=2]="StartsWith",e[e.Exact=3]="Exact",e[e.RegularExpression=4]="RegularExpression",e[e.Never=5]="Never"}(t.UriMatchType||(t.UriMatchType={}))},44254:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerificationType=void 0,function(e){e[e.MasterPassword=0]="MasterPassword",e[e.OTP=1]="OTP"}(t.VerificationType||(t.VerificationType={}))},45428:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AccountFactory=void 0;t.AccountFactory=class{constructor(e){this.accountConstructor=e}create(e){return new this.accountConstructor(e)}}},22855:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalStateFactory=void 0;t.GlobalStateFactory=class{constructor(e){this.globalStateConstructor=e}create(e){return new this.globalStateConstructor(e)}}},35266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateFactory=void 0;const i=n(45428),r=n(22855);t.StateFactory=class{constructor(e,t){this.globalStateFactory=new r.GlobalStateFactory(e),this.accountFactory=new i.AccountFactory(t)}createGlobal(e){return this.globalStateFactory.create(e)}createAccount(e){return this.accountFactory.create(e)}}},51214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AscendoCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<2)return;const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[e.length-1]),n.name=this.getValueOrDefault(e[0],"--"),e.length>2&&e.length%2==0)for(let t=0;t-1?n.login.password=this.getValueOrDefault(i):null==n.login.username&&this.usernameFieldNames.indexOf(o)>-1?n.login.username=this.getValueOrDefault(i):(null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(o)>-1?n.login.uris=this.makeUriArray(i):this.processKvp(n,r,i)}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AscendoCsvImporter=o},60006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AvastCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name),n.login.uris=this.makeUriArray(e.web),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.login),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AvastCsvImporter=o},14494:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AvastJsonImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new o.ImportResult,n=JSON.parse(e);return null==n?(t.success=!1,Promise.resolve(t)):(null!=n.logins&&n.logins.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.custName),n.notes=this.getValueOrDefault(e.note),n.login.uris=this.makeUriArray(e.url),n.login.password=this.getValueOrDefault(e.pwd),n.login.username=this.getValueOrDefault(e.loginName),this.cleanupCipher(n),t.ciphers.push(n)})),null!=n.notes&&n.notes.forEach((e=>{const n=this.initLoginCipher();n.type=i.CipherType.SecureNote,n.secureNote.type=r.SecureNoteType.Generic,n.name=this.getValueOrDefault(e.label),n.notes=this.getValueOrDefault(e.text),this.cleanupCipher(n),t.ciphers.push(n)})),null!=n.cards&&n.cards.forEach((e=>{const n=this.initLoginCipher();n.type=i.CipherType.Card,n.name=this.getValueOrDefault(e.custName),n.notes=this.getValueOrDefault(e.note),n.card.cardholderName=this.getValueOrDefault(e.holderName),n.card.number=this.getValueOrDefault(e.cardNumber),n.card.code=this.getValueOrDefault(e.cvv),n.card.brand=this.getCardBrand(n.card.number),null!=e.expirationDate&&(null!=e.expirationDate.month&&(n.card.expMonth=e.expirationDate.month+""),null!=e.expirationDate.year&&(n.card.expYear=e.expirationDate.year+"")),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AvastJsonImporter=s},51272:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AviraCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name,this.getValueOrDefault(this.nameFromUrl(e.website),"--")),n.login.uris=this.makeUriArray(e.website),n.login.password=this.getValueOrDefault(e.password),this.isNullOrWhitespace(e.username)&&!this.isNullOrWhitespace(e.secondary_username)?n.login.username=e.secondary_username:(n.login.username=this.getValueOrDefault(e.username),n.notes=this.getValueOrDefault(e.secondary_username)),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.AviraCsvImporter=o},5957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseImporter=void 0;const i=n(57460),r=n(32773),o=n(67577),a=n(76716),s=n(82769),l=n(97144),c=n(86001),d=n(58545),p=n(36914),u=n(16506),m=n(28331),h=n(99364),v=n(27944);t.BaseImporter=class{constructor(){this.organizationId=null,this.logService=new v.ConsoleLogService(!1),this.newLineRegex=/(?:\r\n|\r|\n)/,this.passwordFieldNames=["password","pass word","passphrase","pass phrase","pass","code","code word","codeword","secret","secret word","personpwd","key","keyword","key word","keyphrase","key phrase","form_pw","wppassword","pin","pwd","pw","pword","passwd","p","serial","serial#","license key","reg #","passwort"],this.usernameFieldNames=["user","name","user name","username","login name","email","e-mail","id","userid","user id","login","form_loginname","wpname","mail","loginid","login id","log","personlogin","first name","last name","card#","account #","member","member #","nom","benutzername"],this.notesFieldNames=["note","notes","comment","comments","memo","description","free form","freeform","free text","freetext","free","kommentar"],this.uriFieldNames=["url","hyper link","hyperlink","link","host","hostname","host name","server","address","hyper ref","href","web","website","web site","site","web-site","uri","ort","adresse"],this.parseCsvOptions={encoding:"UTF-8",skipEmptyLines:!1}}get organization(){return null!=this.organizationId}parseXml(e){const t=(new DOMParser).parseFromString(e,"application/xml");return null!=t&&null==t.querySelector("parsererror")?t:null}parseCsv(e,t,n={}){const r=Object.assign({header:t},this.parseCsvOptions,n);e=this.splitNewLine(e).join("\n").trim();const o=i.parse(e,r);return null!=o.errors&&o.errors.length>0&&o.errors.forEach((e=>{null!=e.row&&this.logService.warning("Error parsing row "+e.row+": "+e.message)})),o.data&&o.data.length>0?o.data:null}parseSingleRowCsv(e){if(this.isNullOrWhitespace(e))return null;const t=this.parseCsv(e,!1);return null!=t&&t.length>0&&t[0].length>0?t[0]:null}makeUriArray(e){if(null==e)return null;if("string"==typeof e){const t=new u.LoginUriView;return t.uri=this.fixUri(e),this.isNullOrWhitespace(t.uri)?null:(t.match=null,[t])}if(e.length>0){const t=[];return e.forEach((e=>{const n=new u.LoginUriView;n.uri=this.fixUri(e),this.isNullOrWhitespace(n.uri)||(n.match=null,t.push(n))})),0===t.length?null:t}return null}fixUri(e){return null==e?null:(-1===(e=e.trim()).indexOf("://")&&e.indexOf(".")>=0&&(e="http://"+e),e.length>1e3?e.substring(0,1e3):e)}nameFromUrl(e){const t=s.Utils.getHostname(e);return this.isNullOrWhitespace(t)?null:t.startsWith("www.")?t.replace("www.",""):t}isNullOrWhitespace(e){return s.Utils.isNullOrWhitespace(e)}getValueOrDefault(e,t=null){return this.isNullOrWhitespace(e)?t:e}splitNewLine(e){return e.split(this.newLineRegex)}getCardBrand(e){if(this.isNullOrWhitespace(e))return null;let t=new RegExp("^4");return null!=e.match(t)?"Visa":/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(e)?"Mastercard":(t=new RegExp("^3[47]"),null!=e.match(t)?"Amex":(t=new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)"),null!=e.match(t)?"Discover":(t=new RegExp("^36"),null!=e.match(t)?"Diners Club":(t=new RegExp("^30[0-5]"),null!=e.match(t)?"Diners Club":(t=new RegExp("^35(2[89]|[3-8][0-9])"),null!=e.match(t)?"JCB":(t=new RegExp("^(4026|417500|4508|4844|491(3|7))"),null!=e.match(t)?"Visa":null))))))}setCardExpiration(e,t){if(!this.isNullOrWhitespace(t)){const n=(t=t.replace(/\s/g,"")).split("/");if(2===n.length){let t=null,i=null;if(1!==n[0].length&&2!==n[0].length||(t=n[0],2===t.length&&"0"===t[0]&&(t=t.substr(1,1))),2!==n[1].length&&4!==n[1].length||(i=2===t.length?"20"+n[1]:n[1]),null!=t&&null!=i)return e.card.expMonth=t,e.card.expYear=i,!0}}return!1}moveFoldersToCollections(e){e.folderRelationships.forEach((t=>e.collectionRelationships.push(t))),e.collections=e.folders.map((e=>{const t=new c.CollectionView;return t.name=e.name,t})),e.folderRelationships=[],e.folders=[]}querySelectorDirectChild(e,t){const n=this.querySelectorAllDirectChild(e,t);return 0===n.length?null:n[0]}querySelectorAllDirectChild(e,t){return Array.from(e.querySelectorAll(t)).filter((t=>t.parentNode===e))}initLoginCipher(){const e=new l.CipherView;return e.favorite=!1,e.notes="",e.fields=[],e.login=new m.LoginView,e.type=r.CipherType.Login,e}cleanupCipher(e){null!=e&&(e.type!==r.CipherType.Login&&(e.login=null),this.isNullOrWhitespace(e.name)&&(e.name="--"),this.isNullOrWhitespace(e.notes)?e.notes=null:e.notes=e.notes.trim(),null!=e.fields&&0===e.fields.length&&(e.fields=null))}processKvp(e,t,n,i=o.FieldType.Text){if(!this.isNullOrWhitespace(n))if(this.isNullOrWhitespace(t)&&(t=""),n.length>200||n.trim().search(this.newLineRegex)>-1)null==e.notes&&(e.notes=""),e.notes+=t+": "+this.splitNewLine(n).join("\n")+"\n";else{null==e.fields&&(e.fields=[]);const r=new d.FieldView;r.type=i,r.name=t,r.value=n,e.fields.push(r)}}processFolder(e,t){let n=e.folders.length;const i=!this.isNullOrWhitespace(t);let r=i;if(i)for(let o=0;o0&&(e.identity.firstName=this.getValueOrDefault(n[0])),2===n.length?e.identity.lastName=this.getValueOrDefault(n[1]):n.length>=3&&(e.identity.middleName=this.getValueOrDefault(n[1]),e.identity.lastName=n.slice(2,n.length).join(" "))}}},25690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenCsvImporter=void 0;const i=n(34453),r=n(32773),o=n(67577),a=n(76716),s=n(2859),l=n(97144),c=n(86001),d=n(58545),p=n(28331),u=n(99364),m=n(5957);class h extends m.BaseImporter{parse(e){const t=new s.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.organization&&!this.isNullOrWhitespace(e.collections)){e.collections.split(",").forEach((e=>{let n=!0,i=t.collections.length;for(let r=0;ri+2&&(r.value=t[e].substr(i+2)),n.fields.push(r)}}switch(null!=e.type?e.type.toLowerCase():null){case"note":n.type=r.CipherType.SecureNote,n.secureNote=new u.SecureNoteView,n.secureNote.type=a.SecureNoteType.Generic;break;default:{n.type=r.CipherType.Login,n.login=new p.LoginView,n.login.totp=this.getValueOrDefault(e.login_totp||e.totp),n.login.username=this.getValueOrDefault(e.login_username||e.username),n.login.password=this.getValueOrDefault(e.login_password||e.password);const t=this.parseSingleRowCsv(e.login_uri||e.uri);n.login.uris=this.makeUriArray(t);break}}t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BitwardenCsvImporter=h},10614:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenJsonImporter=void 0;const r=n(22205),o=n(2859),a=n(83460),s=n(5136),l=n(31087),c=n(5957);class d extends c.BaseImporter{constructor(e,t){super(),this.cryptoService=e,this.i18nService=t}parse(e){var t;return i(this,void 0,void 0,(function*(){return this.result=new o.ImportResult,this.results=JSON.parse(e),null==this.results||null==this.results.items?(null===(t=this.results)||void 0===t?void 0:t.passwordProtected)?(this.result.success=!1,this.result.missingPassword=!0,this.result.errorMessage=this.i18nService.t("importPasswordRequired"),this.result):(this.result.success=!1,this.result):(this.results.encrypted?yield this.parseEncrypted():this.parseDecrypted(),this.result)}))}parseEncrypted(){return i(this,void 0,void 0,(function*(){if(null!=this.results.encKeyValidation_DO_NOT_EDIT){const e=yield this.cryptoService.getOrgKey(this.organizationId),t=new r.EncString(this.results.encKeyValidation_DO_NOT_EDIT);if(null===(yield this.cryptoService.decryptToUtf8(t,e)))return this.result.success=!1,void(this.result.errorMessage=this.i18nService.t("importEncKeyError"))}const e=new Map;if(this.organization&&null!=this.results.collections)for(const t of this.results.collections){const n=s.CollectionWithIdExport.toDomain(t);if(null!=n){n.id=null,n.organizationId=this.organizationId;const i=yield n.decrypt();e.set(t.id,this.result.collections.length),this.result.collections.push(i)}}else if(!this.organization&&null!=this.results.folders)for(const t of this.results.folders){const n=l.FolderWithIdExport.toDomain(t);if(null!=n){n.id=null;const i=yield n.decrypt();e.set(t.id,this.result.folders.length),this.result.folders.push(i)}}for(const t of this.results.items){const n=a.CipherWithIdExport.toDomain(t);n.id=null,n.folderId=null,n.organizationId=this.organizationId,n.collectionIds=null,null!=n.passwordHistory&&n.passwordHistory.length>5&&(n.passwordHistory=n.passwordHistory.slice(0,5)),!this.organization&&null!=t.folderId&&e.has(t.folderId)?this.result.folderRelationships.push([this.result.ciphers.length,e.get(t.folderId)]):this.organization&&null!=t.collectionIds&&t.collectionIds.forEach((t=>{e.has(t)&&this.result.collectionRelationships.push([this.result.ciphers.length,e.get(t)])}));const i=yield n.decrypt();this.cleanupCipher(i),this.result.ciphers.push(i)}this.result.success=!0}))}parseDecrypted(){const e=new Map;this.organization&&null!=this.results.collections?this.results.collections.forEach((t=>{const n=s.CollectionWithIdExport.toView(t);null!=n&&(n.id=null,n.organizationId=null,e.set(t.id,this.result.collections.length),this.result.collections.push(n))})):this.organization||null==this.results.folders||this.results.folders.forEach((t=>{const n=l.FolderWithIdExport.toView(t);null!=n&&(n.id=null,e.set(t.id,this.result.folders.length),this.result.folders.push(n))})),this.results.items.forEach((t=>{const n=a.CipherWithIdExport.toView(t);n.id=null,n.folderId=null,n.organizationId=null,n.collectionIds=null,null!=n.passwordHistory&&n.passwordHistory.length>5&&(n.passwordHistory=n.passwordHistory.slice(0,5)),!this.organization&&null!=t.folderId&&e.has(t.folderId)?this.result.folderRelationships.push([this.result.ciphers.length,e.get(t.folderId)]):this.organization&&null!=t.collectionIds&&t.collectionIds.forEach((t=>{e.has(t)&&this.result.collectionRelationships.push([this.result.ciphers.length,e.get(t)])})),this.cleanupCipher(n),this.result.ciphers.push(n)})),this.result.success=!0}}t.BitwardenJsonImporter=d},20312:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenPasswordProtectedImporter=void 0;const r=n(20971),o=n(22205),a=n(2859),s=n(10614);class l extends s.BitwardenJsonImporter{constructor(e,t,n){super(e,t),this.password=n}parse(e){const t=Object.create(null,{parse:{get:()=>super.parse}});return i(this,void 0,void 0,(function*(){const n=new a.ImportResult,i=JSON.parse(e);if(this.cannotParseFile(i))return n.success=!1,n;if(!(yield this.checkPassword(i)))return n.success=!1,n.errorMessage=this.i18nService.t("importEncKeyError"),n;const r=new o.EncString(i.data),s=yield this.cryptoService.decryptToUtf8(r,this.key);return yield t.parse.call(this,s)}))}checkPassword(e){return i(this,void 0,void 0,(function*(){this.key=yield this.cryptoService.makePinKey(this.password,e.salt,r.KdfType.PBKDF2_SHA256,e.kdfIterations);const t=new o.EncString(e.encKeyValidation_DO_NOT_EDIT);return null!==(yield this.cryptoService.decryptToUtf8(t,this.key))}))}cannotParseFile(e){return!(e&&e.encrypted&&e.passwordProtected&&e.salt&&e.kdfIterations&&"number"==typeof e.kdfIterations&&null!=e.kdfType&&null!=r.KdfType[e.kdfType]&&e.encKeyValidation_DO_NOT_EDIT&&e.data)}}t.BitwardenPasswordProtectedImporter=l},19326:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlackBerryCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if("list"===e.grouping)return;const n=this.initLoginCipher();n.favorite="1"===e.fav,n.name=this.getValueOrDefault(e.name),n.notes=this.getValueOrDefault(e.extra),"note"!==e.grouping&&(n.login.uris=this.makeUriArray(e.url),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.username)),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BlackBerryCsvImporter=o},68360:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BlurCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{"null"===e.label&&(e.label=null);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.label,this.getValueOrDefault(this.nameFromUrl(e.domain),"--")),n.login.uris=this.makeUriArray(e.domain),n.login.password=this.getValueOrDefault(e.password),this.isNullOrWhitespace(e.email)&&!this.isNullOrWhitespace(e.username)?n.login.username=e.username:(n.login.username=this.getValueOrDefault(e.email),n.notes=this.getValueOrDefault(e.username)),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.BlurCsvImporter=o},33268:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtercupCsvImporter=void 0;const i=n(2859),r=n(5957),o=["!group_id","!group_name","title","username","password","URL","id"];class a extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValueOrDefault(e["!group_name"]));const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.title,"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.URL);let i=!1;for(const t in e)e.hasOwnProperty(t)&&(i||-1!==o.indexOf(t)||(i=!0),i&&this.processKvp(n,t,e[t]));this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.ButtercupCsvImporter=a},58141:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChromeCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.name,"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.ChromeCsvImporter=o},86025:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ClipperzHtmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelector("textarea");if(null==r||this.isNullOrWhitespace(r.textContent))return t.errorMessage="Missing textarea.",t.success=!1,Promise.resolve(t);return JSON.parse(r.textContent).forEach((e=>{const n=this.initLoginCipher();if(this.isNullOrWhitespace(e.label)||(n.name=e.label.split(" ")[0]),null==e.data||this.isNullOrWhitespace(e.data.notes)||(n.notes=e.data.notes.split("\\n").join("\n")),null!=e.currentVersion&&null!=e.currentVersion.fields)for(const t in e.currentVersion.fields){if(!e.currentVersion.fields.hasOwnProperty(t))continue;const i=e.currentVersion.fields[t];switch(null!=i.actionType?i.actionType.toLowerCase():null){case"password":n.login.password=this.getValueOrDefault(i.value);break;case"email":case"username":case"user":case"name":n.login.username=this.getValueOrDefault(i.value);break;case"url":n.login.uris=this.makeUriArray(i.value);break;default:{const e=null!=i.label?i.label.toLowerCase():null;null==n.login.password&&this.passwordFieldNames.indexOf(e)>-1?n.login.password=this.getValueOrDefault(i.value):null==n.login.username&&this.usernameFieldNames.indexOf(e)>-1?n.login.username=this.getValueOrDefault(i.value):(null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(e)>-1?n.login.uris=this.makeUriArray(i.value):this.processKvp(n,i.label,i.value);break}}}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}}t.ClipperzHtmlImporter=o},42752:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodebookCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValueOrDefault(e.Category));const n=this.initLoginCipher();n.favorite="True"===this.getValueOrDefault(e.Favorite),n.name=this.getValueOrDefault(e.Entry,"--"),n.notes=this.getValueOrDefault(e.Note),n.login.username=this.getValueOrDefault(e.Username,e.Email),n.login.password=this.getValueOrDefault(e.Password),n.login.totp=this.getValueOrDefault(e.TOTP),n.login.uris=this.makeUriArray(e.Website),this.isNullOrWhitespace(e.Username)||this.processKvp(n,"Email",e.Email),this.processKvp(n,"Phone",e.Phone),this.processKvp(n,"PIN",e.PIN),this.processKvp(n,"Account",e.Account),this.processKvp(n,"Date",e.Date),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.CodebookCsvImporter=o},99552:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DashlaneCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(48830),l=n(28331),c=n(5957),d=new Set(["title","note","username","password","url","otpSecret","category"]),p=new Set(["type","title","first_name","middle_name","last_name","login","email","phone_number","address","country","state","city","zip","item_name"]),u=new Set(["title","note"]);class m extends c.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);if(null==n)return t.success=!1,Promise.resolve(t);if(null!=n[0].type&&null!=n[0].title){if(1===n.filter((e=>"name"===e.type)).length){const e=this.initLoginCipher();return e.type=i.CipherType.Identity,e.identity=new s.IdentityView,n.forEach((t=>{this.parsePersonalInformationRecordAsIdentity(e,t)})),this.cleanupCipher(e),t.ciphers.push(e),t.success=!0,Promise.resolve(t)}}return n.forEach((e=>{const n=this.initLoginCipher(),i=Object.keys(e);"username"===i[0]&&(this.processFolder(t,e.category),this.parseCredentialsRecord(n,e)),"type"===i[0]&&"account_name"===i[1]&&this.parsePaymentRecord(n,e),"type"===i[0]&&"number"===i[1]&&this.parseIdRecord(n,e),"type"===i[0]!=null&&"title"===i[1]&&this.parsePersonalInformationRecord(n,e),"title"===i[0]&&"note"===i[1]&&this.parseSecureNoteRecords(n,e),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}parseCredentialsRecord(e,t){e.type=i.CipherType.Login,e.login=new l.LoginView,e.name=t.title,e.notes=t.note,e.login.username=t.username,e.login.password=t.password,e.login.totp=t.otpSecret,e.login.uris=this.makeUriArray(t.url),this.importUnmappedFields(e,t,d)}parsePaymentRecord(e,t){e.type=i.CipherType.Card,e.card=new a.CardView,e.name=t.account_name;let n=[];switch(t.type){case"credit_card":e.card.cardholderName=t.account_name,e.card.number=t.cc_number,e.card.brand=this.getCardBrand(e.card.number),e.card.code=t.code,e.card.expMonth=t.expiration_month,e.card.expYear=t.expiration_year.substring(2,4),n=["account_name","account_holder","cc_number","code","expiration_month","expiration_year"];break;case"bank":e.card.cardholderName=t.account_holder,e.card.number=t.account_number,n=["account_name","account_holder","account_number"]}this.importUnmappedFields(e,t,new Set(n))}parseIdRecord(e,t){e.type=i.CipherType.Identity,e.identity=new s.IdentityView;const n=["name","number"];switch(t.type){case"card":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.licenseNumber=t.number;break;case"passport":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.passportNumber=t.number;break;case"license":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.licenseNumber=t.number,e.identity.state=t.state,n.push("state");break;case"social_security":e.name=`${t.name} ${t.type}`,this.processFullName(e,t.name),e.identity.ssn=t.number;break;case"tax_number":e.name=t.type,e.identity.licenseNumber=t.number}this.importUnmappedFields(e,t,new Set(n))}parsePersonalInformationRecord(e,t){e.type=i.CipherType.SecureNote,e.secureNote.type=r.SecureNoteType.Generic,"name"===t.type?e.name=`${t.title} ${t.first_name} ${t.middle_name} ${t.last_name}`.replace(" "," ").trim():e.name=t.item_name;const n=t;Object.keys(t).forEach((t=>{this.processKvp(e,t,n[t])}))}parsePersonalInformationRecordAsIdentity(e,t){switch(t.type){case"name":this.processFullName(e,`${t.first_name} ${t.middle_name} ${t.last_name}`),e.identity.title=t.title,e.name=e.identity.fullName,e.identity.username=t.login;break;case"email":e.identity.email=t.email;break;case"number":e.identity.phone=t.phone_number;break;case"address":e.identity.address1=t.address,e.identity.city=t.city,e.identity.postalCode=t.zip,e.identity.state=t.state,e.identity.country=t.country}this.importUnmappedFields(e,t,p)}parseSecureNoteRecords(e,t){e.type=i.CipherType.SecureNote,e.secureNote.type=r.SecureNoteType.Generic,e.name=t.title,e.notes=t.note,this.importUnmappedFields(e,t,u)}importUnmappedFields(e,t,n){Object.keys(t).filter((e=>!n.has(e))).forEach((n=>{const i=t;this.processKvp(e,n,i[n])}))}}t.DashlaneCsvImporter=m},31188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DashlaneJsonImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(97144),l=n(48830),c=n(99364),d=n(5957),p=new Set(["ADDRESS","AUTHENTIFIANT","BANKSTATEMENT","IDCARD","IDENTITY","PAYMENTMEANS_CREDITCARD","PAYMENTMEAN_PAYPAL","EMAIL"]);class u extends d.BaseImporter{parse(e){this.result=new o.ImportResult;const t=JSON.parse(e);if(null==t||0===t.length)return this.result.success=!1,Promise.resolve(this.result);null!=t.ADDRESS&&this.processAddress(t.ADDRESS),null!=t.AUTHENTIFIANT&&this.processAuth(t.AUTHENTIFIANT),null!=t.BANKSTATEMENT&&this.processNote(t.BANKSTATEMENT,"BankAccountName"),null!=t.IDCARD&&this.processNote(t.IDCARD,"Fullname"),null!=t.PAYMENTMEANS_CREDITCARD&&this.processCard(t.PAYMENTMEANS_CREDITCARD),null!=t.IDENTITY&&this.processIdentity(t.IDENTITY);for(const n in t)t.hasOwnProperty(n)&&!p.has(n)&&this.processNote(t[n],null,"Generic Note");return this.result.success=!0,Promise.resolve(this.result)}processAuth(e){e.forEach((e=>{const t=this.initLoginCipher();t.name=this.getValueOrDefault(e.title),t.login.username=this.getValueOrDefault(e.login,this.getValueOrDefault(e.secondaryLogin)),this.isNullOrWhitespace(t.login.username)?t.login.username=this.getValueOrDefault(e.email):this.isNullOrWhitespace(e.email)||(t.notes="Email: "+e.email+"\n"),t.login.password=this.getValueOrDefault(e.password),t.login.uris=this.makeUriArray(e.domain),t.notes+=this.getValueOrDefault(e.note,""),this.convertToNoteIfNeeded(t),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processIdentity(e){e.forEach((e=>{const t=new s.CipherView;t.identity=new l.IdentityView,t.type=i.CipherType.Identity,t.name=this.getValueOrDefault(e.fullName,"");const n=t.name.split(" ");n.length>0&&(t.identity.firstName=this.getValueOrDefault(n[0])),2===n.length?t.identity.lastName=this.getValueOrDefault(n[1]):3===n.length&&(t.identity.middleName=this.getValueOrDefault(n[1]),t.identity.lastName=this.getValueOrDefault(n[2])),t.identity.username=this.getValueOrDefault(e.pseudo),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processAddress(e){e.forEach((e=>{const t=new s.CipherView;t.identity=new l.IdentityView,t.type=i.CipherType.Identity,t.name=this.getValueOrDefault(e.addressName),t.identity.address1=this.getValueOrDefault(e.addressFull),t.identity.city=this.getValueOrDefault(e.city),t.identity.state=this.getValueOrDefault(e.state),t.identity.postalCode=this.getValueOrDefault(e.zipcode),t.identity.country=this.getValueOrDefault(e.country),null!=t.identity.country&&(t.identity.country=t.identity.country.toUpperCase()),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processCard(e){e.forEach((e=>{const t=new s.CipherView;t.card=new a.CardView,t.type=i.CipherType.Card,t.name=this.getValueOrDefault(e.bank),t.card.number=this.getValueOrDefault(e.cardNumber),t.card.brand=this.getCardBrand(t.card.number),t.card.cardholderName=this.getValueOrDefault(e.owner),this.isNullOrWhitespace(t.card.brand)||(this.isNullOrWhitespace(t.name)?t.name=t.card.brand:t.name+=" - "+t.card.brand),this.cleanupCipher(t),this.result.ciphers.push(t)}))}processNote(e,t,n=null){e.forEach((e=>{const o=new s.CipherView;o.secureNote=new c.SecureNoteView,o.type=i.CipherType.SecureNote,o.secureNote.type=r.SecureNoteType.Generic,o.name=null!=n?n:this.getValueOrDefault(e[t]);for(const n in e)e.hasOwnProperty(n)&&n!==t&&this.processKvp(o,n,e[n].toString());this.cleanupCipher(o),this.result.ciphers.push(o)}))}}t.DashlaneJsonImporter=u},42578:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptrCsvImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Label,"--"),n.notes=this.getValueOrDefault(e.Notes);const r=this.getValueOrDefault(e.Text);this.isNullOrWhitespace(r)||(this.isNullOrWhitespace(n.notes)?n.notes=r:n.notes+="\n\n"+r);const a=e["Entry Type"];if("Password"===a)n.login.username=this.getValueOrDefault(e.Username),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e["Site URL"]);else if("Credit Card"===a){n.type=i.CipherType.Card,n.card=new o.CardView,n.card.cardholderName=this.getValueOrDefault(e["Name on card"]),n.card.number=this.getValueOrDefault(e["Card Number"]),n.card.brand=this.getCardBrand(n.card.number),n.card.code=this.getValueOrDefault(e.CVV);const t=this.getValueOrDefault(e.Expiry);if(!this.isNullOrWhitespace(t)){const e=t.split("/");e.length>1&&(n.card.expMonth=parseInt(e[0],null).toString(),n.card.expYear=(2e3+parseInt(e[1],null)).toString())}}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.EncryptrCsvImporter=s},41933:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnpassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(99364),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let l=!0;return n.forEach((e=>{if(e.length<2||l&&("Title"===e[0]||"title"===e[0]))return void(l=!1);const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[e.length-1]),n.name=this.getValueOrDefault(e[0],"--"),2!==e.length&&(this.containsField(e,"username")||this.containsField(e,"password")||this.containsField(e,"email")||this.containsField(e,"url"))||(n.type=i.CipherType.SecureNote,n.secureNote=new s.SecureNoteView,n.secureNote.type=r.SecureNoteType.Generic),this.containsField(e,"cardholder")&&this.containsField(e,"number")&&this.containsField(e,"expiry date")&&(n.type=i.CipherType.Card,n.card=new a.CardView),e.length>2&&e.length%2==0)for(let t=0;t!this.isNullOrWhitespace(e)&&e.toLowerCase()===t.toLowerCase())).length>0}}t.EnpassCsvImporter=c},84783:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnpassJsonImporter=void 0;const i=n(32773),r=n(67577),o=n(2859),a=n(91766),s=n(36914),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=JSON.parse(e);if(null==n||null==n.items||0===n.items.length)return t.success=!1,Promise.resolve(t);const i=new Map,r=new Map,a=this.buildFolderTree(n.folders);return this.flattenFolderTree(null,a,i),i.forEach(((e,n)=>{r.set(n,t.folders.length);const i=new s.FolderView;i.name=e,t.folders.push(i)})),n.items.forEach((e=>{null!=e.folders&&e.folders.length>0&&r.has(e.folders[0])&&t.folderRelationships.push([t.ciphers.length,r.get(e.folders[0])]);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.title),n.favorite=e.favorite>0,null!=e.template_type&&null!=e.fields&&e.fields.length>0&&(0===e.template_type.indexOf("login.")||0===e.template_type.indexOf("password.")?this.processLogin(n,e.fields):0===e.template_type.indexOf("creditcard.")?this.processCard(n,e.fields):e.template_type.indexOf("identity.")<0&&e.fields.some((e=>"password"===e.type&&!this.isNullOrWhitespace(e.value)))?this.processLogin(n,e.fields):this.processNote(n,e.fields)),n.notes+="\n"+this.getValueOrDefault(e.note,""),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}processLogin(e,t){const n=[];t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||("username"!==t.type&&"email"!==t.type||!this.isNullOrWhitespace(e.login.username)?"password"===t.type&&this.isNullOrWhitespace(e.login.password)?e.login.password=t.value:"totp"===t.type&&this.isNullOrWhitespace(e.login.totp)?e.login.totp=t.value:"url"===t.type?n.push(t.value):this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text):e.login.username=t.value)})),e.login.uris=this.makeUriArray(n)}processCard(e,t){e.card=new a.CardView,e.type=i.CipherType.Card,t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||"ccType"===t.type||("ccName"===t.type&&this.isNullOrWhitespace(e.card.cardholderName)?e.card.cardholderName=t.value:"ccNumber"===t.type&&this.isNullOrWhitespace(e.card.number)?(e.card.number=t.value,e.card.brand=this.getCardBrand(e.card.number)):"ccCvc"===t.type&&this.isNullOrWhitespace(e.card.code)?e.card.code=t.value:"ccExpiry"===t.type&&this.isNullOrWhitespace(e.card.expYear)&&this.setCardExpiration(e,t.value)||this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text))}))}processNote(e,t){t.forEach((t=>{this.isNullOrWhitespace(t.value)||"section"===t.type||this.processKvp(e,t.label,t.value,1===t.sensitive?r.FieldType.Hidden:r.FieldType.Text)}))}buildFolderTree(e){if(null==e)return[];const t=[],n=new Map([]);return e.forEach((e=>{n.set(e.uuid,e),e.children=[]})),e.forEach((e=>{null!=e.parent_uuid&&""!==e.parent_uuid&&n.has(e.parent_uuid)?n.get(e.parent_uuid).children.push(e):t.push(e)})),t}flattenFolderTree(e,t,n){null!=t&&t.forEach((t=>{if(null!=t.title&&""!==t.title.trim()){let i=t.title.trim();null!=e&&""!==e.trim()&&(i=e+"/"+i),n.set(t.uuid,i),null!=t.children&&0!==t.children.length&&this.flattenFolderTree(i,t.children,n)}}))}}t.EnpassJsonImporter=c},62709:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FirefoxCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.filter((e=>"chrome://FirefoxAccounts"!==e.url)).forEach((e=>{const n=this.initLoginCipher(),i=this.getValueOrDefault(e.url,this.getValueOrDefault(e.hostname));n.name=this.getValueOrDefault(this.nameFromUrl(i),"--"),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(i),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.FirefoxCsvImporter=o},47340:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FSecureFskImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=JSON.parse(e);if(null==n||null==n.data)return t.success=!1,Promise.resolve(t);for(const r in n.data){if(!n.data.hasOwnProperty(r))continue;const e=n.data[r],a=this.initLoginCipher();if(a.name=this.getValueOrDefault(e.service),a.notes=this.getValueOrDefault(e.notes),"website"===e.style||"globe"===e.style)a.login.username=this.getValueOrDefault(e.username),a.login.password=this.getValueOrDefault(e.password),a.login.uris=this.makeUriArray(e.url);else{if("creditcard"!==e.style)continue;a.type=i.CipherType.Card,a.card=new o.CardView,a.card.cardholderName=this.getValueOrDefault(e.username),a.card.number=this.getValueOrDefault(e.creditNumber),a.card.brand=this.getCardBrand(a.card.number),a.card.code=this.getValueOrDefault(e.creditCvv),this.isNullOrWhitespace(e.creditExpiry)||this.setCardExpiration(a,e.creditExpiry)||this.processKvp(a,"Expiration",e.creditExpiry),this.isNullOrWhitespace(e.password)||this.processKvp(a,"PIN",e.password)}this.convertToNoteIfNeeded(a),this.cleanupCipher(a),t.ciphers.push(a)}return t.success=!0,Promise.resolve(t)}}t.FSecureFskImporter=s},72378:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GnomeJsonImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=JSON.parse(e);if(null==n||0===Object.keys(n).length)return t.success=!1,Promise.resolve(t);for(const i in n)n.hasOwnProperty(i)&&!this.isNullOrWhitespace(i)&&0!==n[i].length&&n[i].forEach((e=>{if(this.isNullOrWhitespace(e.display_name)||0!==e.display_name.indexOf("http"))return;this.processFolder(t,i);const n=this.initLoginCipher();if(n.name=e.display_name.replace("http://","").replace("https://",""),n.name.length>30&&(n.name=n.name.substring(0,30)),n.login.password=this.getValueOrDefault(e.secret),n.login.uris=this.makeUriArray(e.display_name),null!=e.attributes){n.login.username=null!=e.attributes?this.getValueOrDefault(e.attributes.username_value):null;for(const t in e.attributes)e.attributes.hasOwnProperty(t)&&"username_value"!==t&&"xdg:schema"!==t&&this.processKvp(n,t,e.attributes[t])}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)}));return this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.GnomeJsonImporter=o},89696:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportError=void 0;class n extends Error{constructor(e,t=!1){super(e),this.passwordRequired=t}}t.ImportError=n},16164:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KasperskyTxtImporter=void 0;const i=n(2859),r=n(5957),o="Notes\n\n",a="Applications\n\n",s="Websites\n\n",l="\n---\n";class c extends r.BaseImporter{parse(e){const t=new i.ImportResult;let n,r,l,c=this.splitNewLine(e).join("\n");if(-1!==c.indexOf(o)){const e=c.split(o);e.length>1&&(c=e[0],n=e[1])}if(-1!==c.indexOf(a)){const e=c.split(a);e.length>1&&(c=e[0],r=e[1])}if(0===c.indexOf(s)){const e=c.split(s);e.length>1&&(c=e[0],l=e[1])}const d=this.parseDataCategory(n),p=this.parseDataCategory(r),u=this.parseDataCategory(l);return d.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.get("Name")),n.notes=this.getValueOrDefault(e.get("Text")),this.cleanupCipher(n),t.ciphers.push(n)})),u.concat(p).forEach((e=>{const n=this.initLoginCipher(),i=e.has("Website name")?"Website name":"Application";n.name=this.getValueOrDefault(e.get(i),""),this.isNullOrWhitespace(e.get("Login name"))||(this.isNullOrWhitespace(n.name)||(n.name+=": "),n.name+=e.get("Login name")),n.notes=this.getValueOrDefault(e.get("Comment")),e.has("Website URL")&&(n.login.uris=this.makeUriArray(e.get("Website URL"))),n.login.username=this.getValueOrDefault(e.get("Login")),n.login.password=this.getValueOrDefault(e.get("Password")),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}parseDataCategory(e){if(this.isNullOrWhitespace(e)||-1===e.indexOf(l))return[];const t=[];return e.split(l).forEach((e=>{if(-1===e.indexOf("\n"))return;const n=new Map;let i,r;e.split("\n").forEach((e=>{if(null!=i)return void(i+="\n"+e);const t=e.indexOf(":");let o,a;-1!==t&&(o=e.substring(0,t),e.length>t+1&&(a=e.substring(t+2)),null!=o&&n.set(o,a),"Comment"!==o&&"Text"!==o||(i=a,r=o))})),null!=i&&null!=r&&n.set(r,i),0!==n.size&&t.push(n)})),t}}t.KasperskyTxtImporter=c},86419:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeePass2XmlImporter=void 0;const i=n(67577),r=n(2859),o=n(36914),a=n(5957);class s extends a.BaseImporter{constructor(){super(...arguments),this.result=new r.ImportResult}parse(e){const t=this.parseXml(e);if(null==t)return this.result.success=!1,Promise.resolve(this.result);const n=t.querySelector("KeePassFile > Root > Group");return null==n?(this.result.errorMessage="Missing `KeePassFile > Root > Group` node.",this.result.success=!1,Promise.resolve(this.result)):(this.traverse(n,!0,""),this.organization&&this.moveFoldersToCollections(this.result),this.result.success=!0,Promise.resolve(this.result))}traverse(e,t,n){const r=this.result.folders.length;let a=n;if(!t){""!==a&&(a+="/");const t=this.querySelectorDirectChild(e,"Name");a+=null==t?"-":t.textContent;const n=new o.FolderView;n.name=a,this.result.folders.push(n)}this.querySelectorAllDirectChild(e,"Entry").forEach((e=>{const n=this.result.ciphers.length,o=this.initLoginCipher();this.querySelectorAllDirectChild(e,"String").forEach((e=>{const t=this.querySelectorDirectChild(e,"Value"),n=null!=t?t.textContent:null;if(this.isNullOrWhitespace(n))return;const r=this.querySelectorDirectChild(e,"Key"),a=null!=r?r.textContent:null;if("URL"===a)o.login.uris=this.makeUriArray(n);else if("UserName"===a)o.login.username=n;else if("Password"===a)o.login.password=n;else if("otp"===a)o.login.totp=n.replace("key=","");else if("Title"===a)o.name=n;else if("Notes"===a)o.notes+=n+"\n";else{let e=i.FieldType.Text;const r=t.attributes;r.length>0&&null!=r.ProtectInMemory&&"True"===r.ProtectInMemory.value&&(e=i.FieldType.Hidden),this.processKvp(o,a,n,e)}})),this.cleanupCipher(o),this.result.ciphers.push(o),t||this.result.folderRelationships.push([n,r])})),this.querySelectorAllDirectChild(e,"Group").forEach((e=>{this.traverse(e,!1,a)}))}}t.KeePass2XmlImporter=s},68781:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeePassXCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(e.Title))return;e.Group=!this.isNullOrWhitespace(e.Group)&&e.Group.startsWith("Root/")?e.Group.replace("Root/",""):e.Group;const n=this.isNullOrWhitespace(e.Group)?null:e.Group;this.processFolder(t,n);const i=this.initLoginCipher();i.notes=this.getValueOrDefault(e.Notes),i.name=this.getValueOrDefault(e.Title,"--"),i.login.username=this.getValueOrDefault(e.Username),i.login.password=this.getValueOrDefault(e.Password),i.login.uris=this.makeUriArray(e.URL),this.cleanupCipher(i),t.ciphers.push(i)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.KeePassXCsvImporter=o},64521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeeperCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<6)return;this.processFolder(t,e[0]);const n=this.initLoginCipher();if(n.notes=this.getValueOrDefault(e[5])+"\n",n.name=this.getValueOrDefault(e[1],"--"),n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[4]),e.length>7)for(let t=7;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LastPassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(97144),l=n(36914),c=n(48830),d=n(28331),p=n(99364),u=n(5957);class m extends u.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=t.ciphers.length;let r=t.folders.length,o=e.grouping;null!=o&&(o=o.replace(/\\/g,"/").replace(/[\x00-\x1F\x7F-\x9F]/g,""));const a="(none)"!==this.getValueOrDefault(o,"(none)");let s=a;if(a)for(let i=0;i-1){const n=e.ccexp.split("-");n.length>1&&(t.expYear=n[0],t.expMonth=n[1],2===t.expMonth.length&&"0"===t.expMonth[0]&&(t.expMonth=t.expMonth[1]))}return t}parseIdentity(e){const t=new c.IdentityView;return t.title=this.getValueOrDefault(e.title),t.firstName=this.getValueOrDefault(e.firstname),t.middleName=this.getValueOrDefault(e.middlename),t.lastName=this.getValueOrDefault(e.lastname),t.username=this.getValueOrDefault(e.username),t.company=this.getValueOrDefault(e.company),t.ssn=this.getValueOrDefault(e.ssn),t.address1=this.getValueOrDefault(e.address1),t.address2=this.getValueOrDefault(e.address2),t.address3=this.getValueOrDefault(e.address3),t.city=this.getValueOrDefault(e.city),t.state=this.getValueOrDefault(e.state),t.postalCode=this.getValueOrDefault(e.zip),t.country=this.getValueOrDefault(e.country),t.email=this.getValueOrDefault(e.email),t.phone=this.getValueOrDefault(e.phone),this.isNullOrWhitespace(t.title)||(t.title=t.title.charAt(0).toUpperCase()+t.title.slice(1)),t}parseSecureNote(e,t){const n=this.splitNewLine(e.extra);let o=!1;if(n.length){const e=n[0].split(":");if(e.length>1&&"NoteType"===e[0]&&("Credit Card"===e[1]||"Address"===e[1])){if("Credit Card"===e[1]){const e=this.parseSecureNoteMapping(t,n,{Number:"number","Name on Card":"cardholderName","Security Code":"code","Expiration Date":"expMonth"});if(this.isNullOrWhitespace(e.expMonth)||","===e.expMonth)e.expMonth=void 0;else{const[t,n]=e.expMonth.split(",");if(this.isNullOrWhitespace(t))e.expMonth=void 0;else{const n=new Date(Date.parse(t.trim()+" 1, 2012")).getMonth()+1;isNaN(n)?e.expMonth=void 0:e.expMonth=n.toString()}this.isNullOrWhitespace(n)||(e.expYear=n)}t.type=i.CipherType.Card,t.card=e}else if("Address"===e[1]){const e=this.parseSecureNoteMapping(t,n,{Title:"title","First Name":"firstName","Last Name":"lastName","Middle Name":"middleName",Company:"company","Address 1":"address1","Address 2":"address2","Address 3":"address3","City / Town":"city",State:"state","Zip / Postal Code":"postalCode",Country:"country","Email Address":"email",Username:"username"});t.type=i.CipherType.Identity,t.identity=e}o=!0}}o||(t.secureNote=new p.SecureNoteView,t.secureNote.type=r.SecureNoteType.Generic,t.notes=this.getValueOrDefault(e.extra))}parseSecureNoteMapping(e,t,n){const i={};let r=!1;return t.forEach((t=>{let o=null,a=null;if(!r){if(this.isNullOrWhitespace(t))return;const e=t.indexOf(":");if(-1===e?o=t:(o=t.substring(0,e),t.length>e&&(a=t.substring(e+1))),this.isNullOrWhitespace(o)||this.isNullOrWhitespace(a)||"NoteType"===o)return}r?e.notes+="\n"+t:"Notes"===o?(this.isNullOrWhitespace(e.notes)?e.notes=a:e.notes+="\n"+a,r=!0):n.hasOwnProperty(o)?i[n[o]]=a:this.processKvp(e,o,a)})),i}}t.LastPassCsvImporter=m},78103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LogMeOnceCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<4)return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[1]),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.LogMeOnceCsvImporter=o},52580:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MeldiumCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.DisplayName,"--"),n.notes=this.getValueOrDefault(e.Notes),n.login.username=this.getValueOrDefault(e.UserName),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e.Url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.MeldiumCsvImporter=o},39510:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MSecureCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(99364),s=n(5957);class l extends s.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<3)return;const n="Unassigned"!==this.getValueOrDefault(e[0],"Unassigned")?e[0]:null;this.processFolder(t,n);const o=this.initLoginCipher();if(o.name=this.getValueOrDefault(e[2],"--"),"Web Logins"===e[1]||"Login"===e[1])o.login.uris=this.makeUriArray(e[4]),o.login.username=this.getValueOrDefault(e[5]),o.login.password=this.getValueOrDefault(e[6]),o.notes=this.isNullOrWhitespace(e[3])?null:e[3].split("\\n").join("\n");else if(e.length>3){o.type=i.CipherType.SecureNote,o.secureNote=new a.SecureNoteView,o.secureNote.type=r.SecureNoteType.Generic;for(let t=3;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MykiCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(48830),l=n(99364),c=n(5957),d=["nickname","additionalInfo"],p=new Set(d.concat(["url","username","password","twofaSecret"])),u=new Set(d.concat(["cardNumber","cardName","exp_month","exp_year","cvv"])),m=new Set(d.concat(["title","firstName","middleName","lastName","email","firstAddressLine","secondAddressLine","city","country","zipCode"])),h=new Set(d.concat(["idName","idNumber","idCountry"])),v=new Set(d.concat(["authToken"])),f=new Set(d.concat(["content"]));class g extends c.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.nickname,"--"),n.notes=this.getValueOrDefault(e.additionalInfo),void 0!==e.url)n.login.uris=this.makeUriArray(e.url),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.totp=this.getValueOrDefault(e.twofaSecret),this.importUnmappedFields(n,e,p);else if(void 0!==e.authToken)n.login.totp=this.getValueOrDefault(e.authToken),this.importUnmappedFields(n,e,v);else if(void 0!==e.cardNumber)n.card=new a.CardView,n.type=i.CipherType.Card,n.card.cardholderName=this.getValueOrDefault(e.cardName),n.card.number=this.getValueOrDefault(e.cardNumber),n.card.brand=this.getCardBrand(n.card.number),n.card.expMonth=this.getValueOrDefault(e.exp_month),n.card.expYear=this.getValueOrDefault(e.exp_year),n.card.code=this.getValueOrDefault(e.cvv),this.importUnmappedFields(n,e,u);else if(void 0!==e.firstName)n.identity=new s.IdentityView,n.type=i.CipherType.Identity,n.identity.title=this.getValueOrDefault(e.title),n.identity.firstName=this.getValueOrDefault(e.firstName),n.identity.middleName=this.getValueOrDefault(e.middleName),n.identity.lastName=this.getValueOrDefault(e.lastName),n.identity.phone=this.getValueOrDefault(e.number),n.identity.email=this.getValueOrDefault(e.email),n.identity.address1=this.getValueOrDefault(e.firstAddressLine),n.identity.address2=this.getValueOrDefault(e.secondAddressLine),n.identity.city=this.getValueOrDefault(e.city),n.identity.country=this.getValueOrDefault(e.country),n.identity.postalCode=this.getValueOrDefault(e.zipCode),this.importUnmappedFields(n,e,m);else if(void 0!==e.idType){switch(n.identity=new s.IdentityView,n.type=i.CipherType.Identity,this.processFullName(n,e.idName),n.identity.country=this.getValueOrDefault(e.idCountry),e.idType){case"Passport":n.identity.passportNumber=e.idNumber;break;case"Social Security":n.identity.ssn=e.idNumber;break;default:n.identity.licenseNumber=e.idNumber}this.importUnmappedFields(n,e,h)}else{if(void 0===e.content)return;n.secureNote=new l.SecureNoteView,n.type=i.CipherType.SecureNote,n.secureNote.type=r.SecureNoteType.Generic,n.notes=this.getValueOrDefault(e.content),this.importUnmappedFields(n,e,f)}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}importUnmappedFields(e,t,n){Object.keys(t).filter((e=>!n.has(e))).forEach((n=>{const i=t;this.processKvp(e,n,i[n])}))}}t.MykiCsvImporter=g},82530:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NordPassCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(97144),s=n(28331),l=n(5957);class c extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.evaluateType(e);if(void 0===n)return;this.organization||this.processFolder(t,e.folder);const o=new a.CipherView;switch(o.name=this.getValueOrDefault(e.name,"--"),o.notes=this.getValueOrDefault(e.note),n){case i.CipherType.Login:o.type=i.CipherType.Login,o.login=new s.LoginView,o.login.username=this.getValueOrDefault(e.username),o.login.password=this.getValueOrDefault(e.password),o.login.uris=this.makeUriArray(e.url);break;case i.CipherType.Card:o.type=i.CipherType.Card,o.card.cardholderName=this.getValueOrDefault(e.cardholdername),o.card.number=this.getValueOrDefault(e.cardnumber),o.card.code=this.getValueOrDefault(e.cvc),o.card.brand=this.getCardBrand(o.card.number),this.setCardExpiration(o,e.expirydate);break;case i.CipherType.Identity:o.type=i.CipherType.Identity,this.processFullName(o,this.getValueOrDefault(e.full_name)),o.identity.address1=this.getValueOrDefault(e.address1),o.identity.address2=this.getValueOrDefault(e.address2),o.identity.city=this.getValueOrDefault(e.city),o.identity.state=this.getValueOrDefault(e.state),o.identity.postalCode=this.getValueOrDefault(e.zipcode),o.identity.country=this.getValueOrDefault(e.country),null!=o.identity.country&&(o.identity.country=o.identity.country.toUpperCase()),o.identity.email=this.getValueOrDefault(e.email),o.identity.phone=this.getValueOrDefault(e.phone_number);break;case i.CipherType.SecureNote:o.type=i.CipherType.SecureNote,o.secureNote.type=r.SecureNoteType.Generic}this.cleanupCipher(o),t.ciphers.push(o)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}evaluateType(e){return this.isNullOrWhitespace(e.username)?this.isNullOrWhitespace(e.cardnumber)?this.isNullOrWhitespace(e.full_name)?this.isNullOrWhitespace(e.note)?void 0:i.CipherType.SecureNote:i.CipherType.Identity:i.CipherType.Card:i.CipherType.Login}}t.NordPassCsvImporter=c},66402:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherImportContext=void 0;t.CipherImportContext=class{constructor(e,t,n){this.importRecord=e,this.property=t,this.cipher=n,this.lowerProperty=t.toLowerCase()}}},80414:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePassword1PifImporter=void 0;const i=n(32773),r=n(67577),o=n(76716),a=n(2859),s=n(91766),l=n(48830),c=n(40170),d=n(99364),p=n(5957);class u extends p.BaseImporter{constructor(){super(...arguments),this.result=new a.ImportResult}parse(e){return e.split(this.newLineRegex).forEach((e=>{if(this.isNullOrWhitespace(e)||"{"!==e[0])return;const t=JSON.parse(e);if(!0===t.trashed)return;const n=this.initLoginCipher();this.isNullOrWhitespace(t.hmac)?this.processStandardItem(t,n):this.processWinOpVaultItem(t,n),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),this.result.ciphers.push(n)})),this.result.success=!0,Promise.resolve(this.result)}processWinOpVaultItem(e,t){if(null!=e.overview&&(t.name=this.getValueOrDefault(e.overview.title),null!=e.overview.URLs)){const n=[];e.overview.URLs.forEach((e=>{this.isNullOrWhitespace(e.u)||n.push(e.u)})),t.login.uris=this.makeUriArray(n)}null!=e.details&&(null!=e.details.passwordHistory&&this.parsePasswordHistory(e.details.passwordHistory,t),this.isNullOrWhitespace(e.details.ccnum)&&this.isNullOrWhitespace(e.details.cvv)?this.isNullOrWhitespace(e.details.firstname)&&this.isNullOrWhitespace(e.details.address1)||(t.type=i.CipherType.Identity,t.identity=new l.IdentityView):(t.type=i.CipherType.Card,t.card=new s.CardView),t.type!==i.CipherType.Login||this.isNullOrWhitespace(e.details.password)||(t.login.password=e.details.password),this.isNullOrWhitespace(e.details.notesPlain)||(t.notes=e.details.notesPlain.split(this.newLineRegex).join("\n")+"\n"),null!=e.details.fields&&this.parseFields(e.details.fields,t,"designation","value","name"),null!=e.details.sections&&e.details.sections.forEach((e=>{null!=e.fields&&this.parseFields(e.fields,t,"n","v","t")})))}processStandardItem(e,t){if(t.favorite=!(!e.openContents||!e.openContents.faveIndex),t.name=this.getValueOrDefault(e.title),"securenotes.SecureNote"===e.typeName?(t.type=i.CipherType.SecureNote,t.secureNote=new d.SecureNoteView,t.secureNote.type=o.SecureNoteType.Generic):"wallet.financial.CreditCard"===e.typeName?(t.type=i.CipherType.Card,t.card=new s.CardView):"identities.Identity"===e.typeName?(t.type=i.CipherType.Identity,t.identity=new l.IdentityView):t.login.uris=this.makeUriArray(e.location),null!=e.secureContents){if(null!=e.secureContents.passwordHistory&&this.parsePasswordHistory(e.secureContents.passwordHistory,t),this.isNullOrWhitespace(e.secureContents.notesPlain)||(t.notes=e.secureContents.notesPlain.split(this.newLineRegex).join("\n")+"\n"),t.type===i.CipherType.Login&&(this.isNullOrWhitespace(e.secureContents.password)||(t.login.password=e.secureContents.password),null!=e.secureContents.URLs)){const n=[];e.secureContents.URLs.forEach((e=>{this.isNullOrWhitespace(e.url)||n.push(e.url)})),n.length>0&&(t.login.uris=this.makeUriArray(n))}null!=e.secureContents.fields&&this.parseFields(e.secureContents.fields,t,"designation","value","name"),null!=e.secureContents.sections&&e.secureContents.sections.forEach((e=>{null!=e.fields&&this.parseFields(e.fields,t,"n","v","t")}))}}parsePasswordHistory(e,t){const n=e.length>5?5:e.length;t.passwordHistory=e.filter((e=>!this.isNullOrWhitespace(e.value)&&null!=e.time)).sort(((e,t)=>t.time-e.time)).slice(0,n).map((e=>{const t=new c.PasswordHistoryView;return t.password=e.value,t.lastUsedDate=new Date((""+e.time).length>=13?e.time:1e3*e.time),t}))}parseFields(e,t,n,o,a){e.forEach((e=>{if(null==e[o]||""===e[o].toString().trim())return;const s="date"===e.k?new Date(1e3*e[o]).toUTCString():e[o].toString(),l=null!=e[n]?e[n].toString():null;if(t.type===i.CipherType.Login){if(this.isNullOrWhitespace(t.login.username)&&"username"===l)return void(t.login.username=s);if(this.isNullOrWhitespace(t.login.password)&&"password"===l)return void(t.login.password=s);if(this.isNullOrWhitespace(t.login.totp)&&null!=l&&l.startsWith("TOTP_"))return void(t.login.totp=s)}else if(t.type===i.CipherType.Card){if(this.isNullOrWhitespace(t.card.number)&&"ccnum"===l)return t.card.number=s,void(t.card.brand=this.getCardBrand(s));if(this.isNullOrWhitespace(t.card.code)&&"cvv"===l)return void(t.card.code=s);if(this.isNullOrWhitespace(t.card.cardholderName)&&"cardholder"===l)return void(t.card.cardholderName=s);if(this.isNullOrWhitespace(t.card.expiration)&&"expiry"===l&&6===s.length)return t.card.expMonth=s.substr(4,2),"0"===t.card.expMonth[0]&&(t.card.expMonth=t.card.expMonth.substr(1,1)),void(t.card.expYear=s.substr(0,4));if("type"===l)return}else if(t.type===i.CipherType.Identity){const n=t.identity;if(this.isNullOrWhitespace(n.firstName)&&"firstname"===l)return void(n.firstName=s);if(this.isNullOrWhitespace(n.lastName)&&"lastname"===l)return void(n.lastName=s);if(this.isNullOrWhitespace(n.middleName)&&"initial"===l)return void(n.middleName=s);if(this.isNullOrWhitespace(n.phone)&&"defphone"===l)return void(n.phone=s);if(this.isNullOrWhitespace(n.company)&&"company"===l)return void(n.company=s);if(this.isNullOrWhitespace(n.email)&&"email"===l)return void(n.email=s);if(this.isNullOrWhitespace(n.username)&&"username"===l)return void(n.username=s);if("address"===l){const{street:t,city:i,country:r,zip:a}=e[o];return n.address1=this.getValueOrDefault(t),n.city=this.getValueOrDefault(i),this.isNullOrWhitespace(r)||(n.country=r.toUpperCase()),void(n.postalCode=this.getValueOrDefault(a))}}const c=this.isNullOrWhitespace(e[a])?"no_name":e[a];if("password"===c&&null!=t.passwordHistory&&t.passwordHistory.some((e=>e.password===s)))return;const d="concealed"===e.k?r.FieldType.Hidden:r.FieldType.Text;this.processKvp(t,c,s,d)}))}}t.OnePassword1PifImporter=u},42584:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePassword1PuxImporter=void 0;const i=n(34453),r=n(32773),o=n(67577),a=n(76716),s=n(2859),l=n(91766),c=n(48830),d=n(28331),p=n(40170),u=n(99364),m=n(5957),h=n(53776);class v extends m.BaseImporter{constructor(){super(...arguments),this.result=new s.ImportResult}parse(e){return JSON.parse(e).accounts[0].vaults.forEach((e=>{e.items.forEach((e=>{if(!0===e.trashed)return;const t=this.initLoginCipher(),n=e.categoryUuid;switch(n){case h.CategoryEnum.Login:case h.CategoryEnum.Database:case h.CategoryEnum.Password:case h.CategoryEnum.WirelessRouter:case h.CategoryEnum.Server:case h.CategoryEnum.API_Credential:t.type=r.CipherType.Login,t.login=new d.LoginView;break;case h.CategoryEnum.CreditCard:case h.CategoryEnum.BankAccount:t.type=r.CipherType.Card,t.card=new l.CardView;break;case h.CategoryEnum.SecureNote:case h.CategoryEnum.SoftwareLicense:case h.CategoryEnum.EmailAccount:case h.CategoryEnum.MedicalRecord:t.type=r.CipherType.SecureNote,t.secureNote=new u.SecureNoteView,t.secureNote.type=a.SecureNoteType.Generic;break;case h.CategoryEnum.Identity:case h.CategoryEnum.DriversLicense:case h.CategoryEnum.OutdoorLicense:case h.CategoryEnum.Membership:case h.CategoryEnum.Passport:case h.CategoryEnum.RewardsProgram:case h.CategoryEnum.SocialSecurityNumber:t.type=r.CipherType.Identity,t.identity=new c.IdentityView}t.favorite=1===e.favIndex,this.processOverview(e.overview,t),this.processLoginFields(e,t),this.processDetails(n,e.details,t),this.parsePasswordHistory(e.details.passwordHistory,t),this.processSections(n,e.details.sections,t),this.isNullOrWhitespace(e.details.notesPlain)||(t.notes=e.details.notesPlain.split(this.newLineRegex).join("\n")+"\n"),this.convertToNoteIfNeeded(t),this.cleanupCipher(t),this.result.ciphers.push(t)}))})),this.organization&&this.moveFoldersToCollections(this.result),this.result.success=!0,Promise.resolve(this.result)}processOverview(e,t){if(null!=e){if(t.name=this.getValueOrDefault(e.title),null!=e.urls){const n=[];e.urls.forEach((e=>{this.isNullOrWhitespace(e.url)||n.push(e.url)})),t.login.uris=this.makeUriArray(n)}if(null!=e.tags&&e.tags.length>0){const t=this.capitalize(e.tags[0]);this.processFolder(this.result,t)}}}capitalize(e){return e.trim().replace(/\w\S*/g,(e=>e.replace(/^\w/,(e=>e.toUpperCase()))))}processLoginFields(e,t){null!=e.details&&null!=e.details.loginFields&&0!==e.details.loginFields.length&&e.details.loginFields.forEach((e=>{if("username"===e.designation&&""!==e.value)return t.type=r.CipherType.Login,void(t.login.username=e.value);if("password"===e.designation&&""!==e.value)return t.type=r.CipherType.Login,void(t.login.password=e.value);let n=e.value,i=o.FieldType.Text;switch(e.fieldType){case h.LoginFieldTypeEnum.Password:i=o.FieldType.Hidden;break;case h.LoginFieldTypeEnum.CheckBox:n=""!==e.value?"true":"false",i=o.FieldType.Boolean}this.processKvp(t,e.name,n,i)}))}processDetails(e,t,n){e===h.CategoryEnum.Password&&null!=t&&(n.login.password=t.password)}processSections(e,t,n){null!=t&&0!==t.length&&t.forEach((t=>{null!=t.fields&&this.parseSectionFields(e,t.fields,n)}))}parseSectionFields(e,t,n){t.forEach((t=>{const a=Object.keys(t.value)[0],s=t;if(null==s.value||null==s.value[a]||""===s.value[a])return;const l=this.getFieldName(t.id,t.title),c=this.extractValue(t.value,a);if(n.type===r.CipherType.Login){if(this.fillLogin(t,c,n))return;switch(e){case h.CategoryEnum.Login:case h.CategoryEnum.Database:case h.CategoryEnum.EmailAccount:case h.CategoryEnum.WirelessRouter:break;case h.CategoryEnum.Server:if(this.isNullOrWhitespace(n.login.uri)&&"url"===t.id)return void(n.login.uris=this.makeUriArray(c));break;case h.CategoryEnum.API_Credential:if(this.fillApiCredentials(t,c,n))return}}else if(n.type===r.CipherType.Card){if(this.fillCreditCard(t,c,n))return;if(e===h.CategoryEnum.BankAccount&&this.fillBankAccount(t,c,n))return}else if(n.type===r.CipherType.Identity){if(this.fillIdentity(t,c,n,a))return;if("address"===a){const{street:e,city:i,country:r,zip:o,state:a}=t.value.address;return n.identity.address1=this.getValueOrDefault(e),n.identity.city=this.getValueOrDefault(i),this.isNullOrWhitespace(r)||(n.identity.country=r.toUpperCase()),n.identity.postalCode=this.getValueOrDefault(o),void(n.identity.state=this.getValueOrDefault(a))}switch(e){case h.CategoryEnum.Identity:break;case h.CategoryEnum.DriversLicense:if(this.fillDriversLicense(t,c,n))return;break;case h.CategoryEnum.OutdoorLicense:if(this.fillOutdoorLicense(t,c,n))return;break;case h.CategoryEnum.Membership:if(this.fillMembership(t,c,n))return;break;case h.CategoryEnum.Passport:if(this.fillPassport(t,c,n))return;break;case h.CategoryEnum.RewardsProgram:if(this.fillRewardsProgram(t,c,n))return;break;case h.CategoryEnum.SocialSecurityNumber:if(this.fillSSN(t,c,n))return}}if("email"===a){const{email_address:e,provider:i}=t.value.email;return this.processKvp(n,l,e,o.FieldType.Text),void this.processKvp(n,"provider",i,o.FieldType.Text)}if("password"===t.title&&null!=n.passwordHistory&&n.passwordHistory.some((e=>e.password===c)))return;t.guarded&&n.reprompt===i.CipherRepromptType.None&&(n.reprompt=i.CipherRepromptType.Password);const d="concealed"===a?o.FieldType.Hidden:o.FieldType.Text;this.processKvp(n,l,c,d)}))}getFieldName(e,t){return this.isNullOrWhitespace(t)?e:e.length>25&&RegExp(/[0-9]{2}[A-Z]{2}/,"i").test(e)?t:e}extractValue(e,t){return"date"===t?new Date(1e3*e.date).toUTCString():"monthYear"===t?e.monthYear.toString():e[t]}fillLogin(e,t,n){const i=this.getFieldName(e.id,e.title);return this.isNullOrWhitespace(n.login.username)&&"username"===i?(n.login.username=t,!0):this.isNullOrWhitespace(n.login.password)&&"password"===i?(n.login.password=t,!0):!(!this.isNullOrWhitespace(n.login.totp)||null==e.id||!e.id.startsWith("TOTP_"))&&(n.login.totp=t,!0)}fillApiCredentials(e,t,n){const i=this.getFieldName(e.id,e.title);return this.isNullOrWhitespace(n.login.password)&&"credential"===i?(n.login.password=t,!0):!(!this.isNullOrWhitespace(n.login.uri)||"hostname"!==i)&&(n.login.uris=this.makeUriArray(t),!0)}fillCreditCard(e,t,n){if(this.isNullOrWhitespace(n.card.number)&&"ccnum"===e.id)return n.card.number=t,n.card.brand=this.getCardBrand(t),!0;if(this.isNullOrWhitespace(n.card.code)&&"cvv"===e.id)return n.card.code=t,!0;if(this.isNullOrWhitespace(n.card.cardholderName)&&"cardholder"===e.id)return n.card.cardholderName=t,!0;if(this.isNullOrWhitespace(n.card.expiration)&&"expiry"===e.id){const e=t.toString().trim();return n.card.expMonth=e.substring(4,6),"0"===n.card.expMonth[0]&&(n.card.expMonth=n.card.expMonth.substring(1,2)),n.card.expYear=e.substring(0,4),!0}return"type"===e.id}fillBankAccount(e,t,n){return!(!this.isNullOrWhitespace(n.card.cardholderName)||"owner"!==e.id)&&(n.card.cardholderName=t,!0)}fillIdentity(e,t,n,i){if(this.isNullOrWhitespace(n.identity.firstName)&&"firstname"===e.id)return n.identity.firstName=t,!0;if(this.isNullOrWhitespace(n.identity.lastName)&&"lastname"===e.id)return n.identity.lastName=t,!0;if(this.isNullOrWhitespace(n.identity.middleName)&&"initial"===e.id)return n.identity.middleName=t,!0;if(this.isNullOrWhitespace(n.identity.phone)&&"defphone"===e.id)return n.identity.phone=t,!0;if(this.isNullOrWhitespace(n.identity.company)&&"company"===e.id)return n.identity.company=t,!0;if(this.isNullOrWhitespace(n.identity.email)){if("email"===i){const{email_address:t,provider:i}=e.value.email;return n.identity.email=this.getValueOrDefault(t),this.processKvp(n,"provider",i,o.FieldType.Text),!0}if("email"===e.id)return n.identity.email=t,!0}return!(!this.isNullOrWhitespace(n.identity.username)||"username"!==e.id)&&(n.identity.username=t,!0)}fillDriversLicense(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"fullname"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.address1)&&"address"===e.id?(n.identity.address1=t,!0):this.isNullOrWhitespace(n.identity.country)&&"country"===e.id?(n.identity.country=t,!0):this.isNullOrWhitespace(n.identity.state)&&"state"===e.id?(n.identity.state=t,!0):!(!this.isNullOrWhitespace(n.identity.licenseNumber)||"number"!==e.id)&&(n.identity.licenseNumber=t,!0)}fillOutdoorLicense(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"name"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.country)&&"country"===e.id?(n.identity.country=t,!0):!(!this.isNullOrWhitespace(n.identity.state)||"state"!==e.id)&&(n.identity.state=t,!0)}fillMembership(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"member_name"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.company)&&"org_name"===e.id?(n.identity.company=t,!0):!(!this.isNullOrWhitespace(n.identity.phone)||"phone"!==e.id)&&(n.identity.phone=t,!0)}fillPassport(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"fullname"===e.id?(this.processFullName(n,t),!0):this.isNullOrWhitespace(n.identity.country)&&"issuing_country"===e.id?(n.identity.country=t,!0):!(!this.isNullOrWhitespace(n.identity.passportNumber)||"number"!==e.id)&&(n.identity.passportNumber=t,!0)}fillRewardsProgram(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"member_name"===e.id?(this.processFullName(n,t),!0):!(!this.isNullOrWhitespace(n.identity.company)||"company_name"!==e.id)&&(n.identity.company=t,!0)}fillSSN(e,t,n){return this.isNullOrWhitespace(n.identity.firstName)&&"name"===e.id?(this.processFullName(n,t),!0):!(!this.isNullOrWhitespace(n.identity.ssn)||"number"!==e.id)&&(n.identity.ssn=t,!0)}parsePasswordHistory(e,t){if(null==e||0===e.length)return;const n=e.length>5?5:e.length;t.passwordHistory=e.filter((e=>!this.isNullOrWhitespace(e.value)&&null!=e.time)).sort(((e,t)=>t.time-e.time)).slice(0,n).map((e=>{const t=new p.PasswordHistoryView;return t.password=e.value,t.lastUsedDate=new Date((""+e.time).length>=13?e.time:1e3*e.time),t}))}}t.OnePassword1PuxImporter=v},77674:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordCsvImporter=t.IgnoredProperties=void 0;const i=n(32773),r=n(67577),o=n(2859),a=n(5957),s=n(66402);t.IgnoredProperties=["ainfo","autosubmit","notesplain","ps","scope","tags","title","uuid","notes"];class l extends a.BaseImporter{constructor(){super(...arguments),this.loginPropertyParsers=[this.setLoginUsername,this.setLoginPassword,this.setLoginUris],this.creditCardPropertyParsers=[this.setCreditCardNumber,this.setCreditCardVerification,this.setCreditCardCardholderName,this.setCreditCardExpiry],this.identityPropertyParsers=[this.setIdentityFirstName,this.setIdentityInitial,this.setIdentityLastName,this.setIdentityUserName,this.setIdentityEmail,this.setIdentityPhone,this.setIdentityCompany]}parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0,{quoteChar:'"',escapeChar:"\\"});return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(this.getProp(e,"title")))return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(this.getProp(e,"title"),"--"),this.setNotes(e,n),this.setCipherType(e,n);let r=null;for(const t in e){if(!e.hasOwnProperty(t)||this.isNullOrWhitespace(e[t]))continue;const o=new s.CipherImportContext(e,t,n);n.type===i.CipherType.Login&&this.setKnownLoginValue(o)||(n.type===i.CipherType.Card&&this.setKnownCreditCardValue(o)||n.type===i.CipherType.Identity&&this.setKnownIdentityValue(o)||(r=this.setUnknownValue(o,r)))}n.type===i.CipherType.Login&&!this.isNullOrWhitespace(r)&&this.isNullOrWhitespace(n.login.username)&&-1===r.indexOf("://")&&(n.login.username=r),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}getProp(e,t){return Object.entries(e).reduce(((e,t)=>(e[t[0].toLowerCase()]=t[1],e)),{})[t.toLowerCase()]}getPropByRegexp(e,t){const n=Object.keys(e).reduce(((e,n)=>(n.match(t)&&e.push(n),e)),[]);return 0===n.length?null:e[n[0]]}getPropIncluding(e,t){const n=Object.keys(e).reduce(((e,n)=>(n.toLowerCase().includes(t.toLowerCase())&&e.push(n),e)),[]);return 0===n.length?null:e[n[0]]}setNotes(e,t){t.notes=this.getValueOrDefault(this.getProp(e,"notesPlain"),"")+"\n"+this.getValueOrDefault(this.getProp(e,"notes"),"")+"\n",t.notes.trim()}setKnownLoginValue(e){return this.loginPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setKnownCreditCardValue(e){return this.creditCardPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setKnownIdentityValue(e){return this.identityPropertyParsers.reduce(((t,n)=>(t||(t=n.bind(this)(e)),t)),!1)}setUnknownValue(e,n){if(-1===t.IgnoredProperties.indexOf(e.lowerProperty)&&!e.lowerProperty.startsWith("section:")&&!e.lowerProperty.startsWith("section ")){if(null==n&&"email"===e.lowerProperty)return e.importRecord[e.property];if("created date"===e.lowerProperty||"modified date"===e.lowerProperty){const t=new Date(1e3*parseInt(e.importRecord[e.property],10)).toUTCString();return this.processKvp(e.cipher,"1Password "+e.property,t),null}e.lowerProperty.includes("password")||e.lowerProperty.includes("key")||e.lowerProperty.includes("secret")?this.processKvp(e.cipher,e.property,e.importRecord[e.property],r.FieldType.Hidden):this.processKvp(e.cipher,e.property,e.importRecord[e.property])}return null}setIdentityFirstName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.firstName)||!e.lowerProperty.includes("first name"))&&(e.cipher.identity.firstName=e.importRecord[e.property],!0)}setIdentityInitial(e){return!(!this.isNullOrWhitespace(e.cipher.identity.middleName)||!e.lowerProperty.includes("initial"))&&(e.cipher.identity.middleName=e.importRecord[e.property],!0)}setIdentityLastName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.lastName)||!e.lowerProperty.includes("last name"))&&(e.cipher.identity.lastName=e.importRecord[e.property],!0)}setIdentityUserName(e){return!(!this.isNullOrWhitespace(e.cipher.identity.username)||!e.lowerProperty.includes("username"))&&(e.cipher.identity.username=e.importRecord[e.property],!0)}setIdentityCompany(e){return!(!this.isNullOrWhitespace(e.cipher.identity.company)||!e.lowerProperty.includes("company"))&&(e.cipher.identity.company=e.importRecord[e.property],!0)}setIdentityPhone(e){return!(!this.isNullOrWhitespace(e.cipher.identity.phone)||!e.lowerProperty.includes("default phone"))&&(e.cipher.identity.phone=e.importRecord[e.property],!0)}setIdentityEmail(e){return!(!this.isNullOrWhitespace(e.cipher.identity.email)||!e.lowerProperty.includes("email"))&&(e.cipher.identity.email=e.importRecord[e.property],!0)}setCreditCardNumber(e){return!(!this.isNullOrWhitespace(e.cipher.card.number)||!e.lowerProperty.includes("number"))&&(e.cipher.card.number=e.importRecord[e.property],e.cipher.card.brand=this.getCardBrand(e.cipher.card.number),!0)}setCreditCardVerification(e){return!(!this.isNullOrWhitespace(e.cipher.card.code)||!e.lowerProperty.includes("verification number"))&&(e.cipher.card.code=e.importRecord[e.property],!0)}setCreditCardCardholderName(e){return!(!this.isNullOrWhitespace(e.cipher.card.cardholderName)||!e.lowerProperty.includes("cardholder name"))&&(e.cipher.card.cardholderName=e.importRecord[e.property],!0)}setCreditCardExpiry(e){return!(!this.isNullOrWhitespace(e.cipher.card.expiration)||!e.lowerProperty.includes("expiry date")||7!==e.importRecord[e.property].length)&&(e.cipher.card.expMonth=e.importRecord[e.property].substr(0,2),"0"===e.cipher.card.expMonth[0]&&(e.cipher.card.expMonth=e.cipher.card.expMonth.substr(1,1)),e.cipher.card.expYear=e.importRecord[e.property].substr(3,4),!0)}setLoginPassword(e){return!(!this.isNullOrWhitespace(e.cipher.login.password)||"password"!==e.lowerProperty)&&(e.cipher.login.password=e.importRecord[e.property],!0)}setLoginUsername(e){return!(!this.isNullOrWhitespace(e.cipher.login.username)||"username"!==e.lowerProperty)&&(e.cipher.login.username=e.importRecord[e.property],!0)}setLoginUris(e){if((null==e.cipher.login.uris||0===e.cipher.login.uris.length)&&"urls"===e.lowerProperty){const t=e.importRecord[e.property].split(this.newLineRegex);return e.cipher.login.uris=this.makeUriArray(t),!0}return"url"===e.lowerProperty&&(null==e.cipher.login.uris&&(e.cipher.login.uris=[]),e.cipher.login.uris.concat(this.makeUriArray(e.importRecord[e.property])),!0)}}t.OnePasswordCsvImporter=l},55529:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordMacCsvImporter=void 0;const i=n(32773),r=n(91766),o=n(48830),a=n(77674);class s extends a.OnePasswordCsvImporter{setCipherType(e,t){switch(this.getValueOrDefault(this.getProp(e,"type"),"Login")){case"Credit Card":t.type=i.CipherType.Card,t.card=new r.CardView,a.IgnoredProperties.push("type");break;case"Identity":t.type=i.CipherType.Identity,t.identity=new o.IdentityView,a.IgnoredProperties.push("type");break;case"Login":case"Secure Note":a.IgnoredProperties.push("type")}}}t.OnePasswordMacCsvImporter=s},88755:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OnePasswordWinCsvImporter=void 0;const i=n(32773),r=n(91766),o=n(48830),a=n(28331),s=n(77674);class l extends s.OnePasswordCsvImporter{constructor(){super(),this.identityPropertyParsers.push(this.setIdentityAddress)}setCipherType(e,t){t.type=i.CipherType.Login,t.login=new a.LoginView,this.isNullOrWhitespace(this.getPropByRegexp(e,/\d+: number/i))||this.isNullOrWhitespace(this.getPropByRegexp(e,/\d+: expiry date/i))||(t.type=i.CipherType.Card,t.card=new r.CardView),this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: first name/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: initial/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/name \d+: last name/i))&&this.isNullOrWhitespace(this.getPropByRegexp(e,/internet \d+: email/i))||(t.type=i.CipherType.Identity,t.identity=new o.IdentityView)}setIdentityAddress(e){return!!e.lowerProperty.match(/address \d+: address/i)&&(this.processKvp(e.cipher,"address",e.importRecord[e.property]),!0)}setCreditCardExpiry(e){if(this.isNullOrWhitespace(e.cipher.card.expiration)&&e.lowerProperty.includes("expiry date")){const t=e.importRecord[e.property].split("/");return e.cipher.card.expMonth=t[0],"0"===e.cipher.card.expMonth[0]&&2===e.cipher.card.expMonth.length&&(e.cipher.card.expMonth=e.cipher.card.expMonth.substr(1,1)),e.cipher.card.expYear=t[2].length>4?t[2].substr(0,4):t[2],!0}return!1}}t.OnePasswordWinCsvImporter=l},53776:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginFieldTypeEnum=t.CategoryEnum=void 0,function(e){e.Login="001",e.CreditCard="002",e.SecureNote="003",e.Identity="004",e.Password="005",e.Document="006",e.SoftwareLicense="100",e.BankAccount="101",e.Database="102",e.DriversLicense="103",e.OutdoorLicense="104",e.Membership="105",e.Passport="106",e.RewardsProgram="107",e.SocialSecurityNumber="108",e.WirelessRouter="109",e.Server="110",e.EmailAccount="111",e.API_Credential="112",e.MedicalRecord="113"}(t.CategoryEnum||(t.CategoryEnum={})),function(e){e.TextOrHtml="T",e.EmailAddress="E",e.URL="U",e.Number="N",e.Password="P",e.TextArea="A",e.PhoneNumber="T",e.CheckBox="C"}(t.LoginFieldTypeEnum||(t.LoginFieldTypeEnum={}))},60784:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PadlockCsvImporter=void 0;const i=n(2859),r=n(86001),o=n(5957);class a extends o.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let o=null;return n.forEach((e=>{if(null==o)return void(o=e.map((e=>e)));if(e.length<2||e.length!==o.length)return;if(!this.isNullOrWhitespace(e[1]))if(this.organization){e[1].split(",").forEach((e=>{e=e.trim();let n=!0,i=t.collections.length;for(let r=0;r0?n[0].trim():null;this.processFolder(t,i)}const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--");for(let t=2;t-1?n.login.username=e[t]:this.passwordFieldNames.indexOf(i)>-1?n.login.password=e[t]:this.uriFieldNames.indexOf(i)>-1?n.login.uris=this.makeUriArray(e[t]):this.processKvp(n,o[t],e[t]))}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t)}}t.PadlockCsvImporter=a},477:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PassKeepCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{this.processFolder(t,this.getValue("category",e));const n=this.initLoginCipher();n.notes=this.getValue("description",e),n.name=this.getValueOrDefault(this.getValue("title",e),"--"),n.login.username=this.getValue("username",e),n.login.password=this.getValue("password",e),n.login.uris=this.makeUriArray(this.getValue("site",e)),this.processKvp(n,"Password 2",this.getValue("password2",e)),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}getValue(e,t){return this.getValueOrDefault(t[e],this.getValueOrDefault(t[" "+e]))}}t.PassKeepCsvImporter=o},91350:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PassmanJsonImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=JSON.parse(e);return null==n||0===n.length?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(null!=e.tags&&e.tags.length>0){const n=e.tags[0].text;this.processFolder(t,n)}const n=this.initLoginCipher();n.name=e.label,n.login.username=this.getValueOrDefault(e.username),this.isNullOrWhitespace(n.login.username)?n.login.username=this.getValueOrDefault(e.email):this.isNullOrWhitespace(e.email)||(n.notes="Email: "+e.email+"\n"),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),n.notes+=this.getValueOrDefault(e.description,""),null!=e.otp&&(n.login.totp=this.getValueOrDefault(e.otp.secret)),null!=e.custom_fields&&e.custom_fields.forEach((e=>{switch(e.field_type){case"text":case"password":this.processKvp(n,e.label,e.value)}})),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.PassmanJsonImporter=o},79506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasspackCsvImporter=void 0;const i=n(2859),r=n(86001),o=n(5957);class a extends o.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.isNullOrWhitespace(e.Tags)?null:JSON.parse(e.Tags),i=null!=n&&null!=n.tags&&n.tags.length>0?n.tags.map((e=>{try{const t=JSON.parse(e);return this.getValueOrDefault(t.tag)}catch(t){}return null})).filter((e=>!this.isNullOrWhitespace(e))):null;this.organization&&null!=i&&i.length>0?i.forEach((e=>{let n=!0,i=t.collections.length;for(let r=0;r0&&this.processFolder(t,i[0]);const o=this.initLoginCipher();o.notes=this.getValueOrDefault(e.Notes,""),o.notes+="\n\n"+this.getValueOrDefault(e["Shared Notes"],"")+"\n",o.name=this.getValueOrDefault(e["Entry Name"],"--"),o.login.username=this.getValueOrDefault(e["User ID"]),o.login.password=this.getValueOrDefault(e.Password),o.login.uris=this.makeUriArray(e.URL),null!=e.__parsed_extra&&e.__parsed_extra.length>0&&e.__parsed_extra.forEach((e=>{this.isNullOrWhitespace(e)||(o.notes+="\n"+e)}));const a=this.isNullOrWhitespace(e["Extra Fields"])?null:JSON.parse(e["Extra Fields"]),s=null!=a&&null!=a.extraFields&&a.extraFields.length>0?a.extraFields.map((e=>{try{return JSON.parse(e)}catch(t){}return null})):null;null!=s&&s.forEach((e=>{null!=e&&this.processKvp(o,e.name,e.data)})),this.cleanupCipher(o),t.ciphers.push(o)})),t.success=!0,Promise.resolve(t))}}t.PasspackCsvImporter=a},29990:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordAgentCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);if(null==n)return t.success=!1,Promise.resolve(t);let r=!0;return n.forEach((e=>{if(5!==e.length&&e.length<9)return;const n=10===e.length&&"0"===e[0],i=this.initLoginCipher();if(i.name=this.getValueOrDefault(e[n?1:0],"--"),i.login.username=this.getValueOrDefault(e[n?2:1]),i.login.password=this.getValueOrDefault(e[n?3:2]),5===e.length)r=!1,i.notes=this.getValueOrDefault(e[4]),i.login.uris=this.makeUriArray(e[3]);else{const r=this.getValueOrDefault(e[n?9:8],"(None)");let o="(None)"!==r?r.split("\\").join("/"):null;null!=o&&(o=r.split(" > ").join("/"),o=r.split(">").join("/")),this.processFolder(t,o),i.notes=this.getValueOrDefault(e[n?5:3]),i.login.uris=this.makeUriArray(e[4])}this.convertToNoteIfNeeded(i),this.cleanupCipher(i),t.ciphers.push(i)})),r&&this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordAgentCsvImporter=o},84972:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordBossJsonImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(36914),s=n(5957);class l extends s.BaseImporter{parse(e){const t=new r.ImportResult,n=JSON.parse(e);if(null==n||null==n.items)return t.success=!1,Promise.resolve(t);const s=new Map;n.folders.forEach((e=>{s.set(e.id,e.name)}));const l=new Map;return s.forEach(((e,n)=>{l.set(n,t.folders.length);const i=new a.FolderView;i.name=e,t.folders.push(i)})),n.items.forEach((e=>{const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.name,"--"),n.login.uris=this.makeUriArray(e.login_url),null!=e.folder&&l.has(e.folder)&&t.folderRelationships.push([t.ciphers.length,l.get(e.folder)]),null!=e.identifiers){this.isNullOrWhitespace(e.identifiers.notes)||(n.notes=e.identifiers.notes.split("\\r\\n").join("\n").split("\\n").join("\n")),"CreditCard"===e.type&&(n.card=new o.CardView,n.type=i.CipherType.Card);for(const t in e.identifiers){if(!e.identifiers.hasOwnProperty(t))continue;const o=e.identifiers[t],a=null!=o?o.toString():null;if(!this.isNullOrWhitespace(a)&&"notes"!==t&&"ignoreItemInSecurityScore"!==t)if("custom_fields"!==t){if(n.type===i.CipherType.Card){if("cardNumber"===t){n.card.number=a,n.card.brand=this.getCardBrand(a);continue}if("nameOnCard"===t){n.card.cardholderName=a;continue}if("security_code"===t){n.card.code=a;continue}if("expires"===t){try{const e=new Date(a);n.card.expYear=e.getFullYear().toString(),n.card.expMonth=(e.getMonth()+1).toString()}catch(r){}continue}if("cardType"===t)continue}else{if(("username"===t||"email"===t)&&this.isNullOrWhitespace(n.login.username)){n.login.username=a;continue}if("password"===t){n.login.password=a;continue}if("totp"===t){n.login.totp=a;continue}if((null==n.login.uris||0===n.login.uris.length)&&this.uriFieldNames.indexOf(t)>-1){n.login.uris=this.makeUriArray(a);continue}}this.processKvp(n,t,a)}else o.forEach((e=>{this.processKvp(n,e.name,e.value)}))}this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)}})),t.success=!0,Promise.resolve(t)}}t.PasswordBossJsonImporter=l},65588:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordDragonXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelectorAll("PasswordManager > record");return Array.from(r).forEach((e=>{const n=this.querySelectorDirectChild(e,"Category"),i=null==n||this.isNullOrWhitespace(n.textContent)||"Unfiled"===n.textContent?null:n.textContent;this.processFolder(t,i);const r=this.querySelectorDirectChild(e,"Account-Name"),o=this.querySelectorDirectChild(e,"User-Id"),a=this.querySelectorDirectChild(e,"Password"),s=this.querySelectorDirectChild(e,"URL"),l=this.querySelectorDirectChild(e,"Notes"),c=this.initLoginCipher();c.name=null!=r?this.getValueOrDefault(r.textContent,"--"):"--",c.notes=null!=l?this.getValueOrDefault(l.textContent):"",c.login.username=null!=o?this.getValueOrDefault(o.textContent):null,c.login.password=null!=a?this.getValueOrDefault(a.textContent):null,c.login.uris=null!=s?this.makeUriArray(s.textContent):null;const d=[];for(let t=1;t<=10;t++)d.push("Attribute-"+t);this.querySelectorAllDirectChild(e,d.join(",")).forEach((e=>{this.isNullOrWhitespace(e.textContent)||"null"===e.textContent||this.processKvp(c,e.tagName,e.textContent)})),this.cleanupCipher(c),t.ciphers.push(c)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordDragonXmlImporter=o},45970:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordSafeXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelector("passwordsafe");if(null==r)return t.errorMessage="Missing `passwordsafe` node.",t.success=!1,Promise.resolve(t);const o=r.getAttribute("delimiter"),a=n.querySelectorAll("passwordsafe > entry");return Array.from(a).forEach((e=>{const n=this.querySelectorDirectChild(e,"group"),i=null==n||this.isNullOrWhitespace(n.textContent)?null:n.textContent.split(".").join("/");this.processFolder(t,i);const r=this.querySelectorDirectChild(e,"title"),a=this.querySelectorDirectChild(e,"username"),s=this.querySelectorDirectChild(e,"email"),l=this.querySelectorDirectChild(e,"password"),c=this.querySelectorDirectChild(e,"url"),d=this.querySelectorDirectChild(e,"notes"),p=this.initLoginCipher();p.name=null!=r?this.getValueOrDefault(r.textContent,"--"):"--",p.notes=null!=d?this.getValueOrDefault(d.textContent,"").split(o).join("\n"):null,p.login.username=null!=a?this.getValueOrDefault(a.textContent):null,p.login.password=null!=l?this.getValueOrDefault(l.textContent):null,p.login.uris=null!=c?this.makeUriArray(c.textContent):null,this.isNullOrWhitespace(p.login.username)&&null!=s?p.login.username=this.getValueOrDefault(s.textContent):null==s||this.isNullOrWhitespace(s.textContent)||(p.notes=this.isNullOrWhitespace(p.notes)?"Email: "+s.textContent:p.notes+"\nEmail: "+s.textContent),this.cleanupCipher(p),t.ciphers.push(p)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.PasswordSafeXmlImporter=o},54706:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordWalletTxtImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<1)return;e.length>5&&this.processFolder(t,e[5]);const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),e.length>4&&(n.notes=this.getValueOrDefault(e[4],"").split("¬").join("\n")),e.length>2&&(n.login.username=this.getValueOrDefault(e[2])),e.length>3&&(n.login.password=this.getValueOrDefault(e[3])),e.length>1&&(n.login.uris=this.makeUriArray(e[1])),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}}t.PasswordWalletTxtImporter=o},43897:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RememBearCsvImporter=void 0;const i=n(32773),r=n(2859),o=n(91766),a=n(5957);class s extends a.BaseImporter{parse(e){const t=new r.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if("true"===e.trash)return;const n=this.initLoginCipher();if(n.name=this.getValueOrDefault(e.name),n.notes=this.getValueOrDefault(e.notes),"LoginItem"===e.type)n.login.uris=this.makeUriArray(e.website),n.login.password=this.getValueOrDefault(e.password),n.login.username=this.getValueOrDefault(e.username);else if("CreditCardItem"===e.type){n.type=i.CipherType.Card,n.card=new o.CardView,n.card.cardholderName=this.getValueOrDefault(e.cardholder),n.card.number=this.getValueOrDefault(e.number),n.card.brand=this.getCardBrand(n.card.number),n.card.code=this.getValueOrDefault(e.verification);try{const t=this.getValueOrDefault(e.expiryMonth);if(null!=t){const e=parseInt(t,null);null!=e&&e>=1&&e<=12&&(n.card.expMonth=e.toString())}}catch(r){}try{const t=this.getValueOrDefault(e.expiryYear);if(null!=t){const e=parseInt(t,null);null!=e&&(n.card.expYear=e.toString())}}catch(a){}const t=this.getValueOrDefault(e.pin);null!=t&&this.processKvp(n,"PIN",t);const s=this.getValueOrDefault(e.zipCode);null!=s&&this.processKvp(n,"Zip Code",s)}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.RememBearCsvImporter=s},91645:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RoboFormCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);if(null==n)return t.success=!1,Promise.resolve(t);let r=1;return n.forEach((e=>{const i=!this.isNullOrWhitespace(e.Folder)&&e.Folder.startsWith("/")?e.Folder.replace("/",""):e.Folder,o=this.isNullOrWhitespace(i)?null:i;this.processFolder(t,o);const a=this.initLoginCipher();if(a.notes=this.getValueOrDefault(e.Note),a.name=this.getValueOrDefault(e.Name,"--"),a.login.username=this.getValueOrDefault(e.Login),a.login.password=this.getValueOrDefault(e.Pwd),a.login.uris=this.makeUriArray(e.Url),!this.isNullOrWhitespace(e.Rf_fields)){let t=[e.Rf_fields];null!=e.__parsed_extra&&e.__parsed_extra.length>0&&(t=t.concat(e.__parsed_extra)),t.forEach((e=>{const t=e.split(":");if(t.length<3)return;const n="-no-name-"===t[0]?null:t[0],i=4===t.length&&"rck"===t[2]?t[1]:t[2];this.processKvp(a,n,i)}))}this.convertToNoteIfNeeded(a),this.cleanupCipher(a),r===n.length&&"--"===a.name&&this.isNullOrWhitespace(a.login.password)||(t.ciphers.push(a),r++)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}}t.RoboFormCsvImporter=o},72739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SafariCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{var n;const i=this.initLoginCipher();i.name=this.getValueOrDefault(e.Title,"--"),i.login.username=this.getValueOrDefault(e.Username),i.login.password=this.getValueOrDefault(e.Password),i.login.uris=this.makeUriArray(null!==(n=e.Url)&&void 0!==n?n:e.URL),i.login.totp=this.getValueOrDefault(e.OTPAuth),i.notes=this.getValueOrDefault(e.Notes),this.cleanupCipher(i),t.ciphers.push(i)})),t.success=!0,Promise.resolve(t))}}t.SafariCsvImporter=o},29406:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SafeInCloudXmlImporter=void 0;const i=n(32773),r=n(67577),o=n(76716),a=n(2859),s=n(36914),l=n(99364),c=n(5957);class d extends c.BaseImporter{parse(e){const t=new a.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);if(null==n.querySelector("database"))return t.errorMessage="Missing `database` node.",t.success=!1,Promise.resolve(t);const c=new Map;return Array.from(n.querySelectorAll("database > label")).forEach((e=>{const n=e.getAttribute("name"),i=e.getAttribute("id");if(!this.isNullOrWhitespace(n)&&!this.isNullOrWhitespace(i)){c.set(i,t.folders.length);const e=new s.FolderView;e.name=n,t.folders.push(e)}})),Array.from(n.querySelectorAll("database > card")).forEach((e=>{if("true"===e.getAttribute("template")||"true"===e.getAttribute("deleted"))return;const n=this.querySelectorDirectChild(e,"label_id");if(null!=n){const e=n.textContent;!this.isNullOrWhitespace(e)&&c.has(e)&&t.folderRelationships.push([t.ciphers.length,c.get(e)])}const a=this.initLoginCipher();a.name=this.getValueOrDefault(e.getAttribute("title"),"--"),"true"===e.getAttribute("star")&&(a.favorite=!0);"note"===e.getAttribute("type")?(a.type=i.CipherType.SecureNote,a.secureNote=new l.SecureNoteView,a.secureNote.type=o.SecureNoteType.Generic):Array.from(this.querySelectorAllDirectChild(e,"field")).forEach((e=>{const t=e.textContent;if(this.isNullOrWhitespace(t))return;const n=e.getAttribute("name"),i=this.getValueOrDefault(e.getAttribute("type"),"").toLowerCase();"login"===i?a.login.username=t:"password"===i||"secret"===i?this.processKvp(a,n,t,r.FieldType.Hidden):"one_time_password"===i?a.login.totp=t:"notes"===i?a.notes+=t+"\n":"weblogin"===i||"website"===i?a.login.uris=this.makeUriArray(t):this.processKvp(a,n,t)})),Array.from(this.querySelectorAllDirectChild(e,"notes")).forEach((e=>{a.notes+=e.textContent+"\n"})),this.setPassword(a),this.cleanupCipher(a),t.ciphers.push(a)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}setPassword(e){const t=e.fields.filter((e=>e.type===r.FieldType.Hidden));if(!t.length)return;let n;for(const i of t)if(this.passwordFieldNames.includes(i.name.toLowerCase())){n=i,e.fields=e.fields.filter((e=>e!==n));break}n||(n=t[0]),e.login.password=n.value}}t.SafeInCloudXmlImporter=d},64817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SaferPassCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(this.nameFromUrl(e.url),"--"),n.notes=this.getValueOrDefault(e.notes),n.login.username=this.getValueOrDefault(e.username),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.SaferPassCsvImporter=o},70402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureSafeCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Title),n.notes=this.getValueOrDefault(e.Comment),n.login.uris=this.makeUriArray(e.Url),n.login.password=this.getValueOrDefault(e.Password),n.login.username=this.getValueOrDefault(e.Username),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.SecureSafeCsvImporter=o},89757:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SplashIdCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(e.length<3)return;this.processFolder(t,this.getValueOrDefault(e[e.length-1]));const n=this.initLoginCipher();n.notes=this.getValueOrDefault(e[e.length-2],""),n.name=this.getValueOrDefault(e[1],"--"),"Web Logins"===e[0]||"Servers"===e[0]||"Email Accounts"===e[0]?(n.login.username=this.getValueOrDefault(e[2]),n.login.password=this.getValueOrDefault(e[3]),n.login.uris=this.makeUriArray(e[4]),this.parseFieldsToNotes(n,5,e)):this.parseFieldsToNotes(n,2,e),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}parseFieldsToNotes(e,t,n){for(let i=t;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StickyPasswordXmlImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseXml(e);if(null==n)return t.success=!1,Promise.resolve(t);const r=n.querySelectorAll("root > Database > Logins > Login");return Array.from(r).forEach((e=>{const i=e.getAttribute("ID");if(this.isNullOrWhitespace(i))return;const r=e.getAttribute("Name"),o=e.getAttribute("Password");let a=null,s=null,l=null,c=null,d=null;const p=n.querySelector('root > Database > Accounts > Account > LoginLinks > Login[SourceLoginID="'+i+'"]');if(null!=p){const e=p.parentElement.parentElement;null!=e&&(a=e.getAttribute("Name"),s=e.getAttribute("Link"),c=e.getAttribute("ParentID"),l=e.getAttribute("Comments"),this.isNullOrWhitespace(l)||(l=l.split("/n").join("\n")))}this.isNullOrWhitespace(c)||(d=this.buildGroupText(n,c,""),this.processFolder(t,d));const u=this.initLoginCipher();u.name=this.getValueOrDefault(a,"--"),u.notes=this.getValueOrDefault(l),u.login.username=this.getValueOrDefault(r),u.login.password=this.getValueOrDefault(o),u.login.uris=this.makeUriArray(s),this.cleanupCipher(u),t.ciphers.push(u)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t)}buildGroupText(e,t,n){const i=e.querySelector('root > Database > Groups > Group[ID="'+t+'"]');return null==i?n:(this.isNullOrWhitespace(n)||(n="/"+n),n=i.getAttribute("Name")+n,this.buildGroupText(e,i.getAttribute("ParentID"),n))}}t.StickyPasswordXmlImporter=o},74962:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TrueKeyCsvImporter=void 0;const i=n(32773),r=n(76716),o=n(2859),a=n(91766),s=n(99364),l=n(5957),c=["kind","autologin","favorite","hexcolor","protectedwithpassword","subdomainonly","type","tk_export_version","note","title","document_content"];class d extends l.BaseImporter{parse(e){const t=new o.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();if(n.favorite="true"===this.getValueOrDefault(e.favorite,"").toLowerCase(),n.name=this.getValueOrDefault(e.name,"--"),n.notes=this.getValueOrDefault(e.memo,""),n.login.username=this.getValueOrDefault(e.login),n.login.password=this.getValueOrDefault(e.password),n.login.uris=this.makeUriArray(e.url),"login"!==e.kind&&(n.name=this.getValueOrDefault(e.title,"--"),n.notes=this.getValueOrDefault(e.note,"")),"cc"===e.kind){if(n.type=i.CipherType.Card,n.card=new a.CardView,n.card.cardholderName=this.getValueOrDefault(e.cardholder),n.card.number=this.getValueOrDefault(e.number),n.card.brand=this.getCardBrand(n.card.number),!this.isNullOrWhitespace(e.expiryDate))try{const t=new Date(e.expiryDate);n.card.expYear=t.getFullYear().toString(),n.card.expMonth=(t.getMonth()+1).toString()}catch(o){}}else if("login"!==e.kind){n.type=i.CipherType.SecureNote,n.secureNote=new s.SecureNoteView,n.secureNote.type=r.SecureNoteType.Generic,this.isNullOrWhitespace(n.notes)||(n.notes=this.getValueOrDefault(e.document_content,""));for(const t in e)e.hasOwnProperty(t)&&c.indexOf(t.toLowerCase())<0&&!this.isNullOrWhitespace(e[t])&&this.processKvp(n,t,e[t])}this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.TrueKeyCsvImporter=d},86220:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpmCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!1);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(5!==e.length)return;const n=this.initLoginCipher();n.name=this.getValueOrDefault(e[0],"--"),n.notes=this.getValueOrDefault(e[4]),n.login.username=this.getValueOrDefault(e[1]),n.login.password=this.getValueOrDefault(e[2]),n.login.uris=this.makeUriArray(e[3]),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.UpmCsvImporter=o},6884:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.YotiCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{const n=this.initLoginCipher();n.name=this.getValueOrDefault(e.Name,"--"),n.login.username=this.getValueOrDefault(e["User name"]),n.login.password=this.getValueOrDefault(e.Password),n.login.uris=this.makeUriArray(e.URL),this.cleanupCipher(n),t.ciphers.push(n)})),t.success=!0,Promise.resolve(t))}}t.YotiCsvImporter=o},8170:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ZohoVaultCsvImporter=void 0;const i=n(2859),r=n(5957);class o extends r.BaseImporter{parse(e){const t=new i.ImportResult,n=this.parseCsv(e,!0);return null==n?(t.success=!1,Promise.resolve(t)):(n.forEach((e=>{if(this.isNullOrWhitespace(e["Password Name"])&&this.isNullOrWhitespace(e["Secret Name"]))return;this.processFolder(t,this.getValueOrDefault(e.ChamberName));const n=this.initLoginCipher();n.favorite="1"===this.getValueOrDefault(e.Favorite,"0"),n.notes=this.getValueOrDefault(e.Notes),n.name=this.getValueOrDefault(e["Password Name"],this.getValueOrDefault(e["Secret Name"],"--")),n.login.uris=this.makeUriArray(this.getValueOrDefault(e["Password URL"],this.getValueOrDefault(e["Secret URL"]))),this.parseData(n,e.SecretData),this.parseData(n,e.CustomData),this.convertToNoteIfNeeded(n),this.cleanupCipher(n),t.ciphers.push(n)})),this.organization&&this.moveFoldersToCollections(t),t.success=!0,Promise.resolve(t))}parseData(e,t){if(this.isNullOrWhitespace(t))return;this.splitNewLine(t).forEach((t=>{const n=t.indexOf(":");if(n<0)return;const i=t.substring(0,n),r=t.length>n?t.substring(n+1):null;if(this.isNullOrWhitespace(i)||this.isNullOrWhitespace(r)||"SecretType"===i)return;const o=i.toLowerCase();null==e.login.username&&this.usernameFieldNames.indexOf(o)>-1?e.login.username=r:null==e.login.password&&this.passwordFieldNames.indexOf(o)>-1?e.login.password=r:this.processKvp(e,i,r)}))}}t.ZohoVaultCsvImporter=o},94700:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CaptchaIFrame=void 0;const i=n(85549);class r extends i.IFrameComponent{constructor(e,t,n,i,r,o){super(e,t,"captcha-connector.html","hcaptcha_iframe",i,r,(e=>{const t=JSON.parse(e);"string"!=typeof t?(this.iframe.height=t.height.toString(),this.iframe.width=t.width.toString()):o(t)})),this.i18nService=n}init(e){super.initComponent(this.createParams({siteKey:e,locale:this.i18nService.translationLocale},1))}}t.CaptchaIFrame=r},85549:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IFrameComponent=void 0;t.IFrameComponent=class{constructor(e,t,n,i,r,o,a){this.win=e,this.webVaultUrl=t,this.path=n,this.iframeId=i,this.successCallback=r,this.errorCallback=o,this.infoCallback=a,this.parseFunction=this.parseMessage.bind(this),this.connectorLink=e.document.createElement("a")}stop(){this.sendMessage("stop")}start(){this.sendMessage("start")}sendMessage(e){this.iframe&&this.iframe.src&&this.iframe.contentWindow&&this.iframe.contentWindow.postMessage(e,this.iframe.src)}base64Encode(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode("0x"+t))))}cleanup(){this.win.removeEventListener("message",this.parseFunction,!1)}createParams(e,t){return new URLSearchParams({data:this.base64Encode(JSON.stringify(e)),parent:encodeURIComponent(this.win.document.location.href),v:t.toString()})}initComponent(e){this.connectorLink.href=`${this.webVaultUrl}/${this.path}?${e}`,this.iframe=this.win.document.getElementById(this.iframeId),this.iframe.src=this.connectorLink.href,this.win.addEventListener("message",this.parseFunction,!1)}parseMessage(e){if(!this.validMessage(e))return;const t=e.data.split("|");"success"===t[0]&&this.successCallback?this.successCallback(t[1]):"error"===t[0]&&this.errorCallback?this.errorCallback(t[1]):"info"===t[0]&&this.infoCallback&&this.infoCallback(t[1])}validMessage(e){return null!=e.origin&&""!==e.origin&&e.origin===this.connectorLink.origin&&null!=e.data&&"string"==typeof e.data&&(0===e.data.indexOf("success|")||0===e.data.indexOf("error|")||0===e.data.indexOf("info|"))}}},60628:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.linkedFieldOption=t.LinkedMetadata=void 0;class n{constructor(e,t){this.propertyKey=e,this._i18nKey=t}get i18nKey(){var e;return null!==(e=this._i18nKey)&&void 0!==e?e:this.propertyKey}}t.LinkedMetadata=n,t.linkedFieldOption=function(e,t){return(i,r)=>{null==i.linkedFieldOptions&&(i.linkedFieldOptions=new Map),i.linkedFieldOptions.set(e,new n(r,t))}}},83825:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLogInStrategy=void 0;const r=n(81047),o=n(27657);class a extends o.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,l),this.environmentService=c,this.keyConnectorService=d}onSuccessfulLogin(e){return i(this,void 0,void 0,(function*(){if(e.apiUseKeyConnector){const e=this.environmentService.getKeyConnectorUrl();yield this.keyConnectorService.getAndSetKey(e)}}))}logIn(e){return i(this,void 0,void 0,(function*(){return this.tokenRequest=new r.ApiTokenRequest(e.clientId,e.clientSecret,yield this.buildTwoFactor(),yield this.buildDeviceRequest()),this.startLogIn()}))}saveAccountInformation(e){const t=Object.create(null,{saveAccountInformation:{get:()=>super.saveAccountInformation}});return i(this,void 0,void 0,(function*(){yield t.saveAccountInformation.call(this,e),yield this.stateService.setApiKeyClientId(this.tokenRequest.clientId),yield this.stateService.setApiKeyClientSecret(this.tokenRequest.clientSecret)}))}}t.ApiLogInStrategy=a},27657:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LogInStrategy=void 0;const r=n(97374),o=n(31445),a=n(20584),s=n(92829),l=n(74598),c=n(74284),d=n(56659),p=n(7269),u=n(38326);t.LogInStrategy=class{constructor(e,t,n,i,r,o,a,s,l){this.cryptoService=e,this.apiService=t,this.tokenService=n,this.appIdService=i,this.platformUtilsService=r,this.messagingService=o,this.logService=a,this.stateService=s,this.twoFactorService=l,this.captchaBypassToken=null}logInTwoFactor(e,t=null){return i(this,void 0,void 0,(function*(){return this.tokenRequest.setTwoFactor(e),this.startLogIn()}))}startLogIn(){return i(this,void 0,void 0,(function*(){this.twoFactorService.clearSelectedProvider();const e=yield this.apiService.postIdentityToken(this.tokenRequest);if(e instanceof u.IdentityTwoFactorResponse)return this.processTwoFactorResponse(e);if(e instanceof d.IdentityCaptchaResponse)return this.processCaptchaResponse(e);if(e instanceof p.IdentityTokenResponse)return this.processTokenResponse(e);throw new Error("Invalid response object.")}))}onSuccessfulLogin(e){return null}buildDeviceRequest(){return i(this,void 0,void 0,(function*(){const e=yield this.appIdService.getAppId();return new s.DeviceRequest(e,this.platformUtilsService)}))}buildTwoFactor(e){return i(this,void 0,void 0,(function*(){if(null!=e)return e;const t=yield this.tokenService.getTwoFactorToken();return null!=t?new l.TokenRequestTwoFactor(r.TwoFactorProviderType.Remember,t,!1):new l.TokenRequestTwoFactor}))}saveAccountInformation(e){return i(this,void 0,void 0,(function*(){const t=yield this.tokenService.decodeToken(e.accessToken);yield this.stateService.addAccount(new o.Account({profile:Object.assign(Object.assign({},new o.AccountProfile),{userId:t.sub,email:t.email,hasPremiumPersonally:t.premium,kdfIterations:e.kdfIterations,kdfType:e.kdf}),tokens:Object.assign(Object.assign({},new o.AccountTokens),{accessToken:e.accessToken,refreshToken:e.refreshToken})}))}))}processTokenResponse(e){var t;return i(this,void 0,void 0,(function*(){const n=new a.AuthResult;n.resetMasterPassword=e.resetMasterPassword,n.forcePasswordReset=e.forcePasswordReset,yield this.saveAccountInformation(e),null!=e.twoFactorToken&&(yield this.tokenService.setTwoFactorToken(e));return null==e.key||(yield this.cryptoService.setEncKey(e.key),yield this.cryptoService.setEncPrivateKey(null!==(t=e.privateKey)&&void 0!==t?t:yield this.createKeyPairForOldAccount())),yield this.onSuccessfulLogin(e),yield this.stateService.setBiometricLocked(!1),this.messagingService.send("loggedIn"),n}))}processTwoFactorResponse(e){var t;return i(this,void 0,void 0,(function*(){const n=new a.AuthResult;return n.twoFactorProviders=e.twoFactorProviders2,this.twoFactorService.setProviders(e),this.captchaBypassToken=null!==(t=e.captchaToken)&&void 0!==t?t:null,n}))}processCaptchaResponse(e){return i(this,void 0,void 0,(function*(){const t=new a.AuthResult;return t.captchaSiteKey=e.siteKey,t}))}createKeyPairForOldAccount(){return i(this,void 0,void 0,(function*(){try{const[e,t]=yield this.cryptoService.makeKeyPair();return yield this.apiService.postAccountKeys(new c.KeysRequest(e,t.encryptedString)),t.encryptedString}catch(e){this.logService.error(e)}}))}}},74044:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordLogInStrategy=void 0;const r=n(43578),o=n(10037),a=n(27657);class s extends a.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,s,l),this.authService=c}get email(){return this.tokenRequest.email}get masterPasswordHash(){return this.tokenRequest.masterPasswordHash}onSuccessfulLogin(){return i(this,void 0,void 0,(function*(){yield this.cryptoService.setKey(this.key),yield this.cryptoService.setKeyHash(this.localHashedPassword)}))}logInTwoFactor(e,t){const n=Object.create(null,{logInTwoFactor:{get:()=>super.logInTwoFactor}});return i(this,void 0,void 0,(function*(){return this.tokenRequest.captchaResponse=null!=t?t:this.captchaBypassToken,n.logInTwoFactor.call(this,e)}))}logIn(e){return i(this,void 0,void 0,(function*(){const{email:t,masterPassword:n,captchaToken:i,twoFactor:a}=e;this.key=yield this.authService.makePreloginKey(n,t),this.localHashedPassword=yield this.cryptoService.hashPassword(n,this.key,r.HashPurpose.LocalAuthorization);const s=yield this.cryptoService.hashPassword(n,this.key);return this.tokenRequest=new o.PasswordTokenRequest(t,s,i,yield this.buildTwoFactor(a),yield this.buildDeviceRequest()),this.startLogIn()}))}}t.PasswordLogInStrategy=s},41956:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoLogInStrategy=void 0;const r=n(11685),o=n(27657);class a extends o.LogInStrategy{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,s,l),this.keyConnectorService=c}onSuccessfulLogin(e){return i(this,void 0,void 0,(function*(){const t=null==e.key;null!=e.keyConnectorUrl&&(t?yield this.keyConnectorService.convertNewSsoUserToKeyConnector(e,this.orgId):yield this.keyConnectorService.getAndSetKey(e.keyConnectorUrl))}))}logIn(e){return i(this,void 0,void 0,(function*(){return this.orgId=e.orgId,this.tokenRequest=new r.SsoTokenRequest(e.code,e.codeVerifier,e.redirectUrl,yield this.buildTwoFactor(e.twoFactor),yield this.buildDeviceRequest()),this.startLogIn()}))}}t.SsoLogInStrategy=a},27605:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sequentialize=void 0,t.sequentialize=function(e){return(t,n,i)=>{const r=i.value,o=new Map;return{value:function(...t){const n=(e=>{let t=o.get(e);return null!=t||(t=new Map,o.set(e,t)),t})(this),i=e(t);let a=n.get(i);if(null!=a)return a;const s=()=>{n.delete(i),0===n.size&&o.delete(this)};return a=r.apply(this,t).then((e=>(s(),e))).catch((e=>{throw s(),e})),n.set(i,a),a}}}}},39814:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ServiceUtils=void 0;const i=n(51301);class r{static nestedTraverse(e,t,n,o,a,s){if(n.length<=t)return;const l=t===n.length-1,c=n[t];for(let d=0;de.node.name===c)).length){if(l)return void e.push(new i.TreeNode(o,c,a));const d=n[t]+s+n[t+1];r.nestedTraverse(e,0,[d,...n.slice(t+2)],o,a,s)}}static getTreeNodeObject(e,t){for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throttle=void 0,t.throttle=function(e,t){return(n,i,r)=>{const o=r.value,a=new Map;return{value:function(...n){const i=(e=>{let t=a.get(e);return null!=t||(t=new Map,a.set(e,t)),t})(this),r=t(n);let s=i.get(r);return null==s&&(s=[],i.set(r,s)),new Promise(((t,l)=>{const c=()=>{const d=()=>{s.splice(s.indexOf(c),1),s.length>=e?s[e-1]():0===s.length&&(i.delete(r),0===i.size&&a.delete(this))};o.apply(this,n).then((e=>(d(),e))).catch((e=>{throw d(),e})).then(t,l)};s.push(c),s.length<=e&&c()}))}}}}},43400:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isValid=t.getDomain=void 0,t.getDomain=function(e){return null},t.isValid=function(e){return!0}},82769:(e,t,n)=>{"use strict";var i=n(34155);Object.defineProperty(t,"__esModule",{value:!0}),t.Utils=void 0;const r=n(43400),o="undefined"==typeof window?n(4958):null;class a{static init(){a.inited||(a.inited=!0,a.isNode=void 0!==i&&null!=i.release&&"node"===i.release.name,a.isBrowser="undefined"!=typeof window,a.isMobileBrowser=a.isBrowser&&this.isMobile(window),a.isAppleMobileBrowser=a.isBrowser&&this.isAppleMobile(window),a.global=a.isNode&&!a.isBrowser?n.g:window)}static fromB64ToArray(e){if(a.isNode)return new Uint8Array(Buffer.from(e,"base64"));{const t=window.atob(e),n=new Uint8Array(t.length);for(let e=0;e("00"+e.toString(16)).slice(-2))).join("")}}static fromUrlB64ToB64(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("Illegal base64url string!")}return t}static fromUrlB64ToUtf8(e){return a.fromB64ToUtf8(a.fromUrlB64ToB64(e))}static fromUtf8ToB64(e){return a.isNode?Buffer.from(e,"utf8").toString("base64"):decodeURIComponent(escape(window.btoa(e)))}static fromUtf8ToUrlB64(e){return a.fromBufferToUrlB64(a.fromUtf8ToArray(e))}static fromB64ToUtf8(e){return a.isNode?Buffer.from(e,"base64").toString("utf8"):decodeURIComponent(escape(window.atob(e)))}static newGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}static isGuid(e){return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,"i").test(e)}static getHostname(e){const t=a.getUrl(e);try{return null!=t&&""!==t.hostname?t.hostname:null}catch(n){return null}}static getHost(e){const t=a.getUrl(e);try{return null!=t&&""!==t.host?t.host:null}catch(n){return null}}static getDomain(e){if(null==e)return null;if(""===(e=e.trim()))return null;if(e.startsWith("data:"))return null;let t=e.startsWith("http://")||e.startsWith("https://");if(!t&&e.indexOf("://")<0&&a.tldEndingRegex.test(e)&&e.indexOf("@")<0&&(e="http://"+e,t=!0),t)try{const t=a.getUrlObject(e);if(!(null==(null==r?void 0:r.isValid)||r.isValid(t.hostname)))return null;if("localhost"===t.hostname||a.validIpAddress(t.hostname))return t.hostname;const n=null!=r&&null!=r.getDomain?r.getDomain(t.hostname):null;return null!=n?n:t.hostname}catch(n){}try{const t=null!=r&&null!=r.getDomain?r.getDomain(e):null;if(null!=t)return t}catch(i){return null}return null}static getQueryParams(e){const t=a.getUrl(e);if(null==t||null==t.search||""===t.search)return null;const n=new Map;return("?"===t.search[0]?t.search.substr(1):t.search).split("&").forEach((e=>{const t=e.split("=");t.length<1||n.set(decodeURIComponent(t[0]).toLowerCase(),null==t[1]?"":decodeURIComponent(t[1]))})),n}static getSortFunction(e,t){return(n,i)=>null==n[t]&&null!=i[t]?-1:null!=n[t]&&null==i[t]?1:null==n[t]&&null==i[t]?0:e.collator?e.collator.compare(n[t],i[t]):n[t].localeCompare(i[t])}static isNullOrWhitespace(e){return null==e||"string"!=typeof e||""===e.trim()}static isNullOrEmpty(e){return null==e||"string"!=typeof e||""==e}static nameOf(e){return e}static assign(e,t){return Object.assign(e,t)}static iterateEnum(e){return Object.keys(e).filter((e=>Number.isNaN(+e))).map((t=>e[t]))}static getUrl(e){if(null==e)return null;if(""===(e=e.trim()))return null;let t=a.getUrlObject(e);if(null==t){!(0===e.indexOf("http://")||0===e.indexOf("https://"))&&e.indexOf(".")>-1&&(t=a.getUrlObject("http://"+e))}return t}static camelToPascalCase(e){return e.charAt(0).toUpperCase()+e.slice(1)}static validIpAddress(e){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(e)}static isMobile(e){let t=!1;var n;return n=e.navigator.userAgent||e.navigator.vendor||e.opera,(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(n.substr(0,4)))&&(t=!0),t||null!=e.navigator.userAgent.match(/iPad/i)}static isAppleMobile(e){return null!=e.navigator.userAgent.match(/iPhone/i)||null!=e.navigator.userAgent.match(/iPad/i)}static getUrlObject(e){try{if(null!=o)return new o.URL(e);if("function"==typeof URL)return new URL(e);if(null!=window){const t=e.indexOf("://")>-1;if(!t&&e.indexOf(".")>-1)e="http://"+e;else if(!t)return null;const n=window.document.createElement("a");return n.href=e,n}}catch(t){}return null}}t.Utils=a,a.inited=!1,a.isNode=!1,a.isBrowser=!0,a.isMobileBrowser=!1,a.isAppleMobileBrowser=!1,a.global=null,a.tldEndingRegex=/.*\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/,a.regexpEmojiPresentation=/(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])/g,a.init()},28705:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WebAuthnIFrame=void 0;t.WebAuthnIFrame=class{constructor(e,t,n,i,r,o,a,s){this.win=e,this.webVaultUrl=t,this.webAuthnNewTab=n,this.platformUtilsService=i,this.i18nService=r,this.successCallback=o,this.errorCallback=a,this.infoCallback=s,this.iframe=null,this.parseFunction=this.parseMessage.bind(this),this.connectorLink=e.document.createElement("a")}init(e){const t=new URLSearchParams({data:this.base64Encode(JSON.stringify(e)),parent:encodeURIComponent(this.win.document.location.href),btnText:encodeURIComponent(this.i18nService.t("webAuthnAuthenticate")),v:"1"});this.webAuthnNewTab?(t.append("locale",this.i18nService.translationLocale),this.platformUtilsService.launchUri(`${this.webVaultUrl}/webauthn-fallback-connector.html?${t}`)):(this.connectorLink.href=`${this.webVaultUrl}/webauthn-connector.html?${t}`,this.iframe=this.win.document.getElementById("webauthn_iframe"),this.iframe.allow="publickey-credentials-get "+new URL(this.webVaultUrl).origin,this.iframe.src=this.connectorLink.href,this.win.addEventListener("message",this.parseFunction,!1))}stop(){this.sendMessage("stop")}start(){this.sendMessage("start")}sendMessage(e){this.iframe&&this.iframe.src&&this.iframe.contentWindow&&this.iframe.contentWindow.postMessage(e,this.iframe.src)}base64Encode(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,((e,t)=>String.fromCharCode("0x"+t))))}cleanup(){this.win.removeEventListener("message",this.parseFunction,!1)}parseMessage(e){if(!this.validMessage(e))return;const t=e.data.split("|");"success"===t[0]&&this.successCallback?this.successCallback(t[1]):"error"===t[0]&&this.errorCallback?this.errorCallback(t[1]):"info"===t[0]&&this.infoCallback&&this.infoCallback(t[1])}validMessage(e){return null!=e.origin&&""!==e.origin&&e.origin===this.connectorLink.origin&&null!=e.data&&"string"==typeof e.data&&(0===e.data.indexOf("success|")||0===e.data.indexOf("error|")||0===e.data.indexOf("info|"))}}},40596:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EEFLongWordList=void 0,t.EEFLongWordList=["abacus","abdomen","abdominal","abide","abiding","ability","ablaze","able","abnormal","abrasion","abrasive","abreast","abridge","abroad","abruptly","absence","absentee","absently","absinthe","absolute","absolve","abstain","abstract","absurd","accent","acclaim","acclimate","accompany","account","accuracy","accurate","accustom","acetone","achiness","aching","acid","acorn","acquaint","acquire","acre","acrobat","acronym","acting","action","activate","activator","active","activism","activist","activity","actress","acts","acutely","acuteness","aeration","aerobics","aerosol","aerospace","afar","affair","affected","affecting","affection","affidavit","affiliate","affirm","affix","afflicted","affluent","afford","affront","aflame","afloat","aflutter","afoot","afraid","afterglow","afterlife","aftermath","aftermost","afternoon","aged","ageless","agency","agenda","agent","aggregate","aghast","agile","agility","aging","agnostic","agonize","agonizing","agony","agreeable","agreeably","agreed","agreeing","agreement","aground","ahead","ahoy","aide","aids","aim","ajar","alabaster","alarm","albatross","album","alfalfa","algebra","algorithm","alias","alibi","alienable","alienate","aliens","alike","alive","alkaline","alkalize","almanac","almighty","almost","aloe","aloft","aloha","alone","alongside","aloof","alphabet","alright","although","altitude","alto","aluminum","alumni","always","amaretto","amaze","amazingly","amber","ambiance","ambiguity","ambiguous","ambition","ambitious","ambulance","ambush","amendable","amendment","amends","amenity","amiable","amicably","amid","amigo","amino","amiss","ammonia","ammonium","amnesty","amniotic","among","amount","amperage","ample","amplifier","amplify","amply","amuck","amulet","amusable","amused","amusement","amuser","amusing","anaconda","anaerobic","anagram","anatomist","anatomy","anchor","anchovy","ancient","android","anemia","anemic","aneurism","anew","angelfish","angelic","anger","angled","angler","angles","angling","angrily","angriness","anguished","angular","animal","animate","animating","animation","animator","anime","animosity","ankle","annex","annotate","announcer","annoying","annually","annuity","anointer","another","answering","antacid","antarctic","anteater","antelope","antennae","anthem","anthill","anthology","antibody","antics","antidote","antihero","antiquely","antiques","antiquity","antirust","antitoxic","antitrust","antiviral","antivirus","antler","antonym","antsy","anvil","anybody","anyhow","anymore","anyone","anyplace","anything","anytime","anyway","anywhere","aorta","apache","apostle","appealing","appear","appease","appeasing","appendage","appendix","appetite","appetizer","applaud","applause","apple","appliance","applicant","applied","apply","appointee","appraisal","appraiser","apprehend","approach","approval","approve","apricot","april","apron","aptitude","aptly","aqua","aqueduct","arbitrary","arbitrate","ardently","area","arena","arguable","arguably","argue","arise","armadillo","armband","armchair","armed","armful","armhole","arming","armless","armoire","armored","armory","armrest","army","aroma","arose","around","arousal","arrange","array","arrest","arrival","arrive","arrogance","arrogant","arson","art","ascend","ascension","ascent","ascertain","ashamed","ashen","ashes","ashy","aside","askew","asleep","asparagus","aspect","aspirate","aspire","aspirin","astonish","astound","astride","astrology","astronaut","astronomy","astute","atlantic","atlas","atom","atonable","atop","atrium","atrocious","atrophy","attach","attain","attempt","attendant","attendee","attention","attentive","attest","attic","attire","attitude","attractor","attribute","atypical","auction","audacious","audacity","audible","audibly","audience","audio","audition","augmented","august","authentic","author","autism","autistic","autograph","automaker","automated","automatic","autopilot","available","avalanche","avatar","avenge","avenging","avenue","average","aversion","avert","aviation","aviator","avid","avoid","await","awaken","award","aware","awhile","awkward","awning","awoke","awry","axis","babble","babbling","babied","baboon","backache","backboard","backboned","backdrop","backed","backer","backfield","backfire","backhand","backing","backlands","backlash","backless","backlight","backlit","backlog","backpack","backpedal","backrest","backroom","backshift","backside","backslid","backspace","backspin","backstab","backstage","backtalk","backtrack","backup","backward","backwash","backwater","backyard","bacon","bacteria","bacterium","badass","badge","badland","badly","badness","baffle","baffling","bagel","bagful","baggage","bagged","baggie","bagginess","bagging","baggy","bagpipe","baguette","baked","bakery","bakeshop","baking","balance","balancing","balcony","balmy","balsamic","bamboo","banana","banish","banister","banjo","bankable","bankbook","banked","banker","banking","banknote","bankroll","banner","bannister","banshee","banter","barbecue","barbed","barbell","barber","barcode","barge","bargraph","barista","baritone","barley","barmaid","barman","barn","barometer","barrack","barracuda","barrel","barrette","barricade","barrier","barstool","bartender","barterer","bash","basically","basics","basil","basin","basis","basket","batboy","batch","bath","baton","bats","battalion","battered","battering","battery","batting","battle","bauble","bazooka","blabber","bladder","blade","blah","blame","blaming","blanching","blandness","blank","blaspheme","blasphemy","blast","blatancy","blatantly","blazer","blazing","bleach","bleak","bleep","blemish","blend","bless","blighted","blimp","bling","blinked","blinker","blinking","blinks","blip","blissful","blitz","blizzard","bloated","bloating","blob","blog","bloomers","blooming","blooper","blot","blouse","blubber","bluff","bluish","blunderer","blunt","blurb","blurred","blurry","blurt","blush","blustery","boaster","boastful","boasting","boat","bobbed","bobbing","bobble","bobcat","bobsled","bobtail","bodacious","body","bogged","boggle","bogus","boil","bok","bolster","bolt","bonanza","bonded","bonding","bondless","boned","bonehead","boneless","bonelike","boney","bonfire","bonnet","bonsai","bonus","bony","boogeyman","boogieman","book","boondocks","booted","booth","bootie","booting","bootlace","bootleg","boots","boozy","borax","boring","borough","borrower","borrowing","boss","botanical","botanist","botany","botch","both","bottle","bottling","bottom","bounce","bouncing","bouncy","bounding","boundless","bountiful","bovine","boxcar","boxer","boxing","boxlike","boxy","breach","breath","breeches","breeching","breeder","breeding","breeze","breezy","brethren","brewery","brewing","briar","bribe","brick","bride","bridged","brigade","bright","brilliant","brim","bring","brink","brisket","briskly","briskness","bristle","brittle","broadband","broadcast","broaden","broadly","broadness","broadside","broadways","broiler","broiling","broken","broker","bronchial","bronco","bronze","bronzing","brook","broom","brought","browbeat","brownnose","browse","browsing","bruising","brunch","brunette","brunt","brush","brussels","brute","brutishly","bubble","bubbling","bubbly","buccaneer","bucked","bucket","buckle","buckshot","buckskin","bucktooth","buckwheat","buddhism","buddhist","budding","buddy","budget","buffalo","buffed","buffer","buffing","buffoon","buggy","bulb","bulge","bulginess","bulgur","bulk","bulldog","bulldozer","bullfight","bullfrog","bullhorn","bullion","bullish","bullpen","bullring","bullseye","bullwhip","bully","bunch","bundle","bungee","bunion","bunkbed","bunkhouse","bunkmate","bunny","bunt","busboy","bush","busily","busload","bust","busybody","buzz","cabana","cabbage","cabbie","cabdriver","cable","caboose","cache","cackle","cacti","cactus","caddie","caddy","cadet","cadillac","cadmium","cage","cahoots","cake","calamari","calamity","calcium","calculate","calculus","caliber","calibrate","calm","caloric","calorie","calzone","camcorder","cameo","camera","camisole","camper","campfire","camping","campsite","campus","canal","canary","cancel","candied","candle","candy","cane","canine","canister","cannabis","canned","canning","cannon","cannot","canola","canon","canopener","canopy","canteen","canyon","capable","capably","capacity","cape","capillary","capital","capitol","capped","capricorn","capsize","capsule","caption","captivate","captive","captivity","capture","caramel","carat","caravan","carbon","cardboard","carded","cardiac","cardigan","cardinal","cardstock","carefully","caregiver","careless","caress","caretaker","cargo","caring","carless","carload","carmaker","carnage","carnation","carnival","carnivore","carol","carpenter","carpentry","carpool","carport","carried","carrot","carrousel","carry","cartel","cartload","carton","cartoon","cartridge","cartwheel","carve","carving","carwash","cascade","case","cash","casing","casino","casket","cassette","casually","casualty","catacomb","catalog","catalyst","catalyze","catapult","cataract","catatonic","catcall","catchable","catcher","catching","catchy","caterer","catering","catfight","catfish","cathedral","cathouse","catlike","catnap","catnip","catsup","cattail","cattishly","cattle","catty","catwalk","caucasian","caucus","causal","causation","cause","causing","cauterize","caution","cautious","cavalier","cavalry","caviar","cavity","cedar","celery","celestial","celibacy","celibate","celtic","cement","census","ceramics","ceremony","certainly","certainty","certified","certify","cesarean","cesspool","chafe","chaffing","chain","chair","chalice","challenge","chamber","chamomile","champion","chance","change","channel","chant","chaos","chaperone","chaplain","chapped","chaps","chapter","character","charbroil","charcoal","charger","charging","chariot","charity","charm","charred","charter","charting","chase","chasing","chaste","chastise","chastity","chatroom","chatter","chatting","chatty","cheating","cheddar","cheek","cheer","cheese","cheesy","chef","chemicals","chemist","chemo","cherisher","cherub","chess","chest","chevron","chevy","chewable","chewer","chewing","chewy","chief","chihuahua","childcare","childhood","childish","childless","childlike","chili","chill","chimp","chip","chirping","chirpy","chitchat","chivalry","chive","chloride","chlorine","choice","chokehold","choking","chomp","chooser","choosing","choosy","chop","chosen","chowder","chowtime","chrome","chubby","chuck","chug","chummy","chump","chunk","churn","chute","cider","cilantro","cinch","cinema","cinnamon","circle","circling","circular","circulate","circus","citable","citadel","citation","citizen","citric","citrus","city","civic","civil","clad","claim","clambake","clammy","clamor","clamp","clamshell","clang","clanking","clapped","clapper","clapping","clarify","clarinet","clarity","clash","clasp","class","clatter","clause","clavicle","claw","clay","clean","clear","cleat","cleaver","cleft","clench","clergyman","clerical","clerk","clever","clicker","client","climate","climatic","cling","clinic","clinking","clip","clique","cloak","clobber","clock","clone","cloning","closable","closure","clothes","clothing","cloud","clover","clubbed","clubbing","clubhouse","clump","clumsily","clumsy","clunky","clustered","clutch","clutter","coach","coagulant","coastal","coaster","coasting","coastland","coastline","coat","coauthor","cobalt","cobbler","cobweb","cocoa","coconut","cod","coeditor","coerce","coexist","coffee","cofounder","cognition","cognitive","cogwheel","coherence","coherent","cohesive","coil","coke","cola","cold","coleslaw","coliseum","collage","collapse","collar","collected","collector","collide","collie","collision","colonial","colonist","colonize","colony","colossal","colt","coma","come","comfort","comfy","comic","coming","comma","commence","commend","comment","commerce","commode","commodity","commodore","common","commotion","commute","commuting","compacted","compacter","compactly","compactor","companion","company","compare","compel","compile","comply","component","composed","composer","composite","compost","composure","compound","compress","comprised","computer","computing","comrade","concave","conceal","conceded","concept","concerned","concert","conch","concierge","concise","conclude","concrete","concur","condense","condiment","condition","condone","conducive","conductor","conduit","cone","confess","confetti","confidant","confident","confider","confiding","configure","confined","confining","confirm","conflict","conform","confound","confront","confused","confusing","confusion","congenial","congested","congrats","congress","conical","conjoined","conjure","conjuror","connected","connector","consensus","consent","console","consoling","consonant","constable","constant","constrain","constrict","construct","consult","consumer","consuming","contact","container","contempt","contend","contented","contently","contents","contest","context","contort","contour","contrite","control","contusion","convene","convent","copartner","cope","copied","copier","copilot","coping","copious","copper","copy","coral","cork","cornball","cornbread","corncob","cornea","corned","corner","cornfield","cornflake","cornhusk","cornmeal","cornstalk","corny","coronary","coroner","corporal","corporate","corral","correct","corridor","corrode","corroding","corrosive","corsage","corset","cortex","cosigner","cosmetics","cosmic","cosmos","cosponsor","cost","cottage","cotton","couch","cough","could","countable","countdown","counting","countless","country","county","courier","covenant","cover","coveted","coveting","coyness","cozily","coziness","cozy","crabbing","crabgrass","crablike","crabmeat","cradle","cradling","crafter","craftily","craftsman","craftwork","crafty","cramp","cranberry","crane","cranial","cranium","crank","crate","crave","craving","crawfish","crawlers","crawling","crayfish","crayon","crazed","crazily","craziness","crazy","creamed","creamer","creamlike","crease","creasing","creatable","create","creation","creative","creature","credible","credibly","credit","creed","creme","creole","crepe","crept","crescent","crested","cresting","crestless","crevice","crewless","crewman","crewmate","crib","cricket","cried","crier","crimp","crimson","cringe","cringing","crinkle","crinkly","crisped","crisping","crisply","crispness","crispy","criteria","critter","croak","crock","crook","croon","crop","cross","crouch","crouton","crowbar","crowd","crown","crucial","crudely","crudeness","cruelly","cruelness","cruelty","crumb","crummiest","crummy","crumpet","crumpled","cruncher","crunching","crunchy","crusader","crushable","crushed","crusher","crushing","crust","crux","crying","cryptic","crystal","cubbyhole","cube","cubical","cubicle","cucumber","cuddle","cuddly","cufflink","culinary","culminate","culpable","culprit","cultivate","cultural","culture","cupbearer","cupcake","cupid","cupped","cupping","curable","curator","curdle","cure","curfew","curing","curled","curler","curliness","curling","curly","curry","curse","cursive","cursor","curtain","curtly","curtsy","curvature","curve","curvy","cushy","cusp","cussed","custard","custodian","custody","customary","customer","customize","customs","cut","cycle","cyclic","cycling","cyclist","cylinder","cymbal","cytoplasm","cytoplast","dab","dad","daffodil","dagger","daily","daintily","dainty","dairy","daisy","dallying","dance","dancing","dandelion","dander","dandruff","dandy","danger","dangle","dangling","daredevil","dares","daringly","darkened","darkening","darkish","darkness","darkroom","darling","darn","dart","darwinism","dash","dastardly","data","datebook","dating","daughter","daunting","dawdler","dawn","daybed","daybreak","daycare","daydream","daylight","daylong","dayroom","daytime","dazzler","dazzling","deacon","deafening","deafness","dealer","dealing","dealmaker","dealt","dean","debatable","debate","debating","debit","debrief","debtless","debtor","debug","debunk","decade","decaf","decal","decathlon","decay","deceased","deceit","deceiver","deceiving","december","decency","decent","deception","deceptive","decibel","decidable","decimal","decimeter","decipher","deck","declared","decline","decode","decompose","decorated","decorator","decoy","decrease","decree","dedicate","dedicator","deduce","deduct","deed","deem","deepen","deeply","deepness","deface","defacing","defame","default","defeat","defection","defective","defendant","defender","defense","defensive","deferral","deferred","defiance","defiant","defile","defiling","define","definite","deflate","deflation","deflator","deflected","deflector","defog","deforest","defraud","defrost","deftly","defuse","defy","degraded","degrading","degrease","degree","dehydrate","deity","dejected","delay","delegate","delegator","delete","deletion","delicacy","delicate","delicious","delighted","delirious","delirium","deliverer","delivery","delouse","delta","deluge","delusion","deluxe","demanding","demeaning","demeanor","demise","democracy","democrat","demote","demotion","demystify","denatured","deniable","denial","denim","denote","dense","density","dental","dentist","denture","deny","deodorant","deodorize","departed","departure","depict","deplete","depletion","deplored","deploy","deport","depose","depraved","depravity","deprecate","depress","deprive","depth","deputize","deputy","derail","deranged","derby","derived","desecrate","deserve","deserving","designate","designed","designer","designing","deskbound","desktop","deskwork","desolate","despair","despise","despite","destiny","destitute","destruct","detached","detail","detection","detective","detector","detention","detergent","detest","detonate","detonator","detoxify","detract","deuce","devalue","deviancy","deviant","deviate","deviation","deviator","device","devious","devotedly","devotee","devotion","devourer","devouring","devoutly","dexterity","dexterous","diabetes","diabetic","diabolic","diagnoses","diagnosis","diagram","dial","diameter","diaper","diaphragm","diary","dice","dicing","dictate","dictation","dictator","difficult","diffused","diffuser","diffusion","diffusive","dig","dilation","diligence","diligent","dill","dilute","dime","diminish","dimly","dimmed","dimmer","dimness","dimple","diner","dingbat","dinghy","dinginess","dingo","dingy","dining","dinner","diocese","dioxide","diploma","dipped","dipper","dipping","directed","direction","directive","directly","directory","direness","dirtiness","disabled","disagree","disallow","disarm","disarray","disaster","disband","disbelief","disburse","discard","discern","discharge","disclose","discolor","discount","discourse","discover","discuss","disdain","disengage","disfigure","disgrace","dish","disinfect","disjoin","disk","dislike","disliking","dislocate","dislodge","disloyal","dismantle","dismay","dismiss","dismount","disobey","disorder","disown","disparate","disparity","dispatch","dispense","dispersal","dispersed","disperser","displace","display","displease","disposal","dispose","disprove","dispute","disregard","disrupt","dissuade","distance","distant","distaste","distill","distinct","distort","distract","distress","district","distrust","ditch","ditto","ditzy","dividable","divided","dividend","dividers","dividing","divinely","diving","divinity","divisible","divisibly","division","divisive","divorcee","dizziness","dizzy","doable","docile","dock","doctrine","document","dodge","dodgy","doily","doing","dole","dollar","dollhouse","dollop","dolly","dolphin","domain","domelike","domestic","dominion","dominoes","donated","donation","donator","donor","donut","doodle","doorbell","doorframe","doorknob","doorman","doormat","doornail","doorpost","doorstep","doorstop","doorway","doozy","dork","dormitory","dorsal","dosage","dose","dotted","doubling","douche","dove","down","dowry","doze","drab","dragging","dragonfly","dragonish","dragster","drainable","drainage","drained","drainer","drainpipe","dramatic","dramatize","drank","drapery","drastic","draw","dreaded","dreadful","dreadlock","dreamboat","dreamily","dreamland","dreamless","dreamlike","dreamt","dreamy","drearily","dreary","drench","dress","drew","dribble","dried","drier","drift","driller","drilling","drinkable","drinking","dripping","drippy","drivable","driven","driver","driveway","driving","drizzle","drizzly","drone","drool","droop","drop-down","dropbox","dropkick","droplet","dropout","dropper","drove","drown","drowsily","drudge","drum","dry","dubbed","dubiously","duchess","duckbill","ducking","duckling","ducktail","ducky","duct","dude","duffel","dugout","duh","duke","duller","dullness","duly","dumping","dumpling","dumpster","duo","dupe","duplex","duplicate","duplicity","durable","durably","duration","duress","during","dusk","dust","dutiful","duty","duvet","dwarf","dweeb","dwelled","dweller","dwelling","dwindle","dwindling","dynamic","dynamite","dynasty","dyslexia","dyslexic","each","eagle","earache","eardrum","earflap","earful","earlobe","early","earmark","earmuff","earphone","earpiece","earplugs","earring","earshot","earthen","earthlike","earthling","earthly","earthworm","earthy","earwig","easeful","easel","easiest","easily","easiness","easing","eastbound","eastcoast","easter","eastward","eatable","eaten","eatery","eating","eats","ebay","ebony","ebook","ecard","eccentric","echo","eclair","eclipse","ecologist","ecology","economic","economist","economy","ecosphere","ecosystem","edge","edginess","edging","edgy","edition","editor","educated","education","educator","eel","effective","effects","efficient","effort","eggbeater","egging","eggnog","eggplant","eggshell","egomaniac","egotism","egotistic","either","eject","elaborate","elastic","elated","elbow","eldercare","elderly","eldest","electable","election","elective","elephant","elevate","elevating","elevation","elevator","eleven","elf","eligible","eligibly","eliminate","elite","elitism","elixir","elk","ellipse","elliptic","elm","elongated","elope","eloquence","eloquent","elsewhere","elude","elusive","elves","email","embargo","embark","embassy","embattled","embellish","ember","embezzle","emblaze","emblem","embody","embolism","emboss","embroider","emcee","emerald","emergency","emission","emit","emote","emoticon","emotion","empathic","empathy","emperor","emphases","emphasis","emphasize","emphatic","empirical","employed","employee","employer","emporium","empower","emptier","emptiness","empty","emu","enable","enactment","enamel","enchanted","enchilada","encircle","enclose","enclosure","encode","encore","encounter","encourage","encroach","encrust","encrypt","endanger","endeared","endearing","ended","ending","endless","endnote","endocrine","endorphin","endorse","endowment","endpoint","endurable","endurance","enduring","energetic","energize","energy","enforced","enforcer","engaged","engaging","engine","engorge","engraved","engraver","engraving","engross","engulf","enhance","enigmatic","enjoyable","enjoyably","enjoyer","enjoying","enjoyment","enlarged","enlarging","enlighten","enlisted","enquirer","enrage","enrich","enroll","enslave","ensnare","ensure","entail","entangled","entering","entertain","enticing","entire","entitle","entity","entomb","entourage","entrap","entree","entrench","entrust","entryway","entwine","enunciate","envelope","enviable","enviably","envious","envision","envoy","envy","enzyme","epic","epidemic","epidermal","epidermis","epidural","epilepsy","epileptic","epilogue","epiphany","episode","equal","equate","equation","equator","equinox","equipment","equity","equivocal","eradicate","erasable","erased","eraser","erasure","ergonomic","errand","errant","erratic","error","erupt","escalate","escalator","escapable","escapade","escapist","escargot","eskimo","esophagus","espionage","espresso","esquire","essay","essence","essential","establish","estate","esteemed","estimate","estimator","estranged","estrogen","etching","eternal","eternity","ethanol","ether","ethically","ethics","euphemism","evacuate","evacuee","evade","evaluate","evaluator","evaporate","evasion","evasive","even","everglade","evergreen","everybody","everyday","everyone","evict","evidence","evident","evil","evoke","evolution","evolve","exact","exalted","example","excavate","excavator","exceeding","exception","excess","exchange","excitable","exciting","exclaim","exclude","excluding","exclusion","exclusive","excretion","excretory","excursion","excusable","excusably","excuse","exemplary","exemplify","exemption","exerciser","exert","exes","exfoliate","exhale","exhaust","exhume","exile","existing","exit","exodus","exonerate","exorcism","exorcist","expand","expanse","expansion","expansive","expectant","expedited","expediter","expel","expend","expenses","expensive","expert","expire","expiring","explain","expletive","explicit","explode","exploit","explore","exploring","exponent","exporter","exposable","expose","exposure","express","expulsion","exquisite","extended","extending","extent","extenuate","exterior","external","extinct","extortion","extradite","extras","extrovert","extrude","extruding","exuberant","fable","fabric","fabulous","facebook","facecloth","facedown","faceless","facelift","faceplate","faceted","facial","facility","facing","facsimile","faction","factoid","factor","factsheet","factual","faculty","fade","fading","failing","falcon","fall","false","falsify","fame","familiar","family","famine","famished","fanatic","fancied","fanciness","fancy","fanfare","fang","fanning","fantasize","fantastic","fantasy","fascism","fastball","faster","fasting","fastness","faucet","favorable","favorably","favored","favoring","favorite","fax","feast","federal","fedora","feeble","feed","feel","feisty","feline","felt-tip","feminine","feminism","feminist","feminize","femur","fence","fencing","fender","ferment","fernlike","ferocious","ferocity","ferret","ferris","ferry","fervor","fester","festival","festive","festivity","fetal","fetch","fever","fiber","fiction","fiddle","fiddling","fidelity","fidgeting","fidgety","fifteen","fifth","fiftieth","fifty","figment","figure","figurine","filing","filled","filler","filling","film","filter","filth","filtrate","finale","finalist","finalize","finally","finance","financial","finch","fineness","finer","finicky","finished","finisher","finishing","finite","finless","finlike","fiscally","fit","five","flaccid","flagman","flagpole","flagship","flagstick","flagstone","flail","flakily","flaky","flame","flammable","flanked","flanking","flannels","flap","flaring","flashback","flashbulb","flashcard","flashily","flashing","flashy","flask","flatbed","flatfoot","flatly","flatness","flatten","flattered","flatterer","flattery","flattop","flatware","flatworm","flavored","flavorful","flavoring","flaxseed","fled","fleshed","fleshy","flick","flier","flight","flinch","fling","flint","flip","flirt","float","flock","flogging","flop","floral","florist","floss","flounder","flyable","flyaway","flyer","flying","flyover","flypaper","foam","foe","fog","foil","folic","folk","follicle","follow","fondling","fondly","fondness","fondue","font","food","fool","footage","football","footbath","footboard","footer","footgear","foothill","foothold","footing","footless","footman","footnote","footpad","footpath","footprint","footrest","footsie","footsore","footwear","footwork","fossil","foster","founder","founding","fountain","fox","foyer","fraction","fracture","fragile","fragility","fragment","fragrance","fragrant","frail","frame","framing","frantic","fraternal","frayed","fraying","frays","freckled","freckles","freebase","freebee","freebie","freedom","freefall","freehand","freeing","freeload","freely","freemason","freeness","freestyle","freeware","freeway","freewill","freezable","freezing","freight","french","frenzied","frenzy","frequency","frequent","fresh","fretful","fretted","friction","friday","fridge","fried","friend","frighten","frightful","frigidity","frigidly","frill","fringe","frisbee","frisk","fritter","frivolous","frolic","from","front","frostbite","frosted","frostily","frosting","frostlike","frosty","froth","frown","frozen","fructose","frugality","frugally","fruit","frustrate","frying","gab","gaffe","gag","gainfully","gaining","gains","gala","gallantly","galleria","gallery","galley","gallon","gallows","gallstone","galore","galvanize","gambling","game","gaming","gamma","gander","gangly","gangrene","gangway","gap","garage","garbage","garden","gargle","garland","garlic","garment","garnet","garnish","garter","gas","gatherer","gathering","gating","gauging","gauntlet","gauze","gave","gawk","gazing","gear","gecko","geek","geiger","gem","gender","generic","generous","genetics","genre","gentile","gentleman","gently","gents","geography","geologic","geologist","geology","geometric","geometry","geranium","gerbil","geriatric","germicide","germinate","germless","germproof","gestate","gestation","gesture","getaway","getting","getup","giant","gibberish","giblet","giddily","giddiness","giddy","gift","gigabyte","gigahertz","gigantic","giggle","giggling","giggly","gigolo","gilled","gills","gimmick","girdle","giveaway","given","giver","giving","gizmo","gizzard","glacial","glacier","glade","gladiator","gladly","glamorous","glamour","glance","glancing","glandular","glare","glaring","glass","glaucoma","glazing","gleaming","gleeful","glider","gliding","glimmer","glimpse","glisten","glitch","glitter","glitzy","gloater","gloating","gloomily","gloomy","glorified","glorifier","glorify","glorious","glory","gloss","glove","glowing","glowworm","glucose","glue","gluten","glutinous","glutton","gnarly","gnat","goal","goatskin","goes","goggles","going","goldfish","goldmine","goldsmith","golf","goliath","gonad","gondola","gone","gong","good","gooey","goofball","goofiness","goofy","google","goon","gopher","gore","gorged","gorgeous","gory","gosling","gossip","gothic","gotten","gout","gown","grab","graceful","graceless","gracious","gradation","graded","grader","gradient","grading","gradually","graduate","graffiti","grafted","grafting","grain","granddad","grandkid","grandly","grandma","grandpa","grandson","granite","granny","granola","grant","granular","grape","graph","grapple","grappling","grasp","grass","gratified","gratify","grating","gratitude","gratuity","gravel","graveness","graves","graveyard","gravitate","gravity","gravy","gray","grazing","greasily","greedily","greedless","greedy","green","greeter","greeting","grew","greyhound","grid","grief","grievance","grieving","grievous","grill","grimace","grimacing","grime","griminess","grimy","grinch","grinning","grip","gristle","grit","groggily","groggy","groin","groom","groove","grooving","groovy","grope","ground","grouped","grout","grove","grower","growing","growl","grub","grudge","grudging","grueling","gruffly","grumble","grumbling","grumbly","grumpily","grunge","grunt","guacamole","guidable","guidance","guide","guiding","guileless","guise","gulf","gullible","gully","gulp","gumball","gumdrop","gumminess","gumming","gummy","gurgle","gurgling","guru","gush","gusto","gusty","gutless","guts","gutter","guy","guzzler","gyration","habitable","habitant","habitat","habitual","hacked","hacker","hacking","hacksaw","had","haggler","haiku","half","halogen","halt","halved","halves","hamburger","hamlet","hammock","hamper","hamster","hamstring","handbag","handball","handbook","handbrake","handcart","handclap","handclasp","handcraft","handcuff","handed","handful","handgrip","handgun","handheld","handiness","handiwork","handlebar","handled","handler","handling","handmade","handoff","handpick","handprint","handrail","handsaw","handset","handsfree","handshake","handstand","handwash","handwork","handwoven","handwrite","handyman","hangnail","hangout","hangover","hangup","hankering","hankie","hanky","haphazard","happening","happier","happiest","happily","happiness","happy","harbor","hardcopy","hardcore","hardcover","harddisk","hardened","hardener","hardening","hardhat","hardhead","hardiness","hardly","hardness","hardship","hardware","hardwired","hardwood","hardy","harmful","harmless","harmonica","harmonics","harmonize","harmony","harness","harpist","harsh","harvest","hash","hassle","haste","hastily","hastiness","hasty","hatbox","hatchback","hatchery","hatchet","hatching","hatchling","hate","hatless","hatred","haunt","haven","hazard","hazelnut","hazily","haziness","hazing","hazy","headache","headband","headboard","headcount","headdress","headed","header","headfirst","headgear","heading","headlamp","headless","headlock","headphone","headpiece","headrest","headroom","headscarf","headset","headsman","headstand","headstone","headway","headwear","heap","heat","heave","heavily","heaviness","heaving","hedge","hedging","heftiness","hefty","helium","helmet","helper","helpful","helping","helpless","helpline","hemlock","hemstitch","hence","henchman","henna","herald","herbal","herbicide","herbs","heritage","hermit","heroics","heroism","herring","herself","hertz","hesitancy","hesitant","hesitate","hexagon","hexagram","hubcap","huddle","huddling","huff","hug","hula","hulk","hull","human","humble","humbling","humbly","humid","humiliate","humility","humming","hummus","humongous","humorist","humorless","humorous","humpback","humped","humvee","hunchback","hundredth","hunger","hungrily","hungry","hunk","hunter","hunting","huntress","huntsman","hurdle","hurled","hurler","hurling","hurray","hurricane","hurried","hurry","hurt","husband","hush","husked","huskiness","hut","hybrid","hydrant","hydrated","hydration","hydrogen","hydroxide","hyperlink","hypertext","hyphen","hypnoses","hypnosis","hypnotic","hypnotism","hypnotist","hypnotize","hypocrisy","hypocrite","ibuprofen","ice","iciness","icing","icky","icon","icy","idealism","idealist","idealize","ideally","idealness","identical","identify","identity","ideology","idiocy","idiom","idly","igloo","ignition","ignore","iguana","illicitly","illusion","illusive","image","imaginary","imagines","imaging","imbecile","imitate","imitation","immature","immerse","immersion","imminent","immobile","immodest","immorally","immortal","immovable","immovably","immunity","immunize","impaired","impale","impart","impatient","impeach","impeding","impending","imperfect","imperial","impish","implant","implement","implicate","implicit","implode","implosion","implosive","imply","impolite","important","importer","impose","imposing","impotence","impotency","impotent","impound","imprecise","imprint","imprison","impromptu","improper","improve","improving","improvise","imprudent","impulse","impulsive","impure","impurity","iodine","iodize","ion","ipad","iphone","ipod","irate","irk","iron","irregular","irrigate","irritable","irritably","irritant","irritate","islamic","islamist","isolated","isolating","isolation","isotope","issue","issuing","italicize","italics","item","itinerary","itunes","ivory","ivy","jab","jackal","jacket","jackknife","jackpot","jailbird","jailbreak","jailer","jailhouse","jalapeno","jam","janitor","january","jargon","jarring","jasmine","jaundice","jaunt","java","jawed","jawless","jawline","jaws","jaybird","jaywalker","jazz","jeep","jeeringly","jellied","jelly","jersey","jester","jet","jiffy","jigsaw","jimmy","jingle","jingling","jinx","jitters","jittery","job","jockey","jockstrap","jogger","jogging","john","joining","jokester","jokingly","jolliness","jolly","jolt","jot","jovial","joyfully","joylessly","joyous","joyride","joystick","jubilance","jubilant","judge","judgingly","judicial","judiciary","judo","juggle","juggling","jugular","juice","juiciness","juicy","jujitsu","jukebox","july","jumble","jumbo","jump","junction","juncture","june","junior","juniper","junkie","junkman","junkyard","jurist","juror","jury","justice","justifier","justify","justly","justness","juvenile","kabob","kangaroo","karaoke","karate","karma","kebab","keenly","keenness","keep","keg","kelp","kennel","kept","kerchief","kerosene","kettle","kick","kiln","kilobyte","kilogram","kilometer","kilowatt","kilt","kimono","kindle","kindling","kindly","kindness","kindred","kinetic","kinfolk","king","kinship","kinsman","kinswoman","kissable","kisser","kissing","kitchen","kite","kitten","kitty","kiwi","kleenex","knapsack","knee","knelt","knickers","knoll","koala","kooky","kosher","krypton","kudos","kung","labored","laborer","laboring","laborious","labrador","ladder","ladies","ladle","ladybug","ladylike","lagged","lagging","lagoon","lair","lake","lance","landed","landfall","landfill","landing","landlady","landless","landline","landlord","landmark","landmass","landmine","landowner","landscape","landside","landslide","language","lankiness","lanky","lantern","lapdog","lapel","lapped","lapping","laptop","lard","large","lark","lash","lasso","last","latch","late","lather","latitude","latrine","latter","latticed","launch","launder","laundry","laurel","lavender","lavish","laxative","lazily","laziness","lazy","lecturer","left","legacy","legal","legend","legged","leggings","legible","legibly","legislate","lego","legroom","legume","legwarmer","legwork","lemon","lend","length","lens","lent","leotard","lesser","letdown","lethargic","lethargy","letter","lettuce","level","leverage","levers","levitate","levitator","liability","liable","liberty","librarian","library","licking","licorice","lid","life","lifter","lifting","liftoff","ligament","likely","likeness","likewise","liking","lilac","lilly","lily","limb","limeade","limelight","limes","limit","limping","limpness","line","lingo","linguini","linguist","lining","linked","linoleum","linseed","lint","lion","lip","liquefy","liqueur","liquid","lisp","list","litigate","litigator","litmus","litter","little","livable","lived","lively","liver","livestock","lividly","living","lizard","lubricant","lubricate","lucid","luckily","luckiness","luckless","lucrative","ludicrous","lugged","lukewarm","lullaby","lumber","luminance","luminous","lumpiness","lumping","lumpish","lunacy","lunar","lunchbox","luncheon","lunchroom","lunchtime","lung","lurch","lure","luridness","lurk","lushly","lushness","luster","lustfully","lustily","lustiness","lustrous","lusty","luxurious","luxury","lying","lyrically","lyricism","lyricist","lyrics","macarena","macaroni","macaw","mace","machine","machinist","magazine","magenta","maggot","magical","magician","magma","magnesium","magnetic","magnetism","magnetize","magnifier","magnify","magnitude","magnolia","mahogany","maimed","majestic","majesty","majorette","majority","makeover","maker","makeshift","making","malformed","malt","mama","mammal","mammary","mammogram","manager","managing","manatee","mandarin","mandate","mandatory","mandolin","manger","mangle","mango","mangy","manhandle","manhole","manhood","manhunt","manicotti","manicure","manifesto","manila","mankind","manlike","manliness","manly","manmade","manned","mannish","manor","manpower","mantis","mantra","manual","many","map","marathon","marauding","marbled","marbles","marbling","march","mardi","margarine","margarita","margin","marigold","marina","marine","marital","maritime","marlin","marmalade","maroon","married","marrow","marry","marshland","marshy","marsupial","marvelous","marxism","mascot","masculine","mashed","mashing","massager","masses","massive","mastiff","matador","matchbook","matchbox","matcher","matching","matchless","material","maternal","maternity","math","mating","matriarch","matrimony","matrix","matron","matted","matter","maturely","maturing","maturity","mauve","maverick","maximize","maximum","maybe","mayday","mayflower","moaner","moaning","mobile","mobility","mobilize","mobster","mocha","mocker","mockup","modified","modify","modular","modulator","module","moisten","moistness","moisture","molar","molasses","mold","molecular","molecule","molehill","mollusk","mom","monastery","monday","monetary","monetize","moneybags","moneyless","moneywise","mongoose","mongrel","monitor","monkhood","monogamy","monogram","monologue","monopoly","monorail","monotone","monotype","monoxide","monsieur","monsoon","monstrous","monthly","monument","moocher","moodiness","moody","mooing","moonbeam","mooned","moonlight","moonlike","moonlit","moonrise","moonscape","moonshine","moonstone","moonwalk","mop","morale","morality","morally","morbidity","morbidly","morphine","morphing","morse","mortality","mortally","mortician","mortified","mortify","mortuary","mosaic","mossy","most","mothball","mothproof","motion","motivate","motivator","motive","motocross","motor","motto","mountable","mountain","mounted","mounting","mourner","mournful","mouse","mousiness","moustache","mousy","mouth","movable","move","movie","moving","mower","mowing","much","muck","mud","mug","mulberry","mulch","mule","mulled","mullets","multiple","multiply","multitask","multitude","mumble","mumbling","mumbo","mummified","mummify","mummy","mumps","munchkin","mundane","municipal","muppet","mural","murkiness","murky","murmuring","muscular","museum","mushily","mushiness","mushroom","mushy","music","musket","muskiness","musky","mustang","mustard","muster","mustiness","musty","mutable","mutate","mutation","mute","mutilated","mutilator","mutiny","mutt","mutual","muzzle","myself","myspace","mystified","mystify","myth","nacho","nag","nail","name","naming","nanny","nanometer","nape","napkin","napped","napping","nappy","narrow","nastily","nastiness","national","native","nativity","natural","nature","naturist","nautical","navigate","navigator","navy","nearby","nearest","nearly","nearness","neatly","neatness","nebula","nebulizer","nectar","negate","negation","negative","neglector","negligee","negligent","negotiate","nemeses","nemesis","neon","nephew","nerd","nervous","nervy","nest","net","neurology","neuron","neurosis","neurotic","neuter","neutron","never","next","nibble","nickname","nicotine","niece","nifty","nimble","nimbly","nineteen","ninetieth","ninja","nintendo","ninth","nuclear","nuclei","nucleus","nugget","nullify","number","numbing","numbly","numbness","numeral","numerate","numerator","numeric","numerous","nuptials","nursery","nursing","nurture","nutcase","nutlike","nutmeg","nutrient","nutshell","nuttiness","nutty","nuzzle","nylon","oaf","oak","oasis","oat","obedience","obedient","obituary","object","obligate","obliged","oblivion","oblivious","oblong","obnoxious","oboe","obscure","obscurity","observant","observer","observing","obsessed","obsession","obsessive","obsolete","obstacle","obstinate","obstruct","obtain","obtrusive","obtuse","obvious","occultist","occupancy","occupant","occupier","occupy","ocean","ocelot","octagon","octane","october","octopus","ogle","oil","oink","ointment","okay","old","olive","olympics","omega","omen","ominous","omission","omit","omnivore","onboard","oncoming","ongoing","onion","online","onlooker","only","onscreen","onset","onshore","onslaught","onstage","onto","onward","onyx","oops","ooze","oozy","opacity","opal","open","operable","operate","operating","operation","operative","operator","opium","opossum","opponent","oppose","opposing","opposite","oppressed","oppressor","opt","opulently","osmosis","other","otter","ouch","ought","ounce","outage","outback","outbid","outboard","outbound","outbreak","outburst","outcast","outclass","outcome","outdated","outdoors","outer","outfield","outfit","outflank","outgoing","outgrow","outhouse","outing","outlast","outlet","outline","outlook","outlying","outmatch","outmost","outnumber","outplayed","outpost","outpour","output","outrage","outrank","outreach","outright","outscore","outsell","outshine","outshoot","outsider","outskirts","outsmart","outsource","outspoken","outtakes","outthink","outward","outweigh","outwit","oval","ovary","oven","overact","overall","overarch","overbid","overbill","overbite","overblown","overboard","overbook","overbuilt","overcast","overcoat","overcome","overcook","overcrowd","overdraft","overdrawn","overdress","overdrive","overdue","overeager","overeater","overexert","overfed","overfeed","overfill","overflow","overfull","overgrown","overhand","overhang","overhaul","overhead","overhear","overheat","overhung","overjoyed","overkill","overlabor","overlaid","overlap","overlay","overload","overlook","overlord","overlying","overnight","overpass","overpay","overplant","overplay","overpower","overprice","overrate","overreach","overreact","override","overripe","overrule","overrun","overshoot","overshot","oversight","oversized","oversleep","oversold","overspend","overstate","overstay","overstep","overstock","overstuff","oversweet","overtake","overthrow","overtime","overtly","overtone","overture","overturn","overuse","overvalue","overview","overwrite","owl","oxford","oxidant","oxidation","oxidize","oxidizing","oxygen","oxymoron","oyster","ozone","paced","pacemaker","pacific","pacifier","pacifism","pacifist","pacify","padded","padding","paddle","paddling","padlock","pagan","pager","paging","pajamas","palace","palatable","palm","palpable","palpitate","paltry","pampered","pamperer","pampers","pamphlet","panama","pancake","pancreas","panda","pandemic","pang","panhandle","panic","panning","panorama","panoramic","panther","pantomime","pantry","pants","pantyhose","paparazzi","papaya","paper","paprika","papyrus","parabola","parachute","parade","paradox","paragraph","parakeet","paralegal","paralyses","paralysis","paralyze","paramedic","parameter","paramount","parasail","parasite","parasitic","parcel","parched","parchment","pardon","parish","parka","parking","parkway","parlor","parmesan","parole","parrot","parsley","parsnip","partake","parted","parting","partition","partly","partner","partridge","party","passable","passably","passage","passcode","passenger","passerby","passing","passion","passive","passivism","passover","passport","password","pasta","pasted","pastel","pastime","pastor","pastrami","pasture","pasty","patchwork","patchy","paternal","paternity","path","patience","patient","patio","patriarch","patriot","patrol","patronage","patronize","pauper","pavement","paver","pavestone","pavilion","paving","pawing","payable","payback","paycheck","payday","payee","payer","paying","payment","payphone","payroll","pebble","pebbly","pecan","pectin","peculiar","peddling","pediatric","pedicure","pedigree","pedometer","pegboard","pelican","pellet","pelt","pelvis","penalize","penalty","pencil","pendant","pending","penholder","penknife","pennant","penniless","penny","penpal","pension","pentagon","pentagram","pep","perceive","percent","perch","percolate","perennial","perfected","perfectly","perfume","periscope","perish","perjurer","perjury","perkiness","perky","perm","peroxide","perpetual","perplexed","persecute","persevere","persuaded","persuader","pesky","peso","pessimism","pessimist","pester","pesticide","petal","petite","petition","petri","petroleum","petted","petticoat","pettiness","petty","petunia","phantom","phobia","phoenix","phonebook","phoney","phonics","phoniness","phony","phosphate","photo","phrase","phrasing","placard","placate","placidly","plank","planner","plant","plasma","plaster","plastic","plated","platform","plating","platinum","platonic","platter","platypus","plausible","plausibly","playable","playback","player","playful","playgroup","playhouse","playing","playlist","playmaker","playmate","playoff","playpen","playroom","playset","plaything","playtime","plaza","pleading","pleat","pledge","plentiful","plenty","plethora","plexiglas","pliable","plod","plop","plot","plow","ploy","pluck","plug","plunder","plunging","plural","plus","plutonium","plywood","poach","pod","poem","poet","pogo","pointed","pointer","pointing","pointless","pointy","poise","poison","poker","poking","polar","police","policy","polio","polish","politely","polka","polo","polyester","polygon","polygraph","polymer","poncho","pond","pony","popcorn","pope","poplar","popper","poppy","popsicle","populace","popular","populate","porcupine","pork","porous","porridge","portable","portal","portfolio","porthole","portion","portly","portside","poser","posh","posing","possible","possibly","possum","postage","postal","postbox","postcard","posted","poster","posting","postnasal","posture","postwar","pouch","pounce","pouncing","pound","pouring","pout","powdered","powdering","powdery","power","powwow","pox","praising","prance","prancing","pranker","prankish","prankster","prayer","praying","preacher","preaching","preachy","preamble","precinct","precise","precision","precook","precut","predator","predefine","predict","preface","prefix","preflight","preformed","pregame","pregnancy","pregnant","preheated","prelaunch","prelaw","prelude","premiere","premises","premium","prenatal","preoccupy","preorder","prepaid","prepay","preplan","preppy","preschool","prescribe","preseason","preset","preshow","president","presoak","press","presume","presuming","preteen","pretended","pretender","pretense","pretext","pretty","pretzel","prevail","prevalent","prevent","preview","previous","prewar","prewashed","prideful","pried","primal","primarily","primary","primate","primer","primp","princess","print","prior","prism","prison","prissy","pristine","privacy","private","privatize","prize","proactive","probable","probably","probation","probe","probing","probiotic","problem","procedure","process","proclaim","procreate","procurer","prodigal","prodigy","produce","product","profane","profanity","professed","professor","profile","profound","profusely","progeny","prognosis","program","progress","projector","prologue","prolonged","promenade","prominent","promoter","promotion","prompter","promptly","prone","prong","pronounce","pronto","proofing","proofread","proofs","propeller","properly","property","proponent","proposal","propose","props","prorate","protector","protegee","proton","prototype","protozoan","protract","protrude","proud","provable","proved","proven","provided","provider","providing","province","proving","provoke","provoking","provolone","prowess","prowler","prowling","proximity","proxy","prozac","prude","prudishly","prune","pruning","pry","psychic","public","publisher","pucker","pueblo","pug","pull","pulmonary","pulp","pulsate","pulse","pulverize","puma","pumice","pummel","punch","punctual","punctuate","punctured","pungent","punisher","punk","pupil","puppet","puppy","purchase","pureblood","purebred","purely","pureness","purgatory","purge","purging","purifier","purify","purist","puritan","purity","purple","purplish","purposely","purr","purse","pursuable","pursuant","pursuit","purveyor","pushcart","pushchair","pusher","pushiness","pushing","pushover","pushpin","pushup","pushy","putdown","putt","puzzle","puzzling","pyramid","pyromania","python","quack","quadrant","quail","quaintly","quake","quaking","qualified","qualifier","qualify","quality","qualm","quantum","quarrel","quarry","quartered","quarterly","quarters","quartet","quench","query","quicken","quickly","quickness","quicksand","quickstep","quiet","quill","quilt","quintet","quintuple","quirk","quit","quiver","quizzical","quotable","quotation","quote","rabid","race","racing","racism","rack","racoon","radar","radial","radiance","radiantly","radiated","radiation","radiator","radio","radish","raffle","raft","rage","ragged","raging","ragweed","raider","railcar","railing","railroad","railway","raisin","rake","raking","rally","ramble","rambling","ramp","ramrod","ranch","rancidity","random","ranged","ranger","ranging","ranked","ranking","ransack","ranting","rants","rare","rarity","rascal","rash","rasping","ravage","raven","ravine","raving","ravioli","ravishing","reabsorb","reach","reacquire","reaction","reactive","reactor","reaffirm","ream","reanalyze","reappear","reapply","reappoint","reapprove","rearrange","rearview","reason","reassign","reassure","reattach","reawake","rebalance","rebate","rebel","rebirth","reboot","reborn","rebound","rebuff","rebuild","rebuilt","reburial","rebuttal","recall","recant","recapture","recast","recede","recent","recess","recharger","recipient","recital","recite","reckless","reclaim","recliner","reclining","recluse","reclusive","recognize","recoil","recollect","recolor","reconcile","reconfirm","reconvene","recopy","record","recount","recoup","recovery","recreate","rectal","rectangle","rectified","rectify","recycled","recycler","recycling","reemerge","reenact","reenter","reentry","reexamine","referable","referee","reference","refill","refinance","refined","refinery","refining","refinish","reflected","reflector","reflex","reflux","refocus","refold","reforest","reformat","reformed","reformer","reformist","refract","refrain","refreeze","refresh","refried","refueling","refund","refurbish","refurnish","refusal","refuse","refusing","refutable","refute","regain","regalia","regally","reggae","regime","region","register","registrar","registry","regress","regretful","regroup","regular","regulate","regulator","rehab","reheat","rehire","rehydrate","reimburse","reissue","reiterate","rejoice","rejoicing","rejoin","rekindle","relapse","relapsing","relatable","related","relation","relative","relax","relay","relearn","release","relenting","reliable","reliably","reliance","reliant","relic","relieve","relieving","relight","relish","relive","reload","relocate","relock","reluctant","rely","remake","remark","remarry","rematch","remedial","remedy","remember","reminder","remindful","remission","remix","remnant","remodeler","remold","remorse","remote","removable","removal","removed","remover","removing","rename","renderer","rendering","rendition","renegade","renewable","renewably","renewal","renewed","renounce","renovate","renovator","rentable","rental","rented","renter","reoccupy","reoccur","reopen","reorder","repackage","repacking","repaint","repair","repave","repaying","repayment","repeal","repeated","repeater","repent","rephrase","replace","replay","replica","reply","reporter","repose","repossess","repost","repressed","reprimand","reprint","reprise","reproach","reprocess","reproduce","reprogram","reps","reptile","reptilian","repugnant","repulsion","repulsive","repurpose","reputable","reputably","request","require","requisite","reroute","rerun","resale","resample","rescuer","reseal","research","reselect","reseller","resemble","resend","resent","reset","reshape","reshoot","reshuffle","residence","residency","resident","residual","residue","resigned","resilient","resistant","resisting","resize","resolute","resolved","resonant","resonate","resort","resource","respect","resubmit","result","resume","resupply","resurface","resurrect","retail","retainer","retaining","retake","retaliate","retention","rethink","retinal","retired","retiree","retiring","retold","retool","retorted","retouch","retrace","retract","retrain","retread","retreat","retrial","retrieval","retriever","retry","return","retying","retype","reunion","reunite","reusable","reuse","reveal","reveler","revenge","revenue","reverb","revered","reverence","reverend","reversal","reverse","reversing","reversion","revert","revisable","revise","revision","revisit","revivable","revival","reviver","reviving","revocable","revoke","revolt","revolver","revolving","reward","rewash","rewind","rewire","reword","rework","rewrap","rewrite","rhyme","ribbon","ribcage","rice","riches","richly","richness","rickety","ricotta","riddance","ridden","ride","riding","rifling","rift","rigging","rigid","rigor","rimless","rimmed","rind","rink","rinse","rinsing","riot","ripcord","ripeness","ripening","ripping","ripple","rippling","riptide","rise","rising","risk","risotto","ritalin","ritzy","rival","riverbank","riverbed","riverboat","riverside","riveter","riveting","roamer","roaming","roast","robbing","robe","robin","robotics","robust","rockband","rocker","rocket","rockfish","rockiness","rocking","rocklike","rockslide","rockstar","rocky","rogue","roman","romp","rope","roping","roster","rosy","rotten","rotting","rotunda","roulette","rounding","roundish","roundness","roundup","roundworm","routine","routing","rover","roving","royal","rubbed","rubber","rubbing","rubble","rubdown","ruby","ruckus","rudder","rug","ruined","rule","rumble","rumbling","rummage","rumor","runaround","rundown","runner","running","runny","runt","runway","rupture","rural","ruse","rush","rust","rut","sabbath","sabotage","sacrament","sacred","sacrifice","sadden","saddlebag","saddled","saddling","sadly","sadness","safari","safeguard","safehouse","safely","safeness","saffron","saga","sage","sagging","saggy","said","saint","sake","salad","salami","salaried","salary","saline","salon","saloon","salsa","salt","salutary","salute","salvage","salvaging","salvation","same","sample","sampling","sanction","sanctity","sanctuary","sandal","sandbag","sandbank","sandbar","sandblast","sandbox","sanded","sandfish","sanding","sandlot","sandpaper","sandpit","sandstone","sandstorm","sandworm","sandy","sanitary","sanitizer","sank","santa","sapling","sappiness","sappy","sarcasm","sarcastic","sardine","sash","sasquatch","sassy","satchel","satiable","satin","satirical","satisfied","satisfy","saturate","saturday","sauciness","saucy","sauna","savage","savanna","saved","savings","savior","savor","saxophone","say","scabbed","scabby","scalded","scalding","scale","scaling","scallion","scallop","scalping","scam","scandal","scanner","scanning","scant","scapegoat","scarce","scarcity","scarecrow","scared","scarf","scarily","scariness","scarring","scary","scavenger","scenic","schedule","schematic","scheme","scheming","schilling","schnapps","scholar","science","scientist","scion","scoff","scolding","scone","scoop","scooter","scope","scorch","scorebook","scorecard","scored","scoreless","scorer","scoring","scorn","scorpion","scotch","scoundrel","scoured","scouring","scouting","scouts","scowling","scrabble","scraggly","scrambled","scrambler","scrap","scratch","scrawny","screen","scribble","scribe","scribing","scrimmage","script","scroll","scrooge","scrounger","scrubbed","scrubber","scruffy","scrunch","scrutiny","scuba","scuff","sculptor","sculpture","scurvy","scuttle","secluded","secluding","seclusion","second","secrecy","secret","sectional","sector","secular","securely","security","sedan","sedate","sedation","sedative","sediment","seduce","seducing","segment","seismic","seizing","seldom","selected","selection","selective","selector","self","seltzer","semantic","semester","semicolon","semifinal","seminar","semisoft","semisweet","senate","senator","send","senior","senorita","sensation","sensitive","sensitize","sensually","sensuous","sepia","september","septic","septum","sequel","sequence","sequester","series","sermon","serotonin","serpent","serrated","serve","service","serving","sesame","sessions","setback","setting","settle","settling","setup","sevenfold","seventeen","seventh","seventy","severity","shabby","shack","shaded","shadily","shadiness","shading","shadow","shady","shaft","shakable","shakily","shakiness","shaking","shaky","shale","shallot","shallow","shame","shampoo","shamrock","shank","shanty","shape","shaping","share","sharpener","sharper","sharpie","sharply","sharpness","shawl","sheath","shed","sheep","sheet","shelf","shell","shelter","shelve","shelving","sherry","shield","shifter","shifting","shiftless","shifty","shimmer","shimmy","shindig","shine","shingle","shininess","shining","shiny","ship","shirt","shivering","shock","shone","shoplift","shopper","shopping","shoptalk","shore","shortage","shortcake","shortcut","shorten","shorter","shorthand","shortlist","shortly","shortness","shorts","shortwave","shorty","shout","shove","showbiz","showcase","showdown","shower","showgirl","showing","showman","shown","showoff","showpiece","showplace","showroom","showy","shrank","shrapnel","shredder","shredding","shrewdly","shriek","shrill","shrimp","shrine","shrink","shrivel","shrouded","shrubbery","shrubs","shrug","shrunk","shucking","shudder","shuffle","shuffling","shun","shush","shut","shy","siamese","siberian","sibling","siding","sierra","siesta","sift","sighing","silenced","silencer","silent","silica","silicon","silk","silliness","silly","silo","silt","silver","similarly","simile","simmering","simple","simplify","simply","sincere","sincerity","singer","singing","single","singular","sinister","sinless","sinner","sinuous","sip","siren","sister","sitcom","sitter","sitting","situated","situation","sixfold","sixteen","sixth","sixties","sixtieth","sixtyfold","sizable","sizably","size","sizing","sizzle","sizzling","skater","skating","skedaddle","skeletal","skeleton","skeptic","sketch","skewed","skewer","skid","skied","skier","skies","skiing","skilled","skillet","skillful","skimmed","skimmer","skimming","skimpily","skincare","skinhead","skinless","skinning","skinny","skintight","skipper","skipping","skirmish","skirt","skittle","skydiver","skylight","skyline","skype","skyrocket","skyward","slab","slacked","slacker","slacking","slackness","slacks","slain","slam","slander","slang","slapping","slapstick","slashed","slashing","slate","slather","slaw","sled","sleek","sleep","sleet","sleeve","slept","sliceable","sliced","slicer","slicing","slick","slider","slideshow","sliding","slighted","slighting","slightly","slimness","slimy","slinging","slingshot","slinky","slip","slit","sliver","slobbery","slogan","sloped","sloping","sloppily","sloppy","slot","slouching","slouchy","sludge","slug","slum","slurp","slush","sly","small","smartly","smartness","smasher","smashing","smashup","smell","smelting","smile","smilingly","smirk","smite","smith","smitten","smock","smog","smoked","smokeless","smokiness","smoking","smoky","smolder","smooth","smother","smudge","smudgy","smuggler","smuggling","smugly","smugness","snack","snagged","snaking","snap","snare","snarl","snazzy","sneak","sneer","sneeze","sneezing","snide","sniff","snippet","snipping","snitch","snooper","snooze","snore","snoring","snorkel","snort","snout","snowbird","snowboard","snowbound","snowcap","snowdrift","snowdrop","snowfall","snowfield","snowflake","snowiness","snowless","snowman","snowplow","snowshoe","snowstorm","snowsuit","snowy","snub","snuff","snuggle","snugly","snugness","speak","spearfish","spearhead","spearman","spearmint","species","specimen","specked","speckled","specks","spectacle","spectator","spectrum","speculate","speech","speed","spellbind","speller","spelling","spendable","spender","spending","spent","spew","sphere","spherical","sphinx","spider","spied","spiffy","spill","spilt","spinach","spinal","spindle","spinner","spinning","spinout","spinster","spiny","spiral","spirited","spiritism","spirits","spiritual","splashed","splashing","splashy","splatter","spleen","splendid","splendor","splice","splicing","splinter","splotchy","splurge","spoilage","spoiled","spoiler","spoiling","spoils","spoken","spokesman","sponge","spongy","sponsor","spoof","spookily","spooky","spool","spoon","spore","sporting","sports","sporty","spotless","spotlight","spotted","spotter","spotting","spotty","spousal","spouse","spout","sprain","sprang","sprawl","spray","spree","sprig","spring","sprinkled","sprinkler","sprint","sprite","sprout","spruce","sprung","spry","spud","spur","sputter","spyglass","squabble","squad","squall","squander","squash","squatted","squatter","squatting","squeak","squealer","squealing","squeamish","squeegee","squeeze","squeezing","squid","squiggle","squiggly","squint","squire","squirt","squishier","squishy","stability","stabilize","stable","stack","stadium","staff","stage","staging","stagnant","stagnate","stainable","stained","staining","stainless","stalemate","staleness","stalling","stallion","stamina","stammer","stamp","stand","stank","staple","stapling","starboard","starch","stardom","stardust","starfish","stargazer","staring","stark","starless","starlet","starlight","starlit","starring","starry","starship","starter","starting","startle","startling","startup","starved","starving","stash","state","static","statistic","statue","stature","status","statute","statutory","staunch","stays","steadfast","steadier","steadily","steadying","steam","steed","steep","steerable","steering","steersman","stegosaur","stellar","stem","stench","stencil","step","stereo","sterile","sterility","sterilize","sterling","sternness","sternum","stew","stick","stiffen","stiffly","stiffness","stifle","stifling","stillness","stilt","stimulant","stimulate","stimuli","stimulus","stinger","stingily","stinging","stingray","stingy","stinking","stinky","stipend","stipulate","stir","stitch","stock","stoic","stoke","stole","stomp","stonewall","stoneware","stonework","stoning","stony","stood","stooge","stool","stoop","stoplight","stoppable","stoppage","stopped","stopper","stopping","stopwatch","storable","storage","storeroom","storewide","storm","stout","stove","stowaway","stowing","straddle","straggler","strained","strainer","straining","strangely","stranger","strangle","strategic","strategy","stratus","straw","stray","streak","stream","street","strength","strenuous","strep","stress","stretch","strewn","stricken","strict","stride","strife","strike","striking","strive","striving","strobe","strode","stroller","strongbox","strongly","strongman","struck","structure","strudel","struggle","strum","strung","strut","stubbed","stubble","stubbly","stubborn","stucco","stuck","student","studied","studio","study","stuffed","stuffing","stuffy","stumble","stumbling","stump","stung","stunned","stunner","stunning","stunt","stupor","sturdily","sturdy","styling","stylishly","stylist","stylized","stylus","suave","subarctic","subatomic","subdivide","subdued","subduing","subfloor","subgroup","subheader","subject","sublease","sublet","sublevel","sublime","submarine","submerge","submersed","submitter","subpanel","subpar","subplot","subprime","subscribe","subscript","subsector","subside","subsiding","subsidize","subsidy","subsoil","subsonic","substance","subsystem","subtext","subtitle","subtly","subtotal","subtract","subtype","suburb","subway","subwoofer","subzero","succulent","such","suction","sudden","sudoku","suds","sufferer","suffering","suffice","suffix","suffocate","suffrage","sugar","suggest","suing","suitable","suitably","suitcase","suitor","sulfate","sulfide","sulfite","sulfur","sulk","sullen","sulphate","sulphuric","sultry","superbowl","superglue","superhero","superior","superjet","superman","supermom","supernova","supervise","supper","supplier","supply","support","supremacy","supreme","surcharge","surely","sureness","surface","surfacing","surfboard","surfer","surgery","surgical","surging","surname","surpass","surplus","surprise","surreal","surrender","surrogate","surround","survey","survival","survive","surviving","survivor","sushi","suspect","suspend","suspense","sustained","sustainer","swab","swaddling","swagger","swampland","swan","swapping","swarm","sway","swear","sweat","sweep","swell","swept","swerve","swifter","swiftly","swiftness","swimmable","swimmer","swimming","swimsuit","swimwear","swinger","swinging","swipe","swirl","switch","swivel","swizzle","swooned","swoop","swoosh","swore","sworn","swung","sycamore","sympathy","symphonic","symphony","symptom","synapse","syndrome","synergy","synopses","synopsis","synthesis","synthetic","syrup","system","t-shirt","tabasco","tabby","tableful","tables","tablet","tableware","tabloid","tackiness","tacking","tackle","tackling","tacky","taco","tactful","tactical","tactics","tactile","tactless","tadpole","taekwondo","tag","tainted","take","taking","talcum","talisman","tall","talon","tamale","tameness","tamer","tamper","tank","tanned","tannery","tanning","tantrum","tapeless","tapered","tapering","tapestry","tapioca","tapping","taps","tarantula","target","tarmac","tarnish","tarot","tartar","tartly","tartness","task","tassel","taste","tastiness","tasting","tasty","tattered","tattle","tattling","tattoo","taunt","tavern","thank","that","thaw","theater","theatrics","thee","theft","theme","theology","theorize","thermal","thermos","thesaurus","these","thesis","thespian","thicken","thicket","thickness","thieving","thievish","thigh","thimble","thing","think","thinly","thinner","thinness","thinning","thirstily","thirsting","thirsty","thirteen","thirty","thong","thorn","those","thousand","thrash","thread","threaten","threefold","thrift","thrill","thrive","thriving","throat","throbbing","throng","throttle","throwaway","throwback","thrower","throwing","thud","thumb","thumping","thursday","thus","thwarting","thyself","tiara","tibia","tidal","tidbit","tidiness","tidings","tidy","tiger","tighten","tightly","tightness","tightrope","tightwad","tigress","tile","tiling","till","tilt","timid","timing","timothy","tinderbox","tinfoil","tingle","tingling","tingly","tinker","tinkling","tinsel","tinsmith","tint","tinwork","tiny","tipoff","tipped","tipper","tipping","tiptoeing","tiptop","tiring","tissue","trace","tracing","track","traction","tractor","trade","trading","tradition","traffic","tragedy","trailing","trailside","train","traitor","trance","tranquil","transfer","transform","translate","transpire","transport","transpose","trapdoor","trapeze","trapezoid","trapped","trapper","trapping","traps","trash","travel","traverse","travesty","tray","treachery","treading","treadmill","treason","treat","treble","tree","trekker","tremble","trembling","tremor","trench","trend","trespass","triage","trial","triangle","tribesman","tribunal","tribune","tributary","tribute","triceps","trickery","trickily","tricking","trickle","trickster","tricky","tricolor","tricycle","trident","tried","trifle","trifocals","trillion","trilogy","trimester","trimmer","trimming","trimness","trinity","trio","tripod","tripping","triumph","trivial","trodden","trolling","trombone","trophy","tropical","tropics","trouble","troubling","trough","trousers","trout","trowel","truce","truck","truffle","trump","trunks","trustable","trustee","trustful","trusting","trustless","truth","try","tubby","tubeless","tubular","tucking","tuesday","tug","tuition","tulip","tumble","tumbling","tummy","turban","turbine","turbofan","turbojet","turbulent","turf","turkey","turmoil","turret","turtle","tusk","tutor","tutu","tux","tweak","tweed","tweet","tweezers","twelve","twentieth","twenty","twerp","twice","twiddle","twiddling","twig","twilight","twine","twins","twirl","twistable","twisted","twister","twisting","twisty","twitch","twitter","tycoon","tying","tyke","udder","ultimate","ultimatum","ultra","umbilical","umbrella","umpire","unabashed","unable","unadorned","unadvised","unafraid","unaired","unaligned","unaltered","unarmored","unashamed","unaudited","unawake","unaware","unbaked","unbalance","unbeaten","unbend","unbent","unbiased","unbitten","unblended","unblessed","unblock","unbolted","unbounded","unboxed","unbraided","unbridle","unbroken","unbuckled","unbundle","unburned","unbutton","uncanny","uncapped","uncaring","uncertain","unchain","unchanged","uncharted","uncheck","uncivil","unclad","unclaimed","unclamped","unclasp","uncle","unclip","uncloak","unclog","unclothed","uncoated","uncoiled","uncolored","uncombed","uncommon","uncooked","uncork","uncorrupt","uncounted","uncouple","uncouth","uncover","uncross","uncrown","uncrushed","uncured","uncurious","uncurled","uncut","undamaged","undated","undaunted","undead","undecided","undefined","underage","underarm","undercoat","undercook","undercut","underdog","underdone","underfed","underfeed","underfoot","undergo","undergrad","underhand","underline","underling","undermine","undermost","underpaid","underpass","underpay","underrate","undertake","undertone","undertook","undertow","underuse","underwear","underwent","underwire","undesired","undiluted","undivided","undocked","undoing","undone","undrafted","undress","undrilled","undusted","undying","unearned","unearth","unease","uneasily","uneasy","uneatable","uneaten","unedited","unelected","unending","unengaged","unenvied","unequal","unethical","uneven","unexpired","unexposed","unfailing","unfair","unfasten","unfazed","unfeeling","unfiled","unfilled","unfitted","unfitting","unfixable","unfixed","unflawed","unfocused","unfold","unfounded","unframed","unfreeze","unfrosted","unfrozen","unfunded","unglazed","ungloved","unglue","ungodly","ungraded","ungreased","unguarded","unguided","unhappily","unhappy","unharmed","unhealthy","unheard","unhearing","unheated","unhelpful","unhidden","unhinge","unhitched","unholy","unhook","unicorn","unicycle","unified","unifier","uniformed","uniformly","unify","unimpeded","uninjured","uninstall","uninsured","uninvited","union","uniquely","unisexual","unison","unissued","unit","universal","universe","unjustly","unkempt","unkind","unknotted","unknowing","unknown","unlaced","unlatch","unlawful","unleaded","unlearned","unleash","unless","unleveled","unlighted","unlikable","unlimited","unlined","unlinked","unlisted","unlit","unlivable","unloaded","unloader","unlocked","unlocking","unlovable","unloved","unlovely","unloving","unluckily","unlucky","unmade","unmanaged","unmanned","unmapped","unmarked","unmasked","unmasking","unmatched","unmindful","unmixable","unmixed","unmolded","unmoral","unmovable","unmoved","unmoving","unnamable","unnamed","unnatural","unneeded","unnerve","unnerving","unnoticed","unopened","unopposed","unpack","unpadded","unpaid","unpainted","unpaired","unpaved","unpeeled","unpicked","unpiloted","unpinned","unplanned","unplanted","unpleased","unpledged","unplowed","unplug","unpopular","unproven","unquote","unranked","unrated","unraveled","unreached","unread","unreal","unreeling","unrefined","unrelated","unrented","unrest","unretired","unrevised","unrigged","unripe","unrivaled","unroasted","unrobed","unroll","unruffled","unruly","unrushed","unsaddle","unsafe","unsaid","unsalted","unsaved","unsavory","unscathed","unscented","unscrew","unsealed","unseated","unsecured","unseeing","unseemly","unseen","unselect","unselfish","unsent","unsettled","unshackle","unshaken","unshaved","unshaven","unsheathe","unshipped","unsightly","unsigned","unskilled","unsliced","unsmooth","unsnap","unsocial","unsoiled","unsold","unsolved","unsorted","unspoiled","unspoken","unstable","unstaffed","unstamped","unsteady","unsterile","unstirred","unstitch","unstopped","unstuck","unstuffed","unstylish","unsubtle","unsubtly","unsuited","unsure","unsworn","untagged","untainted","untaken","untamed","untangled","untapped","untaxed","unthawed","unthread","untidy","untie","until","untimed","untimely","untitled","untoasted","untold","untouched","untracked","untrained","untreated","untried","untrimmed","untrue","untruth","unturned","untwist","untying","unusable","unused","unusual","unvalued","unvaried","unvarying","unveiled","unveiling","unvented","unviable","unvisited","unvocal","unwanted","unwarlike","unwary","unwashed","unwatched","unweave","unwed","unwelcome","unwell","unwieldy","unwilling","unwind","unwired","unwitting","unwomanly","unworldly","unworn","unworried","unworthy","unwound","unwoven","unwrapped","unwritten","unzip","upbeat","upchuck","upcoming","upcountry","update","upfront","upgrade","upheaval","upheld","uphill","uphold","uplifted","uplifting","upload","upon","upper","upright","uprising","upriver","uproar","uproot","upscale","upside","upstage","upstairs","upstart","upstate","upstream","upstroke","upswing","uptake","uptight","uptown","upturned","upward","upwind","uranium","urban","urchin","urethane","urgency","urgent","urging","urologist","urology","usable","usage","useable","used","uselessly","user","usher","usual","utensil","utility","utilize","utmost","utopia","utter","vacancy","vacant","vacate","vacation","vagabond","vagrancy","vagrantly","vaguely","vagueness","valiant","valid","valium","valley","valuables","value","vanilla","vanish","vanity","vanquish","vantage","vaporizer","variable","variably","varied","variety","various","varmint","varnish","varsity","varying","vascular","vaseline","vastly","vastness","veal","vegan","veggie","vehicular","velcro","velocity","velvet","vendetta","vending","vendor","veneering","vengeful","venomous","ventricle","venture","venue","venus","verbalize","verbally","verbose","verdict","verify","verse","version","versus","vertebrae","vertical","vertigo","very","vessel","vest","veteran","veto","vexingly","viability","viable","vibes","vice","vicinity","victory","video","viewable","viewer","viewing","viewless","viewpoint","vigorous","village","villain","vindicate","vineyard","vintage","violate","violation","violator","violet","violin","viper","viral","virtual","virtuous","virus","visa","viscosity","viscous","viselike","visible","visibly","vision","visiting","visitor","visor","vista","vitality","vitalize","vitally","vitamins","vivacious","vividly","vividness","vixen","vocalist","vocalize","vocally","vocation","voice","voicing","void","volatile","volley","voltage","volumes","voter","voting","voucher","vowed","vowel","voyage","wackiness","wad","wafer","waffle","waged","wager","wages","waggle","wagon","wake","waking","walk","walmart","walnut","walrus","waltz","wand","wannabe","wanted","wanting","wasabi","washable","washbasin","washboard","washbowl","washcloth","washday","washed","washer","washhouse","washing","washout","washroom","washstand","washtub","wasp","wasting","watch","water","waviness","waving","wavy","whacking","whacky","wham","wharf","wheat","whenever","whiff","whimsical","whinny","whiny","whisking","whoever","whole","whomever","whoopee","whooping","whoops","why","wick","widely","widen","widget","widow","width","wieldable","wielder","wife","wifi","wikipedia","wildcard","wildcat","wilder","wildfire","wildfowl","wildland","wildlife","wildly","wildness","willed","willfully","willing","willow","willpower","wilt","wimp","wince","wincing","wind","wing","winking","winner","winnings","winter","wipe","wired","wireless","wiring","wiry","wisdom","wise","wish","wisplike","wispy","wistful","wizard","wobble","wobbling","wobbly","wok","wolf","wolverine","womanhood","womankind","womanless","womanlike","womanly","womb","woof","wooing","wool","woozy","word","work","worried","worrier","worrisome","worry","worsening","worshiper","worst","wound","woven","wow","wrangle","wrath","wreath","wreckage","wrecker","wrecking","wrench","wriggle","wriggly","wrinkle","wrinkly","wrist","writing","written","wrongdoer","wronged","wrongful","wrongly","wrongness","wrought","xbox","xerox","yahoo","yam","yanking","yapping","yard","yarn","yeah","yearbook","yearling","yearly","yearning","yeast","yelling","yelp","yen","yesterday","yiddish","yield","yin","yippee","yo-yo","yodel","yoga","yogurt","yonder","yoyo","yummy","zap","zealous","zebra","zen","zeppelin","zero","zestfully","zesty","zigzagged","zipfile","zipping","zippy","zips","zit","zodiac","zombie","zone","zoning","zookeeper","zoologist","zoology","zoom"]},79977:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncConfigApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),null!=e&&(this.billingSyncKey=this.getResponseProperty("BillingSyncKey"))}}t.BillingSyncConfigApi=r},59773:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.cardholderName=this.getResponseProperty("CardholderName"),this.brand=this.getResponseProperty("Brand"),this.number=this.getResponseProperty("Number"),this.expMonth=this.getResponseProperty("ExpMonth"),this.expYear=this.getResponseProperty("ExpYear"),this.code=this.getResponseProperty("Code"))}}t.CardApi=r},9592:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.value=this.getResponseProperty("Value"),this.linkedId=this.getResponseProperty("linkedId"))}}t.FieldApi=r},25327:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.title=this.getResponseProperty("Title"),this.firstName=this.getResponseProperty("FirstName"),this.middleName=this.getResponseProperty("MiddleName"),this.lastName=this.getResponseProperty("LastName"),this.address1=this.getResponseProperty("Address1"),this.address2=this.getResponseProperty("Address2"),this.address3=this.getResponseProperty("Address3"),this.city=this.getResponseProperty("City"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.country=this.getResponseProperty("Country"),this.company=this.getResponseProperty("Company"),this.email=this.getResponseProperty("Email"),this.phone=this.getResponseProperty("Phone"),this.ssn=this.getResponseProperty("SSN"),this.username=this.getResponseProperty("Username"),this.passportNumber=this.getResponseProperty("PassportNumber"),this.licenseNumber=this.getResponseProperty("LicenseNumber"))}}t.IdentityApi=r},89387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginApi=void 0;const i=n(17273),r=n(32357);class o extends i.BaseResponse{constructor(e=null){if(super(e),null==e)return;this.username=this.getResponseProperty("Username"),this.password=this.getResponseProperty("Password"),this.passwordRevisionDate=this.getResponseProperty("PasswordRevisionDate"),this.totp=this.getResponseProperty("Totp"),this.autofillOnPageLoad=this.getResponseProperty("AutofillOnPageLoad");const t=this.getResponseProperty("Uris");null!=t&&(this.uris=t.map((e=>new r.LoginUriApi(e))))}}t.LoginApi=o},32357:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){if(super(e),this.match=null,null==e)return;this.uri=this.getResponseProperty("Uri");const t=this.getResponseProperty("Match");this.match=null!=t?t:null}}t.LoginUriApi=r},96926:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){if(super(e),null==e)return this;this.accessEventLogs=this.getResponseProperty("AccessEventLogs"),this.accessImportExport=this.getResponseProperty("AccessImportExport"),this.accessReports=this.getResponseProperty("AccessReports"),this.manageAllCollections=this.getResponseProperty("ManageAllCollections"),this.manageAssignedCollections=this.getResponseProperty("ManageAssignedCollections"),this.createNewCollections=this.getResponseProperty("CreateNewCollections"),this.editAnyCollection=this.getResponseProperty("EditAnyCollection"),this.deleteAnyCollection=this.getResponseProperty("DeleteAnyCollection"),this.editAssignedCollections=this.getResponseProperty("EditAssignedCollections"),this.deleteAssignedCollections=this.getResponseProperty("DeleteAssignedCollections"),this.manageCiphers=this.getResponseProperty("ManageCiphers"),this.manageGroups=this.getResponseProperty("ManageGroups"),this.manageSso=this.getResponseProperty("ManageSso"),this.managePolicies=this.getResponseProperty("ManagePolicies"),this.manageUsers=this.getResponseProperty("ManageUsers"),this.manageResetPassword=this.getResponseProperty("ManageResetPassword")}}t.PermissionsApi=r},3865:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.type=this.getResponseProperty("Type"))}}t.SecureNoteApi=r},39255:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.id=this.getResponseProperty("Id"),this.fileName=this.getResponseProperty("FileName"),this.size=this.getResponseProperty("Size"),this.sizeName=this.getResponseProperty("SizeName"))}}t.SendFileApi=r},8057:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextApi=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e=null){super(e),null!=e&&(this.text=this.getResponseProperty("Text"),this.hidden=this.getResponseProperty("Hidden")||!1)}}t.SendTextApi=r},21021:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoConfigApi=void 0;const i=n(37084),r=n(17273);class o extends r.BaseResponse{constructor(e=null){super(e),null!=e&&(this.configType=this.getResponseProperty("ConfigType"),this.keyConnectorEnabled=this.getResponseProperty("KeyConnectorEnabled"),this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl"),this.authority=this.getResponseProperty("Authority"),this.clientId=this.getResponseProperty("ClientId"),this.clientSecret=this.getResponseProperty("ClientSecret"),this.metadataAddress=this.getResponseProperty("MetadataAddress"),this.redirectBehavior=this.getResponseProperty("RedirectBehavior"),this.getClaimsFromUserInfoEndpoint=this.getResponseProperty("GetClaimsFromUserInfoEndpoint"),this.additionalScopes=this.getResponseProperty("AdditionalScopes"),this.additionalUserIdClaimTypes=this.getResponseProperty("AdditionalUserIdClaimTypes"),this.additionalEmailClaimTypes=this.getResponseProperty("AdditionalEmailClaimTypes"),this.additionalNameClaimTypes=this.getResponseProperty("AdditionalNameClaimTypes"),this.acrValues=this.getResponseProperty("AcrValues"),this.expectedReturnAcrValue=this.getResponseProperty("ExpectedReturnAcrValue"),this.spNameIdFormat=this.getResponseProperty("SpNameIdFormat"),this.spOutboundSigningAlgorithm=this.getResponseProperty("SpOutboundSigningAlgorithm"),this.spSigningBehavior=this.getResponseProperty("SpSigningBehavior"),this.spMinIncomingSigningAlgorithm=this.getResponseProperty("SpMinIncomingSigningAlgorithm"),this.spWantAssertionsSigned=this.getResponseProperty("SpWantAssertionsSigned"),this.spValidateCertificates=this.getResponseProperty("SpValidateCertificates"),this.idpEntityId=this.getResponseProperty("IdpEntityId"),this.idpBindingType=this.getResponseProperty("IdpBindingType"),this.idpSingleSignOnServiceUrl=this.getResponseProperty("IdpSingleSignOnServiceUrl"),this.idpSingleLogoutServiceUrl=this.getResponseProperty("IdpSingleLogoutServiceUrl"),this.idpX509PublicCert=this.getResponseProperty("IdpX509PublicCert"),this.idpOutboundSigningAlgorithm=this.getResponseProperty("IdpOutboundSigningAlgorithm"),this.idpAllowUnsolicitedAuthnResponse=this.getResponseProperty("IdpAllowUnsolicitedAuthnResponse"),this.idpDisableOutboundLogoutRequests=this.getResponseProperty("IdpDisableOutboundLogoutRequests"),this.idpWantAuthnRequestsSigned=this.getResponseProperty("IdpWantAuthnRequestsSigned"))}static fromView(e,t=new o){return t.configType=e.configType,t.keyConnectorEnabled=e.keyConnectorEnabled,t.keyConnectorUrl=e.keyConnectorUrl,t.configType===i.SsoType.OpenIdConnect?(t.authority=e.openId.authority,t.clientId=e.openId.clientId,t.clientSecret=e.openId.clientSecret,t.metadataAddress=e.openId.metadataAddress,t.redirectBehavior=e.openId.redirectBehavior,t.getClaimsFromUserInfoEndpoint=e.openId.getClaimsFromUserInfoEndpoint,t.additionalScopes=e.openId.additionalScopes,t.additionalUserIdClaimTypes=e.openId.additionalUserIdClaimTypes,t.additionalEmailClaimTypes=e.openId.additionalEmailClaimTypes,t.additionalNameClaimTypes=e.openId.additionalNameClaimTypes,t.acrValues=e.openId.acrValues,t.expectedReturnAcrValue=e.openId.expectedReturnAcrValue):t.configType===i.SsoType.Saml2&&(t.spNameIdFormat=e.saml.spNameIdFormat,t.spOutboundSigningAlgorithm=e.saml.spOutboundSigningAlgorithm,t.spSigningBehavior=e.saml.spSigningBehavior,t.spMinIncomingSigningAlgorithm=e.saml.spMinIncomingSigningAlgorithm,t.spWantAssertionsSigned=e.saml.spWantAssertionsSigned,t.spValidateCertificates=e.saml.spValidateCertificates,t.idpEntityId=e.saml.idpEntityId,t.idpBindingType=e.saml.idpBindingType,t.idpSingleSignOnServiceUrl=e.saml.idpSingleSignOnServiceUrl,t.idpSingleLogoutServiceUrl=e.saml.idpSingleLogoutServiceUrl,t.idpX509PublicCert=e.saml.idpX509PublicCert,t.idpOutboundSigningAlgorithm=e.saml.idpOutboundSigningAlgorithm,t.idpAllowUnsolicitedAuthnResponse=e.saml.idpAllowUnsolicitedAuthnResponse,t.idpWantAuthnRequestsSigned=e.saml.idpWantAuthnRequestsSigned,t.idpDisableOutboundLogoutRequests=!e.saml.idpAllowOutboundLogoutRequests),t}}t.SsoConfigApi=o},82999:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentData=void 0;t.AttachmentData=class{constructor(e){null!=e&&(this.id=e.id,this.url=e.url,this.fileName=e.fileName,this.key=e.key,this.size=e.size,this.sizeName=e.sizeName)}}},23607:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardData=void 0;t.CardData=class{constructor(e){null!=e&&(this.cardholderName=e.cardholderName,this.brand=e.brand,this.number=e.number,this.expMonth=e.expMonth,this.expYear=e.expYear,this.code=e.code)}}},82789:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherData=void 0;const i=n(32773),r=n(82999),o=n(23607),a=n(93001),s=n(64218),l=n(33396),c=n(67783),d=n(85201);t.CipherData=class{constructor(e,t){if(null!=e){switch(this.id=e.id,this.organizationId=e.organizationId,this.folderId=e.folderId,this.edit=e.edit,this.viewPassword=e.viewPassword,this.organizationUseTotp=e.organizationUseTotp,this.favorite=e.favorite,this.revisionDate=e.revisionDate,this.type=e.type,this.name=e.name,this.notes=e.notes,this.collectionIds=null!=t?t:e.collectionIds,this.deletedDate=e.deletedDate,this.reprompt=e.reprompt,this.type){case i.CipherType.Login:this.login=new l.LoginData(e.login);break;case i.CipherType.SecureNote:this.secureNote=new d.SecureNoteData(e.secureNote);break;case i.CipherType.Card:this.card=new o.CardData(e.card);break;case i.CipherType.Identity:this.identity=new s.IdentityData(e.identity)}null!=e.fields&&(this.fields=e.fields.map((e=>new a.FieldData(e)))),null!=e.attachments&&(this.attachments=e.attachments.map((e=>new r.AttachmentData(e)))),null!=e.passwordHistory&&(this.passwordHistory=e.passwordHistory.map((e=>new c.PasswordHistoryData(e))))}}}},34917:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionData=void 0;t.CollectionData=class{constructor(e){this.id=e.id,this.organizationId=e.organizationId,this.name=e.name,this.externalId=e.externalId,this.readOnly=e.readOnly}}},93053:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventData=void 0;t.EventData=class{}},93001:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldData=void 0;t.FieldData=class{constructor(e){null!=e&&(this.type=e.type,this.name=e.name,this.value=e.value,this.linkedId=e.linkedId)}}},12835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderData=void 0;t.FolderData=class{constructor(e){this.name=e.name,this.id=e.id,this.revisionDate=e.revisionDate}}},64218:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityData=void 0;t.IdentityData=class{constructor(e){null!=e&&(this.title=e.title,this.firstName=e.firstName,this.middleName=e.middleName,this.lastName=e.lastName,this.address1=e.address1,this.address2=e.address2,this.address3=e.address3,this.city=e.city,this.state=e.state,this.postalCode=e.postalCode,this.country=e.country,this.company=e.company,this.email=e.email,this.phone=e.phone,this.ssn=e.ssn,this.username=e.username,this.passportNumber=e.passportNumber,this.licenseNumber=e.licenseNumber)}}},33396:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginData=void 0;const i=n(20968);t.LoginData=class{constructor(e){null!=e&&(this.username=e.username,this.password=e.password,this.passwordRevisionDate=e.passwordRevisionDate,this.totp=e.totp,this.autofillOnPageLoad=e.autofillOnPageLoad,e.uris&&(this.uris=e.uris.map((e=>new i.LoginUriData(e)))))}}},20968:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriData=void 0;t.LoginUriData=class{constructor(e){this.match=null,null!=e&&(this.uri=e.uri,this.match=e.match)}}},8681:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationData=void 0;t.OrganizationData=class{constructor(e){this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.usePolicies=e.usePolicies,this.useGroups=e.useGroups,this.useDirectory=e.useDirectory,this.useEvents=e.useEvents,this.useTotp=e.useTotp,this.use2fa=e.use2fa,this.useApi=e.useApi,this.useSso=e.useSso,this.useKeyConnector=e.useKeyConnector,this.useResetPassword=e.useResetPassword,this.selfHost=e.selfHost,this.usersGetPremium=e.usersGetPremium,this.seats=e.seats,this.maxCollections=e.maxCollections,this.maxStorageGb=e.maxStorageGb,this.ssoBound=e.ssoBound,this.identifier=e.identifier,this.permissions=e.permissions,this.resetPasswordEnrolled=e.resetPasswordEnrolled,this.userId=e.userId,this.hasPublicAndPrivateKeys=e.hasPublicAndPrivateKeys,this.providerId=e.providerId,this.providerName=e.providerName,this.familySponsorshipFriendlyName=e.familySponsorshipFriendlyName,this.familySponsorshipAvailable=e.familySponsorshipAvailable,this.planProductType=e.planProductType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.familySponsorshipLastSyncDate=e.familySponsorshipLastSyncDate,this.familySponsorshipValidUntil=e.familySponsorshipValidUntil,this.familySponsorshipToDelete=e.familySponsorshipToDelete}}},67783:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryData=void 0;t.PasswordHistoryData=class{constructor(e){null!=e&&(this.password=e.password,this.lastUsedDate=e.lastUsedDate)}}},34144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyData=void 0;t.PolicyData=class{constructor(e){this.id=e.id,this.organizationId=e.organizationId,this.type=e.type,this.data=e.data,this.enabled=e.enabled}}},17835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderData=void 0;t.ProviderData=class{constructor(e){this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.userId=e.userId,this.useEvents=e.useEvents}}},85201:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteData=void 0;t.SecureNoteData=class{constructor(e){null!=e&&(this.type=e.type)}}},10425:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendData=void 0;const i=n(70149),r=n(57662),o=n(35861);t.SendData=class{constructor(e){if(null!=e)switch(this.id=e.id,this.accessId=e.accessId,this.type=e.type,this.name=e.name,this.notes=e.notes,this.key=e.key,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.revisionDate=e.revisionDate,this.expirationDate=e.expirationDate,this.deletionDate=e.deletionDate,this.password=e.password,this.disabled=e.disable,this.hideEmail=e.hideEmail,this.type){case i.SendType.Text:this.text=new o.SendTextData(e.text);break;case i.SendType.File:this.file=new r.SendFileData(e.file)}}}},57662:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileData=void 0;t.SendFileData=class{constructor(e){null!=e&&(this.id=e.id,this.fileName=e.fileName,this.size=e.size,this.sizeName=e.sizeName)}}},35861:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextData=void 0;t.SendTextData=class{constructor(e){null!=e&&(this.text=e.text,this.hidden=e.hidden)}}},31445:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Account=t.AccountTokens=t.AccountSettings=t.AccountProfile=t.AccountKeys=t.AccountData=t.DataEncryptionPair=t.EncryptionPair=void 0;const i=n(91185);class r{}t.EncryptionPair=r;class o{}t.DataEncryptionPair=o;class a{constructor(){this.ciphers=new o,this.folders=new o,this.sends=new o,this.collections=new o,this.policies=new o,this.passwordGenerationHistory=new r}}t.AccountData=a;class s{constructor(){this.cryptoSymmetricKey=new r,this.organizationKeys=new r,this.providerKeys=new r,this.privateKey=new r}}t.AccountKeys=s;class l{}t.AccountProfile=l;class c{constructor(){this.environmentUrls=new i.EnvironmentUrls,this.pinProtected=new r,this.vaultTimeoutAction="lock"}}t.AccountSettings=c;class d{}t.AccountTokens=d;t.Account=class{constructor(e){this.data=new a,this.keys=new s,this.profile=new l,this.settings=new c,this.tokens=new d,Object.assign(this,{data:Object.assign(Object.assign({},new a),null==e?void 0:e.data),keys:Object.assign(Object.assign({},new s),null==e?void 0:e.keys),profile:Object.assign(Object.assign({},new l),null==e?void 0:e.profile),settings:Object.assign(Object.assign({},new c),null==e?void 0:e.settings),tokens:Object.assign(Object.assign({},new d),null==e?void 0:e.tokens)})}}},73024:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Attachment=void 0;const r=n(82769),o=n(82999),a=n(57759),s=n(6183),l=n(69731);class c extends s.default{constructor(e){super(),null!=e&&(this.size=e.size,this.buildDomainModel(this,e,{id:null,url:null,sizeName:null,fileName:null,key:null},["id","url","sizeName"]))}decrypt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.decryptObj(new a.AttachmentView(this),{fileName:null},e,t);if(null!=this.key){let o;const a=r.Utils.global.bitwardenContainerService;if(!a)throw new Error("global bitwardenContainerService not initialized.");o=a.getCryptoService();try{const i=yield o.getOrgKey(e),r=yield o.decryptToBytes(this.key,null!=i?i:t);n.key=new l.SymmetricCryptoKey(r)}catch(i){}}return n}))}toAttachmentData(){const e=new o.AttachmentData;return e.size=this.size,this.buildDataModel(this,e,{id:null,url:null,sizeName:null,fileName:null,key:null},["id","url","sizeName"]),e}}t.Attachment=c},20584:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AuthResult=void 0;const i=n(82769);t.AuthResult=class{constructor(){this.captchaSiteKey="",this.resetMasterPassword=!1,this.forcePasswordReset=!1,this.twoFactorProviders=null}get requiresCaptcha(){return!i.Utils.isNullOrWhitespace(this.captchaSiteKey)}get requiresTwoFactor(){return null!=this.twoFactorProviders}}},53763:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;const i=n(23607),r=n(91766),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null},[])}decrypt(e,t){return this.decryptObj(new r.CardView,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null},e,t)}toCardData(){const e=new i.CardData;return this.buildDataModel(this,e,{cardholderName:null,brand:null,number:null,expMonth:null,expYear:null,code:null}),e}}t.Card=a},49624:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Cipher=void 0;const r=n(32773),o=n(82789),a=n(97144),s=n(73024),l=n(53763),c=n(6183),d=n(84379),p=n(809),u=n(89642),m=n(20929),h=n(7012);class v extends c.default{constructor(e,t=null){if(super(),null!=e){switch(this.buildDomainModel(this,e,{id:null,organizationId:null,folderId:null,name:null,notes:null},["id","organizationId","folderId"]),this.type=e.type,this.favorite=e.favorite,this.organizationUseTotp=e.organizationUseTotp,this.edit=e.edit,null!=e.viewPassword?this.viewPassword=e.viewPassword:this.viewPassword=!0,this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null,this.collectionIds=e.collectionIds,this.localData=t,this.deletedDate=null!=e.deletedDate?new Date(e.deletedDate):null,this.reprompt=e.reprompt,this.type){case r.CipherType.Login:this.login=new u.Login(e.login);break;case r.CipherType.SecureNote:this.secureNote=new h.SecureNote(e.secureNote);break;case r.CipherType.Card:this.card=new l.Card(e.card);break;case r.CipherType.Identity:this.identity=new p.Identity(e.identity)}null!=e.attachments?this.attachments=e.attachments.map((e=>new s.Attachment(e))):this.attachments=null,null!=e.fields?this.fields=e.fields.map((e=>new d.Field(e))):this.fields=null,null!=e.passwordHistory?this.passwordHistory=e.passwordHistory.map((e=>new m.Password(e))):this.passwordHistory=null}}decrypt(e){return i(this,void 0,void 0,(function*(){const t=new a.CipherView(this);switch(yield this.decryptObj(t,{name:null,notes:null},this.organizationId,e),this.type){case r.CipherType.Login:t.login=yield this.login.decrypt(this.organizationId,e);break;case r.CipherType.SecureNote:t.secureNote=yield this.secureNote.decrypt(this.organizationId,e);break;case r.CipherType.Card:t.card=yield this.card.decrypt(this.organizationId,e);break;case r.CipherType.Identity:t.identity=yield this.identity.decrypt(this.organizationId,e)}const n=this.organizationId;if(null!=this.attachments&&this.attachments.length>0){const i=[];yield this.attachments.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.attachments=i}if(null!=this.fields&&this.fields.length>0){const i=[];yield this.fields.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.fields=i}if(null!=this.passwordHistory&&this.passwordHistory.length>0){const i=[];yield this.passwordHistory.reduce(((t,r)=>t.then((()=>r.decrypt(n,e))).then((e=>{i.push(e)}))),Promise.resolve()),t.passwordHistory=i}return t}))}toCipherData(){const e=new o.CipherData;switch(e.id=this.id,e.organizationId=this.organizationId,e.folderId=this.folderId,e.edit=this.edit,e.viewPassword=this.viewPassword,e.organizationUseTotp=this.organizationUseTotp,e.favorite=this.favorite,e.revisionDate=null!=this.revisionDate?this.revisionDate.toISOString():null,e.type=this.type,e.collectionIds=this.collectionIds,e.deletedDate=null!=this.deletedDate?this.deletedDate.toISOString():null,e.reprompt=this.reprompt,this.buildDataModel(this,e,{name:null,notes:null}),e.type){case r.CipherType.Login:e.login=this.login.toLoginData();break;case r.CipherType.SecureNote:e.secureNote=this.secureNote.toSecureNoteData();break;case r.CipherType.Card:e.card=this.card.toCardData();break;case r.CipherType.Identity:e.identity=this.identity.toIdentityData()}return null!=this.fields&&(e.fields=this.fields.map((e=>e.toFieldData()))),null!=this.attachments&&(e.attachments=this.attachments.map((e=>e.toAttachmentData()))),null!=this.passwordHistory&&(e.passwordHistory=this.passwordHistory.map((e=>e.toPasswordHistoryData()))),e}}t.Cipher=v},65642:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Collection=void 0;const i=n(86001),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{id:null,organizationId:null,name:null,externalId:null,readOnly:null,hidePasswords:null},["id","organizationId","externalId","readOnly","hidePasswords"])}decrypt(){return this.decryptObj(new i.CollectionView(this),{name:null},this.organizationId)}}t.Collection=o},15755:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DecryptParameters=void 0;t.DecryptParameters=class{}},6183:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(22205);t.default=class{buildDomainModel(e,t,n,i=[]){for(const o in n){if(!n.hasOwnProperty(o))continue;const a=t[n[o]||o];i.indexOf(o)>-1?e[o]=a||null:e[o]=a?new r.EncString(a):null}}buildDataModel(e,t,n,i=[]){for(const r in n){if(!n.hasOwnProperty(r))continue;const o=e[n[r]||r];i.indexOf(r)>-1?t[r]=null!=o?o:null:t[r]=null!=o?o.encryptedString:null}}decryptObj(e,t,n,r=null){return i(this,void 0,void 0,(function*(){const i=[],o=this;for(const a in t)t.hasOwnProperty(a)&&function(a){const s=Promise.resolve().then((()=>{const e=t[a]||a;return o[e]?o[e].decrypt(n,r):null})).then((t=>{e[a]=t}));i.push(s)}(a);return yield Promise.all(i),e}))}}},16131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncArrayBuffer=void 0;t.EncArrayBuffer=class{constructor(e){this.buffer=e}}},22205:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EncString=void 0;const r=n(28588),o=n(82769);t.EncString=class{constructor(e,t,n,i){if(null!=t){const r=e;return this.encryptedString=null!=n?r+"."+n+"|"+t:r+"."+t,null!=i&&(this.encryptedString+="|"+i),this.encryptionType=r,this.data=t,this.iv=n,void(this.mac=i)}if(this.encryptedString=e,!this.encryptedString)return;const o=this.encryptedString.split(".");let a=null;if(2===o.length)try{this.encryptionType=parseInt(o[0],null),a=o[1].split("|")}catch(s){return}else a=this.encryptedString.split("|"),this.encryptionType=3===a.length?r.EncryptionType.AesCbc128_HmacSha256_B64:r.EncryptionType.AesCbc256_B64;switch(this.encryptionType){case r.EncryptionType.AesCbc128_HmacSha256_B64:case r.EncryptionType.AesCbc256_HmacSha256_B64:if(3!==a.length)return;this.iv=a[0],this.data=a[1],this.mac=a[2];break;case r.EncryptionType.AesCbc256_B64:if(2!==a.length)return;this.iv=a[0],this.data=a[1];break;case r.EncryptionType.Rsa2048_OaepSha256_B64:case r.EncryptionType.Rsa2048_OaepSha1_B64:if(1!==a.length)return;this.data=a[0];break;default:return}}decrypt(e,t=null){return i(this,void 0,void 0,(function*(){if(null!=this.decryptedValue)return this.decryptedValue;let n;const i=o.Utils.global.bitwardenContainerService;if(!i)throw new Error("global bitwardenContainerService not initialized.");n=i.getCryptoService();try{null==t&&(t=yield n.getOrgKey(e)),this.decryptedValue=yield n.decryptToUtf8(this,t)}catch(r){this.decryptedValue="[error: cannot decrypt]"}return this.decryptedValue}))}}},6394:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EncryptedObject=void 0;t.EncryptedObject=class{}},91185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentUrls=void 0;t.EnvironmentUrls=class{constructor(){this.base=null,this.api=null,this.identity=null,this.icons=null,this.notifications=null,this.events=null,this.webVault=null,this.keyConnector=null}}},84379:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Field=void 0;const i=n(93001),r=n(58545),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.type=e.type,this.linkedId=e.linkedId,this.buildDomainModel(this,e,{name:null,value:null},[]))}decrypt(e,t){return this.decryptObj(new r.FieldView(this),{name:null,value:null},e,t)}toFieldData(){const e=new i.FieldData;return this.buildDataModel(this,e,{name:null,value:null,type:null,linkedId:null},["type","linkedId"]),e}}t.Field=a},59738:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Folder=void 0;const i=n(36914),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&(this.buildDomainModel(this,e,{id:null,name:null},["id"]),this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null)}decrypt(){return this.decryptObj(new i.FolderView(this),{name:null},null)}}t.Folder=o},77665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratedPasswordHistory=void 0;t.GeneratedPasswordHistory=class{constructor(e,t){this.password=e,this.date=t}}},99010:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalState=void 0;const i=n(40898),r=n(14538),o=n(91185),a=n(95672);t.GlobalState=class{constructor(){this.theme=r.ThemeType.System,this.window=new a.WindowState,this.stateVersion=i.StateVersion.One,this.environmentUrls=new o.EnvironmentUrls}}},809:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Identity=void 0;const i=n(64218),r=n(48830),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&this.buildDomainModel(this,e,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null},[])}decrypt(e,t){return this.decryptObj(new r.IdentityView,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null},e,t)}toIdentityData(){const e=new i.IdentityData;return this.buildDataModel(this,e,{title:null,firstName:null,middleName:null,lastName:null,address1:null,address2:null,address3:null,city:null,state:null,postalCode:null,country:null,company:null,email:null,phone:null,ssn:null,username:null,passportNumber:null,licenseNumber:null}),e}}t.Identity=a},2859:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportResult=void 0;t.ImportResult=class{constructor(){this.success=!1,this.missingPassword=!1,this.ciphers=[],this.folders=[],this.folderRelationships=[],this.collections=[],this.collectionRelationships=[]}}},70045:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLogInCredentials=t.SsoLogInCredentials=t.PasswordLogInCredentials=void 0;const i=n(2231);t.PasswordLogInCredentials=class{constructor(e,t,n,r){this.email=e,this.masterPassword=t,this.captchaToken=n,this.twoFactor=r,this.type=i.AuthenticationType.Password}};t.SsoLogInCredentials=class{constructor(e,t,n,r,o){this.code=e,this.codeVerifier=t,this.redirectUrl=n,this.orgId=r,this.twoFactor=o,this.type=i.AuthenticationType.Sso}};t.ApiLogInCredentials=class{constructor(e,t){this.clientId=e,this.clientSecret=t,this.type=i.AuthenticationType.Api}}},89642:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Login=void 0;const r=n(33396),o=n(28331),a=n(6183),s=n(28947);class l extends a.default{constructor(e){super(),null!=e&&(this.passwordRevisionDate=null!=e.passwordRevisionDate?new Date(e.passwordRevisionDate):null,this.autofillOnPageLoad=e.autofillOnPageLoad,this.buildDomainModel(this,e,{username:null,password:null,totp:null},[]),e.uris&&(this.uris=[],e.uris.forEach((e=>{this.uris.push(new s.LoginUri(e))}))))}decrypt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.decryptObj(new o.LoginView(this),{username:null,password:null,totp:null},e,t);if(null!=this.uris){n.uris=[];for(let i=0;i0&&(e.uris=[],this.uris.forEach((t=>{e.uris.push(t.toLoginUriData())}))),e}}t.Login=l},28947:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUri=void 0;const i=n(20968),r=n(16506),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.match=e.match,this.buildDomainModel(this,e,{uri:null},[]))}decrypt(e,t){return this.decryptObj(new r.LoginUriView(this),{uri:null},e,t)}toLoginUriData(){const e=new i.LoginUriData;return this.buildDataModel(this,e,{uri:null,match:null},["match"]),e}}t.LoginUri=a},27053:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MasterPasswordPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.minComplexity=0,this.minLength=0,this.requireUpper=!1,this.requireLower=!1,this.requireNumbers=!1,this.requireSpecial=!1}}t.MasterPasswordPolicyOptions=r},27957:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Organization=void 0;const i=n(7368),r=n(33712),o=n(47880);t.Organization=class{constructor(e){null!=e&&(this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.usePolicies=e.usePolicies,this.useGroups=e.useGroups,this.useDirectory=e.useDirectory,this.useEvents=e.useEvents,this.useTotp=e.useTotp,this.use2fa=e.use2fa,this.useApi=e.useApi,this.useSso=e.useSso,this.useKeyConnector=e.useKeyConnector,this.useResetPassword=e.useResetPassword,this.selfHost=e.selfHost,this.usersGetPremium=e.usersGetPremium,this.seats=e.seats,this.maxCollections=e.maxCollections,this.maxStorageGb=e.maxStorageGb,this.ssoBound=e.ssoBound,this.identifier=e.identifier,this.permissions=e.permissions,this.resetPasswordEnrolled=e.resetPasswordEnrolled,this.userId=e.userId,this.hasPublicAndPrivateKeys=e.hasPublicAndPrivateKeys,this.providerId=e.providerId,this.providerName=e.providerName,this.isProviderUser=e.isProviderUser,this.familySponsorshipFriendlyName=e.familySponsorshipFriendlyName,this.familySponsorshipAvailable=e.familySponsorshipAvailable,this.planProductType=e.planProductType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.familySponsorshipLastSyncDate=e.familySponsorshipLastSyncDate,this.familySponsorshipValidUntil=e.familySponsorshipValidUntil,this.familySponsorshipToDelete=e.familySponsorshipToDelete)}get canAccess(){return this.type===r.OrganizationUserType.Owner||this.enabled&&this.status===i.OrganizationUserStatusType.Confirmed}get isManager(){return this.type===r.OrganizationUserType.Manager||this.type===r.OrganizationUserType.Owner||this.type===r.OrganizationUserType.Admin}get isAdmin(){return this.type===r.OrganizationUserType.Owner||this.type===r.OrganizationUserType.Admin}get isOwner(){return this.type===r.OrganizationUserType.Owner||this.isProviderUser}get canAccessEventLogs(){return this.isAdmin||this.permissions.accessEventLogs}get canAccessImportExport(){return this.isAdmin||this.permissions.accessImportExport}get canAccessReports(){return this.isAdmin||this.permissions.accessReports}get canCreateNewCollections(){var e;return this.isManager||(null!==(e=this.permissions.createNewCollections)&&void 0!==e?e:this.permissions.manageAllCollections)}get canEditAnyCollection(){var e;return this.isAdmin||(null!==(e=this.permissions.editAnyCollection)&&void 0!==e?e:this.permissions.manageAllCollections)}get canDeleteAnyCollection(){var e;return this.isAdmin||(null!==(e=this.permissions.deleteAnyCollection)&&void 0!==e?e:this.permissions.manageAllCollections)}get canViewAllCollections(){return this.canCreateNewCollections||this.canEditAnyCollection||this.canDeleteAnyCollection}get canEditAssignedCollections(){var e;return this.isManager||(null!==(e=this.permissions.editAssignedCollections)&&void 0!==e?e:this.permissions.manageAssignedCollections)}get canDeleteAssignedCollections(){var e;return this.isManager||(null!==(e=this.permissions.deleteAssignedCollections)&&void 0!==e?e:this.permissions.manageAssignedCollections)}get canViewAssignedCollections(){return this.canDeleteAssignedCollections||this.canEditAssignedCollections}get canManageGroups(){return this.isAdmin||this.permissions.manageGroups}get canManageSso(){return this.isAdmin||this.permissions.manageSso}get canManagePolicies(){return this.isAdmin||this.permissions.managePolicies}get canManageUsers(){return this.isAdmin||this.permissions.manageUsers}get canManageUsersPassword(){return this.isAdmin||this.permissions.manageResetPassword}get isExemptFromPolicies(){return this.canManagePolicies}hasAnyPermission(e){return(e.includes(o.Permissions.AccessEventLogs)&&this.canAccessEventLogs||e.includes(o.Permissions.AccessImportExport)&&this.canAccessImportExport||e.includes(o.Permissions.AccessReports)&&this.canAccessReports||e.includes(o.Permissions.CreateNewCollections)&&this.canCreateNewCollections||e.includes(o.Permissions.EditAnyCollection)&&this.canEditAnyCollection||e.includes(o.Permissions.DeleteAnyCollection)&&this.canDeleteAnyCollection||e.includes(o.Permissions.EditAssignedCollections)&&this.canEditAssignedCollections||e.includes(o.Permissions.DeleteAssignedCollections)&&this.canDeleteAssignedCollections||e.includes(o.Permissions.ManageGroups)&&this.canManageGroups||e.includes(o.Permissions.ManageOrganization)&&this.isOwner||e.includes(o.Permissions.ManagePolicies)&&this.canManagePolicies||e.includes(o.Permissions.ManageUsers)&&this.canManageUsers||e.includes(o.Permissions.ManageUsersPassword)&&this.canManageUsersPassword||e.includes(o.Permissions.ManageSso)&&this.canManageSso||e.includes(o.Permissions.ManageBilling)&&this.canManageBilling)&&(this.enabled||this.isOwner)}get canManageBilling(){return this.isOwner&&(this.isProviderUser||!this.hasProvider)}get hasProvider(){return null!=this.providerId||null!=this.providerName}}},20929:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Password=void 0;const i=n(67783),r=n(40170),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.buildDomainModel(this,e,{password:null}),this.lastUsedDate=new Date(e.lastUsedDate))}decrypt(e,t){return this.decryptObj(new r.PasswordHistoryView(this),{password:null},e,t)}toPasswordHistoryData(){const e=new i.PasswordHistoryData;return e.lastUsedDate=this.lastUsedDate.toISOString(),this.buildDataModel(this,e,{password:null}),e}}t.Password=a},49471:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.defaultType="",this.minLength=0,this.useUppercase=!1,this.useLowercase=!1,this.useNumbers=!1,this.numberCount=0,this.useSpecial=!1,this.specialCount=0,this.minNumberWords=0,this.capitalize=!1,this.includeNumber=!1}inEffect(){return""!==this.defaultType||this.minLength>0||this.numberCount>0||this.specialCount>0||this.useUppercase||this.useLowercase||this.useNumbers||this.useSpecial||this.minNumberWords>0||this.capitalize||this.includeNumber}}t.PasswordGeneratorPolicyOptions=r},41317:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Policy=void 0;const i=n(6183);class r extends i.default{constructor(e){super(),null!=e&&(this.id=e.id,this.organizationId=e.organizationId,this.type=e.type,this.data=e.data,this.enabled=e.enabled)}}t.Policy=r},61453:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Provider=void 0;const i=n(72418),r=n(30185);t.Provider=class{constructor(e){null!=e&&(this.id=e.id,this.name=e.name,this.status=e.status,this.type=e.type,this.enabled=e.enabled,this.userId=e.userId,this.useEvents=e.useEvents)}get canAccess(){return!!this.isProviderAdmin||this.enabled&&this.status===i.ProviderUserStatusType.Confirmed}get canCreateOrganizations(){return this.enabled&&this.isProviderAdmin}get canManageUsers(){return this.isProviderAdmin}get canAccessEventLogs(){return this.isProviderAdmin}get isProviderAdmin(){return this.type===r.ProviderUserType.ProviderAdmin}}},41389:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordPolicyOptions=void 0;const i=n(6183);class r extends i.default{constructor(){super(...arguments),this.autoEnrollEnabled=!1}}t.ResetPasswordPolicyOptions=r},7012:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNote=void 0;const i=n(85201),r=n(99364),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.type=e.type)}decrypt(e,t){return Promise.resolve(new r.SecureNoteView(this))}toSecureNoteData(){const e=new i.SecureNoteData;return e.type=this.type,e}}t.SecureNote=a},38265:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Send=void 0;const r=n(70149),o=n(82769),a=n(1725),s=n(6183),l=n(32924),c=n(22785);class d extends s.default{constructor(e){if(super(),null!=e)switch(this.buildDomainModel(this,e,{id:null,accessId:null,name:null,notes:null,key:null},["id","accessId"]),this.type=e.type,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.password=e.password,this.disabled=e.disabled,this.revisionDate=null!=e.revisionDate?new Date(e.revisionDate):null,this.deletionDate=null!=e.deletionDate?new Date(e.deletionDate):null,this.expirationDate=null!=e.expirationDate?new Date(e.expirationDate):null,this.hideEmail=e.hideEmail,this.type){case r.SendType.Text:this.text=new c.SendText(e.text);break;case r.SendType.File:this.file=new l.SendFile(e.file)}}decrypt(){return i(this,void 0,void 0,(function*(){const e=new a.SendView(this);let t;const n=o.Utils.global.bitwardenContainerService;if(!n)throw new Error("global bitwardenContainerService not initialized.");t=n.getCryptoService();try{e.key=yield t.decryptToBytes(this.key,null),e.cryptoKey=yield t.makeSendKey(e.key)}catch(i){}switch(yield this.decryptObj(e,{name:null,notes:null},null,e.cryptoKey),this.type){case r.SendType.File:e.file=yield this.file.decrypt(e.cryptoKey);break;case r.SendType.Text:e.text=yield this.text.decrypt(e.cryptoKey)}return e}))}}t.Send=d},95708:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccess=void 0;const r=n(70149),o=n(46984),a=n(6183),s=n(32924),l=n(22785);class c extends a.default{constructor(e){if(super(),null!=e)switch(this.buildDomainModel(this,e,{id:null,name:null,expirationDate:null,creatorIdentifier:null},["id","expirationDate","creatorIdentifier"]),this.type=e.type,this.type){case r.SendType.Text:this.text=new l.SendText(e.text);break;case r.SendType.File:this.file=new s.SendFile(e.file)}}decrypt(e){return i(this,void 0,void 0,(function*(){const t=new o.SendAccessView(this);switch(yield this.decryptObj(t,{name:null},null,e),this.type){case r.SendType.File:t.file=yield this.file.decrypt(e);break;case r.SendType.Text:t.text=yield this.text.decrypt(e)}return t}))}}t.SendAccess=c},32924:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendFile=void 0;const r=n(22620),o=n(6183);class a extends o.default{constructor(e){super(),null!=e&&(this.size=e.size,this.buildDomainModel(this,e,{id:null,sizeName:null,fileName:null},["id","sizeName"]))}decrypt(e){return i(this,void 0,void 0,(function*(){return yield this.decryptObj(new r.SendFileView(this),{fileName:null},null,e)}))}}t.SendFile=a},22785:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendText=void 0;const i=n(59884),r=n(6183);class o extends r.default{constructor(e){super(),null!=e&&(this.hidden=e.hidden,this.buildDomainModel(this,e,{text:null},[]))}decrypt(e){return this.decryptObj(new i.SendTextView(this),{text:null},null,e)}}t.SendText=o},20126:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SortedCiphersCache=void 0;t.SortedCiphersCache=class{constructor(e){this.comparator=e,this.sortedCiphersByUrl=new Map,this.timeouts=new Map}isCached(e){return this.sortedCiphersByUrl.has(e)}addCiphers(e,t){t.sort(this.comparator),this.sortedCiphersByUrl.set(e,new n(t)),this.resetTimer(e)}getLastUsed(e){return this.resetTimer(e),this.isCached(e)?this.sortedCiphersByUrl.get(e).getLastUsed():null}getLastLaunched(e){return this.isCached(e)?this.sortedCiphersByUrl.get(e).getLastLaunched():null}getNext(e){return this.resetTimer(e),this.isCached(e)?this.sortedCiphersByUrl.get(e).getNext():null}updateLastUsedIndex(e){this.isCached(e)&&this.sortedCiphersByUrl.get(e).updateLastUsedIndex()}clear(){this.sortedCiphersByUrl.clear(),this.timeouts.clear()}resetTimer(e){clearTimeout(this.timeouts.get(e)),this.timeouts.set(e,setTimeout((()=>{this.sortedCiphersByUrl.delete(e),this.timeouts.delete(e)}),3e3))}};class n{constructor(e){this.ciphers=e,this.lastUsedIndex=-1}getLastUsed(){return this.lastUsedIndex=Math.max(this.lastUsedIndex,0),this.ciphers[this.lastUsedIndex]}getLastLaunched(){return this.ciphers.filter((e=>{var t;return null===(t=e.localData)||void 0===t?void 0:t.lastLaunched})).sort(((e,t)=>t.localData.lastLaunched.valueOf()-e.localData.lastLaunched.valueOf()))[0]}getNextIndex(){return(this.lastUsedIndex+1)%this.ciphers.length}getNext(){return this.ciphers[this.getNextIndex()]}updateLastUsedIndex(){this.lastUsedIndex=this.getNextIndex()}}},43208:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.State=void 0;t.State=class{constructor(e){this.accounts={},this.authenticatedAccounts=[],this.accountActivity={},this.globals=e}}},69731:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SymmetricCryptoKey=void 0;const i=n(28588),r=n(82769);t.SymmetricCryptoKey=class{constructor(e,t){if(null==e)throw new Error("Must provide key");if(null==t)if(32===e.byteLength)t=i.EncryptionType.AesCbc256_B64;else{if(64!==e.byteLength)throw new Error("Unable to determine encType.");t=i.EncryptionType.AesCbc256_HmacSha256_B64}if(this.key=e,this.encType=t,t===i.EncryptionType.AesCbc256_B64&&32===e.byteLength)this.encKey=e,this.macKey=null;else if(t===i.EncryptionType.AesCbc128_HmacSha256_B64&&32===e.byteLength)this.encKey=e.slice(0,16),this.macKey=e.slice(16,32);else{if(t!==i.EncryptionType.AesCbc256_HmacSha256_B64||64!==e.byteLength)throw new Error("Unsupported encType/key length.");this.encKey=e.slice(0,32),this.macKey=e.slice(32,64)}null!=this.key&&(this.keyB64=r.Utils.fromBufferToB64(this.key)),null!=this.encKey&&(this.encKeyB64=r.Utils.fromBufferToB64(this.encKey)),null!=this.macKey&&(this.macKeyB64=r.Utils.fromBufferToB64(this.macKey))}}},51301:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TreeNode=void 0;t.TreeNode=class{constructor(e,t,n){this.children=[],this.parent=n,this.node=e,this.node.name=t}}},95672:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WindowState=void 0;t.WindowState=class{}},24030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CardExport=void 0;const i=n(53763),r=n(22205),o=n(91766);class a{constructor(e){var t,n,i,r,a,s;null!=e&&(e instanceof o.CardView?(this.cardholderName=e.cardholderName,this.brand=e.brand,this.number=e.number,this.expMonth=e.expMonth,this.expYear=e.expYear,this.code=e.code):(this.cardholderName=null===(t=e.cardholderName)||void 0===t?void 0:t.encryptedString,this.brand=null===(n=e.brand)||void 0===n?void 0:n.encryptedString,this.number=null===(i=e.number)||void 0===i?void 0:i.encryptedString,this.expMonth=null===(r=e.expMonth)||void 0===r?void 0:r.encryptedString,this.expYear=null===(a=e.expYear)||void 0===a?void 0:a.encryptedString,this.code=null===(s=e.code)||void 0===s?void 0:s.encryptedString))}static template(){const e=new a;return e.cardholderName="John Doe",e.brand="visa",e.number="4242424242424242",e.expMonth="04",e.expYear="2023",e.code="123",e}static toView(e,t=new o.CardView){return t.cardholderName=e.cardholderName,t.brand=e.brand,t.number=e.number,t.expMonth=e.expMonth,t.expYear=e.expYear,t.code=e.code,t}static toDomain(e,t=new i.Card){return t.cardholderName=null!=e.cardholderName?new r.EncString(e.cardholderName):null,t.brand=null!=e.brand?new r.EncString(e.brand):null,t.number=null!=e.number?new r.EncString(e.number):null,t.expMonth=null!=e.expMonth?new r.EncString(e.expMonth):null,t.expYear=null!=e.expYear?new r.EncString(e.expYear):null,t.code=null!=e.code?new r.EncString(e.code):null,t}}t.CardExport=a},54655:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherExport=void 0;const i=n(34453),r=n(32773),o=n(49624),a=n(22205),s=n(97144),l=n(24030),c=n(85890),d=n(90397),p=n(35473),u=n(46187);class m{static template(){const e=new m;return e.organizationId=null,e.collectionIds=null,e.folderId=null,e.type=r.CipherType.Login,e.name="Item name",e.notes="Some notes about this item.",e.favorite=!1,e.fields=[],e.login=null,e.secureNote=null,e.card=null,e.identity=null,e.reprompt=i.CipherRepromptType.None,e}static toView(e,t=new s.CipherView){var n,o,a;if(t.type=e.type,t.folderId=e.folderId,null==t.organizationId&&(t.organizationId=e.organizationId),t.collectionIds||e.collectionIds){const i=new Set((null!==(n=t.collectionIds)&&void 0!==n?n:[]).concat(null!==(o=e.collectionIds)&&void 0!==o?o:[]));t.collectionIds=Array.from(i.values())}switch(t.name=e.name,t.notes=e.notes,t.favorite=e.favorite,t.reprompt=null!==(a=e.reprompt)&&void 0!==a?a:i.CipherRepromptType.None,null!=e.fields&&(t.fields=e.fields.map((e=>c.FieldExport.toView(e)))),e.type){case r.CipherType.Login:t.login=p.LoginExport.toView(e.login);break;case r.CipherType.SecureNote:t.secureNote=u.SecureNoteExport.toView(e.secureNote);break;case r.CipherType.Card:t.card=l.CardExport.toView(e.card);break;case r.CipherType.Identity:t.identity=d.IdentityExport.toView(e.identity)}return t}static toDomain(e,t=new o.Cipher){var n;switch(t.type=e.type,t.folderId=e.folderId,null==t.organizationId&&(t.organizationId=e.organizationId),t.name=null!=e.name?new a.EncString(e.name):null,t.notes=null!=e.notes?new a.EncString(e.notes):null,t.favorite=e.favorite,t.reprompt=null!==(n=e.reprompt)&&void 0!==n?n:i.CipherRepromptType.None,null!=e.fields&&(t.fields=e.fields.map((e=>c.FieldExport.toDomain(e)))),e.type){case r.CipherType.Login:t.login=p.LoginExport.toDomain(e.login);break;case r.CipherType.SecureNote:t.secureNote=u.SecureNoteExport.toDomain(e.secureNote);break;case r.CipherType.Card:t.card=l.CardExport.toDomain(e.card);break;case r.CipherType.Identity:t.identity=d.IdentityExport.toDomain(e.identity)}return t}build(e){var t,n;switch(this.organizationId=e.organizationId,this.folderId=e.folderId,this.type=e.type,this.reprompt=e.reprompt,e instanceof s.CipherView?(this.name=e.name,this.notes=e.notes):(this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.notes=null===(n=e.notes)||void 0===n?void 0:n.encryptedString),this.favorite=e.favorite,null!=e.fields&&(s.CipherView,this.fields=e.fields.map((e=>new c.FieldExport(e)))),e.type){case r.CipherType.Login:this.login=new p.LoginExport(e.login);break;case r.CipherType.SecureNote:this.secureNote=new u.SecureNoteExport(e.secureNote);break;case r.CipherType.Card:this.card=new l.CardExport(e.card);break;case r.CipherType.Identity:this.identity=new d.IdentityExport(e.identity)}}}t.CipherExport=m},83460:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherWithIdExport=void 0;const i=n(54655);class r extends i.CipherExport{build(e){this.id=e.id,super.build(e),this.collectionIds=e.collectionIds}}t.CipherWithIdExport=r},21923:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionExport=void 0;const i=n(65642),r=n(22205),o=n(86001);class a{static template(){const e=new a;return e.organizationId="00000000-0000-0000-0000-000000000000",e.name="Collection name",e.externalId=null,e}static toView(e,t=new o.CollectionView){return t.name=e.name,t.externalId=e.externalId,null==t.organizationId&&(t.organizationId=e.organizationId),t}static toDomain(e,t=new i.Collection){return t.name=null!=e.name?new r.EncString(e.name):null,t.externalId=e.externalId,null==t.organizationId&&(t.organizationId=e.organizationId),t}build(e){var t;this.organizationId=e.organizationId,e instanceof o.CollectionView?this.name=e.name:this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.externalId=e.externalId}}t.CollectionExport=a},5136:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionWithIdExport=void 0;const i=n(21923);class r extends i.CollectionExport{build(e){this.id=e.id,super.build(e)}}t.CollectionWithIdExport=r},42587:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventExport=void 0;const i=n(80253);t.EventExport=class{constructor(e){this.message=e.humanReadableMessage,this.appIcon=e.appIcon,this.appName=e.appName,this.userId=e.userId,this.userName=e.userName,this.userEmail=e.userEmail,this.date=e.date,this.ip=e.ip,this.type=i.EventType[e.type],this.installationId=e.installationId}}},85890:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldExport=void 0;const i=n(67577),r=n(22205),o=n(84379),a=n(58545);class s{constructor(e){var t,n;null!=e&&(e instanceof a.FieldView?(this.name=e.name,this.value=e.value):(this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString,this.value=null===(n=e.value)||void 0===n?void 0:n.encryptedString),this.type=e.type,this.linkedId=e.linkedId)}static template(){const e=new s;return e.name="Field name",e.value="Some value",e.type=i.FieldType.Text,e}static toView(e,t=new a.FieldView){return t.type=e.type,t.value=e.value,t.name=e.name,t.linkedId=e.linkedId,t}static toDomain(e,t=new o.Field){return t.type=e.type,t.value=null!=e.value?new r.EncString(e.value):null,t.name=null!=e.name?new r.EncString(e.name):null,t.linkedId=e.linkedId,t}}t.FieldExport=s},8787:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderExport=void 0;const i=n(22205),r=n(59738),o=n(36914);class a{static template(){const e=new a;return e.name="Folder name",e}static toView(e,t=new o.FolderView){return t.name=e.name,t}static toDomain(e,t=new r.Folder){return t.name=null!=e.name?new i.EncString(e.name):null,t}build(e){var t;e instanceof o.FolderView?this.name=e.name:this.name=null===(t=e.name)||void 0===t?void 0:t.encryptedString}}t.FolderExport=a},31087:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderWithIdExport=void 0;const i=n(8787);class r extends i.FolderExport{build(e){this.id=e.id,super.build(e)}}t.FolderWithIdExport=r},90397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityExport=void 0;const i=n(22205),r=n(809),o=n(48830);class a{constructor(e){var t,n,i,r,a,s,l,c,d,p,u,m,h,v,f,g,y,x;null!=e&&(e instanceof o.IdentityView?(this.title=e.title,this.firstName=e.firstName,this.middleName=e.middleName,this.lastName=e.lastName,this.address1=e.address1,this.address2=e.address2,this.address3=e.address3,this.city=e.city,this.state=e.state,this.postalCode=e.postalCode,this.country=e.country,this.company=e.company,this.email=e.email,this.phone=e.phone,this.ssn=e.ssn,this.username=e.username,this.passportNumber=e.passportNumber,this.licenseNumber=e.licenseNumber):(this.title=null===(t=e.title)||void 0===t?void 0:t.encryptedString,this.firstName=null===(n=e.firstName)||void 0===n?void 0:n.encryptedString,this.middleName=null===(i=e.middleName)||void 0===i?void 0:i.encryptedString,this.lastName=null===(r=e.lastName)||void 0===r?void 0:r.encryptedString,this.address1=null===(a=e.address1)||void 0===a?void 0:a.encryptedString,this.address2=null===(s=e.address2)||void 0===s?void 0:s.encryptedString,this.address3=null===(l=e.address3)||void 0===l?void 0:l.encryptedString,this.city=null===(c=e.city)||void 0===c?void 0:c.encryptedString,this.state=null===(d=e.state)||void 0===d?void 0:d.encryptedString,this.postalCode=null===(p=e.postalCode)||void 0===p?void 0:p.encryptedString,this.country=null===(u=e.country)||void 0===u?void 0:u.encryptedString,this.company=null===(m=e.company)||void 0===m?void 0:m.encryptedString,this.email=null===(h=e.email)||void 0===h?void 0:h.encryptedString,this.phone=null===(v=e.phone)||void 0===v?void 0:v.encryptedString,this.ssn=null===(f=e.ssn)||void 0===f?void 0:f.encryptedString,this.username=null===(g=e.username)||void 0===g?void 0:g.encryptedString,this.passportNumber=null===(y=e.passportNumber)||void 0===y?void 0:y.encryptedString,this.licenseNumber=null===(x=e.licenseNumber)||void 0===x?void 0:x.encryptedString))}static template(){const e=new a;return e.title="Mr",e.firstName="John",e.middleName="William",e.lastName="Doe",e.address1="123 Any St",e.address2="Apt #123",e.address3=null,e.city="New York",e.state="NY",e.postalCode="10001",e.country="US",e.company="Acme Inc.",e.email="john@company.com",e.phone="5555551234",e.ssn="000-123-4567",e.username="jdoe",e.passportNumber="US-123456789",e.licenseNumber="D123-12-123-12333",e}static toView(e,t=new o.IdentityView){return t.title=e.title,t.firstName=e.firstName,t.middleName=e.middleName,t.lastName=e.lastName,t.address1=e.address1,t.address2=e.address2,t.address3=e.address3,t.city=e.city,t.state=e.state,t.postalCode=e.postalCode,t.country=e.country,t.company=e.company,t.email=e.email,t.phone=e.phone,t.ssn=e.ssn,t.username=e.username,t.passportNumber=e.passportNumber,t.licenseNumber=e.licenseNumber,t}static toDomain(e,t=new r.Identity){return t.title=null!=e.title?new i.EncString(e.title):null,t.firstName=null!=e.firstName?new i.EncString(e.firstName):null,t.middleName=null!=e.middleName?new i.EncString(e.middleName):null,t.lastName=null!=e.lastName?new i.EncString(e.lastName):null,t.address1=null!=e.address1?new i.EncString(e.address1):null,t.address2=null!=e.address2?new i.EncString(e.address2):null,t.address3=null!=e.address3?new i.EncString(e.address3):null,t.city=null!=e.city?new i.EncString(e.city):null,t.state=null!=e.state?new i.EncString(e.state):null,t.postalCode=null!=e.postalCode?new i.EncString(e.postalCode):null,t.country=null!=e.country?new i.EncString(e.country):null,t.company=null!=e.company?new i.EncString(e.company):null,t.email=null!=e.email?new i.EncString(e.email):null,t.phone=null!=e.phone?new i.EncString(e.phone):null,t.ssn=null!=e.ssn?new i.EncString(e.ssn):null,t.username=null!=e.username?new i.EncString(e.username):null,t.passportNumber=null!=e.passportNumber?new i.EncString(e.passportNumber):null,t.licenseNumber=null!=e.licenseNumber?new i.EncString(e.licenseNumber):null,t}}t.IdentityExport=a},35473:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginExport=void 0;const i=n(22205),r=n(89642),o=n(28331),a=n(34931);class s{constructor(e){var t,n,i;null!=e&&(null!=e.uris&&(o.LoginView,this.uris=e.uris.map((e=>new a.LoginUriExport(e)))),e instanceof o.LoginView?(this.username=e.username,this.password=e.password,this.totp=e.totp):(this.username=null===(t=e.username)||void 0===t?void 0:t.encryptedString,this.password=null===(n=e.password)||void 0===n?void 0:n.encryptedString,this.totp=null===(i=e.totp)||void 0===i?void 0:i.encryptedString))}static template(){const e=new s;return e.uris=[],e.username="jdoe",e.password="myp@ssword123",e.totp="JBSWY3DPEHPK3PXP",e}static toView(e,t=new o.LoginView){return null!=e.uris&&(t.uris=e.uris.map((e=>a.LoginUriExport.toView(e)))),t.username=e.username,t.password=e.password,t.totp=e.totp,t}static toDomain(e,t=new r.Login){return null!=e.uris&&(t.uris=e.uris.map((e=>a.LoginUriExport.toDomain(e)))),t.username=null!=e.username?new i.EncString(e.username):null,t.password=null!=e.password?new i.EncString(e.password):null,t.totp=null!=e.totp?new i.EncString(e.totp):null,t}}t.LoginExport=s},34931:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriExport=void 0;const i=n(22205),r=n(28947),o=n(16506);class a{constructor(e){var t;this.match=null,null!=e&&(e instanceof o.LoginUriView?this.uri=e.uri:this.uri=null===(t=e.uri)||void 0===t?void 0:t.encryptedString,this.match=e.match)}static template(){const e=new a;return e.uri="https://google.com",e.match=null,e}static toView(e,t=new o.LoginUriView){return t.uri=e.uri,t.match=e.match,t}static toDomain(e,t=new r.LoginUri){return t.uri=null!=e.uri?new i.EncString(e.uri):null,t.match=e.match,t}}t.LoginUriExport=a},46187:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteExport=void 0;const i=n(76716),r=n(7012),o=n(99364);class a{constructor(e){null!=e&&(this.type=e.type)}static template(){const e=new a;return e.type=i.SecureNoteType.Generic,e}static toView(e,t=new o.SecureNoteView){return t.type=e.type,t}static toDomain(e,t=new r.SecureNote){return t.type=e.type,t}}t.SecureNoteExport=a},50738:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetKeyConnectorKeyRequest=void 0;t.SetKeyConnectorKeyRequest=class{constructor(e,t,n,i,r){this.key=e,this.kdf=t,this.kdfIterations=n,this.orgIdentifier=i,this.keys=r}}},12680:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyOTPRequest=void 0;t.VerifyOTPRequest=class{constructor(e){this.OTP=e}}},84054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentRequest=void 0;t.AttachmentRequest=class{}},29602:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncConfigRequest=void 0;t.BillingSyncConfigRequest=class{constructor(e){this.billingSyncKey=e}}},34191:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BitPayInvoiceRequest=void 0;t.BitPayInvoiceRequest=class{}},82890:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkDeleteRequest=void 0;t.CipherBulkDeleteRequest=class{constructor(e,t){this.ids=null==e?[]:e,this.organizationId=t}}},34392:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkMoveRequest=void 0;t.CipherBulkMoveRequest=class{constructor(e,t){this.ids=null==e?[]:e,this.folderId=t}}},8488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkRestoreRequest=void 0;t.CipherBulkRestoreRequest=class{constructor(e){this.ids=null==e?[]:e}}},61418:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherBulkShareRequest=void 0;const i=n(24906);t.CipherBulkShareRequest=class{constructor(e,t){null!=e&&(this.ciphers=[],e.forEach((e=>{this.ciphers.push(new i.CipherWithIdRequest(e))}))),this.collectionIds=t}}},53994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherCollectionsRequest=void 0;t.CipherCollectionsRequest=class{constructor(e){this.collectionIds=null==e?[]:e}}},62415:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherCreateRequest=void 0;const i=n(16391);t.CipherCreateRequest=class{constructor(e){this.cipher=new i.CipherRequest(e),this.collectionIds=e.collectionIds}}},16391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherRequest=void 0;const i=n(32773),r=n(59773),o=n(9592),a=n(25327),s=n(89387),l=n(32357),c=n(3865),d=n(84054);t.CipherRequest=class{constructor(e){switch(this.type=e.type,this.folderId=e.folderId,this.organizationId=e.organizationId,this.name=e.name?e.name.encryptedString:null,this.notes=e.notes?e.notes.encryptedString:null,this.favorite=e.favorite,this.lastKnownRevisionDate=e.revisionDate,this.reprompt=e.reprompt,this.type){case i.CipherType.Login:this.login=new s.LoginApi,this.login.uris=null,this.login.username=e.login.username?e.login.username.encryptedString:null,this.login.password=e.login.password?e.login.password.encryptedString:null,this.login.passwordRevisionDate=null!=e.login.passwordRevisionDate?e.login.passwordRevisionDate.toISOString():null,this.login.totp=e.login.totp?e.login.totp.encryptedString:null,this.login.autofillOnPageLoad=e.login.autofillOnPageLoad,null!=e.login.uris&&(this.login.uris=e.login.uris.map((e=>{const t=new l.LoginUriApi;return t.uri=null!=e.uri?e.uri.encryptedString:null,t.match=null!=e.match?e.match:null,t})));break;case i.CipherType.SecureNote:this.secureNote=new c.SecureNoteApi,this.secureNote.type=e.secureNote.type;break;case i.CipherType.Card:this.card=new r.CardApi,this.card.cardholderName=null!=e.card.cardholderName?e.card.cardholderName.encryptedString:null,this.card.brand=null!=e.card.brand?e.card.brand.encryptedString:null,this.card.number=null!=e.card.number?e.card.number.encryptedString:null,this.card.expMonth=null!=e.card.expMonth?e.card.expMonth.encryptedString:null,this.card.expYear=null!=e.card.expYear?e.card.expYear.encryptedString:null,this.card.code=null!=e.card.code?e.card.code.encryptedString:null;break;case i.CipherType.Identity:this.identity=new a.IdentityApi,this.identity.title=null!=e.identity.title?e.identity.title.encryptedString:null,this.identity.firstName=null!=e.identity.firstName?e.identity.firstName.encryptedString:null,this.identity.middleName=null!=e.identity.middleName?e.identity.middleName.encryptedString:null,this.identity.lastName=null!=e.identity.lastName?e.identity.lastName.encryptedString:null,this.identity.address1=null!=e.identity.address1?e.identity.address1.encryptedString:null,this.identity.address2=null!=e.identity.address2?e.identity.address2.encryptedString:null,this.identity.address3=null!=e.identity.address3?e.identity.address3.encryptedString:null,this.identity.city=null!=e.identity.city?e.identity.city.encryptedString:null,this.identity.state=null!=e.identity.state?e.identity.state.encryptedString:null,this.identity.postalCode=null!=e.identity.postalCode?e.identity.postalCode.encryptedString:null,this.identity.country=null!=e.identity.country?e.identity.country.encryptedString:null,this.identity.company=null!=e.identity.company?e.identity.company.encryptedString:null,this.identity.email=null!=e.identity.email?e.identity.email.encryptedString:null,this.identity.phone=null!=e.identity.phone?e.identity.phone.encryptedString:null,this.identity.ssn=null!=e.identity.ssn?e.identity.ssn.encryptedString:null,this.identity.username=null!=e.identity.username?e.identity.username.encryptedString:null,this.identity.passportNumber=null!=e.identity.passportNumber?e.identity.passportNumber.encryptedString:null,this.identity.licenseNumber=null!=e.identity.licenseNumber?e.identity.licenseNumber.encryptedString:null}null!=e.fields&&(this.fields=e.fields.map((e=>{const t=new o.FieldApi;return t.type=e.type,t.name=e.name?e.name.encryptedString:null,t.value=e.value?e.value.encryptedString:null,t.linkedId=e.linkedId,t}))),null!=e.passwordHistory&&(this.passwordHistory=[],e.passwordHistory.forEach((e=>{this.passwordHistory.push({lastUsedDate:e.lastUsedDate,password:e.password?e.password.encryptedString:null})}))),null!=e.attachments&&(this.attachments={},this.attachments2={},e.attachments.forEach((e=>{const t=e.fileName?e.fileName.encryptedString:null;this.attachments[e.id]=t;const n=new d.AttachmentRequest;n.fileName=t,null!=e.key&&(n.key=e.key.encryptedString),this.attachments2[e.id]=n})))}}},3467:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherShareRequest=void 0;const i=n(16391);t.CipherShareRequest=class{constructor(e){this.cipher=new i.CipherRequest(e),this.collectionIds=e.collectionIds}}},24906:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherWithIdRequest=void 0;const i=n(16391);class r extends i.CipherRequest{constructor(e){super(e),this.id=e.id}}t.CipherWithIdRequest=r},54554:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionRequest=void 0;t.CollectionRequest=class{constructor(e){this.groups=[],null!=e&&(this.name=e.name?e.name.encryptedString:null,this.externalId=e.externalId)}}},12666:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteRecoverRequest=void 0;t.DeleteRecoverRequest=class{}},92829:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeviceRequest=void 0;t.DeviceRequest=class{constructor(e,t){this.type=t.getDevice(),this.name=t.getDeviceString(),this.identifier=e,this.pushToken=null}}},79669:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmailRequest=void 0;const i=n(8283);class r extends i.EmailTokenRequest{}t.EmailRequest=r},8283:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmailTokenRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.EmailTokenRequest=r},51128:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAcceptRequest=void 0;t.EmergencyAccessAcceptRequest=class{}},16657:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessConfirmRequest=void 0;t.EmergencyAccessConfirmRequest=class{}},85985:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessInviteRequest=void 0;t.EmergencyAccessInviteRequest=class{}},64288:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessPasswordRequest=void 0;t.EmergencyAccessPasswordRequest=class{}},8468:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessUpdateRequest=void 0;t.EmergencyAccessUpdateRequest=class{}},20604:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventRequest=void 0;t.EventRequest=class{}},16466:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderRequest=void 0;t.FolderRequest=class{constructor(e){this.name=e.name?e.name.encryptedString:null}}},49586:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderWithIdRequest=void 0;const i=n(16466);class r extends i.FolderRequest{constructor(e){super(e),this.id=e.id}}t.FolderWithIdRequest=r},13234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupRequest=void 0;t.GroupRequest=class{constructor(){this.collections=[]}}},81047:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiTokenRequest=void 0;const i=n(77886);class r extends i.TokenRequest{constructor(e,t,n,i){super(n,i),this.clientId=e,this.clientSecret=t,this.twoFactor=n}toIdentityToken(){const e=super.toIdentityToken(this.clientId);return e.scope=this.clientId.startsWith("organization")?"api.organization":"api",e.grant_type="client_credentials",e.client_secret=this.clientSecret,e}}t.ApiTokenRequest=r},10037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordTokenRequest=void 0;const i=n(82769),r=n(77886);class o extends r.TokenRequest{constructor(e,t,n,i,r){super(i,r),this.email=e,this.masterPasswordHash=t,this.captchaResponse=n,this.twoFactor=i}toIdentityToken(e){const t=super.toIdentityToken(e);return t.grant_type="password",t.username=this.email,t.password=this.masterPasswordHash,null!=this.captchaResponse&&(t.captchaResponse=this.captchaResponse),t}alterIdentityTokenHeaders(e){e.set("Auth-Email",i.Utils.fromUtf8ToUrlB64(this.email))}}t.PasswordTokenRequest=o},11685:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoTokenRequest=void 0;const i=n(77886);class r extends i.TokenRequest{constructor(e,t,n,i,r){super(i,r),this.code=e,this.codeVerifier=t,this.redirectUri=n,this.twoFactor=i}toIdentityToken(e){const t=super.toIdentityToken(e);return t.grant_type="authorization_code",t.code=this.code,t.code_verifier=this.codeVerifier,t.redirect_uri=this.redirectUri,t}}t.SsoTokenRequest=r},77886:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenRequest=void 0;t.TokenRequest=class{constructor(e,t){this.twoFactor=e,this.device=null!=t?t:null}alterIdentityTokenHeaders(e){}setTwoFactor(e){this.twoFactor=e}toIdentityToken(e){const t={scope:"api offline_access",client_id:e};return this.device&&(t.deviceType=this.device.type,t.deviceIdentifier=this.device.identifier,t.deviceName=this.device.name),this.twoFactor.token&&null!=this.twoFactor.provider&&(t.twoFactorToken=this.twoFactor.token,t.twoFactorProvider=this.twoFactor.provider,t.twoFactorRemember=this.twoFactor.remember?"1":"0"),t}}},74598:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenRequestTwoFactor=void 0;t.TokenRequestTwoFactor=class{constructor(e=null,t=null,n=!1){this.provider=e,this.token=t,this.remember=n}}},89537:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportCiphersRequest=void 0;t.ImportCiphersRequest=class{constructor(){this.ciphers=[],this.folders=[],this.folderRelationships=[]}}},85644:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImportOrganizationCiphersRequest=void 0;t.ImportOrganizationCiphersRequest=class{constructor(){this.ciphers=[],this.collections=[],this.collectionRelationships=[]}}},17287:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KdfRequest=void 0;const i=n(49472);class r extends i.PasswordRequest{}t.KdfRequest=r},35711:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorUserKeyRequest=void 0;t.KeyConnectorUserKeyRequest=class{constructor(e){this.key=e}}},74284:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysRequest=void 0;t.KeysRequest=class{constructor(e,t){this.publicKey=e,this.encryptedPrivateKey=t}}},58795:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KvpRequest=void 0;t.KvpRequest=class{constructor(e,t){this.key=e,this.value=t}}},75118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSponsorshipRedeemRequest=void 0;t.OrganizationSponsorshipRedeemRequest=class{}},20577:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSsoRequest=void 0;t.OrganizationSsoRequest=class{constructor(){this.enabled=!1}}},32137:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyRequest=void 0;const i=n(43497),r=n(36119);class o extends r.SecretVerificationRequest{constructor(){super(...arguments),this.type=i.OrganizationApiKeyType.Default}}t.OrganizationApiKeyRequest=o},19036:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionRequest=void 0;t.OrganizationConnectionRequest=class{constructor(e,t,n,i){this.organizationId=e,this.type=t,this.enabled=n,this.config=i}}},7017:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationCreateRequest=void 0;t.OrganizationCreateRequest=class{}},39950:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationKeysRequest=void 0;const i=n(74284);class r extends i.KeysRequest{constructor(e,t){super(e,t)}}t.OrganizationKeysRequest=r},83828:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionUpdateRequest=void 0;t.OrganizationSubscriptionUpdateRequest=class{constructor(e,t){this.seatAdjustment=e,this.maxAutoscaleSeats=t}}},91260:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationTaxInfoUpdateRequest=void 0;const i=n(26374);class r extends i.TaxInfoUpdateRequest{}t.OrganizationTaxInfoUpdateRequest=r},20086:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUpdateRequest=void 0;t.OrganizationUpdateRequest=class{}},80006:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUpgradeRequest=void 0;t.OrganizationUpgradeRequest=class{}},1992:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserAcceptRequest=void 0;t.OrganizationUserAcceptRequest=class{}},23405:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkConfirmRequest=void 0;t.OrganizationUserBulkConfirmRequest=class{constructor(e){this.keys=e}}},91247:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkRequest=void 0;t.OrganizationUserBulkRequest=class{constructor(e){this.ids=null==e?[]:e}}},87169:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserConfirmRequest=void 0;t.OrganizationUserConfirmRequest=class{}},3714:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserInviteRequest=void 0;t.OrganizationUserInviteRequest=class{constructor(){this.emails=[],this.collections=[]}}},27784:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordEnrollmentRequest=void 0;t.OrganizationUserResetPasswordEnrollmentRequest=class{}},32593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordRequest=void 0;t.OrganizationUserResetPasswordRequest=class{}},50533:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserUpdateGroupsRequest=void 0;t.OrganizationUserUpdateGroupsRequest=class{constructor(){this.groupIds=[]}}},57981:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserUpdateRequest=void 0;t.OrganizationUserUpdateRequest=class{constructor(){this.collections=[]}}},77992:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHintRequest=void 0;t.PasswordHintRequest=class{constructor(e){this.email=e}}},49472:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.PasswordRequest=r},84707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentRequest=void 0;const i=n(91260);class r extends i.OrganizationTaxInfoUpdateRequest{}t.PaymentRequest=r},17200:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyRequest=void 0;t.PolicyRequest=class{}},59791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreloginRequest=void 0;t.PreloginRequest=class{constructor(e){this.email=e}}},47298:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderAddOrganizationRequest=void 0;t.ProviderAddOrganizationRequest=class{}},16567:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderOrganizationCreateRequest=void 0;t.ProviderOrganizationCreateRequest=class{constructor(e,t){this.clientOwnerEmail=e,this.organizationCreateRequest=t}}},22748:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderSetupRequest=void 0;t.ProviderSetupRequest=class{}},23839:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUpdateRequest=void 0;t.ProviderUpdateRequest=class{}},82900:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserAcceptRequest=void 0;t.ProviderUserAcceptRequest=class{}},64279:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkConfirmRequest=void 0;t.ProviderUserBulkConfirmRequest=class{constructor(e){this.keys=e}}},69316:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkRequest=void 0;t.ProviderUserBulkRequest=class{constructor(e){this.ids=null==e?[]:e}}},98407:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserConfirmRequest=void 0;t.ProviderUserConfirmRequest=class{}},7896:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserInviteRequest=void 0;t.ProviderUserInviteRequest=class{constructor(){this.emails=[]}}},731:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserUpdateRequest=void 0;t.ProviderUserUpdateRequest=class{}},90185:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReferenceEventRequest=void 0;t.ReferenceEventRequest=class{}},6556:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterRequest=void 0;t.RegisterRequest=class{constructor(e,t,n,i,r,o,a,s,l){this.email=e,this.name=t,this.masterPasswordHash=n,this.key=r,this.kdf=o,this.kdfIterations=a,this.referenceData=s,this.captchaResponse=l,this.masterPasswordHint=i||null}}},36119:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecretVerificationRequest=void 0;t.SecretVerificationRequest=class{}},11342:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionReadOnlyRequest=void 0;t.SelectionReadOnlyRequest=class{constructor(e,t,n){this.id=e,this.readOnly=t,this.hidePasswords=n}}},74012:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessRequest=void 0;t.SendAccessRequest=class{}},34386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendRequest=void 0;const i=n(70149),r=n(39255),o=n(8057);t.SendRequest=class{constructor(e,t){switch(this.type=e.type,this.fileLength=t,this.name=e.name?e.name.encryptedString:null,this.notes=e.notes?e.notes.encryptedString:null,this.maxAccessCount=e.maxAccessCount,this.expirationDate=null!=e.expirationDate?e.expirationDate.toISOString():null,this.deletionDate=null!=e.deletionDate?e.deletionDate.toISOString():null,this.key=null!=e.key?e.key.encryptedString:null,this.password=e.password,this.disabled=e.disabled,this.hideEmail=e.hideEmail,this.type){case i.SendType.Text:this.text=new o.SendTextApi,this.text.text=null!=e.text.text?e.text.text.encryptedString:null,this.text.hidden=e.text.hidden;break;case i.SendType.File:this.file=new r.SendFileApi,this.file.fileName=null!=e.file.fileName?e.file.fileName.encryptedString:null}}}},12909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendWithIdRequest=void 0;const i=n(34386);class r extends i.SendRequest{constructor(e){super(e),this.id=e.id}}t.SendWithIdRequest=r},57751:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordRequest=void 0;t.SetPasswordRequest=class{constructor(e,t,n,i,r,o,a){this.masterPasswordHash=e,this.key=t,this.masterPasswordHint=n,this.kdf=i,this.kdfIterations=r,this.orgIdentifier=o,this.keys=a}}},78703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StorageRequest=void 0;t.StorageRequest=class{}},26374:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoUpdateRequest=void 0;t.TaxInfoUpdateRequest=class{}},88307:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorEmailRequest=r},40205:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorProviderRequest=r},6188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoveryRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.TwoFactorRecoveryRequest=r},55785:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateDomainsRequest=void 0;t.UpdateDomainsRequest=class{}},93357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateKeyRequest=void 0;t.UpdateKeyRequest=class{constructor(){this.ciphers=[],this.folders=[],this.sends=[]}}},82567:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateProfileRequest=void 0;t.UpdateProfileRequest=class{constructor(e,t){this.culture="en-US",this.name=e,this.masterPasswordHint=t||null}}},55931:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordRequest=void 0;const i=n(32593);class r extends i.OrganizationUserResetPasswordRequest{}t.UpdateTempPasswordRequest=r},57952:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorAuthenticatorRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorAuthenticatorRequest=r},37682:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorDuoRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorDuoRequest=r},3191:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorEmailRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorEmailRequest=r},40088:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorWebAuthnDeleteRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorWebAuthnDeleteRequest=r},72842:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorWebAuthnRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorWebAuthnRequest=r},17128:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTwoFactorYubioOtpRequest=void 0;const i=n(36119);class r extends i.SecretVerificationRequest{}t.UpdateTwoFactorYubioOtpRequest=r},85314:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyBankRequest=void 0;t.VerifyBankRequest=class{}},25086:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyDeleteRecoverRequest=void 0;t.VerifyDeleteRecoverRequest=class{constructor(e,t){this.userId=e,this.token=t}}},81106:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailRequest=void 0;t.VerifyEmailRequest=class{constructor(e,t){this.userId=e,this.token=t}}},92666:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.apiKey=this.getResponseProperty("ApiKey"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.ApiKeyResponse=r},33146:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.url=this.getResponseProperty("Url"),this.fileName=this.getResponseProperty("FileName"),this.key=this.getResponseProperty("Key"),this.size=this.getResponseProperty("Size"),this.sizeName=this.getResponseProperty("SizeName")}}t.AttachmentResponse=r},15487:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentUploadDataResponse=void 0;const i=n(17273),r=n(31238);class o extends i.BaseResponse{constructor(e){super(e),this.url=null,this.attachmentId=this.getResponseProperty("AttachmentId"),this.fileUploadType=this.getResponseProperty("FileUploadType");const t=this.getResponseProperty("CipherResponse"),n=this.getResponseProperty("CipherMiniResponse");this.cipherResponse=null==t?null:new r.CipherResponse(t),this.cipherMiniResponse=null==n?null:new r.CipherResponse(n),this.url=this.getResponseProperty("Url")}}t.AttachmentUploadDataResponse=o},17273:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseResponse=void 0;t.BaseResponse=class{constructor(e){this.response=e}getResponseProperty(e,t=null,n=!1){if(null==e||""===e)throw new Error("propertyName must not be null/empty.");if(null==t&&null!=this.response&&(t=this.response),null==t)return null;if(!n&&void 0===t[e]){let n=null;n=e.charAt(0)===e.charAt(0).toUpperCase()?e.charAt(0).toLowerCase():e.charAt(0).toUpperCase(),e.length>1&&(n+=e.slice(1)),void 0===t[e=n]&&(e=e.toLowerCase()),void 0===t[e]&&(e=e.toUpperCase())}return t[e]}}},56215:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingHistoryResponse=void 0;const i=n(17273),r=n(61700);class o extends i.BaseResponse{constructor(e){super(e),this.invoices=[],this.transactions=[];const t=this.getResponseProperty("Transactions"),n=this.getResponseProperty("Invoices");null!=t&&(this.transactions=t.map((e=>new r.BillingTransactionResponse(e)))),null!=n&&(this.invoices=n.map((e=>new r.BillingInvoiceResponse(e))))}get hasNoHistory(){return 0==this.invoices.length&&0==this.transactions.length}}t.BillingHistoryResponse=o},90070:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingPaymentResponse=void 0;const i=n(17273),r=n(61700);class o extends i.BaseResponse{constructor(e){super(e),this.balance=this.getResponseProperty("Balance");const t=this.getResponseProperty("PaymentSource");this.paymentSource=null==t?null:new r.BillingSourceResponse(t)}}t.BillingPaymentResponse=o},61700:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingTransactionResponse=t.BillingInvoiceResponse=t.BillingSourceResponse=t.BillingResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.invoices=[],this.transactions=[],this.balance=this.getResponseProperty("Balance");const t=this.getResponseProperty("PaymentSource"),n=this.getResponseProperty("Transactions"),i=this.getResponseProperty("Invoices");this.paymentSource=null==t?null:new o(t),null!=n&&(this.transactions=n.map((e=>new s(e)))),null!=i&&(this.invoices=i.map((e=>new a(e))))}}t.BillingResponse=r;class o extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.cardBrand=this.getResponseProperty("CardBrand"),this.description=this.getResponseProperty("Description"),this.needsVerification=this.getResponseProperty("NeedsVerification")}}t.BillingSourceResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.url=this.getResponseProperty("Url"),this.pdfUrl=this.getResponseProperty("PdfUrl"),this.number=this.getResponseProperty("Number"),this.paid=this.getResponseProperty("Paid"),this.date=this.getResponseProperty("Date"),this.amount=this.getResponseProperty("Amount")}}t.BillingInvoiceResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.createdDate=this.getResponseProperty("CreatedDate"),this.amount=this.getResponseProperty("Amount"),this.refunded=this.getResponseProperty("Refunded"),this.partiallyRefunded=this.getResponseProperty("PartiallyRefunded"),this.refundedAmount=this.getResponseProperty("RefundedAmount"),this.type=this.getResponseProperty("Type"),this.paymentMethodType=this.getResponseProperty("PaymentMethodType"),this.details=this.getResponseProperty("Details")}}t.BillingTransactionResponse=s},15461:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BreachAccountResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.addedDate=this.getResponseProperty("AddedDate"),this.breachDate=this.getResponseProperty("BreachDate"),this.dataClasses=this.getResponseProperty("DataClasses"),this.description=this.getResponseProperty("Description"),this.domain=this.getResponseProperty("Domain"),this.isActive=this.getResponseProperty("IsActive"),this.isVerified=this.getResponseProperty("IsVerified"),this.logoPath=this.getResponseProperty("LogoPath"),this.modifiedDate=this.getResponseProperty("ModifiedDate"),this.name=this.getResponseProperty("Name"),this.pwnCount=this.getResponseProperty("PwnCount"),this.title=this.getResponseProperty("Title")}}t.BreachAccountResponse=r},31238:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherResponse=void 0;const i=n(34453),r=n(59773),o=n(9592),a=n(25327),s=n(89387),l=n(3865),c=n(33146),d=n(17273),p=n(43567);class u extends d.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.folderId=this.getResponseProperty("FolderId")||null,this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.notes=this.getResponseProperty("Notes"),this.favorite=this.getResponseProperty("Favorite")||!1,this.edit=!!this.getResponseProperty("Edit"),null==this.getResponseProperty("ViewPassword")?this.viewPassword=!0:this.viewPassword=this.getResponseProperty("ViewPassword"),this.organizationUseTotp=this.getResponseProperty("OrganizationUseTotp"),this.revisionDate=this.getResponseProperty("RevisionDate"),this.collectionIds=this.getResponseProperty("CollectionIds"),this.deletedDate=this.getResponseProperty("DeletedDate");const t=this.getResponseProperty("Login");null!=t&&(this.login=new s.LoginApi(t));const n=this.getResponseProperty("Card");null!=n&&(this.card=new r.CardApi(n));const d=this.getResponseProperty("Identity");null!=d&&(this.identity=new a.IdentityApi(d));const u=this.getResponseProperty("SecureNote");null!=u&&(this.secureNote=new l.SecureNoteApi(u));const m=this.getResponseProperty("Fields");null!=m&&(this.fields=m.map((e=>new o.FieldApi(e))));const h=this.getResponseProperty("Attachments");null!=h&&(this.attachments=h.map((e=>new c.AttachmentResponse(e))));const v=this.getResponseProperty("PasswordHistory");null!=v&&(this.passwordHistory=v.map((e=>new p.PasswordHistoryResponse(e)))),this.reprompt=this.getResponseProperty("Reprompt")||i.CipherRepromptType.None}}t.CipherResponse=u},11228:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionGroupDetailsResponse=t.CollectionDetailsResponse=t.CollectionResponse=void 0;const i=n(17273),r=n(61747);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.name=this.getResponseProperty("Name"),this.externalId=this.getResponseProperty("ExternalId")}}t.CollectionResponse=o;t.CollectionDetailsResponse=class extends o{constructor(e){super(e),this.readOnly=this.getResponseProperty("ReadOnly")||!1}};t.CollectionGroupDetailsResponse=class extends o{constructor(e){super(e),this.groups=[];const t=this.getResponseProperty("Groups");null!=t&&(this.groups=t.map((e=>new r.SelectionReadOnlyResponse(e))))}}},91266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainsResponse=void 0;const i=n(17273),r=n(89457);class o extends i.BaseResponse{constructor(e){super(e),this.globalEquivalentDomains=[],this.equivalentDomains=this.getResponseProperty("EquivalentDomains");const t=this.getResponseProperty("GlobalEquivalentDomains");this.globalEquivalentDomains=null!=t?t.map((e=>new r.GlobalDomainResponse(e))):[]}}t.DomainsResponse=o},50881:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessViewResponse=t.EmergencyAccessTakeoverResponse=t.EmergencyAccessGrantorDetailsResponse=t.EmergencyAccessGranteeDetailsResponse=void 0;const i=n(17273),r=n(31238);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.granteeId=this.getResponseProperty("GranteeId"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.waitTimeDays=this.getResponseProperty("WaitTimeDays"),this.creationDate=this.getResponseProperty("CreationDate")}}t.EmergencyAccessGranteeDetailsResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.grantorId=this.getResponseProperty("GrantorId"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.waitTimeDays=this.getResponseProperty("WaitTimeDays"),this.creationDate=this.getResponseProperty("CreationDate")}}t.EmergencyAccessGrantorDetailsResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.keyEncrypted=this.getResponseProperty("KeyEncrypted"),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations")}}t.EmergencyAccessTakeoverResponse=s;class l extends i.BaseResponse{constructor(e){super(e),this.ciphers=[],this.keyEncrypted=this.getResponseProperty("KeyEncrypted");const t=this.getResponseProperty("Ciphers");null!=t&&(this.ciphers=t.map((e=>new r.CipherResponse(e))))}}t.EmergencyAccessViewResponse=l},33018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ErrorResponse=void 0;const i=n(82769),r=n(17273);class o extends r.BaseResponse{constructor(e,t,n){var r,o;super(e);let a=null;if(null!=e){const t=this.getResponseProperty("ErrorModel");a=t&&n?t:e}a?(this.message=this.getResponseProperty("Message",a),this.validationErrors=this.getResponseProperty("ValidationErrors",a),this.captchaSiteKey=null===(o=null===(r=this.validationErrors)||void 0===r?void 0:r.HCaptcha_SiteKey)||void 0===o?void 0:o[0],this.captchaRequired=!i.Utils.isNullOrWhitespace(this.captchaSiteKey)):429===t&&(this.message="Rate limit exceeded. Try again later."),this.statusCode=t}getSingleMessage(){if(null==this.validationErrors)return this.message;for(const e in this.validationErrors)if(this.validationErrors.hasOwnProperty(e)&&this.validationErrors[e].length)return this.validationErrors[e][0];return this.message}getAllMessages(){const e=[];if(null==this.validationErrors)return e;for(const t in this.validationErrors)this.validationErrors.hasOwnProperty(t)&&this.validationErrors[t].forEach((n=>{let i="";if(t.indexOf("[")>-1&&t.indexOf("]")>-1){const e=t.lastIndexOf(".");i=t.substr(0,e>-1?e:t.length)+": "}e.push(i+n)}));return e}}t.ErrorResponse=o},88850:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.userId=this.getResponseProperty("UserId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.providerId=this.getResponseProperty("ProviderId"),this.cipherId=this.getResponseProperty("CipherId"),this.collectionId=this.getResponseProperty("CollectionId"),this.groupId=this.getResponseProperty("GroupId"),this.policyId=this.getResponseProperty("PolicyId"),this.organizationUserId=this.getResponseProperty("OrganizationUserId"),this.providerUserId=this.getResponseProperty("ProviderUserId"),this.providerOrganizationId=this.getResponseProperty("ProviderOrganizationId"),this.actingUserId=this.getResponseProperty("ActingUserId"),this.date=this.getResponseProperty("Date"),this.deviceType=this.getResponseProperty("DeviceType"),this.ipAddress=this.getResponseProperty("IpAddress"),this.installationId=this.getResponseProperty("InstallationId")}}t.EventResponse=r},8823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.revisionDate=this.getResponseProperty("RevisionDate")}}t.FolderResponse=r},89457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalDomainResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.domains=this.getResponseProperty("Domains"),this.excluded=this.getResponseProperty("Excluded")}}t.GlobalDomainResponse=r},70529:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GroupDetailsResponse=t.GroupResponse=void 0;const i=n(17273),r=n(61747);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.name=this.getResponseProperty("Name"),this.accessAll=this.getResponseProperty("AccessAll"),this.externalId=this.getResponseProperty("ExternalId")}}t.GroupResponse=o;t.GroupDetailsResponse=class extends o{constructor(e){super(e),this.collections=[];const t=this.getResponseProperty("Collections");null!=t&&(this.collections=t.map((e=>new r.SelectionReadOnlyResponse(e))))}}},56659:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityCaptchaResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.siteKey=this.getResponseProperty("HCaptcha_SiteKey")}}t.IdentityCaptchaResponse=r},7269:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityTokenResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.accessToken=e.access_token,this.expiresIn=e.expires_in,this.refreshToken=e.refresh_token,this.tokenType=e.token_type,this.resetMasterPassword=this.getResponseProperty("ResetMasterPassword"),this.privateKey=this.getResponseProperty("PrivateKey"),this.key=this.getResponseProperty("Key"),this.twoFactorToken=this.getResponseProperty("TwoFactorToken"),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations"),this.forcePasswordReset=this.getResponseProperty("ForcePasswordReset"),this.apiUseKeyConnector=this.getResponseProperty("ApiUseKeyConnector"),this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl")}}t.IdentityTokenResponse=r},38326:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityTwoFactorResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.twoFactorProviders2=new Map,this.captchaToken=this.getResponseProperty("CaptchaBypassToken"),this.twoFactorProviders=this.getResponseProperty("TwoFactorProviders");const t=this.getResponseProperty("TwoFactorProviders2");if(null!=t)for(const n in t)t.hasOwnProperty(n)&&this.twoFactorProviders2.set(parseInt(n,null),t[n])}}t.IdentityTwoFactorResponse=r},93140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorUserKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.key=this.getResponseProperty("Key")}}t.KeyConnectorUserKeyResponse=r},14325:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.KeysResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.privateKey=this.getResponseProperty("PrivateKey"),this.publicKey=this.getResponseProperty("PublicKey")}}t.KeysResponse=r},7865:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ListResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e,t){super(e);const n=this.getResponseProperty("Data");this.data=null==n?[]:n.map((e=>new t(e))),this.continuationToken=this.getResponseProperty("ContinuationToken")}}t.ListResponse=r},16178:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncSendNotification=t.UserNotification=t.SyncFolderNotification=t.SyncCipherNotification=t.NotificationResponse=void 0;const i=n(7837),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.contextId=this.getResponseProperty("ContextId"),this.type=this.getResponseProperty("Type");const t=this.getResponseProperty("Payload");switch(this.type){case i.NotificationType.SyncCipherCreate:case i.NotificationType.SyncCipherDelete:case i.NotificationType.SyncCipherUpdate:case i.NotificationType.SyncLoginDelete:this.payload=new a(t);break;case i.NotificationType.SyncFolderCreate:case i.NotificationType.SyncFolderDelete:case i.NotificationType.SyncFolderUpdate:this.payload=new s(t);break;case i.NotificationType.SyncVault:case i.NotificationType.SyncCiphers:case i.NotificationType.SyncOrgKeys:case i.NotificationType.SyncSettings:case i.NotificationType.LogOut:this.payload=new l(t);break;case i.NotificationType.SyncSendCreate:case i.NotificationType.SyncSendUpdate:case i.NotificationType.SyncSendDelete:this.payload=new c(t)}}}t.NotificationResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.collectionIds=this.getResponseProperty("CollectionIds"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncCipherNotification=a;class s extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncFolderNotification=s;class l extends r.BaseResponse{constructor(e){super(e),this.userId=this.getResponseProperty("UserId"),this.date=new Date(this.getResponseProperty("Date"))}}t.UserNotification=l;class c extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.revisionDate=new Date(this.getResponseProperty("RevisionDate"))}}t.SyncSendNotification=c},57344:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSsoResponse=void 0;const i=n(21021),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.data=null!=this.getResponseProperty("Data")?new i.SsoConfigApi(this.getResponseProperty("Data")):null,this.urls=new a(this.getResponseProperty("Urls"))}}t.OrganizationSsoResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.callbackPath=this.getResponseProperty("CallbackPath"),this.signedOutCallbackPath=this.getResponseProperty("SignedOutCallbackPath"),this.spEntityId=this.getResponseProperty("SpEntityId"),this.spMetadataUrl=this.getResponseProperty("SpMetadataUrl"),this.spAcsUrl=this.getResponseProperty("SpAcsUrl")}}},53661:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationApiKeyInformationResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.keyType=this.getResponseProperty("KeyType")}}t.OrganizationApiKeyInformationResponse=r},12386:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationAutoEnrollStatusResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.resetPasswordEnabled=this.getResponseProperty("ResetPasswordEnabled")}}t.OrganizationAutoEnrollStatusResponse=r},27847:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationConnectionResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e,t){super(e),this.id=this.getResponseProperty("Id"),this.type=this.getResponseProperty("Type"),this.organizationId=this.getResponseProperty("OrganizationId"),this.enabled=this.getResponseProperty("Enabled");const n=this.getResponseProperty("Config");this.config=null==n?null:new t(n)}}t.OrganizationConnectionResponse=r},37595:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationKeysResponse=void 0;const i=n(14325);class r extends i.KeysResponse{constructor(e){super(e)}}t.OrganizationKeysResponse=r},68673:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationResponse=void 0;const i=n(17273),r=n(88290);class o extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.identifier=this.getResponseProperty("Identifier"),this.name=this.getResponseProperty("Name"),this.businessName=this.getResponseProperty("BusinessName"),this.businessAddress1=this.getResponseProperty("BusinessAddress1"),this.businessAddress2=this.getResponseProperty("BusinessAddress2"),this.businessAddress3=this.getResponseProperty("BusinessAddress3"),this.businessCountry=this.getResponseProperty("BusinessCountry"),this.businessTaxNumber=this.getResponseProperty("BusinessTaxNumber"),this.billingEmail=this.getResponseProperty("BillingEmail");const t=this.getResponseProperty("Plan");this.plan=null==t?null:new r.PlanResponse(t),this.planType=this.getResponseProperty("PlanType"),this.seats=this.getResponseProperty("Seats"),this.maxAutoscaleSeats=this.getResponseProperty("MaxAutoscaleSeats"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.useGroups=this.getResponseProperty("UseGroups"),this.useDirectory=this.getResponseProperty("UseDirectory"),this.useEvents=this.getResponseProperty("UseEvents"),this.useTotp=this.getResponseProperty("UseTotp"),this.use2fa=this.getResponseProperty("Use2fa"),this.useApi=this.getResponseProperty("UseApi"),this.useResetPassword=this.getResponseProperty("UseResetPassword"),this.hasPublicAndPrivateKeys=this.getResponseProperty("HasPublicAndPrivateKeys")}}t.OrganizationResponse=o},62560:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSponsorshipSyncStatusResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e);const t=this.getResponseProperty("LastSyncDate");t&&(this.lastSyncDate=new Date(t))}}t.OrganizationSponsorshipSyncStatusResponse=r},71098:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionResponse=void 0;const i=n(68673),r=n(71892);class o extends i.OrganizationResponse{constructor(e){super(e),this.storageName=this.getResponseProperty("StorageName"),this.storageGb=this.getResponseProperty("StorageGb");const t=this.getResponseProperty("Subscription");this.subscription=null==t?null:new r.BillingSubscriptionResponse(t);const n=this.getResponseProperty("UpcomingInvoice");this.upcomingInvoice=null==n?null:new r.BillingSubscriptionUpcomingInvoiceResponse(n),this.expiration=this.getResponseProperty("Expiration")}}t.OrganizationSubscriptionResponse=o},89072:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkPublicKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.key=this.getResponseProperty("Key")}}t.OrganizationUserBulkPublicKeyResponse=r},55022:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserBulkResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.error=this.getResponseProperty("Error")}}t.OrganizationUserBulkResponse=r},68749:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationUserResetPasswordDetailsReponse=t.OrganizationUserDetailsResponse=t.OrganizationUserUserDetailsResponse=t.OrganizationUserResponse=void 0;const i=n(96926),r=n(17273),o=n(61747);class a extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.permissions=new i.PermissionsApi(this.getResponseProperty("Permissions")),this.accessAll=this.getResponseProperty("AccessAll"),this.resetPasswordEnrolled=this.getResponseProperty("ResetPasswordEnrolled")}}t.OrganizationUserResponse=a;t.OrganizationUserUserDetailsResponse=class extends a{constructor(e){var t;super(e),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.twoFactorEnabled=this.getResponseProperty("TwoFactorEnabled"),this.usesKeyConnector=null!==(t=this.getResponseProperty("UsesKeyConnector"))&&void 0!==t&&t}};t.OrganizationUserDetailsResponse=class extends a{constructor(e){super(e),this.collections=[];const t=this.getResponseProperty("Collections");null!=t&&(this.collections=t.map((e=>new o.SelectionReadOnlyResponse(e))))}};class s extends r.BaseResponse{constructor(e){super(e),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations"),this.resetPasswordKey=this.getResponseProperty("ResetPasswordKey"),this.encryptedPrivateKey=this.getResponseProperty("EncryptedPrivateKey")}}t.OrganizationUserResetPasswordDetailsReponse=s},43567:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.password=this.getResponseProperty("Password"),this.lastUsedDate=this.getResponseProperty("LastUsedDate")}}t.PasswordHistoryResponse=r},38402:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentResponse=void 0;const i=n(17273),r=n(59665);class o extends i.BaseResponse{constructor(e){super(e);const t=this.getResponseProperty("UserProfile");null!=t&&(this.userProfile=new r.ProfileResponse(t)),this.paymentIntentClientSecret=this.getResponseProperty("PaymentIntentClientSecret"),this.success=this.getResponseProperty("Success")}}t.PaymentResponse=o},88290:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PlanResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.type=this.getResponseProperty("Type"),this.product=this.getResponseProperty("Product"),this.name=this.getResponseProperty("Name"),this.isAnnual=this.getResponseProperty("IsAnnual"),this.nameLocalizationKey=this.getResponseProperty("NameLocalizationKey"),this.descriptionLocalizationKey=this.getResponseProperty("DescriptionLocalizationKey"),this.canBeUsedByBusiness=this.getResponseProperty("CanBeUsedByBusiness"),this.baseSeats=this.getResponseProperty("BaseSeats"),this.baseStorageGb=this.getResponseProperty("BaseStorageGb"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxUsers=this.getResponseProperty("MaxUsers"),this.hasAdditionalSeatsOption=this.getResponseProperty("HasAdditionalSeatsOption"),this.maxAdditionalSeats=this.getResponseProperty("MaxAdditionalSeats"),this.hasAdditionalStorageOption=this.getResponseProperty("HasAdditionalStorageOption"),this.maxAdditionalStorage=this.getResponseProperty("MaxAdditionalStorage"),this.hasPremiumAccessOption=this.getResponseProperty("HasPremiumAccessOption"),this.trialPeriodDays=this.getResponseProperty("TrialPeriodDays"),this.hasSelfHost=this.getResponseProperty("HasSelfHost"),this.hasPolicies=this.getResponseProperty("HasPolicies"),this.hasGroups=this.getResponseProperty("HasGroups"),this.hasDirectory=this.getResponseProperty("HasDirectory"),this.hasEvents=this.getResponseProperty("HasEvents"),this.hasTotp=this.getResponseProperty("HasTotp"),this.has2fa=this.getResponseProperty("Has2fa"),this.hasApi=this.getResponseProperty("HasApi"),this.hasSso=this.getResponseProperty("HasSso"),this.hasResetPassword=this.getResponseProperty("HasResetPassword"),this.usersGetPremium=this.getResponseProperty("UsersGetPremium"),this.upgradeSortOrder=this.getResponseProperty("UpgradeSortOrder"),this.displaySortOrder=this.getResponseProperty("SortOrder"),this.legacyYear=this.getResponseProperty("LegacyYear"),this.disabled=this.getResponseProperty("Disabled"),this.stripePlanId=this.getResponseProperty("StripePlanId"),this.stripeSeatPlanId=this.getResponseProperty("StripeSeatPlanId"),this.stripeStoragePlanId=this.getResponseProperty("StripeStoragePlanId"),this.stripePremiumAccessPlanId=this.getResponseProperty("StripePremiumAccessPlanId"),this.basePrice=this.getResponseProperty("BasePrice"),this.seatPrice=this.getResponseProperty("SeatPrice"),this.additionalStoragePricePerGb=this.getResponseProperty("AdditionalStoragePricePerGb"),this.premiumAccessOptionPrice=this.getResponseProperty("PremiumAccessOptionPrice")}}t.PlanResponse=r},64030:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.organizationId=this.getResponseProperty("OrganizationId"),this.type=this.getResponseProperty("Type"),this.data=this.getResponseProperty("Data"),this.enabled=this.getResponseProperty("Enabled")}}t.PolicyResponse=r},52196:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreloginResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.kdf=this.getResponseProperty("Kdf"),this.kdfIterations=this.getResponseProperty("KdfIterations")}}t.PreloginResponse=r},68475:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileOrganizationResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){var t,n;super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.usePolicies=this.getResponseProperty("UsePolicies"),this.useGroups=this.getResponseProperty("UseGroups"),this.useDirectory=this.getResponseProperty("UseDirectory"),this.useEvents=this.getResponseProperty("UseEvents"),this.useTotp=this.getResponseProperty("UseTotp"),this.use2fa=this.getResponseProperty("Use2fa"),this.useApi=this.getResponseProperty("UseApi"),this.useSso=this.getResponseProperty("UseSso"),this.useKeyConnector=null!==(t=this.getResponseProperty("UseKeyConnector"))&&void 0!==t&&t,this.useResetPassword=this.getResponseProperty("UseResetPassword"),this.selfHost=this.getResponseProperty("SelfHost"),this.usersGetPremium=this.getResponseProperty("UsersGetPremium"),this.seats=this.getResponseProperty("Seats"),this.maxCollections=this.getResponseProperty("MaxCollections"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.key=this.getResponseProperty("Key"),this.hasPublicAndPrivateKeys=this.getResponseProperty("HasPublicAndPrivateKeys"),this.status=this.getResponseProperty("Status"),this.type=this.getResponseProperty("Type"),this.enabled=this.getResponseProperty("Enabled"),this.ssoBound=this.getResponseProperty("SsoBound"),this.identifier=this.getResponseProperty("Identifier"),this.permissions=new i.PermissionsApi(this.getResponseProperty("permissions")),this.resetPasswordEnrolled=this.getResponseProperty("ResetPasswordEnrolled"),this.userId=this.getResponseProperty("UserId"),this.providerId=this.getResponseProperty("ProviderId"),this.providerName=this.getResponseProperty("ProviderName"),this.familySponsorshipFriendlyName=this.getResponseProperty("FamilySponsorshipFriendlyName"),this.familySponsorshipAvailable=this.getResponseProperty("FamilySponsorshipAvailable"),this.planProductType=this.getResponseProperty("PlanProductType"),this.keyConnectorEnabled=null!==(n=this.getResponseProperty("KeyConnectorEnabled"))&&void 0!==n&&n,this.keyConnectorUrl=this.getResponseProperty("KeyConnectorUrl");const r=this.getResponseProperty("FamilySponsorshipLastSyncDate");r&&(this.familySponsorshipLastSyncDate=new Date(r));const o=this.getResponseProperty("FamilySponsorshipValidUntil");o&&(this.familySponsorshipValidUntil=new Date(o)),this.familySponsorshipToDelete=this.getResponseProperty("FamilySponsorshipToDelete")}}t.ProfileOrganizationResponse=o},13949:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileProviderOrganizationResponse=void 0;const i=n(68475);class r extends i.ProfileOrganizationResponse{constructor(e){super(e),this.keyConnectorEnabled=!1}}t.ProfileProviderOrganizationResponse=r},65116:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileProviderResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.key=this.getResponseProperty("Key"),this.status=this.getResponseProperty("Status"),this.type=this.getResponseProperty("Type"),this.enabled=this.getResponseProperty("Enabled"),this.permissions=new i.PermissionsApi(this.getResponseProperty("permissions")),this.userId=this.getResponseProperty("UserId"),this.useEvents=this.getResponseProperty("UseEvents")}}t.ProfileProviderResponse=o},59665:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileResponse=void 0;const i=n(17273),r=n(68475),o=n(13949),a=n(65116);class s extends i.BaseResponse{constructor(e){var t,n;super(e),this.organizations=[],this.providers=[],this.providerOrganizations=[],this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email"),this.emailVerified=this.getResponseProperty("EmailVerified"),this.masterPasswordHint=this.getResponseProperty("MasterPasswordHint"),this.premium=this.getResponseProperty("Premium"),this.culture=this.getResponseProperty("Culture"),this.twoFactorEnabled=this.getResponseProperty("TwoFactorEnabled"),this.key=this.getResponseProperty("Key"),this.privateKey=this.getResponseProperty("PrivateKey"),this.securityStamp=this.getResponseProperty("SecurityStamp"),this.forcePasswordReset=null!==(t=this.getResponseProperty("ForcePasswordReset"))&&void 0!==t&&t,this.usesKeyConnector=null!==(n=this.getResponseProperty("UsesKeyConnector"))&&void 0!==n&&n;const i=this.getResponseProperty("Organizations");null!=i&&(this.organizations=i.map((e=>new r.ProfileOrganizationResponse(e))));const s=this.getResponseProperty("Providers");null!=s&&(this.providers=s.map((e=>new a.ProfileProviderResponse(e))));const l=this.getResponseProperty("ProviderOrganizations");null!=l&&(this.providerOrganizations=l.map((e=>new o.ProfileProviderOrganizationResponse(e))))}}t.ProfileResponse=s},89001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderOrganizationOrganizationDetailsResponse=t.ProviderOrganizationResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.providerId=this.getResponseProperty("ProviderId"),this.organizationId=this.getResponseProperty("OrganizationId"),this.key=this.getResponseProperty("Key"),this.settings=this.getResponseProperty("Settings"),this.creationDate=this.getResponseProperty("CreationDate"),this.revisionDate=this.getResponseProperty("RevisionDate")}}t.ProviderOrganizationResponse=r;t.ProviderOrganizationOrganizationDetailsResponse=class extends r{constructor(e){super(e),this.organizationName=this.getResponseProperty("OrganizationName")}}},98073:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.name=this.getResponseProperty("Name"),this.businessName=this.getResponseProperty("BusinessName"),this.billingEmail=this.getResponseProperty("BillingEmail")}}t.ProviderResponse=r},82842:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkPublicKeyResponse=void 0;const i=n(89072);class r extends i.OrganizationUserBulkPublicKeyResponse{}t.ProviderUserBulkPublicKeyResponse=r},62161:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserBulkResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.error=this.getResponseProperty("Error")}}t.ProviderUserBulkResponse=r},67177:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderUserUserDetailsResponse=t.ProviderUserResponse=void 0;const i=n(96926),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.userId=this.getResponseProperty("UserId"),this.type=this.getResponseProperty("Type"),this.status=this.getResponseProperty("Status"),this.permissions=new i.PermissionsApi(this.getResponseProperty("Permissions"))}}t.ProviderUserResponse=o;t.ProviderUserUserDetailsResponse=class extends o{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.email=this.getResponseProperty("Email")}}},61747:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SelectionReadOnlyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.readOnly=this.getResponseProperty("ReadOnly"),this.hidePasswords=this.getResponseProperty("HidePasswords")}}t.SelectionReadOnlyResponse=r},3882:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessResponse=void 0;const i=n(39255),r=n(8057),o=n(17273);class a extends o.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name");const t=this.getResponseProperty("Text");null!=t&&(this.text=new r.SendTextApi(t));const n=this.getResponseProperty("File");null!=n&&(this.file=new i.SendFileApi(n)),this.expirationDate=this.getResponseProperty("ExpirationDate"),this.creatorIdentifier=this.getResponseProperty("CreatorIdentifier")}}t.SendAccessResponse=a},56247:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileDownloadDataResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=null,this.url=null,this.id=this.getResponseProperty("Id"),this.url=this.getResponseProperty("Url")}}t.SendFileDownloadDataResponse=r},69654:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileUploadDataResponse=void 0;const i=n(17273),r=n(22391);class o extends i.BaseResponse{constructor(e){super(e),this.url=null,this.fileUploadType=this.getResponseProperty("FileUploadType");const t=this.getResponseProperty("SendResponse");this.sendResponse=null==t?null:new r.SendResponse(t),this.url=this.getResponseProperty("Url")}}t.SendFileUploadDataResponse=o},22391:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendResponse=void 0;const i=n(39255),r=n(8057),o=n(17273);class a extends o.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.accessId=this.getResponseProperty("AccessId"),this.type=this.getResponseProperty("Type"),this.name=this.getResponseProperty("Name"),this.notes=this.getResponseProperty("Notes"),this.key=this.getResponseProperty("Key"),this.maxAccessCount=this.getResponseProperty("MaxAccessCount"),this.accessCount=this.getResponseProperty("AccessCount"),this.revisionDate=this.getResponseProperty("RevisionDate"),this.expirationDate=this.getResponseProperty("ExpirationDate"),this.deletionDate=this.getResponseProperty("DeletionDate"),this.password=this.getResponseProperty("Password"),this.disable=this.getResponseProperty("Disabled")||!1,this.hideEmail=this.getResponseProperty("HideEmail")||!1;const t=this.getResponseProperty("Text");null!=t&&(this.text=new r.SendTextApi(t));const n=this.getResponseProperty("File");null!=n&&(this.file=new i.SendFileApi(n))}}t.SendResponse=a},71892:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSubscriptionUpcomingInvoiceResponse=t.BillingSubscriptionItemResponse=t.BillingSubscriptionResponse=t.SubscriptionResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.storageName=this.getResponseProperty("StorageName"),this.storageGb=this.getResponseProperty("StorageGb"),this.maxStorageGb=this.getResponseProperty("MaxStorageGb"),this.license=this.getResponseProperty("License"),this.expiration=this.getResponseProperty("Expiration"),this.usingInAppPurchase=this.getResponseProperty("UsingInAppPurchase");const t=this.getResponseProperty("Subscription"),n=this.getResponseProperty("UpcomingInvoice");this.subscription=null==t?null:new o(t),this.upcomingInvoice=null==n?null:new s(n)}}t.SubscriptionResponse=r;class o extends i.BaseResponse{constructor(e){super(e),this.items=[],this.trialEndDate=this.getResponseProperty("TrialStartDate"),this.trialEndDate=this.getResponseProperty("TrialEndDate"),this.periodStartDate=this.getResponseProperty("PeriodStartDate"),this.periodEndDate=this.getResponseProperty("PeriodEndDate"),this.cancelledDate=this.getResponseProperty("CancelledDate"),this.cancelAtEndDate=this.getResponseProperty("CancelAtEndDate"),this.status=this.getResponseProperty("Status"),this.cancelled=this.getResponseProperty("Cancelled");const t=this.getResponseProperty("Items");null!=t&&(this.items=t.map((e=>new a(e))))}}t.BillingSubscriptionResponse=o;class a extends i.BaseResponse{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.amount=this.getResponseProperty("Amount"),this.quantity=this.getResponseProperty("Quantity"),this.interval=this.getResponseProperty("Interval"),this.sponsoredSubscriptionItem=this.getResponseProperty("SponsoredSubscriptionItem")}}t.BillingSubscriptionItemResponse=a;class s extends i.BaseResponse{constructor(e){super(e),this.date=this.getResponseProperty("Date"),this.amount=this.getResponseProperty("Amount")}}t.BillingSubscriptionUpcomingInvoiceResponse=s},79230:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncResponse=void 0;const i=n(17273),r=n(31238),o=n(11228),a=n(91266),s=n(8823),l=n(64030),c=n(59665),d=n(22391);class p extends i.BaseResponse{constructor(e){super(e),this.folders=[],this.collections=[],this.ciphers=[],this.policies=[],this.sends=[];const t=this.getResponseProperty("Profile");null!=t&&(this.profile=new c.ProfileResponse(t));const n=this.getResponseProperty("Folders");null!=n&&(this.folders=n.map((e=>new s.FolderResponse(e))));const i=this.getResponseProperty("Collections");null!=i&&(this.collections=i.map((e=>new o.CollectionDetailsResponse(e))));const p=this.getResponseProperty("Ciphers");null!=p&&(this.ciphers=p.map((e=>new r.CipherResponse(e))));const u=this.getResponseProperty("Domains");null!=u&&(this.domains=new a.DomainsResponse(u));const m=this.getResponseProperty("Policies");null!=m&&(this.policies=m.map((e=>new l.PolicyResponse(e))));const h=this.getResponseProperty("Sends");null!=h&&(this.sends=h.map((e=>new d.SendResponse(e))))}}t.SyncResponse=p},10273:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.taxId=this.getResponseProperty("TaxIdNumber"),this.taxIdType=this.getResponseProperty("TaxIdType"),this.line1=this.getResponseProperty("Line1"),this.line2=this.getResponseProperty("Line2"),this.city=this.getResponseProperty("City"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.country=this.getResponseProperty("Country")}}t.TaxInfoResponse=r},67955:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TaxRateResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.id=this.getResponseProperty("Id"),this.country=this.getResponseProperty("Country"),this.state=this.getResponseProperty("State"),this.postalCode=this.getResponseProperty("PostalCode"),this.rate=this.getResponseProperty("Rate")}}t.TaxRateResponse=r},1244:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticatorResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.key=this.getResponseProperty("Key")}}t.TwoFactorAuthenticatorResponse=r},33111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorDuoResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.host=this.getResponseProperty("Host"),this.secretKey=this.getResponseProperty("SecretKey"),this.integrationKey=this.getResponseProperty("IntegrationKey")}}t.TwoFactorDuoResponse=r},88540:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.email=this.getResponseProperty("Email")}}t.TwoFactorEmailResponse=r},50891:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorProviderResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.type=this.getResponseProperty("Type")}}t.TwoFactorProviderResponse=r},40387:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoverResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.code=this.getResponseProperty("Code")}}t.TwoFactorRecoverResponse=r},61329:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ChallengeResponse=t.KeyResponse=t.TwoFactorWebAuthnResponse=void 0;const i=n(82769),r=n(17273);class o extends r.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled");const t=this.getResponseProperty("Keys");this.keys=null==t?null:t.map((e=>new a(e)))}}t.TwoFactorWebAuthnResponse=o;class a extends r.BaseResponse{constructor(e){super(e),this.name=this.getResponseProperty("Name"),this.id=this.getResponseProperty("Id"),this.migrated=this.getResponseProperty("Migrated")}}t.KeyResponse=a;class s extends r.BaseResponse{constructor(e){super(e),this.attestation=this.getResponseProperty("attestation"),this.authenticatorSelection=this.getResponseProperty("authenticatorSelection"),this.challenge=i.Utils.fromUrlB64ToArray(this.getResponseProperty("challenge")),this.excludeCredentials=this.getResponseProperty("excludeCredentials").map((e=>(e.id=i.Utils.fromUrlB64ToArray(e.id).buffer,e))),this.extensions=this.getResponseProperty("extensions"),this.pubKeyCredParams=this.getResponseProperty("pubKeyCredParams"),this.rp=this.getResponseProperty("rp"),this.timeout=this.getResponseProperty("timeout");const t=this.getResponseProperty("user");t.id=i.Utils.fromUrlB64ToArray(t.id),this.user=t}}t.ChallengeResponse=s},78086:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorYubiKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.enabled=this.getResponseProperty("Enabled"),this.key1=this.getResponseProperty("Key1"),this.key2=this.getResponseProperty("Key2"),this.key3=this.getResponseProperty("Key3"),this.key4=this.getResponseProperty("Key4"),this.key5=this.getResponseProperty("Key5"),this.nfc=this.getResponseProperty("Nfc")}}t.TwoFactorYubiKeyResponse=r},86457:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserKeyResponse=void 0;const i=n(17273);class r extends i.BaseResponse{constructor(e){super(e),this.userId=this.getResponseProperty("UserId"),this.publicKey=this.getResponseProperty("PublicKey")}}t.UserKeyResponse=r},57759:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentView=void 0;t.AttachmentView=class{constructor(e){this.id=null,this.url=null,this.size=null,this.sizeName=null,this.fileName=null,this.key=null,e&&(this.id=e.id,this.url=e.url,this.size=e.size,this.sizeName=e.sizeName)}get fileSize(){try{if(null!=this.size)return parseInt(this.size,null)}catch(e){}return 0}}},91766:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.CardView=void 0;const o=n(31909),a=n(60628),s=n(63262);class l extends s.ItemView{constructor(){super(),this.cardholderName=null,this.expMonth=null,this.expYear=null,this.code=null,this._brand=null,this._number=null,this._subTitle=null}get maskedCode(){return null!=this.code?"•".repeat(this.code.length):null}get maskedNumber(){return null!=this.number?"•".repeat(this.number.length):null}get brand(){return this._brand}set brand(e){this._brand=e,this._subTitle=null}get number(){return this._number}set number(e){this._number=e,this._subTitle=null}get subTitle(){if(null==this._subTitle&&(this._subTitle=this.brand,null!=this.number&&this.number.length>=4)){null!=this._subTitle&&""!==this._subTitle?this._subTitle+=", ":this._subTitle="";const e=this.number.length>=5&&null!=this.number.match(new RegExp("^3[47]"))?5:4;this._subTitle+="*"+this.number.substr(this.number.length-e)}return this._subTitle}get expiration(){if(!this.expMonth&&!this.expYear)return null;let e=null!=this.expMonth?("0"+this.expMonth).slice(-2):"__";return e+=" / "+(null!=this.expYear?this.formatYear(this.expYear):"____"),e}formatYear(e){return 2===e.length?"20"+e:e}}i([a.linkedFieldOption(o.CardLinkedId.CardholderName),r("design:type",String)],l.prototype,"cardholderName",void 0),i([a.linkedFieldOption(o.CardLinkedId.ExpMonth,"expirationMonth"),r("design:type",String)],l.prototype,"expMonth",void 0),i([a.linkedFieldOption(o.CardLinkedId.ExpYear,"expirationYear"),r("design:type",String)],l.prototype,"expYear",void 0),i([a.linkedFieldOption(o.CardLinkedId.Code,"securityCode"),r("design:type",String)],l.prototype,"code",void 0),i([a.linkedFieldOption(o.CardLinkedId.Brand),r("design:type",String),r("design:paramtypes",[String])],l.prototype,"brand",null),i([a.linkedFieldOption(o.CardLinkedId.Number),r("design:type",String),r("design:paramtypes",[String])],l.prototype,"number",null),t.CardView=l},97144:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CipherView=void 0;const i=n(34453),r=n(32773),o=n(91766),a=n(48830),s=n(28331),l=n(99364);t.CipherView=class{constructor(e){var t;this.id=null,this.organizationId=null,this.folderId=null,this.name=null,this.notes=null,this.type=null,this.favorite=!1,this.organizationUseTotp=!1,this.edit=!1,this.viewPassword=!0,this.login=new s.LoginView,this.identity=new a.IdentityView,this.card=new o.CardView,this.secureNote=new l.SecureNoteView,this.attachments=null,this.fields=null,this.passwordHistory=null,this.collectionIds=null,this.revisionDate=null,this.deletedDate=null,this.reprompt=i.CipherRepromptType.None,e&&(this.id=e.id,this.organizationId=e.organizationId,this.folderId=e.folderId,this.favorite=e.favorite,this.organizationUseTotp=e.organizationUseTotp,this.edit=e.edit,this.viewPassword=e.viewPassword,this.type=e.type,this.localData=e.localData,this.collectionIds=e.collectionIds,this.revisionDate=e.revisionDate,this.deletedDate=e.deletedDate,this.reprompt=null!==(t=e.reprompt)&&void 0!==t?t:i.CipherRepromptType.None)}get item(){switch(this.type){case r.CipherType.Login:return this.login;case r.CipherType.SecureNote:return this.secureNote;case r.CipherType.Card:return this.card;case r.CipherType.Identity:return this.identity}return null}get subTitle(){return this.item.subTitle}get hasPasswordHistory(){return this.passwordHistory&&this.passwordHistory.length>0}get hasAttachments(){return this.attachments&&this.attachments.length>0}get hasOldAttachments(){if(this.hasAttachments)for(let e=0;e0}get passwordRevisionDisplayDate(){return this.type!==r.CipherType.Login||null==this.login||null==this.login.password||""===this.login.password?null:this.login.passwordRevisionDate}get isDeleted(){return null!=this.deletedDate}get linkedFieldOptions(){return this.item.linkedFieldOptions}linkedFieldValue(e){var t;const n=null===(t=this.linkedFieldOptions)||void 0===t?void 0:t.get(e);if(null==n)return null;this.item;return this.item[n.propertyKey]}linkedFieldI18nKey(e){var t;return null===(t=this.linkedFieldOptions.get(e))||void 0===t?void 0:t.i18nKey}}},86001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionView=void 0;const i=n(65642);t.CollectionView=class{constructor(e){this.id=null,this.organizationId=null,this.name=null,this.externalId=null,this.readOnly=null,this.hidePasswords=null,e&&(this.id=e.id,this.organizationId=e.organizationId,this.externalId=e.externalId,e instanceof i.Collection&&(this.readOnly=e.readOnly,this.hidePasswords=e.hidePasswords))}}},63412:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EventView=void 0;t.EventView=class{constructor(e){this.message=e.message,this.humanReadableMessage=e.humanReadableMessage,this.appIcon=e.appIcon,this.appName=e.appName,this.userId=e.userId,this.userName=e.userName,this.userEmail=e.userEmail,this.date=e.date,this.ip=e.ip,this.type=e.type,this.installationId=e.installationId}}},58545:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FieldView=void 0;t.FieldView=class{constructor(e){this.name=null,this.value=null,this.type=null,this.newField=!1,this.showValue=!1,this.showCount=!1,this.linkedId=null,e&&(this.type=e.type,this.linkedId=e.linkedId)}get maskedValue(){return null!=this.value?"••••••••":null}}},36914:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderView=void 0;t.FolderView=class{constructor(e){this.id=null,this.name=null,this.revisionDate=null,e&&(this.id=e.id,this.revisionDate=e.revisionDate)}}},48830:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityView=void 0;const o=n(31909),a=n(60628),s=n(82769),l=n(63262);class c extends l.ItemView{constructor(){super(),this.title=null,this.middleName=null,this.address1=null,this.address2=null,this.address3=null,this.city=null,this.state=null,this.postalCode=null,this.country=null,this.company=null,this.email=null,this.phone=null,this.ssn=null,this.username=null,this.passportNumber=null,this.licenseNumber=null,this._firstName=null,this._lastName=null,this._subTitle=null}get firstName(){return this._firstName}set firstName(e){this._firstName=e,this._subTitle=null}get lastName(){return this._lastName}set lastName(e){this._lastName=e,this._subTitle=null}get subTitle(){return null!=this._subTitle||null==this.firstName&&null==this.lastName||(this._subTitle="",null!=this.firstName&&(this._subTitle=this.firstName),null!=this.lastName&&(""!==this._subTitle&&(this._subTitle+=" "),this._subTitle+=this.lastName)),this._subTitle}get fullName(){if(null!=this.title||null!=this.firstName||null!=this.middleName||null!=this.lastName){let e="";return null!=this.title&&(e+=this.title+" "),null!=this.firstName&&(e+=this.firstName+" "),null!=this.middleName&&(e+=this.middleName+" "),null!=this.lastName&&(e+=this.lastName),e.trim()}return null}get fullAddress(){let e=this.address1;return s.Utils.isNullOrWhitespace(this.address2)||(s.Utils.isNullOrWhitespace(e)||(e+=", "),e+=this.address2),s.Utils.isNullOrWhitespace(this.address3)||(s.Utils.isNullOrWhitespace(e)||(e+=", "),e+=this.address3),e}get fullAddressPart2(){if(null==this.city&&null==this.state&&null==this.postalCode)return null;const e=this.city||"-",t=this.state,n=this.postalCode||"-";let i=e;return s.Utils.isNullOrWhitespace(t)||(i+=", "+t),i+=", "+n,i}}i([a.linkedFieldOption(o.IdentityLinkedId.Title),r("design:type",String)],c.prototype,"title",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.MiddleName),r("design:type",String)],c.prototype,"middleName",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address1),r("design:type",String)],c.prototype,"address1",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address2),r("design:type",String)],c.prototype,"address2",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Address3),r("design:type",String)],c.prototype,"address3",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.City,"cityTown"),r("design:type",String)],c.prototype,"city",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.State,"stateProvince"),r("design:type",String)],c.prototype,"state",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.PostalCode,"zipPostalCode"),r("design:type",String)],c.prototype,"postalCode",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Country),r("design:type",String)],c.prototype,"country",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Company),r("design:type",String)],c.prototype,"company",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Email),r("design:type",String)],c.prototype,"email",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Phone),r("design:type",String)],c.prototype,"phone",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Ssn),r("design:type",String)],c.prototype,"ssn",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.Username),r("design:type",String)],c.prototype,"username",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.PassportNumber),r("design:type",String)],c.prototype,"passportNumber",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.LicenseNumber),r("design:type",String)],c.prototype,"licenseNumber",void 0),i([a.linkedFieldOption(o.IdentityLinkedId.FirstName),r("design:type",String),r("design:paramtypes",[String])],c.prototype,"firstName",null),i([a.linkedFieldOption(o.IdentityLinkedId.LastName),r("design:type",String),r("design:paramtypes",[String])],c.prototype,"lastName",null),i([a.linkedFieldOption(o.IdentityLinkedId.FullName),r("design:type",String),r("design:paramtypes",[])],c.prototype,"fullName",null),t.IdentityView=c},63262:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ItemView=void 0;t.ItemView=class{}},16506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LoginUriView=void 0;const i=n(71703),r=n(82769),o=["https://","http://","ssh://","ftp://","sftp://","irc://","vnc://","rdp://","ms-rd:","chrome://","iosapp://","androidapp://"];t.LoginUriView=class{constructor(e){this.match=null,this._uri=null,this._domain=null,this._hostname=null,this._host=null,this._canLaunch=null,e&&(this.match=e.match)}get uri(){return this._uri}set uri(e){this._uri=e,this._domain=null,this._canLaunch=null}get domain(){return null==this._domain&&null!=this.uri&&(this._domain=r.Utils.getDomain(this.uri),""===this._domain&&(this._domain=null)),this._domain}get hostname(){return this.match===i.UriMatchType.RegularExpression?null:(null==this._hostname&&null!=this.uri&&(this._hostname=r.Utils.getHostname(this.uri),""===this._hostname&&(this._hostname=null)),this._hostname)}get host(){return this.match===i.UriMatchType.RegularExpression?null:(null==this._host&&null!=this.uri&&(this._host=r.Utils.getHost(this.uri),""===this._host&&(this._host=null)),this._host)}get hostnameOrUri(){return null!=this.hostname?this.hostname:this.uri}get hostOrUri(){return null!=this.host?this.host:this.uri}get isWebsite(){return null!=this.uri&&(0===this.uri.indexOf("http://")||0===this.uri.indexOf("https://")||this.uri.indexOf("://")<0&&r.Utils.tldEndingRegex.test(this.uri))}get canLaunch(){if(null!=this._canLaunch)return this._canLaunch;if(null!=this.uri&&this.match!==i.UriMatchType.RegularExpression){const e=this.launchUri;for(let t=0;t=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginView=void 0;const o=n(31909),a=n(60628),s=n(82769),l=n(63262);class c extends l.ItemView{constructor(e){super(),this.username=null,this.password=null,this.passwordRevisionDate=null,this.totp=null,this.uris=null,this.autofillOnPageLoad=null,e&&(this.passwordRevisionDate=e.passwordRevisionDate,this.autofillOnPageLoad=e.autofillOnPageLoad)}get uri(){return this.hasUris?this.uris[0].uri:null}get maskedPassword(){return null!=this.password?"••••••••":null}get subTitle(){return this.username}get canLaunch(){return this.hasUris&&this.uris.some((e=>e.canLaunch))}get hasTotp(){return!s.Utils.isNullOrWhitespace(this.totp)}get launchUri(){if(this.hasUris){const e=this.uris.find((e=>e.canLaunch));if(null!=e)return e.launchUri}return null}get hasUris(){return null!=this.uris&&this.uris.length>0}}i([a.linkedFieldOption(o.LoginLinkedId.Username),r("design:type",String)],c.prototype,"username",void 0),i([a.linkedFieldOption(o.LoginLinkedId.Password),r("design:type",String)],c.prototype,"password",void 0),t.LoginView=c},40170:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordHistoryView=void 0;t.PasswordHistoryView=class{constructor(e){this.password=null,this.lastUsedDate=null,e&&(this.lastUsedDate=e.lastUsedDate)}}},99364:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecureNoteView=void 0;const i=n(63262);class r extends i.ItemView{constructor(e){super(),this.type=null,e&&(this.type=e.type)}get subTitle(){return null}}t.SecureNoteView=r},46984:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendAccessView=void 0;const i=n(22620),r=n(59884);t.SendAccessView=class{constructor(e){this.id=null,this.name=null,this.type=null,this.text=new r.SendTextView,this.file=new i.SendFileView,this.expirationDate=null,this.creatorIdentifier=null,e&&(this.id=e.id,this.type=e.type,this.expirationDate=e.expirationDate,this.creatorIdentifier=e.creatorIdentifier)}}},22620:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendFileView=void 0;t.SendFileView=class{constructor(e){this.id=null,this.size=null,this.sizeName=null,this.fileName=null,e&&(this.id=e.id,this.size=e.size,this.sizeName=e.sizeName)}get fileSize(){try{if(null!=this.size)return parseInt(this.size,null)}catch(e){}return 0}}},59884:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendTextView=void 0;t.SendTextView=class{constructor(e){this.text=null,e&&(this.hidden=e.hidden)}get maskedText(){return null!=this.text?"••••••••":null}}},1725:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendView=void 0;const i=n(82769),r=n(22620),o=n(59884);t.SendView=class{constructor(e){this.id=null,this.accessId=null,this.name=null,this.notes=null,this.type=null,this.text=new o.SendTextView,this.file=new r.SendFileView,this.maxAccessCount=null,this.accessCount=0,this.revisionDate=null,this.deletionDate=null,this.expirationDate=null,this.password=null,this.disabled=!1,this.hideEmail=!1,e&&(this.id=e.id,this.accessId=e.accessId,this.type=e.type,this.maxAccessCount=e.maxAccessCount,this.accessCount=e.accessCount,this.revisionDate=e.revisionDate,this.deletionDate=e.deletionDate,this.expirationDate=e.expirationDate,this.disabled=e.disabled,this.password=e.password,this.hideEmail=e.hideEmail)}get urlB64Key(){return i.Utils.fromBufferToUrlB64(this.key)}get maxAccessCountReached(){return null!=this.maxAccessCount&&this.accessCount>=this.maxAccessCount}get expired(){return null!=this.expirationDate&&this.expirationDate<=new Date}get pendingDelete(){return this.deletionDate<=new Date}}},56259:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SsoConfigView=void 0;const i=n(37084),r=n(41943);class o extends r.View{constructor(e){super(),null!=e&&(this.configType=e.configType,this.keyConnectorEnabled=e.keyConnectorEnabled,this.keyConnectorUrl=e.keyConnectorUrl,this.configType===i.SsoType.OpenIdConnect?this.openId={authority:e.authority,clientId:e.clientId,clientSecret:e.clientSecret,metadataAddress:e.metadataAddress,redirectBehavior:e.redirectBehavior,getClaimsFromUserInfoEndpoint:e.getClaimsFromUserInfoEndpoint,additionalScopes:e.additionalScopes,additionalUserIdClaimTypes:e.additionalUserIdClaimTypes,additionalEmailClaimTypes:e.additionalEmailClaimTypes,additionalNameClaimTypes:e.additionalNameClaimTypes,acrValues:e.acrValues,expectedReturnAcrValue:e.expectedReturnAcrValue}:this.configType===i.SsoType.Saml2&&(this.saml={spNameIdFormat:e.spNameIdFormat,spOutboundSigningAlgorithm:e.spOutboundSigningAlgorithm,spSigningBehavior:e.spSigningBehavior,spMinIncomingSigningAlgorithm:e.spMinIncomingSigningAlgorithm,spWantAssertionsSigned:e.spWantAssertionsSigned,spValidateCertificates:e.spValidateCertificates,idpEntityId:e.idpEntityId,idpBindingType:e.idpBindingType,idpSingleSignOnServiceUrl:e.idpSingleSignOnServiceUrl,idpSingleLogoutServiceUrl:e.idpSingleLogoutServiceUrl,idpX509PublicCert:e.idpX509PublicCert,idpOutboundSigningAlgorithm:e.idpOutboundSigningAlgorithm,idpAllowUnsolicitedAuthnResponse:e.idpAllowUnsolicitedAuthnResponse,idpWantAuthnRequestsSigned:e.idpWantAuthnRequestsSigned,idpAllowOutboundLogoutRequests:null==e.idpDisableOutboundLogoutRequests?null:!e.idpDisableOutboundLogoutRequests}))}}t.SsoConfigView=o},41943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.View=void 0;t.View=class{}},48475:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiService=void 0;const r=n(92829),o=n(74598),a=n(56215),s=n(90070),l=n(27847),c=n(2779),d=n(82769),p=n(81047),u=n(92666),m=n(33146),h=n(15487),v=n(61700),f=n(15461),g=n(31238),y=n(11228),x=n(91266),S=n(50881),b=n(33018),w=n(88850),C=n(8823),I=n(70529),E=n(56659),P=n(7269),O=n(38326),k=n(93140),A=n(7865),T=n(57344),M=n(53661),B=n(12386),D=n(37595),R=n(68673),F=n(62560),U=n(71098),V=n(89072),N=n(55022),_=n(68749),j=n(38402),z=n(88290),H=n(64030),L=n(52196),K=n(59665),q=n(89001),G=n(98073),W=n(82842),$=n(62161),Y=n(67177),Q=n(61747),J=n(3882),Z=n(56247),X=n(69654),ee=n(22391),te=n(71892),ne=n(79230),ie=n(10273),re=n(67955),oe=n(1244),ae=n(33111),se=n(88540),le=n(50891),ce=n(40387),de=n(61329),pe=n(78086),ue=n(86457);t.ApiService=class{constructor(e,t,n,i,r,o=null){this.tokenService=e,this.platformUtilsService=t,this.environmentService=n,this.appIdService=i,this.logoutCallback=r,this.customUserAgent=o,this.isWebClient=!1,this.isDesktopClient=!1,this.device=t.getDevice(),this.deviceType=this.device.toString(),this.isWebClient=this.device===c.DeviceType.IEBrowser||this.device===c.DeviceType.ChromeBrowser||this.device===c.DeviceType.EdgeBrowser||this.device===c.DeviceType.FirefoxBrowser||this.device===c.DeviceType.OperaBrowser||this.device===c.DeviceType.SafariBrowser||this.device===c.DeviceType.UnknownBrowser||this.device===c.DeviceType.VivaldiBrowser,this.isDesktopClient=this.device===c.DeviceType.WindowsDesktop||this.device===c.DeviceType.MacOsDesktop||this.device===c.DeviceType.LinuxDesktop}postIdentityToken(e){return i(this,void 0,void 0,(function*(){const t=new Headers({"Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent),e.alterIdentityTokenHeaders(t);const n=e instanceof p.ApiTokenRequest?e.toIdentityToken():e.toIdentityToken(this.platformUtilsService.getClientType()),i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+"/connect/token",{body:this.qsStringify(n),credentials:this.getCredentials(),cache:"no-store",headers:t,method:"POST"}));let r=null;if(this.isJsonResponse(i)&&(r=yield i.json()),null!=r){if(200===i.status)return new P.IdentityTokenResponse(r);if(400===i.status&&r.TwoFactorProviders2&&Object.keys(r.TwoFactorProviders2).length)return yield this.tokenService.clearTwoFactorToken(),new O.IdentityTwoFactorResponse(r);if(400===i.status&&r.HCaptcha_SiteKey&&Object.keys(r.HCaptcha_SiteKey).length)return new E.IdentityCaptchaResponse(r)}return Promise.reject(new b.ErrorResponse(r,i.status,!0))}))}refreshIdentityToken(){return i(this,void 0,void 0,(function*(){try{yield this.doAuthRefresh()}catch(e){return Promise.reject(null)}}))}getProfile(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/profile",null,!0,!0);return new K.ProfileResponse(e)}))}getUserSubscription(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/subscription",null,!0,!0);return new te.SubscriptionResponse(e)}))}getTaxInfo(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/tax",null,!0,!0);return new ie.TaxInfoResponse(e)}))}putProfile(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/accounts/profile",e,!0,!0);return new K.ProfileResponse(t)}))}putTaxInfo(e){return this.send("PUT","/accounts/tax",e,!0,!1)}postPrelogin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/prelogin",e,!1,!0,this.platformUtilsService.isDev()?this.environmentService.getIdentityUrl():this.environmentService.getApiUrl());return new L.PreloginResponse(t)}))}postEmailToken(e){return this.send("POST","/accounts/email-token",e,!0,!1)}postEmail(e){return this.send("POST","/accounts/email",e,!0,!1)}postPassword(e){return this.send("POST","/accounts/password",e,!0,!1)}setPassword(e){return this.send("POST","/accounts/set-password",e,!0,!1)}postSetKeyConnectorKey(e){return this.send("POST","/accounts/set-key-connector-key",e,!0,!1)}postSecurityStamp(e){return this.send("POST","/accounts/security-stamp",e,!0,!1)}deleteAccount(e){return this.send("DELETE","/accounts",e,!0,!1)}getAccountRevisionDate(){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/accounts/revision-date",null,!0,!0)}))}postPasswordHint(e){return this.send("POST","/accounts/password-hint",e,!1,!1)}postRegister(e){return this.send("POST","/accounts/register",e,!1,!1,this.platformUtilsService.isDev()?this.environmentService.getIdentityUrl():this.environmentService.getApiUrl())}postPremium(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/premium",e,!0,!0);return new j.PaymentResponse(t)}))}postIapCheck(e){return i(this,void 0,void 0,(function*(){return this.send("POST","/accounts/iap-check",e,!0,!1)}))}postReinstatePremium(){return this.send("POST","/accounts/reinstate-premium",null,!0,!1)}postCancelPremium(){return this.send("POST","/accounts/cancel-premium",null,!0,!1)}postAccountStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/accounts/storage",e,!0,!0);return new j.PaymentResponse(t)}))}postAccountPayment(e){return this.send("POST","/accounts/payment",e,!0,!1)}postAccountLicense(e){return this.send("POST","/accounts/license",e,!0,!1)}postAccountKeys(e){return this.send("POST","/accounts/keys",e,!0,!1)}postAccountKey(e){return this.send("POST","/accounts/key",e,!0,!1)}postAccountVerifyEmail(){return this.send("POST","/accounts/verify-email",null,!0,!1)}postAccountVerifyEmailToken(e){return this.send("POST","/accounts/verify-email-token",e,!1,!1)}postAccountVerifyPassword(e){return this.send("POST","/accounts/verify-password",e,!0,!1)}postAccountRecoverDelete(e){return this.send("POST","/accounts/delete-recover",e,!1,!1)}postAccountRecoverDeleteToken(e){return this.send("POST","/accounts/delete-recover-token",e,!1,!1)}postAccountKdf(e){return this.send("POST","/accounts/kdf",e,!0,!1)}deleteSsoUser(e){return i(this,void 0,void 0,(function*(){return this.send("DELETE","/accounts/sso/"+e,null,!0,!1)}))}getSsoUserIdentifier(){return i(this,void 0,void 0,(function*(){return this.send("GET","/accounts/sso/user-identifier",null,!0,!0)}))}postUserApiKey(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.send("POST","/accounts/api-key",t,!0,!0);return new u.ApiKeyResponse(e)}))}postUserRotateApiKey(e,t){return i(this,void 0,void 0,(function*(){const e=yield this.send("POST","/accounts/rotate-api-key",t,!0,!0);return new u.ApiKeyResponse(e)}))}putUpdateTempPassword(e){return this.send("PUT","/accounts/update-temp-password",e,!0,!1)}postAccountRequestOTP(){return this.send("POST","/accounts/request-otp",null,!0,!1)}postAccountVerifyOTP(e){return this.send("POST","/accounts/verify-otp",e,!0,!1)}postConvertToKeyConnector(){return this.send("POST","/accounts/convert-to-key-connector",null,!0,!1)}getUserBillingHistory(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/billing/history",null,!0,!0);return new a.BillingHistoryResponse(e)}))}getUserBillingPayment(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/accounts/billing/payment-method",null,!0,!0);return new s.BillingPaymentResponse(e)}))}getFolder(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/folders/"+e,null,!0,!0);return new C.FolderResponse(t)}))}postFolder(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/folders",e,!0,!0);return new C.FolderResponse(t)}))}putFolder(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/folders/"+e,t,!0,!0);return new C.FolderResponse(n)}))}deleteFolder(e){return this.send("DELETE","/folders/"+e,null,!0,!1)}getSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/sends/"+e,null,!0,!0);return new ee.SendResponse(t)}))}postSendAccess(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("POST","/sends/access/"+e,t,!1,!0,n,(t=>{t.set("Send-Id",e)}));return new J.SendAccessResponse(i)}))}getSendFileDownloadData(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("POST","/sends/"+e.id+"/access/file/"+e.file.id,t,!1,!0,n,(t=>{t.set("Send-Id",e.id)}));return new Z.SendFileDownloadDataResponse(i)}))}getSends(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/sends",null,!0,!0);return new A.ListResponse(e,ee.SendResponse)}))}postSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends",e,!0,!0);return new ee.SendResponse(t)}))}postFileTypeSend(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends/file/v2",e,!0,!0);return new X.SendFileUploadDataResponse(t)}))}renewSendFileUploadUrl(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/sends/"+e+"/file/"+t,null,!0,!0);return new X.SendFileUploadDataResponse(n)}))}postSendFile(e,t,n){return this.send("POST","/sends/"+e+"/file/"+t,n,!0,!1)}postSendFileLegacy(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/sends/file",e,!0,!0);return new ee.SendResponse(t)}))}putSend(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/sends/"+e,t,!0,!0);return new ee.SendResponse(n)}))}putSendRemovePassword(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/sends/"+e+"/remove-password",null,!0,!0);return new ee.SendResponse(t)}))}deleteSend(e){return this.send("DELETE","/sends/"+e,null,!0,!1)}getCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/"+e,null,!0,!0);return new g.CipherResponse(t)}))}getCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/"+e+"/admin",null,!0,!0);return new g.CipherResponse(t)}))}getCiphersOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/ciphers/organization-details?organizationId="+e,null,!0,!0);return new A.ListResponse(t,g.CipherResponse)}))}postCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers",e,!0,!0);return new g.CipherResponse(t)}))}postCipherCreate(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers/create",e,!0,!0);return new g.CipherResponse(t)}))}postCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/ciphers/admin",e,!0,!0);return new g.CipherResponse(t)}))}putCipher(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e,t,!0,!0);return new g.CipherResponse(n)}))}putCipherAdmin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e+"/admin",t,!0,!0);return new g.CipherResponse(n)}))}deleteCipher(e){return this.send("DELETE","/ciphers/"+e,null,!0,!1)}deleteCipherAdmin(e){return this.send("DELETE","/ciphers/"+e+"/admin",null,!0,!1)}deleteManyCiphers(e){return this.send("DELETE","/ciphers",e,!0,!1)}deleteManyCiphersAdmin(e){return this.send("DELETE","/ciphers/admin",e,!0,!1)}putMoveCiphers(e){return this.send("PUT","/ciphers/move",e,!0,!1)}putShareCipher(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/ciphers/"+e+"/share",t,!0,!0);return new g.CipherResponse(n)}))}putShareCiphers(e){return this.send("PUT","/ciphers/share",e,!0,!1)}putCipherCollections(e,t){return this.send("PUT","/ciphers/"+e+"/collections",t,!0,!1)}putCipherCollectionsAdmin(e,t){return this.send("PUT","/ciphers/"+e+"/collections-admin",t,!0,!1)}postPurgeCiphers(e,t=null){let n="/ciphers/purge";return null!=t&&(n+="?organizationId="+t),this.send("POST",n,e,!0,!1)}postImportCiphers(e){return this.send("POST","/ciphers/import",e,!0,!1)}postImportOrganizationCiphers(e,t){return this.send("POST","/ciphers/import-organization?organizationId="+e,t,!0,!1)}putDeleteCipher(e){return this.send("PUT","/ciphers/"+e+"/delete",null,!0,!1)}putDeleteCipherAdmin(e){return this.send("PUT","/ciphers/"+e+"/delete-admin",null,!0,!1)}putDeleteManyCiphers(e){return this.send("PUT","/ciphers/delete",e,!0,!1)}putDeleteManyCiphersAdmin(e){return this.send("PUT","/ciphers/delete-admin",e,!0,!1)}putRestoreCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/"+e+"/restore",null,!0,!0);return new g.CipherResponse(t)}))}putRestoreCipherAdmin(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/"+e+"/restore-admin",null,!0,!0);return new g.CipherResponse(t)}))}putRestoreManyCiphers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/ciphers/restore",e,!0,!0);return new A.ListResponse(t,g.CipherResponse)}))}getAttachmentData(e,t,n){return i(this,void 0,void 0,(function*(){const i=(null!=n?"/emergency-access/"+n+"/":"/ciphers/")+e+"/attachment/"+t,r=yield this.send("GET",i,null,!0,!0);return new m.AttachmentResponse(r)}))}postCipherAttachment(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment/v2",t,!0,!0);return new h.AttachmentUploadDataResponse(n)}))}postCipherAttachmentLegacy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment",t,!0,!0);return new g.CipherResponse(n)}))}postCipherAttachmentAdminLegacy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/ciphers/"+e+"/attachment-admin",t,!0,!0);return new g.CipherResponse(n)}))}deleteCipherAttachment(e,t){return this.send("DELETE","/ciphers/"+e+"/attachment/"+t,null,!0,!1)}deleteCipherAttachmentAdmin(e,t){return this.send("DELETE","/ciphers/"+e+"/attachment/"+t+"/admin",null,!0,!1)}postShareCipherAttachment(e,t,n,i){return this.send("POST","/ciphers/"+e+"/attachment/"+t+"/share?organizationId="+i,n,!0,!1)}renewAttachmentUploadUrl(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/ciphers/"+e+"/attachment/"+t+"/renew",null,!0,!0);return new h.AttachmentUploadDataResponse(n)}))}postAttachmentFile(e,t,n){return this.send("POST","/ciphers/"+e+"/attachment/"+t,n,!0,!1)}getCollectionDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/collections/"+t+"/details",null,!0,!0);return new y.CollectionGroupDetailsResponse(n)}))}getUserCollections(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/collections",null,!0,!0);return new A.ListResponse(e,y.CollectionResponse)}))}getCollections(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/collections",null,!0,!0);return new A.ListResponse(t,y.CollectionResponse)}))}getCollectionUsers(e,t){return i(this,void 0,void 0,(function*(){return(yield this.send("GET","/organizations/"+e+"/collections/"+t+"/users",null,!0,!0)).map((e=>new Q.SelectionReadOnlyResponse(e)))}))}postCollection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/collections",t,!0,!0);return new y.CollectionResponse(n)}))}putCollection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/collections/"+t,n,!0,!0);return new y.CollectionResponse(i)}))}putCollectionUsers(e,t,n){return i(this,void 0,void 0,(function*(){yield this.send("PUT","/organizations/"+e+"/collections/"+t+"/users",n,!0,!1)}))}deleteCollection(e,t){return this.send("DELETE","/organizations/"+e+"/collections/"+t,null,!0,!1)}deleteCollectionUser(e,t,n){return this.send("DELETE","/organizations/"+e+"/collections/"+t+"/user/"+n,null,!0,!1)}getGroupDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/groups/"+t+"/details",null,!0,!0);return new I.GroupDetailsResponse(n)}))}getGroups(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/groups",null,!0,!0);return new A.ListResponse(t,I.GroupResponse)}))}getGroupUsers(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/"+e+"/groups/"+t+"/users",null,!0,!0)}))}postGroup(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/groups",t,!0,!0);return new I.GroupResponse(n)}))}putGroup(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/groups/"+t,n,!0,!0);return new I.GroupResponse(i)}))}putGroupUsers(e,t,n){return i(this,void 0,void 0,(function*(){yield this.send("PUT","/organizations/"+e+"/groups/"+t+"/users",n,!0,!1)}))}deleteGroup(e,t){return this.send("DELETE","/organizations/"+e+"/groups/"+t,null,!0,!1)}deleteGroupUser(e,t,n){return this.send("DELETE","/organizations/"+e+"/groups/"+t+"/user/"+n,null,!0,!1)}getPolicy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/policies/"+t,null,!0,!0);return new H.PolicyResponse(n)}))}getPolicies(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/policies",null,!0,!0);return new A.ListResponse(t,H.PolicyResponse)}))}getPoliciesByToken(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET","/organizations/"+e+"/policies/token?token="+encodeURIComponent(t)+"&email="+encodeURIComponent(n)+"&organizationUserId="+r,null,!1,!0);return new A.ListResponse(i,H.PolicyResponse)}))}getPoliciesByInvitedUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/policies/invited-user?userId="+t,null,!1,!0);return new A.ListResponse(n,H.PolicyResponse)}))}putPolicy(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/"+e+"/policies/"+t,n,!0,!0);return new H.PolicyResponse(i)}))}getOrganizationUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/users/"+t,null,!0,!0);return new _.OrganizationUserDetailsResponse(n)}))}getOrganizationUserGroups(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/"+e+"/users/"+t+"/groups",null,!0,!0)}))}getOrganizationUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/users",null,!0,!0);return new A.ListResponse(t,_.OrganizationUserUserDetailsResponse)}))}getOrganizationUserResetPasswordDetails(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/organizations/"+e+"/users/"+t+"/reset-password-details",null,!0,!0);return new _.OrganizationUserResetPasswordDetailsReponse(n)}))}getOrganizationAutoEnrollStatus(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/auto-enroll-status",null,!0,!0);return new B.OrganizationAutoEnrollStatusResponse(t)}))}postOrganizationUserInvite(e,t){return this.send("POST","/organizations/"+e+"/users/invite",t,!0,!1)}postOrganizationUserReinvite(e,t){return this.send("POST","/organizations/"+e+"/users/"+t+"/reinvite",null,!0,!1)}postManyOrganizationUserReinvite(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/reinvite",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}postOrganizationUserAccept(e,t,n){return this.send("POST","/organizations/"+e+"/users/"+t+"/accept",n,!0,!1)}postOrganizationUserConfirm(e,t,n){return this.send("POST","/organizations/"+e+"/users/"+t+"/confirm",n,!0,!1)}postOrganizationUsersPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/public-keys",t,!0,!0);return new A.ListResponse(n,V.OrganizationUserBulkPublicKeyResponse)}))}postOrganizationUserBulkConfirm(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/users/confirm",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}putOrganizationUser(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t,n,!0,!1)}putOrganizationUserGroups(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/groups",n,!0,!1)}putOrganizationUserResetPasswordEnrollment(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/reset-password-enrollment",n,!0,!1)}putOrganizationUserResetPassword(e,t,n){return this.send("PUT","/organizations/"+e+"/users/"+t+"/reset-password",n,!0,!1)}deleteOrganizationUser(e,t){return this.send("DELETE","/organizations/"+e+"/users/"+t,null,!0,!1)}deleteManyOrganizationUsers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("DELETE","/organizations/"+e+"/users",t,!0,!0);return new A.ListResponse(n,N.OrganizationUserBulkResponse)}))}getPlans(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/plans/",null,!0,!0);return new A.ListResponse(e,z.PlanResponse)}))}postImportDirectory(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/import",t,!0,!1)}))}postPublicImportDirectory(e){return i(this,void 0,void 0,(function*(){return this.send("POST","/public/organization/import",e,!0,!1)}))}getTaxRates(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/plans/sales-tax-rates/",null,!0,!0);return new A.ListResponse(e,re.TaxRateResponse)}))}getSettingsDomains(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/settings/domains",null,!0,!0);return new x.DomainsResponse(e)}))}putSettingsDomains(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/settings/domains",e,!0,!0);return new x.DomainsResponse(t)}))}getSync(){return i(this,void 0,void 0,(function*(){const e=this.isDesktopClient||this.isWebClient?"/sync?excludeDomains=true":"/sync",t=yield this.send("GET",e,null,!0,!0);return new ne.SyncResponse(t)}))}getTwoFactorProviders(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/two-factor",null,!0,!0);return new A.ListResponse(e,le.TwoFactorProviderResponse)}))}getTwoFactorOrganizationProviders(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/two-factor",null,!0,!0);return new A.ListResponse(t,le.TwoFactorProviderResponse)}))}getTwoFactorAuthenticator(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-authenticator",e,!0,!0);return new oe.TwoFactorAuthenticatorResponse(t)}))}getTwoFactorEmail(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-email",e,!0,!0);return new se.TwoFactorEmailResponse(t)}))}getTwoFactorDuo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-duo",e,!0,!0);return new ae.TwoFactorDuoResponse(t)}))}getTwoFactorOrganizationDuo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/two-factor/get-duo",t,!0,!0);return new ae.TwoFactorDuoResponse(n)}))}getTwoFactorYubiKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-yubikey",e,!0,!0);return new pe.TwoFactorYubiKeyResponse(t)}))}getTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-webauthn",e,!0,!0);return new de.TwoFactorWebAuthnResponse(t)}))}getTwoFactorWebAuthnChallenge(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-webauthn-challenge",e,!0,!0);return new de.ChallengeResponse(t)}))}getTwoFactorRecover(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/two-factor/get-recover",e,!0,!0);return new ce.TwoFactorRecoverResponse(t)}))}putTwoFactorAuthenticator(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/authenticator",e,!0,!0);return new oe.TwoFactorAuthenticatorResponse(t)}))}putTwoFactorEmail(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/email",e,!0,!0);return new se.TwoFactorEmailResponse(t)}))}putTwoFactorDuo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/duo",e,!0,!0);return new ae.TwoFactorDuoResponse(t)}))}putTwoFactorOrganizationDuo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e+"/two-factor/duo",t,!0,!0);return new ae.TwoFactorDuoResponse(n)}))}putTwoFactorYubiKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/yubikey",e,!0,!0);return new pe.TwoFactorYubiKeyResponse(t)}))}putTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=e.deviceResponse.response,n=Object.assign({},e);n.deviceResponse={id:e.deviceResponse.id,rawId:btoa(e.deviceResponse.id),type:e.deviceResponse.type,extensions:e.deviceResponse.getClientExtensionResults(),response:{AttestationObject:d.Utils.fromBufferToB64(t.attestationObject),clientDataJson:d.Utils.fromBufferToB64(t.clientDataJSON)}};const i=yield this.send("PUT","/two-factor/webauthn",n,!0,!0);return new de.TwoFactorWebAuthnResponse(i)}))}deleteTwoFactorWebAuthn(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("DELETE","/two-factor/webauthn",e,!0,!0);return new de.TwoFactorWebAuthnResponse(t)}))}putTwoFactorDisable(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("PUT","/two-factor/disable",e,!0,!0);return new le.TwoFactorProviderResponse(t)}))}putTwoFactorOrganizationDisable(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e+"/two-factor/disable",t,!0,!0);return new le.TwoFactorProviderResponse(n)}))}postTwoFactorRecover(e){return this.send("POST","/two-factor/recover",e,!1,!1)}postTwoFactorEmailSetup(e){return this.send("POST","/two-factor/send-email",e,!0,!1)}postTwoFactorEmail(e){return this.send("POST","/two-factor/send-email-login",e,!1,!1)}getEmergencyAccessTrusted(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/emergency-access/trusted",null,!0,!0);return new A.ListResponse(e,S.EmergencyAccessGranteeDetailsResponse)}))}getEmergencyAccessGranted(){return i(this,void 0,void 0,(function*(){const e=yield this.send("GET","/emergency-access/granted",null,!0,!0);return new A.ListResponse(e,S.EmergencyAccessGrantorDetailsResponse)}))}getEmergencyAccess(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/emergency-access/"+e,null,!0,!0);return new S.EmergencyAccessGranteeDetailsResponse(t)}))}getEmergencyGrantorPolicies(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/emergency-access/"+e+"/policies",null,!0,!0);return new A.ListResponse(t,H.PolicyResponse)}))}putEmergencyAccess(e,t){return this.send("PUT","/emergency-access/"+e,t,!0,!1)}deleteEmergencyAccess(e){return this.send("DELETE","/emergency-access/"+e,null,!0,!1)}postEmergencyAccessInvite(e){return this.send("POST","/emergency-access/invite",e,!0,!1)}postEmergencyAccessReinvite(e){return this.send("POST","/emergency-access/"+e+"/reinvite",null,!0,!1)}postEmergencyAccessAccept(e,t){return this.send("POST","/emergency-access/"+e+"/accept",t,!0,!1)}postEmergencyAccessConfirm(e,t){return this.send("POST","/emergency-access/"+e+"/confirm",t,!0,!1)}postEmergencyAccessInitiate(e){return this.send("POST","/emergency-access/"+e+"/initiate",null,!0,!1)}postEmergencyAccessApprove(e){return this.send("POST","/emergency-access/"+e+"/approve",null,!0,!1)}postEmergencyAccessReject(e){return this.send("POST","/emergency-access/"+e+"/reject",null,!0,!1)}postEmergencyAccessTakeover(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/emergency-access/"+e+"/takeover",null,!0,!0);return new S.EmergencyAccessTakeoverResponse(t)}))}postEmergencyAccessPassword(e,t){return i(this,void 0,void 0,(function*(){yield this.send("POST","/emergency-access/"+e+"/password",t,!0,!0)}))}postEmergencyAccessView(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/emergency-access/"+e+"/view",null,!0,!0);return new S.EmergencyAccessViewResponse(t)}))}getOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e,null,!0,!0);return new R.OrganizationResponse(t)}))}getOrganizationBilling(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/billing",null,!0,!0);return new v.BillingResponse(t)}))}getOrganizationSubscription(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/subscription",null,!0,!0);return new U.OrganizationSubscriptionResponse(t)}))}getCloudCommunicationsEnabled(){return i(this,void 0,void 0,(function*(){return yield this.send("GET","/organizations/connections/enabled",null,!0,!0)}))}getOrganizationConnection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",`/organizations/connections/${e}/${t}`,null,!0,!0);return new l.OrganizationConnectionResponse(i,n)}))}createOrganizationConnection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/connections/",e,!0,!0);return new l.OrganizationConnectionResponse(n,t)}))}updateOrganizationConnection(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("PUT","/organizations/connections/"+n,e,!0,!0);return new l.OrganizationConnectionResponse(i,t)}))}deleteOrganizationConnection(e){return i(this,void 0,void 0,(function*(){return this.send("DELETE","/organizations/connections/"+e,null,!0,!1)}))}getOrganizationLicense(e,t){return i(this,void 0,void 0,(function*(){return this.send("GET","/organizations/"+e+"/license?installationId="+t,null,!0,!0)}))}getOrganizationTaxInfo(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/tax",null,!0,!0);return new ie.TaxInfoResponse(t)}))}getOrganizationSso(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/sso",null,!0,!0);return new T.OrganizationSsoResponse(t)}))}postOrganization(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/organizations",e,!0,!0);return new R.OrganizationResponse(t)}))}putOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/organizations/"+e,t,!0,!0);return new R.OrganizationResponse(n)}))}putOrganizationTaxInfo(e,t){return i(this,void 0,void 0,(function*(){return this.send("PUT","/organizations/"+e+"/tax",t,!0,!1)}))}postLeaveOrganization(e){return this.send("POST","/organizations/"+e+"/leave",null,!0,!1)}postOrganizationLicense(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("POST","/organizations/license",e,!0,!0);return new R.OrganizationResponse(t)}))}postOrganizationLicenseUpdate(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/license",t,!0,!1)}))}postOrganizationApiKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/api-key",t,!0,!0);return new u.ApiKeyResponse(n)}))}getOrganizationApiKeyInformation(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/api-key-information",null,!0,!0);return new A.ListResponse(t,M.OrganizationApiKeyInformationResponse)}))}postOrganizationRotateApiKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/rotate-api-key",t,!0,!0);return new u.ApiKeyResponse(n)}))}postOrganizationSso(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/sso",t,!0,!0);return new T.OrganizationSsoResponse(n)}))}postOrganizationUpgrade(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/upgrade",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationUpdateSubscription(e,t){return i(this,void 0,void 0,(function*(){return this.send("POST","/organizations/"+e+"/subscription",t,!0,!1)}))}postOrganizationSeat(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/seat",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationStorage(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/storage",t,!0,!0);return new j.PaymentResponse(n)}))}postOrganizationPayment(e,t){return this.send("POST","/organizations/"+e+"/payment",t,!0,!1)}postOrganizationVerifyBank(e,t){return this.send("POST","/organizations/"+e+"/verify-bank",t,!0,!1)}postOrganizationCancel(e){return this.send("POST","/organizations/"+e+"/cancel",null,!0,!1)}postOrganizationReinstate(e){return this.send("POST","/organizations/"+e+"/reinstate",null,!0,!1)}deleteOrganization(e,t){return this.send("DELETE","/organizations/"+e,t,!0,!1)}getOrganizationKeys(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organizations/"+e+"/keys",null,!0,!0);return new D.OrganizationKeysResponse(t)}))}postOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/organizations/"+e+"/keys",t,!0,!0);return new D.OrganizationKeysResponse(n)}))}postProviderSetup(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/setup",t,!0,!0);return new G.ProviderResponse(n)}))}getProvider(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e,null,!0,!0);return new G.ProviderResponse(t)}))}putProvider(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("PUT","/providers/"+e,t,!0,!0);return new G.ProviderResponse(n)}))}getProviderUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e+"/users",null,!0,!0);return new A.ListResponse(t,Y.ProviderUserUserDetailsResponse)}))}getProviderUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("GET","/providers/"+e+"/users/"+t,null,!0,!0);return new Y.ProviderUserResponse(n)}))}postProviderUserInvite(e,t){return this.send("POST","/providers/"+e+"/users/invite",t,!0,!1)}postProviderUserReinvite(e,t){return this.send("POST","/providers/"+e+"/users/"+t+"/reinvite",null,!0,!1)}postManyProviderUserReinvite(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/reinvite",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}postProviderUserBulkConfirm(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/confirm",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}deleteManyProviderUsers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("DELETE","/providers/"+e+"/users",t,!0,!0);return new A.ListResponse(n,$.ProviderUserBulkResponse)}))}postProviderUserAccept(e,t,n){return this.send("POST","/providers/"+e+"/users/"+t+"/accept",n,!0,!1)}postProviderUserConfirm(e,t,n){return this.send("POST","/providers/"+e+"/users/"+t+"/confirm",n,!0,!1)}postProviderUsersPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/users/public-keys",t,!0,!0);return new A.ListResponse(n,W.ProviderUserBulkPublicKeyResponse)}))}putProviderUser(e,t,n){return this.send("PUT","/providers/"+e+"/users/"+t,n,!0,!1)}deleteProviderUser(e,t){return this.send("DELETE","/providers/"+e+"/users/"+t,null,!0,!1)}getProviderClients(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/providers/"+e+"/organizations",null,!0,!0);return new A.ListResponse(t,q.ProviderOrganizationOrganizationDetailsResponse)}))}postProviderAddOrganization(e,t){return this.send("POST","/providers/"+e+"/organizations/add",t,!0,!1)}postProviderCreateOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.send("POST","/providers/"+e+"/organizations",t,!0,!0);return new q.ProviderOrganizationResponse(n)}))}deleteProviderOrganization(e,t){return this.send("DELETE","/providers/"+e+"/organizations/"+t,null,!0,!1)}getEvents(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/events",e,t,n),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsCipher(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/ciphers/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsOrganization(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/organizations/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsOrganizationUser(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/organizations/"+e+"/users/"+t+"/events",n,r,o),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsProvider(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/providers/"+e+"/events",t,n,r),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}getEventsProviderUser(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i=yield this.send("GET",this.addEventParameters("/providers/"+e+"/users/"+t+"/events",n,r,o),null,!0,!0);return new A.ListResponse(i,w.EventResponse)}))}postEventsCollect(e){return i(this,void 0,void 0,(function*(){const t=yield this.getActiveBearerToken(),n=new Headers({"Device-Type":this.deviceType,Authorization:"Bearer "+t,"Content-Type":"application/json; charset=utf-8"});null!=this.customUserAgent&&n.set("User-Agent",this.customUserAgent);if(200!==(yield this.fetch(new Request(this.environmentService.getEventsUrl()+"/collect",{cache:"no-store",credentials:this.getCredentials(),method:"POST",body:JSON.stringify(e),headers:n}))).status)return Promise.reject("Event post failed.")}))}getUserPublicKey(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/users/"+e+"/public-key",null,!0,!0);return new ue.UserKeyResponse(t)}))}getHibpBreach(e){return i(this,void 0,void 0,(function*(){return(yield this.send("GET","/hibp/breach?username="+e,null,!0,!0)).map((e=>new f.BreachAccountResponse(e)))}))}postBitPayInvoice(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/bitpay-invoice",e,!0,!0)}))}postSetupPayment(){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/setup-payment",null,!0,!0)}))}getUserKeyFromKeyConnector(e){return i(this,void 0,void 0,(function*(){const t=yield this.getActiveBearerToken(),n=yield this.fetch(new Request(e+"/user-keys",{cache:"no-store",method:"GET",headers:new Headers({Accept:"application/json",Authorization:"Bearer "+t})}));if(200!==n.status){const e=yield this.handleError(n,!1,!0);return Promise.reject(e)}return new k.KeyConnectorUserKeyResponse(yield n.json())}))}postUserKeyToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getActiveBearerToken(),i=yield this.fetch(new Request(e+"/user-keys",{cache:"no-store",method:"POST",headers:new Headers({Accept:"application/json",Authorization:"Bearer "+n,"Content-Type":"application/json; charset=utf-8"}),body:JSON.stringify(t)}));if(200!==i.status){const e=yield this.handleError(i,!1,!0);return Promise.reject(e)}}))}getKeyConnectorAlive(e){return i(this,void 0,void 0,(function*(){const t=yield this.fetch(new Request(e+"/alive",{cache:"no-store",method:"GET",headers:new Headers({Accept:"application/json","Content-Type":"application/json; charset=utf-8"})}));if(200!==t.status){const e=yield this.handleError(t,!1,!0);return Promise.reject(e)}}))}getActiveBearerToken(){return i(this,void 0,void 0,(function*(){let e=yield this.tokenService.getToken();return(yield this.tokenService.tokenNeedsRefresh())&&(yield this.doAuthRefresh(),e=yield this.tokenService.getToken()),e}))}fetch(e){return i(this,void 0,void 0,(function*(){return"GET"===e.method&&(e.headers.set("Cache-Control","no-store"),e.headers.set("Pragma","no-cache")),e.headers.set("Bitwarden-Client-Name",this.platformUtilsService.getClientType()),e.headers.set("Bitwarden-Client-Version",yield this.platformUtilsService.getApplicationVersion()),this.nativeFetch(e)}))}nativeFetch(e){return fetch(e)}preValidateSso(e){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw new Error("Organization Identifier was not provided.");const t=new Headers({Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent);const n=`/account/prevalidate?domainHint=${encodeURIComponent(e)}`,i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+n,{cache:"no-store",credentials:this.getCredentials(),headers:t,method:"GET"}));if(200===i.status)return!0;{const e=yield this.handleError(i,!1,!0);return Promise.reject(e)}}))}postCreateSponsorship(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/"+(this.platformUtilsService.isSelfHost()?"self-hosted/":"")+e+"/families-for-enterprise",t,!0,!1)}))}getSponsorshipSyncStatus(e){return i(this,void 0,void 0,(function*(){const t=yield this.send("GET","/organization/sponsorship/"+e+"/sync-status",null,!0,!0);return new F.OrganizationSponsorshipSyncStatusResponse(t)}))}deleteRevokeSponsorship(e){return i(this,void 0,void 0,(function*(){return yield this.send("DELETE","/organization/sponsorship/"+(this.platformUtilsService.isSelfHost()?"self-hosted/":"")+e,null,!0,!1)}))}deleteRemoveSponsorship(e){return i(this,void 0,void 0,(function*(){return yield this.send("DELETE","/organization/sponsorship/sponsored/"+e,null,!0,!1)}))}postPreValidateSponsorshipToken(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/validate-token?sponsorshipToken="+encodeURIComponent(e),null,!0,!0)}))}postRedeemSponsorship(e,t){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/redeem?sponsorshipToken="+encodeURIComponent(e),t,!0,!1)}))}postResendSponsorshipOffer(e){return i(this,void 0,void 0,(function*(){return yield this.send("POST","/organization/sponsorship/"+e+"/families-for-enterprise/resend",null,!0,!1)}))}doAuthRefresh(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getRefreshToken();if(null!=e&&""!==e)return this.doRefreshToken();const t=yield this.tokenService.getClientId(),n=yield this.tokenService.getClientSecret();if(!d.Utils.isNullOrWhitespace(t)&&!d.Utils.isNullOrWhitespace(n))return this.doApiTokenRefresh();throw new Error("Cannot refresh token, no refresh token or api keys are stored")}))}doRefreshToken(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getRefreshToken();if(null==e||""===e)throw new Error;const t=new Headers({"Content-Type":"application/x-www-form-urlencoded; charset=utf-8",Accept:"application/json","Device-Type":this.deviceType});null!=this.customUserAgent&&t.set("User-Agent",this.customUserAgent);const n=yield this.tokenService.decodeToken(),i=yield this.fetch(new Request(this.environmentService.getIdentityUrl()+"/connect/token",{body:this.qsStringify({grant_type:"refresh_token",client_id:n.client_id,refresh_token:e}),cache:"no-store",credentials:this.getCredentials(),headers:t,method:"POST"}));if(200!==i.status){const e=yield this.handleError(i,!0,!0);return Promise.reject(e)}{const e=yield i.json(),t=new P.IdentityTokenResponse(e);yield this.tokenService.setTokens(t.accessToken,t.refreshToken,null)}}))}doApiTokenRefresh(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getClientId(),t=yield this.tokenService.getClientSecret(),n=yield this.appIdService.getAppId(),i=new r.DeviceRequest(n,this.platformUtilsService),a=new p.ApiTokenRequest(e,t,new o.TokenRequestTwoFactor,i),s=yield this.postIdentityToken(a);if(!(s instanceof P.IdentityTokenResponse))throw new Error("Invalid response received when refreshing api token");yield this.tokenService.setToken(s.accessToken)}))}send(e,t,n,r,o,a,s){return i(this,void 0,void 0,(function*(){const i=(a=d.Utils.isNullOrWhitespace(a)?this.environmentService.getApiUrl():a)+t;if(new URL(i).href!==i)return Promise.reject("Invalid request url path.");const l=new Headers({"Device-Type":this.deviceType});null!=this.customUserAgent&&l.set("User-Agent",this.customUserAgent);const c={cache:"no-store",credentials:this.getCredentials(),method:e};if(r){const e=yield this.getActiveBearerToken();l.set("Authorization","Bearer "+e)}null!=n&&("string"==typeof n?(c.body=n,l.set("Content-Type","application/x-www-form-urlencoded; charset=utf-8")):"object"==typeof n&&(n instanceof FormData?c.body=n:(l.set("Content-Type","application/json; charset=utf-8"),c.body=JSON.stringify(n)))),o&&l.set("Accept","application/json"),null!=s&&s(l),c.headers=l;const p=yield this.fetch(new Request(i,c));if(o&&200===p.status){return yield p.json()}if(200!==p.status){const e=yield this.handleError(p,!1,r);return Promise.reject(e)}}))}handleError(e,t,n){return i(this,void 0,void 0,(function*(){if(n&&(t&&400===e.status||401===e.status||403===e.status))return yield this.logoutCallback(!0),null;let i=null;return this.isJsonResponse(e)?i=yield e.json():this.isTextResponse(e)&&(i={Message:yield e.text()}),new b.ErrorResponse(i,e.status,t)}))}qsStringify(e){return Object.keys(e).map((t=>encodeURIComponent(t)+"="+encodeURIComponent(e[t]))).join("&")}getCredentials(){if(!this.isWebClient||this.environmentService.hasBaseUrl())return"include"}addEventParameters(e,t,n,i){return null!=t&&(e+="?start="+t),null!=n&&(e+=e.indexOf("?")>-1?"&":"?",e+="end="+n),null!=i&&(e+=e.indexOf("?")>-1?"&":"?",e+="continuationToken="+i),e}isJsonResponse(e){const t=e.headers.get("content-type");return null!=t&&t.indexOf("application/json")>-1}isTextResponse(e){const t=e.headers.get("content-type");return null!=t&&t.indexOf("text")>-1}}},97979:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppIdService=void 0;const r=n(46632),o=n(82769);t.AppIdService=class{constructor(e){this.storageService=e}getAppId(){return this.makeAndGetAppId("appId")}getAnonymousAppId(){return this.makeAndGetAppId("anonymousAppId")}makeAndGetAppId(e){return i(this,void 0,void 0,(function*(){const t=yield this.storageService.get(e,{htmlStorageLocation:r.HtmlStorageLocation.Local});if(null!=t)return t;const n=o.Utils.newGuid();return yield this.storageService.save(e,n,{htmlStorageLocation:r.HtmlStorageLocation.Local}),n}))}}},36472:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuditService=void 0;const a=n(80699),s=n(82769);class l{constructor(e,t){this.cryptoFunctionService=e,this.apiService=t}passwordLeaked(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.hash(e,"sha1"),n=s.Utils.fromBufferToHex(t).toUpperCase(),i=n.substr(0,5),r=n.substr(5),o=yield this.apiService.nativeFetch(new Request("https://api.pwnedpasswords.com/range/"+i)),a=(yield o.text()).split(/\r?\n/).find((e=>e.split(":")[0]===r));return null!=a?parseInt(a.split(":")[1],10):0}))}breachedAccounts(e){return o(this,void 0,void 0,(function*(){try{return yield this.apiService.getHibpBreach(e)}catch(t){if(404===t.statusCode)return[];throw new Error}}))}}i([a.throttle(100,(()=>"passwordLeaked")),r("design:type",Function),r("design:paramtypes",[String]),r("design:returntype",Promise)],l.prototype,"passwordLeaked",null),t.AuditService=l},47262:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AuthService=void 0;const r=n(72440),o=n(2231),a=n(7980),s=n(83825),l=n(74044),c=n(41956),d=n(59791),p=n(33018);t.AuthService=class{constructor(e,t,n,i,r,o,a,s,l,c,d,p){this.cryptoService=e,this.apiService=t,this.tokenService=n,this.appIdService=i,this.platformUtilsService=r,this.messagingService=o,this.logService=a,this.keyConnectorService=s,this.environmentService=l,this.stateService=c,this.twoFactorService=d,this.i18nService=p}get email(){return this.logInStrategy instanceof l.PasswordLogInStrategy?this.logInStrategy.email:null}get masterPasswordHash(){return this.logInStrategy instanceof l.PasswordLogInStrategy?this.logInStrategy.masterPasswordHash:null}logIn(e){return i(this,void 0,void 0,(function*(){let t;this.clearState(),e.type===o.AuthenticationType.Password?t=new l.PasswordLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this):e.type===o.AuthenticationType.Sso?t=new c.SsoLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this.keyConnectorService):e.type===o.AuthenticationType.Api&&(t=new s.ApiLogInStrategy(this.cryptoService,this.apiService,this.tokenService,this.appIdService,this.platformUtilsService,this.messagingService,this.logService,this.stateService,this.twoFactorService,this.environmentService,this.keyConnectorService));const n=yield t.logIn(e);return(null==n?void 0:n.requiresTwoFactor)&&this.saveState(t),n}))}logInTwoFactor(e,t){return i(this,void 0,void 0,(function*(){if(null==this.logInStrategy)throw new Error(this.i18nService.t("sessionTimeout"));try{const n=yield this.logInStrategy.logInTwoFactor(e,t);return n.requiresTwoFactor||n.requiresCaptcha||this.clearState(),n}catch(n){throw n instanceof p.ErrorResponse||this.clearState(),n}}))}logOut(e){e(),this.messagingService.send("loggedOut")}authingWithApiKey(){return this.logInStrategy instanceof s.ApiLogInStrategy}authingWithSso(){return this.logInStrategy instanceof c.SsoLogInStrategy}authingWithPassword(){return this.logInStrategy instanceof l.PasswordLogInStrategy}getAuthStatus(e){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated({userId:e})))return r.AuthenticationStatus.LoggedOut;(yield this.cryptoService.hasKeyStored(a.KeySuffixOptions.Auto,e))&&!(yield this.stateService.getEverBeenUnlocked({userId:e}))&&(yield this.cryptoService.getKey(a.KeySuffixOptions.Auto,e));return(yield this.cryptoService.hasKeyInMemory(e))?r.AuthenticationStatus.Unlocked:r.AuthenticationStatus.Locked}))}makePreloginKey(e,t){return i(this,void 0,void 0,(function*(){t=t.trim().toLowerCase();let n=null,i=null;try{const e=yield this.apiService.postPrelogin(new d.PreloginRequest(t));null!=e&&(n=e.kdf,i=e.kdfIterations)}catch(r){if(null==r||404!==r.statusCode)throw r}return this.cryptoService.makeKey(e,t,n,i)}))}saveState(e){this.logInStrategy=e,this.startSessionTimeout()}clearState(){this.logInStrategy=null,this.clearSessionTimeout()}startSessionTimeout(){this.clearSessionTimeout(),this.sessionTimeout=setTimeout((()=>this.clearState()),12e4)}clearSessionTimeout(){null!=this.sessionTimeout&&clearTimeout(this.sessionTimeout)}}},71545:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AzureFileUploadService=void 0;const r=n(82769);t.AzureFileUploadService=class{constructor(e){this.logService=e}upload(e,t,n){return i(this,void 0,void 0,(function*(){return t.buffer.byteLength<=268435456?yield this.azureUploadBlob(e,t):yield this.azureUploadBlocks(e,t,n)}))}azureUploadBlob(e,t){return i(this,void 0,void 0,(function*(){const n=r.Utils.getUrl(e),i=new Headers({"x-ms-date":(new Date).toUTCString(),"x-ms-version":n.searchParams.get("sv"),"Content-Length":t.buffer.byteLength.toString(),"x-ms-blob-type":"BlockBlob"}),o=new Request(e,{body:t.buffer,cache:"no-store",method:"PUT",headers:i}),a=yield fetch(o);if(201!==a.status)throw new Error(`Failed to create Azure blob: ${a.status}`)}))}azureUploadBlocks(e,t,n){return i(this,void 0,void 0,(function*(){const i=r.Utils.getUrl(e),o=this.getMaxBlockSize(i.searchParams.get("sv"));let a=0;const s=Math.ceil(t.buffer.byteLength/o),l=[];if(s>5e4)throw new Error("Cannot upload file, exceeds maximum size of "+5e4*o);try{for(;a{t+=`${e}`})),t+="",t}getMaxBlockSize(e){return o.compare(e,"2019-12-12")>=0?4194304e3:o.compare(e,"2016-05-31")>=0?104857600:4194304}};class o{constructor(e){this.year=0,this.month=0,this.day=0;try{const t=e.split("-").map((e=>Number.parseInt(e,10)));this.year=t[0],this.month=t[1],this.day=t[2]}catch(t){}}static compare(e,t){return"string"==typeof e&&(e=new o(e)),"string"==typeof t&&(t=new o(t)),e.year!==t.year?e.year-t.year:e.month!==t.month?e.month-t.month:e.day!==t.day?e.day-t.day:0}compare(e){return o.compare(this,e)}}},29911:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BitwardenFileUploadService=void 0;const r=n(82769);t.BitwardenFileUploadService=class{constructor(e){this.apiService=e}upload(e,t,n){return i(this,void 0,void 0,(function*(){const i=new FormData;try{const n=new Blob([t.buffer],{type:"application/octet-stream"});i.append("data",n,e)}catch(o){if(!r.Utils.isNode||r.Utils.isBrowser)throw o;i.append("data",Buffer.from(t.buffer),{filepath:e,contentType:"application/octet-stream"})}yield n(i)}))}}},45921:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterService=void 0;t.BroadcasterService=class{constructor(){this.subscribers=new Map}send(e,t){null==t?this.subscribers.forEach((t=>{t(e)})):this.subscribers.has(t)&&this.subscribers.get(t)(e)}subscribe(e,t){this.subscribers.set(e,t)}unsubscribe(e){this.subscribers.has(e)&&this.subscribers.delete(e)}}},36833:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CipherService=void 0;const a=n(32773),s=n(67577),l=n(71703),c=n(27605),d=n(82769),p=n(82789),u=n(73024),m=n(53763),h=n(49624),v=n(84379),f=n(809),g=n(89642),y=n(28947),x=n(20929),S=n(7012),b=n(20126),w=n(82890),C=n(34392),I=n(8488),E=n(61418),P=n(53994),O=n(62415),k=n(16391),A=n(3467),T=n(33018),M=n(40170),B=new Map([["google.com",new Set(["script.google.com"])]]);class D{constructor(e,t,n,i,r,o,a,s){this.cryptoService=e,this.settingsService=t,this.apiService=n,this.fileUploadService=i,this.i18nService=r,this.searchService=o,this.logService=a,this.stateService=s,this.sortedCiphersCache=new b.SortedCiphersCache(this.sortCiphersByLastUsed)}getDecryptedCipherCache(){return o(this,void 0,void 0,(function*(){return yield this.stateService.getDecryptedCiphers()}))}setDecryptedCipherCache(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCiphers(e),null!=this.searchService&&(null==e?this.searchService().clearIndex():this.searchService().indexCiphers())}))}clearCache(e){return o(this,void 0,void 0,(function*(){yield this.clearDecryptedCiphersState(e)}))}encrypt(e,t,n=null){return o(this,void 0,void 0,(function*(){if(null!=e.id){if(null==n&&(n=yield this.get(e.id)),null!=n){const t=yield n.decrypt();if(e.passwordHistory=t.passwordHistory||[],e.type===a.CipherType.Login&&t.type===a.CipherType.Login)if(null!=t.login.password&&""!==t.login.password&&t.login.password!==e.login.password){const n=new M.PasswordHistoryView;n.password=t.login.password,n.lastUsedDate=e.login.passwordRevisionDate=new Date,e.passwordHistory.splice(0,0,n)}else e.login.passwordRevisionDate=t.login.passwordRevisionDate;if(t.hasFields){const n=t.fields.filter((e=>e.type===s.FieldType.Hidden&&null!=e.name&&""!==e.name&&null!=e.value&&""!==e.value)),i=null==e.fields?[]:e.fields.filter((e=>e.type===s.FieldType.Hidden&&null!=e.name&&""!==e.name));n.forEach((t=>{const n=i.find((e=>e.name===t.name));if(null==n||n.value!==t.value){const n=new M.PasswordHistoryView;n.password=t.name+": "+t.value,n.lastUsedDate=new Date,e.passwordHistory.splice(0,0,n)}}))}}null!=e.passwordHistory&&0===e.passwordHistory.length?e.passwordHistory=null:null!=e.passwordHistory&&e.passwordHistory.length>5&&(e.passwordHistory=e.passwordHistory.slice(0,5))}const i=new h.Cipher;if(i.id=e.id,i.folderId=e.folderId,i.favorite=e.favorite,i.organizationId=e.organizationId,i.type=e.type,i.collectionIds=e.collectionIds,i.revisionDate=e.revisionDate,i.reprompt=e.reprompt,null==t&&null!=i.organizationId&&null==(t=yield this.cryptoService.getOrgKey(i.organizationId)))throw new Error("Cannot encrypt cipher for organization. No key.");return yield Promise.all([this.encryptObjProperty(e,i,{name:null,notes:null},t),this.encryptCipherData(i,e,t),this.encryptFields(e.fields,t).then((e=>{i.fields=e})),this.encryptPasswordHistories(e.passwordHistory,t).then((e=>{i.passwordHistory=e})),this.encryptAttachments(e.attachments,t).then((e=>{i.attachments=e}))]),i}))}encryptAttachments(e,t){return o(this,void 0,void 0,(function*(){if(null==e||0===e.length)return null;const n=[],i=[];return e.forEach((e=>o(this,void 0,void 0,(function*(){const r=new u.Attachment;r.id=e.id,r.size=e.size,r.sizeName=e.sizeName,r.url=e.url;const a=this.encryptObjProperty(e,r,{fileName:null},t).then((()=>o(this,void 0,void 0,(function*(){null!=e.key&&(r.key=yield this.cryptoService.encrypt(e.key.key,t)),i.push(r)}))));n.push(a)})))),yield Promise.all(n),i}))}encryptFields(e,t){return o(this,void 0,void 0,(function*(){if(!e||!e.length)return null;const n=this,i=[];return yield e.reduce(((e,r)=>o(this,void 0,void 0,(function*(){yield e;const o=yield n.encryptField(r,t);i.push(o)}))),Promise.resolve()),i}))}encryptField(e,t){return o(this,void 0,void 0,(function*(){const n=new v.Field;return n.type=e.type,n.linkedId=e.linkedId,e.type===s.FieldType.Boolean&&"true"!==e.value&&(e.value="false"),yield this.encryptObjProperty(e,n,{name:null,value:null},t),n}))}encryptPasswordHistories(e,t){return o(this,void 0,void 0,(function*(){if(!e||!e.length)return null;const n=this,i=[];return yield e.reduce(((e,r)=>o(this,void 0,void 0,(function*(){yield e;const o=yield n.encryptPasswordHistory(r,t);i.push(o)}))),Promise.resolve()),i}))}encryptPasswordHistory(e,t){return o(this,void 0,void 0,(function*(){const n=new x.Password;return n.lastUsedDate=e.lastUsedDate,yield this.encryptObjProperty(e,n,{password:null},t),n}))}get(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t||!t.hasOwnProperty(e))return null;const n=yield this.stateService.getLocalData();return new h.Cipher(t[e],n?n[e]:null)}))}getAll(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getLocalData(),t=yield this.stateService.getEncryptedCiphers(),n=[];for(const i in t)t.hasOwnProperty(i)&&n.push(new h.Cipher(t[i],e?e[i]:null));return n}))}getAllDecrypted(){var e;return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getUserId();if(null!=(yield this.getDecryptedCipherCache()))return null!=this.searchService&&(null!==(e=this.searchService().indexedEntityId)&&void 0!==e?e:t)!==t&&(yield this.searchService().indexCiphers(t,yield this.getDecryptedCipherCache())),yield this.getDecryptedCipherCache();const n=[];if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const i=[];return(yield this.getAll()).forEach((e=>o(this,void 0,void 0,(function*(){i.push(e.decrypt().then((e=>n.push(e))))})))),yield Promise.all(i),n.sort(this.getLocaleSortingFunction()),yield this.setDecryptedCipherCache(n),n}))}getAllDecryptedForGrouping(e,t=!0){return o(this,void 0,void 0,(function*(){return(yield this.getAllDecrypted()).filter((n=>!n.isDeleted&&(!(!t||n.folderId!==e)||!t&&null!=n.collectionIds&&n.collectionIds.indexOf(e)>-1)))}))}getAllDecryptedForUrl(e,t,n=null){return o(this,void 0,void 0,(function*(){if(null==e&&null==t)return Promise.resolve([]);const i=d.Utils.getDomain(e),r=null==i?Promise.resolve([]):this.settingsService.getEquivalentDomains().then((e=>{let t=[];return e.forEach((e=>{e.length&&e.indexOf(i)>=0&&(t=t.concat(e))})),t.length||t.push(i),t})),o=yield Promise.all([r,this.getAllDecrypted()]),s=o[0],c=o[1];return null==n&&null==(n=yield this.stateService.getDefaultUriMatch())&&(n=l.UriMatchType.Domain),c.filter((r=>{if(null!=r.deletedDate)return!1;if(null!=t&&t.indexOf(r.type)>-1)return!0;if(null!=e&&r.type===a.CipherType.Login&&null!=r.login.uris)for(let t=0;t-1){if(!B.has(a.domain))return!0;{const t=d.Utils.getHost(e);if(!B.get(a.domain).has(t))return!0}}break;case l.UriMatchType.Host:{const t=d.Utils.getHost(e);if(null!=t&&t===d.Utils.getHost(a.uri))return!0;break}case l.UriMatchType.Exact:if(e===a.uri)return!0;break;case l.UriMatchType.StartsWith:if(e.startsWith(a.uri))return!0;break;case l.UriMatchType.RegularExpression:try{if(new RegExp(a.uri,"i").test(e))return!0}catch(o){this.logService.error(o)}case l.UriMatchType.Never:}}return!1}))}))}getAllFromApiForOrganization(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.getCiphersOrganization(e);if(null!=t&&null!=t.data&&t.data.length){const e=[],n=[];return t.data.forEach((t=>{const i=new p.CipherData(t),r=new h.Cipher(i);n.push(r.decrypt().then((t=>e.push(t))))})),yield Promise.all(n),e.sort(this.getLocaleSortingFunction()),e}return[]}))}getLastUsedForUrl(e,t=!1){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!0,!1,t)}))}getLastLaunchedForUrl(e,t=!1){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!1,!0,t)}))}getNextCipherForUrl(e){return o(this,void 0,void 0,(function*(){return this.getCipherForUrl(e,!1,!1,!1)}))}updateLastUsedIndexForUrl(e){this.sortedCiphersCache.updateLastUsedIndex(e)}updateLastUsedDate(e){return o(this,void 0,void 0,(function*(){let t=yield this.stateService.getLocalData();t||(t={}),t[e]?t[e].lastUsedDate=(new Date).getTime():t[e]={lastUsedDate:(new Date).getTime()},yield this.stateService.setLocalData(t);const n=yield this.stateService.getDecryptedCiphers();if(n){for(let i=0;i{null==n.key&&i.push(this.shareAttachmentWithServer(n,e.id,t))})),yield Promise.all(i),e.organizationId=t,e.collectionIds=n;const r=yield this.encrypt(e),o=new A.CipherShareRequest(r),a=yield this.apiService.putShareCipher(e.id,o),s=new p.CipherData(a,n);yield this.upsert(s)}))}shareManyWithServer(e,t,n){return o(this,void 0,void 0,(function*(){const i=[],r=[];for(const s of e)s.organizationId=t,s.collectionIds=n,i.push(this.encrypt(s).then((e=>{r.push(e)})));yield Promise.all(i);const o=new E.CipherBulkShareRequest(r,n);try{yield this.apiService.putShareCiphers(o)}catch(a){for(const t of e)t.organizationId=null,t.collectionIds=null;throw a}yield this.upsert(r.map((e=>e.toCipherData())))}))}saveAttachmentWithServer(e,t,n=!1){return new Promise(((i,r)=>{const a=new FileReader;a.readAsArrayBuffer(t),a.onload=a=>o(this,void 0,void 0,(function*(){try{const r=yield this.saveAttachmentRawWithServer(e,t.name,a.target.result,n);i(r)}catch(o){r(o)}})),a.onerror=()=>{r("Error reading file.")}}))}saveAttachmentRawWithServer(e,t,n,i=!1){return o(this,void 0,void 0,(function*(){const r=yield this.cryptoService.getOrgKey(e.organizationId),o=yield this.cryptoService.encrypt(t,r),a=yield this.cryptoService.makeEncKey(r),s=yield this.cryptoService.encryptToBytes(n,a[0]),l={key:a[1].encryptedString,fileName:o.encryptedString,fileSize:s.buffer.byteLength,adminRequest:i};let c;try{const t=yield this.apiService.postCipherAttachment(e.id,l);c=i?t.cipherMiniResponse:t.cipherResponse,yield this.fileUploadService.uploadCipherAttachment(i,t,o,s)}catch(u){if(!(u instanceof T.ErrorResponse&&404===u.statusCode||405===u.statusCode))throw u instanceof T.ErrorResponse?new Error(u.getSingleMessage()):u;c=yield this.legacyServerAttachmentFileUpload(i,e.id,o,s,a[1])}const d=new p.CipherData(c,e.collectionIds);return i||(yield this.upsert(d)),new h.Cipher(d)}))}legacyServerAttachmentFileUpload(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=new FormData;try{const e=new Blob([i.buffer],{type:"application/octet-stream"});o.append("key",r.encryptedString),o.append("data",e,n.encryptedString)}catch(s){if(!d.Utils.isNode||d.Utils.isBrowser)throw s;o.append("key",r.encryptedString),o.append("data",Buffer.from(i.buffer),{filepath:n.encryptedString,contentType:"application/octet-stream"})}let a;try{a=e?yield this.apiService.postCipherAttachmentAdminLegacy(t,o):yield this.apiService.postCipherAttachmentLegacy(t,o)}catch(s){throw new Error(s.getSingleMessage())}return a}))}saveCollectionsWithServer(e){return o(this,void 0,void 0,(function*(){const t=new P.CipherCollectionsRequest(e.collectionIds);yield this.apiService.putCipherCollections(e.id,t);const n=e.toCipherData();yield this.upsert(n)}))}upsert(e){return o(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedCiphers();if(null==t&&(t={}),e instanceof p.CipherData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return o(this,void 0,void 0,(function*(){yield this.clearDecryptedCiphersState(),yield this.stateService.setEncryptedCiphers(e)}))}clear(e){return o(this,void 0,void 0,(function*(){yield this.clearEncryptedCiphersState(e),yield this.clearCache(e)}))}moveManyWithServer(e,t){return o(this,void 0,void 0,(function*(){yield this.apiService.putMoveCiphers(new C.CipherBulkMoveRequest(e,t));let n=yield this.stateService.getEncryptedCiphers();null==n&&(n={}),e.forEach((e=>{n.hasOwnProperty(e)&&(n[e].folderId=t)})),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(n)}))}delete(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null!=t){if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}}))}deleteWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.deleteCipher(e),yield this.delete(e)}))}deleteManyWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.deleteManyCiphers(new w.CipherBulkDeleteRequest(e)),yield this.delete(e)}))}deleteAttachment(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.stateService.getEncryptedCiphers();if(null!=n&&n.hasOwnProperty(e)&&null!=n[e].attachments){for(let i=0;ii?-1:null!=i&&null==n?1:0}sortCiphersByLastUsedThenName(e,t){const n=this.sortCiphersByLastUsed(e,t);return 0!==n?n:this.getLocaleSortingFunction()(e,t)}getLocaleSortingFunction(){return(e,t)=>{let n=e.name,i=t.name;if(null==n&&null!=i)return-1;if(null!=n&&null==i)return 1;if(null==n&&null==i)return 0;const r=this.i18nService.collator?this.i18nService.collator.compare(n,i):n.localeCompare(i);return 0!==r||e.type!==a.CipherType.Login||t.type!==a.CipherType.Login?r:(null!=e.login.username&&(n+=e.login.username),null!=t.login.username&&(i+=t.login.username),this.i18nService.collator?this.i18nService.collator.compare(n,i):n.localeCompare(i))}}softDelete(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t)return;const n=e=>{null!=t[e]&&(t[e].deletedDate=(new Date).toISOString())};"string"==typeof e?n(e):e.forEach(n),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}))}softDeleteWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.putDeleteCipher(e),yield this.softDelete(e)}))}softDeleteManyWithServer(e){return o(this,void 0,void 0,(function*(){yield this.apiService.putDeleteManyCiphers(new w.CipherBulkDeleteRequest(e)),yield this.softDelete(e)}))}restore(e){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCiphers();if(null==t)return;const n=e=>{null!=t[e.id]&&(t[e.id].deletedDate=null,t[e.id].revisionDate=e.revisionDate)};e.constructor.name===Array.name?e.forEach(n):n(e),yield this.clearCache(),yield this.stateService.setEncryptedCiphers(t)}))}restoreWithServer(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.putRestoreCipher(e);yield this.restore({id:e,revisionDate:t.revisionDate})}))}restoreManyWithServer(e){return o(this,void 0,void 0,(function*(){const t=yield this.apiService.putRestoreManyCiphers(new I.CipherBulkRestoreRequest(e)),n=[];for(const e of t.data)n.push({id:e.id,revisionDate:e.revisionDate});yield this.restore(n)}))}shareAttachmentWithServer(e,t,n){return o(this,void 0,void 0,(function*(){const i=yield this.apiService.nativeFetch(new Request(e.url,{cache:"no-store"}));if(200!==i.status)throw Error("Failed to download attachment: "+i.status.toString());const r=yield i.arrayBuffer(),o=yield this.cryptoService.decryptFromBytes(r,null),a=yield this.cryptoService.getOrgKey(n),s=yield this.cryptoService.encrypt(e.fileName,a),l=yield this.cryptoService.makeEncKey(a),c=yield this.cryptoService.encryptToBytes(o,l[0]),p=new FormData;try{const e=new Blob([c.buffer],{type:"application/octet-stream"});p.append("key",l[1].encryptedString),p.append("data",e,s.encryptedString)}catch(u){if(!d.Utils.isNode||d.Utils.isBrowser)throw u;p.append("key",l[1].encryptedString),p.append("data",Buffer.from(c.buffer),{filepath:s.encryptedString,contentType:"application/octet-stream"})}try{yield this.apiService.postShareCipherAttachment(t,e.id,p,n)}catch(u){throw new Error(u.getSingleMessage())}}))}encryptObjProperty(e,t,n,i){return o(this,void 0,void 0,(function*(){const r=[],o=this;for(const a in n)n.hasOwnProperty(a)&&function(t,a){const s=Promise.resolve().then((()=>{const r=e[n[t]||t];return r&&""!==r?o.cryptoService.encrypt(r,i):null})).then((e=>{a[t]=e}));r.push(s)}(a,t);yield Promise.all(r)}))}encryptCipherData(e,t,n){return o(this,void 0,void 0,(function*(){switch(e.type){case a.CipherType.Login:if(e.login=new g.Login,e.login.passwordRevisionDate=t.login.passwordRevisionDate,e.login.autofillOnPageLoad=t.login.autofillOnPageLoad,yield this.encryptObjProperty(t.login,e.login,{username:null,password:null,totp:null},n),null!=t.login.uris){e.login.uris=[];for(let i=0;it.login.autofillOnPageLoad||null==t.login.autofillOnPageLoad&&!1!==e)),0===t.length)return null}this.sortedCiphersCache.addCiphers(r,t)}return n?this.sortedCiphersCache.getLastLaunched(r):t?this.sortedCiphersCache.getLastUsed(r):this.sortedCiphersCache.getNext(r)}))}clearEncryptedCiphersState(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setEncryptedCiphers(null,{userId:e})}))}clearDecryptedCiphersState(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCiphers(null,{userId:e}),this.clearSortedCiphers()}))}clearSortedCiphers(){this.sortedCiphersCache.clear()}}i([c.sequentialize((()=>"getAllDecrypted")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],D.prototype,"getAllDecrypted",null),t.CipherService=D},94778:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionService=void 0;const r=n(39814),o=n(82769),a=n(34917),s=n(65642),l=n(86001);t.CollectionService=class{constructor(e,t,n){this.cryptoService=e,this.i18nService=t,this.stateService=n}clearCache(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCollections(null,{userId:e})}))}encrypt(e){return i(this,void 0,void 0,(function*(){if(null==e.organizationId)throw new Error("Collection has no organization id.");const t=yield this.cryptoService.getOrgKey(e.organizationId);if(null==t)throw new Error("No key for this collection's organization.");const n=new s.Collection;return n.id=e.id,n.organizationId=e.organizationId,n.readOnly=e.readOnly,n.name=yield this.cryptoService.encrypt(e.name,t),n}))}decryptMany(e){return i(this,void 0,void 0,(function*(){if(null==e)return[];const t=[],n=[];return e.forEach((e=>{n.push(e.decrypt().then((e=>t.push(e))))})),yield Promise.all(n),t.sort(o.Utils.getSortFunction(this.i18nService,"name"))}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCollections();return null!=t&&t.hasOwnProperty(e)?new s.Collection(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedCollections(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new s.Collection(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getDecryptedCollections();if(null!=e)return e;if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=yield this.getAll();return e=yield this.decryptMany(t),yield this.stateService.setDecryptedCollections(e),e}))}getAllNested(e=null){return i(this,void 0,void 0,(function*(){null==e&&(e=yield this.getAllDecrypted());const t=[];return e.forEach((e=>{const n=new l.CollectionView;n.id=e.id,n.organizationId=e.organizationId;const i=null!=e.name?e.name.replace(/^\/+|\/+$/g,"").split("/"):[];r.ServiceUtils.nestedTraverse(t,0,i,n,null,"/")})),t}))}getNested(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAllNested();return r.ServiceUtils.getTreeNodeObject(t,e)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedCollections();if(null==t&&(t={}),e instanceof a.CollectionData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.clearCache(),yield this.stateService.setEncryptedCollections(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.clearCache(e),yield this.stateService.setEncryptedCollections(null,{userId:e})}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedCollections();null!=t&&("string"==typeof e?delete t[e]:e.forEach((e=>{delete t[e]})),yield this.replace(t))}))}}},27944:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConsoleLogService=void 0;const i=n(40827),r=n(71518);t.ConsoleLogService=class{constructor(e,t=null){this.isDev=e,this.filter=t,this.timersMap=new Map}debug(e){this.isDev&&this.write(r.LogLevelType.Debug,e)}info(e){this.write(r.LogLevelType.Info,e)}warning(e){this.write(r.LogLevelType.Warning,e)}error(e){this.write(r.LogLevelType.Error,e)}write(e,t){if(null==this.filter||!this.filter(e))switch(e){case r.LogLevelType.Debug:case r.LogLevelType.Info:console.log(t);break;case r.LogLevelType.Warning:console.warn(t);break;case r.LogLevelType.Error:console.error(t)}}time(e="default"){this.timersMap.has(e)||this.timersMap.set(e,i())}timeEnd(e="default"){const t=i(this.timersMap.get(e));return this.timersMap.delete(e),this.write(r.LogLevelType.Info,`${e}: ${1e3*t[0]+t[1]/1e7}ms`),t}}},74901:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerService=void 0;t.ContainerService=class{constructor(e){this.cryptoService=e}attachToWindow(e){this.attachToGlobal(e)}attachToGlobal(e){e.bitwardenContainerService||(e.bitwardenContainerService=this)}getCryptoService(){return this.cryptoService}}},47165:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CryptoService=void 0;const a=n(24736),s=n(28588),l=n(43578),c=n(20971),d=n(7980),p=n(27605),u=n(82769),m=n(40596),h=n(16131),v=n(22205),f=n(6394),g=n(69731);class y{constructor(e,t,n,i){this.cryptoFunctionService=e,this.platformUtilService=t,this.logService=n,this.stateService=i}setKey(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKey(e,{userId:t}),yield this.storeKey(e,t)}))}setKeyHash(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setKeyHash(e)}))}setEncKey(e){return o(this,void 0,void 0,(function*(){null!=e&&(yield this.stateService.setDecryptedCryptoSymmetricKey(null),yield this.stateService.setEncryptedCryptoSymmetricKey(e))}))}setEncPrivateKey(e){return o(this,void 0,void 0,(function*(){null!=e&&(yield this.stateService.setDecryptedPrivateKey(null),yield this.stateService.setEncryptedPrivateKey(e))}))}setOrgKeys(e,t){return o(this,void 0,void 0,(function*(){const n={};e.forEach((e=>{n[e.id]=e.key}));for(const e of t){const t=yield this.getProviderKey(e.providerId),i=yield this.decryptToBytes(new v.EncString(e.key),t);n[e.id]=(yield this.rsaEncrypt(i)).encryptedString}return yield this.stateService.setDecryptedOrganizationKeys(null),yield this.stateService.setEncryptedOrganizationKeys(n)}))}setProviderKeys(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=e.key})),yield this.stateService.setDecryptedProviderKeys(null),yield this.stateService.setEncryptedProviderKeys(t)}))}getKey(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.stateService.getCryptoMasterKey({userId:t});if(null!=n)return n;e||(e=d.KeySuffixOptions.Auto);const i=yield this.getKeyFromStorage(e,t);return null!=i&&this.setKey(i,t),i}))}getKeyFromStorage(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.retrieveKeyFromStorage(e,t);if(null!=n){const e=new g.SymmetricCryptoKey(u.Utils.fromB64ToArray(n).buffer);return(yield this.validateKey(e))?e:(this.logService.warning("Wrong key, throwing away stored key"),yield this.clearSecretKeyStore(t),null)}return null}))}getKeyHash(){return o(this,void 0,void 0,(function*(){return yield this.stateService.getKeyHash()}))}compareAndUpdateKeyHash(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.getKeyHash();if(null!=e&&null!=n){const i=yield this.hashPassword(e,t,l.HashPurpose.LocalAuthorization);if(null!=i&&n===i)return!0;const r=yield this.hashPassword(e,t,l.HashPurpose.ServerAuthorization);if(null!=r&&n===r)return yield this.setKeyHash(i),!0}return!1}))}getEncKey(e=null){return this.getEncKeyHelper(e)}getPublicKey(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getPublicKey();if(null!=e)return e;const t=yield this.getPrivateKey();if(null==t)return null;const n=yield this.cryptoFunctionService.rsaExtractPublicKey(t);return yield this.stateService.setPublicKey(n),n}))}getPrivateKey(){return o(this,void 0,void 0,(function*(){const e=yield this.stateService.getDecryptedPrivateKey();if(null!=e)return e;const t=yield this.stateService.getEncryptedPrivateKey();if(null==t)return null;const n=yield this.decryptToBytes(new v.EncString(t),null);return yield this.stateService.setDecryptedPrivateKey(n),n}))}getFingerprint(e,t){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getPublicKey()),null===t)throw new Error("No public key available.");const n=yield this.cryptoFunctionService.hash(t,"sha256"),i=yield this.cryptoFunctionService.hkdfExpand(n,e,32,"sha256");return this.hashPhrase(i)}))}getOrgKeys(){return o(this,void 0,void 0,(function*(){const e=new Map,t=yield this.stateService.getDecryptedOrganizationKeys();if(null!=t&&t.size>0)return t;const n=yield this.stateService.getEncryptedOrganizationKeys();if(null==n)return null;let i=!1;for(const r in n){if(!n.hasOwnProperty(r))continue;const t=yield this.rsaDecrypt(n[r]);e.set(r,new g.SymmetricCryptoKey(t)),i=!0}return i&&(yield this.stateService.setDecryptedOrganizationKeys(e)),e}))}getOrgKey(e){return o(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.getOrgKeys();return null!=t&&t.has(e)?t.get(e):null}))}getProviderKeys(){return o(this,void 0,void 0,(function*(){const e=new Map,t=yield this.stateService.getDecryptedProviderKeys();if(null!=t&&t.size>0)return t;const n=yield this.stateService.getEncryptedProviderKeys();if(null==n)return null;let i=!1;for(const r in n){if(!n.hasOwnProperty(r))continue;const t=yield this.rsaDecrypt(n[r]);e.set(r,new g.SymmetricCryptoKey(t)),i=!0}return i&&(yield this.stateService.setDecryptedProviderKeys(e)),e}))}getProviderKey(e){return o(this,void 0,void 0,(function*(){if(null==e)return null;const t=yield this.getProviderKeys();return null!=t&&t.has(e)?t.get(e):null}))}hasKey(){return o(this,void 0,void 0,(function*(){return(yield this.hasKeyInMemory())||(yield this.hasKeyStored(d.KeySuffixOptions.Auto))||(yield this.hasKeyStored(d.KeySuffixOptions.Biometric))}))}hasKeyInMemory(e){return o(this,void 0,void 0,(function*(){return null!=(yield this.stateService.getCryptoMasterKey({userId:e}))}))}hasKeyStored(e,t){return o(this,void 0,void 0,(function*(){switch(e){case d.KeySuffixOptions.Auto:return null!=(yield this.stateService.getCryptoMasterKeyAuto({userId:t}));case d.KeySuffixOptions.Biometric:return!0===(yield this.stateService.hasCryptoMasterKeyBiometric({userId:t}));default:return!1}}))}hasEncKey(){return o(this,void 0,void 0,(function*(){return null!=(yield this.stateService.getEncryptedCryptoSymmetricKey())}))}clearKey(e=!0,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKey(null,{userId:t}),yield this.stateService.setLegacyEtmKey(null,{userId:t}),e&&(yield this.clearSecretKeyStore(t))}))}clearStoredKey(e){return o(this,void 0,void 0,(function*(){e===d.KeySuffixOptions.Auto?yield this.stateService.setCryptoMasterKeyAuto(null):yield this.stateService.setCryptoMasterKeyBiometric(null)}))}clearKeyHash(e){return o(this,void 0,void 0,(function*(){return yield this.stateService.setKeyHash(null,{userId:e})}))}clearEncKey(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedCryptoSymmetricKey(null,{userId:t}),e||(yield this.stateService.setEncryptedCryptoSymmetricKey(null,{userId:t}))}))}clearKeyPair(e,t){return o(this,void 0,void 0,(function*(){const n=[this.stateService.setDecryptedPrivateKey(null,{userId:t}),this.stateService.setPublicKey(null,{userId:t})];return e||n.push(this.stateService.setEncryptedPrivateKey(null,{userId:t})),Promise.all(n)}))}clearOrgKeys(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedOrganizationKeys(null,{userId:t}),e||(yield this.stateService.setEncryptedOrganizationKeys(null,{userId:t}))}))}clearProviderKeys(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedProviderKeys(null,{userId:t}),e||(yield this.stateService.setEncryptedProviderKeys(null,{userId:t}))}))}clearPinProtectedKey(e){return o(this,void 0,void 0,(function*(){return yield this.stateService.setEncryptedPinProtected(null,{userId:e})}))}clearKeys(e){return o(this,void 0,void 0,(function*(){yield this.clearKey(!0,e),yield this.clearKeyHash(e),yield this.clearOrgKeys(!1,e),yield this.clearProviderKeys(!1,e),yield this.clearEncKey(!1,e),yield this.clearKeyPair(!1,e),yield this.clearPinProtectedKey(e)}))}toggleKey(){return o(this,void 0,void 0,(function*(){const e=yield this.getKey();yield this.setKey(e)}))}makeKey(e,t,n,i){return o(this,void 0,void 0,(function*(){let r=null;if(null!=n&&n!==c.KdfType.PBKDF2_SHA256)throw new Error("Unknown Kdf.");if(null==i)i=5e3;else if(i<5e3)throw new Error("PBKDF2 iteration minimum is 5000.");return r=yield this.cryptoFunctionService.pbkdf2(e,t,"sha256",i),new g.SymmetricCryptoKey(r)}))}makeKeyFromPin(e,t,n,i,r=null){return o(this,void 0,void 0,(function*(){if(null==r){const e=yield this.stateService.getEncryptedPinProtected();if(null==e)throw new Error("No PIN protected key found.");r=new v.EncString(e)}const o=yield this.makePinKey(e,t,n,i),a=yield this.decryptToBytes(r,o);return new g.SymmetricCryptoKey(a)}))}makeShareKey(){return o(this,void 0,void 0,(function*(){const e=yield this.cryptoFunctionService.randomBytes(64),t=yield this.getPublicKey();return[yield this.rsaEncrypt(e,t),new g.SymmetricCryptoKey(e)]}))}makeKeyPair(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.rsaGenerateKeyPair(2048);return[u.Utils.fromBufferToB64(t[0]),yield this.encrypt(t[1],e)]}))}makePinKey(e,t,n,i){return o(this,void 0,void 0,(function*(){const r=yield this.makeKey(e,t,n,i);return yield this.stretchKey(r)}))}makeSendKey(e){return o(this,void 0,void 0,(function*(){const t=yield this.cryptoFunctionService.hkdf(e,"bitwarden-send","send",64,"sha256");return new g.SymmetricCryptoKey(t)}))}hashPassword(e,t,n){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getKey()),null==e||null==t)throw new Error("Invalid parameters.");const i=n===l.HashPurpose.LocalAuthorization?2:1,r=yield this.cryptoFunctionService.pbkdf2(t.key,e,"sha256",i);return u.Utils.fromBufferToB64(r)}))}makeEncKey(e){return o(this,void 0,void 0,(function*(){const t=yield this.getKeyForEncryption(e),n=yield this.cryptoFunctionService.randomBytes(64);return this.buildEncKey(t,n)}))}remakeEncKey(e,t){return o(this,void 0,void 0,(function*(){return null==t&&(t=yield this.getEncKey()),this.buildEncKey(e,t.key)}))}encrypt(e,t){return o(this,void 0,void 0,(function*(){if(null==e)return Promise.resolve(null);let n;n="string"==typeof e?u.Utils.fromUtf8ToArray(e).buffer:e;const i=yield this.aesEncrypt(n,t),r=u.Utils.fromBufferToB64(i.iv),o=u.Utils.fromBufferToB64(i.data),a=null!=i.mac?u.Utils.fromBufferToB64(i.mac):null;return new v.EncString(i.key.encType,o,r,a)}))}encryptToBytes(e,t){return o(this,void 0,void 0,(function*(){const n=yield this.aesEncrypt(e,t);let i=0;null!=n.mac&&(i=n.mac.byteLength);const r=new Uint8Array(1+n.iv.byteLength+i+n.data.byteLength);return r.set([n.key.encType]),r.set(new Uint8Array(n.iv),1),null!=n.mac&&r.set(new Uint8Array(n.mac),1+n.iv.byteLength),r.set(new Uint8Array(n.data),1+n.iv.byteLength+i),new h.EncArrayBuffer(r.buffer)}))}rsaEncrypt(e,t){return o(this,void 0,void 0,(function*(){if(null==t&&(t=yield this.getPublicKey()),null==t)throw new Error("Public key unavailable.");const n=yield this.cryptoFunctionService.rsaEncrypt(e,t,"sha1");return new v.EncString(s.EncryptionType.Rsa2048_OaepSha1_B64,u.Utils.fromBufferToB64(n))}))}rsaDecrypt(e,t){return o(this,void 0,void 0,(function*(){const n=e.split(".");let i,r=null;if(1===n.length)r=s.EncryptionType.Rsa2048_OaepSha256_B64,i=[n[0]];else if(2===n.length)try{r=parseInt(n[0],null),i=n[1].split("|")}catch(c){this.logService.error(c)}switch(r){case s.EncryptionType.Rsa2048_OaepSha256_B64:case s.EncryptionType.Rsa2048_OaepSha1_B64:case s.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:case s.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:break;default:throw new Error("encType unavailable.")}if(null==i||i.length<=0)throw new Error("encPieces unavailable.");const o=u.Utils.fromB64ToArray(i[0]).buffer,a=null!=t?t:yield this.getPrivateKey();if(null==a)throw new Error("No private key.");let l="sha1";switch(r){case s.EncryptionType.Rsa2048_OaepSha256_B64:case s.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:l="sha256";break;case s.EncryptionType.Rsa2048_OaepSha1_B64:case s.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:break;default:throw new Error("encType unavailable.")}return this.cryptoFunctionService.rsaDecrypt(o,a,l)}))}decryptToBytes(e,t){return o(this,void 0,void 0,(function*(){const n=u.Utils.fromB64ToArray(e.iv).buffer,i=u.Utils.fromB64ToArray(e.data).buffer,r=e.mac?u.Utils.fromB64ToArray(e.mac).buffer:null,o=yield this.aesDecryptToBytes(e.encryptionType,i,n,r,t);return null==o?null:o}))}decryptToUtf8(e,t){return o(this,void 0,void 0,(function*(){return yield this.aesDecryptToUtf8(e.encryptionType,e.data,e.iv,e.mac,t)}))}decryptFromBytes(e,t){return o(this,void 0,void 0,(function*(){if(null==e)throw new Error("no encBuf.");const n=new Uint8Array(e),i=n[0];let r=null,o=null,a=null;switch(i){case s.EncryptionType.AesCbc128_HmacSha256_B64:case s.EncryptionType.AesCbc256_HmacSha256_B64:if(n.length<=49)return null;o=n.slice(1,17),a=n.slice(17,49),r=n.slice(49);break;case s.EncryptionType.AesCbc256_B64:if(n.length<=17)return null;o=n.slice(1,17),r=n.slice(17);break;default:return null}return yield this.aesDecryptToBytes(i,r.buffer,o.buffer,null!=a?a.buffer:null,t)}))}randomNumber(e,t){return o(this,void 0,void 0,(function*(){let n=0;const i=t-e+1,r=Math.ceil(Math.log2(i));if(r>53)throw new Error("We cannot generate numbers larger than 53 bits.");const o=Math.ceil(r/8),a=Math.pow(2,r)-1,s=new Uint8Array(yield this.cryptoFunctionService.randomBytes(o));let l=8*(o-1);for(let e=0;e=i?this.randomNumber(e,t):e+n}))}validateKey(e){return o(this,void 0,void 0,(function*(){try{const t=yield this.stateService.getEncryptedPrivateKey(),n=yield this.getEncKeyHelper(e);if(null==t||null==n)return!1;const i=yield this.decryptToBytes(new v.EncString(t),n);yield this.cryptoFunctionService.rsaExtractPublicKey(i)}catch(t){return!1}return!0}))}storeKey(e,t){return o(this,void 0,void 0,(function*(){(yield this.shouldStoreKey(d.KeySuffixOptions.Auto,t))?yield this.stateService.setCryptoMasterKeyAuto(e.keyB64,{userId:t}):(yield this.shouldStoreKey(d.KeySuffixOptions.Biometric,t))?yield this.stateService.setCryptoMasterKeyBiometric(e.keyB64,{userId:t}):(yield this.stateService.setCryptoMasterKeyAuto(null,{userId:t}),yield this.stateService.setCryptoMasterKeyBiometric(null,{userId:t}))}))}shouldStoreKey(e,t){return o(this,void 0,void 0,(function*(){let n=!1;if(e===d.KeySuffixOptions.Auto){n=null==(yield this.stateService.getVaultTimeout({userId:t}))}else if(e===d.KeySuffixOptions.Biometric){n=(yield this.stateService.getBiometricUnlock({userId:t}))&&this.platformUtilService.supportsSecureStorage()}return n}))}retrieveKeyFromStorage(e,t){return o(this,void 0,void 0,(function*(){return e===d.KeySuffixOptions.Auto?yield this.stateService.getCryptoMasterKeyAuto({userId:t}):yield this.stateService.getCryptoMasterKeyBiometric({userId:t})}))}aesEncrypt(e,t){return o(this,void 0,void 0,(function*(){const n=new f.EncryptedObject;if(n.key=yield this.getKeyForEncryption(t),n.iv=yield this.cryptoFunctionService.randomBytes(16),n.data=yield this.cryptoFunctionService.aesEncrypt(e,n.iv,n.key.encKey),null!=n.key.macKey){const e=new Uint8Array(n.iv.byteLength+n.data.byteLength);e.set(new Uint8Array(n.iv),0),e.set(new Uint8Array(n.data),n.iv.byteLength),n.mac=yield this.cryptoFunctionService.hmac(e.buffer,n.key.macKey,"sha256")}return n}))}aesDecryptToUtf8(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=yield this.getKeyForEncryption(r),a=yield this.resolveLegacyKey(e,o);if(null!=a.macKey&&null==i)return this.logService.error("mac required."),null;if(a.encType!==e)return this.logService.error("encType unavailable."),null;const s=this.cryptoFunctionService.aesDecryptFastParameters(t,n,i,a);if(null!=s.macKey&&null!=s.mac){const e=yield this.cryptoFunctionService.hmacFast(s.macData,s.macKey,"sha256");if(!(yield this.cryptoFunctionService.compareFast(s.mac,e)))return this.logService.error("mac failed."),null}return this.cryptoFunctionService.aesDecryptFast(s)}))}aesDecryptToBytes(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=yield this.getKeyForEncryption(r),a=yield this.resolveLegacyKey(e,o);if(null!=a.macKey&&null==i)return null;if(a.encType!==e)return null;if(null!=a.macKey&&null!=i){const e=new Uint8Array(n.byteLength+t.byteLength);e.set(new Uint8Array(n),0),e.set(new Uint8Array(t),n.byteLength);const r=yield this.cryptoFunctionService.hmac(e.buffer,a.macKey,"sha256");if(null===r)return null;if(!(yield this.cryptoFunctionService.compare(i,r)))return this.logService.error("mac failed."),null}return yield this.cryptoFunctionService.aesDecrypt(t,n,a.encKey)}))}getKeyForEncryption(e){return o(this,void 0,void 0,(function*(){if(null!=e)return e;const t=yield this.getEncKey();return null!=t?t:yield this.getKey()}))}resolveLegacyKey(e,t){return o(this,void 0,void 0,(function*(){if(e===s.EncryptionType.AesCbc128_HmacSha256_B64&&t.encType===s.EncryptionType.AesCbc256_B64){let e=yield this.stateService.getLegacyEtmKey();return null==e&&(e=new g.SymmetricCryptoKey(t.key,s.EncryptionType.AesCbc128_HmacSha256_B64),yield this.stateService.setLegacyEtmKey(e)),e}return t}))}stretchKey(e){return o(this,void 0,void 0,(function*(){const t=new Uint8Array(64),n=yield this.cryptoFunctionService.hkdfExpand(e.key,"enc",32,"sha256"),i=yield this.cryptoFunctionService.hkdfExpand(e.key,"mac",32,"sha256");return t.set(new Uint8Array(n)),t.set(new Uint8Array(i),32),new g.SymmetricCryptoKey(t.buffer)}))}hashPhrase(e,t=64){return o(this,void 0,void 0,(function*(){const n=Math.log(m.EEFLongWordList.length)/Math.log(2);let i=Math.ceil(t/n);const r=Array.from(new Uint8Array(e));if(i*n>4*r.length)throw new Error("Output entropy of hash function is too small");const o=[];let s=a.fromArray(r,256);for(;i--;){const e=s.mod(m.EEFLongWordList.length);s=s.divide(m.EEFLongWordList.length),o.push(m.EEFLongWordList[e])}return o}))}buildEncKey(e,t){return o(this,void 0,void 0,(function*(){let n=null;if(32===e.key.byteLength){const i=yield this.stretchKey(e);n=yield this.encrypt(t,i)}else{if(64!==e.key.byteLength)throw new Error("Invalid key size.");n=yield this.encrypt(t,e)}return[new g.SymmetricCryptoKey(t),n]}))}clearSecretKeyStore(e){return o(this,void 0,void 0,(function*(){yield this.stateService.setCryptoMasterKeyAuto(null,{userId:e}),yield this.stateService.setCryptoMasterKeyBiometric(null,{userId:e})}))}getEncKeyHelper(e=null){return o(this,void 0,void 0,(function*(){const t=yield this.stateService.getDecryptedCryptoSymmetricKey();if(null!=t)return t;const n=yield this.stateService.getEncryptedCryptoSymmetricKey();if(null==n)return null;if(null==e&&(e=yield this.getKey()),null==e)return null;let i;const r=new v.EncString(n);if(r.encryptionType===s.EncryptionType.AesCbc256_B64)i=yield this.decryptToBytes(r,e);else{if(r.encryptionType!==s.EncryptionType.AesCbc256_HmacSha256_B64)throw new Error("Unsupported encKey type.");{const t=yield this.stretchKey(e);i=yield this.decryptToBytes(r,t)}}if(null==i)return null;const o=new g.SymmetricCryptoKey(i);return yield this.stateService.setDecryptedCryptoSymmetricKey(o),o}))}}i([p.sequentialize((()=>"getEncKey")),r("design:type",Function),r("design:paramtypes",[g.SymmetricCryptoKey]),r("design:returntype",Promise)],y.prototype,"getEncKey",null),i([p.sequentialize((()=>"getOrgKeys")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],y.prototype,"getOrgKeys",null),i([p.sequentialize((()=>"getProviderKeys")),r("design:type",Function),r("design:paramtypes",[]),r("design:returntype",Promise)],y.prototype,"getProviderKeys",null),t.CryptoService=y},86683:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EnvironmentService=void 0;const r=n(72872),o=n(91185);t.EnvironmentService=class{constructor(e){this.stateService=e,this.urlsSubject=new r.Subject,this.urls=this.urlsSubject,this.stateService.activeAccount.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.setUrlsFromStorage()}))))}hasBaseUrl(){return null!=this.baseUrl}getNotificationsUrl(){return null!=this.notificationsUrl?this.notificationsUrl:null!=this.baseUrl?this.baseUrl+"/notifications":"https://notifications.bitwarden.com"}getWebVaultUrl(){return null!=this.webVaultUrl?this.webVaultUrl:this.baseUrl?this.baseUrl:"https://vault.bitwarden.com"}getSendUrl(){return"https://vault.bitwarden.com"===this.getWebVaultUrl()?"https://send.bitwarden.com/#":this.getWebVaultUrl()+"/#/send/"}getIconsUrl(){return null!=this.iconsUrl?this.iconsUrl:this.baseUrl?this.baseUrl+"/icons":"https://icons.bitwarden.net"}getApiUrl(){return null!=this.apiUrl?this.apiUrl:this.baseUrl?this.baseUrl+"/api":"https://api.bitwarden.com"}getIdentityUrl(){return null!=this.identityUrl?this.identityUrl:this.baseUrl?this.baseUrl+"/identity":"https://identity.bitwarden.com"}getEventsUrl(){return null!=this.eventsUrl?this.eventsUrl:this.baseUrl?this.baseUrl+"/events":"https://events.bitwarden.com"}getKeyConnectorUrl(){return this.keyConnectorUrl}setUrlsFromStorage(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEnvironmentUrls(),t=new o.EnvironmentUrls;this.baseUrl=t.base=e.base,this.webVaultUrl=e.webVault,this.apiUrl=t.api=e.api,this.identityUrl=t.identity=e.identity,this.iconsUrl=e.icons,this.notificationsUrl=e.notifications,this.eventsUrl=t.events=e.events,this.keyConnectorUrl=e.keyConnector}))}setUrls(e){return i(this,void 0,void 0,(function*(){return e.base=this.formatUrl(e.base),e.webVault=this.formatUrl(e.webVault),e.api=this.formatUrl(e.api),e.identity=this.formatUrl(e.identity),e.icons=this.formatUrl(e.icons),e.notifications=this.formatUrl(e.notifications),e.events=this.formatUrl(e.events),e.keyConnector=this.formatUrl(e.keyConnector),yield this.stateService.setEnvironmentUrls({base:e.base,api:e.api,identity:e.identity,webVault:e.webVault,icons:e.icons,notifications:e.notifications,events:e.events,keyConnector:e.keyConnector}),this.baseUrl=e.base,this.webVaultUrl=e.webVault,this.apiUrl=e.api,this.identityUrl=e.identity,this.iconsUrl=e.icons,this.notificationsUrl=e.notifications,this.eventsUrl=e.events,this.keyConnectorUrl=e.keyConnector,this.urlsSubject.next(e),e}))}getUrls(){return{base:this.baseUrl,webVault:this.webVaultUrl,api:this.apiUrl,identity:this.identityUrl,icons:this.iconsUrl,notifications:this.notificationsUrl,events:this.eventsUrl,keyConnector:this.keyConnectorUrl}}formatUrl(e){return null==e||""===e?null:((e=e.replace(/\/+$/g,"")).startsWith("http://")||e.startsWith("https://")||(e="https://"+e),e.trim())}}},14215:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventService=void 0;const r=n(93053),o=n(20604);t.EventService=class{constructor(e,t,n,i,r){this.apiService=e,this.cipherService=t,this.stateService=n,this.logService=i,this.organizationService=r,this.inited=!1}init(e){this.inited||(this.inited=!0,e&&(this.uploadEvents(),setInterval((()=>this.uploadEvents()),6e4)))}collect(e,t=null,n=!1){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated()))return;const i=yield this.organizationService.getAll();if(null==i)return;const o=new Set(i.filter((e=>e.useEvents)).map((e=>e.id)));if(0===o.size)return;if(null!=t){const e=yield this.cipherService.get(t);if(null==e||null==e.organizationId||!o.has(e.organizationId))return}let a=yield this.stateService.getEventCollection();null==a&&(a=[]);const s=new r.EventData;s.type=e,s.cipherId=t,s.date=(new Date).toISOString(),a.push(s),yield this.stateService.setEventCollection(a),n&&(yield this.uploadEvents())}))}uploadEvents(e){return i(this,void 0,void 0,(function*(){if(!(yield this.stateService.getIsAuthenticated({userId:e})))return;const t=yield this.stateService.getEventCollection({userId:e});if(null==t||0===t.length)return;const n=t.map((e=>{const t=new o.EventRequest;return t.type=e.type,t.cipherId=e.cipherId,t.date=e.date,t}));try{yield this.apiService.postEventsCollect(n),this.clearEvents(e)}catch(i){this.logService.error(i)}}))}clearEvents(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEventCollection(null,{userId:e})}))}}},48698:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportService=void 0;const r=n(57460),o=n(32773),a=n(20971),s=n(82769),l=n(82789),c=n(34917),d=n(49624),p=n(65642),u=n(83460),m=n(5136),h=n(42587),v=n(31087);t.ExportService=class{constructor(e,t,n,i,r){this.folderService=e,this.cipherService=t,this.apiService=n,this.cryptoService=i,this.cryptoFunctionService=r}getExport(e="csv",t){return i(this,void 0,void 0,(function*(){return t?yield this.getOrganizationExport(t,e):"encrypted_json"===e?this.getEncryptedExport():this.getDecryptedExport(e)}))}getPasswordProtectedExport(e,t){return i(this,void 0,void 0,(function*(){const n=t?yield this.getOrganizationExport(t,"json"):yield this.getExport("json"),i=s.Utils.fromBufferToB64(yield this.cryptoFunctionService.randomBytes(16)),r=a.DEFAULT_KDF_ITERATIONS,o=yield this.cryptoService.makePinKey(e,i,a.KdfType.PBKDF2_SHA256,r),l=yield this.cryptoService.encrypt(s.Utils.newGuid(),o),c=yield this.cryptoService.encrypt(n,o),d={encrypted:!0,passwordProtected:!0,salt:i,kdfIterations:r,kdfType:a.KdfType.PBKDF2_SHA256,encKeyValidation_DO_NOT_EDIT:l.encryptedString,data:c.encryptedString};return JSON.stringify(d,null," ")}))}getOrganizationExport(e,t="csv"){return i(this,void 0,void 0,(function*(){return"encrypted_json"===t?this.getOrganizationEncryptedExport(e):this.getOrganizationDecryptedExport(e,t)}))}getEventExport(e){return i(this,void 0,void 0,(function*(){return r.unparse(e.map((e=>new h.EventExport(e))))}))}getFileName(e=null,t="csv"){const n=new Date;return"bitwarden"+(e?"_"+e:"")+"_export_"+(n.getFullYear()+""+this.padNumber(n.getMonth()+1,2)+this.padNumber(n.getDate(),2)+this.padNumber(n.getHours(),2)+this.padNumber(n.getMinutes(),2)+this.padNumber(n.getSeconds(),2))+"."+t}getDecryptedExport(e){return i(this,void 0,void 0,(function*(){let t=[],n=[];const i=[];if(i.push(this.folderService.getAllDecrypted().then((e=>{t=e}))),i.push(this.cipherService.getAllDecrypted().then((e=>{n=e.filter((e=>null==e.deletedDate))}))),yield Promise.all(i),"csv"===e){const e=new Map;t.forEach((t=>{null!=t.id&&e.set(t.id,t)}));const i=[];return n.forEach((t=>{if(t.type!==o.CipherType.Login&&t.type!==o.CipherType.SecureNote)return;if(null!=t.organizationId)return;const n={};n.folder=null!=t.folderId&&e.has(t.folderId)?e.get(t.folderId).name:null,n.favorite=t.favorite?1:null,this.buildCommonCipher(n,t),i.push(n)})),r.unparse(i)}{const e={encrypted:!1,folders:[],items:[]};return t.forEach((t=>{if(null==t.id)return;const n=new v.FolderWithIdExport;n.build(t),e.folders.push(n)})),n.forEach((t=>{if(null!=t.organizationId)return;const n=new u.CipherWithIdExport;n.build(t),n.collectionIds=null,e.items.push(n)})),JSON.stringify(e,null," ")}}))}getEncryptedExport(){return i(this,void 0,void 0,(function*(){let e=[],t=[];const n=[];n.push(this.folderService.getAll().then((t=>{e=t}))),n.push(this.cipherService.getAll().then((e=>{t=e.filter((e=>null==e.deletedDate))}))),yield Promise.all(n);const i={encrypted:!0,encKeyValidation_DO_NOT_EDIT:(yield this.cryptoService.encrypt(s.Utils.newGuid())).encryptedString,folders:[],items:[]};return e.forEach((e=>{if(null==e.id)return;const t=new v.FolderWithIdExport;t.build(e),i.folders.push(t)})),t.forEach((e=>{if(null!=e.organizationId)return;const t=new u.CipherWithIdExport;t.build(e),t.collectionIds=null,i.items.push(t)})),JSON.stringify(i,null," ")}))}getOrganizationDecryptedExport(e,t){return i(this,void 0,void 0,(function*(){const n=[],i=[],a=[];if(a.push(this.apiService.getCollections(e).then((e=>{const t=[];return null!=e&&null!=e.data&&e.data.length>0&&e.data.forEach((e=>{const i=new p.Collection(new c.CollectionData(e));t.push(i.decrypt().then((e=>{n.push(e)})))})),Promise.all(t)}))),a.push(this.apiService.getCiphersOrganization(e).then((e=>{const t=[];return null!=e&&null!=e.data&&e.data.length>0&&e.data.filter((e=>null===e.deletedDate)).forEach((e=>{const n=new d.Cipher(new l.CipherData(e));t.push(n.decrypt().then((e=>{i.push(e)})))})),Promise.all(t)}))),yield Promise.all(a),"csv"===t){const e=new Map;n.forEach((t=>{e.set(t.id,t)}));const t=[];return i.forEach((n=>{if(n.type!==o.CipherType.Login&&n.type!==o.CipherType.SecureNote)return;const i={collections:[]};null!=n.collectionIds&&(i.collections=n.collectionIds.filter((t=>e.has(t))).map((t=>e.get(t).name))),this.buildCommonCipher(i,n),t.push(i)})),r.unparse(t)}{const e={encrypted:!1,collections:[],items:[]};return n.forEach((t=>{const n=new m.CollectionWithIdExport;n.build(t),e.collections.push(n)})),i.forEach((t=>{const n=new u.CipherWithIdExport;n.build(t),e.items.push(n)})),JSON.stringify(e,null," ")}}))}getOrganizationEncryptedExport(e){return i(this,void 0,void 0,(function*(){const t=[],n=[],i=[];i.push(this.apiService.getCollections(e).then((e=>(null!=e&&null!=e.data&&e.data.length>0&&e.data.forEach((e=>{const n=new p.Collection(new c.CollectionData(e));t.push(n)})),Promise.all([]))))),i.push(this.apiService.getCiphersOrganization(e).then((e=>(null!=e&&null!=e.data&&e.data.length>0&&e.data.filter((e=>null===e.deletedDate)).forEach((e=>{const t=new d.Cipher(new l.CipherData(e));n.push(t)})),Promise.all([]))))),yield Promise.all(i);const r=yield this.cryptoService.getOrgKey(e),o={encrypted:!0,encKeyValidation_DO_NOT_EDIT:(yield this.cryptoService.encrypt(s.Utils.newGuid(),r)).encryptedString,collections:[],items:[]};return t.forEach((e=>{const t=new m.CollectionWithIdExport;t.build(e),o.collections.push(t)})),n.forEach((e=>{const t=new u.CipherWithIdExport;t.build(e),o.items.push(t)})),JSON.stringify(o,null," ")}))}padNumber(e,t,n="0"){const i=e.toString();return i.length>=t?i:new Array(t-i.length+1).join(n)+i}buildCommonCipher(e,t){switch(e.type=null,e.name=t.name,e.notes=t.notes,e.fields=null,e.reprompt=t.reprompt,e.login_uri=null,e.login_username=null,e.login_password=null,e.login_totp=null,t.fields&&t.fields.forEach((t=>{e.fields?e.fields+="\n":e.fields="",e.fields+=(t.name||"")+": "+t.value})),t.type){case o.CipherType.Login:e.type="login",e.login_username=t.login.username,e.login_password=t.login.password,e.login_totp=t.login.totp,t.login.uris&&(e.login_uri=[],t.login.uris.forEach((t=>{e.login_uri.push(t.uri)})));break;case o.CipherType.SecureNote:e.type="note";break;default:return}return e}}},1803:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FileUploadService=void 0;const r=n(25423),o=n(71545),a=n(29911);t.FileUploadService=class{constructor(e,t){this.logService=e,this.apiService=t,this.azureFileUploadService=new o.AzureFileUploadService(e),this.bitwardenFileUploadService=new a.BitwardenFileUploadService(t)}uploadSendFile(e,t,n){return i(this,void 0,void 0,(function*(){try{switch(e.fileUploadType){case r.FileUploadType.Direct:yield this.bitwardenFileUploadService.upload(t.encryptedString,n,(t=>this.apiService.postSendFile(e.sendResponse.id,e.sendResponse.file.id,t)));break;case r.FileUploadType.Azure:{const t=()=>i(this,void 0,void 0,(function*(){return(yield this.apiService.renewSendFileUploadUrl(e.sendResponse.id,e.sendResponse.file.id)).url}));yield this.azureFileUploadService.upload(e.url,n,t);break}default:throw new Error("Unknown file upload type")}}catch(o){throw yield this.apiService.deleteSend(e.sendResponse.id),o}}))}uploadCipherAttachment(e,t,n,o){return i(this,void 0,void 0,(function*(){const a=e?t.cipherMiniResponse:t.cipherResponse;try{switch(t.fileUploadType){case r.FileUploadType.Direct:yield this.bitwardenFileUploadService.upload(n.encryptedString,o,(e=>this.apiService.postAttachmentFile(a.id,t.attachmentId,e)));break;case r.FileUploadType.Azure:{const e=()=>i(this,void 0,void 0,(function*(){return(yield this.apiService.renewAttachmentUploadUrl(a.id,t.attachmentId)).url}));yield this.azureFileUploadService.upload(t.url,o,e);break}default:throw new Error("Unknown file upload type.")}}catch(s){throw e?yield this.apiService.deleteCipherAttachmentAdmin(a.id,t.attachmentId):yield this.apiService.deleteCipherAttachment(a.id,t.attachmentId),s}}))}}},66369:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FolderService=void 0;const r=n(39814),o=n(82769),a=n(12835),s=n(59738),l=n(16466),c=n(36914);t.FolderService=class{constructor(e,t,n,i,r){this.cryptoService=e,this.apiService=t,this.i18nService=n,this.cipherService=i,this.stateService=r}clearCache(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null,{userId:e})}))}encrypt(e,t){return i(this,void 0,void 0,(function*(){const n=new s.Folder;return n.id=e.id,n.name=yield this.cryptoService.encrypt(e.name,t),n}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedFolders();return null!=t&&t.hasOwnProperty(e)?new s.Folder(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedFolders(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new s.Folder(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getDecryptedFolders();if(null!=e)return e;if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=[],n=[];(yield this.getAll()).forEach((e=>{n.push(e.decrypt().then((e=>t.push(e))))})),yield Promise.all(n),t.sort(o.Utils.getSortFunction(this.i18nService,"name"));const i=new c.FolderView;return i.name=this.i18nService.t("noneFolder"),t.push(i),yield this.stateService.setDecryptedFolders(t),t}))}getAllNested(e){return i(this,void 0,void 0,(function*(){e=null!=e?e:yield this.getAllDecrypted();const t=[];return e.forEach((e=>{const n=new c.FolderView;n.id=e.id,n.revisionDate=e.revisionDate;const i=null!=e.name?e.name.replace(/^\/+|\/+$/g,"").split("/"):[];r.ServiceUtils.nestedTraverse(t,0,i,n,null,"/")})),t}))}getNested(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAllNested();return r.ServiceUtils.getTreeNodeObject(t,e)}))}saveWithServer(e){return i(this,void 0,void 0,(function*(){const t=new l.FolderRequest(e);let n;null==e.id?(n=yield this.apiService.postFolder(t),e.id=n.id):n=yield this.apiService.putFolder(e.id,t);const i=new a.FolderData(n);yield this.upsert(i)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedFolders();if(null==t&&(t={}),e instanceof a.FolderData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedFolders(null,{userId:e}),yield this.stateService.setEncryptedFolders(null,{userId:e})}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedFolders();if(null==t)return;if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.stateService.setDecryptedFolders(null),yield this.stateService.setEncryptedFolders(t);const n=yield this.stateService.getEncryptedCiphers();if(null!=n){const t=[];for(const i in n)n[i].folderId===e&&(n[i].folderId=null,t.push(n[i]));t.length>0&&this.cipherService.upsert(t)}}))}deleteWithServer(e){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteFolder(e),yield this.delete(e)}))}}},17578:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;t.I18nService=class{constructor(e,t,n){this.systemLanguage=e,this.localesDirectory=t,this.getLocalesJson=n,this.supportedTranslationLocales=["en"],this.localeNames=new Map([["af","Afrikaans"],["az","Azərbaycanca"],["be","Беларуская"],["bg","български"],["bn","বাংলা"],["bs","bosanski jezik"],["ca","català"],["cs","čeština"],["da","dansk"],["de","Deutsch"],["el","Ελληνικά"],["en","English"],["en-GB","English (British)"],["en-IN","English (India)"],["eo","Esperanto"],["es","español"],["et","eesti"],["fa","فارسی"],["fi","suomi"],["fil","Wikang Filipino"],["fr","français"],["he","עברית"],["hi","हिन्दी"],["hr","hrvatski"],["hu","magyar"],["id","Bahasa Indonesia"],["it","italiano"],["ja","日本語"],["ka","ქართული"],["km","ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ"],["kn","ಕನ್ನಡ"],["ko","한국어"],["lt","lietuvių kalba"],["lv","Latvietis"],["me","црногорски"],["ml","മലയാളം"],["nb","norsk (bokmål)"],["nl","Nederlands"],["nn","Norsk Nynorsk"],["pl","polski"],["pt-BR","português do Brasil"],["pt-PT","português"],["ro","română"],["ru","русский"],["si","සිංහල"],["sk","slovenčina"],["sl","Slovenski jezik, Slovenščina"],["sr","Српски"],["sv","svenska"],["th","ไทย"],["tr","Türkçe"],["uk","українська"],["vi","Tiếng Việt"],["zh-CN","中文(中国大陆)"],["zh-TW","中文(台灣)"]]),this.defaultMessages={},this.localeMessages={},this.systemLanguage=e.replace("_","-")}init(e){return n(this,void 0,void 0,(function*(){if(this.inited)throw new Error("i18n already initialized.");if(null==this.supportedTranslationLocales||0===this.supportedTranslationLocales.length)throw new Error("supportedTranslationLocales not set.");this.inited=!0,this.locale=this.translationLocale=null!=e?e:this.systemLanguage;try{this.collator=new Intl.Collator(this.locale,{numeric:!0,sensitivity:"base"})}catch(t){this.collator=null}-1===this.supportedTranslationLocales.indexOf(this.translationLocale)&&(this.translationLocale=this.translationLocale.slice(0,2),-1===this.supportedTranslationLocales.indexOf(this.translationLocale)&&(this.translationLocale=this.supportedTranslationLocales[0])),null!=this.localesDirectory&&(yield this.loadMessages(this.translationLocale,this.localeMessages),this.translationLocale!==this.supportedTranslationLocales[0]&&(yield this.loadMessages(this.supportedTranslationLocales[0],this.defaultMessages)))}))}t(e,t,n,i){return this.translate(e,t,n,i)}translate(e,t,n,i){let r;return r=this.localeMessages.hasOwnProperty(e)&&this.localeMessages[e]?this.localeMessages[e]:this.defaultMessages.hasOwnProperty(e)&&this.defaultMessages[e]?this.defaultMessages[e]:"",""!==r&&(null!=t&&(r=r.split("__$1__").join(t)),null!=n&&(r=r.split("__$2__").join(n)),null!=i&&(r=r.split("__$3__").join(i))),r}loadMessages(e,t){return n(this,void 0,void 0,(function*(){const n=e.replace("-","_"),i=yield this.getLocalesJson(n);for(const e in i)if(i.hasOwnProperty(e)&&(t[e]=i[e].message,i[e].placeholders))for(const n in i[e].placeholders){if(!i[e].placeholders.hasOwnProperty(n)||!i[e].placeholders[n].content)continue;const r="\\$"+n.toUpperCase()+"\\$";let o=i[e].placeholders[n].content;"$1"!==o&&"$2"!==o&&"$3"!==o||(o="__$"+o+"__"),t[e]=t[e].replace(new RegExp(r,"g"),o)}}))}}},12514:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportService=void 0;const r=n(32773),o=n(55766),a=n(51214),s=n(60006),l=n(14494),c=n(51272),d=n(25690),p=n(10614),u=n(20312),m=n(19326),h=n(68360),v=n(33268),f=n(58141),g=n(86025),y=n(42752),x=n(99552),S=n(31188),b=n(42578),w=n(41933),C=n(84783),I=n(62709),E=n(47340),P=n(72378),O=n(89696),k=n(16164),A=n(86419),T=n(68781),M=n(64521),B=n(57763),D=n(78103),R=n(52580),F=n(39510),U=n(64101),V=n(82530),N=n(80414),_=n(42584),j=n(55529),z=n(88755),H=n(60784),L=n(477),K=n(91350),q=n(79506),G=n(29990),W=n(84972),$=n(65588),Y=n(45970),Q=n(54706),J=n(43897),Z=n(91645),X=n(72739),ee=n(29406),te=n(64817),ne=n(70402),ie=n(89757),re=n(1254),oe=n(74962),ae=n(86220),se=n(6884),le=n(8170),ce=n(82769),de=n(16391),pe=n(54554),ue=n(16466),me=n(89537),he=n(85644),ve=n(58795),fe=n(33018);t.ImportService=class{constructor(e,t,n,i,r,a,s){this.cipherService=e,this.folderService=t,this.apiService=n,this.i18nService=i,this.collectionService=r,this.platformUtilsService=a,this.cryptoService=s,this.featuredImportOptions=o.featuredImportOptions,this.regularImportOptions=o.regularImportOptions}getImportOptions(){return this.featuredImportOptions.concat(this.regularImportOptions)}import(e,t,n=null){return i(this,void 0,void 0,(function*(){const i=yield e.parse(t);if(i.success){if(0===i.folders.length&&0===i.ciphers.length)return new O.ImportError(this.i18nService.t("importNothingError"));if(i.ciphers.length>0){const e=Math.floor(i.ciphers.length/2),t=i.ciphers.length-1;if(this.badData(i.ciphers[0])&&this.badData(i.ciphers[e])&&this.badData(i.ciphers[t]))return new O.ImportError(this.i18nService.t("importFormatError"))}try{yield this.postImport(i,n)}catch(r){const e=new fe.ErrorResponse(r,400);return this.handleServerError(e,i)}return null}return ce.Utils.isNullOrWhitespace(i.errorMessage)?new O.ImportError(this.i18nService.t("importFormatError"),i.missingPassword):new O.ImportError(i.errorMessage,i.missingPassword)}))}getImporter(e,t=null,n=null){const i=this.getImporterInstance(e,n);return null==i?null:(i.organizationId=t,i)}getImporterInstance(e,t){if(null==e)return null;switch(e){case"bitwardencsv":return new d.BitwardenCsvImporter;case"bitwardenjson":return new p.BitwardenJsonImporter(this.cryptoService,this.i18nService);case"bitwardenpasswordprotected":return new u.BitwardenPasswordProtectedImporter(this.cryptoService,this.i18nService,t);case"lastpasscsv":case"passboltcsv":return new B.LastPassCsvImporter;case"keepassxcsv":return new T.KeePassXCsvImporter;case"aviracsv":return new c.AviraCsvImporter;case"blurcsv":return new h.BlurCsvImporter;case"safeincloudxml":return new ee.SafeInCloudXmlImporter;case"padlockcsv":return new H.PadlockCsvImporter;case"keepass2xml":return new A.KeePass2XmlImporter;case"chromecsv":case"operacsv":case"vivaldicsv":return new f.ChromeCsvImporter;case"firefoxcsv":return new I.FirefoxCsvImporter;case"upmcsv":return new ae.UpmCsvImporter;case"saferpasscsv":return new te.SaferPassCsvImporter;case"safaricsv":return new X.SafariCsvImporter;case"meldiumcsv":return new R.MeldiumCsvImporter;case"1password1pif":return new N.OnePassword1PifImporter;case"1password1pux":return new _.OnePassword1PuxImporter;case"1passwordwincsv":return new z.OnePasswordWinCsvImporter;case"1passwordmaccsv":return new j.OnePasswordMacCsvImporter;case"keepercsv":return new M.KeeperCsvImporter;case"passworddragonxml":return new $.PasswordDragonXmlImporter;case"enpasscsv":return new w.EnpassCsvImporter;case"enpassjson":return new C.EnpassJsonImporter;case"pwsafexml":return new Y.PasswordSafeXmlImporter;case"dashlanecsv":return new x.DashlaneCsvImporter;case"dashlanejson":return new S.DashlaneJsonImporter;case"msecurecsv":return new F.MSecureCsvImporter;case"stickypasswordxml":return new re.StickyPasswordXmlImporter;case"truekeycsv":return new oe.TrueKeyCsvImporter;case"clipperzhtml":return new g.ClipperzHtmlImporter;case"roboformcsv":return new Z.RoboFormCsvImporter;case"ascendocsv":return new a.AscendoCsvImporter;case"passwordbossjson":return new W.PasswordBossJsonImporter;case"zohovaultcsv":return new le.ZohoVaultCsvImporter;case"splashidcsv":return new ie.SplashIdCsvImporter;case"passkeepcsv":return new L.PassKeepCsvImporter;case"gnomejson":return new P.GnomeJsonImporter;case"passwordagentcsv":return new G.PasswordAgentCsvImporter;case"passpackcsv":return new q.PasspackCsvImporter;case"passmanjson":return new K.PassmanJsonImporter;case"avastcsv":return new s.AvastCsvImporter;case"avastjson":return new l.AvastJsonImporter;case"fsecurefsk":return new E.FSecureFskImporter;case"kasperskytxt":return new k.KasperskyTxtImporter;case"remembearcsv":return new J.RememBearCsvImporter;case"passwordwallettxt":return new Q.PasswordWalletTxtImporter;case"mykicsv":return new U.MykiCsvImporter;case"securesafecsv":return new ne.SecureSafeCsvImporter;case"logmeoncecsv":return new D.LogMeOnceCsvImporter;case"blackberrycsv":return new m.BlackBerryCsvImporter;case"buttercupcsv":return new v.ButtercupCsvImporter;case"codebookcsv":return new y.CodebookCsvImporter;case"encryptrcsv":return new b.EncryptrCsvImporter;case"yoticsv":return new se.YotiCsvImporter;case"nordpasscsv":return new V.NordPassCsvImporter;default:return null}}postImport(e,t=null){return i(this,void 0,void 0,(function*(){if(null==t){const t=new me.ImportCiphersRequest;for(let n=0;nt.folderRelationships.push(new ve.KvpRequest(e[0],e[1])))),yield this.apiService.postImportCiphers(t)}{const n=new he.ImportOrganizationCiphersRequest;for(let i=0;in.collectionRelationships.push(new ve.KvpRequest(e[0],e[1])))),yield this.apiService.postImportOrganizationCiphers(t,n)}}))}badData(e){return(null==e.name||"--"===e.name)&&e.type===r.CipherType.Login&&null!=e.login&&ce.Utils.isNullOrWhitespace(e.login.password)}handleServerError(e,t){if(null==e.validationErrors)return new O.ImportError(e.message);let n="";return Object.entries(e.validationErrors).forEach((([e,i],o)=>{let a,s;const l=Number(e.match(/[0-9]+/)[0]);switch(e.match(/^\w+/)[0]){case"Ciphers":a=t.ciphers[l],s=r.CipherType[a.type];break;case"Folders":a=t.folders[l],s="Folder";break;case"Collections":a=t.collections[l],s="Collection";break;default:return}o>0&&(n+="\n\n"),"Folder"!==s&&"Collection"!==s&&(n+="["+(l+1)+"] "),n+="["+s+'] "'+a.name+'": '+i})),new O.ImportError(n)}}},32840:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.KeyConnectorService=void 0;const r=n(33712),o=n(82769),a=n(69731),s=n(50738),l=n(35711),c=n(74284);t.KeyConnectorService=class{constructor(e,t,n,i,r,o,a,s){this.stateService=e,this.cryptoService=t,this.apiService=n,this.tokenService=i,this.logService=r,this.organizationService=o,this.cryptoFunctionService=a,this.logoutCallback=s}setUsesKeyConnector(e){return this.stateService.setUsesKeyConnector(e)}getUsesKeyConnector(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getUsesKeyConnector()}))}userNeedsMigration(){return i(this,void 0,void 0,(function*(){const e=yield this.tokenService.getIsExternal(),t=null!=(yield this.getManagingOrganization()),n=!(yield this.getUsesKeyConnector());return e&&t&&n}))}migrateUser(){return i(this,void 0,void 0,(function*(){const e=yield this.getManagingOrganization(),t=yield this.cryptoService.getKey(),n=new l.KeyConnectorUserKeyRequest(t.encKeyB64);try{yield this.apiService.postUserKeyToKeyConnector(e.keyConnectorUrl,n)}catch(i){this.handleKeyConnectorError(i)}yield this.apiService.postConvertToKeyConnector()}))}getAndSetKey(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.apiService.getUserKeyFromKeyConnector(e),n=o.Utils.fromB64ToArray(t.key),i=new a.SymmetricCryptoKey(n);yield this.cryptoService.setKey(i)}catch(t){this.handleKeyConnectorError(t)}}))}getManagingOrganization(){return i(this,void 0,void 0,(function*(){return(yield this.organizationService.getAll()).find((e=>e.keyConnectorEnabled&&e.type!==r.OrganizationUserType.Admin&&e.type!==r.OrganizationUserType.Owner&&!e.isProviderUser))}))}convertNewSsoUserToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const{kdf:n,kdfIterations:i,keyConnectorUrl:r}=e,a=yield this.cryptoFunctionService.randomBytes(64),d=yield this.cryptoService.makeKey(o.Utils.fromBufferToB64(a),yield this.tokenService.getEmail(),n,i),p=new l.KeyConnectorUserKeyRequest(d.encKeyB64);yield this.cryptoService.setKey(d);const u=yield this.cryptoService.makeEncKey(d);yield this.cryptoService.setEncKey(u[1].encryptedString);const[m,h]=yield this.cryptoService.makeKeyPair();try{yield this.apiService.postUserKeyToKeyConnector(r,p)}catch(g){this.handleKeyConnectorError(g)}const v=new c.KeysRequest(m,h.encryptedString),f=new s.SetKeyConnectorKeyRequest(u[1].encryptedString,n,i,t,v);yield this.apiService.postSetKeyConnectorKey(f)}))}setConvertAccountRequired(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setConvertAccountToKeyConnector(e)}))}getConvertAccountRequired(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getConvertAccountToKeyConnector()}))}removeConvertAccountRequired(){return i(this,void 0,void 0,(function*(){yield this.stateService.setConvertAccountToKeyConnector(null)}))}clear(){return i(this,void 0,void 0,(function*(){yield this.removeConvertAccountRequired()}))}handleKeyConnectorError(e){throw this.logService.error(e),null!=this.logoutCallback&&this.logoutCallback(!1),new Error("Key Connector error")}}},63231:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NotificationsService=void 0;const r=n(27749),o=n(31683),a=n(72440),s=n(7837),l=n(16178);t.NotificationsService=class{constructor(e,t,n,i,r,o,a,s){this.syncService=e,this.appIdService=t,this.apiService=n,this.environmentService=i,this.logoutCallback=r,this.logService=o,this.stateService=a,this.authService=s,this.connected=!1,this.inited=!1,this.inactive=!1,this.reconnectTimer=null,this.environmentService.urls.subscribe((()=>{this.inited&&this.init()}))}init(){return i(this,void 0,void 0,(function*(){this.inited=!1,this.url=this.environmentService.getNotificationsUrl(),"https://-"!==this.url&&(null!=this.signalrConnection&&(this.signalrConnection.off("ReceiveMessage"),this.signalrConnection.off("Heartbeat"),yield this.signalrConnection.stop(),this.connected=!1,this.signalrConnection=null),this.signalrConnection=(new r.HubConnectionBuilder).withUrl(this.url+"/hub",{accessTokenFactory:()=>this.apiService.getActiveBearerToken(),skipNegotiation:!0,transport:r.HttpTransportType.WebSockets}).withHubProtocol(new o.MessagePackHubProtocol).build(),this.signalrConnection.on("ReceiveMessage",(e=>this.processNotification(new l.NotificationResponse(e)))),this.signalrConnection.on("Heartbeat",(e=>{})),this.signalrConnection.onclose((()=>{this.connected=!1,this.reconnect(!0)})),this.inited=!0,(yield this.isAuthedAndUnlocked())&&(yield this.reconnect(!1)))}))}updateConnection(e=!1){return i(this,void 0,void 0,(function*(){if(this.inited)try{(yield this.isAuthedAndUnlocked())?yield this.reconnect(e):yield this.signalrConnection.stop()}catch(t){this.logService.error(t.toString())}}))}reconnectFromActivity(){return i(this,void 0,void 0,(function*(){this.inactive=!1,this.inited&&!this.connected&&(yield this.reconnect(!0))}))}disconnectFromInactivity(){return i(this,void 0,void 0,(function*(){this.inactive=!0,this.inited&&this.connected&&(yield this.signalrConnection.stop())}))}processNotification(e){return i(this,void 0,void 0,(function*(){const t=yield this.appIdService.getAppId();if(null==e||e.contextId===t)return;const n=yield this.stateService.getIsAuthenticated(),i=e.payload.userId||e.payload.UserId,r=yield this.stateService.getUserId();if(!n||null==i||i===r)switch(e.type){case s.NotificationType.SyncCipherCreate:case s.NotificationType.SyncCipherUpdate:yield this.syncService.syncUpsertCipher(e.payload,e.type===s.NotificationType.SyncCipherUpdate);break;case s.NotificationType.SyncCipherDelete:case s.NotificationType.SyncLoginDelete:yield this.syncService.syncDeleteCipher(e.payload);break;case s.NotificationType.SyncFolderCreate:case s.NotificationType.SyncFolderUpdate:yield this.syncService.syncUpsertFolder(e.payload,e.type===s.NotificationType.SyncFolderUpdate);break;case s.NotificationType.SyncFolderDelete:yield this.syncService.syncDeleteFolder(e.payload);break;case s.NotificationType.SyncVault:case s.NotificationType.SyncCiphers:case s.NotificationType.SyncSettings:n&&(yield this.syncService.fullSync(!1));break;case s.NotificationType.SyncOrgKeys:n&&(yield this.syncService.fullSync(!0),yield this.signalrConnection.stop());break;case s.NotificationType.LogOut:n&&this.logoutCallback(!0);break;case s.NotificationType.SyncSendCreate:case s.NotificationType.SyncSendUpdate:yield this.syncService.syncUpsertSend(e.payload,e.type===s.NotificationType.SyncSendUpdate);break;case s.NotificationType.SyncSendDelete:yield this.syncService.syncDeleteSend(e.payload)}}))}reconnect(e){return i(this,void 0,void 0,(function*(){if(null!=this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.connected||!this.inited||this.inactive)return;if(yield this.isAuthedAndUnlocked()){try{yield this.signalrConnection.start(),this.connected=!0,e&&(yield this.syncService.fullSync(!1))}catch(t){this.logService.error(t)}this.connected||(this.reconnectTimer=setTimeout((()=>this.reconnect(e)),this.random(12e4,3e5)))}}))}isAuthedAndUnlocked(){return i(this,void 0,void 0,(function*(){return(yield this.authService.getAuthStatus())>=a.AuthenticationStatus.Unlocked}))}random(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}}},59135:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationService=void 0;const r=n(27957);t.OrganizationService=class{constructor(e){this.stateService=e}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getOrganizations();return null!=t&&t.hasOwnProperty(e)?new r.Organization(t[e]):null}))}getByIdentifier(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAll();return null==t||0===t.length?null:t.find((t=>t.identifier===e))}))}getAll(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getOrganizations({userId:e}),n=[];for(const e in t)t.hasOwnProperty(e)&&!t[e].isProviderUser&&n.push(new r.Organization(t[e]));return n}))}save(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setOrganizations(e)}))}canManageSponsorships(){return i(this,void 0,void 0,(function*(){return(yield this.getAll()).some((e=>e.familySponsorshipAvailable||null!==e.familySponsorshipFriendlyName))}))}hasOrganizations(e){return i(this,void 0,void 0,(function*(){return(yield this.getAll(e)).length>0}))}}},50142:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGenerationService=void 0;const r=n(21322),o=n(49906),a=n(40596),s=n(22205),l=n(77665),c=n(49471),d={length:14,ambiguous:!1,number:!0,minNumber:1,uppercase:!0,minUppercase:0,lowercase:!0,minLowercase:0,special:!1,minSpecial:1,type:"password",numWords:3,wordSeparator:"-",capitalize:!1,includeNumber:!1};t.PasswordGenerationService=class{constructor(e,t,n){this.cryptoService=e,this.policyService=t,this.stateService=n}generatePassword(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},d,e);if("passphrase"===t.type)return this.generatePassphrase(e);this.sanitizePasswordLength(t,!0);const n=t.minUppercase+t.minLowercase+t.minNumber+t.minSpecial;t.length0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e0)for(let e=0;e1)&&(t.wordSeparator=" "),null==t.capitalize&&(t.capitalize=!1),null==t.includeNumber&&(t.includeNumber=!1);const n=a.EEFLongWordList.length-1,i=new Array(t.numWords);for(let e=0;ee.length&&(e.minSpecial=e.length-e.minNumber),e.numWords{e.enabled&&null!=e.data&&(null==t&&(t=new c.PasswordGeneratorPolicyOptions),null!=e.data.defaultType&&"password"!==t.defaultType&&(t.defaultType=e.data.defaultType),null!=e.data.minLength&&e.data.minLength>t.minLength&&(t.minLength=e.data.minLength),e.data.useUpper&&(t.useUppercase=!0),e.data.useLower&&(t.useLowercase=!0),e.data.useNumbers&&(t.useNumbers=!0),null!=e.data.minNumbers&&e.data.minNumbers>t.numberCount&&(t.numberCount=e.data.minNumbers),e.data.useSpecial&&(t.useSpecial=!0),null!=e.data.minSpecial&&e.data.minSpecial>t.specialCount&&(t.specialCount=e.data.minSpecial),null!=e.data.minNumberWords&&e.data.minNumberWords>t.minNumberWords&&(t.minNumberWords=e.data.minNumberWords),e.data.capitalize&&(t.capitalize=!0),e.data.includeNumber&&(t.includeNumber=!0))})),t}))}saveOptions(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setPasswordGenerationOptions(e)}))}getHistory(){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasKey()))return new Array;if(null==(yield this.stateService.getDecryptedPasswordGenerationHistory())){const e=yield this.stateService.getEncryptedPasswordGenerationHistory(),t=yield this.decryptHistory(e);yield this.stateService.setDecryptedPasswordGenerationHistory(t)}const e=yield this.stateService.getDecryptedPasswordGenerationHistory();return null!=e?e:new Array}))}addHistory(e){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasKey()))return;const t=yield this.getHistory();if(this.matchesPrevious(e,t))return;t.unshift(new l.GeneratedPasswordHistory(e,Date.now())),t.length>100&&t.pop();const n=yield this.encryptHistory(t);return yield this.stateService.setEncryptedPasswordGenerationHistory(n)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEncryptedPasswordGenerationHistory(null,{userId:e}),yield this.stateService.setDecryptedPasswordGenerationHistory(null,{userId:e})}))}passwordStrength(e,t=null){if(null==e||0===e.length)return null;let n=["bitwarden","bit","warden"];null!=t&&t.length>0&&(n=n.concat(t));const i=Array.from(new Set(n));return r(e,i)}normalizeOptions(e,t){e.minLowercase=0,e.minUppercase=0,!e.length||e.length<5?e.length=5:e.length>128&&(e.length=128),e.lengthe.length?e.minNumber=e.length:e.minNumber>9&&(e.minNumber=9):e.minNumber=0,e.minNumbere.length?e.minSpecial=e.length:e.minSpecial>9&&(e.minSpecial=9):e.minSpecial=0,e.minSpeciale.length&&(e.minSpecial=e.length-e.minNumber),null==e.numWords||e.length<3?e.numWords=3:e.numWords>20&&(e.numWords=20),e.numWords1&&(e.wordSeparator=e.wordSeparator[0]),this.sanitizePasswordLength(e,!1)}capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}appendRandomNumberToRandomWord(e){return i(this,void 0,void 0,(function*(){if(null==e||e.length<=0)return;const t=yield this.cryptoService.randomNumber(0,e.length-1),n=yield this.cryptoService.randomNumber(0,9);e[t]=e[t]+n}))}encryptHistory(e){return i(this,void 0,void 0,(function*(){if(null==e||0===e.length)return Promise.resolve([]);const t=e.map((e=>i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.encrypt(e.password);return new l.GeneratedPasswordHistory(t.encryptedString,e.date)}))));return yield Promise.all(t)}))}decryptHistory(e){return i(this,void 0,void 0,(function*(){if(null==e||0===e.length)return Promise.resolve([]);const t=e.map((e=>i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.decryptToUtf8(new s.EncString(e.password));return new l.GeneratedPasswordHistory(t,e.date)}))));return yield Promise.all(t)}))}matchesPrevious(e,t){return null!=t&&0!==t.length&&t[t.length-1].password===e}shuffleArray(e){return i(this,void 0,void 0,(function*(){for(let t=e.length-1;t>0;t--){const n=yield this.cryptoService.randomNumber(0,t);[e[t],e[n]]=[e[n],e[t]]}}))}sanitizePasswordLength(e,t){let n=0,i=0,r=e.minNumber,o=e.minSpecial;e.uppercase&&e.minUppercase<=0?n=1:e.uppercase||(n=0),e.lowercase&&e.minLowercase<=0?i=1:e.lowercase||(i=0),e.number&&e.minNumber<=0?r=1:e.number||(r=0),e.special&&e.minSpecial<=0?o=1:e.special||(o=0),(!e.length||e.length<1)&&(e.length=10);const a=n+i+r+o;e.lengtht.type===e)):n}))}getPolicyForOrganization(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.organizationService.get(t);if(null==n?void 0:n.isProviderUser){const e=(yield this.apiService.getPolicies(t)).data.find((e=>e.organizationId===t));return null==e?null:new c.Policy(new s.PolicyData(e))}return(yield this.getAll(e)).find((e=>e.organizationId===t))}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedPolicies(null),yield this.stateService.setEncryptedPolicies(e)}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedPolicies(null,{userId:e}),yield this.stateService.setEncryptedPolicies(null,{userId:e})}))}getMasterPasswordPoliciesForInvitedUsers(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getUserId(),n=yield this.apiService.getPoliciesByInvitedUser(e,t),i=yield this.mapPoliciesFromToken(n);return this.getMasterPasswordPolicyOptions(i)}))}getMasterPasswordPolicyOptions(e){return i(this,void 0,void 0,(function*(){let t=null;return null==(e=null==e?yield this.getAll(a.PolicyType.MasterPassword):e.filter((e=>e.type===a.PolicyType.MasterPassword)))||0===e.length||e.forEach((e=>{e.enabled&&null!=e.data&&(null==t&&(t=new l.MasterPasswordPolicyOptions),null!=e.data.minComplexity&&e.data.minComplexity>t.minComplexity&&(t.minComplexity=e.data.minComplexity),null!=e.data.minLength&&e.data.minLength>t.minLength&&(t.minLength=e.data.minLength),e.data.requireUpper&&(t.requireUpper=!0),e.data.requireLower&&(t.requireLower=!0),e.data.requireNumbers&&(t.requireNumbers=!0),e.data.requireSpecial&&(t.requireSpecial=!0))})),t}))}evaluateMasterPassword(e,t,n){return null==n||!(n.minComplexity>0&&n.minComplexity>e)&&(!(n.minLength>0&&n.minLength>t.length)&&((!n.requireUpper||t.toLocaleLowerCase()!==t)&&((!n.requireLower||t.toLocaleUpperCase()!==t)&&(!(n.requireNumbers&&!/[0-9]/.test(t))&&!(n.requireSpecial&&!/[!@#$%\^&*]/g.test(t))))))}getResetPasswordPolicyOptions(e,t){var n,i,r;const o=new d.ResetPasswordPolicyOptions;if(null==e||null==t)return[o,!1];const s=e.find((e=>e.organizationId===t&&e.type===a.PolicyType.ResetPassword&&e.enabled));return o.autoEnrollEnabled=null!==(i=null===(n=null==s?void 0:s.data)||void 0===n?void 0:n.autoEnrollEnabled)&&void 0!==i&&i,[o,null!==(r=null==s?void 0:s.enabled)&&void 0!==r&&r]}mapPoliciesFromToken(e){if(null==e||null==e.data)return null;return e.data.map((e=>new s.PolicyData(e))).map((e=>new c.Policy(e)))}policyAppliesToUser(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield this.getAll(e,n),o=yield this.organizationService.getAll(n);let a;a=null!=t?i.filter((e=>e.enabled&&t(e))):i.filter((e=>e.enabled));const s=new Set(a.map((e=>e.organizationId)));return o.some((t=>t.enabled&&t.status>=r.OrganizationUserStatusType.Accepted&&t.usePolicies&&!this.isExcemptFromPolicies(t,e)&&s.has(t.id)))}))}isExcemptFromPolicies(e,t){return t===a.PolicyType.MaximumVaultTimeout?e.type===o.OrganizationUserType.Owner:e.isExemptFromPolicies}}},59695:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProviderService=void 0;const r=n(61453);t.ProviderService=class{constructor(e){this.stateService=e}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getProviders();return null!=t&&t.hasOwnProperty(e)?new r.Provider(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getProviders(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new r.Provider(e[n]));return t}))}save(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setProviders(e)}))}}},32471:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SearchService=void 0;const r=n(31336),o=n(32773),a=n(67577),s=n(71703);t.SearchService=class{constructor(e,t,n){this.cipherService=e,this.logService=t,this.i18nService=n,this.indexedEntityId=null,this.indexing=!1,this.index=null,this.searchableMinLength=2,-1!==["zh-CN","zh-TW"].indexOf(n.locale)&&(this.searchableMinLength=1)}clearIndex(){this.indexedEntityId=null,this.index=null}isSearchable(e){return!(null==e||null==this.index&&e.length"))}indexCiphers(e,t){return i(this,void 0,void 0,(function*(){if(this.indexing)return;this.logService.time("search indexing"),this.indexing=!0,this.indexedEntityId=e,this.index=null;const n=new r.Builder;n.ref("id"),n.field("shortid",{boost:100,extractor:e=>e.id.substr(0,8)}),n.field("name",{boost:10}),n.field("subtitle",{boost:5,extractor:e=>null!=e.subTitle&&e.type===o.CipherType.Card?e.subTitle.replace(/\*/g,""):e.subTitle}),n.field("notes"),n.field("login.username",{extractor:e=>e.type===o.CipherType.Login&&null!=e.login?e.login.username:null}),n.field("login.uris",{boost:2,extractor:e=>this.uriExtractor(e)}),n.field("fields",{extractor:e=>this.fieldExtractor(e,!1)}),n.field("fields_joined",{extractor:e=>this.fieldExtractor(e,!0)}),n.field("attachments",{extractor:e=>this.attachmentExtractor(e,!1)}),n.field("attachments_joined",{extractor:e=>this.attachmentExtractor(e,!0)}),n.field("organizationid",{extractor:e=>e.organizationId}),(t=t||(yield this.cipherService.getAllDecrypted())).forEach((e=>n.add(e))),this.index=n.build(),this.indexing=!1,this.logService.timeEnd("search indexing")}))}searchCiphers(e,t=null,n=null){return i(this,void 0,void 0,(function*(){const i=[];if(null!=e&&(e=e.trim().toLowerCase()),""===e&&(e=null),null==n&&(n=yield this.cipherService.getAllDecrypted()),null!=t&&Array.isArray(t)&&t.length>0?n=n.filter((e=>t.every((t=>null==t||t(e))))):null!=t&&(n=n.filter(t)),!this.isSearchable(e))return n;this.indexing&&(yield new Promise((e=>setTimeout(e,250))),this.indexing&&(yield new Promise((e=>setTimeout(e,500)))));const o=this.getIndexForSearch();if(null==o)return this.searchCiphersBasic(n,e);const a=new Map;n.forEach((e=>a.set(e.id,e)));let s=null;if(null!=e&&e.length>1&&0===e.indexOf(">"))try{s=o.search(e.substr(1).trim())}catch(l){this.logService.error(l)}else{const t=r.Query.wildcard.LEADING|r.Query.wildcard.TRAILING;s=o.query((n=>{r.tokenizer(e).forEach((e=>{const i=e.toString();n.term(i,{fields:["name"],wildcard:t}),n.term(i,{fields:["subtitle"],wildcard:t}),n.term(i,{fields:["login.uris"],wildcard:t}),n.term(i,{})}))}))}return null!=s&&s.forEach((e=>{a.has(e.ref)&&i.push(a.get(e.ref))})),i}))}searchCiphersBasic(e,t,n=!1){return t=t.trim().toLowerCase(),e.filter((e=>n===e.isDeleted&&(null!=e.name&&e.name.toLowerCase().indexOf(t)>-1||(!!(t.length>=8&&e.id.startsWith(t))||(null!=e.subTitle&&e.subTitle.toLowerCase().indexOf(t)>-1||!!(e.login&&null!=e.login.uri&&e.login.uri.toLowerCase().indexOf(t)>-1))))))}searchSends(e,t){return t=t.trim().toLocaleLowerCase(),e.filter((e=>{var n,i,r;return null!=e.name&&e.name.toLowerCase().indexOf(t)>-1||(!!(t.length>=8&&(e.id.startsWith(t)||e.accessId.toLocaleLowerCase().startsWith(t)||null!=(null===(n=e.file)||void 0===n?void 0:n.id)&&e.file.id.startsWith(t)))||(null!=e.notes&&e.notes.toLowerCase().indexOf(t)>-1||(null!=(null===(i=e.text)||void 0===i?void 0:i.text)&&e.text.text.toLowerCase().indexOf(t)>-1||(null!=(null===(r=e.file)||void 0===r?void 0:r.fileName)&&e.file.fileName.toLowerCase().indexOf(t)>-1||void 0))))}))}getIndexForSearch(){return this.index}fieldExtractor(e,t){if(!e.hasFields)return null;let n=[];return e.fields.forEach((e=>{null!=e.name&&n.push(e.name),e.type===a.FieldType.Text&&null!=e.value&&n.push(e.value)})),n=n.filter((e=>""!==e.trim())),0===n.length?null:t?n.join(" "):n}attachmentExtractor(e,t){if(!e.hasAttachments)return null;let n=[];return e.attachments.forEach((e=>{null!=e&&null!=e.fileName&&(t&&e.fileName.indexOf(".")>-1?n.push(e.fileName.substr(0,e.fileName.lastIndexOf("."))):n.push(e.fileName))})),n=n.filter((e=>""!==e.trim())),0===n.length?null:t?n.join(" "):n}uriExtractor(e){if(e.type!==o.CipherType.Login||null==e.login||!e.login.hasUris)return null;const t=[];return e.login.uris.forEach((e=>{if(null==e.uri||""===e.uri)return;if(null!=e.hostname)return void t.push(e.hostname);let n=e.uri;if(e.match!==s.UriMatchType.RegularExpression){const e=n.indexOf("://");e>-1&&(n=n.substr(e+3));const t=n.search(/\?|&|#/);t>-1&&(n=n.substring(0,t))}t.push(n)})),t.length>0?t:null}}},23566:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendService=void 0;const r=n(20971),o=n(70149),a=n(82769),s=n(10425),l=n(38265),c=n(32924),d=n(22785),p=n(34386),u=n(33018);t.SendService=class{constructor(e,t,n,i,r,o){this.cryptoService=e,this.apiService=t,this.fileUploadService=n,this.i18nService=i,this.cryptoFunctionService=r,this.stateService=o}clearCache(){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null)}))}encrypt(e,t,n,s){return i(this,void 0,void 0,(function*(){let i=null;const p=new l.Send;if(p.id=e.id,p.type=e.type,p.disabled=e.disabled,p.hideEmail=e.hideEmail,p.maxAccessCount=e.maxAccessCount,null==e.key&&(e.key=yield this.cryptoFunctionService.randomBytes(16),e.cryptoKey=yield this.cryptoService.makeSendKey(e.key)),null!=n){const t=yield this.cryptoFunctionService.pbkdf2(n,e.key,"sha256",r.SEND_KDF_ITERATIONS);p.password=a.Utils.fromBufferToB64(t)}if(p.key=yield this.cryptoService.encrypt(e.key,s),p.name=yield this.cryptoService.encrypt(e.name,e.cryptoKey),p.notes=yield this.cryptoService.encrypt(e.notes,e.cryptoKey),p.type===o.SendType.Text)p.text=new d.SendText,p.text.text=yield this.cryptoService.encrypt(e.text.text,e.cryptoKey),p.text.hidden=e.text.hidden;else if(p.type===o.SendType.File&&(p.file=new c.SendFile,null!=t))if(t instanceof ArrayBuffer){const[n,r]=yield this.encryptFileData(e.file.fileName,t,e.cryptoKey);p.file.fileName=n,i=r}else i=yield this.parseFile(p,t,e.cryptoKey);return[p,i]}))}get(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedSends();return null!=t&&t.hasOwnProperty(e)?new l.Send(t[e]):null}))}getAll(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getEncryptedSends(),t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(new l.Send(e[n]));return t}))}getAllDecrypted(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getDecryptedSends();if(null!=e)return e;e=[];if(!(yield this.cryptoService.hasKey()))throw new Error("No key.");const t=[];return(yield this.getAll()).forEach((n=>{t.push(n.decrypt().then((t=>e.push(t))))})),yield Promise.all(t),e.sort(a.Utils.getSortFunction(this.i18nService,"name")),yield this.stateService.setDecryptedSends(e),e}))}saveWithServer(e){var t;return i(this,void 0,void 0,(function*(){const n=new p.SendRequest(e[0],null===(t=e[1])||void 0===t?void 0:t.buffer.byteLength);let i;if(null==e[0].id){if(e[0].type===o.SendType.Text)i=yield this.apiService.postSend(n);else try{const t=yield this.apiService.postFileTypeSend(n);i=t.sendResponse,yield this.fileUploadService.uploadSendFile(t,e[0].file.fileName,e[1])}catch(a){if(!(a instanceof u.ErrorResponse&&404===a.statusCode))throw a instanceof u.ErrorResponse?new Error(a.getSingleMessage()):a;i=yield this.legacyServerSendFileUpload(e,n)}e[0].id=i.id,e[0].accessId=i.accessId}else i=yield this.apiService.putSend(e[0].id,n);const r=new s.SendData(i);yield this.upsert(r)}))}legacyServerSendFileUpload(e,t){return i(this,void 0,void 0,(function*(){const n=new FormData;try{const i=new Blob([e[1].buffer],{type:"application/octet-stream"});n.append("model",JSON.stringify(t)),n.append("data",i,e[0].file.fileName.encryptedString)}catch(i){if(!a.Utils.isNode||a.Utils.isBrowser)throw i;n.append("model",JSON.stringify(t)),n.append("data",Buffer.from(e[1].buffer),{filepath:e[0].file.fileName.encryptedString,contentType:"application/octet-stream"})}return yield this.apiService.postSendFileLegacy(n)}))}upsert(e){return i(this,void 0,void 0,(function*(){let t=yield this.stateService.getEncryptedSends();if(null==t&&(t={}),e instanceof s.SendData){const n=e;t[n.id]=n}else e.forEach((e=>{t[e.id]=e}));yield this.replace(t)}))}replace(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null),yield this.stateService.setEncryptedSends(e)}))}clear(){return i(this,void 0,void 0,(function*(){yield this.stateService.setDecryptedSends(null),yield this.stateService.setEncryptedSends(null)}))}delete(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getEncryptedSends();if(null!=t){if("string"==typeof e){if(null==t[e])return;delete t[e]}else e.forEach((e=>{delete t[e]}));yield this.replace(t)}}))}deleteWithServer(e){return i(this,void 0,void 0,(function*(){yield this.apiService.deleteSend(e),yield this.delete(e)}))}removePasswordWithServer(e){return i(this,void 0,void 0,(function*(){const t=yield this.apiService.putSendRemovePassword(e),n=new s.SendData(t);yield this.upsert(n)}))}parseFile(e,t,n){return new Promise(((r,o)=>{const a=new FileReader;a.readAsArrayBuffer(t),a.onload=a=>i(this,void 0,void 0,(function*(){try{const[i,o]=yield this.encryptFileData(t.name,a.target.result,n);e.file.fileName=i,r(o)}catch(i){o(i)}})),a.onerror=()=>{o("Error reading file.")}}))}encryptFileData(e,t,n){return i(this,void 0,void 0,(function*(){return[yield this.cryptoService.encrypt(e,n),yield this.cryptoService.encryptToBytes(t,n)]}))}}},94822:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsService=void 0;const i="equivalentDomains";t.SettingsService=class{constructor(e){this.stateService=e}clearCache(){return n(this,void 0,void 0,(function*(){yield this.stateService.setSettings(null)}))}getEquivalentDomains(){return this.getSettingsKey(i)}setEquivalentDomains(e){return n(this,void 0,void 0,(function*(){yield this.setSettingsKey(i,e)}))}clear(e){return n(this,void 0,void 0,(function*(){yield this.stateService.setSettings(null,{userId:e})}))}getSettings(){return n(this,void 0,void 0,(function*(){const e=yield this.stateService.getSettings();if(null==e){yield this.stateService.getUserId()}return e}))}getSettingsKey(e){return n(this,void 0,void 0,(function*(){const t=yield this.getSettings();return null!=t&&t[e]?t[e]:null}))}setSettingsKey(e,t){return n(this,void 0,void 0,(function*(){let n=yield this.getSettings();n||(n={}),n[e]=t,yield this.stateService.setSettings(n)}))}}},13998:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const r=n(72872),o=n(46632),a=n(67223),s=n(31445),l=n(91185),c=n(43208),d=n(95672),p="global",u="authenticatedAccounts",m="activeUserId",h="tempAccountSettings",v="accountActivity",f="_masterkey_auto",g="_masterkey_biometric",y="_masterkey";t.StateService=class{constructor(e,t,n,i,o,a=!0){this.storageService=e,this.secureStorageService=t,this.logService=n,this.stateMigrationService=i,this.stateFactory=o,this.useAccountCache=a,this.accounts=new r.BehaviorSubject({}),this.activeAccount=new r.BehaviorSubject(null),this.state=new c.State(this.createGlobals()),this.hasBeenInited=!1,this.accountDiskCache=new Map}init(){return i(this,void 0,void 0,(function*(){this.hasBeenInited||((yield this.stateMigrationService.needsMigration())&&(yield this.stateMigrationService.migrate()),yield this.initAccountState(),this.hasBeenInited=!0)}))}initAccountState(){var e;return i(this,void 0,void 0,(function*(){this.state.authenticatedAccounts=null!==(e=yield this.storageService.get(u))&&void 0!==e?e:[];for(const e in this.state.authenticatedAccounts)null!=e&&(yield this.syncAccountFromDisk(this.state.authenticatedAccounts[e]));const t=yield this.storageService.get(m);null!=t&&(this.state.activeUserId=t),yield this.pushAccounts(),this.activeAccount.next(this.state.activeUserId)}))}syncAccountFromDisk(e){return i(this,void 0,void 0,(function*(){if(null==e)return;this.state.accounts[e]=this.createAccount();const t=yield this.getAccountFromDisk({userId:e});this.state.accounts[e].profile=t.profile}))}addAccount(e){return i(this,void 0,void 0,(function*(){e=yield this.setAccountEnvironmentUrls(e),this.state.authenticatedAccounts.push(e.profile.userId),yield this.storageService.save(u,this.state.authenticatedAccounts),this.state.accounts[e.profile.userId]=e,yield this.scaffoldNewAccountStorage(e),yield this.setLastActive((new Date).getTime(),{userId:e.profile.userId}),yield this.setActiveUser(e.profile.userId),this.activeAccount.next(e.profile.userId)}))}setActiveUser(e){return i(this,void 0,void 0,(function*(){this.clearDecryptedDataForActiveUser(),this.state.activeUserId=e,yield this.storageService.save(m,e),this.activeAccount.next(this.state.activeUserId),yield this.pushAccounts()}))}clean(e){return i(this,void 0,void 0,(function*(){e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield this.deAuthenticateAccount(e.userId),e.userId===this.state.activeUserId&&(yield this.dynamicallySetActiveUser()),yield this.removeAccountFromDisk(null==e?void 0:e.userId),this.removeAccountFromMemory(null==e?void 0:e.userId),yield this.pushAccounts()}))}getAccessToken(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.accessToken}))}setAccessToken(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.tokens.accessToken=e,yield this.saveAccount(n,t)}))}getAddEditCipherInfo(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.addEditCipherInfo}))}setAddEditCipherInfo(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.addEditCipherInfo=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getAlwaysShowDock(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.alwaysShowDock)&&void 0!==n&&n}))}setAlwaysShowDock(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.alwaysShowDock=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getApiKeyClientId(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.apiKeyClientId}))}setApiKeyClientId(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.profile.apiKeyClientId=e,yield this.saveAccount(n,t)}))}getApiKeyClientSecret(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.apiKeyClientSecret}))}setApiKeyClientSecret(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.keys.apiKeyClientSecret=e,yield this.saveAccount(n,t)}))}getAutoConfirmFingerPrints(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.autoConfirmFingerPrints)&&void 0!==r&&r}))}setAutoConfirmFingerprints(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.autoConfirmFingerPrints=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getAutoFillOnPageLoadDefault(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.autoFillOnPageLoadDefault)||void 0===r||r}))}setAutoFillOnPageLoadDefault(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.autoFillOnPageLoadDefault=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricAwaitingAcceptance(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricAwaitingAcceptance)&&void 0!==n&&n}))}setBiometricAwaitingAcceptance(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricAwaitingAcceptance=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricFingerprintValidated(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricFingerprintValidated)&&void 0!==n&&n}))}setBiometricFingerprintValidated(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricFingerprintValidated=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricLocked(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.biometricLocked)&&void 0!==r&&r}))}setBiometricLocked(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.settings.biometricLocked=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getBiometricText(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.biometricText}))}setBiometricText(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.biometricText=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getBiometricUnlock(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.biometricUnlock)&&void 0!==r&&r}))}setBiometricUnlock(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.biometricUnlock=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getCanAccessPremium(e){return i(this,void 0,void 0,(function*(){if(!(yield this.getIsAuthenticated(e)))return!1;if((yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions()))).profile.hasPremiumPersonally)return!0;const t=yield this.getOrganizations(e);if(null==t)return!1;for(const e of Object.keys(t)){const n=t[e];if(n.enabled&&n.usersGetPremium&&!n.isProviderUser)return!0}return!1}))}getClearClipboard(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.clearClipboard)&&void 0!==r?r:null}))}setClearClipboard(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.clearClipboard=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getCollapsedGroupings(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.collapsedGroupings}))}setCollapsedGroupings(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.collapsedGroupings=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getConvertAccountToKeyConnector(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.convertAccountToKeyConnector}))}setConvertAccountToKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.convertAccountToKeyConnector=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getCryptoMasterKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.cryptoMasterKey}))}setCryptoMasterKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.cryptoMasterKey=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getCryptoMasterKeyAuto(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"auto"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${e.userId}${f}`,e)}))}setCryptoMasterKeyAuto(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(this.reconcileOptions(t,{keySuffix:"auto"}),yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(f,e,t))}))}getCryptoMasterKeyB64(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(e,yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${null==e?void 0:e.userId}${y}`,e)}))}setCryptoMasterKeyB64(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(t,yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(y,e,t))}))}getCryptoMasterKeyBiometric(e){return i(this,void 0,void 0,(function*(){return null==(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)?null:yield this.secureStorageService.get(`${e.userId}${g}`,e)}))}hasCryptoMasterKeyBiometric(e){return i(this,void 0,void 0,(function*(){return null!=(null==(e=this.reconcileOptions(this.reconcileOptions(e,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:e.userId)&&(yield this.secureStorageService.has(`${e.userId}${g}`,e))}))}setCryptoMasterKeyBiometric(e,t){return i(this,void 0,void 0,(function*(){null!=(null==(t=this.reconcileOptions(this.reconcileOptions(t,{keySuffix:"biometric"}),yield this.defaultSecureStorageOptions()))?void 0:t.userId)&&(yield this.saveSecureStorageKey(g,e,t))}))}getDecodedToken(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.decodedToken}))}setDecodedToken(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.tokens.decodedToken=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCiphers(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.ciphers)||void 0===r?void 0:r.decrypted}))}setDecryptedCiphers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.ciphers.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCollections(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.collections)||void 0===r?void 0:r.decrypted}))}setDecryptedCollections(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.collections.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedCryptoSymmetricKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.cryptoSymmetricKey)||void 0===r?void 0:r.decrypted}))}setDecryptedCryptoSymmetricKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.cryptoSymmetricKey.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedFolders(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.folders)||void 0===r?void 0:r.decrypted}))}setDecryptedFolders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.folders.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedOrganizationKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.organizationKeys)||void 0===r?void 0:r.decrypted}))}setDecryptedOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.organizationKeys.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPasswordGenerationHistory(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.passwordGenerationHistory)||void 0===r?void 0:r.decrypted}))}setDecryptedPasswordGenerationHistory(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.passwordGenerationHistory.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPinProtected(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.pinProtected)||void 0===r?void 0:r.decrypted}))}setDecryptedPinProtected(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.settings.pinProtected.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPolicies(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.policies)||void 0===r?void 0:r.decrypted}))}setDecryptedPolicies(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.policies.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedPrivateKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.privateKey)||void 0===r?void 0:r.decrypted}))}setDecryptedPrivateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.privateKey.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedProviderKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.providerKeys)||void 0===r?void 0:r.decrypted}))}setDecryptedProviderKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.providerKeys.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDecryptedSends(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.data)||void 0===n?void 0:n.sends)||void 0===r?void 0:r.decrypted}))}setDecryptedSends(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.data.sends.decrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getDefaultUriMatch(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.defaultUriMatch}))}setDefaultUriMatch(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.defaultUriMatch=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAddLoginNotification(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAddLoginNotification)&&void 0!==r&&r}))}setDisableAddLoginNotification(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAddLoginNotification=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAutoBiometricsPrompt(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAutoBiometricsPrompt)&&void 0!==r&&r}))}setDisableAutoBiometricsPrompt(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAutoBiometricsPrompt=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableAutoTotpCopy(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableAutoTotpCopy)&&void 0!==r&&r}))}setDisableAutoTotpCopy(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableAutoTotpCopy=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableBadgeCounter(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableBadgeCounter)&&void 0!==r&&r}))}setDisableBadgeCounter(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableBadgeCounter=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableChangedPasswordNotification(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableChangedPasswordNotification)&&void 0!==r&&r}))}setDisableChangedPasswordNotification(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableChangedPasswordNotification=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableContextMenuItem(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableContextMenuItem)&&void 0!==r&&r}))}setDisableContextMenuItem(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableContextMenuItem=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDisableFavicon(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.disableFavicon)&&void 0!==n&&n}))}setDisableFavicon(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.disableFavicon=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getDisableGa(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.disableGa)&&void 0!==r&&r}))}setDisableGa(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.disableGa=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDontShowCardsCurrentTab(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.dontShowCardsCurrentTab)&&void 0!==r&&r}))}setDontShowCardsCurrentTab(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.dontShowCardsCurrentTab=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getDontShowIdentitiesCurrentTab(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.dontShowIdentitiesCurrentTab)&&void 0!==r&&r}))}setDontShowIdentitiesCurrentTab(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.dontShowIdentitiesCurrentTab=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEmail(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.email}))}setEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.email=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getEmailVerified(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile.emailVerified)&&void 0!==n&&n}))}setEmailVerified(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.emailVerified=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableAlwaysOnTop(e){var t,n,r,o;return i(this,void 0,void 0,(function*(){const i=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableAlwaysOnTop,a=null===(r=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===r?void 0:r.enableAlwaysOnTop;return null!==(o=null!=i?i:a)&&void 0!==o&&o}))}setEnableAlwaysOnTop(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.enableAlwaysOnTop=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()));const i=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));i.enableAlwaysOnTop=e,yield this.saveGlobals(i,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableAutoFillOnPageLoad(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableAutoFillOnPageLoad)&&void 0!==r&&r}))}setEnableAutoFillOnPageLoad(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.enableAutoFillOnPageLoad=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBiometric(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBiometrics)&&void 0!==n&&n}))}setEnableBiometric(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBiometrics=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBrowserIntegration(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBrowserIntegration)&&void 0!==n&&n}))}setEnableBrowserIntegration(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBrowserIntegration=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableBrowserIntegrationFingerprint(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableBrowserIntegrationFingerprint)&&void 0!==n&&n}))}setEnableBrowserIntegrationFingerprint(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableBrowserIntegrationFingerprint=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableCloseToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableCloseToTray)&&void 0!==n&&n}))}setEnableCloseToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableCloseToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableFullWidth(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableFullWidth)&&void 0!==r&&r}))}setEnableFullWidth(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.enableFullWidth=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnableGravitars(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.enableGravitars)&&void 0!==r&&r}))}setEnableGravitars(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.enableGravitars=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnableMinimizeToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableMinimizeToTray)&&void 0!==n&&n}))}setEnableMinimizeToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableMinimizeToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableStartToTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableStartToTray)&&void 0!==n&&n}))}setEnableStartToTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableStartToTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEnableTray(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.enableTray)&&void 0!==n&&n}))}setEnableTray(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.enableTray=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedCiphers(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.ciphers)||void 0===r?void 0:r.encrypted}))}setEncryptedCiphers(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.ciphers.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedCollections(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.collections)||void 0===r?void 0:r.encrypted}))}setEncryptedCollections(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.collections.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedCryptoSymmetricKey(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys.cryptoSymmetricKey.encrypted}))}setEncryptedCryptoSymmetricKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.cryptoSymmetricKey.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedFolders(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.folders)||void 0===r?void 0:r.encrypted}))}setEncryptedFolders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.folders.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEncryptedOrganizationKeys(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.organizationKeys.encrypted}))}setEncryptedOrganizationKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.organizationKeys.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPasswordGenerationHistory(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.passwordGenerationHistory)||void 0===r?void 0:r.encrypted}))}setEncryptedPasswordGenerationHistory(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.passwordGenerationHistory.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPinProtected(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.pinProtected)||void 0===r?void 0:r.encrypted}))}setEncryptedPinProtected(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.pinProtected.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPolicies(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.policies)||void 0===r?void 0:r.encrypted}))}setEncryptedPolicies(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.policies.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedPrivateKey(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.privateKey)||void 0===r?void 0:r.encrypted}))}setEncryptedPrivateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.privateKey.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedProviderKeys(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null===(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.providerKeys)||void 0===r?void 0:r.encrypted}))}setEncryptedProviderKeys(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.providerKeys.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEncryptedSends(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.sends.encrypted}))}setEncryptedSends(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.data.sends.encrypted=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getEntityId(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.entityId}))}setEntityId(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.profile.entityId=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEntityType(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.entityType}))}setEntityType(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.profile.entityType=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEnvironmentUrls(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null==this.state.activeUserId?yield this.getGlobalEnvironmentUrls(e):(e=this.reconcileOptions(e,yield this.defaultOnDiskOptions()),null!==(r=null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.environmentUrls)&&void 0!==r?r:new l.EnvironmentUrls)}))}setEnvironmentUrls(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.environmentUrls=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEquivalentDomains(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.equivalentDomains}))}setEquivalentDomains(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.equivalentDomains=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEventCollection(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.eventCollection}))}setEventCollection(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.eventCollection=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getEverBeenUnlocked(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.everBeenUnlocked)&&void 0!==r&&r}))}setEverBeenUnlocked(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.everBeenUnlocked=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getForcePasswordReset(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.forcePasswordReset)&&void 0!==r&&r}))}setForcePasswordReset(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.profile.forcePasswordReset=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getInstalledVersion(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.installedVersion}))}setInstalledVersion(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.installedVersion=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getIsAuthenticated(e){return i(this,void 0,void 0,(function*(){return null!=(yield this.getAccessToken(e))&&null!=(yield this.getUserId(e))}))}getKdfIterations(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.kdfIterations}))}setKdfIterations(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.kdfIterations=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getKdfType(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.kdfType}))}setKdfType(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.kdfType=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getKeyHash(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.keyHash}))}setKeyHash(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.keyHash=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getLastActive(e){return i(this,void 0,void 0,(function*(){e=this.reconcileOptions(e,yield this.defaultOnDiskOptions());const t=yield this.storageService.get(v,e);return null==t||Object.keys(t).length<1?null:t[e.userId]}))}setLastActive(e,t){var n;return i(this,void 0,void 0,(function*(){if(null==(t=this.reconcileOptions(t,yield this.defaultOnDiskOptions())).userId)return;const i=null!==(n=yield this.storageService.get(v,t))&&void 0!==n?n:{};i[t.userId]=e,yield this.storageService.save(v,i,t)}))}getLastSync(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.lastSync}))}setLastSync(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.profile.lastSync=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getLegacyEtmKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.legacyEtmKey}))}setLegacyEtmKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.keys.legacyEtmKey=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getLocalData(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.localData}))}setLocalData(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.data.localData=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getLocale(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.locale}))}setLocale(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.locale=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getMainWindowSize(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.mainWindowSize}))}setMainWindowSize(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,this.defaultInMemoryOptions));n.mainWindowSize=e,yield this.saveGlobals(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getMinimizeOnCopyToClipboard(e){var t,n,r;return i(this,void 0,void 0,(function*(){return null!==(r=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.minimizeOnCopyToClipboard)&&void 0!==r&&r}))}setMinimizeOnCopyToClipboard(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.minimizeOnCopyToClipboard=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNeverDomains(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.neverDomains}))}setNeverDomains(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.neverDomains=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNoAutoPromptBiometrics(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.noAutoPromptBiometrics)&&void 0!==n&&n}))}setNoAutoPromptBiometrics(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.noAutoPromptBiometrics=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getNoAutoPromptBiometricsText(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.noAutoPromptBiometricsText}))}setNoAutoPromptBiometricsText(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.noAutoPromptBiometricsText=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getOpenAtLogin(e){var t,n;return i(this,void 0,void 0,(function*(){return null!==(n=null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.openAtLogin)&&void 0!==n&&n}))}setOpenAtLogin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.openAtLogin=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getOrganizationInvitation(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.organizationInvitation}))}setOrganizationInvitation(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,this.defaultInMemoryOptions));n.organizationInvitation=e,yield this.saveGlobals(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getOrganizations(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.organizations}))}setOrganizations(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.organizations=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getPasswordGenerationOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.passwordGenerationOptions}))}setPasswordGenerationOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.passwordGenerationOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getUsernameGenerationOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.usernameGenerationOptions}))}setUsernameGenerationOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.usernameGenerationOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getGeneratorOptions(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.generatorOptions}))}setGeneratorOptions(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.generatorOptions=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getProtectedPin(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.protectedPin}))}setProtectedPin(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.settings.protectedPin=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getProviders(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.data)||void 0===n?void 0:n.providers}))}setProviders(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.data.providers=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getPublicKey(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.keys)||void 0===n?void 0:n.publicKey}))}setPublicKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.keys.publicKey=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getRefreshToken(e){var t,n;return i(this,void 0,void 0,(function*(){return e=yield this.getTimeoutBasedStorageOptions(e),null===(n=null===(t=yield this.getAccount(e))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.refreshToken}))}setRefreshToken(e,t){return i(this,void 0,void 0,(function*(){t=yield this.getTimeoutBasedStorageOptions(t);const n=yield this.getAccount(t);n.tokens.refreshToken=e,yield this.saveAccount(n,t)}))}getRememberedEmail(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.rememberedEmail}))}setRememberedEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.rememberedEmail=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getSecurityStamp(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,this.defaultInMemoryOptions)))||void 0===t?void 0:t.tokens)||void 0===n?void 0:n.securityStamp}))}setSecurityStamp(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,this.defaultInMemoryOptions));n.tokens.securityStamp=e,yield this.saveAccount(n,this.reconcileOptions(t,this.defaultInMemoryOptions))}))}getSettings(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskMemoryOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.settings}))}setSettings(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()));n.settings.settings=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskMemoryOptions()))}))}getSsoCodeVerifier(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.ssoCodeVerifier}))}setSsoCodeVerifier(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.ssoCodeVerifier=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getSsoOrgIdentifier(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.ssoOrganizationIdentifier}))}setSsoOrganizationIdentifier(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.ssoOrganizationIdentifier=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getSsoState(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.ssoState}))}setSsoState(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.ssoState=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getTheme(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.theme}))}setTheme(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.theme=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getTwoFactorToken(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.twoFactorToken}))}setTwoFactorToken(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.twoFactorToken=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getUserId(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.userId}))}getUsesKeyConnector(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskOptions())))||void 0===t?void 0:t.profile)||void 0===n?void 0:n.usesKeyConnector}))}setUsesKeyConnector(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));n.profile.usesKeyConnector=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getVaultTimeout(e){var t,n;return i(this,void 0,void 0,(function*(){return null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.vaultTimeout}))}setVaultTimeout(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.vaultTimeout=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getVaultTimeoutAction(e){var t,n,r;return i(this,void 0,void 0,(function*(){const i=null===(n=null===(t=yield this.getAccount(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.settings)||void 0===n?void 0:n.vaultTimeoutAction,o=null===(r=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===r?void 0:r.vaultTimeoutAction;return null!=i?i:o}))}setVaultTimeoutAction(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getAccount(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.settings.vaultTimeoutAction=e,yield this.saveAccount(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getStateVersion(){var e;return i(this,void 0,void 0,(function*(){return null!==(e=(yield this.getGlobals(yield this.defaultOnDiskLocalOptions())).stateVersion)&&void 0!==e?e:1}))}setStateVersion(e){return i(this,void 0,void 0,(function*(){const t=yield this.getGlobals(yield this.defaultOnDiskOptions());t.stateVersion=e,yield this.saveGlobals(t,yield this.defaultOnDiskOptions())}))}getWindow(){return i(this,void 0,void 0,(function*(){const e=yield this.getGlobals(yield this.defaultOnDiskOptions());return null!=(null==e?void 0:e.window)&&Object.keys(e.window).length>0?e.window:new d.WindowState}))}setWindow(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskOptions()));return n.window=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskOptions()))}))}getGlobals(e){return i(this,void 0,void 0,(function*(){let t;return this.useMemory(e.storageLocation)&&(t=this.getGlobalsFromMemory()),this.useDisk&&null==t&&(t=yield this.getGlobalsFromDisk(e)),null!=t?t:this.createGlobals()}))}saveGlobals(e,t){return i(this,void 0,void 0,(function*(){return this.useMemory(t.storageLocation)?this.saveGlobalsToMemory(e):yield this.saveGlobalsToDisk(e,t)}))}getGlobalsFromMemory(){return this.state.globals}getGlobalsFromDisk(e){return i(this,void 0,void 0,(function*(){return yield this.storageService.get(p,e)}))}saveGlobalsToMemory(e){this.state.globals=e}saveGlobalsToDisk(e,t){return i(this,void 0,void 0,(function*(){t.useSecureStorage?yield this.secureStorageService.save(p,e,t):yield this.storageService.save(p,e,t)}))}getAccount(e){return i(this,void 0,void 0,(function*(){try{let t;return this.useMemory(e.storageLocation)&&(t=this.getAccountFromMemory(e)),this.useDisk(e.storageLocation)&&null==t&&(t=yield this.getAccountFromDisk(e)),t}catch(t){this.logService.error(t)}}))}getAccountFromMemory(e){return null==this.state.accounts?null:this.state.accounts[this.getUserIdFromMemory(e)]}getUserIdFromMemory(e){var t,n;return null!=(null==e?void 0:e.userId)?null===(n=null===(t=this.state.accounts[e.userId])||void 0===t?void 0:t.profile)||void 0===n?void 0:n.userId:this.state.activeUserId}getAccountFromDisk(e){var t;return i(this,void 0,void 0,(function*(){if(null==(null==e?void 0:e.userId)&&null==this.state.activeUserId)return null;if(this.useAccountCache){const t=this.accountDiskCache.get(e.userId);if(null!=t)return t}const n=(null==e?void 0:e.useSecureStorage)?null!==(t=yield this.secureStorageService.get(e.userId,e))&&void 0!==t?t:yield this.storageService.get(e.userId,this.reconcileOptions(e,{htmlStorageLocation:o.HtmlStorageLocation.Local})):yield this.storageService.get(e.userId,e);return this.useAccountCache&&this.accountDiskCache.set(e.userId,n),n}))}useMemory(e){return e===a.StorageLocation.Memory||e===a.StorageLocation.Both}useDisk(e){return e===a.StorageLocation.Disk||e===a.StorageLocation.Both}saveAccount(e,t={storageLocation:a.StorageLocation.Both,useSecureStorage:!1}){return i(this,void 0,void 0,(function*(){return this.useMemory(t.storageLocation)?yield this.saveAccountToMemory(e):yield this.saveAccountToDisk(e,t)}))}saveAccountToDisk(e,t){return i(this,void 0,void 0,(function*(){const n=t.useSecureStorage?this.secureStorageService:this.storageService;yield n.save(`${t.userId}`,e,t),this.useAccountCache&&this.accountDiskCache.delete(t.userId)}))}saveAccountToMemory(e){return i(this,void 0,void 0,(function*(){null!==this.getAccountFromMemory({userId:e.profile.userId})&&(this.state.accounts[e.profile.userId]=e),yield this.pushAccounts()}))}scaffoldNewAccountStorage(e){return i(this,void 0,void 0,(function*(){const t=JSON.parse(JSON.stringify(e));yield this.scaffoldNewAccountLocalStorage(t),yield this.scaffoldNewAccountSessionStorage(t),yield this.scaffoldNewAccountMemoryStorage(t)}))}scaffoldNewAccountLocalStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskLocalOptions())),n=e.settings.environmentUrls;null!=(null==t?void 0:t.settings)?e.settings=t.settings:(yield this.storageService.has(h))&&(e.settings=yield this.storageService.get(h),yield this.storageService.remove(h)),e.settings.environmentUrls=n,"logOut"===e.settings.vaultTimeoutAction&&null!=e.settings.vaultTimeout&&(e.tokens.accessToken=null,e.tokens.refreshToken=null,e.profile.apiKeyClientId=null,e.keys.apiKeyClientSecret=null),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskLocalOptions()))}))}scaffoldNewAccountMemoryStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskMemoryOptions()));null!=(null==t?void 0:t.settings)&&(t.settings.environmentUrls=e.settings.environmentUrls,e.settings=t.settings),yield this.storageService.save(e.profile.userId,e,yield this.defaultOnDiskMemoryOptions()),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskMemoryOptions()))}))}scaffoldNewAccountSessionStorage(e){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskOptions()));null!=(null==t?void 0:t.settings)&&(t.settings.environmentUrls=e.settings.environmentUrls,e.settings=t.settings),yield this.storageService.save(e.profile.userId,e,yield this.defaultOnDiskMemoryOptions()),yield this.saveAccount(e,this.reconcileOptions({userId:e.profile.userId},yield this.defaultOnDiskOptions()))}))}pushAccounts(){var e;return i(this,void 0,void 0,(function*(){yield this.pruneInMemoryAccounts(),null==(null===(e=this.state)||void 0===e?void 0:e.accounts)||Object.keys(this.state.accounts).length<1?this.accounts.next(null):this.accounts.next(this.state.accounts)}))}reconcileOptions(e,t){var n,i,r,o,a;return null==e?t:(e.userId=null!==(n=null==e?void 0:e.userId)&&void 0!==n?n:t.userId,e.storageLocation=null!==(i=null==e?void 0:e.storageLocation)&&void 0!==i?i:t.storageLocation,e.useSecureStorage=null!==(r=null==e?void 0:e.useSecureStorage)&&void 0!==r?r:t.useSecureStorage,e.htmlStorageLocation=null!==(o=null==e?void 0:e.htmlStorageLocation)&&void 0!==o?o:t.htmlStorageLocation,e.keySuffix=null!==(a=null==e?void 0:e.keySuffix)&&void 0!==a?a:t.keySuffix,e)}get defaultInMemoryOptions(){return{storageLocation:a.StorageLocation.Memory,userId:this.state.activeUserId}}defaultOnDiskOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Session,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage(),useSecureStorage:!1}}))}defaultOnDiskLocalOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Local,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage(),useSecureStorage:!1}}))}defaultOnDiskMemoryOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,htmlStorageLocation:o.HtmlStorageLocation.Memory,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getUserId(),useSecureStorage:!1}}))}defaultSecureStorageOptions(){var e;return i(this,void 0,void 0,(function*(){return{storageLocation:a.StorageLocation.Disk,useSecureStorage:!0,userId:null!==(e=this.state.activeUserId)&&void 0!==e?e:yield this.getActiveUserIdFromStorage()}}))}getActiveUserIdFromStorage(){return i(this,void 0,void 0,(function*(){return yield this.storageService.get(m)}))}removeAccountFromLocalStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e},yield this.defaultOnDiskLocalOptions()));yield this.saveAccount(this.resetAccount(t),this.reconcileOptions({userId:e},yield this.defaultOnDiskLocalOptions()))}))}removeAccountFromSessionStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){const t=yield this.getAccount(this.reconcileOptions({userId:e},yield this.defaultOnDiskOptions()));yield this.saveAccount(this.resetAccount(t),this.reconcileOptions({userId:e},yield this.defaultOnDiskOptions()))}))}removeAccountFromSecureStorage(e=this.state.activeUserId){return i(this,void 0,void 0,(function*(){yield this.setCryptoMasterKeyAuto(null,{userId:e}),yield this.setCryptoMasterKeyBiometric(null,{userId:e}),yield this.setCryptoMasterKeyB64(null,{userId:e})}))}removeAccountFromMemory(e=this.state.activeUserId){delete this.state.accounts[e],this.useAccountCache&&this.accountDiskCache.delete(e)}pruneInMemoryAccounts(){return i(this,void 0,void 0,(function*(){for(const e in this.state.accounts)(yield this.getIsAuthenticated({userId:e}))||this.removeAccountFromMemory(e)}))}resetAccount(e){const t={settings:e.settings};return Object.assign(this.createAccount(),t)}setAccountEnvironmentUrls(e){return i(this,void 0,void 0,(function*(){return e.settings.environmentUrls=yield this.getGlobalEnvironmentUrls(),e}))}getGlobalEnvironmentUrls(e){var t;return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,yield this.defaultOnDiskOptions()),null!==(t=(yield this.getGlobals(e)).environmentUrls)&&void 0!==t?t:new l.EnvironmentUrls}))}clearDecryptedDataForActiveUser(){var e,t;const n=this.state.activeUserId;null!=n&&null!=(null===(t=null===(e=this.state)||void 0===e?void 0:e.accounts[n])||void 0===t?void 0:t.data)&&(this.state.accounts[n].data=new s.AccountData)}createAccount(e=null){return this.stateFactory.createAccount(e)}createGlobals(e=null){return this.stateFactory.createGlobal(e)}deAuthenticateAccount(e){return i(this,void 0,void 0,(function*(){yield this.setAccessToken(null,{userId:e}),yield this.setLastActive(null,{userId:e}),this.state.authenticatedAccounts=this.state.authenticatedAccounts.filter((t=>t!==e)),yield this.storageService.save(u,this.state.authenticatedAccounts)}))}removeAccountFromDisk(e){return i(this,void 0,void 0,(function*(){yield this.removeAccountFromSessionStorage(e),yield this.removeAccountFromLocalStorage(e),yield this.removeAccountFromSecureStorage(e)}))}dynamicallySetActiveUser(){return i(this,void 0,void 0,(function*(){if(null==this.state.accounts||Object.keys(this.state.accounts).length<1)yield this.setActiveUser(null);else for(const e in this.state.accounts)if(null!=e){if(yield this.getIsAuthenticated({userId:e})){yield this.setActiveUser(e);break}yield this.setActiveUser(null)}}))}getTimeoutBasedStorageOptions(e){return i(this,void 0,void 0,(function*(){const t=yield this.getVaultTimeoutAction({userId:null==e?void 0:e.userId}),n=yield this.getVaultTimeout({userId:null==e?void 0:e.userId}),i="logOut"===t&&null!=n?this.defaultInMemoryOptions:yield this.defaultOnDiskOptions();return this.reconcileOptions(e,i)}))}saveSecureStorageKey(e,t,n){return i(this,void 0,void 0,(function*(){return null==t?yield this.secureStorageService.remove(`${n.userId}${e}`,n):yield this.secureStorageService.save(`${n.userId}${e}`,t,n)}))}}},8357:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;const r=n(46632),o=n(40898),a=n(7790),s={accessToken:"accessToken",alwaysShowDock:"alwaysShowDock",autoConfirmFingerprints:"autoConfirmFingerprints",autoFillOnPageLoadDefault:"autoFillOnPageLoadDefault",biometricAwaitingAcceptance:"biometricAwaitingAcceptance",biometricFingerprintValidated:"biometricFingerprintValidated",biometricText:"biometricText",biometricUnlock:"biometric",clearClipboard:"clearClipboardKey",clientId:"apikey_clientId",clientSecret:"apikey_clientSecret",collapsedGroupings:"collapsedGroupings",convertAccountToKeyConnector:"convertAccountToKeyConnector",defaultUriMatch:"defaultUriMatch",disableAddLoginNotification:"disableAddLoginNotification",disableAutoBiometricsPrompt:"noAutoPromptBiometrics",disableAutoTotpCopy:"disableAutoTotpCopy",disableBadgeCounter:"disableBadgeCounter",disableChangedPasswordNotification:"disableChangedPasswordNotification",disableContextMenuItem:"disableContextMenuItem",disableFavicon:"disableFavicon",disableGa:"disableGa",dontShowCardsCurrentTab:"dontShowCardsCurrentTab",dontShowIdentitiesCurrentTab:"dontShowIdentitiesCurrentTab",emailVerified:"emailVerified",enableAlwaysOnTop:"enableAlwaysOnTopKey",enableAutoFillOnPageLoad:"enableAutoFillOnPageLoad",enableBiometric:"enabledBiometric",enableBrowserIntegration:"enableBrowserIntegration",enableBrowserIntegrationFingerprint:"enableBrowserIntegrationFingerprint",enableCloseToTray:"enableCloseToTray",enableFullWidth:"enableFullWidth",enableGravatars:"enableGravatars",enableMinimizeToTray:"enableMinimizeToTray",enableStartToTray:"enableStartToTrayKey",enableTray:"enableTray",encKey:"encKey",encOrgKeys:"encOrgKeys",encPrivate:"encPrivateKey",encProviderKeys:"encProviderKeys",entityId:"entityId",entityType:"entityType",environmentUrls:"environmentUrls",equivalentDomains:"equivalentDomains",eventCollection:"eventCollection",forcePasswordReset:"forcePasswordReset",history:"generatedPasswordHistory",installedVersion:"installedVersion",kdf:"kdf",kdfIterations:"kdfIterations",key:"key",keyHash:"keyHash",lastActive:"lastActive",localData:"sitesLocalData",locale:"locale",mainWindowSize:"mainWindowSize",minimizeOnCopyToClipboard:"minimizeOnCopyToClipboardKey",neverDomains:"neverDomains",noAutoPromptBiometricsText:"noAutoPromptBiometricsText",openAtLogin:"openAtLogin",passwordGenerationOptions:"passwordGenerationOptions",pinProtected:"pinProtectedKey",protectedPin:"protectedPin",refreshToken:"refreshToken",ssoCodeVerifier:"ssoCodeVerifier",ssoIdentifier:"ssoOrgIdentifier",ssoState:"ssoState",stamp:"securityStamp",theme:"theme",userEmail:"userEmail",userId:"userId",usesConnector:"usesKeyConnector",vaultTimeoutAction:"vaultTimeoutAction",vaultTimeout:"lockOption",rememberedEmail:"rememberedEmail"},l={ciphers:"ciphers_",collections:"collections_",folders:"folders_",lastSync:"lastSync_",policies:"policies_",twoFactorToken:"twoFactorToken_",organizations:"organizations_",providers:"providers_",sends:"sends_",settings:"settings_"},c="global",d="authenticatedAccounts",p="activeUserId",u="tempAccountSettings",m="accountActivity",h="_masterkey_auto",v="_masterkey_biometric",f="_masterkey";t.StateMigrationService=class{constructor(e,t,n){this.storageService=e,this.secureStorageService=t,this.stateFactory=n}needsMigration(){return i(this,void 0,void 0,(function*(){const e=yield this.getCurrentStateVersion();return null==e||ei(this,void 0,void 0,(function*(){for(const e in s)null!=e&&(yield this.set(s[e],null));if(null!=e)for(const e in l)null!=e&&(yield this.set(l[e]+le,null))})),se=null!==(e=yield this.get(c))&&void 0!==e?e:this.stateFactory.createGlobal(null);se.stateVersion=o.StateVersion.Two,se.environmentUrls=null!==(t=yield this.get(s.environmentUrls))&&void 0!==t?t:se.environmentUrls,se.locale=null!==(n=yield this.get(s.locale))&&void 0!==n?n:se.locale,se.noAutoPromptBiometrics=null!==(r=yield this.get(s.disableAutoBiometricsPrompt))&&void 0!==r?r:se.noAutoPromptBiometrics,se.noAutoPromptBiometricsText=null!==(a=yield this.get(s.noAutoPromptBiometricsText))&&void 0!==a?a:se.noAutoPromptBiometricsText,se.ssoCodeVerifier=null!==(g=yield this.get(s.ssoCodeVerifier))&&void 0!==g?g:se.ssoCodeVerifier,se.ssoOrganizationIdentifier=null!==(y=yield this.get(s.ssoIdentifier))&&void 0!==y?y:se.ssoOrganizationIdentifier,se.ssoState=null!==(x=yield this.get(s.ssoState))&&void 0!==x?x:se.ssoState,se.rememberedEmail=null!==(S=yield this.get(s.rememberedEmail))&&void 0!==S?S:se.rememberedEmail,se.theme=null!==(b=yield this.get(s.theme))&&void 0!==b?b:se.theme,se.vaultTimeout=null!==(w=yield this.get(s.vaultTimeout))&&void 0!==w?w:se.vaultTimeout,se.vaultTimeoutAction=null!==(C=yield this.get(s.vaultTimeoutAction))&&void 0!==C?C:se.vaultTimeoutAction,se.window=null!==(I=yield this.get(s.mainWindowSize))&&void 0!==I?I:se.window,se.enableTray=null!==(E=yield this.get(s.enableTray))&&void 0!==E?E:se.enableTray,se.enableMinimizeToTray=null!==(P=yield this.get(s.enableMinimizeToTray))&&void 0!==P?P:se.enableMinimizeToTray,se.enableCloseToTray=null!==(O=yield this.get(s.enableCloseToTray))&&void 0!==O?O:se.enableCloseToTray,se.enableStartToTray=null!==(k=yield this.get(s.enableStartToTray))&&void 0!==k?k:se.enableStartToTray,se.openAtLogin=null!==(A=yield this.get(s.openAtLogin))&&void 0!==A?A:se.openAtLogin,se.alwaysShowDock=null!==(T=yield this.get(s.alwaysShowDock))&&void 0!==T?T:se.alwaysShowDock,se.enableBrowserIntegration=null!==(M=yield this.get(s.enableBrowserIntegration))&&void 0!==M?M:se.enableBrowserIntegration,se.enableBrowserIntegrationFingerprint=null!==(B=yield this.get(s.enableBrowserIntegrationFingerprint))&&void 0!==B?B:se.enableBrowserIntegrationFingerprint;const le=null!==(D=yield this.get(s.userId))&&void 0!==D?D:yield this.get(s.entityId),ce=this.stateFactory.createAccount(null),de={autoConfirmFingerPrints:null!==(R=yield this.get(s.autoConfirmFingerprints))&&void 0!==R?R:ce.settings.autoConfirmFingerPrints,autoFillOnPageLoadDefault:null!==(F=yield this.get(s.autoFillOnPageLoadDefault))&&void 0!==F?F:ce.settings.autoFillOnPageLoadDefault,biometricLocked:null,biometricUnlock:null!==(U=yield this.get(s.biometricUnlock))&&void 0!==U?U:ce.settings.biometricUnlock,clearClipboard:null!==(V=yield this.get(s.clearClipboard))&&void 0!==V?V:ce.settings.clearClipboard,defaultUriMatch:null!==(N=yield this.get(s.defaultUriMatch))&&void 0!==N?N:ce.settings.defaultUriMatch,disableAddLoginNotification:null!==(_=yield this.get(s.disableAddLoginNotification))&&void 0!==_?_:ce.settings.disableAddLoginNotification,disableAutoBiometricsPrompt:null!==(j=yield this.get(s.disableAutoBiometricsPrompt))&&void 0!==j?j:ce.settings.disableAutoBiometricsPrompt,disableAutoTotpCopy:null!==(z=yield this.get(s.disableAutoTotpCopy))&&void 0!==z?z:ce.settings.disableAutoTotpCopy,disableBadgeCounter:null!==(H=yield this.get(s.disableBadgeCounter))&&void 0!==H?H:ce.settings.disableBadgeCounter,disableChangedPasswordNotification:null!==(L=yield this.get(s.disableChangedPasswordNotification))&&void 0!==L?L:ce.settings.disableChangedPasswordNotification,disableContextMenuItem:null!==(K=yield this.get(s.disableContextMenuItem))&&void 0!==K?K:ce.settings.disableContextMenuItem,disableGa:null!==(q=yield this.get(s.disableGa))&&void 0!==q?q:ce.settings.disableGa,dontShowCardsCurrentTab:null!==(G=yield this.get(s.dontShowCardsCurrentTab))&&void 0!==G?G:ce.settings.dontShowCardsCurrentTab,dontShowIdentitiesCurrentTab:null!==(W=yield this.get(s.dontShowIdentitiesCurrentTab))&&void 0!==W?W:ce.settings.dontShowIdentitiesCurrentTab,enableAlwaysOnTop:null!==($=yield this.get(s.enableAlwaysOnTop))&&void 0!==$?$:ce.settings.enableAlwaysOnTop,enableAutoFillOnPageLoad:null!==(Y=yield this.get(s.enableAutoFillOnPageLoad))&&void 0!==Y?Y:ce.settings.enableAutoFillOnPageLoad,enableBiometric:null!==(Q=yield this.get(s.enableBiometric))&&void 0!==Q?Q:ce.settings.enableBiometric,enableFullWidth:null!==(J=yield this.get(s.enableFullWidth))&&void 0!==J?J:ce.settings.enableFullWidth,enableGravitars:null!==(Z=yield this.get(s.enableGravatars))&&void 0!==Z?Z:ce.settings.enableGravitars,environmentUrls:null!==(X=se.environmentUrls)&&void 0!==X?X:ce.settings.environmentUrls,equivalentDomains:null!==(ee=yield this.get(s.equivalentDomains))&&void 0!==ee?ee:ce.settings.equivalentDomains,minimizeOnCopyToClipboard:null!==(te=yield this.get(s.minimizeOnCopyToClipboard))&&void 0!==te?te:ce.settings.minimizeOnCopyToClipboard,neverDomains:null!==(ne=yield this.get(s.neverDomains))&&void 0!==ne?ne:ce.settings.neverDomains,passwordGenerationOptions:null!==(ie=yield this.get(s.passwordGenerationOptions))&&void 0!==ie?ie:ce.settings.passwordGenerationOptions,pinProtected:{decrypted:null,encrypted:yield this.get(s.pinProtected)},protectedPin:yield this.get(s.protectedPin),settings:null==le?null:yield this.get(l.settings+le),vaultTimeout:null!==(re=yield this.get(s.vaultTimeout))&&void 0!==re?re:ce.settings.vaultTimeout,vaultTimeoutAction:null!==(oe=yield this.get(s.vaultTimeoutAction))&&void 0!==oe?oe:ce.settings.vaultTimeoutAction};if(null==le)return yield this.set(u,de),yield this.set(c,se),yield this.set(d,[]),yield this.set(p,null),void(yield ae());se.twoFactorToken=yield this.get(l.twoFactorToken+le),yield this.set(c,se),yield this.set(le,{data:{addEditCipherInfo:null,ciphers:{decrypted:null,encrypted:yield this.get(l.ciphers+le)},collapsedGroupings:null,collections:{decrypted:null,encrypted:yield this.get(l.collections+le)},eventCollection:yield this.get(s.eventCollection),folders:{decrypted:null,encrypted:yield this.get(l.folders+le)},localData:null,organizations:yield this.get(l.organizations+le),passwordGenerationHistory:{decrypted:null,encrypted:yield this.get(s.history)},policies:{decrypted:null,encrypted:yield this.get(l.policies+le)},providers:yield this.get(l.providers+le),sends:{decrypted:null,encrypted:yield this.get(l.sends+le)}},keys:{apiKeyClientSecret:yield this.get(s.clientSecret),cryptoMasterKey:null,cryptoMasterKeyAuto:null,cryptoMasterKeyB64:null,cryptoMasterKeyBiometric:null,cryptoSymmetricKey:{encrypted:yield this.get(s.encKey),decrypted:null},legacyEtmKey:null,organizationKeys:{decrypted:null,encrypted:yield this.get(s.encOrgKeys)},privateKey:{decrypted:null,encrypted:yield this.get(s.encPrivate)},providerKeys:{decrypted:null,encrypted:yield this.get(s.encProviderKeys)},publicKey:null},profile:{apiKeyClientId:yield this.get(s.clientId),authenticationStatus:null,convertAccountToKeyConnector:yield this.get(s.convertAccountToKeyConnector),email:yield this.get(s.userEmail),emailVerified:yield this.get(s.emailVerified),entityId:null,entityType:null,everBeenUnlocked:null,forcePasswordReset:null,hasPremiumPersonally:null,kdfIterations:yield this.get(s.kdfIterations),kdfType:yield this.get(s.kdf),keyHash:yield this.get(s.keyHash),lastSync:null,userId:le,usesKeyConnector:null},settings:de,tokens:{accessToken:yield this.get(s.accessToken),decodedToken:null,refreshToken:yield this.get(s.refreshToken),securityStamp:null}}),yield this.set(d,[le]),yield this.set(p,le);const pe={[le]:yield this.get(s.lastActive)};pe[le]=yield this.get(s.lastActive),yield this.set(m,pe),yield ae(le),(yield this.secureStorageService.has(s.key,{keySuffix:"biometric"}))&&(yield this.secureStorageService.save(`${le}${v}`,yield this.secureStorageService.get(s.key,{keySuffix:"biometric"}),{keySuffix:"biometric"}),yield this.secureStorageService.remove(s.key,{keySuffix:"biometric"})),(yield this.secureStorageService.has(s.key,{keySuffix:"auto"}))&&(yield this.secureStorageService.save(`${le}${h}`,yield this.secureStorageService.get(s.key,{keySuffix:"auto"}),{keySuffix:"auto"}),yield this.secureStorageService.remove(s.key,{keySuffix:"auto"})),(yield this.secureStorageService.has(s.key))&&(yield this.secureStorageService.save(`${le}${f}`,yield this.secureStorageService.get(s.key)),yield this.secureStorageService.remove(s.key))}))}migrateStateFrom2To3(){return i(this,void 0,void 0,(function*(){const e=yield this.get(d);yield Promise.all(e.map((e=>i(this,void 0,void 0,(function*(){var t,n;const i=yield this.get(e);if(null===(null===(t=null==i?void 0:i.profile)||void 0===t?void 0:t.hasPremiumPersonally)&&null!=(null===(n=i.tokens)||void 0===n?void 0:n.accessToken)){const t=yield a.TokenService.decodeToken(i.tokens.accessToken);i.profile.hasPremiumPersonally=t.premium,yield this.set(e,i)}})))));const t=yield this.getGlobals();t.stateVersion=o.StateVersion.Three,yield this.set(c,t)}))}migrateStateFrom3To4(){return i(this,void 0,void 0,(function*(){const e=yield this.get(d);yield Promise.all(e.map((e=>i(this,void 0,void 0,(function*(){var t;const n=yield this.get(e);if(null!=(null===(t=null==n?void 0:n.profile)||void 0===t?void 0:t.everBeenUnlocked))return delete n.profile.everBeenUnlocked,this.set(e,n)})))));const t=yield this.getGlobals();t.stateVersion=o.StateVersion.Four,yield this.set(c,t)}))}get options(){return{htmlStorageLocation:r.HtmlStorageLocation.Local}}get(e){return this.storageService.get(e,this.options)}set(e,t){return null==t?this.storageService.remove(e,this.options):this.storageService.save(e,t,this.options)}getGlobals(){return i(this,void 0,void 0,(function*(){return yield this.get(c)}))}getCurrentStateVersion(){var e,t;return i(this,void 0,void 0,(function*(){return null!==(t=null===(e=yield this.getGlobals())||void 0===e?void 0:e.stateVersion)&&void 0!==t?t:o.StateVersion.One}))}}},86257:function(e,t,n){"use strict";var i=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,a=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(o<3?r(a):o>3?r(t,n,a):r(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a},r=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SyncService=void 0;const a=n(27605),s=n(82789),l=n(34917),c=n(12835),d=n(8681),p=n(34144),u=n(17835),m=n(10425);class h{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){this.apiService=e,this.settingsService=t,this.folderService=n,this.cipherService=i,this.cryptoService=r,this.collectionService=o,this.messagingService=a,this.policyService=s,this.sendService=l,this.logService=c,this.keyConnectorService=d,this.stateService=p,this.organizationService=u,this.providerService=m,this.logoutCallback=h,this.syncInProgress=!1}getLastSync(){return o(this,void 0,void 0,(function*(){if(null==(yield this.stateService.getUserId()))return null;const e=yield this.stateService.getLastSync();return e?new Date(e):null}))}setLastSync(e,t){return o(this,void 0,void 0,(function*(){yield this.stateService.setLastSync(e.toJSON(),{userId:t})}))}fullSync(e,t=!1){return o(this,void 0,void 0,(function*(){this.syncStarted();if(!(yield this.stateService.getIsAuthenticated()))return this.syncCompleted(!1);const n=new Date;let i=!1;try{i=yield this.needsSyncing(e)}catch(r){if(t)throw r}if(!i)return yield this.setLastSync(n),this.syncCompleted(!1);try{yield this.apiService.refreshIdentityToken();const e=yield this.apiService.getSync();return yield this.syncProfile(e.profile),yield this.syncFolders(e.folders),yield this.syncCollections(e.collections),yield this.syncCiphers(e.ciphers),yield this.syncSends(e.sends),yield this.syncSettings(e.domains),yield this.syncPolicies(e.policies),yield this.setLastSync(n),this.syncCompleted(!0)}catch(r){if(t)throw r;return this.syncCompleted(!1)}}))}syncUpsertFolder(e,t){return o(this,void 0,void 0,(function*(){if(this.syncStarted(),yield this.stateService.getIsAuthenticated())try{const n=yield this.folderService.get(e.id);if(!t&&null==n||t&&null!=n&&n.revisionDate=e.revisionDate&&(n=!1);let r=!1;if(n&&(t?(n=null!=i,r=!0):null==e.collectionIds||null==e.organizationId?n=null==i:(n=!1,r=!0)),!n&&r&&null!=e.organizationId&&null!=e.collectionIds&&e.collectionIds.length>0){const t=yield this.collectionService.getAll();if(null!=t)for(let i=0;i-1){n=!0;break}}if(n){const t=yield this.apiService.getCipher(e.id);if(null!=t)return yield this.cipherService.upsert(new s.CipherData(t)),this.messagingService.send("syncedUpsertedCipher",{cipherId:e.id}),this.syncCompleted(!0)}}catch(n){if(null!=n&&404===n.statusCode&&t)return yield this.cipherService.delete(e.id),this.messagingService.send("syncedDeletedCipher",{cipherId:e.id}),this.syncCompleted(!0)}return this.syncCompleted(!1)}))}syncDeleteCipher(e){return o(this,void 0,void 0,(function*(){return this.syncStarted(),(yield this.stateService.getIsAuthenticated())?(yield this.cipherService.delete(e.id),this.messagingService.send("syncedDeletedCipher",{cipherId:e.id}),this.syncCompleted(!0)):this.syncCompleted(!1)}))}syncUpsertSend(e,t){return o(this,void 0,void 0,(function*(){if(this.syncStarted(),yield this.stateService.getIsAuthenticated())try{const n=yield this.sendService.get(e.id);if(!t&&null==n||t&&null!=n&&n.revisionDate{n[e.id]=new d.OrganizationData(e)}));const i={};e.providers.forEach((e=>{i[e.id]=new u.ProviderData(e)})),e.providerOrganizations.forEach((e=>{null==n[e.id]&&(n[e.id]=new d.OrganizationData(e),n[e.id].isProviderUser=!0)})),yield this.organizationService.save(n),yield this.providerService.save(i),(yield this.keyConnectorService.userNeedsMigration())?(yield this.keyConnectorService.setConvertAccountRequired(!0),this.messagingService.send("convertAccountToKeyConnector")):this.keyConnectorService.removeConvertAccountRequired()}))}syncFolders(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new c.FolderData(e)})),yield this.folderService.replace(t)}))}syncCollections(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new l.CollectionData(e)})),yield this.collectionService.replace(t)}))}syncCiphers(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new s.CipherData(e)})),yield this.cipherService.replace(t)}))}syncSends(e){return o(this,void 0,void 0,(function*(){const t={};return e.forEach((e=>{t[e.id]=new m.SendData(e)})),yield this.sendService.replace(t)}))}syncSettings(e){return o(this,void 0,void 0,(function*(){let t=[];return null!=e&&null!=e.equivalentDomains&&(t=t.concat(e.equivalentDomains)),null!=e&&null!=e.globalEquivalentDomains&&e.globalEquivalentDomains.forEach((e=>{e.domains.length>0&&t.push(e.domains)})),this.settingsService.setEquivalentDomains(t)}))}syncPolicies(e){return o(this,void 0,void 0,(function*(){const t={};return null!=e&&e.forEach((e=>{t[e.id]=new p.PolicyData(e)})),yield this.policyService.replace(t)}))}}i([a.sequentialize((()=>"fullSync")),r("design:type",Function),r("design:paramtypes",[Boolean,Object]),r("design:returntype",Promise)],h.prototype,"fullSync",null),t.SyncService=h},7790:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TokenService=void 0;const r=n(82769);class o{constructor(e){this.stateService=e}static decodeToken(e){if(null==e)throw new Error("Token not provided.");const t=e.split(".");if(3!==t.length)throw new Error("JWT must have 3 parts");const n=r.Utils.fromUrlB64ToUtf8(t[1]);if(null==n)throw new Error("Cannot decode the token");return JSON.parse(n)}setTokens(e,t,n){return i(this,void 0,void 0,(function*(){yield this.setToken(e),yield this.setRefreshToken(t),null!=n&&(yield this.setClientId(n[0]),yield this.setClientSecret(n[1]))}))}setClientId(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setApiKeyClientId(e)}))}getClientId(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getApiKeyClientId()}))}setClientSecret(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setApiKeyClientSecret(e)}))}getClientSecret(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getApiKeyClientSecret()}))}setToken(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setAccessToken(e)}))}getToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getAccessToken()}))}setRefreshToken(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setRefreshToken(e)}))}getRefreshToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getRefreshToken()}))}setTwoFactorToken(e){return i(this,void 0,void 0,(function*(){return yield this.stateService.setTwoFactorToken(e.twoFactorToken)}))}getTwoFactorToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getTwoFactorToken()}))}clearTwoFactorToken(){return i(this,void 0,void 0,(function*(){return yield this.stateService.setTwoFactorToken(null)}))}clearToken(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setAccessToken(null,{userId:e}),yield this.stateService.setRefreshToken(null,{userId:e}),yield this.stateService.setApiKeyClientId(null,{userId:e}),yield this.stateService.setApiKeyClientSecret(null,{userId:e})}))}decodeToken(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getDecodedToken();if(null===e&&null!=t)return t;if(null==(e=null!=e?e:yield this.stateService.getAccessToken()))throw new Error("Token not found.");return o.decodeToken(e)}))}getTokenExpirationDate(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.exp)return null;const t=new Date(0);return t.setUTCSeconds(e.exp),t}))}tokenSecondsRemaining(e=0){return i(this,void 0,void 0,(function*(){const t=yield this.getTokenExpirationDate();if(null==t)return 0;const n=t.valueOf()-((new Date).valueOf()+1e3*e);return Math.round(n/1e3)}))}tokenNeedsRefresh(e=5){return i(this,void 0,void 0,(function*(){return(yield this.tokenSecondsRemaining())<60*e}))}getUserId(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.sub)throw new Error("No user id found");return e.sub}))}getEmail(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.email)throw new Error("No email found");return e.email}))}getEmailVerified(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.email_verified)throw new Error("No email verification found");return e.email_verified}))}getName(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return void 0===e.name?null:e.name}))}getPremium(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return void 0!==e.premium&&e.premium}))}getIssuer(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();if(void 0===e.iss)throw new Error("No issuer found");return e.iss}))}getIsExternal(){return i(this,void 0,void 0,(function*(){const e=yield this.decodeToken();return Array.isArray(e.amr)&&e.amr.includes("external")}))}}t.TokenService=o},87703:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TotpService=void 0;const r=n(82769),o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a="23456789BCDFGHJKMNPQRTVWXY";t.TotpService=class{constructor(e,t,n){this.cryptoFunctionService=e,this.logService=t,this.stateService=n}getCode(e){return i(this,void 0,void 0,(function*(){if(null==e)return null;let t=30,n="sha1",i=6,o=e;const s=0===e.toLowerCase().indexOf("otpauth://"),l=!s&&0===e.toLowerCase().indexOf("steam://");if(s){const a=r.Utils.getQueryParams(e);if(a.has("digits")&&null!=a.get("digits"))try{const e=parseInt(a.get("digits").trim(),null);e>10?i=10:e>0&&(i=e)}catch(g){this.logService.error("Invalid digits param.")}if(a.has("period")&&null!=a.get("period"))try{const e=parseInt(a.get("period").trim(),null);e>0&&(t=e)}catch(y){this.logService.error("Invalid period param.")}if(a.has("secret")&&null!=a.get("secret")&&(o=a.get("secret")),a.has("algorithm")&&null!=a.get("algorithm")){const e=a.get("algorithm").toLowerCase();"sha1"!==e&&"sha256"!==e&&"sha512"!==e||(n=e)}}else l&&(o=e.substr("steam://".length),i=5);const c=Math.round((new Date).getTime()/1e3),d=this.leftPad(this.decToHex(Math.floor(c/t)),16,"0"),p=r.Utils.fromHexToArray(d),u=this.b32ToBytes(o);if(!u.length||!p.length)return null;const m=yield this.sign(u,p,n);if(0===m.length)return null;const h=15&m[m.length-1],v=(127&m[h])<<24|(255&m[h+1])<<16|(255&m[h+2])<<8|255&m[h+3];let f="";if(l){let e=2147483647&v;for(let t=0;t=e.length&&(e=Array(t+1-e.length).join(n)+e),e}decToHex(e){return(e<15.5?"0":"")+Math.round(e).toString(16)}b32ToHex(e){e=e.toUpperCase();let t="";for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorService=t.TwoFactorProviders=void 0;const i=n(97374);t.TwoFactorProviders={[i.TwoFactorProviderType.Authenticator]:{type:i.TwoFactorProviderType.Authenticator,name:null,description:null,priority:1,sort:1,premium:!1},[i.TwoFactorProviderType.Yubikey]:{type:i.TwoFactorProviderType.Yubikey,name:null,description:null,priority:3,sort:2,premium:!0},[i.TwoFactorProviderType.Duo]:{type:i.TwoFactorProviderType.Duo,name:"Duo",description:null,priority:2,sort:3,premium:!0},[i.TwoFactorProviderType.OrganizationDuo]:{type:i.TwoFactorProviderType.OrganizationDuo,name:"Duo (Organization)",description:null,priority:10,sort:4,premium:!1},[i.TwoFactorProviderType.Email]:{type:i.TwoFactorProviderType.Email,name:null,description:null,priority:0,sort:6,premium:!1},[i.TwoFactorProviderType.WebAuthn]:{type:i.TwoFactorProviderType.WebAuthn,name:null,description:null,priority:4,sort:5,premium:!0}};t.TwoFactorService=class{constructor(e,t){this.i18nService=e,this.platformUtilsService=t,this.selectedTwoFactorProviderType=null}init(){t.TwoFactorProviders[i.TwoFactorProviderType.Email].name=this.i18nService.t("emailTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Email].description=this.i18nService.t("emailDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator].name=this.i18nService.t("authenticatorAppTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator].description=this.i18nService.t("authenticatorAppDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Duo].description=this.i18nService.t("duoDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo].name="Duo ("+this.i18nService.t("organization")+")",t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo].description=this.i18nService.t("duoOrganizationDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn].name=this.i18nService.t("webAuthnTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn].description=this.i18nService.t("webAuthnDesc"),t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey].name=this.i18nService.t("yubiKeyTitle"),t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey].description=this.i18nService.t("yubiKeyDesc")}getSupportedProviders(e){const n=[];return null==this.twoFactorProvidersData||(this.twoFactorProvidersData.has(i.TwoFactorProviderType.OrganizationDuo)&&this.platformUtilsService.supportsDuo()&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.OrganizationDuo]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Authenticator)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Authenticator]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Yubikey)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Yubikey]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Duo)&&this.platformUtilsService.supportsDuo()&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Duo]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.WebAuthn)&&this.platformUtilsService.supportsWebAuthn(e)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.WebAuthn]),this.twoFactorProvidersData.has(i.TwoFactorProviderType.Email)&&n.push(t.TwoFactorProviders[i.TwoFactorProviderType.Email])),n}getDefaultProvider(e){if(null==this.twoFactorProvidersData)return null;if(null!=this.selectedTwoFactorProviderType&&this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType))return this.selectedTwoFactorProviderType;let n=null,r=-1;return this.twoFactorProvidersData.forEach(((o,a)=>{const s=t.TwoFactorProviders[a];if(null!=s&&s.priority>r){if(a===i.TwoFactorProviderType.WebAuthn&&!e)return;n=a,r=s.priority}})),n}setSelectedProvider(e){this.selectedTwoFactorProviderType=e}clearSelectedProvider(){this.selectedTwoFactorProviderType=null}setProviders(e){this.twoFactorProvidersData=e.twoFactorProviders2}clearProviders(){this.twoFactorProvidersData=null}getProviders(){return this.twoFactorProvidersData}}},26981:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserVerificationService=void 0;const r=n(44254),o=n(12680),a=n(36119);t.UserVerificationService=class{constructor(e,t,n){this.cryptoService=e,this.i18nService=t,this.apiService=n}buildRequest(e,t,n){return i(this,void 0,void 0,(function*(){this.validateInput(e);const i=null!=t?new t:new a.SecretVerificationRequest;return e.type===r.VerificationType.OTP?i.otp=e.secret:i.masterPasswordHash=n?e.secret:yield this.cryptoService.hashPassword(e.secret,null),i}))}verifyUser(e){return i(this,void 0,void 0,(function*(){if(this.validateInput(e),e.type===r.VerificationType.OTP){const n=new o.VerifyOTPRequest(e.secret);try{yield this.apiService.postAccountVerifyOTP(n)}catch(t){throw new Error(this.i18nService.t("invalidVerificationCode"))}}else{if(!(yield this.cryptoService.compareAndUpdateKeyHash(e.secret,null)))throw new Error(this.i18nService.t("invalidMasterPassword"))}return!0}))}requestOTP(){return i(this,void 0,void 0,(function*(){yield this.apiService.postAccountRequestOTP()}))}validateInput(e){if(null==(null==e?void 0:e.secret)||""===e.secret)throw e.type===r.VerificationType.OTP?new Error(this.i18nService.t("verificationCodeRequired")):new Error(this.i18nService.t("masterPassRequired"))}}},42133:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UsernameGenerationService=void 0;const r=n(40596),o={type:"word",wordCapitalize:!0,wordIncludeNumber:!0,subaddressType:"random",catchallType:"random",forwardedService:"simplelogin",forwardedAnonAddyDomain:"anonaddy.me"};t.UsernameGenerationService=class{constructor(e,t,n){this.cryptoService=e,this.stateService=t,this.apiService=n}generateUsername(e){return"catchall"===e.type?this.generateCatchall(e):"subaddress"===e.type?this.generateSubaddress(e):"forwarded"===e.type?this.generateForwarded(e):this.generateWord(e)}generateWord(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);null==t.wordCapitalize&&(t.wordCapitalize=!0),null==t.wordIncludeNumber&&(t.wordIncludeNumber=!0);const n=yield this.cryptoService.randomNumber(0,r.EEFLongWordList.length-1);let i=r.EEFLongWordList[n];if(t.wordCapitalize&&(i=i.charAt(0).toUpperCase()+i.slice(1)),t.wordIncludeNumber){const e=yield this.cryptoService.randomNumber(1,9999);i+=this.zeroPad(e.toString(),4)}return i}))}generateSubaddress(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e),n=t.subaddressEmail;if(null==n||n.length<3)return t.subaddressEmail;const i=n.indexOf("@");if(i<1||i>=n.length-1)return n;null==t.subaddressType&&(t.subaddressType="random");const r=n.substr(0,i),a=n.substr(i+1,n.length);let s="";return"random"===t.subaddressType?s=yield this.randomString(8):"website-name"===t.subaddressType&&(s=t.website),r+"+"+s+"@"+a}))}generateCatchall(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);if(null==t.catchallDomain||""===t.catchallDomain)return null;null==t.catchallType&&(t.catchallType="random");let n="";return"random"===t.catchallType?n=yield this.randomString(8):"website-name"===t.catchallType&&(n=t.website),n+"@"+t.catchallDomain}))}generateForwarded(e){return i(this,void 0,void 0,(function*(){const t=Object.assign({},o,e);return null==t.forwardedService?null:"simplelogin"===t.forwardedService?null==t.forwardedSimpleLoginApiKey||""===t.forwardedSimpleLoginApiKey?null:this.generateSimpleLoginAlias(t.forwardedSimpleLoginApiKey,t.website):"anonaddy"===t.forwardedService?null==t.forwardedAnonAddyApiToken||""===t.forwardedAnonAddyApiToken||null==t.forwardedAnonAddyDomain||""==t.forwardedAnonAddyDomain?null:this.generateAnonAddyAlias(t.forwardedAnonAddyApiToken,t.forwardedAnonAddyDomain,t.website):"firefoxrelay"===t.forwardedService?null==t.forwardedFirefoxApiToken||""===t.forwardedFirefoxApiToken?null:this.generateFirefoxRelayAlias(t.forwardedFirefoxApiToken,t.website):null}))}getOptions(){return i(this,void 0,void 0,(function*(){let e=yield this.stateService.getUsernameGenerationOptions();return e=null==e?Object.assign({},o):Object.assign({},o,e),yield this.stateService.setUsernameGenerationOptions(e),e}))}saveOptions(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setUsernameGenerationOptions(e)}))}randomString(e){return i(this,void 0,void 0,(function*(){let t="";const n="abcdefghijklmnopqrstuvwxyz1234567890";for(let i=0;i=t?e:new Array(t-e.length+1).join("0")+e}generateSimpleLoginAlias(e,t){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid SimpleLogin API key.";const n={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authentication:e,"Content-Type":"application/json"})};let i="https://app.simplelogin.io/api/alias/random/new";null!=t&&(i+="?hostname="+t),n.body=JSON.stringify({note:(null!=t?"Website: "+t+". ":"")+"Generated by Bitwarden."});const r=new Request(i,n),o=yield this.apiService.nativeFetch(r);if(200===o.status||201===o.status){return(yield o.json()).alias}if(401===o.status)throw"Invalid SimpleLogin API key.";try{const e=yield o.json();if(null!=(null==e?void 0:e.error))throw"SimpleLogin error:"+e.error}catch(a){}throw"Unknown SimpleLogin error occurred."}))}generateAnonAddyAlias(e,t,n){var r;return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid AnonAddy API token.";const i={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authorization:"Bearer "+e,"Content-Type":"application/json"})};i.body=JSON.stringify({domain:t,description:(null!=n?"Website: "+n+". ":"")+"Generated by Bitwarden."});const o=new Request("https://app.anonaddy.com/api/v1/aliases",i),a=yield this.apiService.nativeFetch(o);if(200===a.status||201===a.status){const e=yield a.json();return null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.email}if(401===a.status)throw"Invalid AnonAddy API token.";throw"Unknown AnonAddy error occurred."}))}generateFirefoxRelayAlias(e,t){return i(this,void 0,void 0,(function*(){if(null==e||""===e)throw"Invalid Firefox Relay API token.";const n={redirect:"manual",cache:"no-store",method:"POST",headers:new Headers({Authorization:"Token "+e,"Content-Type":"application/json"})};n.body=JSON.stringify({enabled:!0,generated_for:t,description:(null!=t?t+" - ":"")+"Generated by Bitwarden."});const i=new Request("https://relay.firefox.com/api/v1/relayaddresses/",n),r=yield this.apiService.nativeFetch(i);if(200===r.status||201===r.status){const e=yield r.json();return null==e?void 0:e.full_address}if(401===r.status)throw"Invalid Firefox Relay API token.";throw"Unknown Firefox Relay error occurred."}))}}},44988:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutService=void 0;const r=n(72440),o=n(49906);t.VaultTimeoutService=class{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u=null,m=null){this.cipherService=e,this.folderService=t,this.collectionService=n,this.cryptoService=i,this.platformUtilsService=r,this.messagingService=o,this.searchService=a,this.tokenService=s,this.policyService=l,this.keyConnectorService=c,this.stateService=d,this.authService=p,this.lockedCallback=u,this.loggedOutCallback=m,this.inited=!1}init(e){this.inited||(this.inited=!0,e&&this.startCheck())}startCheck(){this.checkVaultTimeout(),setInterval((()=>this.checkVaultTimeout()),1e4)}checkVaultTimeout(){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.isViewOpen()))for(const e in this.stateService.accounts.getValue())null!=e&&(yield this.shouldLock(e))&&(yield this.executeTimeoutAction(e))}))}lock(e=!1,t){return i(this,void 0,void 0,(function*(){if(yield this.stateService.getIsAuthenticated({userId:t})){if(yield this.keyConnectorService.getUsesKeyConnector()){const e=yield this.isPinLockSet();e[0]&&null!=(yield this.stateService.getDecryptedPinProtected())||e[1]||(yield this.isBiometricLockSet())||(yield this.logOut(t))}null!=t&&t!==(yield this.stateService.getUserId())||this.searchService.clearIndex(),yield this.stateService.setEverBeenUnlocked(!0,{userId:t}),yield this.stateService.setBiometricLocked(!0,{userId:t}),yield this.stateService.setCryptoMasterKeyAuto(null,{userId:t}),yield this.cryptoService.clearKey(!1,t),yield this.cryptoService.clearOrgKeys(!0,t),yield this.cryptoService.clearKeyPair(!0,t),yield this.cryptoService.clearEncKey(!0,t),yield this.folderService.clearCache(t),yield this.cipherService.clearCache(t),yield this.collectionService.clearCache(t),this.messagingService.send("locked",{userId:t}),null!=this.lockedCallback&&(yield this.lockedCallback(t))}}))}logOut(e){return i(this,void 0,void 0,(function*(){null!=this.loggedOutCallback&&(yield this.loggedOutCallback(!1,e))}))}setVaultTimeoutOptions(e,t){return i(this,void 0,void 0,(function*(){yield this.stateService.setVaultTimeout(e);const n=yield this.tokenService.getToken(),i=yield this.tokenService.getRefreshToken(),r=yield this.tokenService.getClientId(),o=yield this.tokenService.getClientSecret(),a=yield this.stateService.getVaultTimeoutAction();null==e&&0!==e||"logOut"!==t||t===a||(yield this.tokenService.clearToken()),yield this.stateService.setVaultTimeoutAction(t),yield this.tokenService.setToken(n),yield this.tokenService.setRefreshToken(i),yield this.tokenService.setClientId(r),yield this.tokenService.setClientSecret(o),yield this.cryptoService.toggleKey()}))}isPinLockSet(){return i(this,void 0,void 0,(function*(){return[null!=(yield this.stateService.getProtectedPin()),null!=(yield this.stateService.getEncryptedPinProtected())]}))}isBiometricLockSet(){return i(this,void 0,void 0,(function*(){return yield this.stateService.getBiometricUnlock()}))}getVaultTimeout(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getVaultTimeout({userId:e});if(yield this.policyService.policyAppliesToUser(o.PolicyType.MaximumVaultTimeout,null,e)){const n=yield this.policyService.getAll(o.PolicyType.MaximumVaultTimeout,e);let i=Math.min(t,n[0].data.minutes);return(null==t||i<0)&&(i=n[0].data.minutes),t!==i&&(yield this.stateService.setVaultTimeout(i,{userId:e})),i}return t}))}clear(e){return i(this,void 0,void 0,(function*(){yield this.stateService.setEverBeenUnlocked(!1,{userId:e}),yield this.stateService.setDecryptedPinProtected(null,{userId:e}),yield this.stateService.setProtectedPin(null,{userId:e})}))}shouldLock(e){return i(this,void 0,void 0,(function*(){const t=yield this.authService.getAuthStatus(e);if(t===r.AuthenticationStatus.Locked||t===r.AuthenticationStatus.LoggedOut)return!1;const n=yield this.getVaultTimeout(e);if(null==n||n<0)return!1;const i=yield this.stateService.getLastActive({userId:e});if(null==i)return!1;const o=60*n;return((new Date).getTime()-i)/1e3>=o}))}executeTimeoutAction(e){return i(this,void 0,void 0,(function*(){"logOut"===(yield this.stateService.getVaultTimeoutAction({userId:e}))?yield this.logOut(e):yield this.lock(!0,e)}))}}},75408:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebCryptoFunctionService=void 0;const r=n(22079),o=n(82769),a=n(15755);t.WebCryptoFunctionService=class{constructor(e){this.crypto=void 0!==e.crypto?e.crypto:null,this.subtle=this.crypto&&void 0!==e.crypto.subtle?e.crypto.subtle:null}pbkdf2(e,t,n,r){return i(this,void 0,void 0,(function*(){const i="sha256"===n?256:512,o=this.toBuf(e),a={name:"PBKDF2",salt:this.toBuf(t),iterations:r,hash:{name:this.toWebCryptoAlgorithm(n)}},s=yield this.subtle.importKey("raw",o,{name:"PBKDF2"},!1,["deriveBits"]);return yield this.subtle.deriveBits(a,s,i)}))}hkdf(e,t,n,r,o){return i(this,void 0,void 0,(function*(){const i={name:"HKDF",salt:this.toBuf(t),info:this.toBuf(n),hash:{name:this.toWebCryptoAlgorithm(o)}},a=yield this.subtle.importKey("raw",e,{name:"HKDF"},!1,["deriveBits"]);return yield this.subtle.deriveBits(i,a,8*r)}))}hkdfExpand(e,t,n,r){return i(this,void 0,void 0,(function*(){const i="sha256"===r?32:64;if(n>255*i)throw new Error("outputByteSize is too large.");if(new Uint8Array(e).length=n)break}return d.slice(0,n).buffer}))}hash(e,t){return i(this,void 0,void 0,(function*(){if("md5"===t){const n="md5"===t?r.md.md5.create():r.md.sha1.create(),i=this.toByteString(e);return n.update(i,"raw"),o.Utils.fromByteStringToArray(n.digest().data).buffer}const n=this.toBuf(e);return yield this.subtle.digest({name:this.toWebCryptoAlgorithm(t)},n)}))}hmac(e,t,n){return i(this,void 0,void 0,(function*(){const i={name:"HMAC",hash:{name:this.toWebCryptoAlgorithm(n)}},r=yield this.subtle.importKey("raw",t,i,!1,["sign"]);return yield this.subtle.sign(i,r,e)}))}compare(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.randomBytes(32),i={name:"HMAC",hash:{name:"SHA-256"}},r=yield this.subtle.importKey("raw",n,i,!1,["sign"]),o=yield this.subtle.sign(i,r,e),a=yield this.subtle.sign(i,r,t);if(o.byteLength!==a.byteLength)return!1;const s=new Uint8Array(o),l=new Uint8Array(a);for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BadgeComponent=void 0;n(32621);const i=n(32621),r={primary:["tw-bg-primary-500"],secondary:["tw-bg-text-muted"],success:["tw-bg-success-500"],danger:["tw-bg-danger-500"],warning:["tw-bg-warning-500"],info:["tw-bg-info-500"]},o={primary:["hover:tw-bg-primary-700"],secondary:["hover:tw-bg-secondary-700"],success:["hover:tw-bg-success-700"],danger:["hover:tw-bg-danger-700"],warning:["hover:tw-bg-warning-700"],info:["hover:tw-bg-info-700"]};class a{constructor(e){var t;this.el=e,this.classList="",this.badgeType="primary",this.isSpan=!1,this.isSpan="SPAN"==(null===(t=null==e?void 0:e.nativeElement)||void 0===t?void 0:t.nodeName)}ngOnInit(){this.classList=this.classes.join(" ")}ngOnChanges(){this.ngOnInit()}get classes(){return["tw-inline-block","tw-py-1","tw-px-1.5","tw-font-bold","tw-leading-none","tw-text-center","!tw-text-contrast","tw-rounded","tw-border-none","tw-box-border","tw-whitespace-no-wrap","tw-text-xs","hover:tw-no-underline","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700"].concat(r[this.badgeType]).concat(this.isSpan?[]:o[this.badgeType])}}t.BadgeComponent=a,a.ɵfac=function(e){return new(e||a)(i.ɵɵdirectiveInject(i.ElementRef))},a.ɵdir=i.ɵɵdefineDirective({type:a,selectors:[["span","bit-badge",""],["a","bit-badge",""],["button","bit-badge",""]],hostVars:2,hostBindings:function(e,t){2&e&&i.ɵɵclassMap(t.classList)},inputs:{classList:["class","classList"],badgeType:"badgeType"},features:[i.ɵɵNgOnChangesFeature]})},41889:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BadgeModule=void 0;const i=n(57490),r=n(32621);class o{}t.BadgeModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},97407:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(25108),t),r(n(41889),t)},82768:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BannerComponent=void 0;const i=n(32621),r=n(32621),o=n(57490);function a(e,t){if(1&e&&r.ɵɵelement(0,"i",5),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("ngClass",e.icon)}}function s(e,t){1&e&&r.ɵɵelement(0,"i",6)}const l={premium:"bwi-star",info:"bwi-info-circle",warning:"bwi-exclamation-triangle",danger:"bwi-error"};class c{constructor(){this.bannerType="info",this.useAlertRole=!0,this.onClose=new i.EventEmitter}ngOnInit(){var e;null!==(e=this.icon)&&void 0!==e||(this.icon=l[this.bannerType])}get bannerClass(){switch(this.bannerType){case"danger":return"tw-bg-danger-500";case"info":return"tw-bg-info-500";case"premium":return"tw-bg-success-500";case"warning":return"tw-bg-warning-500"}}}t.BannerComponent=c,c.ɵfac=function(e){return new(e||c)},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["bit-banner"]],inputs:{bannerType:"bannerType",icon:"icon",useAlertRole:"useAlertRole"},outputs:{onClose:"onClose"},ngContentSelectors:["*"],decls:15,vars:5,consts:[[1,"tw-py-2.5","tw-px-4","tw-text-contrast","tw-flex","tw-gap-2","tw-items-center",3,"ngClass"],["class","bwi tw-align-middle","aria-hidden","true",3,"ngClass",4,"ngIf"],[1,"tw-text-base","tw-grow"],[1,"tw-border-0","tw-bg-transparent","tw-text-contrast","tw-p-0",3,"click"],["class","bwi bwi-close tw-text-sm","aria-hidden","true",4,"ngIf"],["aria-hidden","true",1,"bwi","tw-align-middle",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-close","tw-text-sm"]],template:function(e,t){1&e&&(r.ɵɵprojectionDef(),r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,a,1,1,"i",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",2),r.ɵɵtext(5,"\n "),r.ɵɵprojection(6),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"button",3),r.ɵɵlistener("click",(function(){return t.onClose.emit()})),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,s,1,0,"i",4),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵproperty("ngClass",t.bannerClass),r.ɵɵattribute("role",t.useAlertRole?"status":null)("aria-live",t.useAlertRole?"polite":null),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.icon),r.ɵɵadvance(9),r.ɵɵproperty("ngIf",t.icon))},directives:[o.NgClass,o.NgIf],encapsulation:2})},84352:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BannerModule=void 0;const i=n(57490),r=n(32621);class o{}t.BannerModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},63229:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(82768),t),r(n(84352),t)},52767:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonComponent=void 0;const i=n(32621),r={primary:["tw-border-primary-500","tw-bg-primary-500","!tw-text-contrast","hover:tw-bg-primary-700","hover:tw-border-primary-700","focus:tw-bg-primary-700","focus:tw-border-primary-700"].join(" "),secondary:["tw-bg-transparent","tw-border-text-muted","!tw-text-muted","hover:tw-bg-secondary-500","hover:tw-border-secondary-500","hover:!tw-text-contrast","focus:tw-bg-secondary-500","focus:tw-border-secondary-500","focus:!tw-text-contrast"].join(" "),danger:["tw-bg-transparent","tw-border-danger-500","!tw-text-danger","hover:tw-bg-danger-500","hover:tw-border-danger-500","hover:!tw-text-contrast","focus:tw-bg-danger-500","focus:tw-border-danger-500","focus:!tw-text-contrast"].join(" ")};class o{constructor(){this.classList="",this.buttonType="secondary",this.block=!1}ngOnInit(){this.classList=this.classes.join(" ")}ngOnChanges(){this.ngOnInit()}get classes(){var e;return["tw-font-semibold","tw-py-1.5","tw-px-3","tw-rounded","tw-transition","tw-border","tw-border-solid","tw-text-center","hover:tw-no-underline","disabled:tw-bg-secondary-100","disabled:tw-border-secondary-100","disabled:!tw-text-main","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700",this.block?"tw-w-full tw-block":"tw-inline-block",r[null!==(e=this.buttonType)&&void 0!==e?e:"secondary"]]}}t.ButtonComponent=o,o.ɵfac=function(e){return new(e||o)},o.ɵdir=i.ɵɵdefineDirective({type:o,selectors:[["button","bit-button",""],["a","bit-button",""]],hostVars:2,hostBindings:function(e,t){2&e&&i.ɵɵclassMap(t.classList)},inputs:{classList:"classList",buttonType:"buttonType",block:"block"},features:[i.ɵɵNgOnChangesFeature]})},10549:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ButtonModule=void 0;const i=n(57490),r=n(32621);class o{}t.ButtonModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},47236:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(52767),t),r(n(10549),t)},20138:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutComponent=void 0;n(51554);const i=n(32621),r=n(51554),o=n(57490);function a(e,t){if(1&e&&i.ɵɵelement(0,"i",4),2&e){const e=i.ɵɵnextContext(2);i.ɵɵclassMapInterpolate1("bwi ",e.icon,"")}}function s(e,t){if(1&e&&(i.ɵɵelementStart(0,"h3",2),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,a,1,3,"i",3),i.ɵɵtext(3),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵproperty("ngClass",e.headerClass),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",e.icon),i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.title,"\n ")}}const l={success:"bwi-check",info:"bwi-info-circle",warning:"bwi-exclamation-triangle",danger:"bwi-error"},c={warning:"warning",danger:"error"};class d{constructor(e){this.i18nService=e,this.type="info",this.useAlertRole=!1}ngOnInit(){var e;null!==(e=this.icon)&&void 0!==e||(this.icon=l[this.type]),null==this.title&&null!=c[this.type]&&(this.title=this.i18nService.t(c[this.type]))}get calloutClass(){switch(this.type){case"danger":return"tw-border-l-danger-500";case"info":return"tw-border-l-info-500";case"success":return"tw-border-l-success-500";case"warning":return"tw-border-l-warning-500"}}get headerClass(){switch(this.type){case"danger":return"!tw-text-danger";case"info":return"!tw-text-info";case"success":return"!tw-text-success";case"warning":return"!tw-text-warning"}}}t.CalloutComponent=d,d.ɵfac=function(e){return new(e||d)(i.ɵɵdirectiveInject(r.I18nService))},d.ɵcmp=i.ɵɵdefineComponent({type:d,selectors:[["bit-callout"]],inputs:{type:"type",icon:"icon",title:"title",useAlertRole:"useAlertRole"},ngContentSelectors:["*"],decls:7,vars:2,consts:[[1,"tw-py-3","tw-px-5","tw-mb-4","tw-leading-5","tw-rounded","tw-bg-background-alt","tw-border","tw-border-secondary-300","tw-border-solid","tw-box-border","tw-border-l-8","tw-text-main",3,"ngClass"],["class","tw-mt-0 tw-mb-2 tw-text-base tw-font-bold tw-uppercase",3,"ngClass",4,"ngIf"],[1,"tw-mt-0","tw-mb-2","tw-text-base","tw-font-bold","tw-uppercase",3,"ngClass"],["aria-hidden","true",3,"class",4,"ngIf"],["aria-hidden","true"]],template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵtemplate(2,s,4,3,"h3",1),i.ɵɵtext(3,"\n "),i.ɵɵprojection(4),i.ɵɵtext(5,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(6,"\n")),2&e&&(i.ɵɵproperty("ngClass",t.calloutClass),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.title))},directives:[o.NgClass,o.NgIf],encapsulation:2})},3509:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CalloutModule=void 0;const i=n(57490),r=n(32621);class o{}t.CalloutModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.CommonModule]]})},69297:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(3509),t),r(n(20138),t)},30202:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(97407),t),r(n(63229),t),r(n(47236),t),r(n(69297),t),r(n(79762),t)},79762:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(59912),t),r(n(44653),t),r(n(6373),t),r(n(62985),t),r(n(37342),t)},37342:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuDividerComponent=void 0;const i=n(32621);class r{}t.MenuDividerComponent=r,r.ɵfac=function(e){return new(e||r)},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["bit-menu-divider"]],decls:2,vars:0,consts:[["role","separator",1,"tw-border-solid","tw-border-0","tw-border-t","tw-border-t-secondary-500","tw-my-2"]],template:function(e,t){1&e&&(i.ɵɵelement(0,"div",0),i.ɵɵtext(1,"\n"))},encapsulation:2})},62985:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuItemComponent=void 0;n(32621);const i=n(32621);class r{constructor(e){this.elementRef=e,this.classList=["tw-block","tw-py-1","tw-px-4","!tw-text-main","!tw-no-underline","tw-cursor-pointer","tw-border-none","tw-bg-background","tw-text-left","hover:tw-bg-secondary-100","focus:tw-bg-secondary-100","focus:tw-z-50","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700","active:!tw-ring-0","active:!tw-ring-offset-0"].join(" "),this.role="menuitem",this.tabIndex="-1"}focus(){this.elementRef.nativeElement.focus()}}t.MenuItemComponent=r,r.ɵfac=function(e){return new(e||r)(i.ɵɵdirectiveInject(i.ElementRef))},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["","bit-menu-item",""]],hostVars:4,hostBindings:function(e,t){2&e&&(i.ɵɵhostProperty("tabIndex",t.tabIndex),i.ɵɵattribute("role",t.role),i.ɵɵclassMap(t.classList))},attrs:["bit-menu-item",""],ngContentSelectors:["*"],decls:1,vars:0,template:function(e,t){1&e&&(i.ɵɵprojectionDef(),i.ɵɵprojection(0))},encapsulation:2})},6373:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuTriggerForDirective=void 0;n(2336);const i=n(80872),r=(n(32621),n(14857)),o=(n(44653),n(32621)),a=n(2336);class s{constructor(e,t,n){this.elementRef=e,this.viewContainerRef=t,this.overlay=n,this.isOpen=!1,this.hasPopup="menu",this.role="button",this.defaultMenuConfig={panelClass:"bit-menu-panel",hasBackdrop:!0,backdropClass:"cdk-overlay-transparent-backdrop",scrollStrategy:this.overlay.scrollStrategies.reposition(),positionStrategy:this.overlay.position().flexibleConnectedTo(this.elementRef).withPositions([{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}]).withLockedPosition(!0).withFlexibleDimensions(!1).withPush(!1)}}toggleMenu(){this.isOpen?this.destroyMenu():this.openMenu()}ngOnDestroy(){this.disposeAll()}openMenu(){if(null==this.menu)throw new Error("Cannot find bit-menu element");this.isOpen=!0,this.overlayRef=this.overlay.create(this.defaultMenuConfig);const e=new i.TemplatePortal(this.menu.templateRef,this.viewContainerRef);this.overlayRef.attach(e),this.closedEventsSub=this.getClosedEvents().subscribe((e=>{"Tab"===(null==e?void 0:e.key)&&this.elementRef.nativeElement.focus(),this.destroyMenu()})),this.keyDownEventsSub=this.overlayRef.keydownEvents().subscribe((e=>this.menu.keyManager.onKeydown(e)))}destroyMenu(){null!=this.overlayRef&&this.isOpen&&(this.isOpen=!1,this.disposeAll())}getClosedEvents(){const e=this.overlayRef.detachments(),t=this.overlayRef.keydownEvents().pipe(r.filter((e=>"Escape"===e.key||"Tab"===e.key))),n=this.overlayRef.backdropClick(),i=this.menu.closed;return e.pipe(r.mergeWith(t,n,i))}disposeAll(){var e,t,n;null===(e=this.closedEventsSub)||void 0===e||e.unsubscribe(),null===(t=this.overlayRef)||void 0===t||t.dispose(),null===(n=this.keyDownEventsSub)||void 0===n||n.unsubscribe()}}t.MenuTriggerForDirective=s,s.ɵfac=function(e){return new(e||s)(o.ɵɵdirectiveInject(o.ElementRef),o.ɵɵdirectiveInject(o.ViewContainerRef),o.ɵɵdirectiveInject(a.Overlay))},s.ɵdir=o.ɵɵdefineDirective({type:s,selectors:[["","bitMenuTriggerFor",""]],hostVars:3,hostBindings:function(e,t){1&e&&o.ɵɵlistener("click",(function(){return t.toggleMenu()})),2&e&&o.ɵɵattribute("aria-expanded",t.isOpen)("aria-haspopup",t.hasPopup)("role",t.role)},inputs:{menu:["bitMenuTriggerFor","menu"]}})},44653:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuComponent=void 0;const i=n(46915),r=n(32621),o=n(62985),a=n(32621);function s(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"div",0),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().closed.emit()})),a.ɵɵtext(2,"\n "),a.ɵɵprojection(3),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n")}}class l{constructor(){this.closed=new r.EventEmitter}ngAfterContentInit(){this.keyManager=new i.FocusKeyManager(this.menuItems).withWrap()}}t.MenuComponent=l,l.ɵfac=function(e){return new(e||l)},l.ɵcmp=a.ɵɵdefineComponent({type:l,selectors:[["bit-menu"]],contentQueries:function(e,t,n){if(1&e&&a.ɵɵcontentQuery(n,o.MenuItemComponent,5),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.menuItems=e)}},viewQuery:function(e,t){if(1&e&&a.ɵɵviewQuery(r.TemplateRef,5),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.templateRef=e.first)}},outputs:{closed:"closed"},exportAs:["menuComponent"],ngContentSelectors:["*"],decls:2,vars:0,consts:[["role","menu",1,"tw-flex","tw-flex-col","tw-bg-background","tw-border","tw-border-solid","tw-rounded","tw-border-secondary-500","tw-bg-clip-padding","tw-py-2","tw-shrink-0",3,"click"]],template:function(e,t){1&e&&(a.ɵɵprojectionDef(),a.ɵɵtemplate(0,s,6,0,"ng-template"),a.ɵɵtext(1,"\n"))},encapsulation:2})},59912:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MenuModule=void 0;const i=n(2336),r=n(57490),o=n(32621);class a{}t.MenuModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[r.CommonModule,i.OverlayModule]]})},15156:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const i=n(73569);class r extends i.StateService{}t.StateService=r},33642:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptEmergencyComponent=void 0;n(68012),n(91674),n(51554),n(73828),n(73569);const r=n(51128),o=n(50009),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(91674),p=n(73569),u=n(57490),m=n(99729);function h(e,t){1&e&&(a.ɵɵelementStart(0,"div",2),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",3),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",4),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",5),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",6),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))}const v=function(e){return{email:e}};function f(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",8),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",9),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",10),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",11),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",12),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"p",4),a.ɵɵtext(15),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"p"),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelement(21,"hr"),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"div",13),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"a",14),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"a",15),a.ɵɵtext(30),a.ɵɵpipe(31,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,7,"emergencyAccess")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",e.name,"\n "),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(19,9,"acceptEmergencyAccess")),a.ɵɵadvance(7),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(15,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(27,11,"logIn"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("queryParams",a.ɵɵpureFunction1(17,v,e.email)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(31,13,"createAccount"),"\n ")}}class g extends o.BaseAcceptComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.apiService=r,this.requiredParameters=["id","name","email","token"],this.failedShortMessage="emergencyInviteAcceptFailedShort",this.failedMessage="emergencyInviteAcceptFailed"}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new r.EmergencyAccessAcceptRequest;t.token=e.token,this.actionPromise=this.apiService.postEmergencyAccessAccept(e.id,t),yield this.actionPromise,this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("emergencyInviteAcceptedDesc"),{timeout:1e4}),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.name=e.name,null!=this.name&&(this.name=this.name.replace(/\+/g," "))}))}}t.AcceptEmergencyComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.StateService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["app-accept-emergency"]],features:[a.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,h,17,6,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,f,38,19,"div",1),a.ɵɵtext(3,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[u.NgIf,s.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},4802:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptOrganizationComponent=void 0;n(68012),n(91674),n(85714),n(51554),n(36631),n(73828),n(62166),n(73569);const r=n(82769),o=n(1992),a=n(27784),s=n(50009),l=n(32621),c=n(68012),d=n(73828),p=n(51554),u=n(91674),m=n(73569),h=n(85714),v=n(62166),f=n(36631),g=n(57490),y=n(99729);function x(e,t){1&e&&(l.ɵɵelementStart(0,"div",2),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div"),l.ɵɵtext(3,"\n "),l.ɵɵelement(4,"img",3),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"p",4),l.ɵɵtext(7,"\n "),l.ɵɵelement(8,"i",5),l.ɵɵpipe(9,"i18n"),l.ɵɵtext(10,"\n "),l.ɵɵelementStart(11,"span",6),l.ɵɵtext(12),l.ɵɵpipe(13,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(8),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(9,2,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(13,4,"loading")))}const S=function(e){return{email:e}};function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",7),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",8),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",9),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"p",10),l.ɵɵtext(7),l.ɵɵpipe(8,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"div",11),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"div",12),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"p",4),l.ɵɵtext(15),l.ɵɵelementStart(16,"strong",13),l.ɵɵtext(17),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"p"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelement(24,"hr"),l.ɵɵtext(25,"\n "),l.ɵɵelementStart(26,"div",14),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"a",15),l.ɵɵtext(29),l.ɵɵpipe(30,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(31,"\n "),l.ɵɵelementStart(32,"a",16),l.ɵɵtext(33),l.ɵɵpipe(34,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(35,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n"),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(7),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(8,8,"joinOrganization")),l.ɵɵadvance(8),l.ɵɵtextInterpolate1("\n ",e.orgName,"\n "),l.ɵɵadvance(2),l.ɵɵtextInterpolate(e.email),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,10,"joinOrganizationDesc")),l.ɵɵadvance(7),l.ɵɵproperty("queryParams",l.ɵɵpureFunction1(16,S,e.email)),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(30,12,"logIn"),"\n "),l.ɵɵadvance(3),l.ɵɵproperty("queryParams",l.ɵɵpureFunction1(18,S,e.email)),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(34,14,"createAccount"),"\n ")}}class w extends s.BaseAcceptComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,o),this.apiService=r,this.cryptoService=a,this.policyService=s,this.logService=l,this.requiredParameters=["organizationId","organizationUserId","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){const t=new o.OrganizationUserAcceptRequest;t.token=e.token,(yield this.performResetPasswordAutoEnroll(e))?this.actionPromise=this.apiService.postOrganizationUserAccept(e.organizationId,e.organizationUserId,t).then((()=>this.apiService.getOrganizationKeys(e.organizationId))).then((t=>i(this,void 0,void 0,(function*(){if(null==t)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const n=r.Utils.fromB64ToArray(t.publicKey),i=yield this.cryptoService.getEncKey(),o=yield this.cryptoService.rsaEncrypt(i.key,n.buffer),s=new a.OrganizationUserResetPasswordEnrollmentRequest;return s.resetPasswordKey=o.encryptedString,this.apiService.putOrganizationUserResetPasswordEnrollment(e.organizationId,yield this.stateService.getUserId(),s)})))):this.actionPromise=this.apiService.postOrganizationUserAccept(e.organizationId,e.organizationUserId,t),yield this.actionPromise,this.platformUtilService.showToast("success",this.i18nService.t("inviteAccepted"),this.i18nService.t("inviteAcceptedDesc"),{timeout:1e4}),yield this.stateService.setOrganizationInvitation(null),this.router.navigate(["/vault"])}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){this.orgName=e.organizationName,null!=this.orgName&&(this.orgName=this.orgName.replace(/\+/g," ")),yield this.stateService.setOrganizationInvitation(e)}))}performResetPasswordAutoEnroll(e){return i(this,void 0,void 0,(function*(){let t=null;try{const n=yield this.apiService.getPoliciesByToken(e.organizationId,e.token,e.email,e.organizationUserId);t=this.policyService.mapPoliciesFromToken(n)}catch(n){this.logService.error(n)}if(null!=t){const n=this.policyService.getResetPasswordPolicyOptions(t,e.organizationId);return n[1]&&n[0].autoEnrollEnabled}return!1}))}}t.AcceptOrganizationComponent=w,w.ɵfac=function(e){return new(e||w)(l.ɵɵdirectiveInject(c.Router),l.ɵɵdirectiveInject(d.PlatformUtilsService),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(c.ActivatedRoute),l.ɵɵdirectiveInject(u.ApiService),l.ɵɵdirectiveInject(m.StateService),l.ɵɵdirectiveInject(h.CryptoService),l.ɵɵdirectiveInject(v.PolicyService),l.ɵɵdirectiveInject(f.LogService))},w.ɵcmp=l.ɵɵdefineComponent({type:w,selectors:[["app-accept-organization"]],features:[l.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["src","../../images/logo-dark@2x.png","alt","Bitwarden",1,"mb-4","logo"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"d-block","mt-2"],[1,"d-flex"],["routerLink","/login",1,"btn","btn-primary","btn-block",3,"queryParams"],["routerLink","/register",1,"btn","btn-primary","btn-block","ml-2","mt-0",3,"queryParams"]],template:function(e,t){1&e&&(l.ɵɵtemplate(0,x,17,6,"div",0),l.ɵɵtext(1,"\n"),l.ɵɵtemplate(2,b,41,20,"div",1),l.ɵɵtext(3,"\n")),2&e&&(l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.authed))},directives:[g.NgIf,c.RouterLinkWithHref],pipes:[y.I18nPipe],encapsulation:2})},33154:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HintComponent=void 0;n(68012);const i=n(43337),r=(n(91674),n(51554),n(36631),n(73828),n(32621)),o=n(68012),a=n(51554),s=n(91674),l=n(73828),c=n(36631),d=n(96832),p=n(56820),u=n(45728),m=n(48198),h=n(99729);class v extends i.HintComponent{constructor(e,t,n,i,r){super(e,t,n,i,r)}}t.HintComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.ApiService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(c.LogService))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-hint"]],features:[r.ɵɵInheritDefinitionFeature],decls:52,vars:22,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],[3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"div",7),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"label",8),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"input",9),r.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"small",10),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelement(28,"hr"),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",11),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"button",12),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"span",13),r.ɵɵtext(35),r.ɵɵpipe(36,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelement(38,"i",14),r.ɵɵpipe(39,"i18n"),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"a",15),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,10,"passwordHint")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(19,12,"emailAddress")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.email),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"enterEmailToGetHint")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵproperty("hidden",e.loading),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(36,16,"submit")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(39,18,"loading")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(44,20,"cancel"),"\n ")}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,d.DefaultValueAccessor,d.RequiredValidator,u.AutofocusDirective,m.InputVerbatimDirective,d.NgControlStatus,d.NgModel,o.RouterLinkWithHref],pipes:[h.I18nPipe],encapsulation:2})},79346:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LockComponent=void 0;n(32621),n(68012);const r=n(33793),o=(n(91674),n(85714),n(56071),n(51554),n(72277),n(36631),n(45552),n(73828),n(73569),n(82656),n(77459),n(32621)),a=n(68012),s=n(51554),l=n(73828),c=n(45552),d=n(85714),p=n(82656),u=n(56071),m=n(77459),h=n(73569),v=n(91674),f=n(36631),g=n(72277),y=n(96832),x=n(56820),S=n(45728),b=n(48198),w=n(8863),C=n(57490),I=n(99729),E=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class P extends r.LockComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,o,a,l,c,d,p,u),this.routerService=s}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield e.ngOnInit.call(this),this.onSuccessfulSubmit=()=>i(this,void 0,void 0,(function*(){const e=this.routerService.getPreviousUrl();e&&"/"!==e&&-1===e.indexOf("lock")&&(this.successRoute=e),this.router.navigateByUrl(this.successRoute)}))}))}}t.LockComponent=P,P.ɵfac=function(e){return new(e||P)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.CryptoService),o.ɵɵdirectiveInject(p.VaultTimeoutService),o.ɵɵdirectiveInject(u.EnvironmentService),o.ɵɵdirectiveInject(m.RouterService),o.ɵɵdirectiveInject(h.StateService),o.ɵɵdirectiveInject(v.ApiService),o.ɵɵdirectiveInject(f.LogService),o.ɵɵdirectiveInject(g.KeyConnectorService),o.ɵɵdirectiveInject(o.NgZone))},P.ɵcmp=o.ɵɵdefineComponent({type:P,selectors:[["app-lock"]],features:[o.ɵɵInheritDefinitionFeature],decls:68,vars:31,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"text-center","mb-4"],["aria-hidden","true",1,"bwi","bwi-lock","bwi-4x","text-muted"],[1,"lead","text-center","mx-4","mb-4"],[1,"card","d-block"],[1,"card-body"],[1,"form-group"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appAutofocus","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"text-muted","form-text"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-unlock"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"i",5),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"p",6),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",7),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",8),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",9),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",10),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",11),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"button",13),o.ɵɵlistener("click",(function(){return t.togglePassword()})),o.ɵɵpipe(31,"i18n"),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",14),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"small",15),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelement(42,"hr"),o.ɵɵtext(43,"\n "),o.ɵɵelementStart(44,"div",11),o.ɵɵtext(45,"\n "),o.ɵɵelementStart(46,"button",16),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"span"),o.ɵɵtext(49," "),o.ɵɵelement(50,"i",17),o.ɵɵtext(51),o.ɵɵpipe(52,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelement(54,"i",18),o.ɵɵpipe(55,"i18n"),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"button",19),o.ɵɵlistener("click",(function(){return t.logOut()})),o.ɵɵtext(59),o.ɵɵpipe(60,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(62,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(13),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,12,"yourVaultIsLocked")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,14,"masterPass")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),o.ɵɵproperty("ngModel",t.masterPassword),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(31,16,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(28,E,!t.showPassword,t.showPassword)),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind3(39,18,"loggedInAsEmailOn",t.email,t.webVaultHostname),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(52,22,"unlock")," "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(55,24,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(60,26,"logOut"),"\n ")}},directives:[y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,y.DefaultValueAccessor,y.RequiredValidator,S.AutofocusDirective,b.InputVerbatimDirective,y.NgControlStatus,y.NgModel,w.A11yTitleDirective,C.NgClass],pipes:[I.I18nPipe],encapsulation:2})},36729:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LoginComponent=void 0;n(32621),n(68012);const r=n(14857),o=n(13744),a=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(34144)),s=(n(15156),n(77459),n(32621)),l=n(62694),c=n(68012),d=n(51554),p=n(73828),u=n(56071),m=n(84275),h=n(1659),v=n(91674),f=n(62166),g=n(36631),y=n(15156),x=n(45552),S=n(77459),b=n(96832),w=n(56820),C=n(57490),I=n(48198),E=n(8863),P=n(51626),O=n(99729);function k(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",31),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"resetPasswordPolicyAutoEnroll")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"resetPasswordAutoEnrollInviteWarning"),"\n "))}const A=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},T=function(e){return{email:e}};class M extends o.LoginComponent{constructor(e,t,n,r,o,a,s,l,c,d,p,u,m,h,v){super(e,t,o,n,m,a,s,l,p,u),this.route=r,this.apiService=c,this.policyService=d,this.stateService=m,this.messagingService=h,this.routerService=v,this.showResetPasswordAutoEnrollWarning=!1,this.onSuccessfulLogin=()=>i(this,void 0,void 0,(function*(){this.messagingService.send("setFullWidth")})),this.onSuccessfulLoginNavigate=this.goAfterLogIn}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(r.first()).subscribe((t=>i(this,void 0,void 0,(function*(){if(null!=t.email&&t.email.indexOf("@")>-1&&(this.email=t.email),null!=t.premium)this.routerService.setPreviousUrl("/settings/premium");else if(null!=t.org){const e=this.router.createUrlTree(["create-organization"],{queryParams:{plan:t.org}});this.routerService.setPreviousUrl(e.toString())}if(null!=t.sponsorshipToken){const e=this.router.createUrlTree(["setup/families-for-enterprise"],{queryParams:{token:t.sponsorshipToken}});this.routerService.setPreviousUrl(e.toString())}yield e.ngOnInit.call(this),this.rememberEmail=yield this.stateService.getRememberEmail()}))));const t=yield this.stateService.getOrganizationInvitation();if(null!=t){let e=null;try{this.policies=yield this.apiService.getPoliciesByToken(t.organizationId,t.token,t.email,t.organizationUserId),e=this.policyService.mapPoliciesFromToken(this.policies)}catch(n){this.logService.error(n)}if(null!=e){const n=this.policyService.getResetPasswordPolicyOptions(e,t.organizationId);this.showResetPasswordAutoEnrollWarning=n[1]&&n[0].autoEnrollEnabled,this.enforcedPasswordPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(e)}}}))}goAfterLogIn(){return i(this,void 0,void 0,(function*(){if(null!=this.enforcedPasswordPolicyOptions){const e=this.passwordGenerationService.passwordStrength(this.masterPassword,this.getPasswordStrengthUserInput()),t=null==e?null:e.score;if(!this.policyService.evaluateMasterPassword(t,this.masterPassword,this.enforcedPasswordPolicyOptions)){const e={};return this.policies.data.map((t=>e[t.id]=new a.PolicyData(t))),yield this.policyService.replace(e),void this.router.navigate(["update-password"])}}const e=this.routerService.getPreviousUrl();e?this.router.navigateByUrl(e):this.router.navigate([this.successRoute])}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){yield this.stateService.setRememberEmail(this.rememberEmail),this.rememberEmail||(yield this.stateService.setRememberedEmail(null)),yield e.submit.call(this)}))}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),e}}t.LoginComponent=M,M.ɵfac=function(e){return new(e||M)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.EnvironmentService),s.ɵɵdirectiveInject(m.PasswordGenerationService),s.ɵɵdirectiveInject(h.CryptoFunctionService),s.ɵɵdirectiveInject(v.ApiService),s.ɵɵdirectiveInject(f.PolicyService),s.ɵɵdirectiveInject(g.LogService),s.ɵɵdirectiveInject(s.NgZone),s.ɵɵdirectiveInject(y.StateService),s.ɵɵdirectiveInject(x.MessagingService),s.ɵɵdirectiveInject(S.RouterService))},M.ɵcmp=s.ɵɵdefineComponent({type:M,selectors:[["app-login"]],features:[s.ɵɵInheritDefinitionFeature],decls:104,vars:45,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],["alt","Bitwarden",1,"mb-2","logo","logo-themed"],[1,"lead","text-center","mx-4","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning",3,"title",4,"ngIf"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"form-text"],["routerLink","/hint"],[1,"form-check","mb-3"],["type","checkbox","id","rememberEmail","name","RememberEmail",1,"form-check-input",3,"ngModel","ngModelChange"],["for","rememberEmail",1,"form-check-label"],[1,"mb-n3",3,"hidden"],["id","hcaptcha_iframe","height","80"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/register",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"queryParams"],["aria-hidden","true",1,"bwi","bwi-pencil-square"],["routerLink","/sso",1,"btn","btn-outline-secondary","btn-block","mt-2"],["aria-hidden","true",1,"bwi","bwi-bank"],["type","warning",3,"title"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelement(7,"img",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"p",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",6),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",7),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,k,4,6,"app-callout",8),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",9),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",10),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",11),s.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",9),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",12),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",13),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"input",14),s.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"button",15),s.ɵɵlistener("click",(function(){return t.togglePassword()})),s.ɵɵpipe(39,"i18n"),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",16),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"small",17),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"a",18),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"div",19),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"input",20),s.ɵɵlistener("ngModelChange",(function(e){return t.rememberEmail=e})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"label",21),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"div",22),s.ɵɵtext(63,"\n "),s.ɵɵelement(64,"iframe",23),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelement(67,"hr"),s.ɵɵtext(68,"\n "),s.ɵɵelementStart(69,"div",13),s.ɵɵtext(70,"\n "),s.ɵɵelementStart(71,"button",24),s.ɵɵtext(72,"\n "),s.ɵɵelementStart(73,"span"),s.ɵɵtext(74," "),s.ɵɵelement(75,"i",25),s.ɵɵtext(76),s.ɵɵpipe(77,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"i",26),s.ɵɵpipe(80,"i18n"),s.ɵɵtext(81,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementStart(83,"a",27),s.ɵɵtext(84,"\n "),s.ɵɵelement(85,"i",28),s.ɵɵtext(86),s.ɵɵpipe(87,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(88,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"div",13),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"a",29),s.ɵɵtext(93,"\n "),s.ɵɵelement(94,"i",30),s.ɵɵtext(95),s.ɵɵpipe(96,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(98,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(99,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(101,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(102,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,20,"loginOrCreateNewAccount")),s.ɵɵadvance(7),s.ɵɵproperty("ngIf",t.showResetPasswordAutoEnrollWarning),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,22,"emailAddress")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.email),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,24,"masterPass")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),s.ɵɵproperty("ngModel",t.masterPassword),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(39,26,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(40,A,!t.showPassword,t.showPassword)),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(49,28,"getMasterPasswordHint")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.rememberEmail),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,30,"rememberEmail")),s.ɵɵadvance(4),s.ɵɵproperty("hidden",!t.showCaptcha()),s.ɵɵadvance(9),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(77,32,"logIn")," "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(80,34,"loading")),s.ɵɵadvance(4),s.ɵɵproperty("queryParams",s.ɵɵpureFunction1(43,T,t.email)),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(87,36,"createAccount"),"\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(96,38,"enterpriseSingleSignOn"),"\n ")}},directives:[b.NgControlStatusGroup,b.NgForm,w.ApiActionDirective,C.NgIf,b.DefaultValueAccessor,b.RequiredValidator,I.InputVerbatimDirective,b.NgControlStatus,b.NgModel,E.A11yTitleDirective,C.NgClass,c.RouterLinkWithHref,b.CheckboxControlValueAccessor,P.CalloutComponent],pipes:[O.I18nPipe],encapsulation:2})},39253:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RecoverDeleteComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828);const r=n(12666),o=n(32621),a=n(68012),s=n(91674),l=n(73828),c=n(51554),d=n(36631),p=n(96832),u=n(56820),m=n(45728),h=n(48198),v=n(99729);class f{constructor(e,t,n,i,r){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.logService=r}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.DeleteRecoverRequest;e.email=this.email.trim().toLowerCase(),this.formPromise=this.apiService.postAccountRecoverDelete(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deleteRecoverEmailSent")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.RecoverDeleteComponent=f,f.ɵfac=function(e){return new(e||f)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.ApiService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=o.ɵɵdefineComponent({type:f,selectors:[["app-recover-delete"]],decls:52,vars:21,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",5),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",6),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"p"),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",7),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",8),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"input",9),o.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelement(28,"hr"),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",10),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"button",11),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"span"),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"i",12),o.ɵɵpipe(39,"i18n"),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"a",13),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,9,"deleteAccount")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,11,"deleteRecoverDesc")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,13,"emailAddress")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.email),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(36,15,"submit")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(39,17,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(44,19,"cancel"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,p.DefaultValueAccessor,p.RequiredValidator,m.AutofocusDirective,h.InputVerbatimDirective,p.NgControlStatus,p.NgModel,a.RouterLinkWithHref],pipes:[v.I18nPipe],encapsulation:2})},85175:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RecoverTwoFactorComponent=void 0;n(68012),n(91674),n(62694),n(85714),n(51554),n(36631),n(73828);const r=n(6188),o=n(32621),a=n(68012),s=n(91674),l=n(73828),c=n(51554),d=n(85714),p=n(62694),u=n(36631),m=n(96832),h=n(56820),v=n(45728),f=n(48198),g=n(99729);class y{constructor(e,t,n,i,r,o,a){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.cryptoService=r,this.authService=o,this.logService=a}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.TwoFactorRecoveryRequest;e.recoveryCode=this.recoveryCode.replace(/\s/g,"").toLowerCase(),e.email=this.email.trim().toLowerCase();const t=yield this.authService.makePreloginKey(this.masterPassword,e.email);e.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,t),this.formPromise=this.apiService.postTwoFactorRecover(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("twoStepRecoverDisabled")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.RecoverTwoFactorComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.ApiService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.CryptoService),o.ɵɵdirectiveInject(p.AuthService),o.ɵɵdirectiveInject(u.LogService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["app-recover-two-factor"]],decls:74,vars:32,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],["href","https://bitwarden.com/help/lost-two-step-device/","target","_blank","rel","noopener"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","appAutofocus","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPassword","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","recoveryCode"],["id","recoveryCode","type","text","name","RecoveryCode","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",3),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"p",4),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",5),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",6),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"p"),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementStart(18,"a",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",8),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"label",9),o.ɵɵtext(26),o.ɵɵpipe(27,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"input",10),o.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"div",8),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"label",11),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"div",8),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"label",13),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"input",14),o.ɵɵlistener("ngModelChange",(function(e){return t.recoveryCode=e})),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelement(50,"hr"),o.ɵɵtext(51,"\n "),o.ɵɵelementStart(52,"div",15),o.ɵɵtext(53,"\n "),o.ɵɵelementStart(54,"button",16),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"span"),o.ɵɵtext(57),o.ɵɵpipe(58,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelement(60,"i",17),o.ɵɵpipe(61,"i18n"),o.ɵɵtext(62,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementStart(64,"a",18),o.ɵɵtext(65),o.ɵɵpipe(66,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(69,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(70,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(71,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(73,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,14,"recoverAccountTwoStep")),o.ɵɵadvance(8),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(17,16,"recoverAccountTwoStepDesc"),"\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,18,"learnMore")),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(27,20,"emailAddress")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.email),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(36,22,"masterPass")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.masterPassword),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(45,24,"recoveryCodeTitle")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.recoveryCode),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(58,26,"submit")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(61,28,"loading")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(66,30,"cancel"),"\n ")}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,m.DefaultValueAccessor,m.RequiredValidator,v.AutofocusDirective,f.InputVerbatimDirective,m.NgControlStatus,m.NgModel,a.RouterLinkWithHref],pipes:[g.I18nPipe],encapsulation:2})},48229:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegisterComponent=void 0;n(68012);const r=n(14857),o=n(11405),a=(n(91674),n(62694),n(85714),n(56071),n(51554),n(36631),n(84275),n(73828),n(62166),n(73569),n(34144)),s=n(41317),l=n(90185),c=(n(77459),n(32621)),d=n(62694),p=n(68012),u=n(51554),m=n(85714),h=n(91674),v=n(73569),f=n(73828),g=n(84275),y=n(62166),x=n(56071),S=n(36631),b=n(77459),w=n(57490),C=n(96832),I=n(56820),E=n(48198),P=n(45728),O=n(40946),k=n(8863),A=n(51626),T=n(99729);function M(e,t){1&e&&(c.ɵɵelementStart(0,"header",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",42),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",4),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",43),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",44),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd())}function B(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"The Bitwarden Password Manager"),c.ɵɵelementEnd(),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"h2"),c.ɵɵtext(6,"\n Trusted by millions of individuals, teams, and organizations worldwide for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"p"),c.ɵɵtext(9,"Store logins, secure notes, and more"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd())}function D(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Teams"),c.ɵɵelement(2,"br"),c.ɵɵelementEnd())}function R(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Enterprise"),c.ɵɵelementEnd())}function F(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"\n Start Your "),c.ɵɵtemplate(4,D,3,0,"span",39),c.ɵɵtemplate(5,R,2,0,"span",39),c.ɵɵtext(6," Free Trial Now\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2"),c.ɵɵtext(9,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Deploy and manage quickly and easily"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"p"),c.ɵɵtext(21,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(4),c.ɵɵproperty("ngIf","teams1"===e.layout||"teams1"===e.layout),c.ɵɵadvance(1),c.ɵɵproperty("ngIf","enterprise2"===e.layout)}}function U(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Teams"),c.ɵɵelement(2,"br"),c.ɵɵelementEnd())}function V(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1,"Enterprise"),c.ɵɵelementEnd())}function N(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"\n Start Your "),c.ɵɵtemplate(4,U,3,0,"span",39),c.ɵɵtemplate(5,V,2,0,"span",39),c.ɵɵtext(6," Free Trial Now\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2"),c.ɵɵtext(9,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Collaborate and share securely"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Deploy and manage quickly and easily"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"p"),c.ɵɵtext(21,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(4),c.ɵɵproperty("ngIf","cnetcmpgnteams"===e.layout),c.ɵɵadvance(1),c.ɵɵproperty("ngIf","cnetcmpgnent"===e.layout)}}function _(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3,"Start Your Premium Account Now"),c.ɵɵelementEnd(),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"h2"),c.ɵɵtext(6,"\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"p"),c.ɵɵtext(9,"Store logins, secure notes, and more"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"p"),c.ɵɵtext(12,"Secure your account with advanced two-step login"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"p"),c.ɵɵtext(15,"Access anywhere on any device"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"p"),c.ɵɵtext(18,"Create your account to get started"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd())}function j(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",43),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",45),c.ɵɵtext(3,"\n "),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,B,20,0,"div",39),c.ɵɵtext(6,"\n\n "),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,F,23,2,"div",39),c.ɵɵtext(9,"\n\n "),c.ɵɵtext(10,"\n "),c.ɵɵtemplate(11,N,23,2,"div",39),c.ɵɵtext(12,"\n\n "),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,_,20,0,"div",39),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵproperty("ngIf","teams"===e.layout||"enterprise"===e.layout||"enterprise1"===e.layout||"default"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","teams1"===e.layout||"teams2"===e.layout||"enterprise2"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnteams"===e.layout||"cnetcmpgnent"===e.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnind"===e.layout)}}function z(e,t){1&e&&(c.ɵɵelementStart(0,"p",46),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"createAccount")))}function H(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",47),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2),c.ɵɵpipe(3,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,2,"createOrganizationStep1")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(3,4,"createOrganizationCreatePersonalAccount"),"\n "))}function L(e,t){if(1&e&&(c.ɵɵelementStart(0,"app-callout",48),c.ɵɵtext(1,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",12),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",49),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",50),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().acceptPolicies=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",51),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelement(9,"br"),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"a",52),c.ɵɵtext(12),c.ɵɵpipe(13,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(14,",\n "),c.ɵɵelementStart(15,"a",53),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(4),c.ɵɵproperty("ngModel",e.acceptPolicies),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"acceptPolicies"),""),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(13,6,"termsOfService")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,8,"privacyPolicy"))}}function q(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"figure"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"figcaption"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"cite"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",54),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"blockquote",55),c.ɵɵtext(13,'\n "No more excuses; start using Bitwarden today. The identity you save could be your\n own. The money definitely will be."\n '),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd())}function G(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"figure"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"figcaption"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"cite"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"img",56),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"blockquote",55),c.ɵɵtext(13,"\n “Bitwarden boasts the backing of some of the world's best security experts and an\n attractive, easy-to-use interface”\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd())}function W(e,t){1&e&&(c.ɵɵelementStart(0,"div",57),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",58),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd())}function $(e,t){1&e&&(c.ɵɵelementStart(0,"div",57),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",58),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd())}const Y=function(e){return["layout",e]},Q=function(e,t){return{"col-5":e,"col-12":t}},J=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class Z extends o.RegisterComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,a,s,l,d,p),this.route=o,this.policyService=c,this.routerService=u,this.showCreateOrgMessage=!1,this.layout=""}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.queryParams.pipe(r.first()).subscribe((e=>{if(this.referenceData=new l.ReferenceEventRequest,null!=e.email&&e.email.indexOf("@")>-1&&(this.email=e.email),null!=e.premium)this.routerService.setPreviousUrl("/settings/premium");else if(null!=e.org){this.showCreateOrgMessage=!0,this.referenceData.flow=e.org;const t=this.router.createUrlTree(["create-organization"],{queryParams:{plan:e.org}});this.routerService.setPreviousUrl(t.toString())}if(null!=e.layout&&(this.layout=this.referenceData.layout=e.layout),null!=e.reference?this.referenceData.id=e.reference:this.referenceData.id=("; "+document.cookie).split("; reference=").pop().split(";").shift(),null!=e.sponsorshipToken){const t=this.router.createUrlTree(["setup/families-for-enterprise"],{queryParams:{plan:e.sponsorshipToken}});this.routerService.setPreviousUrl(t.toString())}""===this.referenceData.id&&(this.referenceData.id=null)}));const t=yield this.stateService.getOrganizationInvitation();if(null!=t)try{const e=yield this.apiService.getPoliciesByToken(t.organizationId,t.token,t.email,t.organizationUserId);if(null!=e.data){const t=e.data.map((e=>new a.PolicyData(e)));this.policies=t.map((e=>new s.Policy(e)))}}catch(n){this.logService.error(n)}null!=this.policies&&(this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(this.policies)),yield e.ngOnInit.call(this)}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){null==this.enforcedPolicyOptions||this.policyService.evaluateMasterPassword(this.masterPasswordScore,this.masterPassword,this.enforcedPolicyOptions)?yield e.submit.call(this):this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet"))}))}}t.RegisterComponent=Z,Z.ɵfac=function(e){return new(e||Z)(c.ɵɵdirectiveInject(d.AuthService),c.ɵɵdirectiveInject(p.Router),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.CryptoService),c.ɵɵdirectiveInject(h.ApiService),c.ɵɵdirectiveInject(p.ActivatedRoute),c.ɵɵdirectiveInject(v.StateService),c.ɵɵdirectiveInject(f.PlatformUtilsService),c.ɵɵdirectiveInject(g.PasswordGenerationService),c.ɵɵdirectiveInject(y.PolicyService),c.ɵɵdirectiveInject(x.EnvironmentService),c.ɵɵdirectiveInject(S.LogService),c.ɵɵdirectiveInject(b.RouterService))},Z.ɵcmp=c.ɵɵdefineComponent({type:Z,selectors:[["app-register"]],features:[c.ɵɵInheritDefinitionFeature],decls:166,vars:85,consts:[[1,"layout",3,"ngClass"],["class","header",4,"ngIf"],["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],["class","col-7",4,"ngIf"],[3,"ngClass"],[1,"row","justify-content-md-center","mt-5"],["class","lead text-center mb-4",4,"ngIf"],[1,"card","d-block"],[1,"card-body"],["type","info","icon","bwi bwi-thumb-tack",3,"title",4,"ngIf"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","appAutofocus","ngModelChange"],[1,"form-text","text-muted"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","appAutofocus","ngModelChange"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPassword","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],[3,"hidden"],["id","hcaptcha_iframe","height","80"],["class","form-group",4,"ngIf"],[1,"d-flex","mb-2"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"],[1,"col-7","d-flex","align-items-center"],[4,"ngIf"],["class","col-5 d-flex align-items-center justify-content-center",4,"ngIf"],[1,"header"],[1,"container"],[1,"col-7"],["alt","Bitwarden","src","../../images/register-layout/logo-horizontal-white.svg",1,"logo","mb-2"],[1,"mt-5"],[1,"lead","text-center","mb-4"],["type","info","icon","bwi bwi-thumb-tack",3,"title"],["type","info",3,"enforcedPolicyOptions"],[1,"form-check"],["type","checkbox","id","acceptPolicies","name","AcceptPolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","acceptPolicies",1,"form-check-label","small","text-muted"],["href","https://bitwarden.com/terms/","target","_blank","rel","noopener"],["href","https://bitwarden.com/privacy/","target","_blank","rel","noopener"],["src","../../images/register-layout/cnet-logo.svg","alt","cnet logo",1,"w-25","d-block","mx-auto"],[1,"mx-auto","text-center","px-4"],["src","../../images/register-layout/forbes-logo.svg","alt","Forbes Logo",1,"w-25","d-block","mx-auto"],[1,"col-5","d-flex","align-items-center","justify-content-center"],["src","../../images/register-layout/usnews-360-badge.svg","alt","US News 360 Reviews Best Password Manager",1,"w-50","d-block"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵtext(2,"\n "),c.ɵɵtemplate(3,M,13,0,"header",1),c.ɵɵtext(4,"\n\n "),c.ɵɵelementStart(5,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",4),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,j,17,4,"div",5),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"div",6),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",7),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"div",6),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,z,3,3,"p",8),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"div",9),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"div",10),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,H,4,6,"app-callout",11),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",12),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"label",13),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵelementStart(32,"input",14),c.ɵɵlistener("ngModelChange",(function(e){return t.email=e})),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"small",15),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"div",12),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"label",16),c.ɵɵtext(42),c.ɵɵpipe(43,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"input",17),c.ɵɵlistener("ngModelChange",(function(e){return t.name=e})),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"small",15),c.ɵɵtext(48),c.ɵɵpipe(49,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementStart(52,"div",12),c.ɵɵtext(53,"\n "),c.ɵɵtemplate(54,L,2,1,"app-callout",18),c.ɵɵtext(55,"\n "),c.ɵɵelementStart(56,"label",19),c.ɵɵtext(57),c.ɵɵpipe(58,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(59,"\n "),c.ɵɵelementStart(60,"div",20),c.ɵɵtext(61,"\n "),c.ɵɵelementStart(62,"div",21),c.ɵɵtext(63,"\n "),c.ɵɵelementStart(64,"input",22),c.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementStart(66,"app-password-strength",23),c.ɵɵtext(67,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(68,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵelementStart(70,"div"),c.ɵɵtext(71,"\n "),c.ɵɵelementStart(72,"button",24),c.ɵɵlistener("click",(function(){return t.togglePassword(!1)})),c.ɵɵpipe(73,"i18n"),c.ɵɵtext(74,"\n "),c.ɵɵelement(75,"i",25),c.ɵɵtext(76,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelement(78,"div",26),c.ɵɵtext(79,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(80,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(81,"\n "),c.ɵɵelementStart(82,"small",15),c.ɵɵtext(83),c.ɵɵpipe(84,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(85,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(86,"\n "),c.ɵɵelementStart(87,"div",12),c.ɵɵtext(88,"\n "),c.ɵɵelementStart(89,"label",27),c.ɵɵtext(90),c.ɵɵpipe(91,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(92,"\n "),c.ɵɵelementStart(93,"div",20),c.ɵɵtext(94,"\n "),c.ɵɵelementStart(95,"input",28),c.ɵɵlistener("ngModelChange",(function(e){return t.confirmMasterPassword=e})),c.ɵɵelementEnd(),c.ɵɵtext(96,"\n "),c.ɵɵelementStart(97,"button",24),c.ɵɵlistener("click",(function(){return t.togglePassword(!0)})),c.ɵɵpipe(98,"i18n"),c.ɵɵtext(99,"\n "),c.ɵɵelement(100,"i",25),c.ɵɵtext(101,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(102,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(103,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(104,"\n "),c.ɵɵelementStart(105,"div",12),c.ɵɵtext(106,"\n "),c.ɵɵelementStart(107,"label",29),c.ɵɵtext(108),c.ɵɵpipe(109,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(110,"\n "),c.ɵɵelementStart(111,"input",30),c.ɵɵlistener("ngModelChange",(function(e){return t.hint=e})),c.ɵɵelementEnd(),c.ɵɵtext(112,"\n "),c.ɵɵelementStart(113,"small",15),c.ɵɵtext(114),c.ɵɵpipe(115,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(116,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(117,"\n "),c.ɵɵelementStart(118,"div",31),c.ɵɵtext(119,"\n "),c.ɵɵelement(120,"iframe",32),c.ɵɵtext(121,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(122,"\n "),c.ɵɵtemplate(123,K,21,10,"div",33),c.ɵɵtext(124,"\n "),c.ɵɵelement(125,"hr"),c.ɵɵtext(126,"\n "),c.ɵɵelementStart(127,"div",34),c.ɵɵtext(128,"\n "),c.ɵɵelementStart(129,"button",35),c.ɵɵtext(130,"\n "),c.ɵɵelementStart(131,"span"),c.ɵɵtext(132),c.ɵɵpipe(133,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(134,"\n "),c.ɵɵelement(135,"i",36),c.ɵɵpipe(136,"i18n"),c.ɵɵtext(137,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(138,"\n "),c.ɵɵelementStart(139,"a",37),c.ɵɵtext(140),c.ɵɵpipe(141,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(142,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(143,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(144,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(145,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(146,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(147,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(148,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(149,"\n "),c.ɵɵelementStart(150,"div",4),c.ɵɵtext(151,"\n "),c.ɵɵelementStart(152,"div",38),c.ɵɵtext(153,"\n "),c.ɵɵtemplate(154,q,16,0,"div",39),c.ɵɵtext(155,"\n\n "),c.ɵɵtemplate(156,G,16,0,"div",39),c.ɵɵtext(157,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(158,"\n "),c.ɵɵtemplate(159,W,4,0,"div",40),c.ɵɵtext(160,"\n "),c.ɵɵtemplate(161,$,4,0,"div",40),c.ɵɵtext(162,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(163,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(164,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(165,"\n")),2&e){const e=c.ɵɵreference(6);c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(71,Y,t.layout)),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","default"===t.layout||"teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(73,Q,t.layout,!t.layout)),c.ɵɵadvance(4),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(76,Q,!t.layout,t.layout)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.layout),c.ɵɵadvance(6),c.ɵɵproperty("ngIf",t.showCreateOrgMessage),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(30,43,"emailAddress")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.email)("appAutofocus",""===t.email),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(36,45,"emailAddressDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(43,47,"yourName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.name)("appAutofocus",""!==t.email),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(49,49,"yourNameDesc")),c.ɵɵadvance(6),c.ɵɵproperty("ngIf",t.enforcedPolicyOptions),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(58,51,"masterPass")),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),c.ɵɵproperty("ngModel",t.masterPassword),c.ɵɵadvance(2),c.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),c.ɵɵadvance(6),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(73,53,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(79,J,!t.showPassword,t.showPassword)),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(84,55,"masterPassDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(91,57,"reTypeMasterPass")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),c.ɵɵproperty("ngModel",t.confirmMasterPassword),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(98,59,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(82,J,!t.showPassword,t.showPassword)),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(109,61,"masterPassHint")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",t.hint),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(115,63,"masterPassHintDesc")),c.ɵɵadvance(4),c.ɵɵproperty("hidden",!t.showCaptcha()),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.showTerms),c.ɵɵadvance(6),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(133,65,"submit")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(136,67,"loading")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(141,69,"cancel"),"\n "),c.ɵɵadvance(14),c.ɵɵproperty("ngIf","cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"default"===t.layout),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","cnetcmpgnent"===t.layout||"cnetcmpgnteams"===t.layout||"cnetcmpgnind"===t.layout),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","teams"===t.layout||"teams1"===t.layout||"teams2"===t.layout||"enterprise"===t.layout||"enterprise1"===t.layout||"enterprise2"===t.layout||"default"===t.layout)}},directives:[w.NgClass,w.NgIf,C.NgControlStatusGroup,C.NgForm,I.ApiActionDirective,C.DefaultValueAccessor,C.RequiredValidator,E.InputVerbatimDirective,C.NgControlStatus,C.NgModel,P.AutofocusDirective,O.PasswordStrengthComponent,k.A11yTitleDirective,p.RouterLinkWithHref,A.CalloutComponent,C.CheckboxControlValueAccessor],pipes:[T.I18nPipe],encapsulation:2})},66686:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemovePasswordComponent=void 0;const i=n(42893),r=n(32621),o=n(57490),a=n(99729);function s(e,t){1&e&&(r.ɵɵelementStart(0,"div",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div"),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"img",3),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"p",4),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",5),r.ɵɵpipe(9,"i18n"),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"span",6),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(8),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(9,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,4,"loading")))}function l(e,t){1&e&&(r.ɵɵelement(0,"i",16),r.ɵɵpipe(1,"i18n")),2&e&&r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,1,"loading"))}function c(e,t){1&e&&(r.ɵɵelement(0,"i",16),r.ɵɵpipe(1,"i18n")),2&e&&r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,1,"loading"))}function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",7),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",8),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",9),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"p",10),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"hr"),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",11),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"div",12),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"p"),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n\n "),r.ɵɵelementStart(20,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().convert()})),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,l,2,3,"i",14),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().leave()})),r.ɵɵtext(27,"\n "),r.ɵɵtemplate(28,c,2,3,"i",14),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n"),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,8,"removeMasterPassword")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(18,10,"convertOrganizationEncryptionDesc",e.organization.name)),r.ɵɵadvance(3),r.ɵɵproperty("disabled",e.actionPromise),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.continuing),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,13,"removeMasterPassword"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("disabled",e.actionPromise),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.leaving),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,15,"leaveOrganization"),"\n ")}}class p extends i.RemovePasswordComponent{}t.RemovePasswordComponent=p,p.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(p)))(t||p)}}(),p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-remove-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:4,vars:2,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],["class","container",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"container"],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","button",1,"btn","btn-primary","btn-block",3,"disabled","click"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary","btn-block",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,s,17,6,"div",0),r.ɵɵtext(1,"\n"),r.ɵɵtemplate(2,d,36,17,"div",1),r.ɵɵtext(3,"\n")),2&e&&(r.ɵɵproperty("ngIf",t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.loading))},directives:[o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},12579:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SetPasswordComponent=void 0;n(68012);const i=n(24656),r=(n(91674),n(85714),n(51554),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(32621)),o=n(91674),a=n(51554),s=n(85714),l=n(45552),c=n(84275),d=n(73828),p=n(62166),u=n(68012),m=n(9724),h=n(73569),v=n(96832),f=n(56820),g=n(57490),y=n(51626),x=n(48198),S=n(40946),b=n(8863),w=n(99729);function C(e,t){1&e&&(r.ɵɵelementStart(0,"div",8),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",9),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(5,4,"loading"),"\n "))}function I(e,t){1&e&&(r.ɵɵelementStart(0,"app-callout",30),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"resetPasswordPolicyAutoEnroll")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"resetPasswordAutoEnrollInviteWarning"),"\n "))}function E(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",31),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const P=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function O(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"app-callout",11),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,I,4,6,"app-callout",12),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",13),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,E,2,1,"app-callout",14),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"label",15),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",16),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"div",17),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"input",18),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPassword=t}))("input",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"app-password-strength",19),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div"),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().togglePassword(!1)})),r.ɵɵpipe(29,"i18n"),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"i",21),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelement(34,"div",22),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"small",23),r.ɵɵtext(39),r.ɵɵpipe(40,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",13),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"label",24),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"div",16),r.ɵɵtext(50,"\n "),r.ɵɵelementStart(51,"input",25),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPasswordRetype=t})),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementStart(53,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().togglePassword(!0)})),r.ɵɵpipe(54,"i18n"),r.ɵɵtext(55,"\n "),r.ɵɵelement(56,"i",21),r.ɵɵtext(57,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementStart(61,"div",13),r.ɵɵtext(62,"\n "),r.ɵɵelementStart(63,"label",26),r.ɵɵtext(64),r.ɵɵpipe(65,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementStart(67,"input",27),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().hint=t})),r.ɵɵelementEnd(),r.ɵɵtext(68,"\n "),r.ɵɵelementStart(69,"small",23),r.ɵɵtext(70),r.ɵɵpipe(71,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(72,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(73,"\n "),r.ɵɵelement(74,"hr"),r.ɵɵtext(75,"\n "),r.ɵɵelementStart(76,"div",16),r.ɵɵtext(77,"\n "),r.ɵɵelementStart(78,"button",28),r.ɵɵtext(79,"\n "),r.ɵɵelement(80,"i",9),r.ɵɵpipe(81,"i18n"),r.ɵɵtext(82,"\n "),r.ɵɵelementStart(83,"span"),r.ɵɵtext(84),r.ɵɵpipe(85,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(86,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(87,"\n "),r.ɵɵelementStart(88,"button",29),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().logOut()})),r.ɵɵtext(89),r.ɵɵpipe(90,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(91,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(92,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(1);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,23,"ssoCompleteRegistration")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.resetPasswordAutoEnroll),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.enforcedPolicyOptions),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(14,25,"masterPass")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),r.ɵɵproperty("ngModel",e.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",e.masterPasswordScore)("showText",!0),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(29,27,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(45,P,!e.showPassword,e.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(40,29,"masterPassDesc")),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,31,"reTypeMasterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),r.ɵɵproperty("ngModel",e.masterPasswordRetype),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(54,33,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(48,P,!e.showPassword,e.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(65,35,"masterPassHint")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.hint),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(71,37,"masterPassHintDesc")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",t.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(81,39,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(85,41,"submit")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(90,43,"logOut"),"\n ")}}class k extends i.SetPasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(t,n,i,r,o,a,s,e,l,c,d)}}t.SetPasswordComponent=k,k.ɵfac=function(e){return new(e||k)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.CryptoService),r.ɵɵdirectiveInject(l.MessagingService),r.ɵɵdirectiveInject(c.PasswordGenerationService),r.ɵɵdirectiveInject(d.PlatformUtilsService),r.ɵɵdirectiveInject(p.PolicyService),r.ɵɵdirectiveInject(u.Router),r.ɵɵdirectiveInject(m.SyncService),r.ɵɵdirectiveInject(u.ActivatedRoute),r.ɵɵdirectiveInject(h.StateService))},k.ɵcmp=r.ɵɵdefineComponent({type:k,selectors:[["app-set-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:21,vars:6,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],["class","card-body text-center",4,"ngIf"],["class","card-body",4,"ngIf"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"card-body"],["type","info"],["type","warning",3,"title",4,"ngIf"],[1,"form-group"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPasswordHash","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],[1,"form-text","text-muted"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"],["type","warning",3,"title"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,C,6,6,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,O,93,51,"div",7),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n")),2&e&&(r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,4,"setMasterPassword")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.syncLoading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.syncLoading))},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.NgIf,y.CalloutComponent,v.DefaultValueAccessor,v.RequiredValidator,x.InputVerbatimDirective,v.NgControlStatus,v.NgModel,S.PasswordStrengthComponent,b.A11yTitleDirective,g.NgClass],pipes:[w.I18nPipe],encapsulation:2})},23291:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SsoComponent=void 0;n(68012);const r=n(14857),o=n(25563),a=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(32621)),s=n(62694),l=n(68012),c=n(51554),d=n(73569),p=n(73828),u=n(91674),m=n(1659),h=n(56071),v=n(84275),f=n(36631),g=n(96832),y=n(56820),x=n(57490),S=n(45728),b=n(99729);function w(e,t){1&e&&(a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",8),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(5,4,"loading"),"\n "))}function C(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div",7),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",9),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"label",10),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"input",11),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().identifier=t})),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelement(15,"hr"),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"div",12),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"button",13),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"span"),a.ɵɵtext(22," "),a.ɵɵelement(23,"i",14),a.ɵɵtext(24),a.ɵɵpipe(25,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelement(27,"i",8),a.ɵɵpipe(28,"i18n"),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"a",15),a.ɵɵtext(32),a.ɵɵpipe(33,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext(),t=a.ɵɵreference(1);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"ssoLogInWithOrgIdentifier")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,9,"organizationIdentifier")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",e.identifier),a.ɵɵadvance(7),a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate1(" ",a.ɵɵpipeBind1(25,11,"logIn")," "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(28,13,"loading")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(33,15,"cancel"),"\n ")}}class I extends o.SsoComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,l,c,d),this.redirectUri=window.location.origin+"/sso-connector.html",this.clientId="web"}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this),this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.identifier)this.identifier=e.identifier;else{const e=yield this.stateService.getSsoOrgIdentifier();null!=e&&(this.identifier=e)}}))))}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){yield this.stateService.setSsoOrganizationIdentifier(this.identifier),"browser"===this.clientId&&(document.cookie=`ssoHandOffMessage=${this.i18nService.t("ssoHandOff")};SameSite=strict`),e.submit.call(this)}))}}t.SsoComponent=I,I.ɵfac=function(e){return new(e||I)(a.ɵɵdirectiveInject(s.AuthService),a.ɵɵdirectiveInject(l.Router),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(l.ActivatedRoute),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PlatformUtilsService),a.ɵɵdirectiveInject(u.ApiService),a.ɵɵdirectiveInject(m.CryptoFunctionService),a.ɵɵdirectiveInject(h.EnvironmentService),a.ɵɵdirectiveInject(v.PasswordGenerationService),a.ɵɵdirectiveInject(f.LogService))},I.ɵcmp=a.ɵɵdefineComponent({type:I,selectors:[["app-sso"]],features:[a.ɵɵInheritDefinitionFeature],decls:19,vars:3,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],["alt","Bitwarden",1,"logo","mb-2","logo-themed"],[1,"card","d-block","mt-4"],["class","card-body",4,"ngIf"],[1,"card-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"form-group"],["for","identifier"],["id","identifier","type","text","name","Identifier","required","","appAutofocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div",2),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",3),a.ɵɵtext(6,"\n "),a.ɵɵelement(7,"img",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",5),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,6,6,"div",6),a.ɵɵtext(12,"\n "),a.ɵɵtemplate(13,C,36,17,"div",6),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n")),2&e&&(a.ɵɵproperty("appApiAction",t.initiateSsoFormPromise),a.ɵɵadvance(11),a.ɵɵproperty("ngIf",t.loggingIn),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.loggingIn))},directives:[g.NgControlStatusGroup,g.NgForm,y.ApiActionDirective,x.NgIf,g.DefaultValueAccessor,g.RequiredValidator,S.AutofocusDirective,g.NgControlStatus,g.NgModel,l.RouterLinkWithHref],pipes:[b.I18nPipe],encapsulation:2})},76126:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorOptionsComponent=void 0;n(68012);const i=n(63736),r=(n(51554),n(73828),n(27458),n(32621)),o=n(27458),a=n(68012),s=n(51554),l=n(73828),c=n(8863),d=n(57490),p=n(99729);function u(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",11),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",12),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"img",20),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",14),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3"),r.ɵɵtext(12),r.ɵɵelementEnd(),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"div",15),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"button",16),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext().choose(t)})),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit;r.ɵɵadvance(6),r.ɵɵclassMap("mfaType"+e.type),r.ɵɵproperty("alt",e.name+" logo"),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.name),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.description,"\n "),r.ɵɵadvance(4),r.ɵɵattribute("aria-describedby",e.name),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(19,7,"select"),"\n ")}}class m extends i.TwoFactorOptionsComponent{constructor(e,t,n,i){super(e,t,n,i,window)}}t.TwoFactorOptionsComponent=m,m.ɵfac=function(e){return new(e||m)(r.ɵɵdirectiveInject(o.TwoFactorService),r.ɵɵdirectiveInject(a.Router),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.PlatformUtilsService))},m.ɵcmp=r.ɵɵdefineComponent({type:m,selectors:[["app-two-factor-options"]],features:[r.ɵɵInheritDefinitionFeature],decls:65,vars:22,consts:[["role","dialog","aria-modal","true","aria-labelledby","twoStepOptionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","twoStepOptionsTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"list-group","list-group-flush-2fa"],["class","list-group-item list-group-item-action",4,"ngFor","ngForOf"],[1,"list-group-item","list-group-item-action",3,"click"],[1,"two-factor-content"],[1,"logo-col"],["alt","rc logo",1,"recovery-code-img"],[1,"text-col"],[1,"btn-col"],["type","button",1,"btn","btn-outline-secondary","btn-sm",3,"click"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"list-group-item","list-group-item-action"],[3,"alt"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",5),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",6),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",7),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"div",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,u,23,9,"div",9),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",10),r.ɵɵlistener("click",(function(){return t.recover()})),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"div",11),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",12),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"img",13),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",14),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"h3"),r.ɵɵtext(38),r.ɵɵpipe(39,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(40),r.ɵɵpipe(41,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",15),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"button",16),r.ɵɵlistener("click",(function(){return t.recover()})),r.ɵɵpipe(46,"i18n"),r.ɵɵtext(47),r.ɵɵpipe(48,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"div",17),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"button",18),r.ɵɵtext(58),r.ɵɵpipe(59,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(63,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(64,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,8,"twoStepOptions")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,10,"close")),r.ɵɵadvance(12),r.ɵɵproperty("ngForOf",t.providers),r.ɵɵadvance(14),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(39,12,"recoveryCodeTitle")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(41,14,"recoveryCodeDesc"),"\n "),r.ɵɵadvance(5),r.ɵɵattribute("aria-descibedby",r.ɵɵpipeBind1(46,16,"recoveryCodeTitle")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(48,18,"select"),"\n "),r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(59,20,"close"),"\n "))},directives:[c.A11yTitleDirective,d.NgForOf],pipes:[p.I18nPipe],encapsulation:2})},27359:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorComponent=void 0;const r=n(32621),o=(n(68012),n(71116)),a=(n(64684),n(91674),n(5576),n(62694),n(56071),n(51554),n(36631),n(73828),n(73569),n(27458),n(77459),n(76126)),s=n(32621),l=n(62694),c=n(68012),d=n(51554),p=n(91674),u=n(73828),m=n(73569),h=n(56071),v=n(64684),f=n(36631),g=n(27458),y=n(5576),x=n(77459),S=n(96832),b=n(56820),w=n(57490),C=n(1142),I=n(45728),E=n(48198),P=n(99729),O=["twoFactorOptions"];function k(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"enterVerificationCodeApp"),"\n "))}function A(e,t){if(1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,1,"enterVerificationCodeEmail",e.twoFactorEmail),"\n ")}}function T(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",24),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).sendEmail(!0)})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵproperty("appApiAction",e.emailPromise),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,2,"sendVerificationCodeEmailAgain"),"\n ")}}function M(e,t){if(1&e&&(s.ɵɵelementStart(0,"small",22),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,T,3,4,"a",23),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email)}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,k,3,3,"p",7),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,A,3,4,"p",7),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",18),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"label",19),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",20),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,M,4,1,"small",21),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Authenticator),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.selectedProviderType===e.providerType.Email)}}function D(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p",15),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"picture"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"source",25),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"source",26),s.ɵɵtext(11,"\n "),s.ɵɵelement(12,"img",27),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",18),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"label",19),s.ɵɵtext(18),s.ɵɵpipe(19,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"input",28),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"insertYubiKey")),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(19,5,"verificationCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function R(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",29),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"iframe",30),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("allow",e.webAuthnAllow)}}function F(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",31),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"iframe",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd())}function U(e,t){1&e&&(s.ɵɵelement(0,"i",33),s.ɵɵpipe(1,"i18n")),2&e&&s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,1,"loading"))}function V(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",34),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().remember=t})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",36),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngModel",e.remember),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"rememberMe"))}}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"p"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,2,"noTwoStepProviders")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,4,"noTwoStepProviders2")))}function _(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",37),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span"),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",38),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",39),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()),2&e){s.ɵɵnextContext();const e=s.ɵɵreference(1);s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(6,3,"continue"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(9,5,"loading"))}}function j(e,t){}const z=function(e){return{"col-9":e}};class H extends o.TwoFactorComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u){super(e,t,n,i,r,window,a,o,l,c,d,p),this.modalService=s,this.routerService=u,this.onSuccessfulLoginNavigate=this.goAfterLogIn}anotherMethod(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(a.TwoFactorOptionsComponent,this.twoFactorOptionsModal,(t=>{t.onProviderSelected.subscribe((t=>i(this,void 0,void 0,(function*(){e.close(),this.selectedProviderType=t,yield this.init()})))),t.onRecoverSelected.subscribe((()=>{e.close()}))}))}))}goAfterLogIn(){return i(this,void 0,void 0,(function*(){const e=this.routerService.getPreviousUrl();e?this.router.navigateByUrl(e):this.router.navigate([this.successRoute],{queryParams:{identifier:this.identifier}})}))}}t.TwoFactorComponent=H,H.ɵfac=function(e){return new(e||H)(s.ɵɵdirectiveInject(l.AuthService),s.ɵɵdirectiveInject(c.Router),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.ApiService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.StateService),s.ɵɵdirectiveInject(h.EnvironmentService),s.ɵɵdirectiveInject(v.ModalService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(f.LogService),s.ɵɵdirectiveInject(g.TwoFactorService),s.ɵɵdirectiveInject(y.AppIdService),s.ɵɵdirectiveInject(x.RouterService))},H.ɵcmp=s.ɵɵdefineComponent({type:H,selectors:[["app-two-factor"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(O,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.twoFactorOptionsModal=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:59,vars:20,consts:[["ngNativeValidate","","autocomplete","off",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5",3,"ngClass"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],[4,"ngIf"],["class","bwi bwi-spinner text-muted bwi-spin pull-right","aria-hidden","true",3,"title",4,"ngIf"],["class","form-check",4,"ngIf"],[3,"hidden"],["id","hcaptcha_iframe","height","80"],[1,"d-flex","mb-3"],["type","submit","class","btn btn-primary btn-block btn-submit",3,"disabled",4,"ngIf"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"],[1,"text-center"],["href","#","appStopClick","",3,"click"],["twoFactorOptions",""],[1,"form-group"],["for","code",1,"sr-only"],["id","code","type","text","name","Code","required","","appAutofocus","","inputmode","tel","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-text",4,"ngIf"],[1,"form-text"],["href","#","appStopClick","",3,"appApiAction","click",4,"ngIf"],["href","#","appStopClick","",3,"appApiAction","click"],["srcset","../../images/yubikey.avif","type","image/avif"],["srcset","../../images/yubikey.webp","type","image/webp"],["src","../../images/yubikey.jpg","alt","",1,"rounded","img-fluid","mb-3"],["id","code","type","password","name","Code","required","","appAutofocus","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["id","web-authn-frame",1,"mb-3"],["id","webauthn_iframe",3,"allow"],["id","duo-frame",1,"mb-3"],["id","duo_iframe"],["aria-hidden","true",1,"bwi","bwi-spinner","text-muted","bwi-spin","pull-right",3,"title"],[1,"form-check"],["id","remember","type","checkbox","name","Remember",1,"form-check-input",3,"ngModel","ngModelChange"],["for","remember",1,"form-check-label"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"p",4),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",5),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",6),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,B,17,7,"ng-container",7),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,D,24,7,"ng-container",7),s.ɵɵtext(17,"\n "),s.ɵɵtemplate(18,R,7,1,"ng-container",7),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,F,7,0,"ng-container",7),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,U,2,3,"i",8),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,V,8,4,"div",9),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,N,10,6,"ng-container",7),s.ɵɵtext(27,"\n "),s.ɵɵelement(28,"hr"),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",10),s.ɵɵtext(31,"\n "),s.ɵɵelement(32,"iframe",11),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"div",12),s.ɵɵtext(36,"\n "),s.ɵɵtemplate(37,_,11,7,"button",13),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"a",14),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"div",15),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"a",16),s.ɵɵlistener("click",(function(){return t.anotherMethod()})),s.ɵɵtext(47),s.ɵɵpipe(48,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n"),s.ɵɵtemplate(56,j,0,0,"ng-template",null,17,s.ɵɵtemplateRefExtractor),s.ɵɵtext(58,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(18,z,t.selectedProviderType===t.providerType.Duo||t.selectedProviderType===t.providerType.OrganizationDuo)),s.ɵɵadvance(3),s.ɵɵtextInterpolate(t.title),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Email||t.selectedProviderType===t.providerType.Authenticator),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Yubikey),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.WebAuthn),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.selectedProviderType===t.providerType.Duo||t.selectedProviderType===t.providerType.OrganizationDuo),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.loading&&t.selectedProviderType===t.providerType.WebAuthn),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null!=t.selectedProviderType),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.selectedProviderType),s.ɵɵadvance(4),s.ɵɵproperty("hidden",!t.showCaptcha()),s.ɵɵadvance(7),s.ɵɵproperty("ngIf",null!=t.selectedProviderType&&t.selectedProviderType!==t.providerType.Duo&&t.selectedProviderType!==t.providerType.OrganizationDuo&&t.selectedProviderType!==t.providerType.WebAuthn),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(41,14,"cancel"),"\n "),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(48,16,"useAnotherTwoStepMethod"))}},directives:[S.NgControlStatusGroup,S.NgForm,b.ApiActionDirective,w.NgClass,w.NgIf,c.RouterLinkWithHref,C.StopClickDirective,S.DefaultValueAccessor,S.RequiredValidator,I.AutofocusDirective,E.InputVerbatimDirective,S.NgControlStatus,S.NgModel,S.CheckboxControlValueAccessor],pipes:[P.I18nPipe],encapsulation:2})},37565:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdatePasswordComponent=void 0;n(68012);const i=n(56117),r=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(57055),n(32621)),o=n(68012),a=n(51554),s=n(73828),l=n(84275),c=n(62166),d=n(85714),p=n(45552),u=n(91674),m=n(36631),h=n(73569),v=n(57055),f=n(96832),g=n(56820),y=n(51626),x=n(57490),S=n(48198),b=n(40946),w=n(99729);function C(e,t){if(1&e&&r.ɵɵelement(0,"app-callout",22),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class I extends i.UpdatePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(e,t,n,i,r,o,a,s,c,d,l)}}t.UpdatePasswordComponent=I,I.ɵfac=function(e){return new(e||I)(r.ɵɵdirectiveInject(o.Router),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.PasswordGenerationService),r.ɵɵdirectiveInject(c.PolicyService),r.ɵɵdirectiveInject(d.CryptoService),r.ɵɵdirectiveInject(p.MessagingService),r.ɵɵdirectiveInject(u.ApiService),r.ɵɵdirectiveInject(m.LogService),r.ɵɵdirectiveInject(h.StateService),r.ɵɵdirectiveInject(v.UserVerificationService))},I.ɵcmp=r.ɵɵdefineComponent({type:I,selectors:[["app-update-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:91,vars:33,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-4"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","currentMasterPassword"],["id","currentMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","newMasterPassword"],["id","newMasterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"fa","fa-spinner","fa-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-callout",7),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵtemplate(19,C,1,1,"app-callout",8),r.ɵɵtext(20,"\n\n "),r.ɵɵelementStart(21,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"div",9),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",10),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"div",11),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"label",12),r.ɵɵtext(31),r.ɵɵpipe(32,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"input",13),r.ɵɵlistener("ngModelChange",(function(e){return t.currentMasterPassword=e})),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"div",9),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"div",10),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",11),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"label",14),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"input",15),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelement(51,"app-password-strength",16),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"div",10),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"div",11),r.ɵɵtext(58,"\n "),r.ɵɵelementStart(59,"label",17),r.ɵɵtext(60),r.ɵɵpipe(61,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementStart(63,"input",18),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),r.ɵɵelementEnd(),r.ɵɵtext(64,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(65,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(67,"\n "),r.ɵɵelementStart(68,"button",19),r.ɵɵtext(69,"\n "),r.ɵɵelement(70,"i",20),r.ɵɵpipe(71,"i18n"),r.ɵɵtext(72,"\n "),r.ɵɵelementStart(73,"span"),r.ɵɵtext(74),r.ɵɵpipe(75,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(76,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(77,"\n "),r.ɵɵelementStart(78,"button",21),r.ɵɵlistener("click",(function(){return t.cancel()})),r.ɵɵtext(79,"\n "),r.ɵɵelementStart(80,"span"),r.ɵɵtext(81),r.ɵɵpipe(82,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(83,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(84,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(85,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(86,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(87,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(88,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(89,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(90,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,17,"updateMasterPassword")),r.ɵɵadvance(8),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(17,19,"masterPasswordInvalidWarning")," "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.enforcedPolicyOptions),r.ɵɵadvance(2),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(10),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(32,21,"currentMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.currentMasterPassword),r.ɵɵadvance(12),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,23,"newMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(61,25,"confirmNewMasterPass")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPasswordRetype),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(71,27,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(75,29,"changeMasterPassword")),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(82,31,"cancel"))}},directives:[f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.CalloutComponent,x.NgIf,f.DefaultValueAccessor,f.RequiredValidator,S.InputVerbatimDirective,f.NgControlStatus,f.NgModel,b.PasswordStrengthComponent],pipes:[w.I18nPipe],encapsulation:2})},6745:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateTempPasswordComponent=void 0;const i=n(73295),r=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(9724),n(32621)),o=n(51554),a=n(73828),s=n(84275),l=n(62166),c=n(85714),d=n(45552),p=n(91674),u=n(36631),m=n(73569),h=n(9724),v=n(96832),f=n(56820),g=n(51626),y=n(57490),x=n(48198),S=n(40946),b=n(8863),w=n(99729);function C(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",26),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const I=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class E extends i.UpdateTempPasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,l,c,s)}}t.UpdateTempPasswordComponent=E,E.ɵfac=function(e){return new(e||E)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.PasswordGenerationService),r.ɵɵdirectiveInject(l.PolicyService),r.ɵɵdirectiveInject(c.CryptoService),r.ɵɵdirectiveInject(d.MessagingService),r.ɵɵdirectiveInject(p.ApiService),r.ɵɵdirectiveInject(u.LogService),r.ɵɵdirectiveInject(m.StateService),r.ɵɵdirectiveInject(h.SyncService))},E.ɵcmp=r.ɵɵdefineComponent({type:E,selectors:[["app-update-temp-password"]],features:[r.ɵɵInheritDefinitionFeature],decls:105,vars:51,consts:[["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-4"],[1,"lead","text-center","mb-4"],[1,"card","d-block"],[1,"card-body"],["type","warning"],[1,"form-group"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["for","masterPassword"],[1,"d-flex"],[1,"w-100"],["id","masterPassword","name","MasterPasswordHash","required","","appInputVerbatim","",1,"text-monospace","form-control","mb-1",3,"type","ngModel","ngModelChange","input"],[3,"score","showText"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"progress-bar","invisible"],["for","masterPasswordRetype"],["id","masterPasswordRetype","name","MasterPasswordRetype","required","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["for","hint"],["id","hint","type","text","name","Hint",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0",3,"click"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"div",3),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"p",4),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",5),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"div",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-callout",7),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"div",8),r.ɵɵtext(20,"\n "),r.ɵɵtemplate(21,C,2,1,"app-callout",9),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"label",10),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"div",11),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",12),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"input",13),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"app-password-strength",14),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"div"),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"button",15),r.ɵɵlistener("click",(function(){return t.togglePassword(!1)})),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelement(42,"i",16),r.ɵɵtext(43,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelement(45,"div",17),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementStart(50,"div",8),r.ɵɵtext(51,"\n "),r.ɵɵelementStart(52,"label",18),r.ɵɵtext(53),r.ɵɵpipe(54,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(55,"\n "),r.ɵɵelementStart(56,"div",11),r.ɵɵtext(57,"\n "),r.ɵɵelementStart(58,"input",19),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementStart(60,"button",15),r.ɵɵlistener("click",(function(){return t.togglePassword(!0)})),r.ɵɵpipe(61,"i18n"),r.ɵɵtext(62,"\n "),r.ɵɵelement(63,"i",16),r.ɵɵtext(64,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(65,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(66,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(67,"\n "),r.ɵɵelementStart(68,"div",8),r.ɵɵtext(69,"\n "),r.ɵɵelementStart(70,"label",20),r.ɵɵtext(71),r.ɵɵpipe(72,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(73,"\n "),r.ɵɵelementStart(74,"input",21),r.ɵɵlistener("ngModelChange",(function(e){return t.hint=e})),r.ɵɵelementEnd(),r.ɵɵtext(75,"\n "),r.ɵɵelementStart(76,"small",22),r.ɵɵtext(77),r.ɵɵpipe(78,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(79,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(80,"\n "),r.ɵɵelement(81,"hr"),r.ɵɵtext(82,"\n "),r.ɵɵelementStart(83,"div",11),r.ɵɵtext(84,"\n "),r.ɵɵelementStart(85,"button",23),r.ɵɵtext(86,"\n "),r.ɵɵelement(87,"i",24),r.ɵɵpipe(88,"i18n"),r.ɵɵtext(89,"\n "),r.ɵɵelementStart(90,"span"),r.ɵɵtext(91),r.ɵɵpipe(92,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(93,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(94,"\n "),r.ɵɵelementStart(95,"button",25),r.ɵɵlistener("click",(function(){return t.logOut()})),r.ɵɵtext(96),r.ɵɵpipe(97,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(98,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(99,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(100,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(101,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(102,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(103,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(104,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,23,"updateMasterPassword")),r.ɵɵadvance(8),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(17,25,"updateMasterPasswordWarning")," "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.enforcedPolicyOptions),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,27,"masterPass")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(40,29,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(45,I,!t.showPassword,t.showPassword)),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(54,31,"reTypeMasterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPasswordRetype),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(61,33,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(48,I,!t.showPassword,t.showPassword)),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(72,35,"masterPassHint")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.hint),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(78,37,"masterPassHintDesc")),r.ɵɵadvance(8),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(88,39,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(92,41,"submit")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(97,43,"logOut"),"\n ")}},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.CalloutComponent,y.NgIf,v.DefaultValueAccessor,v.RequiredValidator,x.InputVerbatimDirective,v.NgControlStatus,v.NgModel,S.PasswordStrengthComponent,b.A11yTitleDirective,y.NgClass],pipes:[w.I18nPipe],encapsulation:2})},85002:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailTokenComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(51554),n(36631),n(73828),n(73569),n(81106)),a=n(32621),s=n(68012),l=n(73828),c=n(51554),d=n(91674),p=n(36631),u=n(73569),m=n(99729);class h{constructor(e,t,n,i,r,o,a){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.apiService=r,this.logService=o,this.stateService=a}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.userId&&null!=e.token)try{return yield this.apiService.postAccountVerifyEmailToken(new o.VerifyEmailRequest(e.userId,e.token)),(yield this.stateService.getIsAuthenticated())&&(yield this.apiService.refreshIdentityToken()),this.platformUtilsService.showToast("success",null,this.i18nService.t("emailVerified")),void this.router.navigate(["/"])}catch(t){this.logService.error(t)}this.platformUtilsService.showToast("error",null,this.i18nService.t("emailVerifiedFailed")),this.router.navigate(["/"])}))))}}t.VerifyEmailTokenComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(d.ApiService),a.ɵɵdirectiveInject(p.LogService),a.ɵɵdirectiveInject(u.StateService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["app-verify-email-token"]],decls:18,vars:6,consts:[[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"img",1),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"p",2),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",3),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span",4),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n")),2&e&&(a.ɵɵadvance(8),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(9,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,4,"loading")))},pipes:[m.I18nPipe],encapsulation:2})},52e3:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyRecoverDeleteComponent=void 0;n(68012);const r=n(14857),o=(n(91674),n(51554),n(36631),n(73828),n(25086)),a=n(32621),s=n(68012),l=n(91674),c=n(73828),d=n(51554),p=n(36631),u=n(96832),m=n(56820),h=n(51626),v=n(99729);class f{constructor(e,t,n,i,r,o){this.router=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.route=r,this.logService=o}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){null!=e.userId&&null!=e.token&&null!=e.email?(this.userId=e.userId,this.token=e.token,this.email=e.email):this.router.navigate(["/"])}))))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new o.VerifyDeleteRecoverRequest(this.userId,this.token);this.formPromise=this.apiService.postAccountRecoverDeleteToken(e),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("accountDeleted"),this.i18nService.t("accountDeletedDesc")),this.router.navigate(["/"])}catch(e){this.logService.error(e)}}))}}t.VerifyRecoverDeleteComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.Router),a.ɵɵdirectiveInject(l.ApiService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.I18nService),a.ɵɵdirectiveInject(s.ActivatedRoute),a.ɵɵdirectiveInject(p.LogService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["app-verify-recover-delete"]],decls:53,vars:21,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-md-center","mt-5"],[1,"col-5"],[1,"lead","text-center","mb-4"],[1,"card"],[1,"card-body"],["type","warning"],[1,"text-center"],[1,"d-flex"],["type","submit",1,"btn","btn-danger","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["routerLink","/login",1,"btn","btn-outline-secondary","btn-block","ml-2","mt-0"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div",2),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",3),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"p",4),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"div",5),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"div",6),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"app-callout",7),a.ɵɵtext(16),a.ɵɵpipe(17,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"p",8),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"strong"),a.ɵɵtext(22),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"p"),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelement(29,"hr"),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",9),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"button",10),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"span"),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelement(39,"i",11),a.ɵɵpipe(40,"i18n"),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementStart(43,"a",12),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(48,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(52,"\n")),2&e){const e=a.ɵɵreference(1);a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,9,"deleteAccount")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(17,11,"deleteAccountWarning")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(t.email),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(27,13,"deleteRecoverConfirmDesc")),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,15,"deleteAccount")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(40,17,"loading")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,19,"cancel"),"\n ")}},directives:[u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.CalloutComponent,s.RouterLinkWithHref],pipes:[v.I18nPipe],encapsulation:2})},27914:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AppComponent=void 0;const r=n(32621),o=(n(61248),n(68012)),a=n(19755),s=(n(68290),n(78764)),l=(n(62694),n(8470),n(45330),n(3174),n(85714),n(32034),n(88308),n(51554),n(72277),n(38249),n(84275),n(73828),n(62166),n(60421),n(2810),n(73569),n(9724),n(30694),n(82656),n(22991)),c=n(34568),d=n(39123),p=n(34912),u=n(60764),m=n(40558),h=n(57037),v=n(82862),f=n(43909),g=(n(55453),n(77459),n(32621)),y=n(8470),x=n(30694),S=n(88308),b=n(2810),w=n(9724),C=n(84275),I=n(45330),E=n(62694),P=n(68012),O=n(68290),k=n(51554),A=n(73828),T=n(82656),M=n(85714),B=n(3174),D=n(61248),R=n(60421),F=n(38249),U=n(77459),V=n(73569),N=n(32034),_=n(62166),j=n(55453),z=n(72277),H="AppComponent";class L{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h,v,f,g,y,x,S,b,w,C,I){this.broadcasterService=e,this.tokenService=t,this.folderService=n,this.settingsService=i,this.syncService=r,this.passwordGenerationService=o,this.cipherService=a,this.authService=s,this.router=l,this.toastrService=c,this.i18nService=d,this.platformUtilsService=p,this.ngZone=u,this.vaultTimeoutService=m,this.cryptoService=h,this.collectionService=v,this.sanitizer=f,this.searchService=g,this.notificationsService=y,this.routerService=x,this.stateService=S,this.eventService=b,this.policyService=w,this.policyListService=C,this.keyConnectorService=I,this.lastActivity=null,this.idleTimer=null,this.isIdle=!1}ngOnInit(){this.ngZone.runOutsideAngular((()=>{window.onmousemove=()=>this.recordActivity(),window.onmousedown=()=>this.recordActivity(),window.ontouchstart=()=>this.recordActivity(),window.onclick=()=>this.recordActivity(),window.onscroll=()=>this.recordActivity(),window.onkeypress=()=>this.recordActivity()})),this.broadcasterService.subscribe(H,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){switch(e.command){case"loggedIn":case"unlocked":this.notificationsService.updateConnection(!1);break;case"loggedOut":this.routerService.setPreviousUrl(null),this.notificationsService.updateConnection(!1);break;case"authBlocked":this.routerService.setPreviousUrl(e.url),this.router.navigate(["/"]);break;case"logout":this.logOut(!!e.expired);break;case"lockVault":yield this.vaultTimeoutService.lock();break;case"locked":this.notificationsService.updateConnection(!1),this.router.navigate(["lock"]);break;case"lockedUrl":this.routerService.setPreviousUrl(e.url);break;case"syncStarted":case"syncCompleted":default:break;case"upgradeOrganization":(yield this.platformUtilsService.showDialog(this.i18nService.t("upgradeOrganizationDesc"),this.i18nService.t("upgradeOrganization"),this.i18nService.t("upgradeOrganization"),this.i18nService.t("cancel")))&&this.router.navigate(["organizations",e.organizationId,"settings","billing"]);break;case"premiumRequired":(yield this.platformUtilsService.showDialog(this.i18nService.t("premiumRequiredDesc"),this.i18nService.t("premiumRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.router.navigate(["settings/premium"]);break;case"emailVerificationRequired":(yield this.platformUtilsService.showDialog(this.i18nService.t("emailVerificationRequiredDesc"),this.i18nService.t("emailVerificationRequired"),this.i18nService.t("learnMore"),this.i18nService.t("cancel")))&&this.platformUtilsService.launchUri("https://bitwarden.com/help/create-bitwarden-account/");break;case"showToast":this.showToast(e);break;case"setFullWidth":this.setFullWidth();break;case"convertAccountToKeyConnector":this.router.navigate(["/remove-password"])}}))))})))),this.router.events.subscribe((e=>{if(e instanceof o.NavigationEnd){const e=Array.from(document.querySelectorAll(".modal"));for(const t of e)a(t).modal("hide");null!=document.querySelector(".swal-modal")&&s.default.close(void 0)}})),this.policyListService.addPolicies([new f.TwoFactorAuthenticationPolicy,new c.MasterPasswordPolicy,new d.PasswordGeneratorPolicy,new v.SingleOrgPolicy,new u.RequireSsoPolicy,new p.PersonalOwnershipPolicy,new l.DisableSendPolicy,new h.SendOptionsPolicy,new m.ResetPasswordPolicy]),this.setFullWidth()}ngOnDestroy(){this.broadcasterService.unsubscribe(H)}logOut(e){return i(this,void 0,void 0,(function*(){yield this.eventService.uploadEvents();const t=yield this.stateService.getUserId();yield Promise.all([this.eventService.clearEvents(),this.syncService.setLastSync(new Date(0)),this.cryptoService.clearKeys(),this.settingsService.clear(t),this.cipherService.clear(t),this.folderService.clear(t),this.collectionService.clear(t),this.policyService.clear(t),this.passwordGenerationService.clear(),this.keyConnectorService.clear()]),this.searchService.clearIndex(),this.authService.logOut((()=>i(this,void 0,void 0,(function*(){e&&this.platformUtilsService.showToast("warning",this.i18nService.t("loggedOut"),this.i18nService.t("loginExpired")),yield this.stateService.clean({userId:t}),s.default.close(),this.router.navigate(["/"])}))))}))}recordActivity(){return i(this,void 0,void 0,(function*(){const e=(new Date).getTime();null!=this.lastActivity&&e-this.lastActivity<250||(this.lastActivity=e,this.stateService.setLastActive(e),this.isIdle&&(this.isIdle=!1,this.idleStateChanged()),null!=this.idleTimer&&(window.clearTimeout(this.idleTimer),this.idleTimer=null),this.idleTimer=window.setTimeout((()=>{this.isIdle||(this.isIdle=!0,this.idleStateChanged())}),6e5))}))}showToast(e){let t="";const n={};"string"==typeof e.text?t=e.text:1===e.text.length?t=e.text[0]:(e.text.forEach((e=>t+="

"+this.sanitizer.sanitize(r.SecurityContext.HTML,e)+"

")),n.enableHtml=!0),null!=e.options&&(!0===e.options.trustedHtml&&(n.enableHtml=!0),null!=e.options.timeout&&e.options.timeout>0&&(n.timeOut=e.options.timeout)),this.toastrService.show(t,e.title,n,"toast-"+e.type)}idleStateChanged(){this.isIdle?this.notificationsService.disconnectFromInactivity():this.notificationsService.reconnectFromActivity()}setFullWidth(){return i(this,void 0,void 0,(function*(){(yield this.stateService.getEnableFullWidth())?document.body.classList.add("full-width"):document.body.classList.remove("full-width")}))}}t.AppComponent=L,L.ɵfac=function(e){return new(e||L)(g.ɵɵdirectiveInject(y.BroadcasterService),g.ɵɵdirectiveInject(x.TokenService),g.ɵɵdirectiveInject(S.FolderService),g.ɵɵdirectiveInject(b.SettingsService),g.ɵɵdirectiveInject(w.SyncService),g.ɵɵdirectiveInject(C.PasswordGenerationService),g.ɵɵdirectiveInject(I.CipherService),g.ɵɵdirectiveInject(E.AuthService),g.ɵɵdirectiveInject(P.Router),g.ɵɵdirectiveInject(O.ToastrService),g.ɵɵdirectiveInject(k.I18nService),g.ɵɵdirectiveInject(A.PlatformUtilsService),g.ɵɵdirectiveInject(g.NgZone),g.ɵɵdirectiveInject(T.VaultTimeoutService),g.ɵɵdirectiveInject(M.CryptoService),g.ɵɵdirectiveInject(B.CollectionService),g.ɵɵdirectiveInject(D.DomSanitizer),g.ɵɵdirectiveInject(R.SearchService),g.ɵɵdirectiveInject(F.NotificationsService),g.ɵɵdirectiveInject(U.RouterService),g.ɵɵdirectiveInject(V.StateService),g.ɵɵdirectiveInject(N.EventService),g.ɵɵdirectiveInject(_.PolicyService),g.ɵɵdirectiveInject(j.PolicyListService),g.ɵɵdirectiveInject(z.KeyConnectorService))},L.ɵcmp=g.ɵɵdefineComponent({type:L,selectors:[["app-root"]],decls:2,vars:0,template:function(e,t){1&e&&(g.ɵɵelement(0,"router-outlet"),g.ɵɵtext(1,"\n"))},directives:[P.RouterOutlet],encapsulation:2})},50009:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseAcceptComponent=void 0;n(68012);const r=n(14857),o=(n(51554),n(73828),n(73569),n(32621)),a=n(68012),s=n(73828),l=n(51554),c=n(73569);class d{constructor(e,t,n,i,r){this.router=e,this.platformUtilService=t,this.i18nService=n,this.route=i,this.stateService=r,this.loading=!0,this.authed=!1,this.requiredParameters=[],this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed"}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){let t=this.requiredParameters.some((t=>null==(null==e?void 0:e[t])||""===e[t])),n=null;if(!t)if(this.authed=yield this.stateService.getIsAuthenticated(),this.authed)try{yield this.authedHandler(e)}catch(i){t=!0,n=i.message}else this.email=e.email,yield this.unauthedHandler(e);if(t){const e=null!=n?this.i18nService.t(this.failedShortMessage,n):this.i18nService.t(this.failedMessage);this.platformUtilService.showToast("error",null,e,{timeout:1e4}),this.router.navigate(["/"])}this.loading=!1}))))}}t.BaseAcceptComponent=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵdirectiveInject(a.Router),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(a.ActivatedRoute),o.ɵɵdirectiveInject(c.StateService))},d.ɵdir=o.ɵɵdefineDirective({type:d})},75512:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseEventsComponent=void 0;n(97445),n(51554),n(36631),n(73828);const r=n(63412),o=(n(3202),n(32621)),a=n(3202),s=n(51554),l=n(97445),c=n(73828),d=n(36631);class p{constructor(e,t,n,i,r){this.eventService=e,this.i18nService=t,this.exportService=n,this.platformUtilsService=i,this.logService=r,this.loading=!0,this.loaded=!1,this.dirtyDates=!0;const o=this.eventService.getDefaultDateFilters();this.start=o[0],this.end=o[1]}exportEvents(){return i(this,void 0,void 0,(function*(){if(this.appApiPromiseUnfulfilled()||this.dirtyDates)return;this.loading=!0;const e=this.parseDates();if(null!=e){try{this.exportPromise=this.export(e[0],e[1]),yield this.exportPromise}catch(t){this.logService.error(`Handled exception: ${t}`)}this.exportPromise=null,this.loading=!1}}))}loadEvents(e){return i(this,void 0,void 0,(function*(){if(this.appApiPromiseUnfulfilled())return;const t=this.parseDates();if(null==t)return;this.loading=!0;let n=[];try{const i=this.loadAndParseEvents(t[0],t[1],e?null:this.continuationToken);e?this.refreshPromise=i:this.morePromise=i;const r=yield i;this.continuationToken=r.continuationToken,n=r.events}catch(i){this.logService.error(`Handled exception: ${i}`)}!e&&null!=this.events&&this.events.length>0?this.events=this.events.concat(n):this.events=n,this.dirtyDates=!1,this.loading=!1,this.morePromise=null,this.refreshPromise=null}))}loadAndParseEvents(e,t,n){return i(this,void 0,void 0,(function*(){const o=yield this.requestEvents(e,t,n),a=yield Promise.all(o.data.map((e=>i(this,void 0,void 0,(function*(){const t=null==e.actingUserId?e.userId:e.actingUserId,n=yield this.eventService.getEventInfo(e),i=this.getUserName(e,t),o=null!=i?i.name:this.i18nService.t("unknown");return new r.EventView({message:n.message,humanReadableMessage:n.humanReadableMessage,appIcon:n.appIcon,appName:n.appName,userId:t,userName:null!=e.installationId?`Installation: ${e.installationId}`:o,userEmail:null!=i?i.email:"",date:e.date,ip:e.ipAddress,type:e.type,installationId:e.installationId})})))));return{continuationToken:o.continuationToken,events:a}}))}parseDates(){let e=null;try{e=this.eventService.formatDateFilters(this.start,this.end)}catch(t){return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidDateRange")),null}return e}appApiPromiseUnfulfilled(){return null!=this.refreshPromise||null!=this.morePromise||null!=this.exportPromise}export(e,t){return i(this,void 0,void 0,(function*(){let n=this.continuationToken,i=[].concat(this.events);for(;null!=n;){const r=yield this.loadAndParseEvents(e,t,n);n=r.continuationToken,i=i.concat(r.events)}const r=yield this.exportService.getEventExport(i),o=this.exportService.getFileName(this.exportFileName,"csv");this.platformUtilsService.saveFile(window,r,{type:"text/plain"},o)}))}}t.BaseEventsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.EventService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ExportService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.LogService))},p.ɵdir=o.ɵɵdefineDirective({type:p})},1833:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BasePeopleComponent=void 0;const r=n(32621),o=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(73828),n(60421),n(73569),n(82769)),a=n(85331),s=n(32621),l=n(91674),c=n(60421),d=n(51554),p=n(73828),u=n(85714),m=n(47594),h=n(64684),v=n(36631),f=n(50154),g=n(52080),y=n(73569),x=["confirmTemplate"];class S{constructor(e,t,n,i,r,o,a,s,l,c,d){this.apiService=e,this.searchService=t,this.i18nService=n,this.platformUtilsService=i,this.cryptoService=r,this.validationService=o,this.modalService=a,this.logService=s,this.searchPipe=l,this.userNamePipe=c,this.stateService=d,this.loading=!0,this.statusMap=new Map,this.users=[],this.pagedUsers=[],this.allUsers=[],this.didScroll=!1,this.pageSize=100,this.pagedUsersCount=0}get allCount(){return null!=this.allUsers?this.allUsers.length:0}get invitedCount(){return this.statusMap.has(this.userStatusType.Invited)?this.statusMap.get(this.userStatusType.Invited).length:0}get acceptedCount(){return this.statusMap.has(this.userStatusType.Accepted)?this.statusMap.get(this.userStatusType.Accepted).length:0}get confirmedCount(){return this.statusMap.has(this.userStatusType.Confirmed)?this.statusMap.get(this.userStatusType.Confirmed).length:0}get showConfirmUsers(){return null!=this.allUsers&&null!=this.statusMap&&this.allUsers.length>1&&this.confirmedCount>0&&this.confirmedCount<3&&this.acceptedCount>0}get showBulkConfirmUsers(){return this.acceptedCount>0}load(){return i(this,void 0,void 0,(function*(){const e=yield this.getUsers();this.statusMap.clear();for(const t of o.Utils.iterateEnum(this.userStatusType))this.statusMap.set(t,[]);this.allUsers=null!=e.data&&e.data.length>0?e.data:[],this.allUsers.sort(o.Utils.getSortFunction(this.i18nService,"email")),this.allUsers.forEach((e=>{this.statusMap.has(e.status)?this.statusMap.get(e.status).push(e):this.statusMap.set(e.status,[e])})),this.filter(this.status),this.loading=!1}))}filter(e){this.status=e,null!=this.status?this.users=this.statusMap.get(this.status):this.users=this.allUsers,this.selectAll(!1),this.resetPaging()}loadMore(){if(!this.users||this.users.length<=this.pageSize)return;const e=this.pagedUsers.length;let t=this.pageSize;0===e&&this.pagedUsersCount>this.pageSize&&(t=this.pagedUsersCount),this.users.length>e&&(this.pagedUsers=this.pagedUsers.concat(this.users.slice(e,e+t))),this.pagedUsersCount=this.pagedUsers.length,this.didScroll=this.pagedUsers.length>this.pageSize}checkUser(e,t){e.checked=null==t?!e.checked:t}selectAll(e){e&&this.selectAll(!1);const t=this.searchPipe.transform(this.users,this.searchText,"name","email","id"),n=e&&t.length>500?500:t.length;for(let i=0;ii(this,void 0,void 0,(function*(){try{this.actionPromise=this.confirmUser(e,t),yield this.actionPromise,function(t){e.status=t.userStatusType.Confirmed;const n=t.statusMap.get(t.userStatusType.Accepted).indexOf(e);n>-1&&(t.statusMap.get(t.userStatusType.Accepted).splice(n,1),t.statusMap.get(t.userStatusType.Confirmed).push(e))}(this),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e)))}catch(n){throw this.validationService.showError(n),n}finally{this.actionPromise=null}}));if(null==this.actionPromise)try{const r=yield this.apiService.getUserPublicKey(e.userId),s=o.Utils.fromB64ToArray(r.publicKey),l=yield this.stateService.getAutoConfirmFingerPrints();if(null==l||!l){const[n]=yield this.modalService.openViewRef(a.UserConfirmComponent,this.confirmModalRef,(r=>{r.name=this.userNamePipe.transform(e),r.userId=null!=e?e.userId:null,r.publicKey=s,r.onConfirmedUser.subscribe((()=>i(this,void 0,void 0,(function*(){try{r.formPromise=t(s),yield r.formPromise,n.close()}catch(e){this.logService.error(e)}}))))}));return}try{const t=yield this.cryptoService.getFingerprint(e.userId,s.buffer);this.logService.info(`User's fingerprint: ${t.join("-")}`)}catch(n){this.logService.error(n)}yield t(s)}catch(n){this.logService.error(`Handled exception: ${n}`)}}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.users&&this.users.length>this.pageSize}deleteWarningMessage(e){return this.i18nService.t("removeUserConfirmation")}getCheckedUsers(){return this.users.filter((e=>e.checked))}removeUser(e){let t=this.users.indexOf(e);t>-1&&(this.users.splice(t,1),this.resetPaging()),this.statusMap.has(e.status)&&(t=this.statusMap.get(e.status).indexOf(e),t>-1&&this.statusMap.get(e.status).splice(t,1))}}t.BasePeopleComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.SearchService),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.CryptoService),s.ɵɵdirectiveInject(m.ValidationService),s.ɵɵdirectiveInject(h.ModalService),s.ɵɵdirectiveInject(v.LogService),s.ɵɵdirectiveInject(f.SearchPipe),s.ɵɵdirectiveInject(g.UserNamePipe),s.ɵɵdirectiveInject(y.StateService))},S.ɵdir=s.ɵɵdefineDirective({type:S,viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(x,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.confirmModalRef=e.first)}}})},64713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NestedCheckboxComponent=void 0;const i=n(32621),r=n(82769),o=n(32621),a=n(96832),s=n(57490),l=n(99729);function c(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",7),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.set(t)})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",3),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("name",n.pascalize(e.id))("id",e.id)("ngModel",e.get()),o.ɵɵadvance(2),o.ɵɵproperty("for",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,5,e.id),"\n ")}}class d{constructor(){this.onSavedUser=new i.EventEmitter,this.onDeletedUser=new i.EventEmitter}get parentIndeterminate(){return!this.parentChecked&&this.checkboxes.some((e=>e.get()))}get parentChecked(){return this.checkboxes.every((e=>e.get()))}set parentChecked(e){this.checkboxes.forEach((t=>{t.set(e)}))}pascalize(e){return r.Utils.camelToPascalCase(e)}}t.NestedCheckboxComponent=d,d.ɵfac=function(e){return new(e||d)},d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["app-nested-checkbox"]],inputs:{parentId:"parentId",checkboxes:"checkboxes"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:17,vars:9,consts:[[1,"form-group","mb-0"],[1,"form-check","mt-1","form-check-block"],["type","checkbox",1,"form-check-input",3,"name","id","ngModel","indeterminate","ngModelChange"],[1,"form-check-label","font-weight-normal",3,"for"],[1,"form-group","form-group-child-check","mb-0"],["class","form-check mt-1",4,"ngFor","ngForOf"],[1,"form-check","mt-1"],["type","checkbox",1,"form-check-input",3,"name","id","ngModel","ngModelChange"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"input",2),o.ɵɵlistener("ngModelChange",(function(e){return t.parentChecked=e})),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",4),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,c,8,7,"div",5),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("name",t.pascalize(t.parentId))("id",t.parentId)("ngModel",t.parentChecked)("indeterminate",t.parentIndeterminate),o.ɵɵadvance(2),o.ɵɵproperty("for",t.parentId),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(8,7,t.parentId),"\n "),o.ɵɵadvance(6),o.ɵɵproperty("ngForOf",t.checkboxes))},directives:[a.CheckboxControlValueAccessor,a.NgControlStatus,a.NgModel,s.NgForOf],pipes:[l.I18nPipe],encapsulation:2})},13045:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSwitcherComponent=void 0;n(51554),n(63513);const r=n(82769),o=(n(27957),n(13637)),a=n(32621),s=n(63513),l=n(51554),c=n(57490),d=n(8863),p=n(6373),u=n(15370),m=n(44653),h=n(37342),v=n(68012),f=n(62985),g=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"div",16),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",17),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",18),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(6,1,"organizationIsDisabled"),"\n "))}function x(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",19),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",17),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",18),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(6,1,"accessingUsingProvider",e.activeOrganization.providerName),"\n ")}}const S=function(e){return["/organizations",e]};function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",20),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",21),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"i",22),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"span",23),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(6,S,e.id)),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",e.id===n.activeOrganization.id?"visible":"invisible"),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,4,"currentOrganization")),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",1),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"button",2),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelement(5,"app-avatar",3),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",1),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",4),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"span"),a.ɵɵtext(12),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"small",5),a.ɵɵtext(15),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"div",6),a.ɵɵtext(20,"\n "),a.ɵɵelement(21,"i",7),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"div"),a.ɵɵtext(27,"\n "),a.ɵɵtemplate(28,y,8,3,"div",8),a.ɵɵtext(29,"\n "),a.ɵɵtemplate(30,x,8,4,"div",9),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n\n "),a.ɵɵelementStart(33,"bit-menu",null,10),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"ul",11),a.ɵɵtext(37,"\n "),a.ɵɵtemplate(38,b,12,8,"li",12),a.ɵɵtext(39,"\n "),a.ɵɵelement(40,"bit-menu-divider"),a.ɵɵtext(41,"\n "),a.ɵɵelementStart(42,"li",13),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"a",14),a.ɵɵtext(45,"\n "),a.ɵɵelement(46,"i",15),a.ɵɵtext(47),a.ɵɵpipe(48,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(52,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵreference(34),t=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("appA11yTitle",a.ɵɵpipeBind1(3,11,"organizationPicker"))("bitMenuTriggerFor",e),a.ɵɵadvance(3),a.ɵɵproperty("data",t.activeOrganization.name)("circle",!0)("dynamic",!0),a.ɵɵadvance(7),a.ɵɵtextInterpolate(t.activeOrganization.name),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(16,13,"organization")),a.ɵɵadvance(13),a.ɵɵproperty("ngIf",!t.activeOrganization.enabled),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.activeOrganization.isProviderUser),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",t.organizations),a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(48,15,"newOrganization"),"")}}class C{constructor(e,t){this.organizationService=e,this.i18nService=t,this.activeOrganization=null,this.organizations=[],this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.organizationService.getAll();this.organizations=e.filter((e=>o.NavigationPermissionsService.canAccessAdmin(e))).sort(r.Utils.getSortFunction(this.i18nService,"name")),this.loaded=!0}))}}t.OrganizationSwitcherComponent=C,C.ɵfac=function(e){return new(e||C)(a.ɵɵdirectiveInject(s.OrganizationService),a.ɵɵdirectiveInject(l.I18nService))},C.ɵcmp=a.ɵɵdefineComponent({type:C,selectors:[["app-organization-switcher"]],inputs:{activeOrganization:"activeOrganization"},decls:2,vars:1,consts:[["class","tw-flex",4,"ngIf"],[1,"tw-flex"],["type","button","id","pickerButton",1,"tw-flex","tw-items-center","tw-bg-background-alt","tw-border-none",3,"appA11yTitle","bitMenuTriggerFor"],["size","45",3,"data","circle","dynamic"],[1,"org-name","tw-ml-3"],[1,"tw-text-muted"],[1,"tw-ml-3"],["aria-hidden","true",1,"bwi","bwi-angle-down","tw-text-main"],["class","tw-ml-3 tw-border tw-border-solid tw-rounded tw-border-danger-500 tw-text-danger",4,"ngIf"],["class","tw-ml-3 tw-border tw-border-solid tw-rounded tw-border-info-500 tw-text-info",4,"ngIf"],["orgPickerMenu",""],["aria-labelledby","pickerButton",1,"tw-p-0","tw-m-0"],["class","tw-list-none tw-flex tw-flex-col","role","none",4,"ngFor","ngForOf"],["role","none",1,"tw-list-none"],["bit-menu-item","","routerLink","/create-organization"],[1,"bwi","bwi-plus","mr-2"],[1,"tw-ml-3","tw-border","tw-border-solid","tw-rounded","tw-border-danger-500","tw-text-danger"],[1,"tw-py-2","tw-px-5"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"tw-ml-3","tw-border","tw-border-solid","tw-rounded","tw-border-info-500","tw-text-info"],["role","none",1,"tw-list-none","tw-flex","tw-flex-col"],["bit-menu-item","",3,"routerLink"],[1,"bwi","bwi-check","mr-2",3,"ngClass"],[1,"tw-sr-only"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,w,53,17,"div",0),a.ɵɵtext(1,"\n")),2&e&&a.ɵɵproperty("ngIf",t.loaded&&null!=t.activeOrganization)},directives:[c.NgIf,d.A11yTitleDirective,p.MenuTriggerForDirective,u.AvatarComponent,m.MenuComponent,c.NgForOf,h.MenuDividerComponent,v.RouterLinkWithHref,f.MenuItemComponent,c.NgClass],pipes:[g.I18nPipe],encapsulation:2})},30563:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptComponent=void 0;const i=n(38991),r=n(32621),o=n(96832),a=n(45728),s=n(48198),l=n(8863),c=n(57490),d=n(53142),p=n(99729),u=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class m extends i.PasswordRepromptComponent{}t.PasswordRepromptComponent=m,m.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(m)))(t||m)}}(),m.ɵcmp=r.ɵɵdefineComponent({type:m,selectors:[["ng-component"]],features:[r.ɵɵInheritDefinitionFeature],decls:59,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","masterPassword"],[1,"d-flex"],["id","masterPassword","name","MasterPassword","required","","appAutofocus","","appInputVerbatim","",1,"text-monospace","form-control",3,"type","ngModel","ngModelChange"],["type","button",1,"ml-1","btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],[1,"modal-footer"],["type","submit","appBlurClick","",1,"btn","btn-primary","btn-submit"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",7),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",8),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementStart(23,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"label",10),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",11),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"input",12),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"button",13),r.ɵɵlistener("click",(function(){return t.togglePassword()})),r.ɵɵpipe(34,"i18n"),r.ɵɵtext(35,"\n "),r.ɵɵelement(36,"i",14),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"div",15),r.ɵɵtext(43,"\n "),r.ɵɵelementStart(44,"button",16),r.ɵɵtext(45,"\n "),r.ɵɵelementStart(46,"span"),r.ɵɵtext(47),r.ɵɵpipe(48,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementStart(51,"button",17),r.ɵɵtext(52),r.ɵɵpipe(53,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(55,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(56,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(57,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n")),2&e&&(r.ɵɵadvance(10),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,9,"passwordConfirmation"),"\n "),r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,11,"passwordConfirmationDesc"),"\n\n "),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(27,13,"masterPass")),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(34,15,"toggleVisibility")),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(21,u,!t.showPassword,t.showPassword)),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(48,17,"ok")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(53,19,"cancel"),"\n "))},directives:[o.ɵNgNoValidate,o.NgControlStatusGroup,o.NgForm,o.DefaultValueAccessor,o.RequiredValidator,a.AutofocusDirective,s.InputVerbatimDirective,o.NgControlStatus,o.NgModel,l.A11yTitleDirective,c.NgClass,d.BlurClickDirective],pipes:[p.I18nPipe],encapsulation:2})},40946:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordStrengthComponent=void 0;n(51554);const i=n(32621),r=n(51554),o=n(57490);function a(e,t){if(1&e&&(i.ɵɵelementContainerStart(0),i.ɵɵtext(1),i.ɵɵelementContainerEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.text,"\n ")}}const s=function(e){return{width:e}};class l{constructor(e){this.i18nService=e,this.showText=!1,this.scoreWidth=0,this.color="bg-danger"}ngOnChanges(){switch(this.scoreWidth=null==this.score?0:20*(this.score+1),this.score){case 4:this.color="bg-success",this.text=this.i18nService.t("strong");break;case 3:this.color="bg-primary",this.text=this.i18nService.t("good");break;case 2:this.color="bg-warning",this.text=this.i18nService.t("weak");break;default:this.color="bg-danger",this.text=null!=this.score?this.i18nService.t("weak"):null}}}t.PasswordStrengthComponent=l,l.ɵfac=function(e){return new(e||l)(i.ɵɵdirectiveInject(r.I18nService))},l.ɵcmp=i.ɵɵdefineComponent({type:l,selectors:[["app-password-strength"]],inputs:{score:"score",showText:"showText"},features:[i.ɵɵNgOnChangesFeature],decls:8,vars:8,consts:[[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",3,"ngStyle"],[4,"ngIf"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"div",1),i.ɵɵtext(3,"\n "),i.ɵɵtemplate(4,a,2,1,"ng-container",2),i.ɵɵtext(5,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(6,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n")),2&e&&(i.ɵɵadvance(2),i.ɵɵclassMapInterpolate1("progress-bar ",t.color,""),i.ɵɵproperty("ngStyle",i.ɵɵpureFunction1(6,s,t.scoreWidth+"%")),i.ɵɵattribute("aria-valuenow",t.scoreWidth),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",t.showText&&t.text))},directives:[o.NgStyle,o.NgIf],encapsulation:2})},48403:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PremiumBadgeComponent=void 0;n(45552);const i=n(32621),r=n(45552),o=n(25243),a=n(25108),s=n(99729);function l(e,t){if(1&e){const e=i.ɵɵgetCurrentView();i.ɵɵelementStart(0,"button",1),i.ɵɵlistener("click",(function(){i.ɵɵrestoreView(e);return i.ɵɵnextContext().premiumRequired()})),i.ɵɵtext(1),i.ɵɵpipe(2,"i18n"),i.ɵɵelementEnd()}2&e&&(i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(2,1,"premium"),"\n "))}class c{constructor(e){this.messagingService=e}premiumRequired(){this.messagingService.send("premiumRequired")}}t.PremiumBadgeComponent=c,c.ɵfac=function(e){return new(e||c)(i.ɵɵdirectiveInject(r.MessagingService))},c.ɵcmp=i.ɵɵdefineComponent({type:c,selectors:[["app-premium-badge"]],decls:3,vars:0,consts:[["bit-badge","","badgeType","success",3,"click",4,"appNotPremium"],["bit-badge","","badgeType","success",3,"click"]],template:function(e,t){1&e&&(i.ɵɵtext(0,"\n "),i.ɵɵtemplate(1,l,3,3,"button",0),i.ɵɵtext(2,"\n "))},directives:[o.NotPremiumDirective,a.BadgeComponent],pipes:[s.I18nPipe],encapsulation:2})},61841:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HomeGuard=void 0;n(68012),n(62694);const r=n(72440),o=n(32621),a=n(68012),s=n(62694);class l{constructor(e,t){this.router=e,this.authService=t}canActivate(e){return i(this,void 0,void 0,(function*(){const t=yield this.authService.getAuthStatus();return t===r.AuthenticationStatus.LoggedOut?this.router.createUrlTree(["/login"],{queryParams:e.queryParams}):t===r.AuthenticationStatus.Locked?this.router.createUrlTree(["/lock"],{queryParams:e.queryParams}):this.router.createUrlTree(["/vault"],{queryParams:e.queryParams})}))}}t.HomeGuard=l,l.ɵfac=function(e){return new(e||l)(o.ɵɵinject(a.Router),o.ɵɵinject(s.AuthService))},l.ɵprov=o.ɵɵdefineInjectable({token:l,factory:l.ɵfac})},59964:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FooterComponent=void 0;n(73828);const r=n(32621),o=n(73828),a=n(99729);class s{constructor(e){this.platformUtilsService=e,this.year="2015"}ngOnInit(){return i(this,void 0,void 0,(function*(){this.year=(new Date).getFullYear().toString(),this.version=yield this.platformUtilsService.getApplicationVersion()}))}}t.FooterComponent=s,s.ɵfac=function(e){return new(e||s)(r.ɵɵdirectiveInject(o.PlatformUtilsService))},s.ɵcmp=r.ɵɵdefineComponent({type:s,selectors:[["app-footer"]],decls:15,vars:5,consts:[[1,"container","footer","text-muted"],[1,"row"],[1,"col"],[1,"col","text-center"],[1,"col","text-right"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"div",3),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("© ",t.year,", Bitwarden Inc."),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(11,2,"versionNumber",t.version),"\n "))},pipes:[a.I18nPipe],encapsulation:2})},16823:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FrontendLayoutComponent=void 0;n(73828);const r=n(32621),o=n(73828),a=n(68012),s=n(99729);class l{constructor(e){this.platformUtilsService=e,this.year="2015"}ngOnInit(){return i(this,void 0,void 0,(function*(){this.year=(new Date).getFullYear().toString(),this.version=yield this.platformUtilsService.getApplicationVersion(),document.body.classList.add("layout_frontend")}))}ngOnDestroy(){document.body.classList.remove("layout_frontend")}}t.FrontendLayoutComponent=l,l.ɵfac=function(e){return new(e||l)(r.ɵɵdirectiveInject(o.PlatformUtilsService))},l.ɵcmp=r.ɵɵdefineComponent({type:l,selectors:[["app-frontend-layout"]],decls:8,vars:5,consts:[[1,"container","my-5","text-muted","text-center"]],template:function(e,t){1&e&&(r.ɵɵelement(0,"router-outlet"),r.ɵɵtext(1,"\n"),r.ɵɵelementStart(2,"div",0),r.ɵɵtext(3),r.ɵɵelement(4,"br"),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n © ",t.year,", Bitwarden Inc. "),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(6,2,"versionNumber",t.version),"\n"))},directives:[a.RouterOutlet],pipes:[s.I18nPipe],encapsulation:2})},53280:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NavbarComponent=void 0;n(32621),n(8470),n(51554),n(45552),n(63513),n(73828),n(68291),n(9724),n(30694);const r=n(82769),o=n(13637),a=n(32621),s=n(45552),l=n(73828),c=n(30694),d=n(68291),p=n(9724),u=n(63513),m=n(51554),h=n(8470),v=n(57490),f=n(68012),g=n(8863),y=n(6373),x=n(44653),S=n(37342),b=n(62985),w=n(39159),C=n(15370),I=n(99729),E=function(e){return["/organizations",e]};function P(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(4,E,e.organizations[0].id)),a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"organizations"))}}const O=function(e){return["/providers",e]};function k(e,t){if(1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("routerLink",a.ɵɵpureFunction1(4,O,e.providers[0].id)),a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"provider"))}}function A(e,t){1&e&&(a.ɵɵelementStart(0,"li",6),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",31),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"provider")))}function T(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,k,6,6,"li",11),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,A,6,3,"li",11),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",1==e.providers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.providers.length>1)}}function M(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",32),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"app-avatar",33),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",34),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"span"),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"small",35),a.ɵɵtext(11),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("data",e.name)("email",e.email)("circle",!0),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(8,5,"loggedInAs")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(e.name)}}const B=function(e){return{"nav-background-alt":e}};class D{constructor(e,t,n,i,r,o,a,s,l){this.messagingService=e,this.platformUtilsService=t,this.tokenService=n,this.providerService=i,this.syncService=r,this.organizationService=o,this.i18nService=a,this.broadcasterService=s,this.ngZone=l,this.selfHosted=!1,this.providers=[],this.organizations=[],this.selfHosted=this.platformUtilsService.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.name=yield this.tokenService.getName(),this.email=yield this.tokenService.getEmail(),null!=this.name&&""!==this.name.trim()||(this.name=this.email),null==(yield this.syncService.getLastSync())&&(yield this.syncService.fullSync(!1)),this.providers=yield this.providerService.getAll(),this.organizations=yield this.buildOrganizations(),this.broadcasterService.subscribe(this.constructor.name,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("organizationCreated"===e.command)this.organizations.length<1&&(this.organizations=yield this.buildOrganizations())}))))}))))}))}buildOrganizations(){return i(this,void 0,void 0,(function*(){return(yield this.organizationService.getAll()).filter((e=>o.NavigationPermissionsService.canAccessAdmin(e))).sort(r.Utils.getSortFunction(this.i18nService,"name"))}))}lock(){this.messagingService.send("lockVault")}logOut(){this.messagingService.send("logout")}}t.NavbarComponent=D,D.ɵfac=function(e){return new(e||D)(a.ɵɵdirectiveInject(s.MessagingService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.TokenService),a.ɵɵdirectiveInject(d.ProviderService),a.ɵɵdirectiveInject(p.SyncService),a.ɵɵdirectiveInject(u.OrganizationService),a.ɵɵdirectiveInject(m.I18nService),a.ɵɵdirectiveInject(h.BroadcasterService),a.ɵɵdirectiveInject(a.NgZone))},D.ɵcmp=a.ɵɵdefineComponent({type:D,selectors:[["app-navbar"]],decls:106,vars:38,consts:[[1,"navbar","navbar-expand","navbar-dark",3,"ngClass"],[1,"container"],["routerLink","/",1,"navbar-brand",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-shield"],[1,"collapse","navbar-collapse"],[1,"navbar-nav"],["routerLinkActive","active",1,"nav-item"],["routerLink","/vault",1,"nav-link"],["routerLink","/sends",1,"nav-link"],["routerLink","/tools",1,"nav-link"],["routerLink","/reports",1,"nav-link"],["class","nav-item","routerLinkActive","active",4,"ngIf"],[4,"ngIf"],[1,"navbar-nav","flex-row","ml-md-auto","d-none","d-md-flex"],[1,"tw-border-0","tw-bg-transparent","tw-text-alt2","tw-opacity-70","hover:tw-opacity-90",3,"bitMenuTriggerFor"],["aria-hidden","true",1,"bwi","bwi-user-circle","bwi-lg"],["aria-hidden","true",1,"bwi","bwi-caret-down","bwi-sm"],[1,"dropdown-menu"],["accountMenu",""],[1,"tw-max-w-[300px]","tw-min-w-[200px]","tw-flex","tw-flex-col"],["class","tw-flex tw-items-center tw-leading-tight tw-text-info tw-py-1 tw-px-4","appStopProp","",4,"ngIf"],["bit-menu-item","","routerLink","/settings/account"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-user"],["bit-menu-item","","href","https://bitwarden.com/help/","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-question-circle"],["bit-menu-item","","href","https://bitwarden.com/download/","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-download"],["bit-menu-item","","type","button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lock"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sign-out"],[1,"nav-link",3,"routerLink"],["routerLink","/providers",1,"nav-link"],["appStopProp","",1,"tw-flex","tw-items-center","tw-leading-tight","tw-text-info","tw-py-1","tw-px-4"],["size","25","fontSize","14",3,"data","email","circle"],[1,"tw-ml-2","tw-block","tw-overflow-hidden","tw-whitespace-nowrap"],[1,"tw-text-muted","tw-block","tw-overflow-hidden","tw-whitespace-nowrap"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"nav",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"a",2),a.ɵɵpipe(5,"i18n"),a.ɵɵtext(6,"\n "),a.ɵɵelement(7,"i",3),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"div",4),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"ul",5),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"li",6),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"a",7),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"li",6),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"a",8),a.ɵɵtext(24),a.ɵɵpipe(25,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"li",6),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"a",9),a.ɵɵtext(31),a.ɵɵpipe(32,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"li",6),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"a",10),a.ɵɵtext(38),a.ɵɵpipe(39,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵtemplate(42,P,6,6,"li",11),a.ɵɵtext(43,"\n "),a.ɵɵtemplate(44,T,6,2,"ng-container",12),a.ɵɵtext(45,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"ul",13),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"li"),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"button",14),a.ɵɵtext(53,"\n "),a.ɵɵelement(54,"i",15),a.ɵɵtext(55,"\n "),a.ɵɵelement(56,"i",16),a.ɵɵtext(57,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(58,"\n "),a.ɵɵelementStart(59,"bit-menu",17,18),a.ɵɵtext(61,"\n "),a.ɵɵelementStart(62,"div",19),a.ɵɵtext(63,"\n "),a.ɵɵtemplate(64,M,14,7,"div",20),a.ɵɵtext(65,"\n "),a.ɵɵelement(66,"bit-menu-divider"),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"a",21),a.ɵɵtext(69,"\n "),a.ɵɵelement(70,"i",22),a.ɵɵtext(71),a.ɵɵpipe(72,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(73,"\n "),a.ɵɵelementStart(74,"a",23),a.ɵɵtext(75,"\n "),a.ɵɵelement(76,"i",24),a.ɵɵtext(77),a.ɵɵpipe(78,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(79,"\n "),a.ɵɵelementStart(80,"a",25),a.ɵɵtext(81,"\n "),a.ɵɵelement(82,"i",26),a.ɵɵtext(83),a.ɵɵpipe(84,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(85,"\n "),a.ɵɵelement(86,"bit-menu-divider"),a.ɵɵtext(87,"\n "),a.ɵɵelementStart(88,"button",27),a.ɵɵlistener("click",(function(){return t.lock()})),a.ɵɵtext(89,"\n "),a.ɵɵelement(90,"i",28),a.ɵɵtext(91),a.ɵɵpipe(92,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(93,"\n "),a.ɵɵelementStart(94,"button",27),a.ɵɵlistener("click",(function(){return t.logOut()})),a.ɵɵtext(95,"\n "),a.ɵɵelement(96,"i",29),a.ɵɵtext(97),a.ɵɵpipe(98,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(99,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(100,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(101,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(102,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(103,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(104,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(105,"\n")),2&e){const e=a.ɵɵreference(60);a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(36,B,t.selfHosted)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind2(5,15,"pageTitle","Bitwarden")),a.ɵɵadvance(13),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(18,18,"vaults")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(25,20,"send")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(32,22,"tools")),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(39,24,"reports")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.organizations.length>=1),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.providers.length>=1),a.ɵɵadvance(8),a.ɵɵproperty("bitMenuTriggerFor",e),a.ɵɵadvance(12),a.ɵɵproperty("ngIf",t.name),a.ɵɵadvance(7),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(72,26,"accountSettings"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(78,28,"getHelp"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(84,30,"getApps"),"\n "),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(92,32,"lockNow"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(98,34,"logOut"),"\n ")}},directives:[v.NgClass,f.RouterLinkWithHref,g.A11yTitleDirective,f.RouterLinkActive,v.NgIf,y.MenuTriggerForDirective,x.MenuComponent,S.MenuDividerComponent,b.MenuItemComponent,w.StopPropDirective,C.AvatarComponent],pipes:[I.I18nPipe],encapsulation:2})},53767:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UserLayoutComponent=void 0;const i=n(32621),r=n(53280),o=n(68012),a=n(59964);class s{ngOnInit(){document.body.classList.remove("layout_frontend")}}t.UserLayoutComponent=s,s.ɵfac=function(e){return new(e||s)},s.ɵcmp=i.ɵɵdefineComponent({type:s,selectors:[["app-user-layout"]],decls:6,vars:0,template:function(e,t){1&e&&(i.ɵɵelement(0,"app-navbar"),i.ɵɵtext(1,"\n"),i.ɵɵelement(2,"router-outlet"),i.ɵɵtext(3,"\n"),i.ɵɵelement(4,"app-footer"),i.ɵɵtext(5,"\n"))},directives:[r.NavbarComponent,o.RouterOutlet,a.FooterComponent],encapsulation:2})},30322:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LooseComponentsModule=void 0;const i=n(65691),r=n(84696),o=n(38595),a=n(98528),s=n(32621);class l{}t.LooseComponentsModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({imports:[[r.SharedModule,o.VaultFilterModule,a.OrganizationBadgeModule,i.PipesModule]]})},53397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GetOrgNameFromIdPipe=void 0;const i=n(32621);class r{transform(e,t){var n;return null===(n=t.find((t=>t.id===e)))||void 0===n?void 0:n.name}}t.GetOrgNameFromIdPipe=r,r.ɵfac=function(e){return new(e||r)},r.ɵpipe=i.ɵɵdefinePipe({name:"orgNameFromId",type:r,pure:!0})},65691:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PipesModule=void 0;const i=n(32621);class r{}t.PipesModule=r,r.ɵfac=function(e){return new(e||r)},r.ɵmod=i.ɵɵdefineNgModule({type:r}),r.ɵinj=i.ɵɵdefineInjector({imports:[[]]})},84696:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SharedModule=void 0;const i=n(83072),r=n(57490),o=n(3276),a=n(34956),s=n(76775),l=n(12352),c=n(11155),d=n(3951),p=n(59413),u=n(53151),m=n(81114),h=n(78611),v=n(59267),f=n(32406),g=n(31861),y=n(73986),x=n(57548),S=n(77015),b=n(54556),w=n(54996),C=n(74299),I=n(66173),E=n(56649),P=n(12734),O=n(64273),k=n(80585),A=n(96119),T=n(23806),M=n(53734),B=n(88609),D=n(96133),R=n(65989),F=n(99643),U=n(17964),V=n(56168),N=n(7972),_=n(12774),j=n(99692),z=n(91679),H=n(84782),L=n(98204),K=n(85247),q=n(16407),G=n(13418),W=n(96053),$=n(22671),Y=n(81262),Q=n(2487),J=n(72377),Z=n(66598),X=n(15419),ee=n(32584),te=n(96832),ne=n(68012),ie=n(30202),re=n(37407),oe=n(68290),ae=n(44926),se=n(32621);r.registerLocaleData(o.default,"af"),r.registerLocaleData(a.default,"az"),r.registerLocaleData(s.default,"be"),r.registerLocaleData(l.default,"bg"),r.registerLocaleData(c.default,"bn"),r.registerLocaleData(d.default,"bs"),r.registerLocaleData(p.default,"ca"),r.registerLocaleData(u.default,"cs"),r.registerLocaleData(m.default,"da"),r.registerLocaleData(h.default,"de"),r.registerLocaleData(v.default,"el"),r.registerLocaleData(f.default,"en-GB"),r.registerLocaleData(g.default,"en-IN"),r.registerLocaleData(y.default,"eo"),r.registerLocaleData(x.default,"es"),r.registerLocaleData(S.default,"et"),r.registerLocaleData(b.default,"fi"),r.registerLocaleData(w.default,"fil"),r.registerLocaleData(C.default,"fr"),r.registerLocaleData(I.default,"he"),r.registerLocaleData(E.default,"hi"),r.registerLocaleData(P.default,"hr"),r.registerLocaleData(O.default,"hu"),r.registerLocaleData(k.default,"id"),r.registerLocaleData(A.default,"it"),r.registerLocaleData(T.default,"ja"),r.registerLocaleData(M.default,"ka"),r.registerLocaleData(B.default,"km"),r.registerLocaleData(D.default,"kn"),r.registerLocaleData(R.default,"ko"),r.registerLocaleData(F.default,"lv"),r.registerLocaleData(U.default,"ml"),r.registerLocaleData(V.default,"nb"),r.registerLocaleData(N.default,"nl"),r.registerLocaleData(_.default,"nn"),r.registerLocaleData(j.default,"pl"),r.registerLocaleData(z.default,"pt-BR"),r.registerLocaleData(H.default,"pt-PT"),r.registerLocaleData(L.default,"ro"),r.registerLocaleData(K.default,"ru"),r.registerLocaleData(q.default,"si"),r.registerLocaleData(G.default,"sk"),r.registerLocaleData(W.default,"sl"),r.registerLocaleData($.default,"sr"),r.registerLocaleData(Y.default,"sv"),r.registerLocaleData(Q.default,"tr"),r.registerLocaleData(J.default,"uk"),r.registerLocaleData(Z.default,"vi"),r.registerLocaleData(X.default,"zh-CN"),r.registerLocaleData(ee.default,"zh-TW");class le{}t.SharedModule=le,le.ɵfac=function(e){return new(e||le)},le.ɵmod=se.ɵɵdefineNgModule({type:le}),le.ɵinj=se.ɵɵdefineInjector({providers:[r.DatePipe],imports:[[r.CommonModule,i.DragDropModule,te.FormsModule,re.InfiniteScrollModule,ae.JslibModule,te.ReactiveFormsModule,ne.RouterModule,ie.BadgeModule,ie.ButtonModule,ie.CalloutModule,oe.ToastrModule,ie.BadgeModule,ie.ButtonModule,ie.MenuModule],r.CommonModule,i.DragDropModule,te.FormsModule,re.InfiniteScrollModule,ae.JslibModule,te.ReactiveFormsModule,ne.RouterModule,ie.BadgeModule,ie.ButtonModule,ie.CalloutModule,oe.ToastrModule,ie.BadgeModule,ie.ButtonModule,ie.MenuModule]})},43310:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionFilterComponent=void 0;const i=n(57563),r=n(32621),o=n(57490),a=n(99729),s=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",16),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).collapse(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",3),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(4);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,4,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed(e.node))("aria-controls",e.node.name+"_children"),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(6,s,t.isCollapsed(e.node),!t.isCollapsed(e.node)))}}function c(e,t){1&e&&r.ɵɵelement(0,"i",17)}function d(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}const p=function(e){return{$implicit:e}};function u(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",18),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,d,2,0,"ng-container",8),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵnextContext(2);const t=r.ɵɵreference(3);r.ɵɵproperty("id",e.node.name+"_children"),r.ɵɵadvance(2),r.ɵɵproperty("ngTemplateOutlet",t)("ngTemplateOutletContext",r.ɵɵpureFunction1(3,p,e.children))}}const m=function(e){return{active:e}};function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",11),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,l,5,9,"button",12),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",13),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyFilter(t.node)})),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,1,0,"i",14),r.ɵɵtext(9),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,u,4,5,"ul",15),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(5,m,e.node.id===n.activeFilter.selectedCollectionId)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.children.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",0===e.children.length),r.ɵɵadvance(1),r.ɵɵtextInterpolate1(" ",e.node.name,"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.children.length&&!n.isCollapsed(e.node))}}function v(e,t){if(1&e&&(r.ɵɵtext(0,"\n "),r.ɵɵtemplate(1,h,14,7,"li",9),r.ɵɵtext(2,"\n ")),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵproperty("ngForOf",e)}}function f(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",6),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,v,3,1,"ng-template",null,7,r.ɵɵtemplateRefExtractor),r.ɵɵtext(4,"\n "),r.ɵɵtemplate(5,f,2,0,"ng-container",8),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵreference(3),t=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵproperty("ngTemplateOutlet",e)("ngTemplateOutletContext",r.ɵɵpureFunction1(2,p,t.nestedCollections))}}function y(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",2),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.toggleCollapse(t.collectionsGrouping)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",3),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"h3",4),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,g,7,4,"ul",5),r.ɵɵtext(16,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,5,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed(e.collectionsGrouping)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(9,s,e.isCollapsed(e.collectionsGrouping),!e.isCollapsed(e.collectionsGrouping))),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,7,e.collectionsGrouping.name),""),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed(e.collectionsGrouping))}}class x extends i.CollectionFilterComponent{}t.CollectionFilterComponent=x,x.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(x)))(t||x)}}(),x.ɵcmp=r.ɵɵdefineComponent({type:x,selectors:[["app-collection-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-heading"],["aria-controls","collection-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-title"],["id","collection-filters","class","filter-options",4,"ngIf"],["id","collection-filters",1,"filter-options"],["recursiveCollections",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["class","toggle-button",3,"title","click",4,"ngIf"],[1,"filter-button",3,"click"],["class","bwi bwi-collection bwi-fw","aria-hidden","true",4,"ngIf"],["class","nested-filter-options",3,"id",4,"ngIf"],[1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-collection","bwi-fw"],[1,"nested-filter-options",3,"id"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,y,17,12,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[o.NgIf,o.NgClass,o.NgTemplateOutlet,o.NgForOf],pipes:[a.I18nPipe],encapsulation:2})},94642:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderFilterComponent=void 0;const i=n(73821),r=n(32621),o=n(57490),a=n(8863),s=n(99729),l=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function c(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",19),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).toggleCollapse(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",3),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(4);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,4,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed(e.node))("aria-controls",e.node.name+"_children"),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(6,l,t.isCollapsed(e.node),!t.isCollapsed(e.node)))}}function d(e,t){1&e&&r.ɵɵelement(0,"i",20)}function p(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",21),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(4).editFolder(t.node)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",22),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"editFolder"))}function u(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerEnd())}const m=function(e){return{$implicit:e}};function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",23),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,u,2,0,"ng-container",10),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵnextContext(2);const t=r.ɵɵreference(3);r.ɵɵproperty("id",e.node.name+"_children"),r.ɵɵadvance(2),r.ɵɵproperty("ngTemplateOutlet",t)("ngTemplateOutletContext",r.ɵɵpureFunction1(3,m,e.children))}}const v=function(e){return{active:e}};function f(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",12),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",13),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,c,5,9,"button",14),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",15),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyFilter(t.node)})),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,d,1,0,"i",16),r.ɵɵtext(9),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,p,5,3,"button",17),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,h,4,5,"ul",18),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,v,e.node.id===n.activeFilter.selectedFolderId&&n.activeFilter.selectedFolder)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.children.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",0===e.children.length),r.ɵɵadvance(1),r.ɵɵtextInterpolate1(" ",e.node.name,"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.node.id),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.children.length&&!n.isCollapsed(e.node))}}function g(e,t){if(1&e&&(r.ɵɵtext(0,"\n "),r.ɵɵtemplate(1,f,16,8,"li",11),r.ɵɵtext(2,"\n ")),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵproperty("ngForOf",e)}}function y(e,t){1&e&&r.ɵɵelementContainer(0)}function x(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",8),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,g,3,1,"ng-template",null,9,r.ɵɵtemplateRefExtractor),r.ɵɵtext(4,"\n "),r.ɵɵtemplate(5,y,1,0,"ng-container",10),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵreference(3),t=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵproperty("ngTemplateOutlet",e)("ngTemplateOutletContext",r.ɵɵpureFunction1(2,m,t.nestedFolders))}}function S(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",2),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.toggleCollapse(t.foldersGrouping)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",3),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"h3",4),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",5),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addFolder()})),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",6),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵtemplate(21,x,7,4,"ul",7),r.ɵɵtext(22,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed(e.foldersGrouping)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(12,l,e.isCollapsed(e.foldersGrouping),!e.isCollapsed(e.foldersGrouping))),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,8,"folders"),""),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,10,"addFolder")),r.ɵɵadvance(7),r.ɵɵproperty("ngIf",!e.isCollapsed(e.foldersGrouping))}}class b extends i.FolderFilterComponent{}t.FolderFilterComponent=b,b.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(b)))(t||b)}}(),b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-folder-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-heading"],["aria-controls","folder-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-title"],[1,"text-muted","ml-auto","add-button",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["id","folder-filters","class","filter-options",4,"ngIf"],["id","folder-filters",1,"filter-options"],["recursiveFolders",""],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["class","toggle-button",3,"title","click",4,"ngIf"],[1,"filter-button",3,"click"],["class","bwi bwi-fw bwi-folder","aria-hidden","true",4,"ngIf"],["class","edit-button",3,"appA11yTitle","click",4,"ngIf"],["class","nested-filter-options",3,"id",4,"ngIf"],[1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-folder"],[1,"edit-button",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-pencil","bwi-fw"],[1,"nested-filter-options",3,"id"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,S,23,15,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.hide)},directives:[o.NgIf,o.NgClass,a.A11yTitleDirective,o.NgTemplateOutlet,o.NgForOf],pipes:[s.I18nPipe],encapsulation:2})},71735:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.LinkSsoComponent=void 0;n(68012);const r=n(25563),o=(n(91674),n(62694),n(1659),n(56071),n(51554),n(36631),n(84275),n(73828),n(73569),n(27957),n(32621)),a=n(73828),s=n(51554),l=n(91674),c=n(62694),d=n(68012),p=n(1659),u=n(84275),m=n(73569),h=n(56071),v=n(36631),f=n(1142),g=n(99729);class y extends r.SsoComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(i,r,t,o,l,e,n,a,c,s,d),this.returnUri="/settings/organizations",this.returnUri="/settings/organizations",this.redirectUri=window.location.origin+"/sso-connector.html",this.clientId="web"}ngAfterContentInit(){return i(this,void 0,void 0,(function*(){this.identifier=this.organization.identifier}))}}t.LinkSsoComponent=y,y.ɵfac=function(e){return new(e||y)(o.ɵɵdirectiveInject(a.PlatformUtilsService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.ApiService),o.ɵɵdirectiveInject(c.AuthService),o.ɵɵdirectiveInject(d.Router),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.CryptoFunctionService),o.ɵɵdirectiveInject(u.PasswordGenerationService),o.ɵɵdirectiveInject(m.StateService),o.ɵɵdirectiveInject(h.EnvironmentService),o.ɵɵdirectiveInject(v.LogService))},y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["app-link-sso"]],inputs:{organization:"organization"},features:[o.ɵɵInheritDefinitionFeature],decls:6,vars:3,consts:[["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-link"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"a",0),o.ɵɵlistener("click",(function(){return t.submit(t.returnUri,!0)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",1),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"linkSso"),"\n"))},directives:[f.StopClickDirective],pipes:[g.I18nPipe],encapsulation:2})},24188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationFilterComponent=void 0;const i=n(9177),r=n(32621),o=n(57490),a=n(68012),s=n(6373),l=n(44653),c=n(14253),d=n(99729);function p(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",4),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",5),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",6),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"button",7),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",8),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"li",9),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",6),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"a",10),r.ɵɵtext(21,"\n "),r.ɵɵelement(22,"i",11),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(11),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(12,2,"myVault"),"\n "),r.ɵɵadvance(12),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(24,4,"newOrganization"),"\n "))}function u(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",22),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",23),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"bit-menu",24,25),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"app-organization-options",26),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵreference(8),t=r.ɵɵnextContext().$implicit;r.ɵɵadvance(2),r.ɵɵproperty("bitMenuTriggerFor",e),r.ɵɵadvance(8),r.ɵɵproperty("organization",t)}}const m=function(e){return{active:e}};function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyOrganizationFilter(t)})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,u,13,2,"ng-container",0),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(3,m,e.id===n.activeFilter.selectedOrganizationId)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.name,"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.id===n.activeFilter.selectedOrganizationId)}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",17),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,h,12,5,"li",18),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",9),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",6),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",10),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",11),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,2,"newOrganization"),"\n ")}}const f=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};function g(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).toggleCollapse()})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",14),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).clearFilter()})),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,v,16,4,"ul",16),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(10,f,e.isCollapsed,!e.isCollapsed)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,!e.hasActiveFilter)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,8,e.organizationGrouping.name),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed)}}function y(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",27),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.organizations[0].name,"\n ")}}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(4).applyOrganizationFilter(t)})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",21),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerStart(9),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"button",22),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"i",23),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"bit-menu",24,25),r.ɵɵtext(18,"\n "),r.ɵɵelement(19,"app-organization-options",26),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementContainerEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=r.ɵɵreference(17),i=r.ɵɵnextContext(4);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,m,e.id===i.activeFilter.selectedOrganizationId)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",e.name,"\n "),r.ɵɵadvance(4),r.ɵɵproperty("bitMenuTriggerFor",n),r.ɵɵadvance(8),r.ɵɵproperty("organization",e)}}function S(e,t){1&e&&(r.ɵɵelementStart(0,"li",9),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",6),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",10),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",11),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(8,1,"newOrganization"),"\n "))}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"ul",17),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",19),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",6),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).applyMyVaultFilter()})),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",8),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,x,24,6,"li",18),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,S,11,3,"li",28),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,m,e.activeFilter.myVaultOnly)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,4,"myVault"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!("singleOrganizationPolicy"===e.displayMode))}}function w(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",12),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",13),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).toggleCollapse()})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelement(7,"i",14),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).clearFilter()})),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,b,18,8,"ul",16),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(5,6,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!e.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(10,f,e.isCollapsed,!e.isCollapsed)),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,!e.hasActiveFilter)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n  ",r.ɵɵpipeBind1(12,8,e.organizationGrouping.name),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.isCollapsed)}}function C(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementContainerStart(2,1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,p,29,6,"ng-container",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,g,17,15,"ng-container",2),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,y,10,1,"ng-container",2),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,w,17,15,"ng-container",3),r.ɵɵtext(11,"\n "),r.ɵɵelementContainerEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"hr"),r.ɵɵtext(14,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngSwitch",e.displayMode),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","noOrganizations"),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","personalOwnershipPolicy"),r.ɵɵadvance(2),r.ɵɵproperty("ngSwitchCase","singleOrganizationAndPersonalOwnershipPolicies")}}class I extends i.OrganizationFilterComponent{constructor(){super(...arguments),this.displayText="allVaults"}}t.OrganizationFilterComponent=I,I.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(I)))(t||I)}}(),I.ɵcmp=r.ɵɵdefineComponent({type:I,selectors:[["app-organization-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],[1,"filter-options"],[1,"filter-option","active"],[1,"filter-buttons"],[1,"filter-button"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-user"],[1,"filter-option"],["href","#","routerLink","/create-organization",1,"filter-button"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"filter-heading"],["aria-controls","organization-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],[1,"filter-button",3,"ngClass","click"],["id","organization-filters","class","filter-options",4,"ngIf"],["id","organization-filters",1,"filter-options"],["class","filter-option",3,"ngClass",4,"ngFor","ngForOf"],[1,"filter-option",3,"ngClass"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-business"],[1,"org-options","ml-auto",3,"bitMenuTriggerFor"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v"],[1,"filter-organization-options"],["orgMenu",""],[3,"organization"],[1,"filter-button","active"],["class","filter-option",4,"ngIf"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,C,15,4,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.hide)},directives:[o.NgIf,o.NgSwitch,o.NgSwitchCase,o.NgSwitchDefault,a.RouterLinkWithHref,o.NgClass,o.NgForOf,s.MenuTriggerForDirective,l.MenuComponent,c.OrganizationOptionsComponent],pipes:[d.I18nPipe],encapsulation:2})},14253:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationOptionsComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(73828),n(62166),n(9724);const r=n(49906),o=n(82769),a=(n(27957),n(27784)),s=n(32621),l=n(73828),c=n(51554),d=n(91674),p=n(9724),u=n(85714),m=n(62166),h=n(36631),v=n(57490),f=n(71735),g=n(99729);function y(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",2),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",3),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.toggleResetPasswordEnrollment(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",9),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"enrollPasswordReset"),"\n "))}function S(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.toggleResetPasswordEnrollment(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",10),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"withdrawPasswordReset"),"\n "))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.unlinkSso(t.organization)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",13),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"unlinkSso"),"\n "))}function w(e,t){if(1&e&&(s.ɵɵtext(0,"\n "),s.ɵɵelementStart(1,"app-link-sso",14),s.ɵɵtext(2," "),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n ")),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(1),s.ɵɵproperty("organization",e.organization)}}function C(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,b,5,3,"button",11),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,w,4,1,"ng-template",null,12,s.ɵɵtemplateRefExtractor),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵreference(5),t=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organization.ssoBound)("ngIfElse",e)}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",4),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,x,5,3,"button",5),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,5,3,"button",5),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,7,2,"ng-container",0),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"button",6),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext();return t.leave(t.organization)})),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"i",7),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowEnrollmentChanges(e.organization)&&!e.organization.resetPasswordEnrolled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowEnrollmentChanges(e.organization)&&e.organization.resetPasswordEnrolled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.organization.useSso&&e.organization.identifier),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(12,4,"leave"),"\n ")}}class E{constructor(e,t,n,i,r,o,a){this.platformUtilsService=e,this.i18nService=t,this.apiService=n,this.syncService=i,this.cryptoService=r,this.policyService=o,this.logService=a,this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.policies=yield this.policyService.getAll(r.PolicyType.ResetPassword),this.loaded=!0}))}allowEnrollmentChanges(e){if(e.usePolicies&&e.useResetPassword&&e.hasPublicAndPrivateKeys){const t=this.policies.find((t=>t.organizationId===e.id));if(null!=t&&t.enabled)return!e.resetPasswordEnrolled||!t.data.autoEnrollEnabled}return!1}showEnrolledStatus(e){return e.useResetPassword&&e.resetPasswordEnrolled&&this.policies.some((t=>t.organizationId===e.id&&t.enabled))}unlinkSso(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("unlinkSsoConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.apiService.deleteSsoUser(e.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,"Unlinked SSO"),yield this.load()}catch(t){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),this.logService.error(t)}}))}leave(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("leaveOrganizationConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.apiService.postLeaveOrganization(e.id).then((()=>this.syncService.fullSync(!0))),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("leftOrganization")),yield this.load()}catch(t){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),t.message),this.logService.error(t)}}))}toggleResetPasswordEnrollment(e){return i(this,void 0,void 0,(function*(){let t=null,n="withdrawPasswordResetSuccess";if(e.resetPasswordEnrolled){const n=new a.OrganizationUserResetPasswordEnrollmentRequest;n.resetPasswordKey=t,this.actionPromise=this.apiService.putOrganizationUserResetPasswordEnrollment(e.id,e.userId,n).then((()=>this.syncService.fullSync(!0)))}else{if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("resetPasswordEnrollmentWarning"),null,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return;this.actionPromise=this.apiService.getOrganizationKeys(e.id).then((r=>i(this,void 0,void 0,(function*(){if(null==r)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));const i=o.Utils.fromB64ToArray(r.publicKey),s=yield this.cryptoService.getEncKey(),l=yield this.cryptoService.rsaEncrypt(s.key,i.buffer);t=l.encryptedString,n="enrollPasswordResetSuccess";const c=new a.OrganizationUserResetPasswordEnrollmentRequest;return c.resetPasswordKey=t,this.apiService.putOrganizationUserResetPasswordEnrollment(e.id,e.userId,c)})))).then((()=>this.syncService.fullSync(!0)))}try{yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(n)),yield this.load()}catch(r){this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),r.message),this.logService.error(r)}}))}}t.OrganizationOptionsComponent=E,E.ɵfac=function(e){return new(e||E)(s.ɵɵdirectiveInject(l.PlatformUtilsService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.ApiService),s.ɵɵdirectiveInject(p.SyncService),s.ɵɵdirectiveInject(u.CryptoService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(h.LogService))},E.ɵcmp=s.ɵɵdefineComponent({type:E,selectors:[["app-organization-options"]],inputs:{organization:"organization"},decls:4,vars:2,consts:[[4,"ngIf"],["class","tw-max-w-[300px] tw-min-w-[200px] tw-flex tw-flex-col",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted","tw-m-2",3,"title"],[1,"sr-only"],[1,"tw-max-w-[300px]","tw-min-w-[200px]","tw-flex","tw-flex-col"],["class","dropdown-item",3,"click",4,"ngIf"],[1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sign-out"],[1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],["class","dropdown-item",3,"click",4,"ngIf","ngIfElse"],["linkSso",""],["aria-hidden","true",1,"bwi","bwi-fw","bwi-chain-broken"],[3,"organization"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,y,9,6,"ng-container",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,I,14,6,"div",1),s.ɵɵtext(3,"\n")),2&e&&(s.ɵɵproperty("ngIf",!t.loaded),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.loaded))},directives:[v.NgIf,f.LinkSsoComponent],pipes:[g.I18nPipe],encapsulation:2})},38371:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StatusFilterComponent=void 0;const i=n(80617),r=n(32621),o=n(57490),a=n(99729),s=function(e){return{active:e}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).applyFilter("favorites")})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",7),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,s,"favorites"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(8,2,"favorites"),"\n ")}}function c(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",2),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).applyFilter("trash")})),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",8),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(4,s,"trash"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(8,2,"trash"),"\n ")}}function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"button",4),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().applyFilter("all")})),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",5),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,l,11,6,"li",6),r.ɵɵtext(17,"\n "),r.ɵɵtemplate(18,c,11,6,"li",6),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n"),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(6,s,"all"===e.activeFilter.status)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(12,4,"allItems"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!e.hideFavorites),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.hideTrash)}}class p extends i.StatusFilterComponent{}t.StatusFilterComponent=p,p.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(p)))(t||p)}}(),p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-status-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],[1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-filter"],["class","filter-option",3,"ngClass",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-star"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,21,8,"ng-container",0),r.ɵɵtext(1,"\n")),2&e&&r.ɵɵproperty("ngIf",t.show)},directives:[o.NgIf,o.NgClass],pipes:[a.I18nPipe],encapsulation:2})},73937:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFilterComponent=void 0;const i=n(74951),r=n(32621),o=n(57490),a=n(99729),s=function(e){return{active:e}};function l(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"ul",4),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",5),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"span",6),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Login)})),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",8),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"li",5),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",6),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Card)})),r.ɵɵtext(19,"\n "),r.ɵɵelement(20,"i",9),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"li",5),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"span",6),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.Identity)})),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"i",10),r.ɵɵtext(33),r.ɵɵpipe(34,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"li",5),r.ɵɵtext(39,"\n "),r.ɵɵelementStart(40,"span",6),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"button",7),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext();return t.applyFilter(t.cipherTypeEnum.SecureNote)})),r.ɵɵtext(43,"\n "),r.ɵɵelement(44,"i",11),r.ɵɵtext(45),r.ɵɵpipe(46,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n"),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(16,s,e.activeFilter.cipherType===e.cipherTypeEnum.Login)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(10,8,"typeLogin"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(18,s,e.activeFilter.cipherType===e.cipherTypeEnum.Card)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(22,10,"typeCard"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(20,s,e.activeFilter.cipherType===e.cipherTypeEnum.Identity)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(34,12,"typeIdentity"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(22,s,e.activeFilter.cipherType===e.cipherTypeEnum.SecureNote)),r.ɵɵadvance(7),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(46,14,"typeSecureNote"),"\n ")}}const c=function(e,t){return{"bwi-angle-right":e,"bwi-angle-down":t}};class d extends i.TypeFilterComponent{}t.TypeFilterComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=r.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-type-filter"]],features:[r.ɵɵInheritDefinitionFeature],decls:15,vars:12,consts:[[1,"filter-heading"],["aria-controls","type-filters",1,"toggle-button",3,"title","click"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"],["id","type-filters","class","filter-options",4,"ngIf"],["id","type-filters",1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],[1,"filter-button",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-globe"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-credit-card"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-id-card"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sticky-note"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",1),r.ɵɵlistener("click",(function(){return t.toggleCollapse()})),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelement(5,"i",2),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h3"),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n"),r.ɵɵtemplate(13,l,50,24,"ul",3),r.ɵɵtext(14,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,5,"toggleCollapse")),r.ɵɵattribute("aria-expanded",!t.isCollapsed),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(9,c,t.isCollapsed,!t.isCollapsed)),r.ɵɵadvance(4),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(10,7,"types"),""),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!t.isCollapsed))},directives:[o.NgClass,o.NgIf],pipes:[a.I18nPipe],encapsulation:2})},25398:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultFilterComponent=void 0;const r=n(91843),o=n(32621),a=n(57490),s=n(8863),l=n(96832),c=n(45728),d=n(24188),p=n(38371),u=n(73937),m=n(94642),h=n(43310),v=n(99729);function f(e,t){1&e&&(o.ɵɵelementStart(0,"div",3),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd())}function g(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",5),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementStart(5,"a",6),o.ɵɵpipe(6,"i18n"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",7),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"div",8),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",9),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().searchText=t}))("input",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().searchTextChanged()})),o.ɵɵpipe(15,"i18n"),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"app-organization-filter",10),o.ɵɵlistener("onNodeCollapseStateChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().applyFilter(t)})),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",11),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"app-status-filter",12),o.ɵɵlistener("onFilterChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().applyFilter(t)})),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"div",11),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"app-type-filter",13),o.ɵɵlistener("onNodeCollapseStateChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().applyFilter(t)})),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",11),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"app-folder-filter",14),o.ɵɵlistener("onNodeCollapseStateChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().applyFilter(t)}))("onAddFolder",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().addFolder()}))("onEditFolder",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().editFolder(t)})),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"div",11),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"app-collection-filter",15),o.ɵɵlistener("onNodeCollapseStateChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().applyFilter(t)})),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,23,"filters"),"\n "),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(6,25,"learnMore")),o.ɵɵadvance(9),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(15,27,e.searchPlaceholder)||o.ɵɵpipeBind1(16,29,"searchVault")),o.ɵɵproperty("ngModel",e.searchText),o.ɵɵadvance(4),o.ɵɵproperty("hide",e.hideOrganizations)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("organizations",e.organizations)("activePersonalOwnershipPolicy",e.activePersonalOwnershipPolicy)("activeSingleOrganizationPolicy",e.activeSingleOrganizationPolicy),o.ɵɵadvance(4),o.ɵɵproperty("hideFavorites",e.hideFavorites)("hideTrash",e.hideTrash)("activeFilter",e.activeFilter),o.ɵɵadvance(5),o.ɵɵproperty("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes),o.ɵɵadvance(5),o.ɵɵproperty("hide",e.hideFolders)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("folderNodes",e.folders),o.ɵɵadvance(5),o.ɵɵproperty("hide",e.hideCollections)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("collectionNodes",e.collections)}}class y extends r.VaultFilterComponent{constructor(){super(...arguments),this.hideOrganizations=!0,this.hideFavorites=!0,this.hideFolders=!0}initCollections(){return i(this,void 0,void 0,(function*(){return this.organization.canEditAnyCollection?yield this.vaultFilterService.buildAdminCollections(this.organization.id):yield this.vaultFilterService.buildCollections(this.organization.id)}))}reloadCollectionsAndFolders(){return i(this,void 0,void 0,(function*(){this.collections=yield this.initCollections()}))}}t.OrganizationVaultFilterComponent=y,y.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(y)))(t||y)}}(),y.ɵcmp=o.ɵɵdefineComponent({type:y,selectors:[["app-organization-vault-filter"]],features:[o.ɵɵInheritDefinitionFeature],decls:7,vars:2,consts:[[1,"card","vault-filters"],["class","container loading-spinner",4,"ngIf"],[4,"ngIf"],[1,"container","loading-spinner"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-3x"],[1,"card-header","d-flex"],["href","https://bitwarden.com/help/searching-vault/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"card-body"],["type","search","id","search","autocomplete","off","appAutofocus","",1,"form-control",3,"placeholder","ngModel","ngModelChange","input"],[3,"hide","activeFilter","collapsedFilterNodes","organizations","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","onNodeCollapseStateChange","onFilterChange"],[1,"filter"],[3,"hideFavorites","hideTrash","activeFilter","onFilterChange"],[3,"activeFilter","collapsedFilterNodes","onNodeCollapseStateChange","onFilterChange"],[3,"hide","activeFilter","collapsedFilterNodes","folderNodes","onNodeCollapseStateChange","onFilterChange","onAddFolder","onEditFolder"],[3,"hide","activeFilter","collapsedFilterNodes","collectionNodes","onNodeCollapseStateChange","onFilterChange"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,f,4,0,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,g,41,31,"div",2),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n")),2&e&&(o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.isLoaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.isLoaded))},directives:[a.NgIf,s.A11yTitleDirective,l.DefaultValueAccessor,c.AutofocusDirective,l.NgControlStatus,l.NgModel,d.OrganizationFilterComponent,p.StatusFilterComponent,u.TypeFilterComponent,m.FolderFilterComponent,h.CollectionFilterComponent],pipes:[v.I18nPipe],encapsulation:2})},91843:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterComponent=void 0;const r=n(32621),o=n(48237),a=(n(33275),n(32621)),s=n(33275),l=n(57490),c=n(8863),d=n(96832),p=n(45728),u=n(24188),m=n(38371),h=n(73937),v=n(94642),f=n(43310),g=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"div",3),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵtext(3,"\n "),a.ɵɵelementEnd())}function x(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",5),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementStart(5,"a",6),a.ɵɵpipe(6,"i18n"),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"i",7),a.ɵɵtext(9,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"div",8),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"input",9),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().searchText=t}))("input",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().searchTextChanged()})),a.ɵɵpipe(15,"i18n"),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"app-organization-filter",10),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"div",11),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"app-status-filter",12),a.ɵɵlistener("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"div",11),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"app-type-filter",13),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",11),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"app-folder-filter",14),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)}))("onAddFolder",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().addFolder()}))("onEditFolder",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().editFolder(t)})),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"div",11),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"app-collection-filter",15),a.ɵɵlistener("onNodeCollapseStateChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().toggleFilterNodeCollapseState(t)}))("onFilterChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().applyFilter(t)})),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,23,"filters"),"\n "),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(6,25,"learnMore")),a.ɵɵadvance(9),a.ɵɵpropertyInterpolate("placeholder",a.ɵɵpipeBind1(15,27,e.searchPlaceholder)||a.ɵɵpipeBind1(16,29,"searchVault")),a.ɵɵproperty("ngModel",e.searchText),a.ɵɵadvance(4),a.ɵɵproperty("hide",e.hideOrganizations)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("organizations",e.organizations)("activePersonalOwnershipPolicy",e.activePersonalOwnershipPolicy)("activeSingleOrganizationPolicy",e.activeSingleOrganizationPolicy),a.ɵɵadvance(4),a.ɵɵproperty("hideFavorites",e.hideFavorites)("hideTrash",e.hideTrash)("activeFilter",e.activeFilter),a.ɵɵadvance(5),a.ɵɵproperty("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes),a.ɵɵadvance(5),a.ɵɵproperty("hide",e.hideFolders)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("folderNodes",e.folders),a.ɵɵadvance(5),a.ɵɵproperty("hide",e.hideCollections)("activeFilter",e.activeFilter)("collapsedFilterNodes",e.collapsedFilterNodes)("collectionNodes",e.collections)}}class S extends o.VaultFilterComponent{constructor(e){super(e),this.vaultFilterService=e,this.onSearchTextChanged=new r.EventEmitter,this.searchText=""}searchTextChanged(){this.onSearchTextChanged.emit(this.searchText)}reloadOrganizations(){return i(this,void 0,void 0,(function*(){this.organizations=yield this.vaultFilterService.buildOrganizations(),this.activePersonalOwnershipPolicy=yield this.vaultFilterService.checkForPersonalOwnershipPolicy(),this.activeSingleOrganizationPolicy=yield this.vaultFilterService.checkForSingleOrganizationPolicy()}))}}t.VaultFilterComponent=S,S.ɵfac=function(e){return new(e||S)(a.ɵɵdirectiveInject(s.VaultFilterService))},S.ɵcmp=a.ɵɵdefineComponent({type:S,selectors:[["app-vault-filter"]],outputs:{onSearchTextChanged:"onSearchTextChanged"},features:[a.ɵɵInheritDefinitionFeature],decls:7,vars:2,consts:[[1,"card","vault-filters"],["class","container loading-spinner",4,"ngIf"],[4,"ngIf"],[1,"container","loading-spinner"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-3x"],[1,"card-header","d-flex"],["href","https://bitwarden.com/help/searching-vault/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"card-body"],["type","search","id","search","autocomplete","off","appAutofocus","",1,"form-control",3,"placeholder","ngModel","ngModelChange","input"],[3,"hide","activeFilter","collapsedFilterNodes","organizations","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","onNodeCollapseStateChange","onFilterChange"],[1,"filter"],[3,"hideFavorites","hideTrash","activeFilter","onFilterChange"],[3,"activeFilter","collapsedFilterNodes","onNodeCollapseStateChange","onFilterChange"],[3,"hide","activeFilter","collapsedFilterNodes","folderNodes","onNodeCollapseStateChange","onFilterChange","onAddFolder","onEditFolder"],[3,"hide","activeFilter","collapsedFilterNodes","collectionNodes","onNodeCollapseStateChange","onFilterChange"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,y,4,0,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,x,41,31,"div",2),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n")),2&e&&(a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.isLoaded),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.isLoaded))},directives:[l.NgIf,c.A11yTitleDirective,d.DefaultValueAccessor,p.AutofocusDirective,d.NgControlStatus,d.NgModel,u.OrganizationFilterComponent,m.StatusFilterComponent,h.TypeFilterComponent,v.FolderFilterComponent,f.CollectionFilterComponent],pipes:[g.I18nPipe],encapsulation:2})},38595:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterModule=void 0;const i=n(84696),r=n(33275),o=n(32621);class a{}t.VaultFilterModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({providers:[r.VaultFilterService],imports:[[i.SharedModule]]})},33275:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VaultFilterService=void 0;const r=n(93370),o=n(27113),a=(n(91674),n(45330),n(3174),n(88308),n(63513),n(62166),n(73569),n(34917)),s=n(65642),l=n(32621),c=n(73569),d=n(63513),p=n(88308),u=n(45330),m=n(3174),h=n(62166),v=n(91674);class f extends o.VaultFilterService{constructor(e,t,n,i,r,o,a){super(e,t,n,i,r,o),this.apiService=a}buildAdminCollections(e){return i(this,void 0,void 0,(function*(){let t=[];const n=yield this.apiService.getCollections(e);if(null!=(null==n?void 0:n.data)&&n.data.length){const e=n.data.map((e=>new s.Collection(new a.CollectionData(e))));t=yield this.collectionService.decryptMany(e)}const i=yield this.collectionService.getAllNested(t);return new r.DynamicTreeNode({fullList:t,nestedList:i})}))}}t.VaultFilterService=f,f.ɵfac=function(e){return new(e||f)(l.ɵɵinject(c.StateService),l.ɵɵinject(d.OrganizationService),l.ɵɵinject(p.FolderService),l.ɵɵinject(u.CipherService),l.ɵɵinject(m.CollectionService),l.ɵɵinject(h.PolicyService),l.ɵɵinject(v.ApiService))},f.ɵprov=l.ɵɵdefineInjectable({token:f,factory:f.ɵfac})},97417:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultRoutingModule=void 0;const i=n(68012),r=n(2525),o=n(32621),a=(n(68012),[{path:"",component:r.IndividualVaultComponent,data:{titleId:"vaults"}}]);class s{}t.IndividualVaultRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(a)],i.RouterModule]})},2525:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=n(94735),s=(n(64684),n(8470),n(45330),n(85714),n(51554),n(45552),n(63513),n(44809),n(73828),n(73569),n(9724),n(30694),n(97144)),l=n(95414),c=n(41141),d=n(94652),p=n(91434),u=n(86305),m=n(27672),h=n(55715),v=(n(91843),n(81617),n(32621)),f=n(9724),g=n(68012),y=n(51554),x=n(64684),S=n(30694),b=n(85714),w=n(45552),C=n(73828),I=n(8470),E=n(73569),P=n(63513),O=n(81617),k=n(45330),A=n(44809),T=n(91843),M=n(57490),B=n(56820),D=n(23582),R=n(91434),F=n(51626),U=n(80945),V=n(99729),N=["vaultFilter"],_=["attachments"],j=["folderAddEdit"],z=["cipherAddEdit"],H=["share"],L=["collections"],K=["updateKeyTemplate"];function q(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",27),v.ɵɵpipe(3,"i18n"),v.ɵɵtext(4,"\n "),v.ɵɵelementStart(5,"span",28),v.ɵɵtext(6),v.ɵɵpipe(7,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(8,"\n "),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(3,2,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(7,4,"loading")))}function G(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"button",29),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().addCipher()})),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",30),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(3),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function W(e,t){if(1&e&&(v.ɵɵelementStart(0,"app-callout",31),v.ɵɵtext(1),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext();v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",e.trashCleanupWarning,"\n ")}}function $(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",32),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",33),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",34),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"button",36),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().updateKey()})),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,3,"updateKeyTitle"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"updateEncryptionKeyShortDesc")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"updateEncryptionKey"),"\n "))}function Y(e,t){1&e&&v.ɵɵelement(0,"app-verify-email",37)}function Q(e,t){1&e&&(v.ɵɵelementStart(0,"div",32),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",33),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",34),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"a",38),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,3,"updateBrowser"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"updateBrowserDesc")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"updateBrowser"),"\n "))}function J(e,t){1&e&&(v.ɵɵelementStart(0,"div",39),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",40),v.ɵɵtext(3,"\n "),v.ɵɵelement(4,"i",41),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",35),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"p"),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"a",42),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(5),v.ɵɵtextInterpolate1(" ",v.ɵɵpipeBind1(6,3,"goPremium"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,5,"premiumUpgradeUnlockFeatures")),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(16,7,"goPremium"),"\n "))}function Z(e,t){}function X(e,t){}function ee(e,t){}function te(e,t){}function ne(e,t){}function ie(e,t){}const re=function(e,t){return{"col-6":e,"col-9":t}},oe="VaultComponent";class ae{constructor(e,t,n,i,r,o,s,l,c,d,p,u,m,h,v,f,g){this.syncService=e,this.route=t,this.router=n,this.changeDetectorRef=i,this.i18nService=r,this.modalService=o,this.tokenService=s,this.cryptoService=l,this.messagingService=c,this.platformUtilsService=d,this.broadcasterService=p,this.ngZone=u,this.stateService=m,this.organizationService=h,this.vaultService=v,this.cipherService=f,this.passwordRepromptService=g,this.favorites=!1,this.type=null,this.folderId=null,this.collectionId=null,this.organizationId=null,this.myVaultOnly=!1,this.showVerifyEmail=!1,this.showBrowserOutdated=!1,this.showUpdateKey=!1,this.showPremiumCallout=!1,this.deleted=!1,this.trashCleanupWarning=null,this.activeFilter=new a.VaultFilter}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showVerifyEmail=!(yield this.tokenService.getEmailVerified()),this.showBrowserOutdated=-1!==window.navigator.userAgent.indexOf("MSIE"),this.trashCleanupWarning=this.i18nService.t(this.platformUtilsService.isSelfHost()?"trashCleanupWarningSelfHosted":"trashCleanupWarning"),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){yield this.syncService.fullSync(!1);const t=yield this.stateService.getCanAccessPremium();if(this.showPremiumCallout=!this.showVerifyEmail&&!t&&!this.platformUtilsService.isSelfHost(),this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),this.filterComponent.reloadOrganizations(),this.showUpdateKey=!(yield this.cryptoService.hasEncKey()),e.cipherId){const t=new s.CipherView;t.id=e.cipherId,"clone"===e.action?yield this.cloneCipher(t):"edit"===e.action&&(yield this.editCipher(t))}yield this.ciphersComponent.reload(),this.route.queryParams.subscribe((e=>i(this,void 0,void 0,(function*(){e.cipherId&&(null!=(yield this.cipherService.get(e.cipherId))?this.editCipherId(e.cipherId):(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unknownCipher")),this.router.navigate([],{queryParams:{cipherId:null},queryParamsHandling:"merge"})))})))),this.broadcasterService.subscribe(oe,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield Promise.all([this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),this.filterComponent.reloadOrganizations(),this.ciphersComponent.load(this.ciphersComponent.filter)]),this.changeDetectorRef.detectChanges())}))))}))}))))}))}get isShowingCards(){return this.showBrowserOutdated||this.showPremiumCallout||this.showUpdateKey||this.showVerifyEmail}ngOnDestroy(){this.broadcasterService.unsubscribe(oe)}applyVaultFilter(e){return i(this,void 0,void 0,(function*(){this.ciphersComponent.showAddNew="trash"!==e.status,this.activeFilter=e,yield this.ciphersComponent.reload(this.buildFilter(),"trash"===e.status),this.filterComponent.searchPlaceholder=this.vaultService.calculateSearchBarLocalizationString(this.activeFilter),this.go()}))}applyOrganizationFilter(e){return i(this,void 0,void 0,(function*(){null==e?(this.activeFilter.resetOrganization(),this.activeFilter.myVaultOnly=!0):this.activeFilter.selectedOrganizationId=e,yield this.applyVaultFilter(this.activeFilter)}))}filterSearchText(e){this.ciphersComponent.searchText=e,this.ciphersComponent.search(200)}buildFilter(){return e=>{let t=!0;return"favorites"===this.activeFilter.status&&t&&(t=e.favorite),"trash"===this.activeFilter.status&&t&&(t=e.isDeleted),null!=this.activeFilter.cipherType&&t&&(t=e.type===this.activeFilter.cipherType),this.activeFilter.selectedFolder&&"none"!=this.activeFilter.selectedFolderId&&t&&(t=e.folderId===this.activeFilter.selectedFolderId),null!=this.activeFilter.selectedCollectionId&&t&&(t=null!=e.collectionIds&&e.collectionIds.indexOf(this.activeFilter.selectedCollectionId)>-1),null!=this.activeFilter.selectedOrganizationId&&t&&(t=e.organizationId===this.activeFilter.selectedOrganizationId),this.activeFilter.myVaultOnly&&t&&(t=null===e.organizationId),t}}editCipherAttachments(e){return i(this,void 0,void 0,(function*(){const t=yield this.stateService.getCanAccessPremium();if(null==e.organizationId&&!t)return void this.messagingService.send("premiumRequired");if(null!=e.organizationId){const t=yield this.organizationService.get(e.organizationId);if(null!=t&&(null==t.maxStorageGb||0===t.maxStorageGb))return void this.messagingService.send("upgradeOrganization",{organizationId:e.organizationId})}let n=!1;const[r]=yield this.modalService.openViewRef(d.AttachmentsComponent,this.attachmentsModalRef,(t=>{t.cipherId=e.id,t.onUploadedAttachment.subscribe((()=>n=!0)),t.onDeletedAttachment.subscribe((()=>n=!0)),t.onReuploadedAttachment.subscribe((()=>n=!0))}));r.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){n&&(yield this.ciphersComponent.refresh()),n=!1}))))}))}shareCipher(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(h.ShareComponent,this.shareModalRef,(n=>{n.cipherId=e.id,n.onSharedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}editCipherCollections(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(u.CollectionsComponent,this.collectionsModalRef,(n=>{n.cipherId=e.id,n.onSavedCollections.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}addFolder(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(m.FolderAddEditComponent,this.folderAddEditModalRef,(t=>{t.folderId=null,t.onSavedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){e.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)}))))}))}))}editFolder(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(m.FolderAddEditComponent,this.folderAddEditModalRef,(n=>{n.folderId=e,n.onSavedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)})))),n.onDeletedFolder.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.filterComponent.reloadCollectionsAndFolders(this.activeFilter)}))))}))}))}addCipher(){return i(this,void 0,void 0,(function*(){const e=yield this.editCipher(null);if(e.type=this.type,e.folderId="none"===this.folderId?null:this.folderId,null!=this.activeFilter.selectedCollectionId){const t=this.filterComponent.collections.fullList.filter((e=>e.id===this.activeFilter.selectedCollectionId));t.length>0&&(e.organizationId=t[0].organizationId,e.collectionIds=[this.activeFilter.selectedCollectionId])}this.activeFilter.selectedFolderId&&this.activeFilter.selectedFolder&&(e.folderId=this.activeFilter.selectedFolderId),this.activeFilter.selectedOrganizationId&&(e.organizationId=this.activeFilter.selectedOrganizationId)}))}editCipher(e){return i(this,void 0,void 0,(function*(){return this.editCipherId(null==e?void 0:e.id)}))}editCipherId(e){return i(this,void 0,void 0,(function*(){const t=yield this.cipherService.get(e);if(null!=t&&0!=t.reprompt&&!(yield this.passwordRepromptService.showPasswordPrompt()))return void this.go({cipherId:null});const[n,r]=yield this.modalService.openViewRef(c.AddEditComponent,this.cipherAddEditModalRef,(t=>{t.cipherId=e,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()}))))}));return n.onClosedPromise().then((()=>{this.go({cipherId:null})})),r}))}cloneCipher(e){return i(this,void 0,void 0,(function*(){(yield this.editCipher(e)).cloneMode=!0}))}updateKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.UpdateKeyComponent,this.updateKeyModalRef)}))}go(e=null){null==e&&(e={favorites:!!this.favorites||null,type:this.type,folderId:this.folderId,collectionId:this.collectionId,deleted:!!this.deleted||null}),this.router.navigate([],{relativeTo:this.route,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0})}}t.IndividualVaultComponent=ae,ae.ɵfac=function(e){return new(e||ae)(v.ɵɵdirectiveInject(f.SyncService),v.ɵɵdirectiveInject(g.ActivatedRoute),v.ɵɵdirectiveInject(g.Router),v.ɵɵdirectiveInject(v.ChangeDetectorRef),v.ɵɵdirectiveInject(y.I18nService),v.ɵɵdirectiveInject(x.ModalService),v.ɵɵdirectiveInject(S.TokenService),v.ɵɵdirectiveInject(b.CryptoService),v.ɵɵdirectiveInject(w.MessagingService),v.ɵɵdirectiveInject(C.PlatformUtilsService),v.ɵɵdirectiveInject(I.BroadcasterService),v.ɵɵdirectiveInject(v.NgZone),v.ɵɵdirectiveInject(E.StateService),v.ɵɵdirectiveInject(P.OrganizationService),v.ɵɵdirectiveInject(O.VaultService),v.ɵɵdirectiveInject(k.CipherService),v.ɵɵdirectiveInject(A.PasswordRepromptService))},ae.ɵcmp=v.ɵɵdefineComponent({type:ae,selectors:[["app-vault"]],viewQuery:function(e,t){if(1&e&&(v.ɵɵviewQuery(N,7),v.ɵɵviewQuery(p.CiphersComponent,7),v.ɵɵviewQuery(_,7,r.ViewContainerRef),v.ɵɵviewQuery(j,7,r.ViewContainerRef),v.ɵɵviewQuery(z,7,r.ViewContainerRef),v.ɵɵviewQuery(H,7,r.ViewContainerRef),v.ɵɵviewQuery(L,7,r.ViewContainerRef),v.ɵɵviewQuery(K,7,r.ViewContainerRef)),2&e){let e;v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.filterComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.ciphersComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.folderAddEditModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.shareModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.collectionsModalRef=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.updateKeyModalRef=e.first)}},decls:79,vars:18,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"groupings"],[1,"content"],[1,"inner-content"],[3,"activeFilter","onFilterChange","onAddFolder","onEditFolder","onSearchTextChanged"],["vaultFilter",""],[3,"ngClass"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],[3,"ciphersComponent","deleted"],["type","button","class","btn btn-outline-primary btn-sm",3,"click",4,"ngIf"],["type","warning","icon","bwi-exclamation-triangle",4,"ngIf"],[3,"onCipherClicked","onAttachmentsClicked","onAddCipher","onShareClicked","onCollectionsClicked","onCloneClicked","onOrganzationBadgeClicked"],["class","card border-warning mb-4",4,"ngIf"],["class","d-block mb-4",4,"ngIf"],["class","card border-success mb-4",4,"ngIf"],["attachments",""],["folderAddEdit",""],["cipherAddEdit",""],["share",""],["collections",""],["updateKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["type","warning","icon","bwi-exclamation-triangle"],[1,"card","border-warning","mb-4"],[1,"card-header","bg-warning","text-white"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","bwi-fw"],[1,"card-body"],["type","button",1,"btn","btn-block","btn-outline-secondary",3,"click"],[1,"d-block","mb-4"],["target","_blank","href","https://browser-update.org/update-browser.html","rel","noopener",1,"btn","btn-block","btn-outline-secondary"],[1,"card","border-success","mb-4"],[1,"card-header","bg-success","text-white"],["aria-hidden","true",1,"bwi","bwi-star-f","bwi-fw"],["routerLink","/settings/subscription/premium",1,"btn","btn-block","btn-outline-secondary"]],template:function(e,t){if(1&e&&(v.ɵɵelementStart(0,"div",0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",1),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"div",2),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"div",3),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",4),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"div",5),v.ɵɵtext(11,"\n "),v.ɵɵelementStart(12,"app-vault-filter",6,7),v.ɵɵlistener("onFilterChange",(function(e){return t.applyVaultFilter(e)}))("onAddFolder",(function(){return t.addFolder()}))("onEditFolder",(function(e){return t.editFolder(e.id)}))("onSearchTextChanged",(function(e){return t.filterSearchText(e)})),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(15,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementStart(19,"div",8),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"div",9),v.ɵɵtext(22,"\n "),v.ɵɵelementStart(23,"h1"),v.ɵɵtext(24),v.ɵɵpipe(25,"i18n"),v.ɵɵelementStart(26,"small",10,11),v.ɵɵtext(28,"\n "),v.ɵɵtemplate(29,q,9,6,"ng-container",12),v.ɵɵtext(30,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n "),v.ɵɵelementStart(33,"div",13),v.ɵɵtext(34,"\n "),v.ɵɵelementStart(35,"app-vault-bulk-actions",14),v.ɵɵtext(36,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(37,"\n "),v.ɵɵtemplate(38,G,5,3,"button",15),v.ɵɵtext(39,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(40,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(41,"\n "),v.ɵɵtemplate(42,W,2,1,"app-callout",16),v.ɵɵtext(43,"\n "),v.ɵɵelementStart(44,"app-vault-ciphers",17),v.ɵɵlistener("onCipherClicked",(function(e){return t.editCipher(e)}))("onAttachmentsClicked",(function(e){return t.editCipherAttachments(e)}))("onAddCipher",(function(){return t.addCipher()}))("onShareClicked",(function(e){return t.shareCipher(e)}))("onCollectionsClicked",(function(e){return t.editCipherCollections(e)}))("onCloneClicked",(function(e){return t.cloneCipher(e)}))("onOrganzationBadgeClicked",(function(e){return t.applyOrganizationFilter(e)})),v.ɵɵtext(45,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(46,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(47,"\n "),v.ɵɵelementStart(48,"div",2),v.ɵɵtext(49,"\n "),v.ɵɵtemplate(50,$,19,9,"div",18),v.ɵɵtext(51,"\n "),v.ɵɵtemplate(52,Y,1,0,"app-verify-email",19),v.ɵɵtext(53,"\n "),v.ɵɵtemplate(54,Q,19,9,"div",18),v.ɵɵtext(55,"\n "),v.ɵɵtemplate(56,J,19,9,"div",20),v.ɵɵtext(57,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(58,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(59,"\n"),v.ɵɵelementEnd(),v.ɵɵtext(60,"\n"),v.ɵɵtemplate(61,Z,0,0,"ng-template",null,21,v.ɵɵtemplateRefExtractor),v.ɵɵtext(63,"\n"),v.ɵɵtemplate(64,X,0,0,"ng-template",null,22,v.ɵɵtemplateRefExtractor),v.ɵɵtext(66,"\n"),v.ɵɵtemplate(67,ee,0,0,"ng-template",null,23,v.ɵɵtemplateRefExtractor),v.ɵɵtext(69,"\n"),v.ɵɵtemplate(70,te,0,0,"ng-template",null,24,v.ɵɵtemplateRefExtractor),v.ɵɵtext(72,"\n"),v.ɵɵtemplate(73,ne,0,0,"ng-template",null,25,v.ɵɵtemplateRefExtractor),v.ɵɵtext(75,"\n"),v.ɵɵtemplate(76,ie,0,0,"ng-template",null,26,v.ɵɵtemplateRefExtractor),v.ɵɵtext(78,"\n")),2&e){const e=v.ɵɵreference(27);v.ɵɵadvance(12),v.ɵɵproperty("activeFilter",t.activeFilter),v.ɵɵadvance(7),v.ɵɵproperty("ngClass",v.ɵɵpureFunction2(15,re,t.isShowingCards,!t.isShowingCards)),v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(25,13,"vaultItems"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("appApiAction",t.ciphersComponent.actionPromise),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.loading),v.ɵɵadvance(6),v.ɵɵproperty("ciphersComponent",t.ciphersComponent)("deleted","trash"===t.activeFilter.status),v.ɵɵadvance(3),v.ɵɵproperty("ngIf","trash"!==t.activeFilter.status),v.ɵɵadvance(4),v.ɵɵproperty("ngIf","trash"===t.activeFilter.status),v.ɵɵadvance(8),v.ɵɵproperty("ngIf",t.showUpdateKey),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showVerifyEmail),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showBrowserOutdated),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.showPremiumCallout)}},directives:[T.VaultFilterComponent,M.NgClass,B.ApiActionDirective,M.NgIf,D.BulkActionsComponent,R.CiphersComponent,F.CalloutComponent,U.VerifyEmailComponent,g.RouterLinkWithHref],pipes:[V.I18nPipe],encapsulation:2})},85006:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.IndividualVaultModule=void 0;const i=n(77844),r=n(97417),o=n(32621);class a{}t.IndividualVaultModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[i.VaultModule,r.IndividualVaultRoutingModule]]})},98528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationBadgeModule=void 0;const i=n(84696),r=n(32621);class o{}t.OrganizationBadgeModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.SharedModule]]})},99237:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationNameBadgeComponent=void 0;const i=n(32621),r=(n(51554),n(32621)),o=n(51554),a=n(25108),s=n(8863),l=n(91131);class c{constructor(e){this.i18nService=e,this.onOrganizationClicked=new i.EventEmitter}ngOnInit(){null!=this.organizationName&&""!==this.organizationName||(this.organizationName=this.i18nService.t("me"),this.color=this.stringToColor(this.profileName.toUpperCase())),null==this.color&&(this.color=this.stringToColor(this.organizationName.toUpperCase())),this.textColor=this.pickTextColorBasedOnBgColor()}stringToColor(e){let t=0;for(let i=0;i>8*i&255).toString(16)).substr(-2)}return n}pickTextColorBasedOnBgColor(){const e="#"===this.color.charAt(0)?this.color.substring(1,7):this.color;return.299*parseInt(e.substring(0,2),16)+.587*parseInt(e.substring(2,4),16)+.114*parseInt(e.substring(4,6),16)>186?"black !important":"white !important"}emitOnOrganizationClicked(){this.onOrganizationClicked.emit()}}t.OrganizationNameBadgeComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.I18nService))},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-org-badge"]],inputs:{organizationName:"organizationName",profileName:"profileName"},outputs:{onOrganizationClicked:"onOrganizationClicked"},decls:4,vars:9,consts:[["bit-badge","",3,"appA11yTitle","click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"button",0),r.ɵɵlistener("click",(function(){return t.emitOnOrganizationClicked()})),r.ɵɵtext(1),r.ɵɵpipe(2,"ellipsis"),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n")),2&e&&(r.ɵɵstyleProp("color",t.textColor)("background-color",t.color),r.ɵɵpropertyInterpolate("appA11yTitle",t.organizationName),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(2,6,t.organizationName,13),"\n"))},directives:[a.BadgeComponent,s.A11yTitleDirective],pipes:[l.EllipsisPipe],encapsulation:2})},1690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultRoutingModule=void 0;const i=n(68012),r=n(71808),o=n(32621),a=(n(68012),[{path:"",component:r.OrganizationVaultComponent,data:{titleId:"vaults"}}]);class s{}t.OrganizationVaultRoutingModule=s,s.ɵfac=function(e){return new(e||s)},s.ɵmod=o.ɵɵdefineNgModule({type:s}),s.ɵinj=o.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(a)],i.RouterModule]})},71808:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=n(94735),s=(n(64684),n(8470),n(45330),n(51554),n(45552),n(63513),n(44809),n(73828),n(9724),n(87876)),l=n(93880),c=n(31597),d=n(7203),p=n(60962),u=(n(25398),n(81617),n(32621)),m=n(68012),h=n(63513),v=n(9724),f=n(51554),g=n(64684),y=n(45552),x=n(8470),S=n(73828),b=n(81617),w=n(45330),C=n(44809),I=n(25398),E=n(56820),P=n(57490),O=n(23582),k=n(7203),A=n(51626),T=n(99729),M=["vaultFilter"],B=["attachments"],D=["cipherAddEdit"],R=["collections"],F=["eventsTemplate"];function U(e,t){1&e&&(u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",22),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",23),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementContainerEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function V(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"button",24),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().addCipher()})),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",25),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd()}2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate1("",u.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function N(e,t){if(1&e&&(u.ɵɵelementStart(0,"app-callout",26),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(1),u.ɵɵtextInterpolate1("\n ",e.trashCleanupWarning,"\n ")}}function _(e,t){}function j(e,t){}function z(e,t){}function H(e,t){}const L="OrgVaultComponent";class K{constructor(e,t,n,i,r,o,s,l,c,d,p,u,m,h){this.route=e,this.organizationService=t,this.router=n,this.changeDetectorRef=i,this.syncService=r,this.i18nService=o,this.modalService=s,this.messagingService=l,this.broadcasterService=c,this.ngZone=d,this.platformUtilsService=p,this.vaultService=u,this.cipherService=m,this.passwordRepromptService=h,this.collectionId=null,this.type=null,this.deleted=!1,this.trashCleanupWarning=null,this.activeFilter=new a.VaultFilter,this.firstLoaded=!0}ngOnInit(){this.trashCleanupWarning=this.i18nService.t(this.platformUtilsService.isSelfHost()?"trashCleanupWarningSelfHosted":"trashCleanupWarning"),this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.vaultFilterComponent.organization=this.organization,this.ciphersComponent.organization=this.organization,this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.ciphersComponent.searchText=this.vaultFilterComponent.searchText=e.search,this.organization.canViewAllCollections||(yield this.syncService.fullSync(!1),this.broadcasterService.subscribe(L,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield Promise.all([this.vaultFilterComponent.reloadCollectionsAndFolders(),this.ciphersComponent.refresh()]),this.changeDetectorRef.detectChanges())}))))}))),this.firstLoaded||(yield this.vaultFilterComponent.reloadCollectionsAndFolders()),this.firstLoaded=!1,yield this.ciphersComponent.reload(),null!=e.viewEvents){const t=this.ciphersComponent.ciphers.filter((t=>t.id===e.viewEvents));t.length>0&&this.viewEvents(t[0])}this.route.queryParams.subscribe((e=>i(this,void 0,void 0,(function*(){e.cipherId&&(this.organization.canEditAnyCollection||null!=(yield this.cipherService.get(e.cipherId))?this.editCipherId(e.cipherId):(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unknownCipher")),this.router.navigate([],{queryParams:{cipherId:null},queryParamsHandling:"merge"})))}))))}))))}))))}ngOnDestroy(){this.broadcasterService.unsubscribe(L)}applyVaultFilter(e){return i(this,void 0,void 0,(function*(){this.ciphersComponent.showAddNew="trash"!==e.status,this.activeFilter=e,yield this.ciphersComponent.reload(this.buildFilter(),"trash"===e.status),this.vaultFilterComponent.searchPlaceholder=this.vaultService.calculateSearchBarLocalizationString(this.activeFilter),this.go()}))}buildFilter(){return e=>{let t=!0;return"favorites"===this.activeFilter.status&&t&&(t=e.favorite),"trash"===this.activeFilter.status&&t&&(t=e.isDeleted),null!=this.activeFilter.cipherType&&t&&(t=e.type===this.activeFilter.cipherType),null!=this.activeFilter.selectedFolder&&"none"!=this.activeFilter.selectedFolderId&&t&&(t=e.folderId===this.activeFilter.selectedFolderId),null!=this.activeFilter.selectedCollectionId&&t&&(t=null!=e.collectionIds&&e.collectionIds.indexOf(this.activeFilter.selectedCollectionId)>-1),null!=this.activeFilter.selectedOrganizationId&&t&&(t=e.organizationId===this.activeFilter.selectedOrganizationId),this.activeFilter.myVaultOnly&&t&&(t=null===e.organizationId),t}}filterSearchText(e){this.ciphersComponent.searchText=e,this.ciphersComponent.search(200)}editCipherAttachments(e){return i(this,void 0,void 0,(function*(){if(null==this.organization.maxStorageGb||0===this.organization.maxStorageGb)return void this.messagingService.send("upgradeOrganization",{organizationId:e.organizationId});let t=!1;const[n]=yield this.modalService.openViewRef(c.AttachmentsComponent,this.attachmentsModalRef,(n=>{n.organization=this.organization,n.cipherId=e.id,n.onUploadedAttachment.subscribe((()=>t=!0)),n.onDeletedAttachment.subscribe((()=>t=!0))}));n.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){t&&(yield this.ciphersComponent.refresh()),t=!1}))))}))}editCipherCollections(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(p.CollectionsComponent,this.collectionsModalRef,(n=>{this.organization.canEditAnyCollection&&(n.collectionIds=e.collectionIds,n.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),n.organization=this.organization,n.cipherId=e.id,n.onSavedCollections.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}addCipher(){return i(this,void 0,void 0,(function*(){const e=yield this.editCipher(null);e.organizationId=this.organization.id,e.type=this.type,this.organization.canEditAnyCollection&&(e.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),null!=this.collectionId&&(e.collectionIds=[this.collectionId])}))}editCipher(e){return i(this,void 0,void 0,(function*(){return this.editCipherId(null==e?void 0:e.id)}))}editCipherId(e){return i(this,void 0,void 0,(function*(){const t=yield this.cipherService.get(e);if(null!=t&&0!=t.reprompt&&!(yield this.passwordRepromptService.showPasswordPrompt()))return void this.go({cipherId:null});const[n,r]=yield this.modalService.openViewRef(l.AddEditComponent,this.cipherAddEditModalRef,(t=>{t.organization=this.organization,t.cipherId=e,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.ciphersComponent.refresh()}))))}));return n.onClosedPromise().then((()=>{this.go({cipherId:null})})),r}))}cloneCipher(e){return i(this,void 0,void 0,(function*(){const t=yield this.editCipher(e);t.cloneMode=!0,t.organizationId=this.organization.id,this.organization.canEditAnyCollection&&(t.collections=this.vaultFilterComponent.collections.fullList.filter((e=>!e.readOnly))),t.collectionIds=e.collectionIds}))}viewEvents(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=e.name,t.organizationId=this.organization.id,t.entityId=e.id,t.showUser=!0,t.entity="cipher"}))}))}clearFilters(){this.collectionId=null,this.type=null,this.deleted=!1}go(e=null){null==e&&(e={type:this.type,collectionId:this.collectionId,deleted:!!this.deleted||null}),this.router.navigate([],{relativeTo:this.route,queryParams:e,queryParamsHandling:"merge",replaceUrl:!0})}}t.OrganizationVaultComponent=K,K.ɵfac=function(e){return new(e||K)(u.ɵɵdirectiveInject(m.ActivatedRoute),u.ɵɵdirectiveInject(h.OrganizationService),u.ɵɵdirectiveInject(m.Router),u.ɵɵdirectiveInject(u.ChangeDetectorRef),u.ɵɵdirectiveInject(v.SyncService),u.ɵɵdirectiveInject(f.I18nService),u.ɵɵdirectiveInject(g.ModalService),u.ɵɵdirectiveInject(y.MessagingService),u.ɵɵdirectiveInject(x.BroadcasterService),u.ɵɵdirectiveInject(u.NgZone),u.ɵɵdirectiveInject(S.PlatformUtilsService),u.ɵɵdirectiveInject(b.VaultService),u.ɵɵdirectiveInject(w.CipherService),u.ɵɵdirectiveInject(C.PasswordRepromptService))},K.ɵcmp=u.ɵɵdefineComponent({type:K,selectors:[["app-org-vault"]],viewQuery:function(e,t){if(1&e&&(u.ɵɵviewQuery(M,7),u.ɵɵviewQuery(d.CiphersComponent,7),u.ɵɵviewQuery(B,7,r.ViewContainerRef),u.ɵɵviewQuery(D,7,r.ViewContainerRef),u.ɵɵviewQuery(R,7,r.ViewContainerRef),u.ɵɵviewQuery(F,7,r.ViewContainerRef)),2&e){let e;u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.vaultFilterComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.ciphersComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.collectionsModalRef=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.eventsModalRef=e.first)}},decls:62,vars:11,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"groupings"],[1,"content"],[1,"inner-content"],[3,"activeFilter","onFilterChange","onSearchTextChanged"],["vaultFilter",""],[1,"col-9"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],[3,"ciphersComponent","deleted","organization"],["type","button","class","btn btn-outline-primary btn-sm ml-auto",3,"click",4,"ngIf"],["type","warning","icon","bwi bwi-exclamation-triangle",4,"ngIf"],[3,"onCipherClicked","onAttachmentsClicked","onAddCipher","onCollectionsClicked","onEventsClicked","onCloneClicked"],["attachments",""],["cipherAddEdit",""],["collections",""],["eventsTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","ml-auto",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["type","warning","icon","bwi bwi-exclamation-triangle"]],template:function(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"div",2),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",3),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"div",4),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",5),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"app-organization-vault-filter",6,7),u.ɵɵlistener("onFilterChange",(function(e){return t.applyVaultFilter(e)}))("onSearchTextChanged",(function(e){return t.filterSearchText(e)})),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(16,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementStart(19,"div",8),u.ɵɵtext(20,"\n "),u.ɵɵelementStart(21,"div",9),u.ɵɵtext(22,"\n "),u.ɵɵelementStart(23,"h1"),u.ɵɵtext(24),u.ɵɵpipe(25,"i18n"),u.ɵɵelementStart(26,"small",10,11),u.ɵɵtext(28,"\n "),u.ɵɵtemplate(29,U,9,6,"ng-container",12),u.ɵɵtext(30,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(31,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"div",13),u.ɵɵtext(34,"\n "),u.ɵɵelementStart(35,"app-vault-bulk-actions",14),u.ɵɵtext(36,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵtemplate(38,V,5,3,"button",15),u.ɵɵtext(39,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(40,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵtemplate(42,N,2,1,"app-callout",16),u.ɵɵtext(43,"\n "),u.ɵɵelementStart(44,"app-org-vault-ciphers",17),u.ɵɵlistener("onCipherClicked",(function(e){return t.editCipher(e)}))("onAttachmentsClicked",(function(e){return t.editCipherAttachments(e)}))("onAddCipher",(function(){return t.addCipher()}))("onCollectionsClicked",(function(e){return t.editCipherCollections(e)}))("onEventsClicked",(function(e){return t.viewEvents(e)}))("onCloneClicked",(function(e){return t.cloneCipher(e)})),u.ɵɵtext(45,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(46,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(47,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(49,"\n"),u.ɵɵtemplate(50,_,0,0,"ng-template",null,18,u.ɵɵtemplateRefExtractor),u.ɵɵtext(52,"\n"),u.ɵɵtemplate(53,j,0,0,"ng-template",null,19,u.ɵɵtemplateRefExtractor),u.ɵɵtext(55,"\n"),u.ɵɵtemplate(56,z,0,0,"ng-template",null,20,u.ɵɵtemplateRefExtractor),u.ɵɵtext(58,"\n"),u.ɵɵtemplate(59,H,0,0,"ng-template",null,21,u.ɵɵtemplateRefExtractor),u.ɵɵtext(61,"\n")),2&e){const e=u.ɵɵreference(27);u.ɵɵadvance(12),u.ɵɵproperty("activeFilter",t.activeFilter),u.ɵɵadvance(12),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(25,9,"vaultItems"),"\n "),u.ɵɵadvance(2),u.ɵɵproperty("appApiAction",t.ciphersComponent.actionPromise),u.ɵɵadvance(3),u.ɵɵproperty("ngIf",e.loading),u.ɵɵadvance(6),u.ɵɵproperty("ciphersComponent",t.ciphersComponent)("deleted",t.deleted)("organization",t.organization),u.ɵɵadvance(3),u.ɵɵproperty("ngIf",!t.deleted),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",t.deleted)}},directives:[I.OrganizationVaultFilterComponent,E.ApiActionDirective,P.NgIf,O.BulkActionsComponent,k.CiphersComponent,A.CalloutComponent],pipes:[T.I18nPipe],encapsulation:2})},32459:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationVaultModule=void 0;const i=n(77844),r=n(1690),o=n(32621);class a{}t.OrganizationVaultModule=a,a.ɵfac=function(e){return new(e||a)},a.ɵmod=o.ɵɵdefineNgModule({type:a}),a.ɵinj=o.ɵɵdefineInjector({imports:[[i.VaultModule,r.OrganizationVaultRoutingModule]]})},77844:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultModule=void 0;const i=n(30322),r=n(84696),o=n(38595),a=n(81617),s=n(32621);class l{}t.VaultModule=l,l.ɵfac=function(e){return new(e||l)},l.ɵmod=s.ɵɵdefineNgModule({type:l}),l.ɵinj=s.ɵɵdefineInjector({providers:[{provide:a.VaultService,useClass:a.VaultService}],imports:[[r.SharedModule,o.VaultFilterModule,i.LooseComponentsModule],r.SharedModule,o.VaultFilterModule,i.LooseComponentsModule]})},81617:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultService=void 0;t.VaultService=class{calculateSearchBarLocalizationString(e){return"favorites"===e.status?"searchFavorites":"trash"===e.status?"searchTrash":null!=e.cipherType?"searchType":null!=e.selectedFolderId&&"none"!=e.selectedFolderId?"searchFolder":null!=e.selectedCollectionId?"searchCollection":null!=e.selectedOrganizationId?"searchOrganization":e.myVaultOnly?"searchMyVault":"searchVault"}}},70734:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PermissionsGuard=void 0;n(68012),n(51554),n(63513),n(73828),n(9724);const r=n(32621),o=n(68012),a=n(63513),s=n(73828),l=n(51554),c=n(9724);class d{constructor(e,t,n,i,r){this.router=e,this.organizationService=t,this.platformUtilsService=n,this.i18nService=i,this.syncService=r}canActivate(e,t){return i(this,void 0,void 0,(function*(){null==(yield this.syncService.getLastSync())&&(yield this.syncService.fullSync(!1));const n=yield this.organizationService.get(e.params.organizationId);if(null==n)return this.router.createUrlTree(["/"]);if(!n.isOwner&&!n.enabled)return this.platformUtilsService.showToast("error",null,this.i18nService.t("organizationIsDisabled")),this.router.createUrlTree(["/"]);const i=null==e.data?[]:e.data.permissions;return!(null!=i&&!n.hasAnyPermission(i))||(t.root.queryParamMap.has("cipherId")?this.router.createUrlTree(["/vault"],{queryParams:{cipherId:t.root.queryParamMap.get("cipherId")}}):(this.platformUtilsService.showToast("error",null,this.i18nService.t("accessDenied")),this.router.createUrlTree(["/"])))}))}}t.PermissionsGuard=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵinject(o.Router),r.ɵɵinject(a.OrganizationService),r.ɵɵinject(s.PlatformUtilsService),r.ɵɵinject(l.I18nService),r.ɵɵinject(c.SyncService))},d.ɵprov=r.ɵɵdefineInjectable({token:d,factory:d.ɵfac})},45231:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationLayoutComponent=void 0;n(32621),n(68012),n(8470),n(63513);const r=n(13637),o=n(32621),a=n(68012),s=n(63513),l=n(8470),c=n(53280),d=n(57490),p=n(59964),u=n(13045),m=n(99729);function h(e,t){if(1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",11),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("routerLink",e.manageRoute),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,2,"manage"),"\n ")}}function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",12),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("routerLink",e.toolsRoute),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,2,"tools"),"\n ")}}function f(e,t){1&e&&(o.ɵɵelementStart(0,"li",6),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",14),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(6,1,"settings"),"\n "))}function g(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",1),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",2),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",3),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"app-organization-switcher",4),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"ul",5),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"li",6),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"a",7),o.ɵɵtext(13,"\n "),o.ɵɵelement(14,"i",8),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,h,8,4,"li",9),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,v,8,4,"li",9),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,f,8,3,"li",9),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(6),o.ɵɵproperty("activeOrganization",e.organization),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(16,5,"vault"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.showManageTab),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showToolsTab),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showSettingsTab)}}const y="OrganizationLayoutComponent";class x{constructor(e,t,n,i){this.route=e,this.organizationService=t,this.broadcasterService=n,this.ngZone=i}ngOnInit(){document.body.classList.remove("layout_frontend"),this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load()})))),this.broadcasterService.subscribe(y,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("updatedOrgLicense"===e.command)yield this.load()}))))}))}ngOnDestroy(){this.broadcasterService.unsubscribe(y)}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId)}))}get showManageTab(){return r.NavigationPermissionsService.canAccessManage(this.organization)}get showToolsTab(){return r.NavigationPermissionsService.canAccessTools(this.organization)}get showSettingsTab(){return r.NavigationPermissionsService.canAccessSettings(this.organization)}get toolsRoute(){return this.organization.canAccessImportExport?"tools/import":"tools/exposed-passwords-report"}get manageRoute(){let e;switch(!0){case this.organization.canManageUsers:e="manage/people";break;case this.organization.canViewAssignedCollections||this.organization.canViewAllCollections:e="manage/collections";break;case this.organization.canManageGroups:e="manage/groups";break;case this.organization.canManagePolicies:e="manage/policies";break;case this.organization.canAccessEventLogs:e="manage/events"}return e}}t.OrganizationLayoutComponent=x,x.ɵfac=function(e){return new(e||x)(o.ɵɵdirectiveInject(a.ActivatedRoute),o.ɵɵdirectiveInject(s.OrganizationService),o.ɵɵdirectiveInject(l.BroadcasterService),o.ɵɵdirectiveInject(o.NgZone))},x.ɵcmp=o.ɵɵdefineComponent({type:x,selectors:[["app-organization-layout"]],decls:8,vars:1,consts:[["class","org-nav",4,"ngIf"],[1,"org-nav"],[1,"container","d-flex"],[1,"d-flex","flex-column"],[1,"my-auto","pl-1",3,"activeOrganization"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLink","vault","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-lock"],["class","nav-item",4,"ngIf"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-sliders"],["aria-hidden","true",1,"bwi","bwi-wrench"],["routerLink","settings","routerLinkActive","active",1,"nav-link"],["aria-hidden","true",1,"bwi","bwi-cogs"]],template:function(e,t){1&e&&(o.ɵɵelement(0,"app-navbar"),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,g,28,7,"div",0),o.ɵɵtext(3,"\n"),o.ɵɵelement(4,"router-outlet"),o.ɵɵtext(5,"\n"),o.ɵɵelement(6,"app-footer"),o.ɵɵtext(7,"\n")),2&e&&(o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.organization))},directives:[c.NavbarComponent,d.NgIf,a.RouterOutlet,p.FooterComponent,u.OrganizationSwitcherComponent,a.RouterLinkWithHref,a.RouterLinkActive],pipes:[m.I18nPipe],encapsulation:2})},61692:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkConfirmComponent=void 0;n(91674),n(85714),n(51554);const r=n(7368),o=n(82769),a=n(23405),s=n(91247),l=n(32621),c=n(85714),d=n(91674),p=n(51554),u=n(8863),m=n(57490),h=n(51626),v=n(15370),f=n(99729),g=n(52080);function y(e,t){1&e&&(l.ɵɵelementStart(0,"div",15),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,4,"loading"),"\n "))}function x(e,t){1&e&&(l.ɵɵelementStart(0,"app-callout",17),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,b,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",n.fingerprints.get(e.id),"\n ")}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,C,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"td"),l.ɵɵtext(15),l.ɵɵpipe(16,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,7,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(16,9,"bulkFilteredMessage"),"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementStart(5,"a",19),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"table",20),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"thead"),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"tr"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"th",21),l.ɵɵtext(17),l.ɵɵpipe(18,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"th"),l.ɵɵtext(21),l.ɵɵpipe(22,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,w,17,9,"tr",22),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,I,18,11,"tr",22),l.ɵɵtext(29,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,6,"fingerprintEnsureIntegrityVerify"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(7,8,"learnMore"),""),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(18,10,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(22,12,"fingerprint")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.excludedUsers)}}function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",26),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit;l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function O(e,t){if(1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext().$implicit,t=l.ɵɵnextContext(2);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function k(e,t){1&e&&(l.ɵɵelementStart(0,"td"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function A(e,t){if(1&e&&(l.ɵɵelementStart(0,"tr"),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",23),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"app-avatar",24),l.ɵɵpipe(5,"userName"),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"td"),l.ɵɵtext(10),l.ɵɵtemplate(11,P,2,1,"small",25),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵtemplate(14,O,2,1,"td",11),l.ɵɵtext(15,"\n "),l.ɵɵtemplate(16,k,3,3,"td",11),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd()),2&e){const e=t.$implicit,n=l.ɵɵnextContext(2);l.ɵɵadvance(4),l.ɵɵproperty("data",l.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",e.email,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",e.name),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",n.statuses.has(e.id)),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function T(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"table",20),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"thead"),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"tr"),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"th",21),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"th"),l.ɵɵtext(13),l.ɵɵpipe(14,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵtemplate(18,A,18,10,"tr",22),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,3,"user")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(14,5,"status")),l.ɵɵadvance(5),l.ɵɵproperty("ngForOf",e.filteredUsers)}}function M(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",16),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span"),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,3,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,5,"confirm"))}}class B{constructor(e,t,n){this.cryptoService=e,this.apiService=t,this.i18nService=n,this.publicKeys=new Map,this.fingerprints=new Map,this.statuses=new Map,this.loading=!0,this.done=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.excludedUsers=this.users.filter((e=>!this.isAccepted(e))),this.filteredUsers=this.users.filter((e=>this.isAccepted(e))),this.filteredUsers.length<=0&&(this.done=!0);const e=yield this.getPublicKeys();for(const t of e.data){const e=o.Utils.fromB64ToArray(t.key),n=yield this.cryptoService.getFingerprint(t.userId,e.buffer);null!=n&&(this.publicKeys.set(t.id,e),this.fingerprints.set(t.id,n.join("-")))}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){this.loading=!0;try{const e=yield this.getCryptoKey(),t=[];for(const n of this.filteredUsers){const i=this.publicKeys.get(n.id);if(null==i)continue;const r=yield this.cryptoService.rsaEncrypt(e.key,i.buffer);t.push({id:n.id,key:r.encryptedString})}(yield this.postConfirmRequest(t)).data.forEach((e=>{const t=""!==e.error?e.error:this.i18nService.t("bulkConfirmMessage");this.statuses.set(e.id,t)})),this.done=!0}catch(e){this.error=e.message}this.loading=!1}))}isAccepted(e){return e.status===r.OrganizationUserStatusType.Accepted}getPublicKeys(){return i(this,void 0,void 0,(function*(){const e=new s.OrganizationUserBulkRequest(this.filteredUsers.map((e=>e.id)));return yield this.apiService.postOrganizationUsersPublicKey(this.organizationId,e)}))}getCryptoKey(){return this.cryptoService.getOrgKey(this.organizationId)}postConfirmRequest(e){return i(this,void 0,void 0,(function*(){const t=new a.OrganizationUserBulkConfirmRequest(e);return yield this.apiService.postOrganizationUserBulkConfirm(this.organizationId,t)}))}}t.BulkConfirmComponent=B,B.ɵfac=function(e){return new(e||B)(l.ɵɵdirectiveInject(c.CryptoService),l.ɵɵdirectiveInject(d.ApiService),l.ɵɵdirectiveInject(p.I18nService))},B.ɵcmp=l.ɵɵdefineComponent({type:B,selectors:[["app-bulk-confirm"]],inputs:{organizationId:"organizationId",users:"users"},decls:45,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","danger"],["type","error"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",5),l.ɵɵpipe(13,"i18n"),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"span",6),l.ɵɵtext(16,"×"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",7),l.ɵɵtext(21,"\n "),l.ɵɵtemplate(22,y,6,6,"div",8),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,x,3,3,"app-callout",9),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,S,2,1,"app-callout",10),l.ɵɵtext(27,"\n "),l.ɵɵtemplate(28,E,31,14,"ng-container",11),l.ɵɵtext(29,"\n "),l.ɵɵtemplate(30,T,21,7,"ng-container",11),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",12),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,M,9,7,"button",13),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"button",14),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,9,"confirmUsers"),"\n "),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(13,11,"close")),l.ɵɵadvance(10),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.filteredUsers.length<=0),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.error),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!t.done),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&t.done),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",!t.done),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(39,13,"close"),"\n "))},directives:[u.A11yTitleDirective,m.NgIf,h.CalloutComponent,m.NgForOf,v.AvatarComponent],pipes:[f.I18nPipe,g.UserNamePipe],encapsulation:2})},37131:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRemoveComponent=void 0;n(91674),n(51554);const r=n(91247),o=n(32621),a=n(91674),s=n(51554),l=n(8863),c=n(57490),d=n(51626),p=n(15370),u=n(99729),m=n(52080);function h(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",14),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noSelectedUsersApplicable"),"\n "))}function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",15),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.error,"\n ")}}function f(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",20),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"removeUsersWarning"),"\n "))}function g(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",24),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",21),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"app-avatar",22),o.ɵɵpipe(5,"userName"),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td"),o.ɵɵtext(10),o.ɵɵtemplate(11,g,2,1,"small",23),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(4),o.ɵɵproperty("data",o.ɵɵpipeBind1(5,6,e))("email",e.email)("circle",!0)("fontSize",14),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",e.email,"\n "),o.ɵɵadvance(1),o.ɵɵproperty("ngIf",e.name)}}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,f,3,3,"app-callout",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"table",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"thead"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"tr"),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,y,14,8,"tr",19),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.users.length>0&&!e.error),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,3,"user")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",e.users)}}function S(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",24),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(o.ɵɵelementStart(0,"td"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit,t=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",t.statuses.get(e.id),"\n ")}}function w(e,t){1&e&&(o.ɵɵelementStart(0,"td"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"bulkFilteredMessage"),"\n "))}function C(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",21),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"app-avatar",22),o.ɵɵpipe(5,"userName"),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td"),o.ɵɵtext(10),o.ɵɵtemplate(11,S,2,1,"small",23),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,b,2,1,"td",10),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,3,3,"td",10),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("data",o.ɵɵpipeBind1(5,8,e))("email",e.email)("circle",!0)("fontSize",14),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",e.email,"\n "),o.ɵɵadvance(1),o.ɵɵproperty("ngIf",e.name),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",n.statuses.has(e.id)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.statuses.has(e.id))}}function I(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"table",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"thead"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"tr"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"th",18),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"th"),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,C,18,10,"tr",19),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,3,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,5,"status")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",e.users)}}function E(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",25),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",26),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"removeUsers"))}}class P{constructor(e,t){this.apiService=e,this.i18nService=t,this.statuses=new Map,this.loading=!1,this.done=!1}submit(){return i(this,void 0,void 0,(function*(){this.loading=!0;try{(yield this.deleteUsers()).data.forEach((e=>{const t=""!==e.error?e.error:this.i18nService.t("bulkRemovedMessage");this.statuses.set(e.id,t)})),this.done=!0}catch(e){this.error=e.message}this.loading=!1}))}deleteUsers(){return i(this,void 0,void 0,(function*(){const e=new r.OrganizationUserBulkRequest(this.users.map((e=>e.id)));return yield this.apiService.deleteManyOrganizationUsers(this.organizationId,e)}))}}t.BulkRemoveComponent=P,P.ɵfac=function(e){return new(e||P)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService))},P.ɵcmp=o.ɵɵdefineComponent({type:P,selectors:[["app-bulk-remove"]],inputs:{organizationId:"organizationId",users:"users"},decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","danger",4,"ngIf"],["type","error",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","danger"],["type","error"],["type","warning",4,"ngIf"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["type","warning"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],[1,"text-muted","d-block"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"h2",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",5),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",6),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",7),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,h,3,3,"app-callout",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,v,2,1,"app-callout",9),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,x,19,5,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,I,21,7,"ng-container",10),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"div",11),o.ɵɵtext(32,"\n "),o.ɵɵtemplate(33,E,9,7,"button",12),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"button",13),o.ɵɵtext(36),o.ɵɵpipe(37,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n")),2&e&&(o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(10,8,"removeUsers"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.users.length<=0),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.error),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.done),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.done),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.done&&t.users.length>0),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(37,12,"close"),"\n "))},directives:[l.A11yTitleDirective,c.NgIf,d.CalloutComponent,c.NgForOf,p.AvatarComponent],pipes:[u.I18nPipe,m.UserNamePipe],encapsulation:2})},33747:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BulkStatusComponent=void 0;const i=n(32621),r=n(8863),o=n(57490),a=n(15370),s=n(99729),l=n(52080);function c(e,t){1&e&&(i.ɵɵelementStart(0,"div",12),i.ɵɵtext(1,"\n "),i.ɵɵelement(2,"i",13),i.ɵɵpipe(3,"i18n"),i.ɵɵtext(4),i.ɵɵpipe(5,"i18n"),i.ɵɵelementEnd()),2&e&&(i.ɵɵadvance(2),i.ɵɵpropertyInterpolate("title",i.ɵɵpipeBind1(3,2,"loading")),i.ɵɵadvance(2),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(5,4,"loading"),"\n "))}function d(e,t){if(1&e&&(i.ɵɵelementStart(0,"small",22),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate(e.user.name)}}function p(e,t){if(1&e&&(i.ɵɵelementStart(0,"td",23),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.message,"\n ")}}function u(e,t){if(1&e&&(i.ɵɵelementStart(0,"td"),i.ɵɵtext(1),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext().$implicit;i.ɵɵadvance(1),i.ɵɵtextInterpolate1("\n ",e.message,"\n ")}}function m(e,t){if(1&e&&(i.ɵɵelementStart(0,"tr"),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"td",17),i.ɵɵtext(3,"\n "),i.ɵɵelement(4,"app-avatar",18),i.ɵɵpipe(5,"userName"),i.ɵɵtext(6,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(7,"\n "),i.ɵɵelementStart(8,"td"),i.ɵɵtext(9),i.ɵɵtemplate(10,d,2,1,"small",19),i.ɵɵtext(11,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(12,"\n "),i.ɵɵtemplate(13,p,2,1,"td",20),i.ɵɵtext(14,"\n "),i.ɵɵtemplate(15,u,2,1,"td",21),i.ɵɵtext(16,"\n "),i.ɵɵelementEnd()),2&e){const e=t.$implicit;i.ɵɵadvance(4),i.ɵɵproperty("data",i.ɵɵpipeBind1(5,8,e.user))("email",e.user.email)("circle",!0)("fontSize",14),i.ɵɵadvance(5),i.ɵɵtextInterpolate1("\n ",e.user.email,"\n "),i.ɵɵadvance(1),i.ɵɵproperty("ngIf",e.user.name),i.ɵɵadvance(3),i.ɵɵproperty("ngIf",e.error),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",!e.error)}}function h(e,t){if(1&e&&(i.ɵɵelementStart(0,"table",14),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"thead"),i.ɵɵtext(3,"\n "),i.ɵɵelementStart(4,"tr"),i.ɵɵtext(5,"\n "),i.ɵɵelementStart(6,"th",15),i.ɵɵtext(7),i.ɵɵpipe(8,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(9,"\n "),i.ɵɵelementStart(10,"th"),i.ɵɵtext(11),i.ɵɵpipe(12,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(13,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(14,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(15,"\n "),i.ɵɵtemplate(16,m,17,10,"tr",16),i.ɵɵtext(17,"\n "),i.ɵɵelementEnd()),2&e){const e=i.ɵɵnextContext();i.ɵɵadvance(7),i.ɵɵtextInterpolate(i.ɵɵpipeBind1(8,3,"user")),i.ɵɵadvance(4),i.ɵɵtextInterpolate(i.ɵɵpipeBind1(12,5,"status")),i.ɵɵadvance(5),i.ɵɵproperty("ngForOf",e.users)}}class v{constructor(){this.loading=!1}}t.BulkStatusComponent=v,v.ɵfac=function(e){return new(e||v)},v.ɵcmp=i.ɵɵdefineComponent({type:v,selectors:[["app-bulk-status"]],decls:37,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","bulkTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","bulkTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","card-body text-center",4,"ngIf"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"card-body","text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"table","table-hover","table-list"],["colspan","2"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["class","text-muted d-block",4,"ngIf"],["class","text-danger",4,"ngIf"],[4,"ngIf"],[1,"text-muted","d-block"],[1,"text-danger"]],template:function(e,t){1&e&&(i.ɵɵelementStart(0,"div",0),i.ɵɵtext(1,"\n "),i.ɵɵelementStart(2,"div",1),i.ɵɵtext(3,"\n "),i.ɵɵelementStart(4,"div",2),i.ɵɵtext(5,"\n "),i.ɵɵelementStart(6,"div",3),i.ɵɵtext(7,"\n "),i.ɵɵelementStart(8,"h2",4),i.ɵɵtext(9),i.ɵɵpipe(10,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(11,"\n "),i.ɵɵelementStart(12,"button",5),i.ɵɵpipe(13,"i18n"),i.ɵɵtext(14,"\n "),i.ɵɵelementStart(15,"span",6),i.ɵɵtext(16,"×"),i.ɵɵelementEnd(),i.ɵɵtext(17,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(18,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(19,"\n "),i.ɵɵelementStart(20,"div",7),i.ɵɵtext(21,"\n "),i.ɵɵtemplate(22,c,6,6,"div",8),i.ɵɵtext(23,"\n "),i.ɵɵtemplate(24,h,18,7,"table",9),i.ɵɵtext(25,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(26,"\n "),i.ɵɵelementStart(27,"div",10),i.ɵɵtext(28,"\n "),i.ɵɵelementStart(29,"button",11),i.ɵɵtext(30),i.ɵɵpipe(31,"i18n"),i.ɵɵelementEnd(),i.ɵɵtext(32,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(33,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(34,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(35,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(36,"\n")),2&e&&(i.ɵɵadvance(9),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(10,5,"bulkConfirmStatus"),"\n "),i.ɵɵadvance(3),i.ɵɵpropertyInterpolate("appA11yTitle",i.ɵɵpipeBind1(13,7,"close")),i.ɵɵadvance(10),i.ɵɵproperty("ngIf",t.loading),i.ɵɵadvance(2),i.ɵɵproperty("ngIf",!t.loading),i.ɵɵadvance(6),i.ɵɵtextInterpolate1("\n ",i.ɵɵpipeBind1(31,9,"close"),"\n "))},directives:[r.A11yTitleDirective,o.NgIf,o.NgForOf,a.AvatarComponent],pipes:[s.I18nPipe,l.UserNamePipe],encapsulation:2})},75912:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(82769)),a=n(22205),s=n(54554),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(85714),h=n(36631),v=n(63513),f=n(96832),g=n(56820),y=n(8863),x=n(57490),S=n(45728),b=n(39159),w=n(99729);function C(e,t){1&e&&(c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",14),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",25),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",26),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).selectAll(!0)})),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"button",26),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).selectAll(!1)})),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,2,"selectAll"),"\n "),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function E(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noGroupsInList"),"\n "))}function P(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",35),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"groupAccessAllItems")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"groupAccessAllItems")))}function O(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",30),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",31),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",32),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(8),c.ɵɵtemplate(9,P,9,6,"ng-container",22),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"td",33),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",34),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"td",33),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"input",34),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled",e.accessAll||!i.canSave),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",e.name,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",e.accessAll),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked||e.accessAll||!i.canSave),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Groups[",n,"].ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked||e.accessAll||!i.canSave)}}function k(e,t){if(1&e&&(c.ɵɵelementStart(0,"table",27),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"thead"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tr"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"th"),c.ɵɵtext(7," "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"th"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"th",28),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"th",28),c.ɵɵtext(18),c.ɵɵpipe(19,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"tbody"),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,O,22,11,"tr",29),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,4,"name")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,6,"hidePasswords")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(19,8,"readOnly")),c.ɵɵadvance(7),c.ɵɵproperty("ngForOf",e.groups)}}function A(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",23),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵtemplate(5,I,10,6,"div",12),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,E,3,3,"div",22),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,k,28,10,"table",24),c.ɵɵtext(11,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,4,"groupAccess"),"\n "),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.groups&&e.groups.length&&e.canSave),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.groups||!e.groups.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.groups&&e.groups.length)}}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",17),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",18),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"div",16),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"label",19),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",20),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().externalId=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"small",21),c.ɵɵtext(20),c.ɵɵpipe(21,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,A,12,6,"ng-container",22),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,8,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.name)("disabled",!e.canSave),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,10,"externalId")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.externalId)("disabled",!e.canSave),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(21,12,"externalIdDesc")),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.accessGroups)}}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"button",36),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",37),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span"),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){c.ɵɵnextContext();const e=c.ɵɵreference(5);c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,5,"save"))}}function B(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",39,40),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",41),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",42),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function D(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",25),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,9,10,"button",38),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode)}}class R{constructor(e,t,n,i,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.logService=o,this.organizationService=a,this.onSavedCollection=new r.EventEmitter,this.onDeletedCollection=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.accessGroups=!1,this.groups=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.organizationService.get(this.organizationId);if(this.accessGroups=e.useGroups,this.editMode=this.loading=null!=this.collectionId,this.accessGroups){const e=yield this.apiService.getGroups(this.organizationId);this.groups=e.data.map((e=>e)).sort(o.Utils.getSortFunction(this.i18nService,"name"))}if(this.orgKey=yield this.cryptoService.getOrgKey(this.organizationId),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editCollection");try{const e=yield this.apiService.getCollectionDetails(this.organizationId,this.collectionId);this.name=yield this.cryptoService.decryptToUtf8(new a.EncString(e.name),this.orgKey),this.externalId=e.externalId,null!=e.groups&&this.groups.length>0&&e.groups.forEach((e=>{const t=this.groups.filter((t=>!t.accessAll&&t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(t){this.logService.error(t)}}else this.title=this.i18nService.t("addCollection");this.groups.forEach((e=>{e.accessAll&&(e.checked=!0)})),this.loading=!1}))}check(e,t){e.accessAll||(e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1,e.hidePasswords=!1))}selectAll(e){this.groups.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.orgKey)throw new Error("No encryption key for this organization.");const e=new s.CollectionRequest;e.name=(yield this.cryptoService.encrypt(this.name,this.orgKey)).encryptedString,e.externalId=this.externalId,e.groups=this.groups.filter((e=>e.checked&&!e.accessAll)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords)));try{this.editMode?this.formPromise=this.apiService.putCollection(this.organizationId,this.collectionId,e):this.formPromise=this.apiService.postCollection(this.organizationId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedCollectionId":"createdCollectionId",this.name)),this.onSavedCollection.emit()}catch(t){this.logService.error(t)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteCollectionConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteCollection(this.organizationId,this.collectionId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedCollectionId",this.name)),this.onDeletedCollection.emit()}catch(e){this.logService.error(e)}}))}}t.CollectionAddEditComponent=R,R.ɵfac=function(e){return new(e||R)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.CryptoService),c.ɵɵdirectiveInject(h.LogService),c.ɵɵdirectiveInject(v.OrganizationService))},R.ɵcmp=c.ɵɵdefineComponent({type:R,selectors:[["app-collection-add-edit"]],inputs:{collectionId:"collectionId",organizationId:"organizationId",canSave:"canSave",canDelete:"canDelete"},outputs:{onSavedCollection:"onSavedCollection",onDeletedCollection:"onDeletedCollection"},decls:38,vars:12,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name","required","","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","externalId"],["id","externalId","type","text","name","ExternalId",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"form-text","text-muted"],[4,"ngIf"],[1,"mt-4","d-flex","mb-0"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"ml-auto"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","disabled","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-filter","text-muted","bwi-fw",3,"title"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,C,9,6,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,T,26,14,"div",8),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,M,9,7,"button",10),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"button",11),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵtemplate(32,D,4,1,"div",12),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n")),2&e&&(c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,8,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",t.canSave),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(30,10,"cancel"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.canDelete))},directives:[f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.A11yTitleDirective,x.NgIf,f.DefaultValueAccessor,f.RequiredValidator,S.AutofocusDirective,f.NgControlStatus,f.NgModel,x.NgForOf,f.CheckboxControlValueAccessor,b.StopPropDirective],pipes:[w.I18nPipe],encapsulation:2})},26092:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(3174),n(51554),n(36631),n(63513),n(73828),n(60421),n(34917)),s=n(65642),l=n(75912),c=n(60763),d=n(32621),p=n(91674),u=n(68012),m=n(3174),h=n(64684),v=n(51554),f=n(73828),g=n(60421),y=n(36631),x=n(63513),S=n(96832),b=n(57490),w=n(37407),C=n(1142),I=n(8863),E=n(99729),P=n(50154),O=["addEdit"],k=["usersTemplate"];function A(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",8),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().add()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",9),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"newCollection"),"\n "))}function T(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",10),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",11),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n"),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function M(e,t){1&e&&(d.ɵɵelementStart(0,"p"),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(2,1,"noCollectionsInList")))}function B(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"a",24),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext(2).$implicit;return d.ɵɵnextContext(3).users(t)})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",25),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"users"),"\n "))}function D(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"a",26),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext(2).$implicit;return d.ɵɵnextContext(3).delete(t)})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",27),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"delete"),"\n "))}function R(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",18),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",19),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",20),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",21),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,B,5,3,"a",22),d.ɵɵtext(11,"\n "),d.ɵɵtemplate(12,D,5,3,"a",23),d.ɵɵtext(13,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(14,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext().$implicit,t=d.ɵɵnextContext(3);d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,3,"options")),d.ɵɵadvance(8),d.ɵɵproperty("ngIf",t.canEdit(e)),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.canDelete(e))}}function F(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"tr"),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"td"),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"a",15),d.ɵɵlistener("click",(function(){const t=d.ɵɵrestoreView(e).$implicit;return d.ɵɵnextContext(3).edit(t)})),d.ɵɵtext(5),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"td",16),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,R,15,5,"div",17),d.ɵɵtext(11,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(12,"\n "),d.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=d.ɵɵnextContext(3);d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.name),d.ɵɵadvance(5),d.ɵɵproperty("ngIf",n.canEdit(e)||n.canDelete(e))}}function U(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"table",13),d.ɵɵlistener("scrolled",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).loadMore()})),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"tbody"),d.ɵɵtext(3,"\n "),d.ɵɵtemplate(4,F,13,2,"tr",14),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext().ngIf,t=d.ɵɵnextContext();d.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),d.ɵɵadvance(4),d.ɵɵproperty("ngForOf",e)}}function V(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵtemplate(2,M,3,3,"p",5),d.ɵɵtext(3,"\n "),d.ɵɵtemplate(4,U,7,3,"table",12),d.ɵɵtext(5,"\n"),d.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!e.length),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.length)}}function N(e,t){}function _(e,t){}class j{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.route=t,this.collectionService=n,this.modalService=i,this.i18nService=r,this.platformUtilsService=o,this.searchService=a,this.logService=s,this.organizationService=l,this.loading=!0,this.canCreate=!1,this.didScroll=!1,this.pageSize=100,this.pagedCollectionsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))}))))}))}load(){return i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(this.organizationId),this.canCreate=this.organization.canCreateNewCollections;const e=e=>i(this,void 0,void 0,(function*(){const t=e.data.filter((e=>e.organizationId===this.organizationId)).map((e=>new s.Collection(new a.CollectionData(e))));return yield this.collectionService.decryptMany(t)}));if(this.organization.canViewAssignedCollections){const t=yield this.apiService.getUserCollections();this.assignedCollections=yield e(t)}if(this.organization.canViewAllCollections){const t=yield this.apiService.getCollections(this.organizationId);this.collections=yield e(t)}else this.collections=this.assignedCollections;this.resetPaging(),this.loading=!1}))}loadMore(){if(!this.collections||this.collections.length<=this.pageSize)return;const e=this.pagedCollections.length;let t=this.pageSize;0===e&&this.pagedCollectionsCount>this.pageSize&&(t=this.pagedCollectionsCount),this.collections.length>e&&(this.pagedCollections=this.pagedCollections.concat(this.collections.slice(e,e+t))),this.pagedCollectionsCount=this.pagedCollections.length,this.didScroll=this.pagedCollections.length>this.pageSize}edit(e){return i(this,void 0,void 0,(function*(){const t=null==e&&this.canCreate,n=null!=e&&this.canEdit(e),i=null!=e&&this.canDelete(e);if(!(t||n||i))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("missingPermissions"));const[r]=yield this.modalService.openViewRef(l.CollectionAddEditComponent,this.addEditModalRef,(o=>{o.organizationId=this.organizationId,o.collectionId=null!=e?e.id:null,o.canSave=t||n,o.canDelete=i,o.onSavedCollection.subscribe((()=>{r.close(),this.load()})),o.onDeletedCollection.subscribe((()=>{r.close(),this.removeCollection(e)}))}))}))}add(){this.edit(null)}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteCollectionConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteCollection(this.organizationId,e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedCollectionId",e.name)),this.removeCollection(e)}catch(t){this.logService.error(t),this.platformUtilsService.showToast("error",null,this.i18nService.t("missingPermissions"))}}))}users(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(c.EntityUsersComponent,this.usersModalRef,(n=>{n.organizationId=this.organizationId,n.entity="collection",n.entityId=e.id,n.entityName=e.name,n.onEditedUsers.subscribe((()=>{this.load(),t.close()}))}))}))}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedCollections=[],this.loadMore()}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.collections&&this.collections.length>this.pageSize}canEdit(e){return!!this.organization.canEditAnyCollection||!(!this.organization.canEditAssignedCollections||!this.assignedCollections.some((t=>t.id===e.id)))}canDelete(e){return!!this.organization.canDeleteAnyCollection||!(!this.organization.canDeleteAssignedCollections||!this.assignedCollections.some((t=>t.id===e.id)))}removeCollection(e){const t=this.collections.indexOf(e);t>-1&&(this.collections.splice(t,1),this.resetPaging())}}t.CollectionsComponent=j,j.ɵfac=function(e){return new(e||j)(d.ɵɵdirectiveInject(p.ApiService),d.ɵɵdirectiveInject(u.ActivatedRoute),d.ɵɵdirectiveInject(m.CollectionService),d.ɵɵdirectiveInject(h.ModalService),d.ɵɵdirectiveInject(v.I18nService),d.ɵɵdirectiveInject(f.PlatformUtilsService),d.ɵɵdirectiveInject(g.SearchService),d.ɵɵdirectiveInject(y.LogService),d.ɵɵdirectiveInject(x.OrganizationService))},j.ɵcmp=d.ɵɵdefineComponent({type:j,selectors:[["app-org-manage-collections"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(O,7,r.ViewContainerRef),d.ɵɵviewQuery(k,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.addEditModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.usersModalRef=e.first)}},decls:33,vars:18,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button","class","btn btn-sm btn-outline-primary ml-3",3,"click",4,"ngIf"],[4,"ngIf"],["addEdit",""],["usersTemplate",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover table-list","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],[1,"table-list-options"],["class","dropdown","appListDropdown","",4,"ngIf"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-danger","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-users"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"h1"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"div",1),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div"),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"label",2),d.ɵɵtext(11),d.ɵɵpipe(12,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(13,"\n "),d.ɵɵelementStart(14,"input",3),d.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),d.ɵɵpipe(15,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(17,"\n "),d.ɵɵtemplate(18,A,5,3,"button",4),d.ɵɵtext(19,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(20,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n"),d.ɵɵtemplate(22,T,9,6,"ng-container",5),d.ɵɵtext(23,"\n"),d.ɵɵtemplate(24,V,6,2,"ng-container",5),d.ɵɵpipe(25,"search"),d.ɵɵtext(26,"\n"),d.ɵɵtemplate(27,N,0,0,"ng-template",null,6,d.ɵɵtemplateRefExtractor),d.ɵɵtext(29,"\n"),d.ɵɵtemplate(30,_,0,0,"ng-template",null,7,d.ɵɵtemplateRefExtractor),d.ɵɵtext(32,"\n")),2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,7,"collections")),d.ɵɵadvance(8),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(12,9,"search")),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("placeholder",d.ɵɵpipeBind1(15,11,"search")),d.ɵɵproperty("ngModel",t.searchText),d.ɵɵadvance(4),d.ɵɵproperty("ngIf",t.canCreate),d.ɵɵadvance(4),d.ɵɵproperty("ngIf",t.loading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedCollections:d.ɵɵpipeBind4(25,13,t.collections,t.searchText,"name","id"))))},directives:[S.DefaultValueAccessor,S.NgControlStatus,S.NgModel,b.NgIf,w.InfiniteScrollDirective,b.NgForOf,C.StopClickDirective,I.A11yTitleDirective],pipes:[E.I18nPipe,P.SearchPipe],encapsulation:2})},87876:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EntityEventsComponent=void 0;n(52080),n(91674),n(51554),n(36631),n(73828),n(3202);const r=n(32621),o=n(91674),a=n(51554),s=n(3202),l=n(73828),c=n(52080),d=n(36631),p=n(57490),u=n(8863),m=n(96832),h=n(56820),v=n(99729);function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"small",11),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function g(e,t){1&e&&(r.ɵɵelementStart(0,"div",12),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",13),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",14),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noEventsInList"),"\n "))}function x(e,t){1&e&&(r.ɵɵelementStart(0,"th",34),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"user")))}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"td"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"span",37),r.ɵɵtext(3),r.ɵɵelementEnd(),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit;r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",e.userEmail),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.userName)}}function b(e,t){if(1&e&&(r.ɵɵelementStart(0,"tr"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td"),r.ɵɵtext(3),r.ɵɵpipe(4,"date"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"td"),r.ɵɵtext(7,"\n "),r.ɵɵelement(8,"i",35),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"span",14),r.ɵɵtext(11),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,S,5,2,"td",25),r.ɵɵtext(15,"\n "),r.ɵɵelement(16,"td",36),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit,n=r.ɵɵnextContext(3);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(4,10,e.date,"medium")),r.ɵɵadvance(5),r.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),r.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),r.ɵɵadvance(3),r.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",n.showUser),r.ɵɵadvance(2),r.ɵɵproperty("innerHTML",e.message,r.ɵɵsanitizeHtml)}}function w(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",28),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"thead"),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"tr"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"th",29),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"th",30),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span",14),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵtemplate(17,x,3,3,"th",31),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"th",32),r.ɵɵtext(20),r.ɵɵpipe(21,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"tbody"),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,b,18,13,"tr",33),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,5,"timestamp")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(14,7,"device")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showUser),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(21,9,"event")),r.ɵɵadvance(7),r.ɵɵproperty("ngForOf",e.events)}}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",38,39),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).loadEvents(!1)})),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",40),r.ɵɵpipe(4,"i18n"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext(2);r.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(4,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"loadMore"))}}const I=function(e){return{"bwi-spin":e}};function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",12),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",15),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",16),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",17),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"input",18),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().start=t})),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"span",19),r.ɵɵtext(14,"-"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"label",20),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"input",21),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().end=t})),r.ɵɵpipe(21,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"button",22,23),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().loadEvents(!0)})),r.ɵɵtext(26,"\n "),r.ɵɵelement(27,"i",24),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"hr"),r.ɵɵtext(33,"\n "),r.ɵɵtemplate(34,y,3,3,"div",25),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,w,30,11,"table",26),r.ɵɵtext(37,"\n "),r.ɵɵtemplate(38,C,10,8,"button",27),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(25),t=r.ɵɵnextContext();r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,13,"startDate")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("placeholder",r.ɵɵpipeBind1(11,15,"startDate")),r.ɵɵproperty("ngModel",t.start),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(18,17,"endDate")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("placeholder",r.ɵɵpipeBind1(21,19,"endDate")),r.ɵɵproperty("ngModel",t.end),r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.refreshPromise)("disabled",t.loaded&&e.loading),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(23,I,t.loaded&&e.loading)),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(29,21,"refresh"),"\n "),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",!t.events||!t.events.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.events&&t.events.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.continuationToken)}}class P{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.eventService=n,this.platformUtilsService=i,this.userNamePipe=r,this.logService=o,this.showUser=!1,this.loading=!0,this.loaded=!1,this.orgUsersUserIdMap=new Map,this.orgUsersIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=this.eventService.getDefaultDateFilters();this.start=e[0],this.end=e[1],yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){if(this.showUser){(yield this.apiService.getOrganizationUsers(this.organizationId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersIdMap.set(e.id,{name:t,email:e.email}),this.orgUsersUserIdMap.set(e.userId,{name:t,email:e.email})}))}yield this.loadEvents(!0),this.loaded=!0}))}loadEvents(e){return i(this,void 0,void 0,(function*(){if(null!=this.refreshPromise||null!=this.morePromise)return;let t,n=null;try{n=this.eventService.formatDateFilters(this.start,this.end)}catch(o){return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("invalidDateRange"))}this.loading=!0;try{let i;i="user"===this.entity&&this.providerId?this.apiService.getEventsProviderUser(this.providerId,this.entityId,n[0],n[1],e?null:this.continuationToken):"user"===this.entity?this.apiService.getEventsOrganizationUser(this.organizationId,this.entityId,n[0],n[1],e?null:this.continuationToken):this.apiService.getEventsCipher(this.entityId,n[0],n[1],e?null:this.continuationToken),e?this.refreshPromise=i:this.morePromise=i,t=yield i}catch(o){this.logService.error(o)}this.continuationToken=t.continuationToken;const r=yield Promise.all(t.data.map((e=>i(this,void 0,void 0,(function*(){const t=null==e.actingUserId?e.userId:e.actingUserId,n=yield this.eventService.getEventInfo(e),i=this.showUser&&null!=t&&this.orgUsersUserIdMap.has(t)?this.orgUsersUserIdMap.get(t):null;return{message:n.message,appIcon:n.appIcon,appName:n.appName,userId:t,userName:null!=i?i.name:this.showUser?this.i18nService.t("unknown"):null,userEmail:null!=i?i.email:this.showUser?"":null,date:e.date,ip:e.ipAddress,type:e.type}})))));!e&&null!=this.events&&this.events.length>0?this.events=this.events.concat(r):this.events=r,this.loading=!1,this.morePromise=null,this.refreshPromise=null}))}}t.EntityEventsComponent=P,P.ɵfac=function(e){return new(e||P)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.EventService),r.ɵɵdirectiveInject(l.PlatformUtilsService),r.ɵɵdirectiveInject(c.UserNamePipe),r.ɵɵdirectiveInject(d.LogService))},P.ɵcmp=r.ɵɵdefineComponent({type:P,selectors:[["app-entity-events"]],inputs:{name:"name",entity:"entity",entityId:"entityId",organizationId:"organizationId",providerId:"providerId",showUser:"showUser"},decls:36,vars:12,consts:[["role","dialog","aria-modal","true","aria-labelledby","eventLogsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","eventLogsTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"appApiAction","disabled","click"],["refreshBtn",""],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],[4,"ngIf"],["class","table table-hover mb-0",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover","mb-0"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["class","border-top-0","width","150",4,"ngIf"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["width","150",1,"border-top-0"],["aria-hidden","true",3,"title"],[3,"innerHTML"],[3,"appA11yTitle"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵtemplate(11,f,2,1,"small",5),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",6),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"span",7),r.ɵɵtext(18,"×"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,g,9,6,"div",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,E,40,25,"div",8),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",9),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"button",10),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,6,"eventLogs"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.name),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,8,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.loaded),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.loaded),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,10,"close"),"\n "))},directives:[p.NgIf,u.A11yTitleDirective,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,h.ApiActionDirective,p.NgClass,p.NgForOf],pipes:[v.I18nPipe,p.DatePipe],encapsulation:2})},60763:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EntityUsersComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(7368)),a=n(33712),s=n(82769),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),f=n(8863),g=n(57490),y=n(39159),x=n(15370),S=n(99729),b=n(50154),w=n(52080);function C(e,t){1&e&&(c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",14),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e&&(c.ɵɵelementStart(0,"span",24),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.selectedCount)}}function E(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"hr"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"noUsersInList"),"\n "))}function P(e,t){1&e&&(c.ɵɵelementStart(0,"th"),c.ɵɵtext(1," "),c.ɵɵelementEnd())}function O(e,t){1&e&&(c.ɵɵelementStart(0,"th",28),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"hidePasswords"),"\n "))}function k(e,t){1&e&&(c.ɵɵelementStart(0,"th",28),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"readOnly"),"\n "))}function A(e,t){1&e&&(c.ɵɵelementStart(0,"span",37),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"invited")))}function T(e,t){1&e&&(c.ɵɵelementStart(0,"span",38),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"accepted")))}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"small",39),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function B(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",40),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",15),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"userAccessAllItems")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"userAccessAllItems")))}function D(e,t){if(1&e&&(c.ɵɵelementStart(0,"td"),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,B,9,6,"ng-container",23),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.accessAll)}}function R(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"owner")))}function F(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"admin")))}function U(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"manager")))}function V(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"user")))}function N(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"custom")))}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",42),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",e.accessAll||!e.checked)}}function j(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"td",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",42),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",e.accessAll||!e.checked)}}function z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",29),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",30),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t}))("change",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).selectedChanged(t)})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",31),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).check(t)})),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"app-avatar",32),c.ɵɵpipe(10,"userName"),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"td"),c.ɵɵtext(15),c.ɵɵtemplate(16,A,3,3,"span",33),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,T,3,3,"span",34),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,M,2,1,"small",35),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵtemplate(23,D,4,1,"td",23),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"td"),c.ɵɵtext(26,"\n "),c.ɵɵtemplate(27,R,3,3,"span",23),c.ɵɵtext(28,"\n "),c.ɵɵtemplate(29,F,3,3,"span",23),c.ɵɵtext(30,"\n "),c.ɵɵtemplate(31,U,3,3,"span",23),c.ɵɵtext(32,"\n "),c.ɵɵtemplate(33,V,3,3,"span",23),c.ɵɵtext(34,"\n "),c.ɵɵtemplate(35,N,3,3,"span",23),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵtemplate(38,_,4,3,"td",36),c.ɵɵtext(39,"\n "),c.ɵɵtemplate(40,j,4,3,"td",36),c.ɵɵtext(41,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=c.ɵɵnextContext(3);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","",e.id.substr(0,8),"_Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled","collection"===n.entity&&e.accessAll),c.ɵɵadvance(5),c.ɵɵproperty("data",c.ɵɵpipeBind1(10,19,e))("email",e.email)("circle",!0)("fontSize",14),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",e.email,"\n "),c.ɵɵadvance(1),c.ɵɵproperty("ngIf",e.status===n.organizationUserStatusType.Invited),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.status===n.organizationUserStatusType.Accepted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.name),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===n.entity),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Owner),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Admin),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Manager),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.User),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.type===n.organizationUserType.Custom),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===n.entity),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","collection"===n.entity)}}function H(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"table",25),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"thead"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"tr"),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"th"),c.ɵɵtext(9," "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"th"),c.ɵɵtext(12," "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"th"),c.ɵɵtext(15),c.ɵɵpipe(16,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵtemplate(18,P,2,0,"th",23),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"th"),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,O,3,3,"th",26),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,k,3,3,"th",26),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"tbody"),c.ɵɵtext(31,"\n "),c.ɵɵtemplate(32,z,42,21,"tr",27),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵadvance(15),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(16,6,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(22,8,"userType")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(2),c.ɵɵproperty("ngIf","collection"===t.entity),c.ɵɵadvance(6),c.ɵɵproperty("ngForOf",e)}}const L=function(e){return{active:e}};function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",18),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",19),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().searchText=t})),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"div",20),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",21),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().filterSelected(!1)})),c.ɵɵtext(17),c.ɵɵpipe(18,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"button",21),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().filterSelected(!0)})),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵtemplate(23,I,2,1,"span",22),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵtemplate(28,E,5,3,"ng-container",23),c.ɵɵtext(29,"\n "),c.ɵɵtemplate(30,H,36,10,"ng-container",23),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.ngIf,n=c.ɵɵnextContext();c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,10,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(11,12,"search")),c.ɵɵproperty("ngModel",n.searchText),c.ɵɵadvance(6),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(18,L,!n.showSelected)),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(18,14,"all"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(20,L,n.showSelected)),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(22,16,"selected"),"\n "),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",n.selectedCount),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}const q=function(e,t){return[e,t,"name","email","id"]};class G{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onEditedUsers=new r.EventEmitter,this.organizationUserType=a.OrganizationUserType,this.organizationUserStatusType=o.OrganizationUserStatusType,this.showSelected=!1,this.loading=!0,this.selectedCount=0,this.allUsers=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.loadUsers(),this.loading=!1}))}get users(){return this.showSelected?this.allUsers.filter((e=>e.checked)):this.allUsers}loadUsers(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getOrganizationUsers(this.organizationId);if(this.allUsers=e.data.map((e=>e)).sort(s.Utils.getSortFunction(this.i18nService,"email")),"group"===this.entity){const t=yield this.apiService.getGroupUsers(this.organizationId,this.entityId);null!=t&&e.data.length>0&&t.forEach((t=>{const n=e.data.filter((e=>e.id===t));null!=n&&n.length>0&&(n[0].checked=!0)}))}else if("collection"===this.entity){const t=yield this.apiService.getCollectionUsers(this.organizationId,this.entityId);null!=t&&e.data.length>0&&t.forEach((t=>{const n=e.data.filter((e=>!e.accessAll&&e.id===t.id));null!=n&&n.length>0&&(n[0].checked=!0,n[0].readOnly=t.readOnly,n[0].hidePasswords=t.hidePasswords)}))}this.allUsers.forEach((e=>{"collection"===this.entity&&e.accessAll&&(e.checked=!0),e.checked&&this.selectedCount++}))}))}check(e){"collection"===this.entity&&e.accessAll||(e.checked=!e.checked,this.selectedChanged(e))}selectedChanged(e){e.checked?this.selectedCount++:("collection"===this.entity&&(e.readOnly=!1,e.hidePasswords=!1),this.selectedCount--)}filterSelected(e){this.showSelected=e}submit(){return i(this,void 0,void 0,(function*(){try{if("group"===this.entity){const e=this.users.filter((e=>e.checked)).map((e=>e.id));this.formPromise=this.apiService.putGroupUsers(this.organizationId,this.entityId,e)}else{const e=this.users.filter((e=>e.checked&&!e.accessAll)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords)));this.formPromise=this.apiService.putCollectionUsers(this.organizationId,this.entityId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedUsers")),this.onEditedUsers.emit()}catch(e){this.logService.error(e)}}))}}t.EntityUsersComponent=G,G.ɵfac=function(e){return new(e||G)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},G.ɵcmp=c.ɵɵdefineComponent({type:G,selectors:[["app-entity-users"]],inputs:{entity:"entity",entityId:"entityId",entityName:"entityName",organizationId:"organizationId"},outputs:{onEditedUsers:"onEditedUsers"},decls:49,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAccessTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAccessTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"d-flex"],[1,"mr-3"],["for","search",1,"sr-only"],["type","search","id","search","name","SearchText",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],[4,"ngIf"],[1,"badge","badge-pill","badge-info"],[1,"table","table-hover","table-list","mb-0"],["width","100","class","text-center",4,"ngIf"],[4,"ngFor","ngForOf"],["width","100",1,"text-center"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","disabled","ngModelChange","change"],["width","30",3,"click"],["size","25",3,"data","email","circle","fontSize"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],["class","text-center",4,"ngIf"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-filter",3,"title"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementStart(12,"small"),c.ɵɵtext(13),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",6),c.ɵɵpipe(17,"i18n"),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"span",7),c.ɵɵtext(20,"×"),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,C,9,6,"div",8),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,K,32,22,"div",8),c.ɵɵpipe(27,"search"),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",9),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"button",10),c.ɵɵtext(32,"\n "),c.ɵɵelement(33,"i",11),c.ɵɵpipe(34,"i18n"),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"span"),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"button",12),c.ɵɵtext(42),c.ɵɵpipe(43,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(11,10,"userAccess"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(t.entityName),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(17,12,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading||!t.users),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&t.users&&c.ɵɵpipeBindV(27,14,c.ɵɵpureFunction2(26,q,t.users,t.searchText))),c.ɵɵadvance(5),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(34,20,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(38,22,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(43,24,"close"),"\n ")}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,f.A11yTitleDirective,g.NgIf,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,g.NgClass,g.NgForOf,h.CheckboxControlValueAccessor,y.StopPropDirective,x.AvatarComponent],pipes:[S.I18nPipe,b.SearchPipe,w.UserNamePipe],encapsulation:2})},25829:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventsComponent=void 0;n(68012),n(52080),n(91674),n(97445),n(51554),n(36631),n(63513),n(73828),n(68291);const r=n(75512),o=(n(3202),n(32621)),a=n(91674),s=n(68012),l=n(3202),c=n(51554),d=n(97445),p=n(73828),u=n(36631),m=n(52080),h=n(63513),v=n(68291),f=n(96832),g=n(56820),y=n(57490),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",17),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noEventsInList")))}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td"),o.ɵɵtext(3),o.ɵɵpipe(4,"date"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"td"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",26),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"span",17),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"td"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",27),o.ɵɵtext(17),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelement(20,"td",28),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(4,11,e.date,"medium")),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("text-muted bwi bwi-lg ",e.appIcon,""),o.ɵɵpropertyInterpolate2("title","",e.appName,", ",e.ip,""),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",e.appName,", ",e.ip,""),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",e.userEmail),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.userName),o.ɵɵadvance(3),o.ɵɵproperty("innerHTML",e.message,o.ɵɵsanitizeHtml)}}function C(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"thead"),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"tr"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"th",21),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"th",22),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"span",17),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"th",23),o.ɵɵtext(18),o.ɵɵpipe(19,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"th",24),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"tbody"),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,w,22,14,"tr",25),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"timestamp")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"device")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(19,9,"user")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"event")),o.ɵɵadvance(7),o.ɵɵproperty("ngForOf",e.events)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",29,30),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).loadEvents(!1)})),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",31),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"span"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵproperty("appApiAction",t.morePromise)("disabled",t.loaded&&e.loading),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(4,4,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"loadMore"))}}function E(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,3,3,"p",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,32,13,"table",18),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,I,10,8,"button",19),o.ɵɵtext(7,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.events||!e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.events&&e.events.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.continuationToken)}}const P=function(e){return{"bwi-spin":e}},O=function(e){return{loading:e}};class k extends r.BaseEventsComponent{constructor(e,t,n,i,r,o,a,s,l,c,d){super(n,i,r,o,s),this.apiService=e,this.route=t,this.router=a,this.userNamePipe=l,this.organizationService=c,this.providerService=d,this.exportFileName="org-events",this.orgUsersUserIdMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.organization=yield this.organizationService.get(this.organizationId),null!=this.organization&&this.organization.useEvents?yield this.load():this.router.navigate(["/organizations",this.organizationId])}))))}))}load(){return i(this,void 0,void 0,(function*(){if((yield this.apiService.getOrganizationUsers(this.organizationId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersUserIdMap.set(e.userId,{name:t,email:e.email})})),null!=this.organization.providerId)try{if(null!=(yield this.providerService.get(this.organization.providerId))&&(yield this.providerService.get(this.organization.providerId)).canManageUsers){(yield this.apiService.getProviderUsers(this.organization.providerId)).data.forEach((e=>{const t=this.userNamePipe.transform(e);this.orgUsersUserIdMap.set(e.userId,{name:`${t} (${this.organization.providerName})`,email:e.email})}))}}catch(e){this.logService.warning(e)}yield this.loadEvents(!0),this.loaded=!0}))}requestEvents(e,t,n){return this.apiService.getEventsOrganization(this.organizationId,e,t,n)}getUserName(e,t){return null==t?null:this.orgUsersUserIdMap.has(t)?this.orgUsersUserIdMap.get(t):null!=e.providerId&&e.providerId===this.organization.providerId?{name:this.organization.providerName}:null}}t.EventsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.ActivatedRoute),o.ɵɵdirectiveInject(l.EventService),o.ɵɵdirectiveInject(c.I18nService),o.ɵɵdirectiveInject(d.ExportService),o.ɵɵdirectiveInject(p.PlatformUtilsService),o.ɵɵdirectiveInject(s.Router),o.ɵɵdirectiveInject(u.LogService),o.ɵɵdirectiveInject(m.UserNamePipe),o.ɵɵdirectiveInject(h.OrganizationService),o.ɵɵdirectiveInject(v.ProviderService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-org-events"]],features:[o.ɵɵInheritDefinitionFeature],decls:57,vars:35,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],[1,"form-inline"],["for","start",1,"sr-only"],["type","datetime-local","id","start","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"mx-2"],["for","end",1,"sr-only"],["type","datetime-local","id","end","placeholder","YYYY-MM-DDTHH:MM",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange","change"],[1,"d-inline",3,"appApiAction"],["refreshForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["exportForm",""],["type","button",1,"btn","btn-sm","btn-outline-primary","btn-submit","manual","ml-3",3,"ngClass","disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover",4,"ngIf"],["type","button","class","btn btn-block btn-link btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"table","table-hover"],["width","210",1,"border-top-0"],["width","40",1,"border-top-0"],["width","150",1,"border-top-0"],[1,"border-top-0"],[4,"ngFor","ngForOf"],["aria-hidden","true",3,"title"],[3,"title"],[3,"innerHTML"],["type","button",1,"btn","btn-block","btn-link","btn-submit",3,"appApiAction","disabled","click"],["moreBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",1),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",2),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",3),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",4),o.ɵɵlistener("ngModelChange",(function(e){return t.start=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"span",5),o.ɵɵtext(18,"-"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"label",6),o.ɵɵtext(21),o.ɵɵpipe(22,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"input",7),o.ɵɵlistener("ngModelChange",(function(e){return t.end=e}))("change",(function(){return t.dirtyDates=!0})),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"form",8,9),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"button",10),o.ɵɵlistener("click",(function(){return t.loadEvents(!0)})),o.ɵɵtext(32,"\n "),o.ɵɵelement(33,"i",11),o.ɵɵtext(34),o.ɵɵpipe(35,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"form",8,12),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",13),o.ɵɵlistener("click",(function(){return t.exportEvents()})),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",14),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵtemplate(53,S,9,6,"ng-container",15),o.ɵɵtext(54,"\n"),o.ɵɵtemplate(55,E,8,3,"ng-container",15),o.ɵɵtext(56,"\n")),2&e){const e=o.ɵɵreference(29),n=o.ɵɵreference(39);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"eventLogs")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,19,"startDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(15,21,"startDate")),o.ɵɵproperty("ngModel",t.start),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(22,23,"endDate")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("placeholder",o.ɵɵpipeBind1(25,25,"endDate")),o.ɵɵproperty("ngModel",t.end),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.refreshPromise),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loaded&&e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(31,P,t.loaded&&e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(35,27,"refresh"),"\n "),o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.exportPromise),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(33,O,n.loading))("disabled",t.loaded&&n.loading||t.dirtyDates),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"export")),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded)}},directives:[f.DefaultValueAccessor,f.NgControlStatus,f.NgModel,f.ɵNgNoValidate,f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.NgClass,y.NgIf,y.NgForOf],pipes:[x.I18nPipe,y.DatePipe],encapsulation:2})},27611:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GroupAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(3174),n(51554),n(36631),n(73828),n(34917)),a=n(65642),s=n(13234),l=n(11342),c=n(32621),d=n(91674),p=n(51554),u=n(3174),m=n(73828),h=n(36631),v=n(96832),f=n(56820),g=n(8863),y=n(57490),x=n(39159),S=n(99729);function b(e,t){1&e&&(c.ɵɵelementStart(0,"div",15),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",16),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",17),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).selectAll(!0)})),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"button",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).selectAll(!1)})),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,2,"selectAll"),"\n "),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function C(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function I(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td",41),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"input",42),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"td",43),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).check(t)})),c.ɵɵtext(8),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"td",44),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",45),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.hidePasswords=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"td",44),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",45),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.readOnly=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked),c.ɵɵadvance(4),c.ɵɵtextInterpolate1("\n ",e.name,"\n "),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].HidePasswords"),c.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].ReadOnly"),c.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked)}}function E(e,t){if(1&e&&(c.ɵɵelementStart(0,"table",38),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"thead"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"tr"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"th"),c.ɵɵtext(7," "),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"th"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"th",39),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"th",39),c.ɵɵtext(18),c.ɵɵpipe(19,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"tbody"),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,I,20,9,"tr",40),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,4,"name")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,6,"hidePasswords")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(19,8,"readOnly")),c.ɵɵadvance(7),c.ɵɵproperty("ngForOf",e.collections)}}function P(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,C,3,3,"div",35),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,E,28,10,"table",37),c.ɵɵtext(5,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.collections||!e.collections.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const O=function(e){return{"mb-0":e}};function k(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",15),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",18),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",19),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",20),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementStart(11,"div",18),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"label",21),c.ɵɵtext(14),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"input",22),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().externalId=t})),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"small",23),c.ɵɵtext(20),c.ɵɵpipe(21,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"h3",24),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",25),c.ɵɵtext(27),c.ɵɵpipe(28,"i18n"),c.ɵɵelementStart(29,"a",26),c.ɵɵpipe(30,"i18n"),c.ɵɵtext(31,"\n "),c.ɵɵelement(32,"i",27),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵtemplate(36,w,10,6,"div",28),c.ɵɵtext(37,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"div",29),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"div",30),c.ɵɵtext(42,"\n "),c.ɵɵelementStart(43,"input",31),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().access=t})),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"label",32),c.ɵɵtext(46),c.ɵɵpipe(47,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n "),c.ɵɵelementStart(50,"div",30),c.ɵɵtext(51,"\n "),c.ɵɵelementStart(52,"input",33),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().access=t})),c.ɵɵelementEnd(),c.ɵɵtext(53,"\n "),c.ɵɵelementStart(54,"label",34),c.ɵɵtext(55),c.ɵɵpipe(56,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(57,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(58,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(59,"\n "),c.ɵɵtemplate(60,P,6,2,"ng-container",35),c.ɵɵtext(61,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,14,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.name),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(15,16,"externalId")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.externalId),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(21,18,"externalIdDesc")),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(28,20,"accessControl"),"\n "),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(30,22,"learnMore")),c.ɵɵadvance(7),c.ɵɵproperty("ngIf","selected"===e.access&&e.collections&&e.collections.length),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(28,O,"selected"!==e.access)),c.ɵɵadvance(4),c.ɵɵproperty("ngModel",e.access),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(47,24,"groupAccessAllItems"),"\n "),c.ɵɵadvance(6),c.ɵɵproperty("ngModel",e.access),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(56,26,"groupAccessSelectedCollections"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf","selected"===e.access)}}function A(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",46,47),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",48),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",49),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext();c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}class T{constructor(e,t,n,i,o){this.apiService=e,this.i18nService=t,this.collectionService=n,this.platformUtilsService=i,this.logService=o,this.onSavedGroup=new r.EventEmitter,this.onDeletedGroup=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.access="selected",this.collections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.groupId,yield this.loadCollections(),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editGroup");try{const e=yield this.apiService.getGroupDetails(this.organizationId,this.groupId);this.access=e.accessAll?"all":"selected",this.name=e.name,this.externalId=e.externalId,null!=e.collections&&null!=this.collections&&e.collections.forEach((e=>{const t=this.collections.filter((t=>t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("addGroup");this.loading=!1}))}loadCollections(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getCollections(this.organizationId)).data.map((e=>new a.Collection(new o.CollectionData(e))));this.collections=yield this.collectionService.decryptMany(e)}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){const e=new s.GroupRequest;e.name=this.name,e.externalId=this.externalId,e.accessAll="all"===this.access,e.accessAll||(e.collections=this.collections.filter((e=>e.checked)).map((e=>new l.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords))));try{this.editMode?this.formPromise=this.apiService.putGroup(this.organizationId,this.groupId,e):this.formPromise=this.apiService.postGroup(this.organizationId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedGroupId":"createdGroupId",this.name)),this.onSavedGroup.emit()}catch(t){this.logService.error(t)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteGroupConfirmation"),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteGroup(this.organizationId,this.groupId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedGroupId",this.name)),this.onDeletedGroup.emit()}catch(e){this.logService.error(e)}}))}}t.GroupAddEditComponent=T,T.ɵfac=function(e){return new(e||T)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.CollectionService),c.ɵɵdirectiveInject(m.PlatformUtilsService),c.ɵɵdirectiveInject(h.LogService))},T.ɵcmp=c.ɵɵdefineComponent({type:T,selectors:[["app-group-add-edit"]],inputs:{groupId:"groupId",organizationId:"organizationId"},outputs:{onSavedGroup:"onSavedGroup",onDeletedGroup:"onDeletedGroup"},decls:49,vars:18,consts:[["role","dialog","aria-modal","true","aria-labelledby","groupAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","groupAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","externalId"],["id","externalId","type","text","name","ExternalId",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],[1,"mt-4","d-flex"],[1,"mb-2"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/user-types-access-control/#access-control",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["class","ml-auto",4,"ngIf"],[1,"form-group",3,"ngClass"],[1,"form-check"],["type","radio","name","access","id","accessAll","value","all",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessAll",1,"form-check-label"],["type","radio","name","access","id","accessSelected","value","selected",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessSelected",1,"form-check-label"],[4,"ngIf"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,b,9,6,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵtemplate(22,k,62,30,"div",8),c.ɵɵtext(23,"\n "),c.ɵɵelementStart(24,"div",9),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"button",10),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"i",11),c.ɵɵpipe(29,"i18n"),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"span"),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"button",12),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"div",13),c.ɵɵtext(41,"\n "),c.ɵɵtemplate(42,A,9,10,"button",14),c.ɵɵtext(43,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n")),2&e){const e=c.ɵɵreference(5);c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,10,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(29,12,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(33,14,"save")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(38,16,"cancel"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.editMode)}},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.A11yTitleDirective,y.NgIf,v.DefaultValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,y.NgClass,v.RadioControlValueAccessor,y.NgForOf,v.CheckboxControlValueAccessor,x.StopPropDirective],pipes:[S.I18nPipe],encapsulation:2})},41204:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GroupsComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(51554),n(36631),n(63513),n(73828),n(60421),n(82769)),s=n(60763),l=n(27611),c=n(32621),d=n(91674),p=n(68012),u=n(51554),m=n(64684),h=n(73828),v=n(60421),f=n(36631),g=n(63513),y=n(96832),x=n(57490),S=n(37407),b=n(1142),w=n(8863),C=n(99729),I=n(50154),E=["addEdit"],P=["usersTemplate"];function O(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",9),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",10),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function k(e,t){1&e&&(c.ɵɵelementStart(0,"p"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"noGroupsInList")))}function A(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"tr"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"td"),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"a",14),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).edit(t)})),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"td",15),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",16),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",17),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelement(15,"i",18),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"div",19),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"a",20),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).users(t)})),c.ɵɵtext(21,"\n "),c.ɵɵelement(22,"i",21),c.ɵɵtext(23),c.ɵɵpipe(24,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"a",22),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(3).delete(t)})),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"i",23),c.ɵɵtext(29),c.ɵɵpipe(30,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit;c.ɵɵadvance(5),c.ɵɵtextInterpolate(e.name),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,4,"options")),c.ɵɵadvance(11),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(24,6,"users"),"\n "),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(30,8,"delete"),"\n ")}}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"table",12),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"tbody"),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,A,35,10,"tr",13),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function M(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,k,3,3,"p",6),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,T,7,3,"table",11),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length)}}function B(e,t){}function D(e,t){}class R{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.route=t,this.i18nService=n,this.modalService=i,this.platformUtilsService=r,this.router=o,this.searchService=a,this.logService=s,this.organizationService=l,this.loading=!0,this.didScroll=!1,this.pageSize=100,this.pagedGroupsCount=0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId;const t=yield this.organizationService.get(this.organizationId);null!=t&&t.useGroups?(yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){this.searchText=e.search}))))):this.router.navigate(["/organizations",this.organizationId])}))))}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getGroups(this.organizationId),t=null!=e.data&&e.data.length>0?e.data:[];t.sort(a.Utils.getSortFunction(this.i18nService,"name")),this.groups=t,this.resetPaging(),this.loading=!1}))}loadMore(){if(!this.groups||this.groups.length<=this.pageSize)return;const e=this.pagedGroups.length;let t=this.pageSize;0===e&&this.pagedGroupsCount>this.pageSize&&(t=this.pagedGroupsCount),this.groups.length>e&&(this.pagedGroups=this.pagedGroups.concat(this.groups.slice(e,e+t))),this.pagedGroupsCount=this.pagedGroups.length,this.didScroll=this.pagedGroups.length>this.pageSize}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(l.GroupAddEditComponent,this.addEditModalRef,(n=>{n.organizationId=this.organizationId,n.groupId=null!=e?e.id:null,n.onSavedGroup.subscribe((()=>{t.close(),this.load()})),n.onDeletedGroup.subscribe((()=>{t.close(),this.removeGroup(e)}))}))}))}add(){this.edit(null)}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("deleteGroupConfirmation"),e.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteGroup(this.organizationId,e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("deletedGroupId",e.name)),this.removeGroup(e)}catch(t){this.logService.error(t)}}))}users(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(s.EntityUsersComponent,this.usersModalRef,(n=>{n.organizationId=this.organizationId,n.entity="group",n.entityId=e.id,n.entityName=e.name,n.onEditedUsers.subscribe((()=>{t.close()}))}))}))}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedGroups=[],this.loadMore()}))}isSearching(){return this.searchService.isSearchable(this.searchText)}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.groups&&this.groups.length>this.pageSize}removeGroup(e){const t=this.groups.indexOf(e);t>-1&&(this.groups.splice(t,1),this.resetPaging())}}t.GroupsComponent=R,R.ɵfac=function(e){return new(e||R)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.ActivatedRoute),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.ModalService),c.ɵɵdirectiveInject(h.PlatformUtilsService),c.ɵɵdirectiveInject(p.Router),c.ɵɵdirectiveInject(v.SearchService),c.ɵɵdirectiveInject(f.LogService),c.ɵɵdirectiveInject(g.OrganizationService))},R.ɵcmp=c.ɵɵdefineComponent({type:R,selectors:[["app-org-groups"]],viewQuery:function(e,t){if(1&e&&(c.ɵɵviewQuery(E,7,r.ViewContainerRef),c.ɵɵviewQuery(P,7,r.ViewContainerRef)),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.addEditModalRef=e.first),c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.usersModalRef=e.first)}},decls:37,vars:20,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["usersTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table table-hover table-list","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-users"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h1"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",1),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div"),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",2),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",3),c.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),c.ɵɵpipe(15,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"button",4),c.ɵɵlistener("click",(function(){return t.add()})),c.ɵɵtext(19,"\n "),c.ɵɵelement(20,"i",5),c.ɵɵtext(21),c.ɵɵpipe(22,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n"),c.ɵɵtemplate(26,O,9,6,"ng-container",6),c.ɵɵtext(27,"\n"),c.ɵɵtemplate(28,M,6,2,"ng-container",6),c.ɵɵpipe(29,"search"),c.ɵɵtext(30,"\n"),c.ɵɵtemplate(31,B,0,0,"ng-template",null,7,c.ɵɵtemplateRefExtractor),c.ɵɵtext(33,"\n"),c.ɵɵtemplate(34,D,0,0,"ng-template",null,8,c.ɵɵtemplateRefExtractor),c.ɵɵtext(36,"\n")),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,7,"groups")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,9,"search")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("placeholder",c.ɵɵpipeBind1(15,11,"search")),c.ɵɵproperty("ngModel",t.searchText),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(22,13,"newGroup"),"\n "),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedGroups:c.ɵɵpipeBind4(29,15,t.groups,t.searchText,"name","id"))))},directives:[y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,x.NgIf,S.InfiniteScrollDirective,x.NgForOf,b.StopClickDirective,w.A11yTitleDirective],pipes:[C.I18nPipe,I.SearchPipe],encapsulation:2})},2021:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ManageComponent=void 0;n(68012),n(63513);const r=n(32621),o=n(68012),a=n(63513),s=n(57490),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementStart(0,"a",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"people"),"\n "))}function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"collections"),"\n "))}function p(e,t){1&e&&(r.ɵɵelementStart(0,"a",16),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"groups"),"\n "))}function u(e,t){1&e&&(r.ɵɵelementStart(0,"a",17),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"policies"),"\n "))}function m(e,t){1&e&&(r.ɵɵelementStart(0,"a",18),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"singleSignOn"),"\n "))}function h(e,t){1&e&&(r.ɵɵelementStart(0,"a",19),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"eventLogs"),"\n "))}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",5),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",6),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",7),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,c,3,3,"a",8),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,d,3,3,"a",9),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,p,3,3,"a",10),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,u,3,3,"a",11),r.ɵɵtext(15,"\n "),r.ɵɵtemplate(16,m,3,3,"a",12),r.ɵɵtext(17,"\n "),r.ɵɵtemplate(18,h,3,3,"a",13),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,7,"manage")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.organization.canManageUsers),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canViewAllCollections||e.organization.canViewAssignedCollections),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManageGroups&&e.accessGroups),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManagePolicies&&e.accessPolicies),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canManageSso&&e.accessSso),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canAccessEventLogs&&e.accessEvents)}}class f{constructor(e,t){this.route=e,this.organizationService=t,this.accessPolicies=!1,this.accessGroups=!1,this.accessEvents=!1,this.accessSso=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.accessPolicies=this.organization.usePolicies,this.accessSso=this.organization.useSso,this.accessEvents=this.organization.useEvents,this.accessGroups=this.organization.useGroups}))))}}t.ManageComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-org-manage"]],decls:16,vars:1,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","people","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","collections","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","groups","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","policies","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","sso","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","events","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","people","routerLinkActive","active",1,"list-group-item"],["routerLink","collections","routerLinkActive","active",1,"list-group-item"],["routerLink","groups","routerLinkActive","active",1,"list-group-item"],["routerLink","policies","routerLinkActive","active",1,"list-group-item"],["routerLink","sso","routerLinkActive","active",1,"list-group-item"],["routerLink","events","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,v,21,9,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelement(11,"router-outlet"),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(6),r.ɵɵproperty("ngIf",t.organization))},directives:[s.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive],pipes:[l.I18nPipe],encapsulation:2})},74147:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PeopleComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(50154),n(52080),n(64684),n(47594),n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(62166),n(60421),n(73569),n(9724),n(7368)),s=n(33712),l=n(49906),c=n(39950),d=n(91247),p=n(87169),u=n(1833),m=n(61692),h=n(37131),v=n(33747),f=n(87876),g=n(34236),y=n(28546),x=n(68535),S=n(32621),b=n(91674),w=n(68012),C=n(51554),I=n(64684),E=n(73828),P=n(85714),O=n(60421),k=n(47594),A=n(62166),T=n(36631),M=n(50154),B=n(52080),D=n(9724),R=n(73569),F=n(63513),U=n(57490),V=n(96832),N=n(8863),_=n(1142),j=n(37407),z=n(51626),H=n(39159),L=n(15370),K=n(99729),q=n(50154),G=n(52080),W=["addEdit"],$=["groupsTemplate"],Y=["eventsTemplate"],Q=["confirmTemplate"],J=["resetPasswordTemplate"],Z=["bulkStatusTemplate"],X=["bulkConfirmTemplate"],ee=["bulkRemoveTemplate"];function te(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",32),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.allCount)}}function ne(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",32),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.invitedCount)}}function ie(e,t){if(1&e&&(S.ɵɵelementStart(0,"span",33),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext();S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.acceptedCount)}}function re(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"button",34),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);return S.ɵɵnextContext().bulkConfirm()})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",35),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"confirmSelected"),"\n "))}function oe(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",36),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n"),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"loading")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"loading")))}function ae(e,t){1&e&&(S.ɵɵelementStart(0,"p"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"noUsersInList")))}function se(e,t){1&e&&(S.ɵɵelementStart(0,"app-callout",41),S.ɵɵpipe(1,"i18n"),S.ɵɵtext(2),S.ɵɵpipe(3,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(1,2,"confirmUsers")),S.ɵɵadvance(2),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(3,4,"usersNeedConfirmed"),"\n "))}function le(e,t){1&e&&(S.ɵɵelementStart(0,"span",58),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"invited")))}function ce(e,t){1&e&&(S.ɵɵelementStart(0,"span",59),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"accepted")))}function de(e,t){if(1&e&&(S.ɵɵelementStart(0,"small",60),S.ɵɵtext(1),S.ɵɵelementEnd()),2&e){const e=S.ɵɵnextContext().$implicit;S.ɵɵadvance(1),S.ɵɵtextInterpolate(e.name)}}function pe(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",61),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n "),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"userUsingTwoStep")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"userUsingTwoStep")))}function ue(e,t){1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",62),S.ɵɵpipe(3,"i18n"),S.ɵɵtext(4,"\n "),S.ɵɵelementStart(5,"span",37),S.ɵɵtext(6),S.ɵɵpipe(7,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(8,"\n "),S.ɵɵelementContainerEnd()),2&e&&(S.ɵɵadvance(2),S.ɵɵpropertyInterpolate("title",S.ɵɵpipeBind1(3,2,"enrolledPasswordReset")),S.ɵɵadvance(4),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(7,4,"enrolledPasswordReset")))}function me(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"owner")))}function he(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"admin")))}function ve(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"manager")))}function fe(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"user")))}function ge(e,t){1&e&&(S.ɵɵelementStart(0,"span"),S.ɵɵtext(1),S.ɵɵpipe(2,"i18n"),S.ɵɵelementEnd()),2&e&&(S.ɵɵadvance(1),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(2,1,"custom")))}function ye(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).reinvite(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",14),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function xe(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",64),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).confirm(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",35),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function Se(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).groups(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",65),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"groups"),"\n "))}function be(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).events(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",66),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function we(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"a",63),S.ɵɵlistener("click",(function(){S.ɵɵrestoreView(e);const t=S.ɵɵnextContext().$implicit;return S.ɵɵnextContext(3).resetPassword(t)})),S.ɵɵtext(1,"\n "),S.ɵɵelement(2,"i",67),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd()}2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(4,1,"resetPassword"),"\n "))}function Ce(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementStart(0,"tr"),S.ɵɵtext(1,"\n "),S.ɵɵelementStart(2,"td",42),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).checkUser(t)})),S.ɵɵtext(3,"\n "),S.ɵɵelementStart(4,"input",43),S.ɵɵlistener("ngModelChange",(function(t){return S.ɵɵrestoreView(e).$implicit.checked=t})),S.ɵɵelementEnd(),S.ɵɵtext(5,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(6,"\n "),S.ɵɵelementStart(7,"td",44),S.ɵɵtext(8,"\n "),S.ɵɵelementStart(9,"app-avatar",45),S.ɵɵpipe(10,"userName"),S.ɵɵtext(11,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(12,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(13,"\n "),S.ɵɵelementStart(14,"td"),S.ɵɵtext(15,"\n "),S.ɵɵelementStart(16,"a",46),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).edit(t)})),S.ɵɵtext(17),S.ɵɵelementEnd(),S.ɵɵtext(18,"\n "),S.ɵɵtemplate(19,le,3,3,"span",47),S.ɵɵtext(20,"\n "),S.ɵɵtemplate(21,ce,3,3,"span",48),S.ɵɵtext(22,"\n "),S.ɵɵtemplate(23,de,2,1,"small",49),S.ɵɵtext(24,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(25,"\n "),S.ɵɵelementStart(26,"td"),S.ɵɵtext(27,"\n "),S.ɵɵtemplate(28,pe,9,6,"ng-container",23),S.ɵɵtext(29,"\n "),S.ɵɵtemplate(30,ue,9,6,"ng-container",23),S.ɵɵtext(31,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(32,"\n "),S.ɵɵelementStart(33,"td"),S.ɵɵtext(34,"\n "),S.ɵɵtemplate(35,me,3,3,"span",23),S.ɵɵtext(36,"\n "),S.ɵɵtemplate(37,he,3,3,"span",23),S.ɵɵtext(38,"\n "),S.ɵɵtemplate(39,ve,3,3,"span",23),S.ɵɵtext(40,"\n "),S.ɵɵtemplate(41,fe,3,3,"span",23),S.ɵɵtext(42,"\n "),S.ɵɵtemplate(43,ge,3,3,"span",23),S.ɵɵtext(44,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(45,"\n "),S.ɵɵelementStart(46,"td",50),S.ɵɵtext(47,"\n "),S.ɵɵelementStart(48,"div",51),S.ɵɵtext(49,"\n "),S.ɵɵelementStart(50,"button",52),S.ɵɵpipe(51,"i18n"),S.ɵɵtext(52,"\n "),S.ɵɵelement(53,"i",53),S.ɵɵtext(54,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(55,"\n "),S.ɵɵelementStart(56,"div",54),S.ɵɵtext(57,"\n "),S.ɵɵtemplate(58,ye,5,3,"a",55),S.ɵɵtext(59,"\n "),S.ɵɵtemplate(60,xe,5,3,"a",56),S.ɵɵtext(61,"\n "),S.ɵɵtemplate(62,Se,5,3,"a",55),S.ɵɵtext(63,"\n "),S.ɵɵtemplate(64,be,5,3,"a",55),S.ɵɵtext(65,"\n "),S.ɵɵtemplate(66,we,5,3,"a",55),S.ɵɵtext(67,"\n "),S.ɵɵelementStart(68,"a",57),S.ɵɵlistener("click",(function(){const t=S.ɵɵrestoreView(e).$implicit;return S.ɵɵnextContext(3).remove(t)})),S.ɵɵtext(69,"\n "),S.ɵɵelement(70,"i",17),S.ɵɵtext(71),S.ɵɵpipe(72,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(73,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(74,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(75,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(76,"\n "),S.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=S.ɵɵnextContext(3);S.ɵɵadvance(4),S.ɵɵproperty("ngModel",e.checked),S.ɵɵadvance(5),S.ɵɵproperty("data",S.ɵɵpipeBind1(10,23,e))("email",e.email)("circle",!0)("fontSize",14),S.ɵɵadvance(8),S.ɵɵtextInterpolate(e.email),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.name),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",e.twoFactorEnabled),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.showEnrolledStatus(e)),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",e.type===n.userType.Owner),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Admin),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Manager),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.User),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.type===n.userType.Custom),S.ɵɵadvance(7),S.ɵɵpropertyInterpolate("appA11yTitle",S.ɵɵpipeBind1(51,25,"options")),S.ɵɵadvance(8),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Invited),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.status===n.userStatusType.Accepted),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.accessGroups),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.accessEvents&&e.status===n.userStatusType.Confirmed),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",n.allowResetPassword(e)),S.ɵɵadvance(5),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(72,27,"remove"),"\n ")}}function Ie(e,t){if(1&e){const e=S.ɵɵgetCurrentView();S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵtemplate(2,se,4,6,"app-callout",38),S.ɵɵtext(3,"\n "),S.ɵɵelementStart(4,"table",39),S.ɵɵlistener("scrolled",(function(){S.ɵɵrestoreView(e);return S.ɵɵnextContext(2).loadMore()})),S.ɵɵtext(5,"\n "),S.ɵɵelementStart(6,"tbody"),S.ɵɵtext(7,"\n "),S.ɵɵtemplate(8,Ce,77,29,"tr",40),S.ɵɵtext(9,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(10,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(11,"\n "),S.ɵɵelementContainerEnd()}if(2&e){const e=S.ɵɵnextContext().ngIf,t=S.ɵɵnextContext();S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.showConfirmUsers),S.ɵɵadvance(2),S.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),S.ɵɵadvance(4),S.ɵɵproperty("ngForOf",e)}}function Ee(e,t){if(1&e&&(S.ɵɵelementContainerStart(0),S.ɵɵtext(1,"\n "),S.ɵɵtemplate(2,ae,3,3,"p",23),S.ɵɵtext(3,"\n "),S.ɵɵtemplate(4,Ie,12,4,"ng-container",23),S.ɵɵtext(5,"\n"),S.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;S.ɵɵadvance(2),S.ɵɵproperty("ngIf",!e.length),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",e.length)}}function Pe(e,t){}function Oe(e,t){}function ke(e,t){}function Ae(e,t){}function Te(e,t){}function Me(e,t){}function Be(e,t){}function De(e,t){}const Re=function(e){return{active:e}},Fe=function(e,t){return[e,t,"name","email","id"]};class Ue extends u.BasePeopleComponent{constructor(e,t,n,i,r,o,l,c,d,p,u,m,h,v,f,g){super(e,c,n,r,o,d,i,u,m,h,f),this.route=t,this.router=l,this.policyService=p,this.syncService=v,this.organizationService=g,this.userType=s.OrganizationUserType,this.userStatusType=a.OrganizationUserStatusType,this.status=null,this.accessEvents=!1,this.accessGroups=!1,this.canResetPassword=!1,this.orgUseResetPassword=!1,this.orgHasKeys=!1,this.orgResetPasswordPolicyEnabled=!1,this.callingUserType=null}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId;const t=yield this.organizationService.get(this.organizationId);if(t.canManageUsers){if(this.accessEvents=t.useEvents,this.accessGroups=t.useGroups,this.canResetPassword=t.canManageUsersPassword,this.orgUseResetPassword=t.useResetPassword,this.callingUserType=t.type,this.orgHasKeys=t.hasPublicAndPrivateKeys,this.canResetPassword&&!this.orgHasKeys){const e=yield this.cryptoService.getOrgKey(this.organizationId),t=yield this.cryptoService.makeKeyPair(e),n=new c.OrganizationKeysRequest(t[0],t[1].encryptedString),i=yield this.apiService.postOrganizationKeys(this.organizationId,n);if(null==i)throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));this.orgHasKeys=null!=i.publicKey&&null!=i.privateKey,yield this.syncService.fullSync(!0)}yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(this.searchText=e.search,null!=e.viewEvents){const t=this.users.filter((t=>t.id===e.viewEvents));t.length>0&&t[0].status===a.OrganizationUserStatusType.Confirmed&&this.events(t[0])}}))))}else this.router.navigate(["../collections"],{relativeTo:this.route})}))))}))}load(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){const t=yield this.policyService.getPolicyForOrganization(l.PolicyType.ResetPassword,this.organizationId);this.orgResetPasswordPolicyEnabled=null==t?void 0:t.enabled,e.load.call(this)}))}getUsers(){return this.apiService.getOrganizationUsers(this.organizationId)}deleteUser(e){return this.apiService.deleteOrganizationUser(this.organizationId,e)}reinviteUser(e){return this.apiService.postOrganizationUserReinvite(this.organizationId,e)}confirmUser(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.getOrgKey(this.organizationId),i=yield this.cryptoService.rsaEncrypt(n.key,t.buffer),r=new p.OrganizationUserConfirmRequest;r.key=i.encryptedString,yield this.apiService.postOrganizationUserConfirm(this.organizationId,e.id,r)}))}allowResetPassword(e){let t=!1;switch(this.callingUserType){case s.OrganizationUserType.Owner:t=!0;break;case s.OrganizationUserType.Admin:t=e.type!==s.OrganizationUserType.Owner;break;case s.OrganizationUserType.Custom:t=e.type!==s.OrganizationUserType.Owner&&e.type!==s.OrganizationUserType.Admin}return this.canResetPassword&&t&&this.orgUseResetPassword&&this.orgHasKeys&&e.resetPasswordEnrolled&&this.orgResetPasswordPolicyEnabled&&e.status===a.OrganizationUserStatusType.Confirmed}showEnrolledStatus(e){return this.orgUseResetPassword&&e.resetPasswordEnrolled&&this.orgResetPasswordPolicyEnabled}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(y.UserAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.organizationId=this.organizationId,n.organizationUserId=null!=e?e.id:null,n.usesKeyConnector=null==e?void 0:e.usesKeyConnector,n.onSavedUser.subscribe((()=>{t.close(),this.load()})),n.onDeletedUser.subscribe((()=>{t.close(),this.removeUser(e)}))}))}))}groups(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(x.UserGroupsComponent,this.groupsModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.organizationId=this.organizationId,n.organizationUserId=null!=e?e.id:null,n.onSavedUser.subscribe((()=>{t.close()}))}))}))}bulkRemove(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(h.BulkRemoveComponent,this.bulkRemoveModalRef,(e=>{e.organizationId=this.organizationId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}bulkReinvite(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const e=this.getCheckedUsers(),t=e.filter((e=>e.status===a.OrganizationUserStatusType.Invited));if(t.length<=0)this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("noSelectedUsersApplicable"));else{try{const n=new d.OrganizationUserBulkRequest(t.map((e=>e.id))),i=this.apiService.postManyOrganizationUserReinvite(this.organizationId,n);this.showBulkStatus(e,t,i,this.i18nService.t("bulkReinviteMessage"))}catch(n){this.validationService.showError(n)}this.actionPromise=null}}))}bulkConfirm(){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise)return;const[e]=yield this.modalService.openViewRef(m.BulkConfirmComponent,this.bulkConfirmModalRef,(e=>{e.organizationId=this.organizationId,e.users=this.getCheckedUsers()}));yield e.onClosedPromise(),yield this.load()}))}events(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(f.EntityEventsComponent,this.eventsModalRef,(t=>{t.name=this.userNamePipe.transform(e),t.organizationId=this.organizationId,t.entityId=e.id,t.showUser=!1,t.entity="user"}))}))}resetPassword(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(g.ResetPasswordComponent,this.resetPasswordModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.email=null!=e?e.email:null,n.organizationId=this.organizationId,n.id=null!=e?e.id:null,n.onPasswordReset.subscribe((()=>{t.close(),this.load()}))}))}))}deleteWarningMessage(e){return e.usesKeyConnector?this.i18nService.t("removeUserConfirmationKeyConnector"):super.deleteWarningMessage(e)}showBulkStatus(e,t,n,r){return i(this,void 0,void 0,(function*(){const[i,o]=yield this.modalService.openViewRef(v.BulkStatusComponent,this.bulkStatusModalRef,(e=>{e.loading=!0}));let a=!1;i.onShown.subscribe((()=>{a&&i.close()}));try{const a=yield n;if(i){const n=a.data.filter((e=>""!==e.error)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t.error})),{}),i=t.reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.id]:t})),{});o.users=e.map((e=>{var t;let o=null!==(t=n[e.id])&&void 0!==t?t:r;return i.hasOwnProperty(e.id)||(o=this.i18nService.t("bulkFilteredMessage")),{user:e,error:n.hasOwnProperty(e.id),message:o}})),o.loading=!1}}catch(s){a=!0,i.close()}}))}}t.PeopleComponent=Ue,Ue.ɵfac=function(e){return new(e||Ue)(S.ɵɵdirectiveInject(b.ApiService),S.ɵɵdirectiveInject(w.ActivatedRoute),S.ɵɵdirectiveInject(C.I18nService),S.ɵɵdirectiveInject(I.ModalService),S.ɵɵdirectiveInject(E.PlatformUtilsService),S.ɵɵdirectiveInject(P.CryptoService),S.ɵɵdirectiveInject(w.Router),S.ɵɵdirectiveInject(O.SearchService),S.ɵɵdirectiveInject(k.ValidationService),S.ɵɵdirectiveInject(A.PolicyService),S.ɵɵdirectiveInject(T.LogService),S.ɵɵdirectiveInject(M.SearchPipe),S.ɵɵdirectiveInject(B.UserNamePipe),S.ɵɵdirectiveInject(D.SyncService),S.ɵɵdirectiveInject(R.StateService),S.ɵɵdirectiveInject(F.OrganizationService))},Ue.ɵcmp=S.ɵɵdefineComponent({type:Ue,selectors:[["app-org-people"]],viewQuery:function(e,t){if(1&e&&(S.ɵɵviewQuery(W,7,r.ViewContainerRef),S.ɵɵviewQuery($,7,r.ViewContainerRef),S.ɵɵviewQuery(Y,7,r.ViewContainerRef),S.ɵɵviewQuery(Q,7,r.ViewContainerRef),S.ɵɵviewQuery(J,7,r.ViewContainerRef),S.ɵɵviewQuery(Z,7,r.ViewContainerRef),S.ɵɵviewQuery(X,7,r.ViewContainerRef),S.ɵɵviewQuery(ee,7,r.ViewContainerRef)),2&e){let e;S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.addEditModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.groupsModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.eventsModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.confirmModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.resetPasswordModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkStatusModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkConfirmModalRef=e.first),S.ɵɵqueryRefresh(e=S.ɵɵloadQuery())&&(t.bulkRemoveModalRef=e.first)}},features:[S.ɵɵInheritDefinitionFeature],decls:116,vars:61,consts:[[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["role","group",1,"btn-group","btn-group-sm"],["type","button",1,"btn","btn-outline-secondary",3,"ngClass","click"],["class","badge badge-pill badge-info",4,"ngIf"],["class","badge badge-pill badge-warning",4,"ngIf"],[1,"ml-3"],["for","search",1,"sr-only"],["type","search","id","search",1,"form-control","form-control-sm",3,"placeholder","ngModel","ngModelChange"],["appListDropdown","",1,"dropdown","ml-3"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["class","dropdown-item text-success","appStopClick","",3,"click",4,"ngIf"],["appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"dropdown-divider"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[4,"ngIf"],["addEdit",""],["groupsTemplate",""],["eventsTemplate",""],["confirmTemplate",""],["resetPasswordTemplate",""],["bulkStatusTemplate",""],["bulkConfirmTemplate",""],["bulkRemoveTemplate",""],[1,"badge","badge-pill","badge-info"],[1,"badge","badge-pill","badge-warning"],["appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","info","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],["type","info","icon","bwi bwi-check-circle",3,"title"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"text-muted","d-block"],["aria-hidden","true",1,"bwi","bwi-lock",3,"title"],["aria-hidden","true",1,"bwi","bwi-key",3,"title"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-sitemap"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"]],template:function(e,t){1&e&&(S.ɵɵelementStart(0,"div",0),S.ɵɵtext(1,"\n "),S.ɵɵelementStart(2,"h1"),S.ɵɵtext(3),S.ɵɵpipe(4,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(5,"\n "),S.ɵɵelementStart(6,"div",1),S.ɵɵtext(7,"\n "),S.ɵɵelementStart(8,"div",2),S.ɵɵtext(9,"\n "),S.ɵɵelementStart(10,"button",3),S.ɵɵlistener("click",(function(){return t.filter(null)})),S.ɵɵtext(11),S.ɵɵpipe(12,"i18n"),S.ɵɵtemplate(13,te,2,1,"span",4),S.ɵɵtext(14,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(15,"\n "),S.ɵɵelementStart(16,"button",3),S.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Invited)})),S.ɵɵtext(17),S.ɵɵpipe(18,"i18n"),S.ɵɵtemplate(19,ne,2,1,"span",4),S.ɵɵtext(20,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(21,"\n "),S.ɵɵelementStart(22,"button",3),S.ɵɵlistener("click",(function(){return t.filter(t.userStatusType.Accepted)})),S.ɵɵtext(23),S.ɵɵpipe(24,"i18n"),S.ɵɵtemplate(25,ie,2,1,"span",5),S.ɵɵtext(26,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(27,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(28,"\n "),S.ɵɵelementStart(29,"div",6),S.ɵɵtext(30,"\n "),S.ɵɵelementStart(31,"label",7),S.ɵɵtext(32),S.ɵɵpipe(33,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(34,"\n "),S.ɵɵelementStart(35,"input",8),S.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e})),S.ɵɵpipe(36,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(37,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(38,"\n "),S.ɵɵelementStart(39,"div",9),S.ɵɵtext(40,"\n "),S.ɵɵelementStart(41,"button",10),S.ɵɵpipe(42,"i18n"),S.ɵɵtext(43,"\n "),S.ɵɵelement(44,"i",11),S.ɵɵtext(45,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(46,"\n "),S.ɵɵelementStart(47,"div",12),S.ɵɵtext(48,"\n "),S.ɵɵelementStart(49,"button",13),S.ɵɵlistener("click",(function(){return t.bulkReinvite()})),S.ɵɵtext(50,"\n "),S.ɵɵelement(51,"i",14),S.ɵɵtext(52),S.ɵɵpipe(53,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(54,"\n "),S.ɵɵtemplate(55,re,5,3,"button",15),S.ɵɵtext(56,"\n "),S.ɵɵelementStart(57,"button",16),S.ɵɵlistener("click",(function(){return t.bulkRemove()})),S.ɵɵtext(58,"\n "),S.ɵɵelement(59,"i",17),S.ɵɵtext(60),S.ɵɵpipe(61,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(62,"\n "),S.ɵɵelement(63,"div",18),S.ɵɵtext(64,"\n "),S.ɵɵelementStart(65,"button",13),S.ɵɵlistener("click",(function(){return t.selectAll(!0)})),S.ɵɵtext(66,"\n "),S.ɵɵelement(67,"i",19),S.ɵɵtext(68),S.ɵɵpipe(69,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(70,"\n "),S.ɵɵelementStart(71,"button",13),S.ɵɵlistener("click",(function(){return t.selectAll(!1)})),S.ɵɵtext(72,"\n "),S.ɵɵelement(73,"i",20),S.ɵɵtext(74),S.ɵɵpipe(75,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(76,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(77,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(78,"\n "),S.ɵɵelementStart(79,"button",21),S.ɵɵlistener("click",(function(){return t.invite()})),S.ɵɵtext(80,"\n "),S.ɵɵelement(81,"i",22),S.ɵɵtext(82),S.ɵɵpipe(83,"i18n"),S.ɵɵelementEnd(),S.ɵɵtext(84,"\n "),S.ɵɵelementEnd(),S.ɵɵtext(85,"\n"),S.ɵɵelementEnd(),S.ɵɵtext(86,"\n"),S.ɵɵtemplate(87,oe,9,6,"ng-container",23),S.ɵɵtext(88,"\n"),S.ɵɵtemplate(89,Ee,6,2,"ng-container",23),S.ɵɵpipe(90,"search"),S.ɵɵtext(91,"\n"),S.ɵɵtemplate(92,Pe,0,0,"ng-template",null,24,S.ɵɵtemplateRefExtractor),S.ɵɵtext(94,"\n"),S.ɵɵtemplate(95,Oe,0,0,"ng-template",null,25,S.ɵɵtemplateRefExtractor),S.ɵɵtext(97,"\n"),S.ɵɵtemplate(98,ke,0,0,"ng-template",null,26,S.ɵɵtemplateRefExtractor),S.ɵɵtext(100,"\n"),S.ɵɵtemplate(101,Ae,0,0,"ng-template",null,27,S.ɵɵtemplateRefExtractor),S.ɵɵtext(103,"\n"),S.ɵɵtemplate(104,Te,0,0,"ng-template",null,28,S.ɵɵtemplateRefExtractor),S.ɵɵtext(106,"\n"),S.ɵɵtemplate(107,Me,0,0,"ng-template",null,29,S.ɵɵtemplateRefExtractor),S.ɵɵtext(109,"\n"),S.ɵɵtemplate(110,Be,0,0,"ng-template",null,30,S.ɵɵtemplateRefExtractor),S.ɵɵtext(112,"\n"),S.ɵɵtemplate(113,De,0,0,"ng-template",null,31,S.ɵɵtemplateRefExtractor),S.ɵɵtext(115,"\n")),2&e&&(S.ɵɵadvance(3),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(4,22,"people")),S.ɵɵadvance(7),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(52,Re,null==t.status)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(12,24,"all"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.allCount),S.ɵɵadvance(3),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(54,Re,t.status==t.userStatusType.Invited)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(18,26,"invited"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.invitedCount),S.ɵɵadvance(3),S.ɵɵproperty("ngClass",S.ɵɵpureFunction1(56,Re,t.status==t.userStatusType.Accepted)),S.ɵɵadvance(1),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(24,28,"accepted"),"\n "),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",t.acceptedCount),S.ɵɵadvance(7),S.ɵɵtextInterpolate(S.ɵɵpipeBind1(33,30,"search")),S.ɵɵadvance(3),S.ɵɵpropertyInterpolate("placeholder",S.ɵɵpipeBind1(36,32,"search")),S.ɵɵproperty("ngModel",t.searchText),S.ɵɵadvance(6),S.ɵɵpropertyInterpolate("appA11yTitle",S.ɵɵpipeBind1(42,34,"options")),S.ɵɵadvance(11),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(53,36,"reinviteSelected"),"\n "),S.ɵɵadvance(3),S.ɵɵproperty("ngIf",t.showBulkConfirmUsers),S.ɵɵadvance(5),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(61,38,"remove"),"\n "),S.ɵɵadvance(8),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(69,40,"selectAll"),"\n "),S.ɵɵadvance(6),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(75,42,"unselectAll"),"\n "),S.ɵɵadvance(8),S.ɵɵtextInterpolate1("\n ",S.ɵɵpipeBind1(83,44,"inviteUser"),"\n "),S.ɵɵadvance(5),S.ɵɵproperty("ngIf",t.loading),S.ɵɵadvance(2),S.ɵɵproperty("ngIf",!t.loading&&(t.isPaging()?t.pagedUsers:S.ɵɵpipeBindV(90,46,S.ɵɵpureFunction2(58,Fe,t.users,t.searchText)))))},directives:[U.NgClass,U.NgIf,V.DefaultValueAccessor,V.NgControlStatus,V.NgModel,N.A11yTitleDirective,_.StopClickDirective,j.InfiniteScrollDirective,U.NgForOf,z.CalloutComponent,V.CheckboxControlValueAccessor,H.StopPropDirective,L.AvatarComponent],pipes:[K.I18nPipe,q.SearchPipe,G.UserNamePipe],encapsulation:2})},6029:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PoliciesComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(91674),n(63513),n(55453),n(40171)),s=n(32621),l=n(91674),c=n(68012),d=n(64684),p=n(63513),u=n(55453),m=n(57490),h=n(1142),v=n(99729),f=["editTemplate"];function g(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(s.ɵɵelementStart(0,"span",11),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enabled")))}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"td"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"a",8),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).edit(t)})),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,y,3,3,"span",9),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"small",10),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,e.name)),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.policiesEnabledMap.get(e.type)),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,5,e.description))}}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,x,12,7,"td",1),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.display(n.organization))}}function b(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",6),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,4,1,"tr",7),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.policies)}}function w(e,t){}class C{constructor(e,t,n,i,r,o){this.apiService=e,this.route=t,this.modalService=n,this.organizationService=i,this.policyListService=r,this.router=o,this.loading=!0,this.policiesEnabledMap=new Map}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.organization=yield this.organizationService.get(this.organizationId),null!=this.organization&&this.organization.usePolicies?(this.policies=this.policyListService.getPolicies(),yield this.load(),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null!=e.policyId){const t=e.policyId;for(const e of this.orgPolicies)if(e.id===t){for(let t=0;t0?e.data:[],this.orgPolicies.forEach((e=>{this.policiesEnabledMap.set(e.type,e.enabled)})),this.loading=!1}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(a.PolicyEditComponent,this.editModalRef,(n=>{n.policy=e,n.organizationId=this.organizationId,n.policiesEnabledMap=this.policiesEnabledMap,n.onSavedPolicy.subscribe((()=>{t.close(),this.load()}))}))}))}}t.PoliciesComponent=C,C.ɵfac=function(e){return new(e||C)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(d.ModalService),s.ɵɵdirectiveInject(p.OrganizationService),s.ɵɵdirectiveInject(u.PolicyListService),s.ɵɵdirectiveInject(c.Router))},C.ɵcmp=s.ɵɵdefineComponent({type:C,selectors:[["app-org-policies"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(f,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.editModalRef=e.first)}},decls:14,vars:5,consts:[[1,"page-header","d-flex"],[4,"ngIf"],["class","table table-hover table-list",4,"ngIf"],["editTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["href","#","appStopClick","",3,"click"],["class","badge badge-success",4,"ngIf"],[1,"text-muted","d-block"],[1,"badge","badge-success"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,g,9,6,"ng-container",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,b,7,1,"table",2),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,w,0,0,"ng-template",null,3,s.ɵɵtemplateRefExtractor),s.ɵɵtext(13,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"policies")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading))},directives:[m.NgIf,m.NgForOf,h.StopClickDirective],pipes:[v.I18nPipe],encapsulation:2})},40171:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(49906)),a=n(64030),s=(n(81824),n(32621)),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(96832),m=n(56820),h=n(8863),v=n(57490),f=n(99729),g=["policyForm"];function y(e,t){1&e&&(s.ɵɵelementStart(0,"div",8),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",16),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",17),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){}class S{constructor(e,t,n,i,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.componentFactoryResolver=i,this.cdr=a,this.logService=s,this.policiesEnabledMap=new Map,this.onSavedPolicy=new r.EventEmitter,this.policyType=o.PolicyType,this.loading=!0,this.enabled=!1}ngAfterViewInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.loading=!1;const e=this.componentFactoryResolver.resolveComponentFactory(this.policy.component);this.policyComponent=this.policyFormRef.createComponent(e).instance,this.policyComponent.policy=this.policy,this.policyComponent.policyResponse=this.policyResponse,this.cdr.detectChanges()}))}load(){return i(this,void 0,void 0,(function*(){try{this.policyResponse=yield this.apiService.getPolicy(this.organizationId,this.policy.type)}catch(e){if(404!==e.statusCode)throw e;this.policyResponse=new a.PolicyResponse({Enabled:!1})}}))}submit(){return i(this,void 0,void 0,(function*(){let e;try{e=yield this.policyComponent.buildRequest(this.policiesEnabledMap)}catch(t){return void this.platformUtilsService.showToast("error",null,t.message)}try{this.formPromise=this.apiService.putPolicy(this.organizationId,this.policy.type,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("editedPolicyId",this.i18nService.t(this.policy.name))),this.onSavedPolicy.emit()}catch(t){this.logService.error(t)}}))}}t.PolicyEditComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(s.ComponentFactoryResolver),s.ɵɵdirectiveInject(s.ChangeDetectorRef),s.ɵɵdirectiveInject(p.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-policy-edit"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(g,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.policyFormRef=e.first)}},inputs:{policy:"policy",organizationId:"organizationId",policiesEnabledMap:"policiesEnabledMap"},outputs:{onSavedPolicy:"onSavedPolicy"},decls:57,vars:25,consts:[["role","dialog","aria-modal","true","aria-labelledby","policiesEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","policiesEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","modal-body",4,"ngIf"],[3,"hidden"],["policyForm",""],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"button",6),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"span",7),s.ɵɵtext(18,"×"),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n\n "),s.ɵɵelementStart(22,"div",8),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,y,9,6,"div",9),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",10),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"p"),s.ɵɵtext(29),s.ɵɵpipe(30,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,x,0,0,"ng-template",null,11,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",12),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"button",13),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",14),s.ɵɵpipe(42,"i18n"),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"span"),s.ɵɵtext(45),s.ɵɵpipe(46,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"button",15),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n")),2&e){const e=s.ɵɵreference(5);s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate2("\n ",s.ɵɵpipeBind1(11,11,"editPolicy")," - ",s.ɵɵpipeBind1(12,13,t.policy.name),"\n "),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(15,15,"close")),s.ɵɵadvance(10),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("hidden",t.loading),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(30,17,t.policy.description)),s.ɵɵadvance(10),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(42,19,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(46,21,"save")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(51,23,"cancel"),"\n ")}},directives:[u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.A11yTitleDirective,v.NgIf],pipes:[f.I18nPipe],encapsulation:2})},34236:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(51554),n(36631),n(84275),n(73828),n(62166),n(22205)),a=n(69731),s=n(32593),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(84275),m=n(62166),h=n(85714),v=n(36631),f=n(96832),g=n(56820),y=n(57490),x=n(8863),S=n(51626),b=n(1142),w=n(45728),C=n(48198),I=n(40946),E=n(99729);function P(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",30),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function O(e,t){if(1&e&&(l.ɵɵelementStart(0,"app-callout",31),l.ɵɵpipe(1,"i18n"),l.ɵɵtext(2,"\n "),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵpropertyInterpolate("enforcedPolicyMessage",l.ɵɵpipeBind1(1,2,"resetPasswordMasterPasswordPolicyInEffect")),l.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}const k=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};class A{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.passwordGenerationService=i,this.policyService=o,this.cryptoService=a,this.logService=s,this.onPasswordReset=new r.EventEmitter,this.newPassword=null,this.showPassword=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions()}))}get loggedOutWarningName(){return null!=this.name?this.name:this.i18nService.t("thisUser")}generatePassword(){return i(this,void 0,void 0,(function*(){const e=(yield this.passwordGenerationService.getOptions())[0];this.newPassword=yield this.passwordGenerationService.generatePassword(e),this.updatePasswordStrength()}))}togglePassword(){this.showPassword=!this.showPassword,document.getElementById("newPassword").focus()}copy(e){null!=e&&(this.platformUtilsService.copyToClipboard(e,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t("password"))))}submit(){return i(this,void 0,void 0,(function*(){if(null==this.newPassword||""===this.newPassword)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1;if(this.newPassword.length<8)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassLength")),!1;if(null==this.enforcedPolicyOptions||this.policyService.evaluateMasterPassword(this.masterPasswordScore,this.newPassword,this.enforcedPolicyOptions)){if(this.masterPasswordScore<3){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("weakMasterPasswordDesc"),this.i18nService.t("weakMasterPassword"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1}try{this.formPromise=this.apiService.getOrganizationUserResetPasswordDetails(this.organizationId,this.id).then((e=>i(this,void 0,void 0,(function*(){if(null==e)throw new Error(this.i18nService.t("resetPasswordDetailsError"));const t=e.kdf,n=e.kdfIterations,i=e.resetPasswordKey,r=e.encryptedPrivateKey,l=yield this.cryptoService.getOrgKey(this.organizationId),c=yield this.cryptoService.decryptToBytes(new o.EncString(r),l),d=yield this.cryptoService.rsaDecrypt(i,c),p=new a.SymmetricCryptoKey(d),u=yield this.cryptoService.makeKey(this.newPassword,this.email.trim().toLowerCase(),t,n),m=yield this.cryptoService.hashPassword(this.newPassword,u),h=yield this.cryptoService.remakeEncKey(u,p),v=new s.OrganizationUserResetPasswordRequest;return v.key=h[1].encryptedString,v.newMasterPasswordHash=m,this.apiService.putOrganizationUserResetPassword(this.organizationId,this.id,v)})))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("resetPasswordSuccess")),this.onPasswordReset.emit()}catch(e){this.logService.error(e)}}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPasswordPolicyRequirementsNotMet"))}))}updatePasswordStrength(){null!=this.newPasswordStrengthTimeout&&clearTimeout(this.newPasswordStrengthTimeout),this.newPasswordStrengthTimeout=setTimeout((()=>{const e=this.passwordGenerationService.passwordStrength(this.newPassword,this.getPasswordStrengthUserInput());this.masterPasswordScore=null==e?null:e.score}),300)}getPasswordStrengthUserInput(){let e=[];const t=this.email.indexOf("@");return t>-1&&(e=e.concat(this.email.substr(0,t).trim().toLowerCase().split(/[^A-Za-z0-9]/))),null!=this.name&&""!==this.name&&(e=e.concat(this.name.trim().toLowerCase().split(" "))),e}}t.ResetPasswordComponent=A,A.ɵfac=function(e){return new(e||A)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.PasswordGenerationService),l.ɵɵdirectiveInject(m.PolicyService),l.ɵɵdirectiveInject(h.CryptoService),l.ɵɵdirectiveInject(v.LogService))},A.ɵcmp=l.ɵɵdefineComponent({type:A,selectors:[["app-reset-password"]],inputs:{name:"name",email:"email",id:"id",organizationId:"organizationId"},outputs:{onPasswordReset:"onPasswordReset"},decls:97,vars:43,consts:[["role","dialog","aria-modal","true","aria-labelledby","resetPasswordTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","resetPasswordTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions","enforcedPolicyMessage",4,"ngIf"],[1,"row"],[1,"col","form-group"],[1,"d-flex"],["for","newPassword"],[1,"ml-auto","d-flex"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-refresh"],[1,"input-group","mb-1"],["id","newPassword","appAutofocus","","name","NewPassword","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","ngModelChange","input"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],[3,"score","showText"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],["type","info",3,"enforcedPolicyOptions","enforcedPolicyMessage"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵtemplate(12,P,2,1,"small",6),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"button",7),l.ɵɵpipe(16,"i18n"),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"span",8),l.ɵɵtext(19,"×"),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"div",9),l.ɵɵtext(24,"\n "),l.ɵɵelementStart(25,"app-callout",10),l.ɵɵtext(26),l.ɵɵpipe(27,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵtemplate(29,O,3,4,"app-callout",11),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"div",12),l.ɵɵtext(32,"\n "),l.ɵɵelementStart(33,"div",13),l.ɵɵtext(34,"\n "),l.ɵɵelementStart(35,"div",14),l.ɵɵtext(36,"\n "),l.ɵɵelementStart(37,"label",15),l.ɵɵtext(38),l.ɵɵpipe(39,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(40,"\n "),l.ɵɵelementStart(41,"div",16),l.ɵɵtext(42,"\n "),l.ɵɵelementStart(43,"a",17),l.ɵɵlistener("click",(function(){return t.generatePassword()})),l.ɵɵpipe(44,"i18n"),l.ɵɵtext(45,"\n "),l.ɵɵelement(46,"i",18),l.ɵɵtext(47,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(48,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(49,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"div",19),l.ɵɵtext(52,"\n "),l.ɵɵelementStart(53,"input",20),l.ɵɵlistener("ngModelChange",(function(e){return t.newPassword=e}))("input",(function(){return t.updatePasswordStrength()})),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementStart(55,"div",21),l.ɵɵtext(56,"\n "),l.ɵɵelementStart(57,"button",22),l.ɵɵlistener("click",(function(){return t.togglePassword()})),l.ɵɵpipe(58,"i18n"),l.ɵɵtext(59,"\n "),l.ɵɵelement(60,"i",23),l.ɵɵtext(61,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(62,"\n "),l.ɵɵelementStart(63,"button",22),l.ɵɵlistener("click",(function(){return t.copy(t.newPassword)})),l.ɵɵpipe(64,"i18n"),l.ɵɵtext(65,"\n "),l.ɵɵelement(66,"i",24),l.ɵɵtext(67,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(68,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(69,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(70,"\n "),l.ɵɵelementStart(71,"app-password-strength",25),l.ɵɵtext(72,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(73,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(74,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(75,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(76,"\n "),l.ɵɵelementStart(77,"div",26),l.ɵɵtext(78,"\n "),l.ɵɵelementStart(79,"button",27),l.ɵɵtext(80,"\n "),l.ɵɵelement(81,"i",28),l.ɵɵpipe(82,"i18n"),l.ɵɵtext(83,"\n "),l.ɵɵelementStart(84,"span"),l.ɵɵtext(85),l.ɵɵpipe(86,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(87,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(88,"\n "),l.ɵɵelementStart(89,"button",29),l.ɵɵtext(90),l.ɵɵpipe(91,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(92,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(93,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(94,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(95,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(96,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(11,19,"resetPassword"),"\n "),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.name),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(16,21,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind2(27,23,"resetPasswordLoggedOutWarning",t.loggedOutWarningName),"\n "),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.enforcedPolicyOptions),l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(39,26,"newPassword")),l.ɵɵadvance(5),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(44,28,"generatePassword")),l.ɵɵadvance(10),l.ɵɵpropertyInterpolate("type",t.showPassword?"text":"password"),l.ɵɵproperty("ngModel",t.newPassword),l.ɵɵadvance(4),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(58,30,"toggleVisibility")),l.ɵɵadvance(3),l.ɵɵproperty("ngClass",l.ɵɵpureFunction2(40,k,!t.showPassword,t.showPassword)),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(64,32,"copyPassword")),l.ɵɵadvance(8),l.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),l.ɵɵadvance(8),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(82,34,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(86,36,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(91,38,"cancel"),"\n ")}},directives:[f.ɵNgNoValidate,f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.NgIf,x.A11yTitleDirective,S.CalloutComponent,b.StopClickDirective,f.DefaultValueAccessor,w.AutofocusDirective,f.RequiredValidator,C.InputVerbatimDirective,f.NgControlStatus,f.NgModel,y.NgClass,I.PasswordStrengthComponent],pipes:[E.I18nPipe],encapsulation:2})},28546:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(3174),n(51554),n(36631),n(73828),n(33712)),a=n(96926),s=n(34917),l=n(65642),c=n(3714),d=n(57981),p=n(11342),u=n(32621),m=n(91674),h=n(51554),v=n(3174),f=n(73828),g=n(36631),y=n(96832),x=n(56820),S=n(57490),b=n(8863),w=n(64713),C=n(39159),I=n(99729);function E(e,t){if(1&e&&(u.ɵɵelementStart(0,"small",16),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(1),u.ɵɵtextInterpolate(e.name)}}function P(e,t){1&e&&(u.ɵɵelementStart(0,"div",17),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",18),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",19),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function O(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"p"),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",44),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"label",45),u.ɵɵtext(9),u.ɵɵpipe(10,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"input",46),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).emails=t})),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"small",16),u.ɵɵtext(15),u.ɵɵpipe(16,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementContainerEnd()}if(2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(4,4,"inviteUserDesc")),u.ɵɵadvance(6),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(10,6,"email")),u.ɵɵadvance(3),u.ɵɵproperty("ngModel",e.emails),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind2(16,8,"inviteMultipleEmailDesc","20"))}}function k(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"h3",34),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"div",47),u.ɵɵtext(7,"\n "),u.ɵɵelementStart(8,"div",48),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",35),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"label",49),u.ɵɵtext(13,"Manager Permissions"),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelement(15,"hr",50),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"app-nested-checkbox",51),u.ɵɵtext(18,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementStart(22,"div",48),u.ɵɵtext(23,"\n "),u.ɵɵelementStart(24,"div",35),u.ɵɵtext(25,"\n "),u.ɵɵelementStart(26,"label",49),u.ɵɵtext(27,"Admin Permissions"),u.ɵɵelementEnd(),u.ɵɵtext(28,"\n "),u.ɵɵelement(29,"hr",50),u.ɵɵtext(30,"\n "),u.ɵɵelementStart(31,"div",52),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"div",53),u.ɵɵtext(34,"\n "),u.ɵɵelementStart(35,"input",54),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessEventLogs=t})),u.ɵɵelementEnd(),u.ɵɵtext(36,"\n "),u.ɵɵelementStart(37,"label",55),u.ɵɵtext(38),u.ɵɵpipe(39,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(40,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(42,"\n "),u.ɵɵelementStart(43,"div",52),u.ɵɵtext(44,"\n "),u.ɵɵelementStart(45,"div",53),u.ɵɵtext(46,"\n "),u.ɵɵelementStart(47,"input",56),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessImportExport=t})),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n "),u.ɵɵelementStart(49,"label",57),u.ɵɵtext(50),u.ɵɵpipe(51,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(52,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(53,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(54,"\n "),u.ɵɵelementStart(55,"div",52),u.ɵɵtext(56,"\n "),u.ɵɵelementStart(57,"div",53),u.ɵɵtext(58,"\n "),u.ɵɵelementStart(59,"input",58),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.accessReports=t})),u.ɵɵelementEnd(),u.ɵɵtext(60,"\n "),u.ɵɵelementStart(61,"label",59),u.ɵɵtext(62),u.ɵɵpipe(63,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(64,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(65,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(66,"\n "),u.ɵɵelementStart(67,"app-nested-checkbox",60),u.ɵɵtext(68,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(69,"\n "),u.ɵɵelementStart(70,"div",52),u.ɵɵtext(71,"\n "),u.ɵɵelementStart(72,"div",53),u.ɵɵtext(73,"\n "),u.ɵɵelementStart(74,"input",61),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageGroups=t})),u.ɵɵelementEnd(),u.ɵɵtext(75,"\n "),u.ɵɵelementStart(76,"label",62),u.ɵɵtext(77),u.ɵɵpipe(78,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(79,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(80,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(81,"\n "),u.ɵɵelementStart(82,"div",52),u.ɵɵtext(83,"\n "),u.ɵɵelementStart(84,"div",53),u.ɵɵtext(85,"\n "),u.ɵɵelementStart(86,"input",63),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageSso=t})),u.ɵɵelementEnd(),u.ɵɵtext(87,"\n "),u.ɵɵelementStart(88,"label",64),u.ɵɵtext(89),u.ɵɵpipe(90,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(91,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(92,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(93,"\n "),u.ɵɵelementStart(94,"div",52),u.ɵɵtext(95,"\n "),u.ɵɵelementStart(96,"div",53),u.ɵɵtext(97,"\n "),u.ɵɵelementStart(98,"input",65),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.managePolicies=t})),u.ɵɵelementEnd(),u.ɵɵtext(99,"\n "),u.ɵɵelementStart(100,"label",66),u.ɵɵtext(101),u.ɵɵpipe(102,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(103,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(104,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(105,"\n "),u.ɵɵelementStart(106,"div",52),u.ɵɵtext(107,"\n "),u.ɵɵelementStart(108,"div",53),u.ɵɵtext(109,"\n "),u.ɵɵelementStart(110,"input",67),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageUsers=t}))("change",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).handleDependentPermissions()})),u.ɵɵelementEnd(),u.ɵɵtext(111,"\n "),u.ɵɵelementStart(112,"label",68),u.ɵɵtext(113),u.ɵɵpipe(114,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(115,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(116,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(117,"\n "),u.ɵɵelementStart(118,"div",52),u.ɵɵtext(119,"\n "),u.ɵɵelementStart(120,"div",53),u.ɵɵtext(121,"\n "),u.ɵɵelementStart(122,"input",69),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).permissions.manageResetPassword=t}))("change",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).handleDependentPermissions()})),u.ɵɵelementEnd(),u.ɵɵtext(123,"\n "),u.ɵɵelementStart(124,"label",70),u.ɵɵtext(125),u.ɵɵpipe(126,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(127,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(128,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(129,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(130,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(131,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(132,"\n "),u.ɵɵelementContainerEnd()}if(2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(4,19,"permissions"),"\n "),u.ɵɵadvance(14),u.ɵɵproperty("checkboxes",e.manageAssignedCollectionsCheckboxes),u.ɵɵadvance(18),u.ɵɵproperty("ngModel",e.permissions.accessEventLogs),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(39,21,"accessEventLogs"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.accessImportExport),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(51,23,"accessImportExport"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.accessReports),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(63,25,"accessReports"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("checkboxes",e.manageAllCollectionsCheckboxes),u.ɵɵadvance(7),u.ɵɵproperty("ngModel",e.permissions.manageGroups),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(78,27,"manageGroups"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageSso),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(90,29,"manageSso"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.managePolicies),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(102,31,"managePolicies"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageUsers),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(114,33,"manageUsers"),"\n "),u.ɵɵadvance(9),u.ɵɵproperty("ngModel",e.permissions.manageResetPassword),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(126,35,"manageResetPassword"),"\n ")}}function A(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"div",14),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"button",71),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).selectAll(!0)})),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"button",71),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext(2).selectAll(!1)})),u.ɵɵtext(7),u.ɵɵpipe(8,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementEnd()}2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(4,2,"selectAll"),"\n "),u.ɵɵadvance(4),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function T(e,t){1&e&&(u.ɵɵelementStart(0,"div"),u.ɵɵtext(1),u.ɵɵpipe(2,"i18n"),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(1),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function M(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"tr"),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"td",76),u.ɵɵlistener("click",(function(){const t=u.ɵɵrestoreView(e).$implicit;return u.ɵɵnextContext(4).check(t)})),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"input",77),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.checked=t})),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"td",78),u.ɵɵlistener("click",(function(){const t=u.ɵɵrestoreView(e).$implicit;return u.ɵɵnextContext(4).check(t)})),u.ɵɵtext(8),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"td",79),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"input",80),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.hidePasswords=t})),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(14,"\n "),u.ɵɵelementStart(15,"td",79),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"input",80),u.ɵɵlistener("ngModelChange",(function(t){return u.ɵɵrestoreView(e).$implicit.readOnly=t})),u.ɵɵelementEnd(),u.ɵɵtext(18,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;u.ɵɵadvance(4),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),u.ɵɵproperty("ngModel",e.checked),u.ɵɵadvance(4),u.ɵɵtextInterpolate1("\n ",e.name,"\n "),u.ɵɵadvance(4),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].HidePasswords"),u.ɵɵproperty("ngModel",e.hidePasswords)("disabled",!e.checked),u.ɵɵadvance(5),u.ɵɵpropertyInterpolate1("name","Collection[",n,"].ReadOnly"),u.ɵɵproperty("ngModel",e.readOnly)("disabled",!e.checked)}}function B(e,t){if(1&e&&(u.ɵɵelementStart(0,"table",73),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"thead"),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"tr"),u.ɵɵtext(5,"\n "),u.ɵɵelementStart(6,"th"),u.ɵɵtext(7," "),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementStart(9,"th"),u.ɵɵtext(10),u.ɵɵpipe(11,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(12,"\n "),u.ɵɵelementStart(13,"th",74),u.ɵɵtext(14),u.ɵɵpipe(15,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"th",74),u.ɵɵtext(18),u.ɵɵpipe(19,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(22,"\n "),u.ɵɵelementStart(23,"tbody"),u.ɵɵtext(24,"\n "),u.ɵɵtemplate(25,M,20,9,"tr",75),u.ɵɵtext(26,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(27,"\n "),u.ɵɵelementEnd()),2&e){const e=u.ɵɵnextContext(3);u.ɵɵadvance(10),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(11,4,"name")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(15,6,"hidePasswords")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(19,8,"readOnly")),u.ɵɵadvance(7),u.ɵɵproperty("ngForOf",e.collections)}}function D(e,t){if(1&e&&(u.ɵɵelementContainerStart(0),u.ɵɵtext(1,"\n "),u.ɵɵtemplate(2,T,3,3,"div",20),u.ɵɵtext(3,"\n "),u.ɵɵtemplate(4,B,28,10,"table",72),u.ɵɵtext(5,"\n "),u.ɵɵelementContainerEnd()),2&e){const e=u.ɵɵnextContext(2);u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.collections||!e.collections.length),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const R=function(e){return{"mb-0":e}};function F(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"div",17),u.ɵɵtext(1,"\n "),u.ɵɵtemplate(2,O,19,11,"ng-container",20),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"h3"),u.ɵɵtext(5),u.ɵɵpipe(6,"i18n"),u.ɵɵelementStart(7,"a",21),u.ɵɵpipe(8,"i18n"),u.ɵɵtext(9,"\n "),u.ɵɵelement(10,"i",22),u.ɵɵtext(11,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(12,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"div",23),u.ɵɵtext(15,"\n "),u.ɵɵelementStart(16,"input",24),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(17,"\n "),u.ɵɵelementStart(18,"label",25),u.ɵɵtext(19),u.ɵɵpipe(20,"i18n"),u.ɵɵelementStart(21,"small"),u.ɵɵtext(22),u.ɵɵpipe(23,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(24,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(25,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(26,"\n "),u.ɵɵelementStart(27,"div",23),u.ɵɵtext(28,"\n "),u.ɵɵelementStart(29,"input",26),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(30,"\n "),u.ɵɵelementStart(31,"label",27),u.ɵɵtext(32),u.ɵɵpipe(33,"i18n"),u.ɵɵelementStart(34,"small"),u.ɵɵtext(35),u.ɵɵpipe(36,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(38,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(39,"\n "),u.ɵɵelementStart(40,"div",23),u.ɵɵtext(41,"\n "),u.ɵɵelementStart(42,"input",28),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(43,"\n "),u.ɵɵelementStart(44,"label",29),u.ɵɵtext(45),u.ɵɵpipe(46,"i18n"),u.ɵɵelementStart(47,"small"),u.ɵɵtext(48),u.ɵɵpipe(49,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(50,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(51,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(52,"\n "),u.ɵɵelementStart(53,"div",23),u.ɵɵtext(54,"\n "),u.ɵɵelementStart(55,"input",30),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(56,"\n "),u.ɵɵelementStart(57,"label",31),u.ɵɵtext(58),u.ɵɵpipe(59,"i18n"),u.ɵɵelementStart(60,"small"),u.ɵɵtext(61),u.ɵɵpipe(62,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(63,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(64,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(65,"\n "),u.ɵɵelementStart(66,"div",23),u.ɵɵtext(67,"\n "),u.ɵɵelementStart(68,"input",32),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().type=t})),u.ɵɵelementEnd(),u.ɵɵtext(69,"\n "),u.ɵɵelementStart(70,"label",33),u.ɵɵtext(71),u.ɵɵpipe(72,"i18n"),u.ɵɵelementStart(73,"small"),u.ɵɵtext(74),u.ɵɵpipe(75,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(76,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(77,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(78,"\n "),u.ɵɵtemplate(79,k,133,37,"ng-container",20),u.ɵɵtext(80,"\n "),u.ɵɵelementStart(81,"h3",34),u.ɵɵtext(82,"\n "),u.ɵɵelementStart(83,"div",35),u.ɵɵtext(84),u.ɵɵpipe(85,"i18n"),u.ɵɵelementStart(86,"a",36),u.ɵɵpipe(87,"i18n"),u.ɵɵtext(88,"\n "),u.ɵɵelement(89,"i",22),u.ɵɵtext(90,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(91,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(92,"\n "),u.ɵɵtemplate(93,A,10,6,"div",37),u.ɵɵtext(94,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(95,"\n "),u.ɵɵelementStart(96,"div",38),u.ɵɵtext(97,"\n "),u.ɵɵelementStart(98,"div",39),u.ɵɵtext(99,"\n "),u.ɵɵelementStart(100,"input",40),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().access=t})),u.ɵɵelementEnd(),u.ɵɵtext(101,"\n "),u.ɵɵelementStart(102,"label",41),u.ɵɵtext(103),u.ɵɵpipe(104,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(105,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(106,"\n "),u.ɵɵelementStart(107,"div",39),u.ɵɵtext(108,"\n "),u.ɵɵelementStart(109,"input",42),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().access=t})),u.ɵɵelementEnd(),u.ɵɵtext(110,"\n "),u.ɵɵelementStart(111,"label",43),u.ɵɵtext(112),u.ɵɵpipe(113,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(114,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(115,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(116,"\n "),u.ɵɵtemplate(117,D,6,2,"ng-container",20),u.ɵɵtext(118,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵnextContext();u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.editMode),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(6,33,"userType"),"\n "),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(8,35,"learnMore")),u.ɵɵadvance(9),u.ɵɵproperty("value",e.organizationUserType.User)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(20,37,"user"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(23,39,"userDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Manager)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(33,41,"manager"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(36,43,"managerDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Admin)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(46,45,"admin"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(49,47,"adminDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Owner)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(59,49,"owner"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(62,51,"ownerDesc")),u.ɵɵadvance(7),u.ɵɵproperty("value",e.organizationUserType.Custom)("ngModel",e.type),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(72,53,"custom"),"\n "),u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(75,55,"customDesc")),u.ɵɵadvance(5),u.ɵɵproperty("ngIf",e.customUserTypeSelected),u.ɵɵadvance(5),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(85,57,"accessControl"),"\n "),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(87,59,"learnMore")),u.ɵɵadvance(7),u.ɵɵproperty("ngIf","selected"===e.access&&e.collections&&e.collections.length),u.ɵɵadvance(3),u.ɵɵproperty("ngClass",u.ɵɵpureFunction1(65,R,"selected"!==e.access)),u.ɵɵadvance(4),u.ɵɵproperty("ngModel",e.access),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(104,61,"userAccessAllItems"),"\n "),u.ɵɵadvance(6),u.ɵɵproperty("ngModel",e.access),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(113,63,"userAccessSelectedCollections"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("ngIf","selected"===e.access)}}function U(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"button",81,82),u.ɵɵlistener("click",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().delete()})),u.ɵɵpipe(2,"i18n"),u.ɵɵtext(3,"\n "),u.ɵɵelement(4,"i",83),u.ɵɵtext(5,"\n "),u.ɵɵelement(6,"i",84),u.ɵɵpipe(7,"i18n"),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵreference(1),t=u.ɵɵnextContext();u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(2,6,"delete")),u.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),u.ɵɵadvance(4),u.ɵɵproperty("hidden",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(7,8,"loading")),u.ɵɵproperty("hidden",!e.loading)}}class V{constructor(e,t,n,i,s){this.apiService=e,this.i18nService=t,this.collectionService=n,this.platformUtilsService=i,this.logService=s,this.usesKeyConnector=!1,this.onSavedUser=new r.EventEmitter,this.onDeletedUser=new r.EventEmitter,this.loading=!0,this.editMode=!1,this.type=o.OrganizationUserType.User,this.permissions=new a.PermissionsApi,this.showCustom=!1,this.access="selected",this.collections=[],this.organizationUserType=o.OrganizationUserType,this.manageAllCollectionsCheckboxes=[{id:"createNewCollections",get:()=>this.permissions.createNewCollections,set:e=>this.permissions.createNewCollections=e},{id:"editAnyCollection",get:()=>this.permissions.editAnyCollection,set:e=>this.permissions.editAnyCollection=e},{id:"deleteAnyCollection",get:()=>this.permissions.deleteAnyCollection,set:e=>this.permissions.deleteAnyCollection=e}],this.manageAssignedCollectionsCheckboxes=[{id:"editAssignedCollections",get:()=>this.permissions.editAssignedCollections,set:e=>this.permissions.editAssignedCollections=e},{id:"deleteAssignedCollections",get:()=>this.permissions.deleteAssignedCollections,set:e=>this.permissions.deleteAssignedCollections=e}]}get customUserTypeSelected(){return this.type===o.OrganizationUserType.Custom}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.organizationUserId,yield this.loadCollections(),this.editMode){this.editMode=!0,this.title=this.i18nService.t("editUser");try{const e=yield this.apiService.getOrganizationUser(this.organizationId,this.organizationUserId);this.access=e.accessAll?"all":"selected",this.type=e.type,e.type===o.OrganizationUserType.Custom&&(this.permissions=e.permissions),null!=e.collections&&null!=this.collections&&e.collections.forEach((e=>{const t=this.collections.filter((t=>t.id===e.id));null!=t&&t.length>0&&(t[0].checked=!0,t[0].readOnly=e.readOnly,t[0].hidePasswords=e.hidePasswords)}))}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteUser");this.loading=!1}))}loadCollections(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getCollections(this.organizationId)).data.map((e=>new l.Collection(new s.CollectionData(e))));this.collections=yield this.collectionService.decryptMany(e)}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}setRequestPermissions(e,t){return Object.assign(e,t?new a.PermissionsApi:this.permissions),e}handleDependentPermissions(){this.permissions.manageResetPassword&&!this.permissions.manageUsers&&(this.permissions.manageUsers=!0,document.getElementById("manageUsers").checked=!0,this.platformUtilsService.showToast("info",null,this.i18nService.t("resetPasswordManageUsers")))}submit(){var e,t;return i(this,void 0,void 0,(function*(){let n=null;"all"!==this.access&&(n=this.collections.filter((e=>e.checked)).map((e=>new p.SelectionReadOnlyRequest(e.id,!!e.readOnly,!!e.hidePasswords))));try{if(this.editMode){const t=new d.OrganizationUserUpdateRequest;t.accessAll="all"===this.access,t.type=this.type,t.collections=n,t.permissions=this.setRequestPermissions(null!==(e=t.permissions)&&void 0!==e?e:new a.PermissionsApi,t.type!==o.OrganizationUserType.Custom),this.formPromise=this.apiService.putOrganizationUser(this.organizationId,this.organizationUserId,t)}else{const e=new c.OrganizationUserInviteRequest;e.emails=this.emails.trim().split(/\s*,\s*/),e.accessAll="all"===this.access,e.type=this.type,e.permissions=this.setRequestPermissions(null!==(t=e.permissions)&&void 0!==t?t:new a.PermissionsApi,e.type!==o.OrganizationUserType.Custom),e.collections=n,this.formPromise=this.apiService.postOrganizationUserInvite(this.organizationId,e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSavedUser.emit()}catch(i){this.logService.error(i)}}))}delete(){return i(this,void 0,void 0,(function*(){if(!this.editMode)return;const e=this.usesKeyConnector?"removeUserConfirmationKeyConnector":"removeUserConfirmation";if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(e),this.name,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.deletePromise=this.apiService.deleteOrganizationUser(this.organizationId,this.organizationUserId),yield this.deletePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.name)),this.onDeletedUser.emit()}catch(t){this.logService.error(t)}}))}}t.UserAddEditComponent=V,V.ɵfac=function(e){return new(e||V)(u.ɵɵdirectiveInject(m.ApiService),u.ɵɵdirectiveInject(h.I18nService),u.ɵɵdirectiveInject(v.CollectionService),u.ɵɵdirectiveInject(f.PlatformUtilsService),u.ɵɵdirectiveInject(g.LogService))},V.ɵcmp=u.ɵɵdefineComponent({type:V,selectors:[["app-user-add-edit"]],inputs:{name:"name",organizationUserId:"organizationUserId",organizationId:"organizationId",usesKeyConnector:"usesKeyConnector"},outputs:{onSavedUser:"onSavedUser",onDeletedUser:"onDeletedUser"},decls:51,vars:19,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/provider-users/",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","userTypeUser",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeUser",1,"form-check-label"],["type","radio","name","userType","id","userTypeManager",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeManager",1,"form-check-label"],["type","radio","name","userType","id","userTypeAdmin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeAdmin",1,"form-check-label"],["type","radio","name","userType","id","userTypeOwner",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeOwner",1,"form-check-label"],["type","radio","name","userType","id","userTypeCustom",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","userTypeCustom",1,"form-check-label"],[1,"mt-4","d-flex"],[1,"mb-3"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/user-types-access-control/#access-control",3,"appA11yTitle"],["class","ml-auto",4,"ngIf"],[1,"form-group",3,"ngClass"],[1,"form-check"],["type","radio","name","access","id","accessAll","value","all",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessAll",1,"form-check-label"],["type","radio","name","access","id","accessSelected","value","selected",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessSelected",1,"form-check-label"],[1,"form-group","mb-4"],["for","emails"],["id","emails","type","text","name","Emails","required","","appAutoFocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"row"],[1,"col-6"],[1,"font-weight-bold","mb-0"],[1,"my-0","mr-2"],["parentId","manageAssignedCollections",3,"checkboxes"],[1,"form-group","mb-0"],[1,"form-check","mt-1","form-check-block"],["type","checkbox","name","accessEventLogs","id","accessEventLogs",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessEventLogs",1,"form-check-label","font-weight-normal"],["type","checkbox","name","accessImportExport","id","accessImportExport",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessImportExport",1,"form-check-label","font-weight-normal"],["type","checkbox","name","accessReports","id","accessReports",1,"form-check-input",3,"ngModel","ngModelChange"],["for","accessReports",1,"form-check-label","font-weight-normal"],["parentId","manageAllCollections",3,"checkboxes"],["type","checkbox","name","manageGroups","id","manageGroups",1,"form-check-input",3,"ngModel","ngModelChange"],["for","manageGroups",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageSso","id","managePolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","manageSso",1,"form-check-label","font-weight-normal"],["type","checkbox","name","managePolicies","id","managePolicies",1,"form-check-input",3,"ngModel","ngModelChange"],["for","managePolicies",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageUsers","id","manageUsers",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","manageUsers",1,"form-check-label","font-weight-normal"],["type","checkbox","name","manageResetPassword","id","manageResetPassword",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","manageResetPassword",1,"form-check-label","font-weight-normal"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],["width","100",1,"text-center"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"],[1,"text-center"],["type","checkbox",3,"ngModel","name","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"form",2,3),u.ɵɵlistener("ngSubmit",(function(){return t.submit()})),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"div",4),u.ɵɵtext(8,"\n "),u.ɵɵelementStart(9,"h2",5),u.ɵɵtext(10),u.ɵɵtemplate(11,E,2,1,"small",6),u.ɵɵtext(12,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(13,"\n "),u.ɵɵelementStart(14,"button",7),u.ɵɵpipe(15,"i18n"),u.ɵɵtext(16,"\n "),u.ɵɵelementStart(17,"span",8),u.ɵɵtext(18,"×"),u.ɵɵelementEnd(),u.ɵɵtext(19,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(20,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵtemplate(22,P,9,6,"div",9),u.ɵɵtext(23,"\n "),u.ɵɵtemplate(24,F,119,67,"div",9),u.ɵɵtext(25,"\n "),u.ɵɵelementStart(26,"div",10),u.ɵɵtext(27,"\n "),u.ɵɵelementStart(28,"button",11),u.ɵɵtext(29,"\n "),u.ɵɵelement(30,"i",12),u.ɵɵpipe(31,"i18n"),u.ɵɵtext(32,"\n "),u.ɵɵelementStart(33,"span"),u.ɵɵtext(34),u.ɵɵpipe(35,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(36,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(37,"\n "),u.ɵɵelementStart(38,"button",13),u.ɵɵtext(39),u.ɵɵpipe(40,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(41,"\n "),u.ɵɵelementStart(42,"div",14),u.ɵɵtext(43,"\n "),u.ɵɵtemplate(44,U,9,10,"button",15),u.ɵɵtext(45,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(46,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(47,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(48,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(49,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(50,"\n")),2&e){const e=u.ɵɵreference(5);u.ɵɵadvance(4),u.ɵɵproperty("appApiAction",t.formPromise),u.ɵɵadvance(6),u.ɵɵtextInterpolate1("\n ",t.title,"\n "),u.ɵɵadvance(1),u.ɵɵproperty("ngIf",t.name),u.ɵɵadvance(3),u.ɵɵpropertyInterpolate("appA11yTitle",u.ɵɵpipeBind1(15,11,"close")),u.ɵɵadvance(8),u.ɵɵproperty("ngIf",t.loading),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading),u.ɵɵadvance(4),u.ɵɵproperty("disabled",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(31,13,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(35,15,"save")),u.ɵɵadvance(5),u.ɵɵtextInterpolate1("\n ",u.ɵɵpipeBind1(40,17,"cancel"),"\n "),u.ɵɵadvance(5),u.ɵɵproperty("ngIf",t.editMode)}},directives:[y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.NgIf,b.A11yTitleDirective,y.RadioControlValueAccessor,y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,S.NgClass,y.RequiredValidator,w.NestedCheckboxComponent,y.CheckboxControlValueAccessor,S.NgForOf,C.StopPropDirective],pipes:[I.I18nPipe],encapsulation:2})},85331:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserConfirmComponent=void 0;const r=n(32621),o=(n(85714),n(36631),n(73569),n(32621)),a=n(85714),s=n(36631),l=n(73569),c=n(96832),d=n(56820),p=n(57490),u=n(8863),m=n(99729);function h(e,t){if(1&e&&(o.ɵɵelementStart(0,"small",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class v{constructor(e,t,n){this.cryptoService=e,this.logService=t,this.stateService=n,this.onConfirmedUser=new r.EventEmitter,this.dontAskAgain=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){try{if(null!=this.publicKey){const e=yield this.cryptoService.getFingerprint(this.userId,this.publicKey.buffer);null!=e&&(this.fingerprint=e.join("-"))}}catch(e){this.logService.error(e)}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){this.loading||(this.dontAskAgain&&(yield this.stateService.setAutoConfirmFingerprints(!0)),this.onConfirmedUser.emit())}))}}t.UserConfirmComponent=v,v.ɵfac=function(e){return new(e||v)(o.ɵɵdirectiveInject(a.CryptoService),o.ɵɵdirectiveInject(s.LogService),o.ɵɵdirectiveInject(l.StateService))},v.ɵcmp=o.ɵɵdefineComponent({type:v,selectors:[["app-user-confirm"]],inputs:{name:"name",userId:"userId",publicKey:"publicKey"},outputs:{onConfirmedUser:"onConfirmedUser"},decls:69,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"form-check"],["type","checkbox","id","dontAskAgain","name","DontAskAgain",1,"form-check-input",3,"ngModel","ngModelChange"],["for","dontAskAgain",1,"form-check-label"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,h,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"p"),o.ɵɵtext(26),o.ɵɵpipe(27,"i18n"),o.ɵɵelementStart(28,"a",10),o.ɵɵtext(29),o.ɵɵpipe(30,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"p"),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"code"),o.ɵɵtext(36),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementStart(39,"div",11),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.dontAskAgain=e})),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"label",13),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",14),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"button",15),o.ɵɵtext(52,"\n "),o.ɵɵelement(53,"i",16),o.ɵɵpipe(54,"i18n"),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"span"),o.ɵɵtext(57),o.ɵɵpipe(58,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementStart(61,"button",17),o.ɵɵtext(62),o.ɵɵpipe(63,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,13,"confirmUser"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.name),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,15,"close")),o.ɵɵadvance(11),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(27,17,"fingerprintEnsureIntegrityVerify"),"\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(30,19,"learnMore"),""),o.ɵɵadvance(7),o.ɵɵtextInterpolate(t.fingerprint),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",t.dontAskAgain),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(45,21,"dontAskFingerprintAgain"),"\n "),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(54,23,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(58,25,"confirm")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(63,27,"cancel"),"\n ")}},directives:[c.ɵNgNoValidate,c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.NgIf,u.A11yTitleDirective,c.CheckboxControlValueAccessor,c.NgControlStatus,c.NgModel],pipes:[m.I18nPipe],encapsulation:2})},68535:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserGroupsComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(82769)),a=n(50533),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(96832),m=n(56820),h=n(57490),v=n(8863),f=n(39159),g=n(99729);function y(e,t){if(1&e&&(s.ɵɵelementStart(0,"small",14),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function x(e,t){1&e&&(s.ɵɵelementStart(0,"div",15),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",16),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",17),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"noGroupsInList"),"\n "))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",22),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).check(t)})),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",23),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.checked=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"td",24),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).check(t)})),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;s.ɵɵadvance(4),s.ɵɵpropertyInterpolate1("name","Groups[",n,"].Checked"),s.ɵɵproperty("ngModel",e.checked),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",20),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,b,10,3,"tr",21),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.groups)}}function C(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",15),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,S,3,3,"div",18),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,w,7,1,"table",19),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"groupAccessUserDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.groups||!e.groups.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.groups&&e.groups.length)}}class I{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSavedUser=new r.EventEmitter,this.loading=!0,this.groups=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=(yield this.apiService.getGroups(this.organizationId)).data.map((e=>e));e.sort(o.Utils.getSortFunction(this.i18nService,"name")),this.groups=e;try{const e=yield this.apiService.getOrganizationUserGroups(this.organizationId,this.organizationUserId);null!=e&&null!=this.groups&&e.forEach((e=>{const t=this.groups.filter((t=>t.id===e));null!=t&&t.length>0&&(t[0].checked=!0)}))}catch(t){this.logService.error(t)}this.loading=!1}))}check(e,t){e.checked=null==t?!e.checked:t,e.checked||(e.readOnly=!1)}selectAll(e){this.groups.forEach((t=>this.check(t,e)))}submit(){return i(this,void 0,void 0,(function*(){const e=new a.OrganizationUserUpdateGroupsRequest;e.groupIds=this.groups.filter((e=>e.checked)).map((e=>e.id));try{this.formPromise=this.apiService.putOrganizationUserGroups(this.organizationId,this.organizationUserId,e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("editedGroupsForUser",this.name)),this.onSavedUser.emit()}catch(t){this.logService.error(t)}}))}}t.UserGroupsComponent=I,I.ɵfac=function(e){return new(e||I)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService))},I.ɵcmp=s.ɵɵdefineComponent({type:I,selectors:[["app-user-groups"]],inputs:{name:"name",organizationUserId:"organizationUserId",organizationId:"organizationId"},outputs:{onSavedUser:"onSavedUser"},decls:47,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","groupAccessTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","groupAccessTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"table","table-hover","table-list","mb-0"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],[3,"click"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵtemplate(12,y,2,1,"small",6),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",7),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",8),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,x,9,6,"div",9),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,C,10,5,"div",9),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",10),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"button",11),s.ɵɵtext(30,"\n "),s.ɵɵelement(31,"i",12),s.ɵɵpipe(32,"i18n"),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"span"),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"button",13),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n")),2&e){const e=s.ɵɵreference(5);s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(11,10,"groupAccess"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.name),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,12,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading),s.ɵɵadvance(4),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(32,14,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(36,16,"save")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(41,18,"cancel"),"\n ")}},directives:[u.ɵNgNoValidate,u.NgControlStatusGroup,u.NgForm,m.ApiActionDirective,h.NgIf,v.A11yTitleDirective,h.NgForOf,u.CheckboxControlValueAccessor,f.StopPropDirective,u.NgControlStatus,u.NgModel],pipes:[g.I18nPipe],encapsulation:2})},64525:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationsRoutingModule=void 0;const r=n(68012),o=n(76299),a=n(47880),s=n(70734),l=n(45231),c=n(26092),d=n(25829),p=n(41204),u=n(2021),m=n(74147),h=n(6029),v=n(13637),f=n(39722),g=n(31627),y=n(2516),x=n(78027),S=n(38359),b=n(79002),w=n(44336),C=n(65347),I=n(86661),E=n(1128),P=n(706),O=n(43850),k=n(57785),A=n(32621),T=(n(68012),[{path:":organizationId",component:l.OrganizationLayoutComponent,canActivate:[o.AuthGuard,s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("admin")},children:[{path:"",pathMatch:"full",redirectTo:"vault"},{path:"vault",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(32459)))).OrganizationVaultModule}))},{path:"tools",component:P.ToolsComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("tools")},children:[{path:"",pathMatch:"full",redirectTo:"import"},{path:"import",component:C.ImportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"importData",permissions:[a.Permissions.AccessImportExport]}},{path:"export",component:b.ExportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"exportVault",permissions:[a.Permissions.AccessImportExport]}},{path:"exposed-passwords-report",component:w.ExposedPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"exposedPasswordsReport",permissions:[a.Permissions.AccessReports]}},{path:"inactive-two-factor-report",component:I.InactiveTwoFactorReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"inactive2faReport",permissions:[a.Permissions.AccessReports]}},{path:"reused-passwords-report",component:E.ReusedPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"reusedPasswordsReport",permissions:[a.Permissions.AccessReports]}},{path:"unsecured-websites-report",component:O.UnsecuredWebsitesReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"unsecuredWebsitesReport",permissions:[a.Permissions.AccessReports]}},{path:"weak-passwords-report",component:k.WeakPasswordsReportComponent,canActivate:[s.PermissionsGuard],data:{titleId:"weakPasswordsReport",permissions:[a.Permissions.AccessReports]}}]},{path:"manage",component:u.ManageComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("manage")},children:[{path:"",pathMatch:"full",redirectTo:"people"},{path:"collections",component:c.CollectionsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"collections",permissions:[a.Permissions.CreateNewCollections,a.Permissions.EditAnyCollection,a.Permissions.DeleteAnyCollection,a.Permissions.EditAssignedCollections,a.Permissions.DeleteAssignedCollections]}},{path:"events",component:d.EventsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"eventLogs",permissions:[a.Permissions.AccessEventLogs]}},{path:"groups",component:p.GroupsComponent,canActivate:[s.PermissionsGuard],data:{titleId:"groups",permissions:[a.Permissions.ManageGroups]}},{path:"people",component:m.PeopleComponent,canActivate:[s.PermissionsGuard],data:{titleId:"people",permissions:[a.Permissions.ManageUsers,a.Permissions.ManageUsersPassword]}},{path:"policies",component:h.PoliciesComponent,canActivate:[s.PermissionsGuard],data:{titleId:"policies",permissions:[a.Permissions.ManagePolicies]}}]},{path:"settings",component:x.SettingsComponent,canActivate:[s.PermissionsGuard],data:{permissions:v.NavigationPermissionsService.getPermissions("settings")},children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:f.AccountComponent,data:{titleId:"myOrganization"}},{path:"two-factor",component:S.TwoFactorSetupComponent,data:{titleId:"twoStepLogin"}},{path:"billing",component:g.OrganizationBillingComponent,canActivate:[s.PermissionsGuard],data:{titleId:"billing",permissions:[a.Permissions.ManageBilling]}},{path:"subscription",component:y.OrganizationSubscriptionComponent,data:{titleId:"subscription"}}]}]}]);class M{}t.OrganizationsRoutingModule=M,M.ɵfac=function(e){return new(e||M)},M.ɵmod=A.ɵɵdefineNgModule({type:M}),M.ɵinj=A.ɵɵdefineInjector({imports:[[r.RouterModule.forChild(T)],r.RouterModule]})},81824:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BasePolicyComponent=t.BasePolicy=void 0;const i=n(96832),r=n(17200),o=(n(64030),n(32621));t.BasePolicy=class{display(e){return!0}};class a{constructor(){this.enabled=new i.FormControl(!1),this.data=null}ngOnInit(){this.enabled.setValue(this.policyResponse.enabled),null!=this.policyResponse.data&&this.loadData()}loadData(){var e;this.data.patchValue(null!==(e=this.policyResponse.data)&&void 0!==e?e:{})}buildRequestData(){return null!=this.data?this.data.value:null}buildRequest(e){const t=new r.PolicyRequest;return t.enabled=this.enabled.value,t.type=this.policy.type,t.data=this.buildRequestData(),Promise.resolve(t)}}t.BasePolicyComponent=a,a.ɵfac=function(e){return new(e||a)},a.ɵdir=o.ɵɵdefineDirective({type:a,inputs:{policyResponse:"policyResponse",policy:"policy"}})},22991:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DisableSendPolicyComponent=t.DisableSendPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="disableSend",this.description="disableSendPolicyDesc",this.type=i.PolicyType.DisableSend,this.component=d}}t.DisableSendPolicy=c;class d extends r.BasePolicyComponent{}t.DisableSendPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-disable-send"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"disableSendExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},34568:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.MasterPasswordPolicyComponent=t.MasterPasswordPolicy=void 0;n(96832),n(51554),n(63513);const r=n(49906),o=n(81824),a=n(32621),s=n(96832),l=n(51554),c=n(63513),d=n(57490),p=n(51626),u=n(99729);function m(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",21),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"keyConnectorPolicyRestriction"),"\n"))}function h(e,t){if(1&e&&(a.ɵɵelementStart(0,"option",22),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵproperty("ngValue",e.value),a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class v extends o.BasePolicy{constructor(){super(...arguments),this.name="masterPass",this.description="masterPassPolicyDesc",this.type=r.PolicyType.MasterPassword,this.component=f}}t.MasterPasswordPolicy=v;class f extends o.BasePolicyComponent{constructor(e,t,n){super(),this.formBuilder=e,this.organizationService=n,this.data=this.formBuilder.group({minComplexity:[null],minLength:[null],requireUpper:[null],requireLower:[null],requireNumbers:[null],requireSpecial:[null]}),this.showKeyConnectorInfo=!1,this.passwordScores=[{name:"-- "+t.t("select")+" --",value:null},{name:t.t("weak")+" (0)",value:0},{name:t.t("weak")+" (1)",value:1},{name:t.t("weak")+" (2)",value:2},{name:t.t("good")+" (3)",value:3},{name:t.t("strong")+" (4)",value:4}]}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this);const t=yield this.organizationService.get(this.policyResponse.organizationId);this.showKeyConnectorInfo=t.keyConnectorEnabled}))}}t.MasterPasswordPolicyComponent=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.FormBuilder),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.OrganizationService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["policy-master-password"]],features:[a.ɵɵInheritDefinitionFeature],decls:73,vars:13,consts:[["type","info",4,"ngIf"],[3,"formGroup"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[1,"row"],[1,"col-6","form-group"],["for","minComplexity"],["id","minComplexity","name","minComplexity","formControlName","minComplexity",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],["for","minLength"],["id","minLength","type","number","min","8","name","minLength","formControlName","minLength",1,"form-control"],["type","checkbox","id","requireUpper","name","requireUpper","formControlName","requireUpper",1,"form-check-input"],["for","requireUpper",1,"form-check-label"],["type","checkbox","id","requireLower","name","requireLower","formControlName","requireLower",1,"form-check-input"],["for","requireLower",1,"form-check-label"],["type","checkbox","id","requireNumbers","name","requireNumbers","formControlName","requireNumbers",1,"form-check-input"],["for","requireNumbers",1,"form-check-label"],["type","checkbox","id","requireSpecial","name","requireSpecial","formControlName","requireSpecial",1,"form-check-input"],["for","requireSpecial",1,"form-check-label"],["type","info"],[3,"ngValue"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,m,3,3,"app-callout",0),a.ɵɵtext(1,"\n\n"),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"div",2),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"div",3),a.ɵɵtext(7,"\n "),a.ɵɵelement(8,"input",4),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"label",5),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n\n "),a.ɵɵelementStart(16,"div",6),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",7),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",8),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"select",9),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,h,2,2,"option",10),a.ɵɵtext(27,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",7),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"label",11),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelement(36,"input",12),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementStart(40,"div",3),a.ɵɵtext(41,"\n "),a.ɵɵelement(42,"input",13),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"label",14),a.ɵɵtext(45,"A-Z"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"div",3),a.ɵɵtext(49,"\n "),a.ɵɵelement(50,"input",15),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"label",16),a.ɵɵtext(53,"a-z"),a.ɵɵelementEnd(),a.ɵɵtext(54,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"div",3),a.ɵɵtext(57,"\n "),a.ɵɵelement(58,"input",17),a.ɵɵtext(59,"\n "),a.ɵɵelementStart(60,"label",18),a.ɵɵtext(61,"0-9"),a.ɵɵelementEnd(),a.ɵɵtext(62,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(63,"\n "),a.ɵɵelementStart(64,"div",3),a.ɵɵtext(65,"\n "),a.ɵɵelement(66,"input",19),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"label",20),a.ɵɵtext(69,"!@#$%^&*"),a.ɵɵelementEnd(),a.ɵɵtext(70,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(71,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(72,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showKeyConnectorInfo),a.ɵɵadvance(2),a.ɵɵproperty("formGroup",t.data),a.ɵɵadvance(6),a.ɵɵproperty("formControl",t.enabled),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,7,"enabled")),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,9,"minComplexityScore")),a.ɵɵadvance(5),a.ɵɵproperty("ngForOf",t.passwordScores),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(34,11,"minLength")))},directives:[d.NgIf,s.NgControlStatusGroup,s.FormGroupDirective,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective,s.SelectControlValueAccessor,s.FormControlName,d.NgForOf,s.MinValidator,s.NumberValueAccessor,s.DefaultValueAccessor,p.CalloutComponent,s.NgSelectOption,s.ɵNgSelectMultipleOption],pipes:[u.I18nPipe],encapsulation:2})},39123:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorPolicyComponent=t.PasswordGeneratorPolicy=void 0;n(96832),n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51554),l=n(57490),c=n(99729);function d(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",32),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class p extends r.BasePolicy{constructor(){super(...arguments),this.name="passwordGenerator",this.description="passwordGeneratorPolicyDesc",this.type=i.PolicyType.PasswordGenerator,this.component=u}}t.PasswordGeneratorPolicy=p;class u extends r.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.data=this.formBuilder.group({defaultType:[null],minLength:[null],useUpper:[null],useLower:[null],useNumbers:[null],useSpecial:[null],minNumbers:[null],minSpecial:[null],minNumberWords:[null],capitalize:[null],includeNumber:[null]}),this.defaultTypes=[{name:t.t("userPreference"),value:null},{name:t.t("password"),value:"password"},{name:t.t("passphrase"),value:"passphrase"}]}}t.PasswordGeneratorPolicyComponent=u,u.ɵfac=function(e){return new(e||u)(o.ɵɵdirectiveInject(a.FormBuilder),o.ɵɵdirectiveInject(s.I18nService))},u.ɵcmp=o.ɵɵdefineComponent({type:u,selectors:[["policy-password-generator"]],features:[o.ɵɵInheritDefinitionFeature],decls:133,vars:33,consts:[[3,"formGroup"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[1,"row"],[1,"col-6","form-group","mb-0"],["for","defaultType"],["id","defaultType","name","defaultType","formControlName","defaultType",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"mt-4"],[1,"col-6","form-group"],["for","minLength"],["id","minLength","type","number","name","minLength","min","5","max","128","formControlName","minLength",1,"form-control"],["for","minNumbers"],["id","minNumbers","type","number","name","minNumbers","min","0","max","9","formControlName","minNumbers",1,"form-control"],["for","minSpecial"],["id","minSpecial","type","number","name","minSpecial","min","0","max","9","formControlName","minSpecial",1,"form-control"],["type","checkbox","id","useUpper","formControlName","useUpper","name","useUpper",1,"form-check-input"],["for","useUpper",1,"form-check-label"],["type","checkbox","id","useLower","name","useLower","formControlName","useLower",1,"form-check-input"],["for","useLower",1,"form-check-label"],["type","checkbox","id","useNumbers","name","useNumbers","formControlName","useNumbers",1,"form-check-input"],["for","useNumbers",1,"form-check-label"],["type","checkbox","id","useSpecial","name","useSpecial","formControlName","useSpecial",1,"form-check-input"],["for","useSpecial",1,"form-check-label"],["for","minNumberWords"],["id","minNumberWords","type","number","name","minNumberWords","min","3","max","20","formControlName","minNumberWords",1,"form-control"],["type","checkbox","id","capitalize","name","capitalize","formControlName","capitalize",1,"form-check-input"],["for","capitalize",1,"form-check-label"],["type","checkbox","id","includeNumber","name","includeNumber","formControlName","includeNumber",1,"form-check-input"],["for","includeNumber",1,"form-check-label"],[3,"ngValue"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",3),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"label",4),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,d,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"h3",10),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"div",5),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"div",11),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"label",12),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelement(41,"input",13),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"div",5),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"div",11),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"label",14),o.ɵɵtext(50),o.ɵɵpipe(51,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n "),o.ɵɵelement(53,"input",15),o.ɵɵtext(54,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementStart(56,"div",11),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"label",16),o.ɵɵtext(59),o.ɵɵpipe(60,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelement(62,"input",17),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementStart(66,"div",2),o.ɵɵtext(67,"\n "),o.ɵɵelement(68,"input",18),o.ɵɵtext(69,"\n "),o.ɵɵelementStart(70,"label",19),o.ɵɵtext(71,"A-Z"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(73,"\n "),o.ɵɵelementStart(74,"div",2),o.ɵɵtext(75,"\n "),o.ɵɵelement(76,"input",20),o.ɵɵtext(77,"\n "),o.ɵɵelementStart(78,"label",21),o.ɵɵtext(79,"a-z"),o.ɵɵelementEnd(),o.ɵɵtext(80,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(81,"\n "),o.ɵɵelementStart(82,"div",2),o.ɵɵtext(83,"\n "),o.ɵɵelement(84,"input",22),o.ɵɵtext(85,"\n "),o.ɵɵelementStart(86,"label",23),o.ɵɵtext(87,"0-9"),o.ɵɵelementEnd(),o.ɵɵtext(88,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"div",2),o.ɵɵtext(91,"\n "),o.ɵɵelement(92,"input",24),o.ɵɵtext(93,"\n "),o.ɵɵelementStart(94,"label",25),o.ɵɵtext(95,"!@#$%^&*"),o.ɵɵelementEnd(),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"h3",10),o.ɵɵtext(99),o.ɵɵpipe(100,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(101,"\n "),o.ɵɵelementStart(102,"div",5),o.ɵɵtext(103,"\n "),o.ɵɵelementStart(104,"div",11),o.ɵɵtext(105,"\n "),o.ɵɵelementStart(106,"label",26),o.ɵɵtext(107),o.ɵɵpipe(108,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(109,"\n "),o.ɵɵelement(110,"input",27),o.ɵɵtext(111,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(112,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(113,"\n "),o.ɵɵelementStart(114,"div",2),o.ɵɵtext(115,"\n "),o.ɵɵelement(116,"input",28),o.ɵɵtext(117,"\n "),o.ɵɵelementStart(118,"label",29),o.ɵɵtext(119),o.ɵɵpipe(120,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(121,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(122,"\n "),o.ɵɵelementStart(123,"div",2),o.ɵɵtext(124,"\n "),o.ɵɵelement(125,"input",30),o.ɵɵtext(126,"\n "),o.ɵɵelementStart(127,"label",31),o.ɵɵtext(128),o.ɵɵpipe(129,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(130,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(131,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(132,"\n")),2&e&&(o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(6),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,13,"enabled")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,15,"defaultType")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.defaultTypes),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,17,"password")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(39,19,"minLength")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(51,21,"minNumbers")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(60,23,"minSpecial")),o.ɵɵadvance(40),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(100,25,"passphrase")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(108,27,"minimumNumberOfWords")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(120,29,"capitalize")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(129,31,"includeNumber")))},directives:[a.NgControlStatusGroup,a.FormGroupDirective,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.SelectControlValueAccessor,a.FormControlName,l.NgForOf,a.MinValidator,a.MaxValidator,a.NumberValueAccessor,a.DefaultValueAccessor,a.NgSelectOption,a.ɵNgSelectMultipleOption],pipes:[c.I18nPipe],encapsulation:2})},34912:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PersonalOwnershipPolicyComponent=t.PersonalOwnershipPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="personalOwnership",this.description="personalOwnershipPolicyDesc",this.type=i.PolicyType.PersonalOwnership,this.component=d}}t.PersonalOwnershipPolicy=c;class d extends r.BasePolicyComponent{}t.PersonalOwnershipPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-personal-ownership"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"personalOwnershipExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"personalOwnershipCheckboxDesc")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},60764:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequireSsoPolicyComponent=t.RequireSsoPolicy=void 0;n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(51554),s=n(51626),l=n(96832),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="requireSso",this.description="requireSsoPolicyDesc",this.type=i.PolicyType.RequireSso,this.component=p}display(e){return e.useSso}}t.RequireSsoPolicy=d;class p extends r.BasePolicyComponent{constructor(e){super(),this.i18nService=e}buildRequest(e){var t;const n=null!==(t=e.get(i.PolicyType.SingleOrg))&&void 0!==t&&t;if(this.enabled.value&&!n)throw new Error(this.i18nService.t("requireSsoPolicyReqError"));return super.buildRequest(e)}}t.RequireSsoPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-require-sso"]],features:[o.ɵɵInheritDefinitionFeature],decls:21,vars:13,consts:[["type","tip",3,"title"],["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n"),o.ɵɵelementStart(5,"app-callout",1),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n\n"),o.ɵɵelementStart(9,"div",2),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",3),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"input",4),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"label",5),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n")),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,5,"prerequisite")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,7,"requireSsoPolicyReq"),"\n"),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(7,9,"requireSsoExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,11,"enabled")))},directives:[s.CalloutComponent,l.CheckboxControlValueAccessor,l.NgControlStatus,l.FormControlDirective],pipes:[c.I18nPipe],encapsulation:2})},40558:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ResetPasswordPolicyComponent=t.ResetPasswordPolicy=void 0;n(96832),n(63513);const r=n(49906),o=n(81824),a=n(32621),s=n(96832),l=n(63513),c=n(57490),d=n(51626),p=n(99729);function u(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",10),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"keyConnectorPolicyRestriction"),"\n"))}class m extends o.BasePolicy{constructor(){super(...arguments),this.name="resetPasswordPolicy",this.description="resetPasswordPolicyDescription",this.type=r.PolicyType.ResetPassword,this.component=h}display(e){return e.useResetPassword}}t.ResetPasswordPolicy=m;class h extends o.BasePolicyComponent{constructor(e,t){super(),this.formBuilder=e,this.organizationService=t,this.data=this.formBuilder.group({autoEnrollEnabled:!1}),this.showKeyConnectorInfo=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){e.ngOnInit.call(this);const t=yield this.organizationService.get(this.policyResponse.organizationId);this.showKeyConnectorInfo=t.keyConnectorEnabled}))}}t.ResetPasswordPolicyComponent=h,h.ɵfac=function(e){return new(e||h)(a.ɵɵdirectiveInject(s.FormBuilder),a.ɵɵdirectiveInject(l.OrganizationService))},h.ɵcmp=a.ɵɵdefineComponent({type:h,selectors:[["policy-reset-password"]],features:[a.ɵɵInheritDefinitionFeature],decls:42,vars:21,consts:[["type","info",4,"ngIf"],["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],[1,"mt-4"],["type","checkbox","id","autoEnrollEnabled","name","AutoEnrollEnabled","formControlName","autoEnrollEnabled",1,"form-check-input"],["for","autoEnrollEnabled",1,"form-check-label"],["type","info"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,u,3,3,"app-callout",0),a.ɵɵtext(1,"\n\n"),a.ɵɵelementStart(2,"app-callout",1),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n\n"),a.ɵɵelementStart(6,"div",2),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"div",3),a.ɵɵtext(9,"\n "),a.ɵɵelement(10,"input",4),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"label",5),a.ɵɵtext(13),a.ɵɵpipe(14,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n\n"),a.ɵɵelementStart(18,"div",6),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"h3",7),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"p"),a.ɵɵtext(25),a.ɵɵpipe(26,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"app-callout",1),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"div",3),a.ɵɵtext(33,"\n "),a.ɵɵelement(34,"input",8),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"label",9),a.ɵɵtext(37),a.ɵɵpipe(38,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showKeyConnectorInfo),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,9,"resetPasswordPolicyWarning"),"\n"),a.ɵɵadvance(7),a.ɵɵproperty("formControl",t.enabled),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(14,11,"enabled")),a.ɵɵadvance(5),a.ɵɵproperty("formGroup",t.data),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,13,"resetPasswordPolicyAutoEnroll")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(26,15,"resetPasswordPolicyAutoEnrollDescription")),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,17,"resetPasswordPolicyAutoEnrollWarning"),"\n "),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(38,19,"resetPasswordPolicyAutoEnrollCheckbox"),"\n "))},directives:[c.NgIf,d.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective,s.NgControlStatusGroup,s.FormGroupDirective,s.FormControlName],pipes:[p.I18nPipe],encapsulation:2})},57037:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendOptionsPolicyComponent=t.SendOptionsPolicy=void 0;n(96832);const i=n(49906),r=n(81824),o=n(32621),a=n(96832),s=n(51626),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="sendOptions",this.description="sendOptionsPolicyDesc",this.type=i.PolicyType.SendOptions,this.component=d}}t.SendOptionsPolicy=c;class d extends r.BasePolicyComponent{constructor(e){super(),this.formBuilder=e,this.data=this.formBuilder.group({disableHideEmail:!1})}}t.SendOptionsPolicyComponent=d,d.ɵfac=function(e){return new(e||d)(o.ɵɵdirectiveInject(a.FormBuilder))},d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-send-options"]],features:[o.ɵɵInheritDefinitionFeature],decls:32,vars:14,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"],[3,"formGroup"],[1,"mt-4"],["type","checkbox","id","disableHideEmail","name","DisableHideEmail","formControlName","disableHideEmail",1,"form-check-input"],["for","disableHideEmail",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n\n"),o.ɵɵelementStart(16,"div",5),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"h3",6),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",2),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"input",7),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"label",8),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,6,"sendOptionsExemption"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,8,"enabled")),o.ɵɵadvance(5),o.ɵɵproperty("formGroup",t.data),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,10,"options")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(28,12,"disableHideEmail")))},directives:[s.CalloutComponent,a.CheckboxControlValueAccessor,a.NgControlStatus,a.FormControlDirective,a.NgControlStatusGroup,a.FormGroupDirective,a.FormControlName],pipes:[l.I18nPipe],encapsulation:2})},82862:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SingleOrgPolicyComponent=t.SingleOrgPolicy=void 0;n(51554);const i=n(49906),r=n(81824),o=n(32621),a=n(51554),s=n(51626),l=n(96832),c=n(99729);class d extends r.BasePolicy{constructor(){super(...arguments),this.name="singleOrg",this.description="singleOrgDesc",this.type=i.PolicyType.SingleOrg,this.component=p}}t.SingleOrgPolicy=d;class p extends r.BasePolicyComponent{constructor(e){super(),this.i18nService=e}buildRequest(e){var t,n;if(!this.enabled.value){if(null!==(t=e.get(i.PolicyType.RequireSso))&&void 0!==t&&t)throw new Error(this.i18nService.t("disableRequiredError",this.i18nService.t("requireSso")));if(null!==(n=e.get(i.PolicyType.MaximumVaultTimeout))&&void 0!==n&&n)throw new Error(this.i18nService.t("disableRequiredError",this.i18nService.t("maximumVaultTimeoutLabel")))}return super.buildRequest(e)}}t.SingleOrgPolicyComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.I18nService))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["policy-single-org"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"singleOrgPolicyWarning"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[s.CalloutComponent,l.CheckboxControlValueAccessor,l.NgControlStatus,l.FormControlDirective],pipes:[c.I18nPipe],encapsulation:2})},43909:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticationPolicyComponent=t.TwoFactorAuthenticationPolicy=void 0;const i=n(49906),r=n(81824),o=n(32621),a=n(51626),s=n(96832),l=n(99729);class c extends r.BasePolicy{constructor(){super(...arguments),this.name="twoStepLogin",this.description="twoStepLoginPolicyDesc",this.type=i.PolicyType.TwoFactorAuthentication,this.component=d}}t.TwoFactorAuthenticationPolicy=c;class d extends r.BasePolicyComponent{}t.TwoFactorAuthenticationPolicyComponent=d,d.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(d)))(t||d)}}(),d.ɵcmp=o.ɵɵdefineComponent({type:d,selectors:[["policy-two-factor-authentication"]],features:[o.ɵɵInheritDefinitionFeature],decls:16,vars:7,consts:[["type","warning"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","enabled","name","Enabled",1,"form-check-input",3,"formControl"],["for","enabled",1,"form-check-label"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",0),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n\n"),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"input",3),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",4),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n")),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"twoStepLoginPolicyWarning"),"\n"),o.ɵɵadvance(7),o.ɵɵproperty("formControl",t.enabled),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,5,"enabled")))},directives:[a.CalloutComponent,s.CheckboxControlValueAccessor,s.NgControlStatus,s.FormControlDirective],pipes:[l.I18nPipe],encapsulation:2})},13637:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NavigationPermissionsService=void 0;const i=n(47880),r={manage:[i.Permissions.CreateNewCollections,i.Permissions.EditAnyCollection,i.Permissions.DeleteAnyCollection,i.Permissions.EditAssignedCollections,i.Permissions.DeleteAssignedCollections,i.Permissions.AccessEventLogs,i.Permissions.ManageGroups,i.Permissions.ManageUsers,i.Permissions.ManagePolicies],tools:[i.Permissions.AccessImportExport,i.Permissions.AccessReports],settings:[i.Permissions.ManageOrganization]};class o{static getPermissions(e){return"admin"===e?Object.values(r).reduce(((e,t)=>e.concat(t)),[]):r[e]}static canAccessAdmin(e){return this.canAccessTools(e)||this.canAccessSettings(e)||this.canAccessManage(e)}static canAccessTools(e){return e.hasAnyPermission(o.getPermissions("tools"))}static canAccessSettings(e){return e.hasAnyPermission(o.getPermissions("settings"))}static canAccessManage(e){return e.hasAnyPermission(o.getPermissions("manage"))}}t.NavigationPermissionsService=o},39722:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(85714),n(51554),n(36631),n(63513),n(73828),n(9724),n(39950)),a=n(20086),s=n(83011),l=n(56796),c=n(41799),d=n(5092),p=n(32621),u=n(64684),m=n(91674),h=n(51554),v=n(68012),f=n(9724),g=n(73828),y=n(85714),x=n(36631),S=n(63513),b=n(57490),w=n(96832),C=n(56820),I=n(15370),E=n(41799),P=n(99729),O=["deleteOrganizationTemplate"],k=["purgeOrganizationTemplate"],A=["apiKeyTemplate"],T=["rotateApiKeyTemplate"];function M(e,t){1&e&&(p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",12),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",13),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function B(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",14,15),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submit()})),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"div",16),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"div",17),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"div",18),p.ɵɵtext(8,"\n "),p.ɵɵelementStart(9,"label",19),p.ɵɵtext(10),p.ɵɵpipe(11,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(12,"\n "),p.ɵɵelementStart(13,"input",20),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.name=t})),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementStart(16,"div",18),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"label",21),p.ɵɵtext(19),p.ɵɵpipe(20,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"input",22),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.billingEmail=t})),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(24,"\n "),p.ɵɵelementStart(25,"div",18),p.ɵɵtext(26,"\n "),p.ɵɵelementStart(27,"label",23),p.ɵɵtext(28),p.ɵɵpipe(29,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵelementStart(31,"input",24),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.businessName=t})),p.ɵɵelementEnd(),p.ɵɵtext(32,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n "),p.ɵɵelementStart(34,"div",18),p.ɵɵtext(35,"\n "),p.ɵɵelementStart(36,"label",25),p.ɵɵtext(37),p.ɵɵpipe(38,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(39,"\n "),p.ɵɵelementStart(40,"input",26),p.ɵɵlistener("ngModelChange",(function(t){p.ɵɵrestoreView(e);return p.ɵɵnextContext().org.identifier=t})),p.ɵɵelementEnd(),p.ɵɵtext(41,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(42,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(43,"\n "),p.ɵɵelementStart(44,"div",17),p.ɵɵtext(45,"\n "),p.ɵɵelement(46,"app-avatar",27),p.ɵɵtext(47,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(48,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(49,"\n "),p.ɵɵelementStart(50,"button",28),p.ɵɵtext(51,"\n "),p.ɵɵelement(52,"i",29),p.ɵɵpipe(53,"i18n"),p.ɵɵtext(54,"\n "),p.ɵɵelementStart(55,"span"),p.ɵɵtext(56),p.ɵɵpipe(57,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(58,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(59,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("appApiAction",t.formPromise),p.ɵɵadvance(10),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(11,16,"organizationName")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.name)("disabled",t.selfHosted),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(20,18,"billingEmail")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.billingEmail)("disabled",t.selfHosted||!t.canManageBilling),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(29,20,"businessName")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.businessName)("disabled",t.selfHosted||!t.canManageBilling),p.ɵɵadvance(6),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(38,22,"identifier")),p.ɵɵadvance(3),p.ɵɵproperty("ngModel",t.org.identifier),p.ɵɵadvance(6),p.ɵɵpropertyInterpolate("data",t.org.name),p.ɵɵadvance(4),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(53,24,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(57,26,"save"))}}function D(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",3),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"h1"),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementStart(9,"p"),p.ɵɵtext(10),p.ɵɵpipe(11,"i18n"),p.ɵɵelementStart(12,"a",30),p.ɵɵtext(13),p.ɵɵpipe(14,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementStart(17,"button",31),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().viewApiKey()})),p.ɵɵtext(18),p.ɵɵpipe(19,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(20,"\n "),p.ɵɵelementStart(21,"button",31),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().rotateApiKey()})),p.ɵɵtext(22),p.ɵɵpipe(23,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(24,"\n"),p.ɵɵelementContainerEnd()}2&e&&(p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,5,"apiKey")),p.ɵɵadvance(5),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(11,7,"apiKeyDesc"),"\n "),p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(14,9,"learnMore"),"\n "),p.ɵɵadvance(5),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(19,11,"viewApiKey"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(23,13,"rotateApiKey"),"\n "))}function R(e,t){1&e&&(p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",12),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",13),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"form",14,32),p.ɵɵlistener("ngSubmit",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext().submitTaxInfo()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"app-tax-info"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"button",28),p.ɵɵtext(6,"\n "),p.ɵɵelement(7,"i",29),p.ɵɵpipe(8,"i18n"),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"span"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext();p.ɵɵproperty("appApiAction",t.taxFormPromise),p.ɵɵadvance(5),p.ɵɵproperty("disabled",e.loading),p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(8,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(12,6,"save"))}}function U(e,t){}function V(e,t){}function N(e,t){}function _(e,t){}class j{constructor(e,t,n,i,r,o,a,s,l,c){this.modalService=e,this.apiService=t,this.i18nService=n,this.route=i,this.syncService=r,this.platformUtilsService=o,this.cryptoService=a,this.logService=s,this.router=l,this.organizationService=c,this.selfHosted=!1,this.canManageBilling=!0,this.loading=!0,this.canUseApi=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.selfHosted=this.platformUtilsService.isSelfHost(),this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,this.canManageBilling=(yield this.organizationService.get(this.organizationId)).canManageBilling;try{this.org=yield this.apiService.getOrganization(this.organizationId),this.canUseApi=this.org.useApi}catch(t){this.logService.error(t)}})))),this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new a.OrganizationUpdateRequest;if(e.name=this.org.name,e.businessName=this.org.businessName,e.billingEmail=this.org.billingEmail,e.identifier=this.org.identifier,!this.org.hasPublicAndPrivateKeys){const t=yield this.cryptoService.getOrgKey(this.organizationId),n=yield this.cryptoService.makeKeyPair(t);e.keys=new o.OrganizationKeysRequest(n[0],n[1].encryptedString)}this.formPromise=this.apiService.putOrganization(this.organizationId,e).then((()=>this.syncService.fullSync(!0))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationUpdated"))}catch(e){this.logService.error(e)}}))}submitTaxInfo(){return i(this,void 0,void 0,(function*(){this.taxFormPromise=this.taxInfo.submitTaxInfo(),yield this.taxFormPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("taxInfoUpdated"))}))}deleteOrganization(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(d.DeleteOrganizationComponent,this.deleteModalRef,(e=>{e.organizationId=this.organizationId,e.onSuccess.subscribe((()=>{this.router.navigate(["/"])}))}))}))}purgeVault(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.PurgeVaultComponent,this.purgeModalRef,(e=>{e.organizationId=this.organizationId}))}))}viewApiKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.ApiKeyComponent,this.apiKeyModalRef,(e=>{e.keyType="organization",e.entityId=this.organizationId,e.postKey=this.apiService.postOrganizationApiKey.bind(this.apiService),e.scope="api.organization",e.grantType="client_credentials",e.apiKeyTitle="apiKey",e.apiKeyWarning="apiKeyWarning",e.apiKeyDescription="apiKeyDesc"}))}))}rotateApiKey(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.ApiKeyComponent,this.rotateApiKeyModalRef,(e=>{e.keyType="organization",e.isRotation=!0,e.entityId=this.organizationId,e.postKey=this.apiService.postOrganizationRotateApiKey.bind(this.apiService),e.scope="api.organization",e.grantType="client_credentials",e.apiKeyTitle="apiKey",e.apiKeyWarning="apiKeyWarning",e.apiKeyDescription="apiKeyRotateDesc"}))}))}}t.AccountComponent=j,j.ɵfac=function(e){return new(e||j)(p.ɵɵdirectiveInject(u.ModalService),p.ɵɵdirectiveInject(m.ApiService),p.ɵɵdirectiveInject(h.I18nService),p.ɵɵdirectiveInject(v.ActivatedRoute),p.ɵɵdirectiveInject(f.SyncService),p.ɵɵdirectiveInject(g.PlatformUtilsService),p.ɵɵdirectiveInject(y.CryptoService),p.ɵɵdirectiveInject(x.LogService),p.ɵɵdirectiveInject(v.Router),p.ɵɵdirectiveInject(S.OrganizationService))},j.ɵcmp=p.ɵɵdefineComponent({type:j,selectors:[["app-org-account"]],viewQuery:function(e,t){if(1&e&&(p.ɵɵviewQuery(O,7,r.ViewContainerRef),p.ɵɵviewQuery(k,7,r.ViewContainerRef),p.ɵɵviewQuery(A,7,r.ViewContainerRef),p.ɵɵviewQuery(T,7,r.ViewContainerRef),p.ɵɵviewQuery(c.TaxInfoComponent,5)),2&e){let e;p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.deleteModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.purgeModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.apiKeyModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.rotateApiKeyModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.taxInfo=e.first)}},decls:65,vars:26,consts:[[1,"page-header"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[1,"secondary-header","border-0","mb-0"],[1,"secondary-header","text-danger","border-0","mb-0"],[1,"card","border-danger"],[1,"card-body"],["type","button",1,"btn","btn-outline-danger",3,"click"],["deleteOrganizationTemplate",""],["purgeOrganizationTemplate",""],["apiKeyTemplate",""],["rotateApiKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","businessName"],["id","businessName","type","text","name","BusinessName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","identifier"],["id","identifier","type","text","name","Identifier",1,"form-control",3,"ngModel","ngModelChange"],["dynamic","true","size","75","fontSize","35",3,"data"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["href","https://docs.bitwarden.com","target","_blank","rel","noopener"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["formTax",""]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n"),p.ɵɵtemplate(7,M,9,6,"div",1),p.ɵɵtext(8,"\n"),p.ɵɵtemplate(9,B,60,28,"form",2),p.ɵɵtext(10,"\n"),p.ɵɵtemplate(11,D,25,15,"ng-container",1),p.ɵɵtext(12,"\n"),p.ɵɵelementStart(13,"div",3),p.ɵɵtext(14,"\n "),p.ɵɵelementStart(15,"h1"),p.ɵɵtext(16),p.ɵɵpipe(17,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(18,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n"),p.ɵɵelementStart(20,"p"),p.ɵɵtext(21),p.ɵɵpipe(22,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n"),p.ɵɵtemplate(24,R,9,6,"div",1),p.ɵɵtext(25,"\n"),p.ɵɵtemplate(26,F,15,8,"form",2),p.ɵɵtext(27,"\n"),p.ɵɵelementStart(28,"div",4),p.ɵɵtext(29,"\n "),p.ɵɵelementStart(30,"h1"),p.ɵɵtext(31),p.ɵɵpipe(32,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(33,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(34,"\n"),p.ɵɵelementStart(35,"div",5),p.ɵɵtext(36,"\n "),p.ɵɵelementStart(37,"div",6),p.ɵɵtext(38,"\n "),p.ɵɵelementStart(39,"p"),p.ɵɵtext(40),p.ɵɵpipe(41,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(42,"\n "),p.ɵɵelementStart(43,"button",7),p.ɵɵlistener("click",(function(){return t.deleteOrganization()})),p.ɵɵtext(44),p.ɵɵpipe(45,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(46,"\n "),p.ɵɵelementStart(47,"button",7),p.ɵɵlistener("click",(function(){return t.purgeVault()})),p.ɵɵtext(48),p.ɵɵpipe(49,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(50,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(51,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(52,"\n"),p.ɵɵtemplate(53,U,0,0,"ng-template",null,8,p.ɵɵtemplateRefExtractor),p.ɵɵtext(55,"\n"),p.ɵɵtemplate(56,V,0,0,"ng-template",null,9,p.ɵɵtemplateRefExtractor),p.ɵɵtext(58,"\n"),p.ɵɵtemplate(59,N,0,0,"ng-template",null,10,p.ɵɵtemplateRefExtractor),p.ɵɵtext(61,"\n"),p.ɵɵtemplate(62,_,0,0,"ng-template",null,11,p.ɵɵtemplateRefExtractor),p.ɵɵtext(64,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,12,"myOrganization")),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.org&&!t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.canUseApi),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(17,14,"taxInformation")),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(22,16,"taxInformationDesc")),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",!t.org||t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.org&&!t.loading),p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(32,18,"dangerZone")),p.ɵɵadvance(9),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(41,20,"dangerZoneDesc")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(45,22,"deleteOrganization"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(49,24,"purgeVault"),"\n "))},directives:[b.NgIf,w.NgControlStatusGroup,w.NgForm,C.ApiActionDirective,w.DefaultValueAccessor,w.NgControlStatus,w.NgModel,I.AvatarComponent,E.TaxInfoComponent],pipes:[P.I18nPipe],encapsulation:2})},76137:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustSubscription=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(83828)),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(36631),p=n(96832),u=n(56820),m=n(17337),h=n(99729),v=n(57490);class f{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.seatPrice=0,this.interval="year",this.onAdjusted=new r.EventEmitter}ngOnInit(){this.limitSubscription=null!=this.maxAutoscaleSeats,this.newSeatCount=this.currentSeatCount,this.newMaxSeats=this.maxAutoscaleSeats}submit(){return i(this,void 0,void 0,(function*(){try{const e=this.newSeatCount-this.currentSeatCount,t=new o.OrganizationSubscriptionUpdateRequest(e,this.newMaxSeats);this.formPromise=this.apiService.postOrganizationUpdateSubscription(this.organizationId,t),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("subscriptionUpdated"))}catch(e){this.logService.error(e)}this.onAdjusted.emit()}))}limitSubscriptionChanged(){this.limitSubscription||(this.newMaxSeats=null)}get adjustedSeatTotal(){return this.newSeatCount*this.seatPrice}get maxSeatTotal(){return this.newMaxSeats*this.seatPrice}}t.AdjustSubscription=f,f.ɵfac=function(e){return new(e||f)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.LogService))},f.ɵcmp=a.ɵɵdefineComponent({type:f,selectors:[["app-adjust-subscription"]],inputs:{organizationId:"organizationId",maxAutoscaleSeats:"maxAutoscaleSeats",currentSeatCount:"currentSeatCount",seatPrice:"seatPrice",interval:"interval"},outputs:{onAdjusted:"onAdjusted"},decls:82,vars:57,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"form-group","col-6"],["for","newSeatCount"],["id","newSeatCount","type","number","name","NewSeatCount","min","0","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"d-block","text-muted","mb-4"],[1,"row","mb-4"],[1,"form-group","col-sm"],[1,"form-check"],["id","limitSubscription","type","checkbox","name","LimitSubscription",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","limitSubscription"],[1,"d-block","text-muted"],[1,"row","mb-4",3,"hidden"],["for","maxAutoscaleSeats"],["id","maxAutoscaleSeats","type","number","name","MaxAutoscaleSeats","step","1",1,"form-control","col-6",3,"ngModel","min","required","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"showMethods"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"form",0,1),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"div"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"div",2),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",3),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"label",4),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"input",5),a.ɵɵlistener("ngModelChange",(function(e){return t.newSeatCount=e})),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"small",6),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"strong"),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵpipe(22,"currency"),a.ɵɵpipe(23,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"div",7),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"div",8),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",9),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"input",10),a.ɵɵlistener("ngModelChange",(function(e){return t.limitSubscription=e}))("change",(function(){return t.limitSubscriptionChanged()})),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"label",11),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(39,"\n "),a.ɵɵelementStart(40,"small",12),a.ɵɵtext(41),a.ɵɵpipe(42,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(45,"\n "),a.ɵɵelementStart(46,"div",13),a.ɵɵtext(47,"\n "),a.ɵɵelementStart(48,"div",8),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"label",14),a.ɵɵtext(51),a.ɵɵpipe(52,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(53,"\n "),a.ɵɵelementStart(54,"input",15),a.ɵɵlistener("ngModelChange",(function(e){return t.newMaxSeats=e})),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"small",12),a.ɵɵtext(57,"\n "),a.ɵɵelementStart(58,"strong"),a.ɵɵtext(59),a.ɵɵpipe(60,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(61),a.ɵɵpipe(62,"currency"),a.ɵɵpipe(63,"currency"),a.ɵɵpipe(64,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementStart(68,"button",16),a.ɵɵtext(69,"\n "),a.ɵɵelement(70,"i",17),a.ɵɵpipe(71,"i18n"),a.ɵɵtext(72,"\n "),a.ɵɵelementStart(73,"span"),a.ɵɵtext(74),a.ɵɵpipe(75,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(76,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(77,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(78,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(79,"\n"),a.ɵɵelement(80,"app-payment",18),a.ɵɵtext(81,"\n")),2&e){const e=a.ɵɵreference(1);a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,25,"subscriptionSeats")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.newSeatCount),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(19,27,"total"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate4(" ",t.newSeatCount||0," ×\n ",a.ɵɵpipeBind2(21,29,t.seatPrice,"$")," = ",a.ɵɵpipeBind2(22,32,t.adjustedSeatTotal,"$")," /\n ",a.ɵɵpipeBind1(23,35,t.interval),"\n "),a.ɵɵadvance(13),a.ɵɵproperty("ngModel",t.limitSubscription),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,37,"limitSubscription")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(42,39,"limitSubscriptionDesc")),a.ɵɵadvance(5),a.ɵɵproperty("hidden",!t.limitSubscription),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(52,41,"maxSeatLimit")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.newMaxSeats)("min",null==t.newSeatCount?1:t.newSeatCount)("required",t.limitSubscription),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(60,43,"maxSeatCost"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate4(" ",t.newMaxSeats||0," ×\n ",a.ɵɵpipeBind2(62,45,t.seatPrice,"$")," = ",a.ɵɵpipeBind2(63,48,t.maxSeatTotal,"$")," /\n ",a.ɵɵpipeBind1(64,51,t.interval),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(71,53,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(75,55,"save")),a.ɵɵadvance(6),a.ɵɵproperty("showMethods",!1)}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,p.MinValidator,p.NumberValueAccessor,p.DefaultValueAccessor,p.RequiredValidator,p.NgControlStatus,p.NgModel,p.CheckboxControlValueAccessor,m.PaymentComponent],pipes:[h.I18nPipe,v.CurrencyPipe],encapsulation:2})},73738:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncApiKeyComponent=void 0;n(91674),n(51554),n(73828),n(57055);const r=n(43497),o=n(32137),a=n(32621),s=n(57055),l=n(91674),c=n(73828),d=n(51554),p=n(96832),u=n(56820),m=n(8863),h=n(57490),v=n(4158),f=n(51626),g=n(99729);function y(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"app-user-verification",15),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().masterPassword=t})),a.ɵɵtext(1,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("ngModel",e.masterPassword)}}function x(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"app-callout",16),a.ɵɵtext(7),a.ɵɵpipe(8,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(9,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"rotateBillingSyncTokenTitle")),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(8,4,"rotateBillingSyncTokenWarning"),"\n "))}function S(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",25),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"b",26),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5),a.ɵɵpipe(6,"date"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(3),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(4,2,"lastSync"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(6,4,e.lastSyncDate,"medium"),"\n ")}}function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",27),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",28),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(4,1,1===e.daysBetween?"awaitingSyncSingular":"awaitingSyncPlural",e.daysBetween),"\n ")}}function w(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"label",17),a.ɵɵtext(7,"Billing Sync Key"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",18),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"input",19),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().clientSecret=t})),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"div",20),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"button",21),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().copy()})),a.ɵɵpipe(16,"i18n"),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"i",22),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵtemplate(23,S,7,7,"div",23),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,b,5,4,"div",24),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,5,"copyPasteBillingSync")),a.ɵɵadvance(8),a.ɵɵproperty("ngModel",e.clientSecret),a.ɵɵadvance(4),a.ɵɵproperty("appA11yTitle",a.ɵɵpipeBind1(16,7,"copy")),a.ɵɵadvance(8),a.ɵɵproperty("ngIf",e.showLastSyncText),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.showAwaitingSyncText)}}function C(e,t){1&e&&(a.ɵɵelement(0,"i",31),a.ɵɵpipe(1,"i18n")),2&e&&a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,1,"loading"))}function I(e,t){if(1&e&&(a.ɵɵelementStart(0,"button",29),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,C,2,3,"i",30),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"span"),a.ɵɵtext(5),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(),t=a.ɵɵreference(5);a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.loading),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",e.submitButtonText,"\n ")}}function E(e,t){1&e&&(a.ɵɵelementStart(0,"button",32),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"close"),"\n "))}function P(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",33),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().cancelRotate()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function O(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",33),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().rotateToken()})),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"rotateToken"),"\n "))}class k{constructor(e,t,n,i){this.userVerificationService=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.lastSyncDate=null}copy(){this.platformUtilsService.copyToClipboard(this.clientSecret)}submit(){return i(this,void 0,void 0,(function*(){if(this.showRotateScreen){this.formPromise=this.userVerificationService.buildRequest(this.masterPassword,o.OrganizationApiKeyRequest).then((e=>(e.type=r.OrganizationApiKeyType.BillingSync,this.apiService.postOrganizationRotateApiKey(this.organizationId,e))));const e=yield this.formPromise;yield this.load(e),this.showRotateScreen=!1,this.platformUtilsService.showToast("success",null,this.i18nService.t("billingSyncApiKeyRotated"))}else{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword,o.OrganizationApiKeyRequest).then((e=>(e.type=r.OrganizationApiKeyType.BillingSync,this.apiService.postOrganizationApiKey(this.organizationId,e))));const e=yield this.formPromise;yield this.load(e)}}))}load(e){return i(this,void 0,void 0,(function*(){this.clientSecret=e.apiKey,this.keyRevisionDate=e.revisionDate,this.hasBillingToken=!0;const t=yield this.apiService.getSponsorshipSyncStatus(this.organizationId);this.lastSyncDate=t.lastSyncDate}))}cancelRotate(){this.showRotateScreen=!1}rotateToken(){this.showRotateScreen=!0}dayDiff(e,t){const n=Math.abs(t.getTime()-e.getTime());return Math.round(n/864e5)}get submitButtonText(){return this.showRotateScreen?this.i18nService.t("rotateToken"):this.i18nService.t(this.hasBillingToken?"continue":"generateToken")}get showLastSyncText(){return this.lastSyncDate&&this.lastSyncDate>this.keyRevisionDate}get showAwaitingSyncText(){return this.lastSyncDate&&this.lastSyncDate<=this.keyRevisionDate}get daysBetween(){return this.dayDiff(this.keyRevisionDate,new Date)}}t.BillingSyncApiKeyComponent=k,k.ɵfac=function(e){return new(e||k)(a.ɵɵdirectiveInject(s.UserVerificationService),a.ɵɵdirectiveInject(l.ApiService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.I18nService))},k.ɵcmp=a.ɵɵdefineComponent({type:k,selectors:[["app-billing-sync-api-key"]],decls:44,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","billingSyncApiKeyTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","billingSyncApiKeyTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange",4,"ngIf"],[4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","class","btn btn-outline-secondary","data-dismiss","modal",4,"ngIf"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],["type","warning"],["for","clientSecret"],[1,"input-group"],["id","clientSecret","type","text","name","clientSecret","disabled","",1,"form-control","text-monospace",3,"ngModel","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["class","small text-muted mt-2",4,"ngIf"],["class","small text-danger mt-2",4,"ngIf"],[1,"small","text-muted","mt-2"],[1,"font-weight-semibold"],[1,"small","text-danger","mt-2"],[1,"bwi","bwi-error"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["class","bwi bwi-spinner bwi-spin",3,"title",4,"ngIf"],[1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"button",6),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span",7),a.ɵɵtext(17,"×"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"div",8),a.ɵɵtext(22,"\n "),a.ɵɵtemplate(23,y,2,1,"app-user-verification",9),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,x,10,6,"ng-container",10),a.ɵɵtext(26,"\n\n "),a.ɵɵtemplate(27,w,27,9,"div",10),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"div",11),a.ɵɵtext(31,"\n "),a.ɵɵtemplate(32,I,7,3,"button",12),a.ɵɵtext(33,"\n "),a.ɵɵtemplate(34,E,3,3,"button",13),a.ɵɵtext(35,"\n "),a.ɵɵtemplate(36,P,3,3,"button",14),a.ɵɵtext(37,"\n "),a.ɵɵtemplate(38,O,3,3,"button",14),a.ɵɵtext(39,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n")),2&e&&(a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,10,t.hasBillingToken?"viewBillingSyncToken":"generateBillingSyncToken"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(14,12,"close")),a.ɵɵadvance(10),a.ɵɵproperty("ngIf",!t.clientSecret),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&!t.showRotateScreen),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!t.clientSecret||t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.showRotateScreen),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.clientSecret&&!t.showRotateScreen))},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.NgIf,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel,f.CalloutComponent],pipes:[g.I18nPipe,h.DatePipe],encapsulation:2})},61857:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePlanComponent=void 0;const r=n(32621),o=(n(36631),n(47937)),a=n(96066),s=n(32621),l=n(36631),c=n(8863),d=n(28360),p=n(99729);class u{constructor(e){this.logService=e,this.onChanged=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.defaultUpgradePlan=o.PlanType.FamiliesAnnually,this.defaultUpgradeProduct=a.ProductType.Families}submit(){return i(this,void 0,void 0,(function*(){try{this.onChanged.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}}t.ChangePlanComponent=u,u.ɵfac=function(e){return new(e||u)(s.ɵɵdirectiveInject(l.LogService))},u.ɵcmp=s.ɵɵdefineComponent({type:u,selectors:[["app-change-plan"]],inputs:{organizationId:"organizationId"},outputs:{onChanged:"onChanged",onCanceled:"onCanceled"},decls:24,vars:14,consts:[[1,"card","card-org-plans"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"mb-0"],[3,"showFree","showCancel","plan","product","organizationId","onCanceled"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"button",2),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(5,"i18n"),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"span",3),s.ɵɵtext(8,"×"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"h2",4),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"p",5),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"app-organization-plans",6),s.ɵɵlistener("onCanceled",(function(){return t.cancel()})),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(5,8,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,10,"changeBillingPlan")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,12,"changeBillingPlanUpgrade")),s.ɵɵadvance(3),s.ɵɵproperty("showFree",!1)("showCancel",!0)("plan",t.defaultUpgradePlan)("product",t.defaultUpgradeProduct)("organizationId",t.organizationId))},directives:[c.A11yTitleDirective,d.OrganizationPlansComponent],pipes:[p.I18nPipe],encapsulation:2})},5092:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteOrganizationComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(51554),n(36631),n(63513),n(73828),n(57055),n(32773)),a=n(82769),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(57055),u=n(36631),m=n(45330),h=n(63513),v=n(57490),f=n(96832),g=n(56820),y=n(8863),x=n(51626),S=n(4158),b=n(99729);function w(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"orgCreatedSponsorshipInvalid"),"\n "))}function C(e,t){if(1&e&&(s.ɵɵelementStart(0,"li"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(1),s.ɵɵtextInterpolate2("\n ",e.count," ",s.ɵɵpipeBind1(2,2,e.localizationKey),"\n ")}}function I(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementStart(3,"ul"),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,C,3,4,"li",20),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,3,"deletingOrganizationContentWarning",e.organizationName),"\n "),s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.organizationContentSummary.itemCountByType),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,6,"deletingOrganizationActiveUserAccountsWarning"),"\n ")}}function E(e,t){if(1&e&&(s.ɵɵtext(0,"\n "),s.ɵɵtemplate(1,I,9,8,"ng-container",19),s.ɵɵtext(2,"\n ")),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵproperty("ngIf",e.organizationContentSummary.totalItemCount>0)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",3,4),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",5),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"h2",6),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"button",7),s.ɵɵpipe(10,"i18n"),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"span",8),s.ɵɵtext(13,"×"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",9),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"app-callout",10),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"p",11),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,w,3,3,"ng-container",12),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,E,3,1,"ng-template",null,13,s.ɵɵtemplateRefExtractor),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"app-user-verification",14),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().masterPassword=t})),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"div",15),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"button",16),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"i",17),s.ɵɵpipe(40,"i18n"),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"span"),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"button",18),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵreference(28),n=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",n.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,11,"deleteOrganization")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(10,13,"close")),s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(21,15,"deletingOrganizationIsPermanentWarning",n.organizationName)),s.ɵɵadvance(5),s.ɵɵproperty("ngIf","InvalidFamiliesForEnterprise"===n.deleteOrganizationRequestType)("ngIfElse",t),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",n.masterPassword),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(40,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,20,"deleteOrganization")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(49,22,"close"),"\n ")}}class O{constructor(e,t){this.singular=e,this.plural=t}getKey(e){return 1==e?this.singular:this.plural}}class k{constructor(e,t){this.count=e,this.localizationKeyOptions=t}get localizationKey(){return this.localizationKeyOptions.getKey(this.count)}}class A{constructor(){this.totalItemCount=0,this.itemCountByType=[]}}class T{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.logService=o,this.cipherService=a,this.organizationService=s,this.deleteOrganizationRequestType="RegularDelete",this.organizationContentSummary=new A,this.onSuccess=new r.EventEmitter}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.deleteOrganization(this.organizationId,e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("organizationDeleted"),this.i18nService.t("organizationDeletedDesc")),this.onSuccess.emit()}catch(e){this.logService.error(e)}}))}load(){return i(this,void 0,void 0,(function*(){this.organizationName=(yield this.organizationService.get(this.organizationId)).name,this.organizationContentSummary=yield this.buildOrganizationContentSummary(),this.loaded=!0}))}buildOrganizationContentSummary(){return i(this,void 0,void 0,(function*(){const e=new A,t=(yield this.cipherService.getAllFromApiForOrganization(this.organizationId)).filter((e=>null==e.deletedDate));if(t.length<1)return e;e.totalItemCount=t.length;for(const n of a.Utils.iterateEnum(o.CipherType)){const i=this.getOrganizationItemCountByType(t,n);i>0&&e.itemCountByType.push(new k(i,this.getOrganizationItemLocalizationKeysByType(o.CipherType[n])))}return e}))}getOrganizationItemCountByType(e,t){return e.filter((e=>e.type==t)).length}getOrganizationItemLocalizationKeysByType(e){return new O(`type${e}`,`type${e}Plural`)}}t.DeleteOrganizationComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.UserVerificationService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.CipherService),s.ɵɵdirectiveInject(h.OrganizationService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-delete-organization"]],outputs:{onSuccess:"onSuccess"},decls:8,vars:1,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteOrganizationTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["class","modal-content","ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteOrganizationTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["id","organizationDeleteDescription"],[4,"ngIf","ngIfElse"],["regularDelete",""],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[4,"ngIf"],[4,"ngFor","ngForOf"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,P,52,24,"form",2),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loaded))},directives:[v.NgIf,f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.A11yTitleDirective,x.CalloutComponent,S.UserVerificationComponent,f.DefaultValueAccessor,f.NgControlStatus,f.NgModel,v.NgForOf],pipes:[b.I18nPipe],encapsulation:2})},24547:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DownloadLicenseComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(73828),n(32621)),a=n(91674),s=n(73828),l=n(36631),c=n(96832),d=n(56820),p=n(8863),u=n(99729);class m{constructor(e,t,n){this.apiService=e,this.platformUtilsService=t,this.logService=n,this.onDownloaded=new r.EventEmitter,this.onCanceled=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.installationId&&""!==this.installationId)try{this.formPromise=this.apiService.getOrganizationLicense(this.organizationId,this.installationId);const e=yield this.formPromise,t=JSON.stringify(e,null,2);this.platformUtilsService.saveFile(window,t,null,"bitwarden_organization_license.json"),this.onDownloaded.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}}t.DownloadLicenseComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.LogService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-download-license"]],inputs:{organizationId:"organizationId"},outputs:{onDownloaded:"onDownloaded",onCanceled:"onCanceled"},decls:53,vars:24,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"row"],[1,"form-group","col-6"],[1,"d-flex"],["for","installationId"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/licensing-on-premise/#organization-account-sharing",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","installationId","type","text","name","InstallationId","required","",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"button",3),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵpipe(6,"i18n"),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"span",4),o.ɵɵtext(9,"×"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"h3",5),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",7),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",9),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"a",10),o.ɵɵpipe(27,"i18n"),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"i",11),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"input",12),o.ɵɵlistener("ngModelChange",(function(e){return t.installationId=e})),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"button",13),o.ɵɵtext(38,"\n "),o.ɵɵelement(39,"i",14),o.ɵɵpipe(40,"i18n"),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"span"),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"button",15),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵtext(48),o.ɵɵpipe(49,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(6,10,"cancel")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,12,"downloadLicense")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,14,"enterInstallationId")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(27,16,"learnMore")),o.ɵɵadvance(7),o.ɵɵproperty("ngModel",t.installationId),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(40,18,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(44,20,"submit")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(49,22,"cancel"),"\n ")}},directives:[c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective,c.DefaultValueAccessor,c.RequiredValidator,c.NgControlStatus,c.NgModel],pipes:[u.I18nPipe],encapsulation:2})},75051:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageSubscriptionHiddenComponent=void 0;const i=n(32621);class r{}t.ImageSubscriptionHiddenComponent=r,r.ɵfac=function(e){return new(e||r)},r.ɵcmp=i.ɵɵdefineComponent({type:r,selectors:[["app-image-org-subscription-hidden"]],decls:38,vars:0,consts:[["width","216","height","231","viewBox","0 0 216 231","fill","none","xmlns","http://www.w3.org/2000/svg"],["d","M133.356 85.6618C133.136 85.43 132.871 85.2457 132.577 85.1198C132.283 84.9939 131.968 84.93 131.648 84.9318H87.8482C87.5289 84.93 87.2113 84.9939 86.9175 85.1198C86.6237 85.2457 86.359 85.43 86.14 85.6618C85.9083 85.8808 85.7239 86.1473 85.598 86.4411C85.4721 86.7349 85.4082 87.0506 85.41 87.37V116.57C85.4192 118.793 85.8499 120.994 86.6802 123.056C87.4705 125.091 88.5326 127.011 89.8375 128.761C91.1789 130.515 92.6808 132.137 94.3233 133.612C95.8472 135.01 97.4532 136.318 99.1304 137.528C100.59 138.565 102.123 139.547 103.729 140.474C105.335 141.401 106.469 142.027 107.131 142.354C107.799 142.682 108.339 142.941 108.741 143.113C109.055 143.264 109.4 143.339 109.748 143.332C110.091 143.337 110.431 143.257 110.737 143.102C111.146 142.923 111.679 142.671 112.354 142.343C113.03 142.014 114.179 141.386 115.756 140.463C117.333 139.539 118.884 138.554 120.355 137.517C122.034 136.306 123.642 134.999 125.169 133.601C126.814 132.128 128.316 130.504 129.655 128.75C130.958 126.998 132.021 125.08 132.813 123.045C133.645 120.983 134.075 118.782 134.083 116.559V87.3591C134.085 87.0415 134.021 86.7276 133.895 86.4356C133.769 86.1436 133.586 85.8808 133.356 85.6618ZM127.71 116.836C127.71 127.421 109.748 136.514 109.748 136.514V91.1879H127.71V116.836Z","fill","var(--color-secondary-700)"],["d","M24.6216 122.3C24.7144 123.4 25.6819 124.217 26.7825 124.125C27.8832 124.032 28.7002 123.064 28.6074 121.964L24.6216 122.3ZM151.501 45.7445C152.57 45.4679 153.213 44.3768 152.936 43.3074L148.429 25.8809C148.152 24.8115 147.061 24.1688 145.992 24.4454C144.922 24.722 144.28 25.8131 144.556 26.8825L148.563 42.3728L133.073 46.3793C132.003 46.6559 131.361 47.747 131.637 48.8164C131.914 49.8858 133.005 50.5285 134.074 50.2519L151.501 45.7445ZM28.6074 121.964C26.6788 99.0874 34.4658 75.5543 51.9661 58.054L49.1377 55.2256C30.7695 73.5938 22.5982 98.2999 24.6216 122.3L28.6074 121.964ZM51.9661 58.054C78.5404 31.4797 119.036 27.3026 149.985 45.5315L152.015 42.0849C119.534 22.9534 77.0327 27.3306 49.1377 55.2256L51.9661 58.054Z","fill","var(--color-secondary-700)"],["d","M67.4747 185.062C66.4089 185.352 65.7801 186.451 66.0701 187.517L70.797 204.885C71.0871 205.951 72.1862 206.58 73.252 206.29C74.3179 205.999 74.9467 204.9 74.6567 203.834L70.455 188.396L85.8934 184.194C86.9592 183.904 87.5881 182.805 87.298 181.739C87.008 180.674 85.9088 180.045 84.843 180.335L67.4747 185.062ZM192.478 100.283C192.286 99.1952 191.248 98.4697 190.16 98.6625C189.072 98.8552 188.347 99.8931 188.54 100.981L192.478 100.283ZM166.138 172.225C139.813 198.55 99.8271 202.897 68.9932 185.255L67.0068 188.727C99.3669 207.242 141.333 202.687 168.966 175.054L166.138 172.225ZM188.54 100.981C192.985 126.07 185.516 152.847 166.138 172.225L168.966 175.054C189.307 154.713 197.142 126.603 192.478 100.283L188.54 100.981Z","fill","var(--color-secondary-700)"],["d","M37.726 108.132C39.283 92.1931 46.1655 76.6765 58.3734 64.4686C75.2893 47.5527 98.5583 40.8618 120.5 44.396","stroke","var(--color-secondary-700)","stroke-width","2","stroke-linecap","round"],["d","M180.595 119.132C179.653 136.119 172.693 152.834 159.717 165.811C144.44 181.088 123.982 188.025 104 186.623","stroke","var(--color-secondary-700)","stroke-width","2","stroke-linecap","round"],["x","153.5","y","56.1317","width","49","height","34","rx","2.5","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M153.5 63.6317V63.6317C153.5 66.9454 156.186 69.6317 159.5 69.6317H172.509M202.5 63.6317V63.6317C202.5 66.9454 199.814 69.6317 196.5 69.6317H183.491","stroke","var(--color-secondary-700)","stroke-width","3"],["id","path-8-inside-1_1000_26057","fill","white"],["x","172","y","65.6317","width","12","height","9","rx","1.25"],["x","172","y","65.6317","width","12","height","9","rx","1.25","stroke","var(--color-secondary-700)","stroke-width","6","mask","url(#path-8-inside-1_1000_26057)"],["d","M187 54.6317C187 54.6317 187 53.6317 187 52.6317C187 51.6317 186.053 50.6317 185.105 50.6317C184.158 50.6317 171.842 50.6317 170.895 50.6317C169.947 50.6317 169 51.6317 169 52.6317C169 53.6317 169 54.6317 169 54.6317","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","48","cy","141","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M64.9935 168.5H64.9126H64.8318H64.7512H64.6708H64.5905H64.5104H64.4304H64.3506H64.2709H64.1914H64.1121H64.0329H63.9538H63.8749H63.7962H63.7176H63.6392H63.5609H63.4828H63.4048H63.3269H63.2492H63.1717H63.0943H63.017H62.9399H62.8629H62.7861H62.7094H62.6329H62.5565H62.4802H62.4041H62.3281H62.2523H62.1766H62.101H62.0256H61.9503H61.8751H61.8001H61.7252H61.6504H61.5758H61.5013H61.4269H61.3527H61.2786H61.2046H61.1308H61.0571H60.9835H60.91H60.8367H60.7635H60.6904H60.6175H60.5446H60.4719H60.3993H60.3269H60.2545H60.1823H60.1102H60.0382H59.9664H59.8946H59.823H59.7515H59.6801H59.6088H59.5376H59.4666H59.3956H59.3248H59.2541H59.1835H59.113H59.0426H58.9724H58.9022H58.8322H58.7622H58.6924H58.6226H58.553H58.4835H58.4141H58.3448H58.2756H58.2065H58.1375H58.0686H57.9998H57.9311H57.8625H57.794H57.7256H57.6572H57.589H57.5209H57.4529H57.385H57.3172H57.2494H57.1818H57.1142H57.0468H56.9794H56.9121H56.8449H56.7779H56.7108H56.6439H56.5771H56.5103H56.4437H56.3771H56.3106H56.2442H56.1779H56.1117H56.0455H55.9794H55.9134H55.8475H55.7817H55.7159H55.6502H55.5846H55.5191H55.4537H55.3883H55.323H55.2578H55.1926H55.1275H55.0625H54.9976H54.9328H54.868H54.8032H54.7386H54.674H54.6095H54.5451H54.4807H54.4164H54.3521H54.2879H54.2238H54.1598H54.0958H54.0318H53.968H53.9042H53.8404H53.7767H53.7131H53.6495H53.586H53.5226H53.4592H53.3958H53.3325H53.2693H53.2061H53.143H53.0799H53.0169H52.9539H52.891H52.8281H52.7653H52.7025H52.6398H52.5771H52.5145H52.4519H52.3894H52.3269H52.2645H52.202H52.1397H52.0774H52.0151H51.9528H51.8907H51.8285H51.7664H51.7043H51.6423H51.5803H51.5183H51.4564H51.3945H51.3326H51.2708H51.209H51.1472H51.0855H51.0238H50.9621H50.9005H50.8389H50.7773H50.7157H50.6542H50.5927H50.5312H50.4698H50.4084H50.347H50.2856H50.2243H50.1629H50.1016H50.0404H49.9791H49.9178H49.8566H49.7954H49.7342H49.6731H49.6119H49.5508H49.4896H49.4285H49.3674H49.3064H49.2453H49.1842H49.1232H49.0622H49.0011H48.9401H48.8791H48.8181H48.7571H48.6962H48.6352H48.5742H48.5133H48.4523H48.3913H48.3304H48.2694H48.2085H48.1475H48.0866H48.0257H47.9647H47.9038H47.8428H47.7819H47.7209H47.6599H47.599H47.538H47.477H47.416H47.3551H47.2941H47.2331H47.172H47.111H47.05H46.9889H46.9279H46.8668H46.8057H46.7446H46.6835H46.6224H46.5612H46.5001H46.4389H46.3777H46.3165H46.2553H46.194H46.1328H46.0715H46.0102H45.9489H45.8875H45.8261H45.7647H45.7033H45.6418H45.5804H45.5189H45.4573H45.3958H45.3342H45.2726H45.2109H45.1493H45.0876H45.0258H44.9641H44.9023H44.8404H44.7786H44.7166H44.6547H44.5927H44.5307H44.4687H44.4066H44.3445H44.2823H44.2201H44.1578H44.0956H44.0332H43.9709H43.9084H43.846H43.7835H43.7209H43.6583H43.5957H43.533H43.4703H43.4075H43.3447H43.2818H43.2189H43.1559H43.0929H43.0298H42.9666H42.9034H42.8402H42.7769H42.7135H42.6501H42.5867H42.5231H42.4596H42.3959H42.3322H42.2685H42.2046H42.1408H42.0768H42.0128H41.9487H41.8846H41.8204H41.7562H41.6918H41.6274H41.563H41.4985H41.4339H41.3692H41.3045H41.2397H41.1748H41.1098H41.0448H40.9797H40.9146H40.8493H40.784H40.7186H40.6532H40.5876H40.522H40.4563H40.3905H40.3247H40.2588H40.1928H40.1267H40.0605H39.9942H39.9279H39.8615H39.795H39.7284H39.6617H39.5949H39.5281H39.4611H39.3941H39.327H39.2598H39.1925H39.1251H39.0576H38.9901H38.9224H38.8547H38.7868H38.7189H38.6508H38.5827H38.5145H38.4461H38.3777H38.3092H38.2406H38.1719H38.103H38.0341H37.9651H37.896H37.8267H37.7574H37.688H37.6184H37.5488H37.479H37.4092H37.3392H37.2691H37.199H37.1287H37.0583H36.9878H36.9171H36.8464H36.7755H36.7046H36.6335H36.5623H36.491H36.4196H36.3481H36.2764H36.2046H36.1328H36.0607H35.9886H35.9164H35.844H35.7715H35.6989H35.6262H35.5533H35.4803H35.4072H35.334H35.2606H35.1872H35.1135H35.0398H34.9659H34.8919H34.8178H34.7436H34.6692H34.5947H34.52H34.4452H34.3703H34.2952H34.2201H34.1447H34.0693H33.9937H33.9179H33.8421H33.7661H33.6899H33.6136H33.5372H33.4606H33.3839H33.3071H33.2301H33.1529H33.0756H32.9982H32.9206H32.8429H32.765H32.687H32.6088H32.5305H32.452H32.3734H32.2946H32.2157H32.1367H32.0574H31.978H31.8985H31.8188H31.739H31.659H31.5788H31.4985H31.418H31.3374H31.2566H31.1757H31.0946H31.0133H30.9318H30.8503H30.7685H30.6866H30.6045H30.5222H30.4398H30.3572H30.2745H30.1915C30.0489 168.5 29.9693 168.466 29.9164 168.433C29.8553 168.394 29.7779 168.322 29.702 168.192C29.5361 167.906 29.4608 167.48 29.5197 167.111C30.9235 158.322 38.6474 151.574 47.9925 151.574C57.3375 151.574 65.0615 158.322 66.4652 167.111C66.5751 167.799 66.4037 168.054 66.3124 168.149C66.1888 168.278 65.8364 168.5 64.9935 168.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","20","cy","141","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M36.9935 168.5H36.9126H36.8318H36.7512H36.6708H36.5905H36.5104H36.4304H36.3506H36.2709H36.1914H36.1121H36.0329H35.9538H35.8749H35.7962H35.7176H35.6392H35.5609H35.4828H35.4048H35.3269H35.2492H35.1717H35.0943H35.017H34.9399H34.8629H34.7861H34.7094H34.6329H34.5565H34.4802H34.4041H34.3281H34.2523H34.1766H34.101H34.0256H33.9503H33.8751H33.8001H33.7252H33.6504H33.5758H33.5013H33.4269H33.3527H33.2786H33.2046H33.1308H33.0571H32.9835H32.91H32.8367H32.7635H32.6904H32.6175H32.5446H32.4719H32.3993H32.3269H32.2545H32.1823H32.1102H32.0382H31.9664H31.8946H31.823H31.7515H31.6801H31.6088H31.5376H31.4666H31.3956H31.3248H31.2541H31.1835H31.113H31.0426H30.9724H30.9022H30.8322H30.7622H30.6924H30.6226H30.553H30.4835H30.4141H30.3448H30.2756H30.2065H30.1375H30.0686H29.9998H29.9311H29.8625H29.794H29.7256H29.6572H29.589H29.5209H29.4529H29.385H29.3172H29.2494H29.1818H29.1142H29.0468H28.9794H28.9121H28.8449H28.7779H28.7108H28.6439H28.5771H28.5103H28.4437H28.3771H28.3106H28.2442H28.1779H28.1117H28.0455H27.9794H27.9134H27.8475H27.7817H27.7159H27.6502H27.5846H27.5191H27.4537H27.3883H27.323H27.2578H27.1926H27.1275H27.0625H26.9976H26.9328H26.868H26.8032H26.7386H26.674H26.6095H26.5451H26.4807H26.4164H26.3521H26.2879H26.2238H26.1598H26.0958H26.0318H25.968H25.9042H25.8404H25.7767H25.7131H25.6495H25.586H25.5226H25.4592H25.3958H25.3325H25.2693H25.2061H25.143H25.0799H25.0169H24.9539H24.891H24.8281H24.7653H24.7025H24.6398H24.5771H24.5145H24.4519H24.3894H24.3269H24.2645H24.202H24.1397H24.0774H24.0151H23.9528H23.8907H23.8285H23.7664H23.7043H23.6423H23.5803H23.5183H23.4564H23.3945H23.3326H23.2708H23.209H23.1472H23.0855H23.0238H22.9621H22.9005H22.8389H22.7773H22.7157H22.6542H22.5927H22.5312H22.4698H22.4084H22.347H22.2856H22.2243H22.1629H22.1016H22.0404H21.9791H21.9178H21.8566H21.7954H21.7342H21.6731H21.6119H21.5508H21.4896H21.4285H21.3674H21.3064H21.2453H21.1842H21.1232H21.0622H21.0011H20.9401H20.8791H20.8181H20.7571H20.6962H20.6352H20.5742H20.5133H20.4523H20.3913H20.3304H20.2694H20.2085H20.1475H20.0866H20.0257H19.9647H19.9038H19.8428H19.7819H19.7209H19.6599H19.599H19.538H19.477H19.416H19.3551H19.2941H19.2331H19.172H19.111H19.05H18.9889H18.9279H18.8668H18.8057H18.7446H18.6835H18.6224H18.5612H18.5001H18.4389H18.3777H18.3165H18.2553H18.194H18.1328H18.0715H18.0102H17.9489H17.8875H17.8261H17.7647H17.7033H17.6418H17.5804H17.5189H17.4573H17.3958H17.3342H17.2726H17.2109H17.1493H17.0876H17.0258H16.9641H16.9023H16.8404H16.7786H16.7166H16.6547H16.5927H16.5307H16.4687H16.4066H16.3445H16.2823H16.2201H16.1578H16.0956H16.0332H15.9709H15.9084H15.846H15.7835H15.7209H15.6583H15.5957H15.533H15.4703H15.4075H15.3447H15.2818H15.2189H15.1559H15.0929H15.0298H14.9666H14.9034H14.8402H14.7769H14.7135H14.6501H14.5867H14.5231H14.4596H14.3959H14.3322H14.2685H14.2046H14.1408H14.0768H14.0128H13.9487H13.8846H13.8204H13.7562H13.6918H13.6274H13.563H13.4985H13.4339H13.3692H13.3045H13.2397H13.1748H13.1098H13.0448H12.9797H12.9146H12.8493H12.784H12.7186H12.6532H12.5876H12.522H12.4563H12.3905H12.3247H12.2588H12.1928H12.1267H12.0605H11.9942H11.9279H11.8615H11.795H11.7284H11.6617H11.5949H11.5281H11.4611H11.3941H11.327H11.2598H11.1925H11.1251H11.0576H10.9901H10.9224H10.8547H10.7868H10.7189H10.6508H10.5827H10.5145H10.4461H10.3777H10.3092H10.2406H10.1719H10.103H10.0341H9.9651H9.89597H9.82674H9.75741H9.68798H9.61843H9.54879H9.47904H9.40918H9.33921H9.26914H9.19896H9.12867H9.05826H8.98775H8.91713H8.8464H8.77555H8.70459H8.63351H8.56232H8.49102H8.4196H8.34807H8.27641H8.20464H8.13276H8.06075H7.98862H7.91638H7.84401H7.77152H7.69891H7.62617H7.55332H7.48034H7.40723H7.334H7.26064H7.18716H7.11355H7.03981H6.96594H6.89195H6.81782H6.74356H6.66918H6.59466H6.52H6.44522H6.3703H6.29525H6.22006H6.14474H6.06928H5.99368H5.91795H5.84208H5.76607H5.68992H5.61363H5.5372H5.46062H5.38391H5.30705H5.23005H5.15291H5.07562H4.99819H4.92061H4.84288H4.76501H4.68699H4.60882H4.5305H4.45203H4.37342H4.29465H4.21573H4.13665H4.05743H3.97805H3.89851H3.81882H3.73898H3.65898H3.57882H3.49851H3.41804H3.33741H3.25662H3.17566H3.09455H3.01328H2.93185H2.85025H2.76849H2.68657H2.60448H2.52223H2.43981H2.35722H2.27447H2.19155C2.04893 168.5 1.96927 168.466 1.91645 168.433C1.85532 168.394 1.77792 168.322 1.702 168.192C1.53613 167.906 1.46078 167.48 1.51975 167.111C2.92347 158.322 10.6474 151.574 19.9925 151.574C29.3375 151.574 37.0615 158.322 38.4652 167.111C38.5751 167.799 38.4037 168.054 38.3124 168.149C38.1888 168.278 37.8364 168.5 36.9935 168.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["cx","34","cy","154","r","10.5","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"],["d","M50.9935 181.5H50.9126H50.8318H50.7512H50.6708H50.5905H50.5104H50.4304H50.3506H50.2709H50.1914H50.1121H50.0329H49.9538H49.8749H49.7962H49.7176H49.6392H49.5609H49.4828H49.4048H49.3269H49.2492H49.1717H49.0943H49.017H48.9399H48.8629H48.7861H48.7094H48.6329H48.5565H48.4802H48.4041H48.3281H48.2523H48.1766H48.101H48.0256H47.9503H47.8751H47.8001H47.7252H47.6504H47.5758H47.5013H47.4269H47.3527H47.2786H47.2046H47.1308H47.0571H46.9835H46.91H46.8367H46.7635H46.6904H46.6175H46.5446H46.4719H46.3993H46.3269H46.2545H46.1823H46.1102H46.0382H45.9664H45.8946H45.823H45.7515H45.6801H45.6088H45.5376H45.4666H45.3956H45.3248H45.2541H45.1835H45.113H45.0426H44.9724H44.9022H44.8322H44.7622H44.6924H44.6226H44.553H44.4835H44.4141H44.3448H44.2756H44.2065H44.1375H44.0686H43.9998H43.9311H43.8625H43.794H43.7256H43.6572H43.589H43.5209H43.4529H43.385H43.3172H43.2494H43.1818H43.1142H43.0468H42.9794H42.9121H42.8449H42.7779H42.7108H42.6439H42.5771H42.5103H42.4437H42.3771H42.3106H42.2442H42.1779H42.1117H42.0455H41.9794H41.9134H41.8475H41.7817H41.7159H41.6502H41.5846H41.5191H41.4537H41.3883H41.323H41.2578H41.1926H41.1275H41.0625H40.9976H40.9328H40.868H40.8032H40.7386H40.674H40.6095H40.5451H40.4807H40.4164H40.3521H40.2879H40.2238H40.1598H40.0958H40.0318H39.968H39.9042H39.8404H39.7767H39.7131H39.6495H39.586H39.5226H39.4592H39.3958H39.3325H39.2693H39.2061H39.143H39.0799H39.0169H38.9539H38.891H38.8281H38.7653H38.7025H38.6398H38.5771H38.5145H38.4519H38.3894H38.3269H38.2645H38.202H38.1397H38.0774H38.0151H37.9528H37.8907H37.8285H37.7664H37.7043H37.6423H37.5803H37.5183H37.4564H37.3945H37.3326H37.2708H37.209H37.1472H37.0855H37.0238H36.9621H36.9005H36.8389H36.7773H36.7157H36.6542H36.5927H36.5312H36.4698H36.4084H36.347H36.2856H36.2243H36.1629H36.1016H36.0404H35.9791H35.9178H35.8566H35.7954H35.7342H35.6731H35.6119H35.5508H35.4896H35.4285H35.3674H35.3064H35.2453H35.1842H35.1232H35.0622H35.0011H34.9401H34.8791H34.8181H34.7571H34.6962H34.6352H34.5742H34.5133H34.4523H34.3913H34.3304H34.2694H34.2085H34.1475H34.0866H34.0257H33.9647H33.9038H33.8428H33.7819H33.7209H33.6599H33.599H33.538H33.477H33.416H33.3551H33.2941H33.2331H33.172H33.111H33.05H32.9889H32.9279H32.8668H32.8057H32.7446H32.6835H32.6224H32.5612H32.5001H32.4389H32.3777H32.3165H32.2553H32.194H32.1328H32.0715H32.0102H31.9489H31.8875H31.8261H31.7647H31.7033H31.6418H31.5804H31.5189H31.4573H31.3958H31.3342H31.2726H31.2109H31.1493H31.0876H31.0258H30.9641H30.9023H30.8404H30.7786H30.7166H30.6547H30.5927H30.5307H30.4687H30.4066H30.3445H30.2823H30.2201H30.1578H30.0956H30.0332H29.9709H29.9084H29.846H29.7835H29.7209H29.6583H29.5957H29.533H29.4703H29.4075H29.3447H29.2818H29.2189H29.1559H29.0929H29.0298H28.9666H28.9034H28.8402H28.7769H28.7135H28.6501H28.5867H28.5231H28.4596H28.3959H28.3322H28.2685H28.2046H28.1408H28.0768H28.0128H27.9487H27.8846H27.8204H27.7562H27.6918H27.6274H27.563H27.4985H27.4339H27.3692H27.3045H27.2397H27.1748H27.1098H27.0448H26.9797H26.9146H26.8493H26.784H26.7186H26.6532H26.5876H26.522H26.4563H26.3905H26.3247H26.2588H26.1928H26.1267H26.0605H25.9942H25.9279H25.8615H25.795H25.7284H25.6617H25.5949H25.5281H25.4611H25.3941H25.327H25.2598H25.1925H25.1251H25.0576H24.9901H24.9224H24.8547H24.7868H24.7189H24.6508H24.5827H24.5145H24.4461H24.3777H24.3092H24.2406H24.1719H24.103H24.0341H23.9651H23.896H23.8267H23.7574H23.688H23.6184H23.5488H23.479H23.4092H23.3392H23.2691H23.199H23.1287H23.0583H22.9878H22.9171H22.8464H22.7755H22.7046H22.6335H22.5623H22.491H22.4196H22.3481H22.2764H22.2046H22.1328H22.0607H21.9886H21.9164H21.844H21.7715H21.6989H21.6262H21.5533H21.4803H21.4072H21.334H21.2606H21.1872H21.1135H21.0398H20.9659H20.8919H20.8178H20.7436H20.6692H20.5947H20.52H20.4452H20.3703H20.2952H20.2201H20.1447H20.0693H19.9937H19.9179H19.8421H19.7661H19.6899H19.6136H19.5372H19.4606H19.3839H19.3071H19.2301H19.1529H19.0756H18.9982H18.9206H18.8429H18.765H18.687H18.6088H18.5305H18.452H18.3734H18.2946H18.2157H18.1367H18.0574H17.978H17.8985H17.8188H17.739H17.659H17.5788H17.4985H17.418H17.3374H17.2566H17.1757H17.0946H17.0133H16.9318H16.8503H16.7685H16.6866H16.6045H16.5222H16.4398H16.3572H16.2745H16.1915C16.045 181.5 15.9628 181.465 15.9092 181.432C15.8479 181.394 15.772 181.324 15.6978 181.198C15.5354 180.922 15.4617 180.509 15.5193 180.153C16.9196 171.496 24.6325 164.823 33.9925 164.823C43.3524 164.823 51.0654 171.496 52.4657 180.153C52.574 180.823 52.4052 181.064 52.319 181.152C52.1962 181.279 51.8413 181.5 50.9935 181.5Z","fill","var(--color-background)","stroke","var(--color-secondary-700)","stroke-width","3"]],template:function(e,t){1&e&&(i.ɵɵnamespaceSVG(),i.ɵɵelementStart(0,"svg",0),i.ɵɵtext(1,"\n "),i.ɵɵelement(2,"path",1),i.ɵɵtext(3,"\n "),i.ɵɵelement(4,"path",2),i.ɵɵtext(5,"\n "),i.ɵɵelement(6,"path",3),i.ɵɵtext(7,"\n "),i.ɵɵelement(8,"path",4),i.ɵɵtext(9,"\n "),i.ɵɵelement(10,"path",5),i.ɵɵtext(11,"\n "),i.ɵɵelement(12,"rect",6),i.ɵɵtext(13,"\n "),i.ɵɵelement(14,"path",7),i.ɵɵtext(15,"\n "),i.ɵɵelementStart(16,"mask",8),i.ɵɵtext(17,"\n "),i.ɵɵelement(18,"rect",9),i.ɵɵtext(19,"\n "),i.ɵɵelementEnd(),i.ɵɵtext(20,"\n "),i.ɵɵelement(21,"rect",10),i.ɵɵtext(22,"\n "),i.ɵɵelement(23,"path",11),i.ɵɵtext(24,"\n "),i.ɵɵelement(25,"circle",12),i.ɵɵtext(26,"\n "),i.ɵɵelement(27,"path",13),i.ɵɵtext(28,"\n "),i.ɵɵelement(29,"circle",14),i.ɵɵtext(30,"\n "),i.ɵɵelement(31,"path",15),i.ɵɵtext(32,"\n "),i.ɵɵelement(33,"circle",16),i.ɵɵtext(34,"\n "),i.ɵɵelement(35,"path",17),i.ɵɵtext(36,"\n"),i.ɵɵelementEnd(),i.ɵɵtext(37,"\n"))},encapsulation:2})},31627:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationBillingComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828);const r=n(98523),o=n(94285),a=n(85314),s=n(32621),l=n(91674),c=n(51554),d=n(68012),p=n(73828),u=n(36631),m=n(57490),h=n(449),v=n(51626),f=n(96832),g=n(56820),y=n(55732),x=n(8863),S=n(99729),b=function(e){return{"bwi-spin":e}};function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",3),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().load()})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(5,b,e.loading)),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",5),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",6),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",14),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).addCredit()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"addCredit"),"\n "))}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-add-credit",15),s.ɵɵlistener("onAdded",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closeAddCredit(!0)}))("onCanceled",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closeAddCredit(!1)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵproperty("organizationId",e.organizationId)}}function P(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noPaymentMethod")))}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-callout",18),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"p"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"form",19,20),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyBank()})),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"label",21),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",22),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",23),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",24),s.ɵɵtext(20,"$0."),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"input",25),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyAmount1=t})),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"label",26),s.ɵɵtext(27),s.ɵɵpipe(28,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",22),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",23),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",24),s.ɵɵtext(35,"$0."),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"input",27),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).verifyAmount2=t})),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",28),s.ɵɵtext(42,"\n "),s.ɵɵelement(43,"i",29),s.ɵɵpipe(44,"i18n"),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"span"),s.ɵɵtext(47),s.ɵɵpipe(48,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(9),t=s.ɵɵnextContext(3);s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,11,"verifyBankAccount")),s.ɵɵadvance(4),s.ɵɵtextInterpolate2("",s.ɵɵpipeBind1(5,13,"verifyBankAccountDesc")," ",s.ɵɵpipeBind1(6,15,"verifyBankAccountFailureWarning"),""),s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.verifyBankPromise),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(13,17,"amount","1")),s.ɵɵadvance(11),s.ɵɵproperty("ngModel",t.verifyAmount1),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(28,20,"amount","2")),s.ɵɵadvance(11),s.ɵɵproperty("ngModel",t.verifyAmount2),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(44,23,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(48,25,"verifyBankAccount"))}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"inAppPurchase")))}const A=function(e,t,n,i,r,o){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-money":n,"bwi-paypal text-primary":i,"bwi-apple text-muted":r,"bwi-google text-muted":o}};function T(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,O,52,27,"app-callout",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",17),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,k,3,3,"span",2),s.ɵɵtext(9),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSource.type===e.paymentMethodType.BankAccount&&e.paymentSource.needsVerification),s.ɵɵadvance(4),s.ɵɵproperty("ngClass",s.ɵɵpureFunction6(4,A,e.paymentSource.type===e.paymentMethodType.Card,e.paymentSource.type===e.paymentMethodType.BankAccount,e.paymentSource.type===e.paymentMethodType.Check,e.paymentSource.type===e.paymentMethodType.PayPal,e.paymentSource.type===e.paymentMethodType.AppleInApp,e.paymentSource.type===e.paymentMethodType.GoogleInApp)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSourceInApp),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.paymentSource.description,"\n ")}}function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",14),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changePayment()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,e.paymentSource?"changePaymentMethod":"addPaymentMethod"),"\n ")}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-adjust-payment",30),s.ɵɵlistener("onAdjusted",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closePayment(!0)}))("onCanceled",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).closePayment(!1)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵproperty("currentType",null!=e.paymentSource?e.paymentSource.type:null)("organizationId",e.organizationId)}}function D(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noInvoices")))}function R(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",36),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"paid"),"\n "))}function F(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",37),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"unpaid"),"\n "))}function U(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td"),s.ɵɵtext(3),s.ɵɵpipe(4,"date"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"td"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"a",33),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"i",34),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"a",35),s.ɵɵpipe(14,"i18n"),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"td"),s.ɵɵtext(20),s.ɵɵpipe(21,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"td"),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,R,5,3,"span",2),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,F,5,3,"span",2),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,9,e.date,"mediumDate")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("href",e.pdfUrl,s.ɵɵsanitizeUrl),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(9,12,"downloadInvoice")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("href",e.url,s.ɵɵsanitizeUrl),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(14,14,"viewInvoice")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(16,16,"invoiceNumber",e.number),""),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(21,19,e.amount,"$")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.paid),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.paid)}}function V(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,U,30,22,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.invoices)}}function N(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"noTransactions")))}function _(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"chargeNoun"),"\n "))}function j(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"refundNoun")))}const z=function(e,t,n,i){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-bitcoin text-warning":n,"bwi-paypal text-primary":i}};function H(e,t){if(1&e&&s.ɵɵelement(0,"i",40),2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(3);s.ɵɵproperty("ngClass",s.ɵɵpureFunction4(1,z,e.paymentMethodType===t.paymentMethodType.Card,e.paymentMethodType===t.paymentMethodType.BankAccount||e.paymentMethodType===t.paymentMethodType.WireTransfer,e.paymentMethodType===t.paymentMethodType.BitPay,e.paymentMethodType===t.paymentMethodType.PayPal))}}const L=function(e){return{"text-strike":e}};function K(e,t){if(1&e&&(s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td"),s.ɵɵtext(3),s.ɵɵpipe(4,"date"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"td"),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,_,3,3,"span",2),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,j,3,3,"span",2),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"td"),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,H,1,6,"i",38),s.ɵɵtext(16),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"td",39),s.ɵɵpipe(19,"i18n"),s.ɵɵtext(20),s.ɵɵpipe(21,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,8,e.createdDate,"mediumDate")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.type===n.transactionType.Charge||e.type===n.transactionType.Credit),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.type===n.transactionType.Refund),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.paymentMethodType),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.details,"\n "),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(19,11,e.refunded?"refunded":"")),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(16,L,e.refunded)),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(21,13,e.amount,"$"),"\n ")}}function q(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,K,23,18,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.transactions)}}function G(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h2"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"p",7),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"strong"),s.ɵɵtext(9),s.ɵɵpipe(10,"currency"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"p"),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,I,3,3,"button",8),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,E,2,1,"app-add-credit",9),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"h2",10),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,P,3,3,"p",2),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,T,11,11,"ng-container",2),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,M,3,3,"button",8),s.ɵɵtext(30,"\n "),s.ɵɵtemplate(31,B,2,2,"app-adjust-payment",11),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"h2",10),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵtemplate(37,D,3,3,"p",2),s.ɵɵtext(38,"\n "),s.ɵɵtemplate(39,V,7,1,"table",12),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"h2",10),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵtemplate(45,N,3,3,"p",2),s.ɵɵtext(46,"\n "),s.ɵɵtemplate(47,q,7,1,"table",12),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"small",13),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,17,e.isCreditBalance?"accountCredit":"accountBalance")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(10,19,e.creditOrBalance,"$")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,22,"creditAppliedDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.showAddCredit),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.showAddCredit),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,24,"paymentMethod")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.paymentSource),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.paymentSource),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.showAdjustPayment),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.showAdjustPayment),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,26,"invoices")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.invoices||!e.invoices.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.invoices&&e.invoices.length),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,28,"transactions")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.transactions||!e.transactions.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.transactions&&e.transactions.length),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("* ",s.ɵɵpipeBind2(51,30,"chargesStatement","BITWARDEN"),"")}}class W{constructor(e,t,n,i,a){this.apiService=e,this.i18nService=t,this.route=n,this.platformUtilsService=i,this.logService=a,this.loading=!1,this.firstLoaded=!1,this.showAdjustPayment=!1,this.showAddCredit=!1,this.paymentMethodType=r.PaymentMethodType,this.transactionType=o.TransactionType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.firstLoaded=!0}))))}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,null!=this.organizationId&&(this.billing=yield this.apiService.getOrganizationBilling(this.organizationId)),this.loading=!1)}))}verifyBank(){return i(this,void 0,void 0,(function*(){if(!this.loading)try{const e=new a.VerifyBankRequest;e.amount1=this.verifyAmount1,e.amount2=this.verifyAmount2,this.verifyBankPromise=this.apiService.postOrganizationVerifyBank(this.organizationId,e),yield this.verifyBankPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("verifiedBankAccount")),this.load()}catch(e){this.logService.error(e)}}))}addCredit(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("addCredit"),null,null,"warning"):this.showAddCredit=!0}closeAddCredit(e){this.showAddCredit=!1,e&&this.load()}changePayment(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("changePaymentMethod"),null,null,"warning"):this.showAdjustPayment=!0}closePayment(e){this.showAdjustPayment=!1,e&&this.load()}get isCreditBalance(){return null==this.billing||this.billing.balance<=0}get creditOrBalance(){return Math.abs(null!=this.billing?this.billing.balance:0)}get paymentSource(){return null!=this.billing?this.billing.paymentSource:null}get paymentSourceInApp(){return null!=this.paymentSource&&(this.paymentSource.type===r.PaymentMethodType.AppleInApp||this.paymentSource.type===r.PaymentMethodType.GoogleInApp)}get invoices(){return null!=this.billing?this.billing.invoices:null}get transactions(){return null!=this.billing?this.billing.transactions:null}}t.OrganizationBillingComponent=W,W.ɵfac=function(e){return new(e||W)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.ActivatedRoute),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.LogService))},W.ɵcmp=s.ɵɵdefineComponent({type:W,selectors:[["app-org-billing"]],decls:13,vars:6,consts:[[1,"page-header","d-flex"],["class","btn btn-sm btn-outline-primary ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],[1,"btn","btn-sm","btn-outline-primary","ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"text-lg"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[3,"organizationId","onAdded","onCanceled",4,"ngIf"],[1,"spaced-header"],[3,"currentType","organizationId","onAdjusted","onCanceled",4,"ngIf"],["class","table mb-2",4,"ngIf"],[1,"text-muted"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[3,"organizationId","onAdded","onCanceled"],["type","warning",3,"title",4,"ngIf"],[1,"bwi","bwi-fw",3,"ngClass"],["type","warning",3,"title"],["ngNativeValidate","",1,"form-inline",3,"appApiAction","ngSubmit"],["verifyForm",""],["for","verifyAmount1",1,"sr-only"],[1,"input-group","mr-2"],[1,"input-group-prepend"],[1,"input-group-text"],["type","number","id","verifyAmount1","placeholder","xx","name","Amount1","min","1","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","verifyAmount2",1,"sr-only"],["type","number","id","verifyAmount2","placeholder","xx","name","Amount2","min","1","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-outline-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"currentType","organizationId","onAdjusted","onCanceled"],[1,"table","mb-2"],[4,"ngFor","ngForOf"],["target","_blank","rel","noopener",1,"mr-2",3,"href","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-file-pdf"],["target","_blank","rel","noopener",3,"href","title"],["aria-hidden","true",1,"bwi","bwi-check","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle","text-muted"],["class","bwi bwi-fw","aria-hidden","true",3,"ngClass",4,"ngIf"],[3,"ngClass","title"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,w,5,7,"button",1),s.ɵɵtext(7,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,C,9,6,"ng-container",2),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,G,53,33,"ng-container",2),s.ɵɵtext(12,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,4,"billing"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.firstLoaded),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.billing))},directives:[m.NgIf,m.NgClass,h.AddCreditComponent,v.CalloutComponent,f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,f.MinValidator,f.MaxValidator,f.NumberValueAccessor,f.DefaultValueAccessor,f.RequiredValidator,f.NgControlStatus,f.NgModel,y.AdjustPaymentComponent,m.NgForOf,x.A11yTitleDirective],pipes:[S.I18nPipe,m.CurrencyPipe,m.DatePipe],encapsulation:2})},2516:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationSubscriptionComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(51554),n(36631),n(45552),n(63513),n(73828),n(43497)),a=n(24643),s=n(47937),l=n(79977),c=n(6131),d=n(73738),p=n(32621),u=n(91674),m=n(73828),h=n(51554),v=n(45552),f=n(68012),g=n(63513),y=n(36631),x=n(64684),S=n(57490),b=n(75051),w=n(51626),C=n(56820),I=n(61857),E=n(76137),P=n(34959),O=n(24547),k=n(8863),A=n(13205),T=n(99729),M=["setupBillingSyncTemplate"],B=["rotateBillingSyncKeyTemplate"];function D(e,t){1&e&&(p.ɵɵelementStart(0,"small"),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",4),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",5),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function R(e,t){1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",6),p.ɵɵpipe(3,"i18n"),p.ɵɵtext(4,"\n "),p.ɵɵelementStart(5,"span",5),p.ɵɵtext(6),p.ɵɵpipe(7,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵelementContainerEnd()),2&e&&(p.ɵɵadvance(2),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(3,2,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",7),p.ɵɵtext(3,"\n "),p.ɵɵelement(4,"app-image-org-subscription-hidden"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"p",8),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"p"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n"),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext();p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind2(8,2,"billingManagedByProvider",e.userOrg.providerName)),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(12,5,"billingContactProviderForAssistance"))}}function U(e,t){1&e&&(p.ɵɵelementStart(0,"app-callout",10),p.ɵɵpipe(1,"i18n"),p.ɵɵtext(2),p.ɵɵpipe(3,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,2,"canceled")),p.ɵɵadvance(2),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(3,4,"subscriptionCanceled"),""))}function V(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-callout",10),p.ɵɵpipe(1,"i18n"),p.ɵɵtext(2,"\n "),p.ɵɵelementStart(3,"p"),p.ɵɵtext(4),p.ɵɵpipe(5,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"button",11,12),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).reinstate()})),p.ɵɵtext(9,"\n "),p.ɵɵelement(10,"i",13),p.ɵɵpipe(11,"i18n"),p.ɵɵtext(12,"\n "),p.ɵɵelementStart(13,"span"),p.ɵɵtext(14),p.ɵɵpipe(15,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(8),t=p.ɵɵnextContext(2);p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(1,6,"pendingCancellation")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(5,8,"subscriptionPendingCanceled")),p.ɵɵadvance(3),p.ɵɵproperty("appApiAction",t.reinstatePromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(11,10,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(15,12,"reinstateSubscription"))}}function N(e,t){1&e&&(p.ɵɵelementStart(0,"span",31),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(2,1,"pendingCancellation")))}function _(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"dt"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dd"),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"span",29),p.ɵɵtext(9),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵtemplate(11,N,3,3,"span",30),p.ɵɵtext(12,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementStart(14,"dt"),p.ɵɵtext(15),p.ɵɵpipe(16,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementStart(18,"dd"),p.ɵɵtext(19),p.ɵɵpipe(20,"date"),p.ɵɵpipe(21,"currency"),p.ɵɵelementEnd(),p.ɵɵtext(22,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,5,"status")),p.ɵɵadvance(6),p.ɵɵtextInterpolate(e.isSponsoredSubscription?"sponsored":e.subscription.status||"-"),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(16,7,"nextCharge")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",e.nextInvoice?p.ɵɵpipeBind2(20,9,e.nextInvoice.date,"mediumDate")+", "+p.ɵɵpipeBind2(21,12,e.nextInvoice.amount,"$"):"-","\n ")}}function j(e,t){if(1&e&&(p.ɵɵelementStart(0,"tr"),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"td"),p.ɵɵtext(3),p.ɵɵpipe(4,"currency"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"td"),p.ɵɵtext(7),p.ɵɵpipe(8,"currency"),p.ɵɵpipe(9,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementEnd()),2&e){const e=t.$implicit;p.ɵɵadvance(3),p.ɵɵtextInterpolate3("\n ",e.name," ",e.quantity>1?"×"+e.quantity:""," @\n ",p.ɵɵpipeBind2(4,5,e.amount,"$"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate2("",p.ɵɵpipeBind2(8,8,e.quantity*e.amount,"$")," /",p.ɵɵpipeBind1(9,11,e.interval),"")}}function z(e,t){if(1&e&&(p.ɵɵelementStart(0,"div",32),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"strong",33),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"table",34),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"tbody"),p.ɵɵtext(9,"\n "),p.ɵɵtemplate(10,j,11,13,"tr",35),p.ɵɵtext(11,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(12,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(4,2,"details")),p.ɵɵadvance(7),p.ɵɵproperty("ngForOf",e.subscription.items)}}function H(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",36),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"dl"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dt"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"dd"),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(15,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(7),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,2,"provider")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind2(12,4,"yourProviderIs",e.userOrg.providerName))}}function L(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).changePlan()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,"changeBillingPlan"),"\n "))}function K(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-change-plan",38),p.ɵɵlistener("onChanged",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeChangePlan(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeChangePlan(!1)})),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵproperty("organizationId",e.organizationId)}}function q(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",39),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"app-adjust-subscription",40),p.ɵɵlistener("onAdjusted",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).subscriptionAdjusted()})),p.ɵɵtext(5,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵproperty("seatPrice",e.seatPrice)("organizationId",e.organizationId)("interval",e.billingInterval)("currentSeatCount",e.seats)("maxAutoscaleSeats",e.maxAutoscaleSeats)}}function G(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",41,42),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).removeSponsorship()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",13),p.ɵɵpipe(4,"i18n"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"span"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext(3);p.ɵɵproperty("appApiAction",t.removeSponsorshipPromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(4,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,6,"removeSponsorship"))}}function W(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",24),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).adjustStorage(!0)})),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"button",45),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).adjustStorage(!1)})),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,2,"addStorage"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,4,"removeStorage"),"\n "))}function $(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"app-adjust-storage",46),p.ɵɵlistener("onAdjusted",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).closeStorage(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(4).closeStorage(!1)})),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(4);p.ɵɵproperty("storageGbPrice",e.storageGbPrice)("add",e.adjustStorageAdd)("organizationId",e.organizationId)("interval",e.billingInterval)}}function Y(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",39),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,W,10,6,"div",43),p.ɵɵtext(5,"\n "),p.ɵɵtemplate(6,$,1,4,"app-adjust-storage",44),p.ɵɵtext(7,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵproperty("ngIf",!e.showAdjustStorage),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showAdjustStorage)}}function Q(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",47),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).downloadLicense()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵproperty("disabled",e.showDownloadLicense),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,2,"downloadLicense"),"\n ")}}function J(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",45),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).manageBillingSync()})),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,e.hasBillingSyncToken?"manageBillingSync":"setUpBillingSync"),"\n ")}}function Z(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",39),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"app-download-license",48),p.ɵɵlistener("onDownloaded",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeDownloadLicense()}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeDownloadLicense()})),p.ɵɵelementEnd(),p.ɵɵtext(3,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(2),p.ɵɵproperty("organizationId",e.organizationId)}}function X(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"button",49,50),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).cancel()})),p.ɵɵtext(2,"\n "),p.ɵɵelement(3,"i",13),p.ɵɵpipe(4,"i18n"),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"span"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵreference(1),t=p.ɵɵnextContext(3);p.ɵɵproperty("appApiAction",t.cancelPromise)("disabled",e.loading),p.ɵɵadvance(3),p.ɵɵpropertyInterpolate("title",p.ɵɵpipeBind1(4,4,"loading")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(8,6,"cancelSubscription"))}}const ee=function(e){return{width:e}};function te(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",14),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"div",15),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"dl"),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"dt"),p.ɵɵtext(9),p.ɵɵpipe(10,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(11,"\n "),p.ɵɵelementStart(12,"dd"),p.ɵɵtext(13),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵtemplate(15,_,23,15,"ng-container",1),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(18,"\n "),p.ɵɵtemplate(19,z,14,4,"div",16),p.ɵɵtext(20,"\n "),p.ɵɵtemplate(21,H,16,7,"ng-container",1),p.ɵɵtext(22,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(23,"\n "),p.ɵɵelementContainerStart(24),p.ɵɵtext(25,"\n "),p.ɵɵtemplate(26,L,3,3,"button",17),p.ɵɵtext(27,"\n "),p.ɵɵtemplate(28,K,1,1,"app-change-plan",18),p.ɵɵtext(29,"\n "),p.ɵɵelementContainerEnd(),p.ɵɵtext(30,"\n "),p.ɵɵelementStart(31,"h2",19),p.ɵɵtext(32),p.ɵɵpipe(33,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(34,"\n "),p.ɵɵelementStart(35,"p",20),p.ɵɵtext(36),p.ɵɵelementEnd(),p.ɵɵtext(37,"\n "),p.ɵɵtemplate(38,q,8,5,"ng-container",1),p.ɵɵtext(39,"\n "),p.ɵɵtemplate(40,G,10,8,"button",21),p.ɵɵtext(41,"\n "),p.ɵɵelementStart(42,"h2",19),p.ɵɵtext(43),p.ɵɵpipe(44,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(45,"\n "),p.ɵɵelementStart(46,"p"),p.ɵɵtext(47),p.ɵɵpipe(48,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(49,"\n "),p.ɵɵelementStart(50,"div",22),p.ɵɵtext(51,"\n "),p.ɵɵelementStart(52,"div",23),p.ɵɵtext(53),p.ɵɵpipe(54,"percent"),p.ɵɵelementEnd(),p.ɵɵtext(55,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(56,"\n "),p.ɵɵtemplate(57,Y,9,2,"ng-container",1),p.ɵɵtext(58,"\n "),p.ɵɵtext(59,"\n "),p.ɵɵelementStart(60,"h2",19),p.ɵɵtext(61),p.ɵɵpipe(62,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(63,"\n "),p.ɵɵelementStart(64,"p",20),p.ɵɵtext(65),p.ɵɵpipe(66,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(67,"\n "),p.ɵɵelementStart(68,"div",24),p.ɵɵtext(69,"\n "),p.ɵɵtemplate(70,Q,3,4,"button",25),p.ɵɵtext(71,"\n "),p.ɵɵtemplate(72,J,3,3,"button",26),p.ɵɵtext(73,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(74,"\n "),p.ɵɵtemplate(75,Z,4,1,"div",27),p.ɵɵtext(76,"\n "),p.ɵɵelementStart(77,"h2",19),p.ɵɵtext(78),p.ɵɵpipe(79,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(80,"\n "),p.ɵɵelementStart(81,"p",20),p.ɵɵtext(82),p.ɵɵpipe(83,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(84,"\n "),p.ɵɵelementStart(85,"div",24),p.ɵɵtext(86,"\n "),p.ɵɵtemplate(87,X,10,8,"button",28),p.ɵɵtext(88,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(89,"\n "),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(9),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(10,25,"billingPlan")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.sub.plan.name),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.subscription),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null!=(null==e.userOrg?null:e.userOrg.providerId)),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.showChangePlanButton),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showChangePlan),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(33,27,"manageSubscription")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.subscriptionDesc),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription&&e.canAdjustSeats&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.isSponsoredSubscription),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(44,29,"storage")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind3(48,31,"subscriptionStorage",e.sub.maxStorageGb||0,e.sub.storageName||"0 MB")),p.ɵɵadvance(5),p.ɵɵproperty("ngStyle",p.ɵɵpureFunction1(45,ee,e.storageProgressWidth+"%")),p.ɵɵattribute("aria-valuenow",e.storagePercentage),p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(54,35,e.storagePercentage/100),"\n "),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),p.ɵɵadvance(4),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(62,37,"selfHostingTitle")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(66,39,"selfHostingEnterpriseOrganizationSectionCopy"),"\n "),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.canDownloadLicense),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.canManageBillingSync),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.showDownloadLicense),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(79,41,"additionalOptions")),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(83,43,"additionalOptionsDesc"),"\n "),p.ɵɵadvance(5),p.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel)}}function ne(e,t){1&e&&(p.ɵɵelementStart(0,"span",54),p.ɵɵtext(1,"\n "),p.ɵɵelement(2,"i",55),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,1,"licenseIsExpired"),"\n "))}function ie(e,t){if(1&e&&(p.ɵɵelementStart(0,"dd"),p.ɵɵtext(1),p.ɵɵpipe(2,"date"),p.ɵɵtemplate(3,ne,5,3,"span",53),p.ɵɵtext(4,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(2,2,e.sub.expiration,"mediumDate"),"\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.isExpired)}}function re(e,t){1&e&&(p.ɵɵelementStart(0,"dd"),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(2,1,"neverExpires")))}function oe(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div",56),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"div",57),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"button",58),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!1)})),p.ɵɵpipe(5,"i18n"),p.ɵɵtext(6,"\n "),p.ɵɵelementStart(7,"span",59),p.ɵɵtext(8,"×"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementStart(11,"h3",60),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵelementStart(15,"app-update-license",61),p.ɵɵlistener("onUpdated",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!0)}))("onCanceled",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).closeUpdateLicense(!1)})),p.ɵɵelementEnd(),p.ɵɵtext(16,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(17,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(4),p.ɵɵpropertyInterpolate("appA11yTitle",p.ɵɵpipeBind1(5,3,"cancel")),p.ɵɵadvance(8),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(13,5,"updateLicense")),p.ɵɵadvance(3),p.ɵɵproperty("organizationId",e.organizationId)}}function ae(e,t){if(1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"date"),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(5);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind2(2,1,e.userOrg.familySponsorshipLastSyncDate,"medium"),"\n ")}}function se(e,t){1&e&&(p.ɵɵelementStart(0,"span"),p.ɵɵtext(1),p.ɵɵpipe(2,"lowercase"),p.ɵɵpipe(3,"i18n"),p.ɵɵelementEnd()),2&e&&(p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,1,p.ɵɵpipeBind1(3,3,"never")),"\n "))}function le(e,t){if(1&e&&(p.ɵɵelementStart(0,"small",64),p.ɵɵtext(1),p.ɵɵpipe(2,"i18n"),p.ɵɵtemplate(3,ae,3,4,"span",1),p.ɵɵtext(4,"\n "),p.ɵɵtemplate(5,se,4,5,"span",1),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd()),2&e){const e=p.ɵɵnextContext(4);p.ɵɵadvance(1),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(2,3,"lastSync"),":\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null!=e.userOrg.familySponsorshipLastSyncDate),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",null==e.userOrg.familySponsorshipLastSyncDate)}}function ce(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementStart(0,"div"),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h2",62),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(5,"\n "),p.ɵɵelementStart(6,"p"),p.ɵɵtext(7),p.ɵɵpipe(8,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(9,"\n "),p.ɵɵelementStart(10,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(3).manageBillingSyncSelfHosted()})),p.ɵɵtext(11),p.ɵɵpipe(12,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(13,"\n "),p.ɵɵtemplate(14,le,7,5,"small",63),p.ɵɵtext(15,"\n "),p.ɵɵelementEnd()}if(2&e){const e=p.ɵɵnextContext(3);p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,4,"billingSync"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(8,6,"billingSyncDesc"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(12,8,"manageBillingSync"),"\n "),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.billingSyncSetUp)}}function de(e,t){if(1&e){const e=p.ɵɵgetCurrentView();p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"dl"),p.ɵɵtext(3,"\n "),p.ɵɵelementStart(4,"dt"),p.ɵɵtext(5),p.ɵɵpipe(6,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n "),p.ɵɵelementStart(8,"dd"),p.ɵɵtext(9),p.ɵɵelementEnd(),p.ɵɵtext(10,"\n "),p.ɵɵelementStart(11,"dt"),p.ɵɵtext(12),p.ɵɵpipe(13,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(14,"\n "),p.ɵɵtemplate(15,ie,5,5,"dd",1),p.ɵɵtext(16,"\n "),p.ɵɵtemplate(17,re,3,3,"dd",1),p.ɵɵtext(18,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(19,"\n "),p.ɵɵelementStart(20,"div"),p.ɵɵtext(21,"\n "),p.ɵɵelementStart(22,"button",37),p.ɵɵlistener("click",(function(){p.ɵɵrestoreView(e);return p.ɵɵnextContext(2).updateLicense()})),p.ɵɵtext(23),p.ɵɵpipe(24,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(25,"\n "),p.ɵɵelementStart(26,"a",51),p.ɵɵtext(27),p.ɵɵpipe(28,"i18n"),p.ɵɵelementEnd(),p.ɵɵtext(29,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(30,"\n "),p.ɵɵtemplate(31,oe,18,7,"div",52),p.ɵɵtext(32,"\n "),p.ɵɵtemplate(33,ce,16,10,"div",1),p.ɵɵtext(34,"\n "),p.ɵɵelementContainerEnd()}if(2&e){const e=p.ɵɵnextContext(2);p.ɵɵadvance(5),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(6,9,"billingPlan")),p.ɵɵadvance(4),p.ɵɵtextInterpolate(e.sub.plan.name),p.ɵɵadvance(3),p.ɵɵtextInterpolate(p.ɵɵpipeBind1(13,11,"expiration")),p.ɵɵadvance(3),p.ɵɵproperty("ngIf",e.sub.expiration),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.sub.expiration),p.ɵɵadvance(6),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(24,13,"updateLicense"),"\n "),p.ɵɵadvance(4),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(28,15,"manageSubscription"),"\n "),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",e.showUpdateLicense),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.showBillingSyncKey)}}function pe(e,t){if(1&e&&(p.ɵɵelementContainerStart(0),p.ɵɵtext(1,"\n "),p.ɵɵtemplate(2,U,4,6,"app-callout",9),p.ɵɵtext(3,"\n "),p.ɵɵtemplate(4,V,18,14,"app-callout",9),p.ɵɵtext(5,"\n "),p.ɵɵtemplate(6,te,90,47,"ng-container",1),p.ɵɵtext(7,"\n "),p.ɵɵtemplate(8,de,35,17,"ng-container",1),p.ɵɵtext(9,"\n"),p.ɵɵelementContainerEnd()),2&e){const e=p.ɵɵnextContext();p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscription&&e.subscription.cancelled),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",!e.selfHosted),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",e.selfHosted)}}function ue(e,t){}function me(e,t){}class he{constructor(e,t,n,i,r,o,a,s){this.apiService=e,this.platformUtilsService=t,this.i18nService=n,this.messagingService=i,this.route=r,this.organizationService=o,this.logService=a,this.modalService=s,this.loading=!1,this.firstLoaded=!1,this.adjustSeatsAdd=!0,this.showAdjustSeats=!1,this.showAdjustSeatAutoscale=!1,this.adjustStorageAdd=!0,this.showAdjustStorage=!1,this.showUpdateLicense=!1,this.showBillingSyncKey=!1,this.showDownloadLicense=!1,this.showChangePlan=!1,this.selfHosted=!1,this.selfHosted=t.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId,yield this.load(),this.firstLoaded=!0}))))}))}load(){return i(this,void 0,void 0,(function*(){if(this.loading)return;this.loading=!0,this.userOrg=yield this.organizationService.get(this.organizationId),this.userOrg.canManageBilling&&(this.sub=yield this.apiService.getOrganizationSubscription(this.organizationId));const e=yield this.apiService.getOrganizationApiKeyInformation(this.organizationId);this.hasBillingSyncToken=e.data.some((e=>e.keyType===o.OrganizationApiKeyType.BillingSync)),this.selfHosted&&(this.showBillingSyncKey=yield this.apiService.getCloudCommunicationsEnabled()),this.showBillingSyncKey&&(this.existingBillingSyncConnection=yield this.apiService.getOrganizationConnection(this.organizationId,a.OrganizationConnectionType.CloudBillingSync,l.BillingSyncConfigApi)),this.loading=!1}))}reinstate(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("reinstateConfirmation"),this.i18nService.t("reinstateSubscription"),this.i18nService.t("yes"),this.i18nService.t("cancel")))try{this.reinstatePromise=this.apiService.postOrganizationReinstate(this.organizationId),yield this.reinstatePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("reinstated")),this.load()}catch(e){this.logService.error(e)}}))}cancel(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(yield this.platformUtilsService.showDialog(this.i18nService.t("cancelConfirmation"),this.i18nService.t("cancelSubscription"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{this.cancelPromise=this.apiService.postOrganizationCancel(this.organizationId),yield this.cancelPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("canceledSubscription")),this.load()}catch(e){this.logService.error(e)}}))}changePlan(){return i(this,void 0,void 0,(function*(){this.showChangePlan=!this.showChangePlan}))}closeChangePlan(e){this.showChangePlan=!1}downloadLicense(){this.showDownloadLicense=!this.showDownloadLicense}manageBillingSync(){return i(this,void 0,void 0,(function*(){const[e]=yield this.modalService.openViewRef(d.BillingSyncApiKeyComponent,this.setupBillingSyncModalRef,(e=>{e.organizationId=this.organizationId,e.hasBillingToken=this.hasBillingSyncToken}));e.onClosed.subscribe((()=>i(this,void 0,void 0,(function*(){yield this.load()}))))}))}closeDownloadLicense(){this.showDownloadLicense=!1}updateLicense(){this.loading||(this.showUpdateLicense=!0)}closeUpdateLicense(e){this.showUpdateLicense=!1,e&&(this.load(),this.messagingService.send("updatedOrgLicense"))}subscriptionAdjusted(){this.load()}adjustStorage(e){this.adjustStorageAdd=e,this.showAdjustStorage=!0}closeStorage(e){this.showAdjustStorage=!1,e&&this.load()}removeSponsorship(){return i(this,void 0,void 0,(function*(){if(yield this.platformUtilsService.showDialog(this.i18nService.t("removeSponsorshipConfirmation"),this.i18nService.t("removeSponsorship"),this.i18nService.t("remove"),this.i18nService.t("cancel"),"warning"))try{this.removeSponsorshipPromise=this.apiService.deleteRemoveSponsorship(this.organizationId),yield this.removeSponsorshipPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("removeSponsorshipSuccess")),yield this.load()}catch(e){this.logService.error(e)}}))}manageBillingSyncSelfHosted(){return i(this,void 0,void 0,(function*(){this.billingSyncKeyRef=yield this.modalService.openViewRef(c.BillingSyncKeyComponent,this.billingSyncKeyViewContainerRef,(e=>{var t,n,i;e.entityId=this.organizationId,e.existingConnectionId=null===(t=this.existingBillingSyncConnection)||void 0===t?void 0:t.id,e.billingSyncKey=null===(i=null===(n=this.existingBillingSyncConnection)||void 0===n?void 0:n.config)||void 0===i?void 0:i.billingSyncKey,e.setParentConnection=e=>{this.existingBillingSyncConnection=e,this.billingSyncKeyRef[0].close()}}))}))}get isExpired(){return null!=this.sub&&null!=this.sub.expiration&&new Date(this.sub.expiration)e.sponsoredSubscriptionItem))}get canDownloadLicense(){return this.sub.planType!==s.PlanType.Free&&null==this.subscription||null!=this.subscription&&!this.subscription.cancelled}get canManageBillingSync(){return!this.selfHosted&&(this.sub.planType===s.PlanType.EnterpriseAnnually||this.sub.planType===s.PlanType.EnterpriseMonthly||this.sub.planType===s.PlanType.EnterpriseAnnually2019||this.sub.planType===s.PlanType.EnterpriseMonthly2019)}get subscriptionDesc(){return this.sub.planType===s.PlanType.Free?this.i18nService.t("subscriptionFreePlan",this.sub.seats.toString()):this.sub.planType===s.PlanType.FamiliesAnnually||this.sub.planType===s.PlanType.FamiliesAnnually2019?this.isSponsoredSubscription?this.i18nService.t("subscriptionSponsoredFamiliesPlan",this.sub.seats.toString()):this.i18nService.t("subscriptionFamiliesPlan",this.sub.seats.toString()):this.sub.maxAutoscaleSeats===this.sub.seats&&null!=this.sub.seats?this.i18nService.t("subscriptionMaxReached",this.sub.seats.toString()):null==this.sub.maxAutoscaleSeats?this.i18nService.t("subscriptionUserSeatsUnlimitedAutoscale"):this.i18nService.t("subscriptionUserSeatsLimitedAutoscale",this.sub.maxAutoscaleSeats.toString())}get showChangePlanButton(){return null==this.subscription&&this.sub.planType===s.PlanType.Free&&!this.showChangePlan}get billingSyncSetUp(){var e;return null!=(null===(e=this.existingBillingSyncConnection)||void 0===e?void 0:e.id)}}t.OrganizationSubscriptionComponent=he,he.ɵfac=function(e){return new(e||he)(p.ɵɵdirectiveInject(u.ApiService),p.ɵɵdirectiveInject(m.PlatformUtilsService),p.ɵɵdirectiveInject(h.I18nService),p.ɵɵdirectiveInject(v.MessagingService),p.ɵɵdirectiveInject(f.ActivatedRoute),p.ɵɵdirectiveInject(g.OrganizationService),p.ɵɵdirectiveInject(y.LogService),p.ɵɵdirectiveInject(x.ModalService))},he.ɵcmp=p.ɵɵdefineComponent({type:he,selectors:[["app-org-subscription"]],viewQuery:function(e,t){if(1&e&&(p.ɵɵviewQuery(M,7,r.ViewContainerRef),p.ɵɵviewQuery(B,7,r.ViewContainerRef)),2&e){let e;p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.setupBillingSyncModalRef=e.first),p.ɵɵqueryRefresh(e=p.ɵɵloadQuery())&&(t.billingSyncKeyViewContainerRef=e.first)}},decls:21,vars:7,consts:[[1,"page-header"],[4,"ngIf"],["setupBillingSyncTemplate",""],["rotateBillingSyncKeyTemplate",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"tw-flex","tw-flex-col","tw-items-center","tw-text-info"],[1,"tw-font-bold"],["type","warning",3,"title",4,"ngIf"],["type","warning",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["reinstateBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"row"],[1,"col-4"],["class","col-8",4,"ngIf"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[3,"organizationId","onChanged","onCanceled",4,"ngIf"],[1,"spaced-header"],[1,"mb-4"],["type","button","class","btn btn-outline-danger btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","bg-success",3,"ngStyle"],[1,"d-flex"],["type","button","class","btn btn-outline-secondary",3,"disabled","click",4,"ngIf"],["type","button","class","btn btn-outline-secondary ml-1",3,"click",4,"ngIf"],["class","mt-3",4,"ngIf"],["type","button","class","btn btn-outline-danger btn-submit ml-1",3,"appApiAction","disabled","click",4,"ngIf"],[1,"text-capitalize"],["class","badge badge-warning",4,"ngIf"],[1,"badge","badge-warning"],[1,"col-8"],[1,"d-block","mb-1"],[1,"table"],[4,"ngFor","ngForOf"],[1,"col-sm"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[3,"organizationId","onChanged","onCanceled"],[1,"mt-3"],[3,"seatPrice","organizationId","interval","currentSeatCount","maxAutoscaleSeats","onAdjusted"],["type","button",1,"btn","btn-outline-danger","btn-submit",3,"appApiAction","disabled","click"],["removeSponsorshipBtn",""],["class","d-flex",4,"ngIf"],[3,"storageGbPrice","add","organizationId","interval","onAdjusted","onCanceled",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary","ml-1",3,"click"],[3,"storageGbPrice","add","organizationId","interval","onAdjusted","onCanceled"],["type","button",1,"btn","btn-outline-secondary",3,"disabled","click"],[3,"organizationId","onDownloaded","onCanceled"],["type","button",1,"btn","btn-outline-danger","btn-submit","ml-1",3,"appApiAction","disabled","click"],["cancelBtn",""],["href","https://vault.bitwarden.com","target","_blank","rel","noopener",1,"btn","btn-outline-secondary"],["class","card mt-3",4,"ngIf"],["class","text-danger ml-2",4,"ngIf"],[1,"text-danger","ml-2"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle"],[1,"card","mt-3"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"organizationId","onUpdated","onCanceled"],[1,"mt-5"],["class","form-text text-muted",4,"ngIf"],[1,"form-text","text-muted"]],template:function(e,t){1&e&&(p.ɵɵelementStart(0,"div",0),p.ɵɵtext(1,"\n "),p.ɵɵelementStart(2,"h1"),p.ɵɵtext(3),p.ɵɵpipe(4,"i18n"),p.ɵɵtemplate(5,D,9,6,"small",1),p.ɵɵtext(6,"\n "),p.ɵɵelementEnd(),p.ɵɵtext(7,"\n"),p.ɵɵelementEnd(),p.ɵɵtext(8,"\n"),p.ɵɵtemplate(9,R,9,6,"ng-container",1),p.ɵɵtext(10,"\n\n"),p.ɵɵtemplate(11,F,15,7,"ng-container",1),p.ɵɵtext(12,"\n\n"),p.ɵɵtemplate(13,pe,10,4,"ng-container",1),p.ɵɵtext(14,"\n"),p.ɵɵtemplate(15,ue,0,0,"ng-template",null,2,p.ɵɵtemplateRefExtractor),p.ɵɵtext(17,"\n"),p.ɵɵtemplate(18,me,0,0,"ng-template",null,3,p.ɵɵtemplateRefExtractor),p.ɵɵtext(20,"\n")),2&e&&(p.ɵɵadvance(3),p.ɵɵtextInterpolate1("\n ",p.ɵɵpipeBind1(4,5,"subscription"),"\n "),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.firstLoaded&&t.loading),p.ɵɵadvance(4),p.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.firstLoaded&&!t.userOrg.canManageBilling),p.ɵɵadvance(2),p.ɵɵproperty("ngIf",t.sub))},directives:[S.NgIf,b.ImageSubscriptionHiddenComponent,w.CalloutComponent,C.ApiActionDirective,S.NgStyle,S.NgForOf,I.ChangePlanComponent,E.AdjustSubscription,P.AdjustStorageComponent,O.DownloadLicenseComponent,k.A11yTitleDirective,A.UpdateLicenseComponent],pipes:[T.I18nPipe,S.PercentPipe,S.DatePipe,S.CurrencyPipe,S.LowerCasePipe],encapsulation:2})},78027:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(68012),n(63513),n(73828);const r=n(32621),o=n(68012),a=n(63513),s=n(73828),l=n(57490),c=n(99729);function d(e,t){1&e&&(r.ɵɵelementStart(0,"a",11),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"billing"),"\n "))}function p(e,t){1&e&&(r.ɵɵelementStart(0,"a",12),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"twoStepLogin"),"\n "))}class u{constructor(e,t,n){this.route=e,this.organizationService=t,this.platformUtilsService=n,this.access2fa=!1}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){const t=yield this.organizationService.get(e.organizationId);this.showBilling=!this.platformUtilsService.isSelfHost()&&t.canManageBilling,this.access2fa=t.use2fa}))))}}t.SettingsComponent=u,u.ɵfac=function(e){return new(e||u)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService),r.ɵɵdirectiveInject(s.PlatformUtilsService))},u.ɵcmp=r.ɵɵdefineComponent({type:u,selectors:[["app-org-settings"]],decls:36,vars:11,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],["routerLink","subscription","routerLinkActive","active",1,"list-group-item"],["routerLink","billing","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","two-factor","class","list-group-item","routerLinkActive","active",4,"ngIf"],[1,"col-9"],["routerLink","billing","routerLinkActive","active",1,"list-group-item"],["routerLink","two-factor","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,d,3,3,"a",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,p,3,3,"a",9),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",10),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"router-outlet"),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,5,"settings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,7,"myOrganization"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,9,"subscription"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.showBilling),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.access2fa))},directives:[o.RouterLinkWithHref,o.RouterLinkActive,l.NgIf,o.RouterOutlet],pipes:[c.I18nPipe],encapsulation:2})},38359:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorSetupComponent=void 0;n(68012),n(64684),n(91674),n(45552),n(62166),n(73569);const r=n(97374),o=n(71790),a=n(35906),s=n(32621),l=n(91674),c=n(64684),d=n(45552),p=n(62166),u=n(68012),m=n(73569),h=n(57490),v=n(20138),f=n(52767),g=n(48403),y=n(99729);function x(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"twoStepLoginDesc")))}function S(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"twoStepLoginOrganizationDesc")))}function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"bit-callout",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"button",13),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().recoveryCode()})),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,2,"twoStepLoginRecoveryWarning")),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,4,"viewRecoveryCode"),"\n "))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",14),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",15),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function C(e,t){1&e&&(s.ɵɵelementStart(0,"bit-callout",12),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"twoStepLoginPolicyUserWarning"),"\n"))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",23),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",15),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"enabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"enabled")))}function E(e,t){1&e&&s.ɵɵelement(0,"app-premium-badge")}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"li",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",17),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"img",18),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",19),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h3",20),s.ɵɵtext(10),s.ɵɵtemplate(11,I,9,6,"ng-container",1),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,E,1,0,"app-premium-badge",1),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",21),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"button",22),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext().manage(t.type)})),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵclassMap("mfaType"+e.type),s.ɵɵproperty("alt",e.name+" logo"),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",e.name,"\n "),s.ɵɵadvance(1),s.ɵɵproperty("ngIf",e.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.premium),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",e.description,"\n "),s.ɵɵadvance(4),s.ɵɵproperty("disabled",!n.canAccessPremium&&e.premium),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(21,9,"manage"),"\n ")}}function O(e,t){}function k(e,t){}function A(e,t){}function T(e,t){}function M(e,t){}function B(e,t){}const D=function(e){return{"mt-5":e}};class R extends a.TwoFactorSetupComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.route=r}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organizationId=t.organizationId,yield e.ngOnInit.call(this)}))))}))}manage(e){return i(this,void 0,void 0,(function*(){switch(e){case r.TwoFactorProviderType.OrganizationDuo:{const e=yield this.openModal(this.duoModalRef,o.TwoFactorDuoComponent);e.type=r.TwoFactorProviderType.OrganizationDuo,e.organizationId=this.organizationId,e.onUpdated.subscribe((e=>{this.updateStatus(e,r.TwoFactorProviderType.OrganizationDuo)}));break}}}))}getTwoFactorProviders(){return this.apiService.getTwoFactorOrganizationProviders(this.organizationId)}filterProvider(e){return e!==r.TwoFactorProviderType.OrganizationDuo}}t.TwoFactorSetupComponent=R,R.ɵfac=function(e){return new(e||R)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ModalService),s.ɵɵdirectiveInject(d.MessagingService),s.ɵɵdirectiveInject(p.PolicyService),s.ɵɵdirectiveInject(u.ActivatedRoute),s.ɵɵdirectiveInject(m.StateService))},R.ɵcmp=s.ɵɵdefineComponent({type:R,selectors:[["app-two-factor-setup"]],features:[s.ɵɵInheritDefinitionFeature],decls:44,vars:15,consts:[[1,"tabbed-header"],[4,"ngIf"],["type","warning",4,"ngIf"],[3,"ngClass"],[1,"list-group","list-group-2fa"],["class","list-group-item d-flex align-items-center",4,"ngFor","ngForOf"],["authenticatorTemplate",""],["recoveryTemplate",""],["duoTemplate",""],["emailTemplate",""],["yubikeyTemplate",""],["webAuthnTemplate",""],["type","warning"],["bit-button","","buttonType","secondary",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-fw","text-muted",3,"title"],[1,"sr-only"],[1,"list-group-item","d-flex","align-items-center"],[1,"logo-2fa","d-flex","justify-content-center"],[3,"alt"],[1,"mx-4"],[1,"mb-0"],[1,"ml-auto"],["bit-button","","buttonType","secondary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-fw",3,"title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,x,3,3,"p",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,S,3,3,"p",1),s.ɵɵtext(10,"\n"),s.ɵɵtemplate(11,b,10,6,"bit-callout",2),s.ɵɵtext(12,"\n"),s.ɵɵelementStart(13,"h2",3),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵtemplate(16,w,9,6,"small",1),s.ɵɵtext(17,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n"),s.ɵɵtemplate(19,C,3,3,"bit-callout",2),s.ɵɵtext(20,"\n"),s.ɵɵelementStart(21,"ul",4),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,P,24,11,"li",5),s.ɵɵtext(24,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n\n"),s.ɵɵtemplate(26,O,0,0,"ng-template",null,6,s.ɵɵtemplateRefExtractor),s.ɵɵtext(28,"\n"),s.ɵɵtemplate(29,k,0,0,"ng-template",null,7,s.ɵɵtemplateRefExtractor),s.ɵɵtext(31,"\n"),s.ɵɵtemplate(32,A,0,0,"ng-template",null,8,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n"),s.ɵɵtemplate(35,T,0,0,"ng-template",null,9,s.ɵɵtemplateRefExtractor),s.ɵɵtext(37,"\n"),s.ɵɵtemplate(38,M,0,0,"ng-template",null,10,s.ɵɵtemplateRefExtractor),s.ɵɵtext(40,"\n"),s.ɵɵtemplate(41,B,0,0,"ng-template",null,11,s.ɵɵtemplateRefExtractor),s.ɵɵtext(43,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,9,"twoStepLogin")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(13,D,!t.organizationId)),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(15,11,"providers"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showPolicyWarning),s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",t.providers))},directives:[h.NgIf,h.NgClass,h.NgForOf,v.CalloutComponent,f.ButtonComponent,g.PremiumBadgeComponent],pipes:[y.I18nPipe],encapsulation:2})},74155:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AcceptFamilySponsorshipComponent=void 0;const r=n(50009),o=n(32621),a=n(57490),s=n(99729);function l(e,t){1&e&&(o.ɵɵelementStart(0,"div",1),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"img",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",3),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",4),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"span",5),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(8),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(13,4,"loading")))}class c extends r.BaseAcceptComponent{constructor(){super(...arguments),this.failedShortMessage="inviteAcceptFailedShort",this.failedMessage="inviteAcceptFailed",this.requiredParameters=["email","token"]}authedHandler(e){return i(this,void 0,void 0,(function*(){this.router.navigate(["/setup/families-for-enterprise"],{queryParams:e})}))}unauthedHandler(e){return i(this,void 0,void 0,(function*(){e.register?this.router.navigate(["/register"],{queryParams:{email:e.email}}):this.router.navigate(["/login"],{queryParams:{email:e.email}})}))}}t.AcceptFamilySponsorshipComponent=c,c.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(c)))(t||c)}}(),c.ɵcmp=o.ɵɵdefineComponent({type:c,selectors:[["app-accept-family-sponsorship"]],features:[o.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[["class","mt-5 d-flex justify-content-center",4,"ngIf"],[1,"mt-5","d-flex","justify-content-center"],["alt","Bitwarden",1,"mb-4","logo","logo-themed"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,l,17,6,"div",0),o.ɵɵtext(1,"\n")),2&e&&o.ɵɵproperty("ngIf",t.loading)},directives:[a.NgIf],pipes:[s.I18nPipe],encapsulation:2})},72855:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.FamiliesForEnterpriseSetupComponent=void 0;const r=n(32621),o=(n(68012),n(14857)),a=(n(64684),n(47594),n(91674),n(51554),n(63513),n(73828),n(9724),n(22931)),s=n(47937),l=n(96066),c=n(75118),d=n(5092),p=n(28360),u=n(32621),m=n(68012),h=n(73828),v=n(51554),f=n(91674),g=n(9724),y=n(47594),x=n(63513),S=n(64684),b=n(57490),w=n(96832),C=n(56820),I=n(28360),E=n(99729),P=["deleteOrganizationTemplate"];function O(e,t){1&e&&(u.ɵɵelementStart(0,"div",5),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"i",6),u.ɵɵpipe(3,"i18n"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span",7),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(3,2,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,4,"loading")))}function k(e,t){1&e&&(u.ɵɵelementStart(0,"div",5),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"span"),u.ɵɵtext(3),u.ɵɵpipe(4,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(5,"\n "),u.ɵɵelementEnd()),2&e&&(u.ɵɵadvance(3),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(4,1,"badToken")))}function A(e,t){if(1&e&&(u.ɵɵelementStart(0,"option",18),u.ɵɵtext(1),u.ɵɵelementEnd()),2&e){const e=t.$implicit;u.ɵɵproperty("ngValue",e.id),u.ɵɵadvance(1),u.ɵɵtextInterpolate(e.name)}}function T(e,t){1&e&&(u.ɵɵelementStart(0,"div",19),u.ɵɵtext(1,"\n "),u.ɵɵelement(2,"app-organization-plans"),u.ɵɵtext(3,"\n "),u.ɵɵelementEnd())}function M(e,t){if(1&e&&(u.ɵɵelementStart(0,"div",10),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"button",20),u.ɵɵtext(3,"\n "),u.ɵɵelement(4,"i",21),u.ɵɵpipe(5,"i18n"),u.ɵɵtext(6,"\n "),u.ɵɵelementStart(7,"span"),u.ɵɵtext(8),u.ɵɵpipe(9,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(10,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(11,"\n "),u.ɵɵelementEnd()),2&e){u.ɵɵnextContext();const e=u.ɵɵreference(1);u.ɵɵadvance(2),u.ɵɵproperty("disabled",e.loading),u.ɵɵadvance(2),u.ɵɵpropertyInterpolate("title",u.ɵɵpipeBind1(5,3,"loading")),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(9,5,"acceptOffer"))}}function B(e,t){if(1&e){const e=u.ɵɵgetCurrentView();u.ɵɵelementStart(0,"form",8,9),u.ɵɵlistener("ngSubmit",(function(){u.ɵɵrestoreView(e);return u.ɵɵnextContext().submit()})),u.ɵɵtext(2,"\n "),u.ɵɵelementStart(3,"p"),u.ɵɵtext(4,"\n "),u.ɵɵelementStart(5,"span"),u.ɵɵtext(6),u.ɵɵpipe(7,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(9,"\n "),u.ɵɵelementStart(10,"div",10),u.ɵɵtext(11,"\n "),u.ɵɵelementStart(12,"label",11),u.ɵɵtext(13),u.ɵɵpipe(14,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n "),u.ɵɵelementStart(16,"select",12),u.ɵɵlistener("ngModelChange",(function(t){u.ɵɵrestoreView(e);return u.ɵɵnextContext().selectedFamilyOrganizationId=t})),u.ɵɵtext(17,"\n "),u.ɵɵelementStart(18,"option",13),u.ɵɵtext(19),u.ɵɵpipe(20,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(21,"\n "),u.ɵɵelementStart(22,"option",14),u.ɵɵtext(23),u.ɵɵpipe(24,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(25,"\n "),u.ɵɵtemplate(26,A,2,2,"option",15),u.ɵɵtext(27,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(28,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(29,"\n "),u.ɵɵtemplate(30,T,4,0,"div",16),u.ɵɵtext(31,"\n "),u.ɵɵtemplate(32,M,12,7,"div",17),u.ɵɵtext(33,"\n "),u.ɵɵelementEnd()}if(2&e){const e=u.ɵɵnextContext();u.ɵɵproperty("appApiAction",e.formPromise),u.ɵɵadvance(6),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(7,9,"acceptBitwardenFamiliesHelp")),u.ɵɵadvance(7),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(14,11,"sponsoredFamiliesSelectOffer")),u.ɵɵadvance(3),u.ɵɵproperty("ngModel",e.selectedFamilyOrganizationId),u.ɵɵadvance(3),u.ɵɵtextInterpolate1("-- ",u.ɵɵpipeBind1(20,13,"select")," --"),u.ɵɵadvance(4),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(24,15,"newFamiliesOrganization")),u.ɵɵadvance(3),u.ɵɵproperty("ngForOf",e.existingFamilyOrganizations),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",e.showNewOrganization),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!e.showNewOrganization)}}function D(e,t){}class R{constructor(e,t,n,i,r,o,a,s,l){this.router=e,this.platformUtilsService=t,this.i18nService=n,this.route=i,this.apiService=r,this.syncService=o,this.validationService=a,this.organizationService=s,this.modalService=l,this.loading=!0,this.badToken=!1,this.showNewOrganization=!1,this._selectedFamilyOrganizationId=""}set organizationPlansComponent(e){e&&(e.plan=s.PlanType.FamiliesAnnually,e.product=l.ProductType.Families,e.acceptingSponsorship=!0,e.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this)))}ngOnInit(){return i(this,void 0,void 0,(function*(){document.body.classList.remove("layout_frontend"),this.route.queryParams.pipe(o.first()).subscribe((e=>i(this,void 0,void 0,(function*(){if(null==e.token)return this.platformUtilsService.showToast("error",null,this.i18nService.t("sponsoredFamiliesAcceptFailed"),{timeout:1e4}),void this.router.navigate(["/"]);this.token=e.token,yield this.syncService.fullSync(!0),this.badToken=!(yield this.apiService.postPreValidateSponsorshipToken(this.token)),this.loading=!1,this.existingFamilyOrganizations=(yield this.organizationService.getAll()).filter((e=>e.planProductType===l.ProductType.Families)),0===this.existingFamilyOrganizations.length&&(this.selectedFamilyOrganizationId="createNew")}))))}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.doSubmit(this._selectedFamilyOrganizationId),yield this.formPromise,this.formPromise=null}))}get selectedFamilyOrganizationId(){return this._selectedFamilyOrganizationId}set selectedFamilyOrganizationId(e){this._selectedFamilyOrganizationId=e,this.showNewOrganization="createNew"===e}doSubmit(e){return i(this,void 0,void 0,(function*(){try{const t=new c.OrganizationSponsorshipRedeemRequest;t.planSponsorshipType=a.PlanSponsorshipType.FamiliesForEnterprise,t.sponsoredOrganizationId=e,yield this.apiService.postRedeemSponsorship(this.token,t),this.platformUtilsService.showToast("success",null,this.i18nService.t("sponsoredFamiliesOfferRedeemed")),yield this.syncService.fullSync(!0),this.router.navigate(["/"])}catch(t){this.showNewOrganization&&(yield this.modalService.openViewRef(d.DeleteOrganizationComponent,this.deleteModalRef,(t=>{t.organizationId=e,t.deleteOrganizationRequestType="InvalidFamiliesForEnterprise",t.onSuccess.subscribe((()=>{this.router.navigate(["/"])}))}))),this.validationService.showError(this.i18nService.t("sponsorshipTokenHasExpired"))}}))}onOrganizationCreateSuccess(e){return i(this,void 0,void 0,(function*(){yield this.doSubmit(e.organizationId)}))}}t.FamiliesForEnterpriseSetupComponent=R,R.ɵfac=function(e){return new(e||R)(u.ɵɵdirectiveInject(m.Router),u.ɵɵdirectiveInject(h.PlatformUtilsService),u.ɵɵdirectiveInject(v.I18nService),u.ɵɵdirectiveInject(m.ActivatedRoute),u.ɵɵdirectiveInject(f.ApiService),u.ɵɵdirectiveInject(g.SyncService),u.ɵɵdirectiveInject(y.ValidationService),u.ɵɵdirectiveInject(x.OrganizationService),u.ɵɵdirectiveInject(S.ModalService))},R.ɵcmp=u.ɵɵdefineComponent({type:R,selectors:[["families-for-enterprise-setup"]],viewQuery:function(e,t){if(1&e&&(u.ɵɵviewQuery(p.OrganizationPlansComponent,5),u.ɵɵviewQuery(P,7,r.ViewContainerRef)),2&e){let e;u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.organizationPlansComponent=e.first),u.ɵɵqueryRefresh(e=u.ɵɵloadQuery())&&(t.deleteModalRef=e.first)}},decls:19,vars:6,consts:[[1,"container","page-content"],[1,"page-header"],["class","mt-5 d-flex justify-content-center",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["deleteOrganizationTemplate",""],[1,"mt-5","d-flex","justify-content-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group","col-6"],["for","availableSponsorshipOrg"],["id","availableSponsorshipOrg","name","Available Sponsorship Organization","required","",1,"form-control",3,"ngModel","ngModelChange"],["value","","disabled",""],["value","createNew"],[3,"ngValue",4,"ngFor","ngForOf"],["class","col-12",4,"ngIf"],["class","form-group col-6",4,"ngIf"],[3,"ngValue"],[1,"col-12"],["type","submit",1,"btn","btn-primary","mt-2","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(u.ɵɵelementStart(0,"div",0),u.ɵɵtext(1,"\n "),u.ɵɵelementStart(2,"div",1),u.ɵɵtext(3,"\n "),u.ɵɵelementStart(4,"h1"),u.ɵɵtext(5),u.ɵɵpipe(6,"i18n"),u.ɵɵelementEnd(),u.ɵɵtext(7,"\n "),u.ɵɵelementEnd(),u.ɵɵtext(8,"\n "),u.ɵɵtemplate(9,O,9,6,"div",2),u.ɵɵtext(10,"\n "),u.ɵɵtemplate(11,k,6,3,"div",2),u.ɵɵtext(12,"\n "),u.ɵɵtemplate(13,B,34,17,"form",3),u.ɵɵtext(14,"\n"),u.ɵɵelementEnd(),u.ɵɵtext(15,"\n"),u.ɵɵtemplate(16,D,0,0,"ng-template",null,4,u.ɵɵtemplateRefExtractor),u.ɵɵtext(18,"\n")),2&e&&(u.ɵɵadvance(5),u.ɵɵtextInterpolate(u.ɵɵpipeBind1(6,4,"sponsoredFamiliesOffer")),u.ɵɵadvance(4),u.ɵɵproperty("ngIf",t.loading),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading&&t.badToken),u.ɵɵadvance(2),u.ɵɵproperty("ngIf",!t.loading&&!t.badToken))},directives:[b.NgIf,w.NgControlStatusGroup,w.NgForm,C.ApiActionDirective,w.SelectControlValueAccessor,w.RequiredValidator,w.NgControlStatus,w.NgModel,w.NgSelectOption,w.ɵNgSelectMultipleOption,b.NgForOf,I.OrganizationPlansComponent],pipes:[E.I18nPipe],encapsulation:2})},79002:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;n(96832),n(68012),n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055);const r=n(26140),o=n(32621),a=n(85714),s=n(51554),l=n(73828),c=n(97445),d=n(32034),p=n(68012),u=n(62166),m=n(36631),h=n(57055),v=n(96832),f=n(56820),g=n(57490),y=n(4158),x=n(51626),S=n(44995),b=n(99729);function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",13),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"vaultExportDisabled")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"personalVaultExportPolicyInEffect"),"\n "))}function C(e,t){if(1&e&&o.ɵɵelement(0,"app-export-scope-callout",14),2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("organizationId",e.organizationId)}}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",15),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("value",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class E extends r.ExportComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,a,s,l,c),this.route=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organizationId=e.organizationId})))),yield e.ngOnInit.call(this)}))}checkExportDisabled(){return i(this,void 0,void 0,(function*(){}))}getExportData(){return this.exportService.getOrganizationExport(this.organizationId,this.format)}getFileName(){return super.getFileName("org")}collectEvent(){return i(this,void 0,void 0,(function*(){}))}}t.ExportComponent=E,E.ɵfac=function(e){return new(e||E)(o.ɵɵdirectiveInject(a.CryptoService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.ExportService),o.ɵɵdirectiveInject(d.EventService),o.ɵɵdirectiveInject(p.ActivatedRoute),o.ɵɵdirectiveInject(u.PolicyService),o.ɵɵdirectiveInject(m.LogService),o.ɵɵdirectiveInject(h.UserVerificationService),o.ɵɵdirectiveInject(v.FormBuilder))},E.ɵcmp=o.ɵɵdefineComponent({type:E,selectors:[["app-org-export"]],features:[o.ɵɵInheritDefinitionFeature],decls:49,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"page-header"],["type","error",3,"title",4,"ngIf"],[3,"organizationId",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","format"],["id","format","name","Format","formControlName","format",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["ngDefaultControl","","formControlName","secret","name","secret"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","error",3,"title"],[3,"organizationId"],[3,"value"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"h1"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n\n "),o.ɵɵtemplate(10,w,4,6,"app-callout",3),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,C,1,1,"app-export-scope-callout",4),o.ɵɵtext(13,"\n\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,I,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",5),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"div",6),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"app-user-verification",10),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"button",11),o.ɵɵtext(39,"\n "),o.ɵɵelement(40,"i",12),o.ɵɵpipe(41,"i18n"),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"span"),o.ɵɵtext(44),o.ɵɵpipe(45,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.exportForm),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,10,"exportVault")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.disabledByPolicy),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.disabledByPolicy),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,12,"fileFormat")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.formatOptions),o.ɵɵadvance(14),o.ɵɵproperty("disabled",e.loading||t.exportForm.disabled),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(41,14,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(45,16,"exportVault"))}},directives:[v.NgControlStatusGroup,f.ApiActionDirective,v.FormGroupDirective,g.NgIf,v.SelectControlValueAccessor,v.NgControlStatus,v.FormControlName,g.NgForOf,y.UserVerificationComponent,v.DefaultValueAccessor,x.CalloutComponent,S.ExportScopeCalloutComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[b.I18nPipe],encapsulation:2})},44336:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExposedPasswordsReportComponent=void 0;n(68012),n(64684),n(42982),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(8489),o=n(32621),a=n(45330),s=n(42982),l=n(64684),c=n(45552),d=n(73569),p=n(63513),u=n(68012),m=n(44809),h=n(52767),v=n(57490),f=n(51626),g=n(18310),y=n(1142),x=n(39159),S=n(99729);function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noExposedPasswords"),"\n "))}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",19),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",21),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",22),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",21),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,w,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,C,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,I,9,6,"ng-container",7),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,E,9,6,"ng-container",7),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span",18),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵpipe(29,"number"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(28,7,"exposedXTimes",o.ɵɵpipeBind1(29,10,i.exposedPasswordMap.get(e.id))),"\n ")}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,32,12,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,4,"exposedPasswordsFound")),o.ɵɵproperty("useAlertRole",!0),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,6,"exposedPasswordsFoundDesc",o.ɵɵpipeBind1(6,9,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",5),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",6),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,11,"ng-container",7),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.ExposedPasswordsReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,r,s),this.organizationService=o,this.route=a}ngOnInit(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield this.checkAccess()}))))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.ExposedPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.AuditService),o.ɵɵdirectiveInject(l.ModalService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.StateService),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.ActivatedRoute),o.ɵɵdirectiveInject(m.PasswordRepromptService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-org-exposed-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:26,vars:14,consts:[[1,"page-header"],["bit-button","","buttonType","primary","type","button",1,"btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],[4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title","useAlertRole"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementStart(11,"button",1),o.ɵɵlistener("click",(function(){return t.load()})),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"i",2),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span"),o.ɵɵtext(17),o.ɵɵpipe(18,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n"),o.ɵɵtemplate(21,k,6,2,"div",3),o.ɵɵtext(22,"\n"),o.ɵɵtemplate(23,A,0,0,"ng-template",null,4,o.ɵɵtemplateRefExtractor),o.ɵɵtext(25,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,6,"exposedPasswordsReport")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,8,"exposedPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(14,10,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(18,12,"checkExposedPasswords")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.ButtonComponent,v.NgIf,f.CalloutComponent,v.NgForOf,g.IconComponent,y.StopClickDirective,x.StopPropDirective],pipes:[S.I18nPipe,v.DecimalPipe],encapsulation:2})},65347:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportComponent=void 0;n(68012),n(51554),n(11223),n(36631),n(63513),n(73828),n(62166);const r=n(56038),o=n(32621),a=n(51554),s=n(11223),l=n(68012),c=n(73828),d=n(62166),p=n(63513),u=n(36631),m=n(57490),h=n(96832),v=n(51626),f=n(99729);function g(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",18),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffectImports"),"\n"))}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",19),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",19),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"option",20),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,x,2,2,"option",9),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.importOptions)}}function b(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",22),o.ɵɵtext(3,"\n https://bitwarden.com/help/export-your-data/"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementContainerEnd())}function w(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",23),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-lastpass/"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementContainerEnd())}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the KeePassX desktop application, navigate to "Database" → "Export to CSV file" and\n save the CSV file.\n '),o.ɵɵelementContainerEnd())}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n In the Avira web vault, go to "Settings" → "My Data" → "Export data" and save the\n CSV file.\n '),o.ɵɵelementContainerEnd())}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n In the Blur web vault, click your username at the top and go to "Settings" → "Export\n Data", then click "Export CSV" for your "Accounts".\n '),o.ɵɵelementContainerEnd())}function P(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SaveInCloud desktop application, navigate to "File" → "Export" → "As XML"\n and save the XML file.\n '),o.ɵɵelementContainerEnd())}function O(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to "Settings" → "Export" button and save the file "As CSV".\n '),o.ɵɵelementContainerEnd())}function k(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the KeePass 2 desktop application, navigate to "File" → "Export" and select the\n "KeePass XML (2.x)" option.\n '),o.ɵɵelementContainerEnd())}function A(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Universal Password Manager desktop application, navigate to "Database" →\n "Export" and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function T(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to "Settings". Click the "Export accounts" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function M(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and\n click "Show me my data" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function B(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click\n "Export" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function D(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .json File" option. Click\n "Export" to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function R(e,t){1&e&&(o.ɵɵelementStart(0,"span"),o.ɵɵtext(1,"\n The process is exactly the same as importing from Google Chrome.\n "),o.ɵɵelementEnd())}function F(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,R,2,0,"span",10),o.ɵɵtext(3,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(4,"a",24),o.ɵɵtext(5,"\n https://bitwarden.com/help/import-from-chrome/"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("ngIf","chromecsv"!==e.format)}}function U(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",25),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-firefox/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function V(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",26),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-safari/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function N(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-1password/"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function _(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Dragon desktop application, navigate to "File" → "Export" → "To\n XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export"\n button and save the XML file.\n '),o.ɵɵelementContainerEnd())}function j(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Enpass desktop application, navigate to "File" → "Export" → "As CSV".\n Select "OK" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n '),o.ɵɵelementContainerEnd())}function z(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Enpass 6 desktop application, click the menu button and navigate to "File" →\n "Export". Select the ".json" file format option and save the JSON file.\n '),o.ɵɵelementContainerEnd())}function H(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Safe desktop application, navigate to "File" → "Export To" → "XML\n format..." and save the XML file.\n '),o.ɵɵelementContainerEnd())}function L(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log in to Dashlane, click on "My Account" → "Settings" → "Export file" and select\n "Export as a CSV file". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n '),o.ɵɵelementContainerEnd())}function K(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n "),o.ɵɵelementContainerEnd())}function q(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the mSecure desktop application, navigate to "File" → "Export" → "CSV File..."\n and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function G(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Sticky Password desktop application, navigate to "Menu" (top right) → "Export"\n → "Export all". Select the unencrypted format XML option and save the XML file.\n '),o.ɵɵelementContainerEnd())}function W(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n "App Settings". Click the "Export" button, enter your password and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function $(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to "Data" → "Export". Click the\n "download HTML+JSON" button to save the HTML file.\n '),o.ɵɵelementContainerEnd())}function Y(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) →\n "Options" → "Account & Data" and click the "Export" button. Select all of your data,\n change the "Format" to "CSV file" and then click the "Export" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n '),o.ɵɵelementContainerEnd())}function Q(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Passbolt web vault and navigate to the "Passwords" listing. Select all of the\n passwords you would like to export and click the "Export" button at the top of the listing.\n Choose the "csv (lastpass)" export format and click the "Export" button.\n '),o.ɵɵelementContainerEnd())}function J(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Ascendo DataVault desktop application, navigate to "Tools" → "Export". In the\n dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save\n the CSV file.\n '),o.ɵɵelementContainerEnd())}function Z(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Boss desktop application, navigate to "File" → "Export data" →\n "Password Boss JSON - not encrypted" and save the JSON file.\n '),o.ɵɵelementContainerEnd())}function X(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" → "Export Secrets".\n Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n '),o.ɵɵelementStart(2,"code"),o.ɵɵtext(3,"zoho_export.csv"),o.ɵɵelementEnd(),o.ɵɵtext(4,".\n "),o.ɵɵelementContainerEnd())}function ee(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to "Export" → "Export as CSV" and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function te(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore"\n section and click "Backup to CSV" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ne(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n "),o.ɵɵelementStart(2,"a",28),o.ɵɵtext(3,"GNOME Keyring Import/Export"),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n python script to your desktop as "),o.ɵɵelementStart(5,"code"),o.ɵɵtext(6,"pw_helper.py"),o.ɵɵelementEnd(),o.ɵɵtext(7,". Open terminal and run\n "),o.ɵɵelementStart(8,"code"),o.ɵɵtext(9,"chmod +rx Desktop/pw_helper.py"),o.ɵɵelementEnd(),o.ɵɵtext(10," and then\n "),o.ɵɵelementStart(11,"code"),o.ɵɵtext(12,"python Desktop/pw_helper.py export Desktop/my_passwords.json"),o.ɵɵelementEnd(),o.ɵɵtext(13,". Then upload the\n resulting "),o.ɵɵelementStart(14,"code"),o.ɵɵtext(15,"my_passwords.json"),o.ɵɵelementEnd(),o.ɵɵtext(16," file here to Bitwarden.\n "),o.ɵɵelementContainerEnd())}function ie(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Using the Password Agent desktop application navigate to "File" → "Export", select the\n "Fields to export" button and check all of the fields, change the "Output format" to "CSV",\n and then click the "Start" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function re(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Log into the Passpack website vault and navigate to "Settings" → "Export", then click the\n "Download" button to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function oe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open your Passman vault and click on "Settings" in the bottom left corner. In the "Settings"\n window switch to the "Export credentials" tab and choose "JSON" as the export type. Enter your\n vault\'s passphrase and click the "Export" button to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function ae(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to CSV file" option to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function se(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to JSON file" option to save the JSON file.\n '),o.ɵɵelementContainerEnd())}function le(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the F-Secure KEY desktop application and navigate to "Settings" → "Export\n Passwords". Select the "Export" button, enter your master password, and save the FSK file.\n '),o.ɵɵelementContainerEnd())}function ce(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Kaspersky Password Manager desktop application and navigate to "Settings" →\n "Import/Export". Locate the "Export to text file" section and select the "Export" button to\n save the TXT file.\n '),o.ɵɵelementContainerEnd())}function de(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the RememBear desktop application and navigate to "Settings" → "Account" →\n "Export". Enter your master password and select the "Export Anyway" button to save the CSV\n file.\n '),o.ɵɵelementContainerEnd())}function pe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the PasswordWallet desktop application and navigate to "File" → "Export" →\n "Visible entries to text file". Enter your password and select the "Ok" button to save the TXT\n file.\n '),o.ɵɵelementContainerEnd())}function ue(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Myki desktop browser extension and navigate to "Advanced" → "Export Accounts"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer\'s downloads folder.\n '),o.ɵɵelementContainerEnd())}function me(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n "),o.ɵɵelementContainerEnd())}function he(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the LogMeOnce browser extension, then navigate to "Open Menu" → "Export To" and\n select "CSV File" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ve(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the BlackBerry Password Keeper application, then navigate to "Settings" →\n "Import/Export". Select "Export Passwords" and follow the instructions on screen to save the\n unencrypted CSV file.\n '),o.ɵɵelementContainerEnd())}function fe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Buttercup desktop application and unlock your vault. Right click on your vault\'s icon\n and select "Export" to save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ge(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n Open the Codebook desktop application and log in. Navigate to "File" → "Export all", then\n click "Yes" on the dialog and save the CSV file.\n '),o.ɵɵelementContainerEnd())}function ye(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n "),o.ɵɵelementContainerEnd())}function xe(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,'\n From the Yoti browser extension, click on "Settings", then "Export Saved Logins" and save the\n CSV file.\n '),o.ɵɵelementContainerEnd())}function Se(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",21),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,5,0,"ng-container",10),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,w,5,0,"ng-container",10),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,C,2,0,"ng-container",10),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,I,2,0,"ng-container",10),o.ɵɵtext(9,"\n "),o.ɵɵtemplate(10,E,2,0,"ng-container",10),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,2,0,"ng-container",10),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,O,2,0,"ng-container",10),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,k,2,0,"ng-container",10),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,A,2,0,"ng-container",10),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,T,2,0,"ng-container",10),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,M,2,0,"ng-container",10),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,B,2,0,"ng-container",10),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,D,2,0,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,F,7,1,"ng-container",10),o.ɵɵtext(29,"\n "),o.ɵɵtemplate(30,U,5,0,"ng-container",10),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,V,5,0,"ng-container",10),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,N,5,0,"ng-container",10),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,_,2,0,"ng-container",10),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,j,2,0,"ng-container",10),o.ɵɵtext(39,"\n "),o.ɵɵtemplate(40,z,2,0,"ng-container",10),o.ɵɵtext(41,"\n "),o.ɵɵtemplate(42,H,2,0,"ng-container",10),o.ɵɵtext(43,"\n "),o.ɵɵtemplate(44,L,2,0,"ng-container",10),o.ɵɵtext(45,"\n "),o.ɵɵtemplate(46,K,2,0,"ng-container",10),o.ɵɵtext(47,"\n "),o.ɵɵtemplate(48,q,2,0,"ng-container",10),o.ɵɵtext(49,"\n "),o.ɵɵtemplate(50,G,2,0,"ng-container",10),o.ɵɵtext(51,"\n "),o.ɵɵtemplate(52,W,2,0,"ng-container",10),o.ɵɵtext(53,"\n "),o.ɵɵtemplate(54,$,2,0,"ng-container",10),o.ɵɵtext(55,"\n "),o.ɵɵtemplate(56,Y,2,0,"ng-container",10),o.ɵɵtext(57,"\n "),o.ɵɵtemplate(58,Q,2,0,"ng-container",10),o.ɵɵtext(59,"\n "),o.ɵɵtemplate(60,J,2,0,"ng-container",10),o.ɵɵtext(61,"\n "),o.ɵɵtemplate(62,Z,2,0,"ng-container",10),o.ɵɵtext(63,"\n "),o.ɵɵtemplate(64,X,5,0,"ng-container",10),o.ɵɵtext(65,"\n "),o.ɵɵtemplate(66,ee,2,0,"ng-container",10),o.ɵɵtext(67,"\n "),o.ɵɵtemplate(68,te,2,0,"ng-container",10),o.ɵɵtext(69,"\n "),o.ɵɵtemplate(70,ne,17,0,"ng-container",10),o.ɵɵtext(71,"\n "),o.ɵɵtemplate(72,ie,2,0,"ng-container",10),o.ɵɵtext(73,"\n "),o.ɵɵtemplate(74,re,2,0,"ng-container",10),o.ɵɵtext(75,"\n "),o.ɵɵtemplate(76,oe,2,0,"ng-container",10),o.ɵɵtext(77,"\n "),o.ɵɵtemplate(78,ae,2,0,"ng-container",10),o.ɵɵtext(79,"\n "),o.ɵɵtemplate(80,se,2,0,"ng-container",10),o.ɵɵtext(81,"\n "),o.ɵɵtemplate(82,le,2,0,"ng-container",10),o.ɵɵtext(83,"\n "),o.ɵɵtemplate(84,ce,2,0,"ng-container",10),o.ɵɵtext(85,"\n "),o.ɵɵtemplate(86,de,2,0,"ng-container",10),o.ɵɵtext(87,"\n "),o.ɵɵtemplate(88,pe,2,0,"ng-container",10),o.ɵɵtext(89,"\n "),o.ɵɵtemplate(90,ue,2,0,"ng-container",10),o.ɵɵtext(91,"\n "),o.ɵɵtemplate(92,me,2,0,"ng-container",10),o.ɵɵtext(93,"\n "),o.ɵɵtemplate(94,he,2,0,"ng-container",10),o.ɵɵtext(95,"\n "),o.ɵɵtemplate(96,ve,2,0,"ng-container",10),o.ɵɵtext(97,"\n "),o.ɵɵtemplate(98,fe,2,0,"ng-container",10),o.ɵɵtext(99,"\n "),o.ɵɵtemplate(100,ge,2,0,"ng-container",10),o.ɵɵtext(101,"\n "),o.ɵɵtemplate(102,ye,2,0,"ng-container",10),o.ɵɵtext(103,"\n "),o.ɵɵtemplate(104,xe,2,0,"ng-container",10),o.ɵɵtext(105,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵpropertyInterpolate("title",e.getFormatInstructionTitle()),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","bitwardencsv"===e.format||"bitwardenjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","lastpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepassxcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","aviracsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","blurcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","safeincloudxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","padlockcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepass2xml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","upmcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","saferpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","meldiumcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keepercsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","keeperjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","chromecsv"===e.format||"operacsv"===e.format||"vivaldicsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","firefoxcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","safaricsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","1password1pux"===e.format||"1password1pif"===e.format||"1passwordwincsv"===e.format||"1passwordmaccsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passworddragonxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","enpasscsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","enpassjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","pwsafexml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","dashlanecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","dashlanejson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","msecurecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","stickypasswordxml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","truekeycsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","clipperzhtml"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","roboformcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passboltcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","ascendocsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordbossjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","zohovaultcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","splashidcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passkeepcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","gnomejson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordagentcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passpackcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passmanjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","avastcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","avastjson"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","fsecurefsk"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","kasperskytxt"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","remembearcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","passwordwallettxt"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","mykicsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","securesafecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","logmeoncecsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","blackberrycsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","buttercupcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","codebookcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","encryptrcsv"===e.format),o.ɵɵadvance(2),o.ɵɵproperty("ngIf","yoticsv"===e.format)}}const be=function(e){return{manual:e}};class we extends r.ImportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,r,o,s),this.route=i,this.organizationService=a}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organizationId=t.organizationId,this.successNavigate=["organizations",this.organizationId,"vault"],yield e.ngOnInit.call(this),this.importBlockedByPolicy=!1}))));const t=yield this.organizationService.get(this.organizationId);this.organizationName=t.name}))}submit(){const e=Object.create(null,{submit:{get:()=>super.submit}});return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("importWarning",this.organizationName),this.i18nService.t("warning"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))&&e.submit.call(this)}))}}t.ImportComponent=we,we.ɵfac=function(e){return new(e||we)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.ImportService),o.ɵɵdirectiveInject(l.Router),o.ɵɵdirectiveInject(l.ActivatedRoute),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.PolicyService),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.LogService))},we.ɵcmp=o.ɵɵdefineComponent({type:we,selectors:[["app-org-import"]],features:[o.ɵɵInheritDefinitionFeature],decls:69,vars:31,consts:[[1,"page-header"],["type","info",4,"ngIf"],["ngNativeValidate","",3,"ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","type"],["id","type","name","Format","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[4,"ngIf"],["type","info",3,"title",4,"ngIf"],["for","file"],["type","file","id","file","name","file",1,"form-control-file",3,"disabled"],["for","fileContents"],["id","fileContents","name","FileContents",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info"],[3,"ngValue"],["value","-","disabled",""],["type","info",3,"title"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/export-your-data/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-lastpass/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-chrome/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-firefox/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-safari/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-1password/"],["target","_blank","rel","noopener","href","https://bit.ly/2GpOMTg"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵtemplate(7,g,3,3,"app-callout",1),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"div",4),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"div",5),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",6),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",7),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"select",8),o.ɵɵlistener("ngModelChange",(function(e){return t.format=e})),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,y,2,2,"option",9),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,S,6,1,"ng-container",10),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,Se,106,53,"app-callout",11),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"div",4),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",5),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",6),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"label",12),o.ɵɵtext(41),o.ɵɵpipe(42,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"input",13),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",6),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"label",14),o.ɵɵtext(52),o.ɵɵpipe(53,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"textarea",15),o.ɵɵlistener("ngModelChange",(function(e){return t.fileContents=e})),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"button",16),o.ɵɵtext(59,"\n "),o.ɵɵelement(60,"i",17),o.ɵɵpipe(61,"i18n"),o.ɵɵtext(62,"\n "),o.ɵɵelementStart(63,"span"),o.ɵɵtext(64),o.ɵɵpipe(65,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,17,"importData")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.importBlockedByPolicy),o.ɵɵadvance(12),o.ɵɵtextInterpolate1("1. ",o.ɵɵpipeBind1(20,19,"selectFormat"),""),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.format)("disabled",t.importBlockedByPolicy),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",t.featuredImportOptions),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.importOptions&&t.importOptions.length),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",t.format),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("2. ",o.ɵɵpipeBind1(42,21,"selectImportFile"),""),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.importBlockedByPolicy),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(53,23,"orCopyPasteFileContents")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.fileContents)("disabled",t.importBlockedByPolicy),o.ɵɵadvance(3),o.ɵɵproperty("disabled",t.loading||t.importBlockedByPolicy)("ngClass",o.ɵɵpureFunction1(29,be,t.importBlockedByPolicy)),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(61,25,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(65,27,"importData")))},directives:[m.NgIf,h.NgControlStatusGroup,h.NgForm,h.SelectControlValueAccessor,h.RequiredValidator,h.NgControlStatus,h.NgModel,m.NgForOf,h.DefaultValueAccessor,m.NgClass,v.CalloutComponent,h.NgSelectOption,h.ɵNgSelectMultipleOption],pipes:[f.I18nPipe],encapsulation:2})},86661:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InactiveTwoFactorReportComponent=void 0;n(68012),n(64684),n(45330),n(36631),n(45552),n(63513),n(44809),n(73569);const r=n(66916),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(36631),u=n(44809),m=n(63513),h=n(57490),v=n(51626),f=n(18310),g=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noInactive2fa"),"\n "))}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",18),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",19),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"a",20),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext().$implicit,t=o.ɵɵnextContext(3);o.ɵɵpropertyInterpolate("href",t.cipherDocs.get(e.id),o.ɵɵsanitizeUrl),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,2,"instructions"),"")}}function P(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",15),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,C,9,6,"ng-container",1),o.ɵɵtext(14,"\n "),o.ɵɵtemplate(15,I,9,6,"ng-container",1),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"br"),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"td",16),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,3,4,"a",17),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(10,7,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",n.cipherDocs.has(e.id))}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,28,9,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"inactive2faFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"inactive2faFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.InactiveTwoFactorReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,o,a),this.route=r,this.organizationService=s}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}}t.InactiveTwoFactorReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.LogService),o.ɵɵdirectiveInject(u.PasswordRepromptService),o.ɵɵdirectiveInject(m.OrganizationService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-inactive-two-factor-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"text-right"],["class","badge badge-primary","target","_blank","rel","noopener",3,"href",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["target","_blank","rel","noopener",1,"badge","badge-primary",3,"href"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,S,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,b,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,k,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,A,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"inactive2faReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"inactive2faReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,f.IconComponent,g.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},1128:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReusedPasswordsReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(99997),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(63513),u=n(44809),m=n(57490),h=n(51626),v=n(18310),f=n(1142),g=n(39159),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noReusedPasswords"),"\n "))}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",19),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",21),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,w,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,C,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,I,9,6,"ng-container",1),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,E,9,6,"ng-container",1),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span",18),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(28,7,"reusedXTimes",i.passwordUseMap.get(e.login.password)),"\n ")}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,P,31,10,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"reusedPasswordsFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"reusedPasswordsFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends r.ReusedPasswordsReportComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,a),this.route=r,this.organizationService=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.ReusedPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.PasswordRepromptService))},T.ɵcmp=o.ɵɵdefineComponent({type:T,selectors:[["app-reused-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,x,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,S,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,k,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,A,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"reusedPasswordsReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"reusedPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,f.StopClickDirective,g.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},706:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ToolsComponent=void 0;n(68012),n(45552),n(63513);const r=n(32621),o=n(68012),a=n(63513),s=n(45552),l=n(57490),c=n(1142),d=n(99729);function p(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function u(e,t){1&e&&(r.ɵɵelementStart(0,"div",9),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",10),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",11),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",12),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"a",13),r.ɵɵtext(13),r.ɵɵpipe(14,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"tools")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"importData"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(14,7,"exportVault"),"\n "))}function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"a",23),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).upgradeOrganization()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",15),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementStart(5,"div",16),r.ɵɵtext(6,"\n "),r.ɵɵtemplate(7,m,3,3,"a",17),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",11),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"a",18),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"a",19),r.ɵɵtext(18),r.ɵɵpipe(19,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"a",20),r.ɵɵtext(22),r.ɵɵpipe(23,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"a",21),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"a",22),r.ɵɵtext(30),r.ɵɵpipe(31,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,7,"reports"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.accessReports),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,9,"exposedPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(19,11,"reusedPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(23,13,"weakPasswordsReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(27,15,"unsecuredWebsitesReport"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(31,17,"inactive2faReport"),"\n ")}}function v(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",4),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",5),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,u,17,9,"div",6),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,h,34,19,"div",7),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"div",8),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"router-outlet"),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.organization.canAccessImportExport),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.organization.canAccessReports)}}class f{constructor(e,t,n){this.route=e,this.organizationService=t,this.messagingService=n,this.accessReports=!1,this.loading=!0}ngOnInit(){this.route.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(e.organizationId),this.accessReports=this.organization.useTotp,this.loading=!1}))))}upgradeOrganization(){this.messagingService.send("upgradeOrganization",{organizationId:this.organization.id})}}t.ToolsComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.ActivatedRoute),r.ɵɵdirectiveInject(a.OrganizationService),r.ɵɵdirectiveInject(s.MessagingService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-org-tools"]],decls:7,vars:2,consts:[[1,"container","page-content"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"row"],[1,"col-3"],["class","card mb-4",4,"ngIf"],["class","card",4,"ngIf"],[1,"col-9"],[1,"card","mb-4"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","import","routerLinkActive","active",1,"list-group-item"],["routerLink","export","routerLinkActive","active",1,"list-group-item"],[1,"card"],[1,"card-header","d-flex"],[1,"ml-auto"],["href","#","appStopClick","","class","badge badge-primary",3,"click",4,"ngIf"],["routerLink","exposed-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","reused-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","weak-passwords-report","routerLinkActive","active",1,"list-group-item"],["routerLink","unsecured-websites-report","routerLinkActive","active",1,"list-group-item"],["routerLink","inactive-two-factor-report","routerLinkActive","active",1,"list-group-item"],["href","#","appStopClick","",1,"badge","badge-primary",3,"click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,p,9,6,"ng-container",1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,v,17,2,"ng-container",1),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n")),2&e&&(r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.loading))},directives:[l.NgIf,o.RouterOutlet,o.RouterLinkWithHref,o.RouterLinkActive,c.StopClickDirective],pipes:[d.I18nPipe],encapsulation:2})},43850:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnsecuredWebsitesReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(44809),n(73569);const r=n(51948),o=n(32621),a=n(45330),s=n(64684),l=n(45552),c=n(73569),d=n(68012),p=n(63513),u=n(44809),m=n(57490),h=n(51626),v=n(18310),f=n(1142),g=n(39159),y=n(99729);function x(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noUnsecuredWebsites"),"\n "))}function w(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",16),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function C(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",17),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",15),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,w,9,6,"ng-container",1),o.ɵɵtext(14,"\n "),o.ɵɵtemplate(15,C,9,6,"ng-container",1),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"br"),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(10,6,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!n.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle)}}function E(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,I,23,8,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"unsecuredWebsitesFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"unsecuredWebsitesFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,E,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function O(e,t){}class k extends r.UnsecuredWebsitesReportComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,a),this.route=r,this.organizationService=o}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}}t.UnsecuredWebsitesReportComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.ModalService),o.ɵɵdirectiveInject(l.MessagingService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.ActivatedRoute),o.ɵɵdirectiveInject(p.OrganizationService),o.ɵɵdirectiveInject(u.PasswordRepromptService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-unsecured-websites-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,x,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,S,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,P,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,O,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"unsecuredWebsitesReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"unsecuredWebsitesReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,f.StopClickDirective,g.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},57785:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WeakPasswordsReportComponent=void 0;n(68012),n(64684),n(45330),n(45552),n(63513),n(84275),n(44809),n(73569);const r=n(64021),o=n(32621),a=n(45330),s=n(84275),l=n(64684),c=n(45552),d=n(73569),p=n(68012),u=n(63513),m=n(44809),h=n(57490),v=n(51626),f=n(18310),g=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2),o.ɵɵpipe(3,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(1,2,"goodNews")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(3,4,"noWeakPasswords"),"\n "))}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",18),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(3).selectCipher(t)})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"editItem")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementStart(1,"span"),o.ɵɵtext(2),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n ")),2&e){const e=o.ɵɵnextContext().$implicit;o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.name)}}function E(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",19),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"shared")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"shared")))}function P(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",20),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",5),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"attachments")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"attachments")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",12),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-vault-icon",13),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td",14),o.ɵɵtext(8,"\n "),o.ɵɵtemplate(9,C,6,4,"ng-container",15),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,I,4,1,"ng-template",null,16,o.ɵɵtemplateRefExtractor),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,E,9,6,"ng-container",1),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,P,9,6,"ng-container",1),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"br"),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"small"),o.ɵɵtext(21),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"td",17),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"span"),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit,n=o.ɵɵreference(12),i=o.ɵɵnextContext(3);o.ɵɵadvance(4),o.ɵɵproperty("cipher",e),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!i.organization&&e.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasAttachments),o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.subTitle),o.ɵɵadvance(5),o.ɵɵclassMapInterpolate1("badge badge-",i.passwordStrengthMap.get(e.id)[1],""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,10,i.passwordStrengthMap.get(e.id)[0]),"\n ")}}function k(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"app-callout",9),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4),o.ɵɵpipe(5,"i18n"),o.ɵɵpipe(6,"number"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"table",10),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"tbody"),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,O,31,12,"tr",11),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"weakPasswordsFound")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(5,5,"weakPasswordsFoundDesc",o.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),o.ɵɵadvance(8),o.ɵɵproperty("ngForOf",e.ciphers)}}function A(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",6),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,4,6,"app-callout",7),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,k,16,10,"ng-container",1),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.ciphers.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.ciphers.length)}}function T(e,t){}class M extends r.WeakPasswordsReportComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,n,i,r,s),this.route=o,this.organizationService=a}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((t=>i(this,void 0,void 0,(function*(){this.organization=yield this.organizationService.get(t.organizationId),this.manageableCiphers=yield this.cipherService.getAll(),yield e.ngOnInit.call(this)}))))}))}getAllCiphers(){return this.cipherService.getAllFromApiForOrganization(this.organization.id)}canManageCipher(e){return this.manageableCiphers.some((t=>t.id===e.id))}}t.WeakPasswordsReportComponent=M,M.ɵfac=function(e){return new(e||M)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PasswordGenerationService),o.ɵɵdirectiveInject(l.ModalService),o.ɵɵdirectiveInject(c.MessagingService),o.ɵɵdirectiveInject(d.StateService),o.ɵɵdirectiveInject(p.ActivatedRoute),o.ɵɵdirectiveInject(u.OrganizationService),o.ɵɵdirectiveInject(m.PasswordRepromptService))},M.ɵcmp=o.ɵɵdefineComponent({type:M,selectors:[["app-weak-passwords-report"]],features:[o.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵtemplate(5,S,9,6,"small",1),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementStart(9,"p"),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n"),o.ɵɵtemplate(13,b,9,6,"div",1),o.ɵɵtext(14,"\n"),o.ɵɵtemplate(15,A,6,2,"div",2),o.ɵɵtext(16,"\n"),o.ɵɵtemplate(17,T,0,0,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(19,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,5,"weakPasswordsReport"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,7,"weakPasswordsReportDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,f.IconComponent,g.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},93880:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(91674),n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344);const r=n(82789),o=n(49624),a=n(62415),s=n(16391),l=n(41141),c=n(32621),d=n(45330),p=n(88308),u=n(51554),m=n(73828),h=n(42982),v=n(73569),f=n(3174),g=n(52344),y=n(84275),x=n(91674),S=n(45552),b=n(32034),w=n(62166),C=n(36631),I=n(44809),E=n(63513),P=n(96832),O=n(56820),k=n(8863),A=n(57490),T=n(95746),M=n(51626),B=n(45728),D=n(48198),R=n(1142),F=n(48403),U=n(99729);function V(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",26),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function N(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",16),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",17),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",27),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"select",28),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.type=t})),c.ɵɵtext(9,"\n "),c.ɵɵtemplate(10,N,2,2,"option",29),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,4,"whatTypeOfItem")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.typeOptions)}}function j(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.id),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",17),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"label",31),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"select",32),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.folderId=t})),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,j,2,2,"option",29),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,4,"folder")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.folders)}}function H(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",41),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelement(5,"i",44),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(3,1,"copyUsername")))}function L(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",57),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).generatePassword()})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",58),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}2&e&&c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,1,"generatePassword"))}function K(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",51),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,L,5,3,"a",52),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"a",53,54),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).checkPassword()})),c.ɵɵpipe(6,"i18n"),c.ɵɵtext(7,"\n "),c.ɵɵelement(8,"i",55),c.ɵɵtext(9,"\n "),c.ɵɵelement(10,"i",56),c.ɵɵpipe(11,"i18n"),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(5),t=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.cipher.viewPassword),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(6,6,"checkPassword")),c.ɵɵproperty("appApiAction",t.checkPasswordPromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(11,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function q(e,t){1&e&&c.ɵɵelement(0,"app-premium-badge",62)}function G(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",63),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).upgradeOrganization()})),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function W(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"img",59),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,q,1,0,"app-premium-badge",60),c.ɵɵtext(6,"\n "),c.ɵɵtemplate(7,G,3,3,"a",61),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"verificationCodeTotp")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const $=function(e){return{"stroke-dashoffset.px":e}};function Y(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",64),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"span",65),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"span",66),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵnamespaceSVG(),c.ɵɵelementStart(7,"svg"),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"g"),c.ɵɵtext(10,"\n "),c.ɵɵelement(11,"circle",67),c.ɵɵtext(12,"\n "),c.ɵɵelement(13,"circle",68),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵnamespaceHTML(),c.ɵɵelementStart(18,"span",69),c.ɵɵpipe(19,"i18n"),c.ɵɵtext(20),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"button",70),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),c.ɵɵpipe(23,"i18n"),c.ɵɵtext(24,"\n "),c.ɵɵelement(25,"i",71),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(5),c.ɵɵtextInterpolate(e.totpSec),c.ɵɵadvance(6),c.ɵɵproperty("ngStyle",c.ɵɵpureFunction1(9,$,e.totpDash)),c.ɵɵadvance(7),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(19,5,"verificationCodeTotp")),c.ɵɵadvance(2),c.ɵɵtextInterpolate(e.totpCodeFormatted),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function Q(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function J(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",82),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(4).removeUri(t)})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",83),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}2&e&&c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,1,"remove"))}function Z(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",16),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",73),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",74),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",34),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",75),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.uri=t})),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"div",41),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"button",42),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).launch(t)})),c.ɵɵpipe(16,"i18n"),c.ɵɵtext(17,"\n "),c.ɵɵelement(18,"i",76),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementStart(21,"button",50),c.ɵɵlistener("click",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),c.ɵɵpipe(22,"i18n"),c.ɵɵtext(23,"\n "),c.ɵɵelement(24,"i",44),c.ɵɵtext(25,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"div",77),c.ɵɵtext(31,"\n "),c.ɵɵelementStart(32,"div",37),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"label",74),c.ɵɵtext(35),c.ɵɵpipe(36,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"a",78),c.ɵɵpipe(39,"i18n"),c.ɵɵtext(40,"\n "),c.ɵɵelement(41,"i",79),c.ɵɵtext(42,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(43,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementStart(45,"div",37),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"select",80),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=c.ɵɵrestoreView(e).$implicit;return c.ɵɵnextContext(4).loginUriMatchChanged(t)})),c.ɵɵtext(48,"\n "),c.ɵɵtemplate(49,Q,2,2,"option",29),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵtemplate(52,J,5,3,"button",81),c.ɵɵtext(53,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(55,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(4),c.ɵɵpropertyInterpolate1("for","loginUri",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(6,19,"uriPosition",n+1)),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate1("id","loginUri",n,""),c.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),c.ɵɵpropertyInterpolate1("placeholder","",c.ɵɵpipeBind1(11,22,"ex")," https://google.com"),c.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(16,24,"launch")),c.ɵɵproperty("disabled",!e.canLaunch),c.ɵɵadvance(6),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(22,26,"copyUri")),c.ɵɵadvance(13),c.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(39,30,"learnMore")),c.ɵɵadvance(9),c.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),c.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),c.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",i.uriMatchOptions),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function X(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Z,56,32,"div",72),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function ee(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"a",84),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).addUri()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",85),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1(" ",c.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const te=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},ne=function(e){return{low:e}};function ie(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",33),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"div",34),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"input",35),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.username=t})),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,H,8,3,"div",36),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"div",17),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"div",37),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"label",38),c.ɵɵtext(23),c.ɵɵpipe(24,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,K,14,10,"div",39),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",34),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"input",40),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.password=t})),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementStart(33,"div",41),c.ɵɵtext(34,"\n "),c.ɵɵelementStart(35,"button",42),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).togglePassword()})),c.ɵɵpipe(36,"i18n"),c.ɵɵtext(37,"\n "),c.ɵɵelement(38,"i",43),c.ɵɵtext(39,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(40,"\n "),c.ɵɵelementStart(41,"button",42),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),c.ɵɵpipe(42,"i18n"),c.ɵɵtext(43,"\n "),c.ɵɵelement(44,"i",44),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(48,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(49,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(50,"\n "),c.ɵɵelementStart(51,"div",16),c.ɵɵtext(52,"\n "),c.ɵɵelementStart(53,"div",17),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"label",45),c.ɵɵtext(56),c.ɵɵpipe(57,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(58,"\n "),c.ɵɵelementStart(59,"input",46),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.login.totp=t})),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(61,"\n "),c.ɵɵelementStart(62,"div",47),c.ɵɵtext(63,"\n "),c.ɵɵtemplate(64,W,9,5,"div",21),c.ɵɵtext(65,"\n "),c.ɵɵtemplate(66,Y,28,11,"div",48),c.ɵɵtext(67,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(68,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵtemplate(70,X,4,2,"ng-container",21),c.ɵɵtext(71,"\n "),c.ɵɵtemplate(72,ee,5,3,"a",49),c.ɵɵtext(73,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,23,"username")),c.ɵɵadvance(5),c.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.isDeleted),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(24,25,"password")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(36,27,"toggleVisibility")),c.ɵɵproperty("disabled",!e.cipher.viewPassword),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(33,te,!e.showPassword,e.showPassword)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(42,29,"copyPassword")),c.ɵɵproperty("disabled",!e.cipher.viewPassword),c.ɵɵadvance(15),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction1(36,ne,e.totpLow)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.cipher.login.hasUris),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function re(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function oe(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ae(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",17),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",86),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"input",87),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.cardholderName=t})),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"div",17),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"label",88),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"select",89),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.brand=t})),c.ɵɵtext(20,"\n "),c.ɵɵtemplate(21,re,2,2,"option",29),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"div",16),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"div",17),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"label",90),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"div",34),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"input",91),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.number=t})),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelementStart(38,"div",41),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleCardNumber()})),c.ɵɵpipe(41,"i18n"),c.ɵɵtext(42,"\n "),c.ɵɵelement(43,"i",43),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementStart(46,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),c.ɵɵpipe(47,"i18n"),c.ɵɵtext(48,"\n "),c.ɵɵelement(49,"i",44),c.ɵɵtext(50,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(52,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(53,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"div",92),c.ɵɵtext(56,"\n "),c.ɵɵelementStart(57,"label",93),c.ɵɵtext(58),c.ɵɵpipe(59,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementStart(61,"select",94),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.expMonth=t})),c.ɵɵtext(62,"\n "),c.ɵɵtemplate(63,oe,2,2,"option",29),c.ɵɵtext(64,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(66,"\n "),c.ɵɵelementStart(67,"div",92),c.ɵɵtext(68,"\n "),c.ɵɵelementStart(69,"label",95),c.ɵɵtext(70),c.ɵɵpipe(71,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(72,"\n "),c.ɵɵelementStart(73,"input",96),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.expYear=t})),c.ɵɵpipe(74,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(75,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(76,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelementStart(78,"div",16),c.ɵɵtext(79,"\n "),c.ɵɵelementStart(80,"div",17),c.ɵɵtext(81,"\n "),c.ɵɵelementStart(82,"label",97),c.ɵɵtext(83),c.ɵɵpipe(84,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(85,"\n "),c.ɵɵelementStart(86,"div",34),c.ɵɵtext(87,"\n "),c.ɵɵelementStart(88,"input",98),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.card.code=t})),c.ɵɵelementEnd(),c.ɵɵtext(89,"\n "),c.ɵɵelementStart(90,"div",41),c.ɵɵtext(91,"\n "),c.ɵɵelementStart(92,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleCardCode()})),c.ɵɵpipe(93,"i18n"),c.ɵɵtext(94,"\n "),c.ɵɵelement(95,"i",43),c.ɵɵtext(96,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(97,"\n "),c.ɵɵelementStart(98,"button",50),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),c.ɵɵpipe(99,"i18n"),c.ɵɵtext(100,"\n "),c.ɵɵelement(101,"i",44),c.ɵɵtext(102,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(103,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(104,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(105,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(106,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(107,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,29,"cardholderName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,31,"brand")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cardBrandOptions),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(32,33,"number")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(41,35,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(51,te,!e.showCardNumber,e.showCardNumber)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(47,37,"copyNumber")),c.ɵɵadvance(12),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(59,39,"expirationMonth")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cardExpMonthOptions),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(71,41,"expirationYear")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate1("placeholder","",c.ɵɵpipeBind1(74,43,"ex")," 2019"),c.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(84,45,"securityCode")),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),c.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(93,47,"toggleVisibility")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(54,te,!e.showCardCode,e.showCardCode)),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(99,49,"securityCode"))}}function se(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function le(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",16),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",99),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"label",100),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"select",101),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.title=t})),c.ɵɵtext(11,"\n "),c.ɵɵtemplate(12,se,2,2,"option",29),c.ɵɵtext(13,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵelementStart(17,"div",16),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"div",99),c.ɵɵtext(20,"\n "),c.ɵɵelementStart(21,"label",102),c.ɵɵtext(22),c.ɵɵpipe(23,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"input",103),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.firstName=t})),c.ɵɵelementEnd(),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelementStart(28,"div",99),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"label",104),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"input",105),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.middleName=t})),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementStart(37,"div",99),c.ɵɵtext(38,"\n "),c.ɵɵelementStart(39,"label",106),c.ɵɵtext(40),c.ɵɵpipe(41,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(42,"\n "),c.ɵɵelementStart(43,"input",107),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.lastName=t})),c.ɵɵelementEnd(),c.ɵɵtext(44,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(45,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(46,"\n "),c.ɵɵelementStart(47,"div",16),c.ɵɵtext(48,"\n "),c.ɵɵelementStart(49,"div",99),c.ɵɵtext(50,"\n "),c.ɵɵelementStart(51,"label",108),c.ɵɵtext(52),c.ɵɵpipe(53,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"input",109),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.username=t})),c.ɵɵelementEnd(),c.ɵɵtext(56,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(57,"\n "),c.ɵɵelementStart(58,"div",99),c.ɵɵtext(59,"\n "),c.ɵɵelementStart(60,"label",110),c.ɵɵtext(61),c.ɵɵpipe(62,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(63,"\n "),c.ɵɵelementStart(64,"input",111),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.company=t})),c.ɵɵelementEnd(),c.ɵɵtext(65,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(66,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(67,"\n "),c.ɵɵelementStart(68,"div",16),c.ɵɵtext(69,"\n "),c.ɵɵelementStart(70,"div",99),c.ɵɵtext(71,"\n "),c.ɵɵelementStart(72,"label",112),c.ɵɵtext(73),c.ɵɵpipe(74,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(75,"\n "),c.ɵɵelementStart(76,"input",113),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.ssn=t})),c.ɵɵelementEnd(),c.ɵɵtext(77,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(78,"\n "),c.ɵɵelementStart(79,"div",99),c.ɵɵtext(80,"\n "),c.ɵɵelementStart(81,"label",114),c.ɵɵtext(82),c.ɵɵpipe(83,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(84,"\n "),c.ɵɵelementStart(85,"input",115),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.passportNumber=t})),c.ɵɵelementEnd(),c.ɵɵtext(86,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(87,"\n "),c.ɵɵelementStart(88,"div",99),c.ɵɵtext(89,"\n "),c.ɵɵelementStart(90,"label",116),c.ɵɵtext(91),c.ɵɵpipe(92,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(93,"\n "),c.ɵɵelementStart(94,"input",117),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),c.ɵɵelementEnd(),c.ɵɵtext(95,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(96,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(97,"\n "),c.ɵɵelementStart(98,"div",16),c.ɵɵtext(99,"\n "),c.ɵɵelementStart(100,"div",17),c.ɵɵtext(101,"\n "),c.ɵɵelementStart(102,"label",118),c.ɵɵtext(103),c.ɵɵpipe(104,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(105,"\n "),c.ɵɵelementStart(106,"input",119),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.email=t})),c.ɵɵelementEnd(),c.ɵɵtext(107,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(108,"\n "),c.ɵɵelementStart(109,"div",17),c.ɵɵtext(110,"\n "),c.ɵɵelementStart(111,"label",120),c.ɵɵtext(112),c.ɵɵpipe(113,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(114,"\n "),c.ɵɵelementStart(115,"input",121),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.phone=t})),c.ɵɵelementEnd(),c.ɵɵtext(116,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(117,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(118,"\n "),c.ɵɵelementStart(119,"div",16),c.ɵɵtext(120,"\n "),c.ɵɵelementStart(121,"div",17),c.ɵɵtext(122,"\n "),c.ɵɵelementStart(123,"label",122),c.ɵɵtext(124),c.ɵɵpipe(125,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(126,"\n "),c.ɵɵelementStart(127,"input",123),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address1=t})),c.ɵɵelementEnd(),c.ɵɵtext(128,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(129,"\n "),c.ɵɵelementStart(130,"div",17),c.ɵɵtext(131,"\n "),c.ɵɵelementStart(132,"label",124),c.ɵɵtext(133),c.ɵɵpipe(134,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(135,"\n "),c.ɵɵelementStart(136,"input",125),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address2=t})),c.ɵɵelementEnd(),c.ɵɵtext(137,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(138,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(139,"\n "),c.ɵɵelementStart(140,"div",16),c.ɵɵtext(141,"\n "),c.ɵɵelementStart(142,"div",17),c.ɵɵtext(143,"\n "),c.ɵɵelementStart(144,"label",126),c.ɵɵtext(145),c.ɵɵpipe(146,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(147,"\n "),c.ɵɵelementStart(148,"input",127),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.address3=t})),c.ɵɵelementEnd(),c.ɵɵtext(149,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(150,"\n "),c.ɵɵelementStart(151,"div",17),c.ɵɵtext(152,"\n "),c.ɵɵelementStart(153,"label",128),c.ɵɵtext(154),c.ɵɵpipe(155,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(156,"\n "),c.ɵɵelementStart(157,"input",129),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.city=t})),c.ɵɵelementEnd(),c.ɵɵtext(158,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(159,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(160,"\n "),c.ɵɵelementStart(161,"div",16),c.ɵɵtext(162,"\n "),c.ɵɵelementStart(163,"div",17),c.ɵɵtext(164,"\n "),c.ɵɵelementStart(165,"label",130),c.ɵɵtext(166),c.ɵɵpipe(167,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(168,"\n "),c.ɵɵelementStart(169,"input",131),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.state=t})),c.ɵɵelementEnd(),c.ɵɵtext(170,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(171,"\n "),c.ɵɵelementStart(172,"div",17),c.ɵɵtext(173,"\n "),c.ɵɵelementStart(174,"label",132),c.ɵɵtext(175),c.ɵɵpipe(176,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(177,"\n "),c.ɵɵelementStart(178,"input",133),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.postalCode=t})),c.ɵɵelementEnd(),c.ɵɵtext(179,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(180,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(181,"\n "),c.ɵɵelementStart(182,"div",16),c.ɵɵtext(183,"\n "),c.ɵɵelementStart(184,"div",17),c.ɵɵtext(185,"\n "),c.ɵɵelementStart(186,"label",134),c.ɵɵtext(187),c.ɵɵpipe(188,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(189,"\n "),c.ɵɵelementStart(190,"input",135),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.identity.country=t})),c.ɵɵelementEnd(),c.ɵɵtext(191,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(192,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(193,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,55,"title")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.identityTitleOptions),c.ɵɵadvance(10),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(23,57,"firstName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(32,59,"middleName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(41,61,"lastName")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(53,63,"username")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(62,65,"company")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(74,67,"ssn")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(83,69,"passportNumber")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(92,71,"licenseNumber")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(104,73,"email")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(113,75,"phone")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(125,77,"address1")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(134,79,"address2")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(146,81,"address3")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(155,83,"cityTown")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(167,85,"stateProvince")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(176,87,"zipPostalCode")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(188,89,"country")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function ce(e,t){if(1&e&&(c.ɵɵelementStart(0,"option",30),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵproperty("ngValue",e.value),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function de(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",16),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",137),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",138),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"select",139),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).organizationChanged()})),c.ɵɵtext(15,"\n "),c.ɵɵtemplate(16,ce,2,2,"option",29),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,5,"ownership")),c.ɵɵadvance(8),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.ownershipOptions)}}function pe(e,t){1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function ue(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",141),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"input",142),c.ɵɵlistener("ngModelChange",(function(t){return c.ɵɵrestoreView(e).$implicit.checked=t})),c.ɵɵelementEnd(),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"label",143),c.ɵɵtext(5),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=c.ɵɵnextContext(4);c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("id","collection-",n,""),c.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),c.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate1("for","collection-",n,""),c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function me(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,ue,7,6,"div",140),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.collections)}}function he(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,pe,3,3,"div",21),c.ɵɵtext(7,"\n "),c.ɵɵtemplate(8,me,4,1,"ng-container",21),c.ɵɵtext(9,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,3,"collections")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.collections||!e.collections.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function ve(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"b",145),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5),c.ɵɵpipe(6,"date"),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function fe(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div"),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"b",145),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"a",146),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(3).viewHistory()})),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,3,"passwordHistory"),":"),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,5,"view")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function ge(e,t){if(1&e&&(c.ɵɵelementStart(0,"div"),c.ɵɵtext(1),c.ɵɵpipe(2,"date"),c.ɵɵelementStart(3,"span",148),c.ɵɵtext(4),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(e.password)}}function ye(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",62),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,ge,6,5,"div",147),c.ɵɵtext(3,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(2),c.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function xe(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",144),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"b",145),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9),c.ɵɵpipe(10,"date"),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵtemplate(12,ve,7,7,"div",21),c.ɵɵtext(13,"\n "),c.ɵɵtemplate(14,fe,10,7,"div",21),c.ɵɵtext(15,"\n "),c.ɵɵtemplate(16,ye,4,1,"div",60),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(7),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(8,5,"dateUpdated"),":"),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.showRevisionDate),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.hasPasswordHistory),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function Se(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"h3",136),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",141),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"input",149),c.ɵɵlistener("change",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).repromptChanged()})),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",150),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"a",151),c.ɵɵpipe(15,"i18n"),c.ɵɵtext(16,"\n "),c.ɵɵelement(17,"i",79),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelementContainerEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,5,"options")),c.ɵɵadvance(5),c.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,7,"passwordPrompt")),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(15,9,"learnMore"))}}function be(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"div",13),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,V,3,3,"app-callout",14),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,_,14,6,"div",15),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",16),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"div",17),c.ɵɵtext(9,"\n "),c.ɵɵelementStart(10,"label",18),c.ɵɵtext(11),c.ɵɵpipe(12,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(13,"\n "),c.ɵɵelementStart(14,"input",19),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().cipher.name=t})),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(16,"\n "),c.ɵɵtemplate(17,z,11,6,"div",20),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtext(20,"\n "),c.ɵɵtemplate(21,ie,74,38,"ng-container",21),c.ɵɵtext(22,"\n "),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,ae,108,57,"ng-container",21),c.ɵɵtext(25,"\n "),c.ɵɵtext(26,"\n "),c.ɵɵtemplate(27,le,194,91,"ng-container",21),c.ɵɵtext(28,"\n "),c.ɵɵelementStart(29,"div",22),c.ɵɵtext(30,"\n "),c.ɵɵelementStart(31,"label",23),c.ɵɵtext(32),c.ɵɵpipe(33,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n "),c.ɵɵelementStart(35,"textarea",24),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().cipher.notes=t})),c.ɵɵelementEnd(),c.ɵɵtext(36,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(37,"\n "),c.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),c.ɵɵtext(39,"\n "),c.ɵɵtemplate(40,de,21,9,"ng-container",21),c.ɵɵtext(41,"\n "),c.ɵɵtemplate(42,he,10,5,"ng-container",21),c.ɵɵtext(43,"\n "),c.ɵɵtemplate(44,xe,19,10,"ng-container",21),c.ɵɵtext(45,"\n "),c.ɵɵtemplate(46,Se,21,11,"ng-container",21),c.ɵɵtext(47,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),c.ɵɵadvance(7),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(12,20,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",!e.organization),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(33,22,"notes")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),c.ɵɵadvance(3),c.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.canUseReprompt)}}function we(e,t){if(1&e&&(c.ɵɵelementStart(0,"button",152),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",153),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span"),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(),t=c.ɵɵreference(5);c.ɵɵproperty("disabled",t.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,3,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const Ce=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function Ie(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",70),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).toggleFavorite()})),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",43),c.ɵɵtext(4,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),c.ɵɵadvance(3),c.ɵɵproperty("ngClass",c.ɵɵpureFunction2(4,Ce,e.cipher.favorite,!e.cipher.favorite))}}function Ee(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",157,158),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).delete()})),c.ɵɵpipe(2,"i18n"),c.ɵɵtext(3,"\n "),c.ɵɵelement(4,"i",159),c.ɵɵtext(5,"\n "),c.ɵɵelement(6,"i",160),c.ɵɵpipe(7,"i18n"),c.ɵɵtext(8,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),c.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),c.ɵɵadvance(4),c.ɵɵproperty("hidden",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(7,8,"loading")),c.ɵɵproperty("hidden",!e.loading)}}function Pe(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",154),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Ie,5,7,"button",155),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,Ee,9,10,"button",156),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext();c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class Oe extends l.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h,v){super(e,t,n,i,r,o,a,s,l,d,p,u,v,m,h),this.apiService=c,this.originalCipher=null}allowOwnershipAssignment(){return null!=this.ownershipOptions&&(this.ownershipOptions.length>1||!this.allowPersonal)&&(null!=this.organization?this.cloneMode&&this.organization.canEditAnyCollection:!this.editMode||this.cloneMode)}loadCollections(){return this.organization.canEditAnyCollection?Promise.resolve(this.collections):super.loadCollections()}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId),n=new r.CipherData(t);return this.originalCipher=new o.Cipher(n),new o.Cipher(n)}))}encryptCipher(){return this.organization.canEditAnyCollection?this.cipherService.encrypt(this.cipher,null,this.originalCipher):super.encryptCipher()}saveCipher(e){const t=Object.create(null,{saveCipher:{get:()=>super.saveCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection||null==e.organizationId)return t.saveCipher.call(this,e);if(this.editMode&&!this.cloneMode){const t=new s.CipherRequest(e);return this.apiService.putCipherAdmin(this.cipherId,t)}{const t=new a.CipherCreateRequest(e);return this.apiService.postCipherAdmin(t)}}))}deleteCipher(){const e=Object.create(null,{deleteCipher:{get:()=>super.deleteCipher}});return i(this,void 0,void 0,(function*(){return this.organization.canEditAnyCollection?this.cipher.isDeleted?this.apiService.deleteCipherAdmin(this.cipherId):this.apiService.putDeleteCipherAdmin(this.cipherId):e.deleteCipher.call(this)}))}}t.AddEditComponent=Oe,Oe.ɵfac=function(e){return new(e||Oe)(c.ɵɵdirectiveInject(d.CipherService),c.ɵɵdirectiveInject(p.FolderService),c.ɵɵdirectiveInject(u.I18nService),c.ɵɵdirectiveInject(m.PlatformUtilsService),c.ɵɵdirectiveInject(h.AuditService),c.ɵɵdirectiveInject(v.StateService),c.ɵɵdirectiveInject(f.CollectionService),c.ɵɵdirectiveInject(g.TotpService),c.ɵɵdirectiveInject(y.PasswordGenerationService),c.ɵɵdirectiveInject(x.ApiService),c.ɵɵdirectiveInject(S.MessagingService),c.ɵɵdirectiveInject(b.EventService),c.ɵɵdirectiveInject(w.PolicyService),c.ɵɵdirectiveInject(C.LogService),c.ɵɵdirectiveInject(I.PasswordRepromptService),c.ɵɵdirectiveInject(E.OrganizationService))},Oe.ɵcmp=c.ɵɵdefineComponent({type:Oe,selectors:[["app-org-vault-add-edit"]],features:[c.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"form",2,3),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"div",4),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"h2",5),c.ɵɵtext(10),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"button",6),c.ɵɵpipe(13,"i18n"),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"span",7),c.ɵɵtext(16,"×"),c.ɵɵelementEnd(),c.ɵɵtext(17,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵtemplate(20,be,48,24,"div",8),c.ɵɵtext(21,"\n "),c.ɵɵelementStart(22,"div",9),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,we,9,7,"button",10),c.ɵɵtext(25,"\n "),c.ɵɵelementStart(26,"button",11),c.ɵɵtext(27),c.ɵɵpipe(28,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵtemplate(30,Pe,6,2,"div",12),c.ɵɵtext(31,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(32,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n")),2&e&&(c.ɵɵadvance(4),c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(6),c.ɵɵtextInterpolate(t.title),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(13,7,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",t.cipher),c.ɵɵadvance(4),c.ɵɵproperty("ngIf",!t.viewOnly),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[P.NgControlStatusGroup,P.NgForm,O.ApiActionDirective,k.A11yTitleDirective,A.NgIf,P.DefaultValueAccessor,P.RequiredValidator,P.NgControlStatus,P.NgModel,T.AddEditCustomFieldsComponent,M.CalloutComponent,P.SelectControlValueAccessor,B.AutofocusDirective,A.NgForOf,P.NgSelectOption,P.ɵNgSelectMultipleOption,D.InputVerbatimDirective,A.NgClass,R.StopClickDirective,F.PremiumBadgeComponent,A.NgStyle,P.CheckboxControlValueAccessor],pipes:[U.I18nPipe,A.DatePipe],encapsulation:2})},31597:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569);const r=n(82789),o=n(49624),a=n(94652),s=n(32621),l=n(45330),c=n(51554),d=n(85714),p=n(73569),u=n(73828),m=n(91674),h=n(36631),v=n(96832),f=n(56820),g=n(57490),y=n(8863),x=n(1142),S=n(99729);function b(e,t){if(1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.cipher.name)}}function w(e,t){1&e&&s.ɵɵelement(0,"i",24)}function C(e,t){1&e&&s.ɵɵelement(0,"i",25)}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",26),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"a",27),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",28),s.ɵɵpipe(5,"i18n"),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"span",29),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"button",30,31),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).reupload(t)})),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(12),t=s.ɵɵnextContext().$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(5,5,"attachmentFixDesc")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(9,7,"attachmentFixDesc")),s.ɵɵadvance(3),s.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"td",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"button",33,34),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).delete(t)})),s.ɵɵpipe(4,"i18n"),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",35),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",36),s.ɵɵpipe(9,"i18n"),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(3),t=s.ɵɵnextContext().$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(4,6,"delete")),s.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(9,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",16),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,w,1,0,"i",17),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,1,0,"i",18),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"td",19),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",20),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"a",21),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).download(t)})),s.ɵɵtext(14),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,I,16,11,"div",22),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"small"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,E,12,10,"td",23),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!e.downloading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.downloading),s.ɵɵadvance(8),s.ɵɵtextInterpolate(e.fileName),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),s.ɵɵadvance(4),s.ɵɵtextInterpolate(e.sizeName),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!n.viewOnly)}}function O(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",14),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,P,25,6,"tr",15),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.cipher.attachments)}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",37),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"input",38),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"small",39),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"newAttachment")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,5,"file")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,7,"maxFileSize")))}function A(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",40),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",41),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){s.ɵɵnextContext();const e=s.ɵɵreference(5);s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,5,"save"))}}class T extends a.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,i,r,o,a),this.viewOnly=!1}reupload(e){const t=Object.create(null,{reuploadCipherAttachment:{get:()=>super.reuploadCipherAttachment}});return i(this,void 0,void 0,(function*(){this.organization.canEditAnyCollection&&this.showFixOldAttachments(e)&&(yield t.reuploadCipherAttachment.call(this,e,!0))}))}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canEditAnyCollection)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId);return new o.Cipher(new r.CipherData(t))}))}saveCipherAttachment(e){return this.cipherService.saveAttachmentWithServer(this.cipherDomain,e,this.organization.canEditAnyCollection)}deleteCipherAttachment(e){return this.organization.canEditAnyCollection?this.apiService.deleteCipherAttachmentAdmin(this.cipherId,e):super.deleteCipherAttachment(e)}showFixOldAttachments(e){return null==e.key&&this.organization.canEditAnyCollection}}t.AttachmentsComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.CryptoService),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.PlatformUtilsService),s.ɵɵdirectiveInject(m.ApiService),s.ɵɵdirectiveInject(h.LogService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-org-vault-attachments"]],features:[s.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵtemplate(12,b,2,1,"small",6),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",7),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",8),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"div",9),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,O,7,1,"table",10),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,k,16,9,"div",6),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",11),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,A,9,7,"button",12),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"button",13),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(11,8,"attachments"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.cipher),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,10,"close")),s.ɵɵadvance(10),s.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.NgIf,y.A11yTitleDirective,g.NgForOf,x.StopClickDirective],pipes:[S.I18nPipe],encapsulation:2})},7203:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CiphersComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(32034),n(51554),n(36631),n(63513),n(44809),n(73828),n(60421),n(73569),n(30694),n(52344),n(91434)),a=n(32621),s=n(60421),l=n(51554),c=n(73828),d=n(45330),p=n(32034),u=n(52344),m=n(44809),h=n(36631),v=n(73569),f=n(63513),g=n(30694),y=n(91674),x=n(57490),S=n(37407),b=n(96832),w=n(39159),C=n(18310),I=n(68012),E=n(6373),P=n(8863),O=n(44653),k=n(62985),A=n(99237),T=n(99729),M=n(53397);function B(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",24),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachmentsNeedFix")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachmentsNeedFix")))}function D(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",22),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,B,9,6,"ng-container",0),a.ɵɵtext(10,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,5,"attachments")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.showFixOldAttachments(e))}}function R(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"td",25),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-org-badge",26),a.ɵɵlistener("onOrganizationClicked",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).onOrganizationClicked(t.organizationId)})),a.ɵɵpipe(3,"orgNameFromId"),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("organizationName",a.ɵɵpipeBind2(3,2,e.organizationId,t.organizations)),a.ɵɵpropertyInterpolate("profileName",t.profileName)}}function F(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).copy(t,t.login.password,"password","Password")})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",27),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"copyPassword"),"\n "))}function U(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).copy(t,t.login.totp,"verificationCodeTotp","TOTP")})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",27),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"copyVerificationCode"),"\n "))}function V(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext(2).$implicit;return a.ɵɵnextContext(3).launch(t.login.launchUri)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",28),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"launch"),"\n "))}function N(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).copy(t,t.login.username,"username","Username")})),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",27),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,F,5,3,"button",19),a.ɵɵtext(9,"\n "),a.ɵɵtemplate(10,U,5,3,"button",19),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,V,5,3,"button",19),a.ɵɵtext(13,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(6,4,"copyUsername"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",e.viewPassword),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.displayTotpCopyButton(e)),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.login.canLaunch)}}function _(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).clone(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",29),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"clone"),"\n "))}function j(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).share(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",30),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"moveToOrganization"),"\n "))}function z(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).collections(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",31),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"collections"),"\n "))}function H(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).events(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",32),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"eventLogs"),"\n "))}function L(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",17),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).restore(t)})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",33),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"restore"),"\n "))}const K=function(){return[]},q=function(e){return{cipherId:e}};function G(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",5),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"input",6),a.ɵɵlistener("ngModelChange",(function(t){return a.ɵɵrestoreView(e).$implicit.checked=t})),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",7),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(8,"\n "),a.ɵɵelement(9,"app-vault-icon",8),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"td",9),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).checkCipher(t)})),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"a",10),a.ɵɵpipe(15,"i18n"),a.ɵɵtext(16),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵtemplate(18,D,11,7,"ng-container",0),a.ɵɵtext(19,"\n "),a.ɵɵelement(20,"br"),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"small",11),a.ɵɵtext(23),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵtemplate(26,R,6,5,"td",12),a.ɵɵtext(27,"\n "),a.ɵɵelementStart(28,"td",13),a.ɵɵtext(29,"\n "),a.ɵɵelementStart(30,"button",14),a.ɵɵpipe(31,"i18n"),a.ɵɵtext(32,"\n "),a.ɵɵelement(33,"i",15),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementStart(36,"bit-menu",null,16),a.ɵɵtext(38,"\n "),a.ɵɵtemplate(39,N,14,6,"ng-container",0),a.ɵɵtext(40,"\n "),a.ɵɵelementStart(41,"button",17),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).attachments(t)})),a.ɵɵtext(42,"\n "),a.ɵɵelement(43,"i",18),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵtemplate(47,_,5,3,"button",19),a.ɵɵtext(48,"\n "),a.ɵɵtemplate(49,j,5,3,"button",19),a.ɵɵtext(50,"\n "),a.ɵɵtemplate(51,z,5,3,"button",19),a.ɵɵtext(52,"\n "),a.ɵɵtemplate(53,H,5,3,"button",19),a.ɵɵtext(54,"\n "),a.ɵɵtemplate(55,L,5,3,"button",19),a.ɵɵtext(56,"\n "),a.ɵɵelementStart(57,"button",17),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).delete(t)})),a.ɵɵtext(58,"\n "),a.ɵɵelementStart(59,"span",20),a.ɵɵtext(60,"\n "),a.ɵɵelement(61,"i",21),a.ɵɵtext(62),a.ɵɵpipe(63,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=a.ɵɵreference(37),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("ngModel",e.checked),a.ɵɵadvance(5),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(15,19,"editItem")),a.ɵɵproperty("routerLink",a.ɵɵpureFunction0(27,K))("queryParams",a.ɵɵpureFunction1(28,q,e.id)),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",i.organizations.length>0&&!i.organization),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(31,21,"options")),a.ɵɵproperty("bitMenuTriggerFor",n),a.ɵɵadvance(9),a.ɵɵproperty("ngIf",e.type===i.cipherType.Login&&!e.isDeleted),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,23,"attachments"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",(!i.organization&&!e.organizationId||i.organization)&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!i.organization&&!e.organizationId&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.organizationId&&!e.isDeleted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.organizationId&&i.accessEvents),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.isDeleted),a.ɵɵadvance(7),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(63,25,e.isDeleted?"permanentlyDelete":"delete"),"\n ")}}function W(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"table",3),a.ɵɵlistener("scrolled",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(2).loadMore()})),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,G,68,30,"tr",4),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext().ngIf,t=a.ɵɵnextContext();a.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e)}}function $(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",35),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",23),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function Y(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",37),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext(4).addCipher()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",38),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function Q(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,Y,5,3,"button",36),a.ɵɵtext(7,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(3);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,2,"noItemsInList")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",e.showAddNew)}}function J(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",34),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,$,9,6,"ng-container",0),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,Q,8,4,"ng-container",0),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.loaded),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.loaded)}}function Z(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,W,7,3,"table",1),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,J,6,2,"div",2),a.ɵɵtext(5,"\n"),a.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.length)}}class X extends o.CiphersComponent{constructor(e,t,n,i,o,a,s,l,c,d,p,u){super(e,t,n,i,o,a,c,s,l,d,p),this.apiService=u,this.onEventsClicked=new r.EventEmitter,this.accessEvents=!1,this.allCiphers=[]}load(e=null,t=!1){return i(this,void 0,void 0,(function*(){this.deleted=t||!1,this.organization.canEditAnyCollection?(this.accessEvents=this.organization.useEvents,this.allCiphers=yield this.cipherService.getAllFromApiForOrganization(this.organization.id)):this.allCiphers=(yield this.cipherService.getAllDecrypted()).filter((e=>e.organizationId===this.organization.id)),yield this.searchService.indexCiphers(this.organization.id,this.allCiphers),yield this.applyFilter(e),this.loaded=!0}))}applyFilter(e=null){const t=Object.create(null,{applyFilter:{get:()=>super.applyFilter}});return i(this,void 0,void 0,(function*(){if(this.organization.canViewAllCollections)yield t.applyFilter.call(this,e);else{const n=t=>t.organizationId===this.organization.id&&(null==e||e(t));yield t.applyFilter.call(this,n)}}))}search(e=null){const t=Object.create(null,{search:{get:()=>super.search}});return i(this,void 0,void 0,(function*(){yield t.search.call(this,e,this.allCiphers)}))}events(e){this.onEventsClicked.emit(e)}deleteCipher(e){return this.organization.canEditAnyCollection?this.deleted?this.apiService.deleteCipherAdmin(e):this.apiService.putDeleteCipherAdmin(e):super.deleteCipher(e,this.deleted)}showFixOldAttachments(e){return this.organization.canEditAnyCollection&&e.hasOldAttachments}}t.CiphersComponent=X,X.ɵfac=function(e){return new(e||X)(a.ɵɵdirectiveInject(s.SearchService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.CipherService),a.ɵɵdirectiveInject(p.EventService),a.ɵɵdirectiveInject(u.TotpService),a.ɵɵdirectiveInject(m.PasswordRepromptService),a.ɵɵdirectiveInject(h.LogService),a.ɵɵdirectiveInject(v.StateService),a.ɵɵdirectiveInject(f.OrganizationService),a.ɵɵdirectiveInject(g.TokenService),a.ɵɵdirectiveInject(y.ApiService))},X.ɵcmp=a.ɵɵdefineComponent({type:X,selectors:[["app-org-vault-ciphers"]],outputs:{onEventsClicked:"onEventsClicked"},features:[a.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],["class","table table-hover table-list table-ciphers","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["class","no-items",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list","table-ciphers",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],[1,"table-list-icon",3,"click"],[3,"cipher"],[1,"reduced-lh","wrap",3,"click"],["appStopProp","","queryParamsHandling","merge",3,"routerLink","queryParams","title"],["appStopProp",""],["class","tw-w-28",4,"ngIf"],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["cipherOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"tw-w-28"],[3,"organizationName","profileName","onOrganizationClicked"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-share-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-files"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-collection"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],[1,"no-items"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],["class","btn btn-outline-primary",3,"click",4,"ngIf"],[1,"btn","btn-outline-primary",3,"click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,Z,6,2,"ng-container",0),a.ɵɵtext(1,"\n")),2&e&&a.ɵɵproperty("ngIf",t.isPaging()?t.pagedCiphers:t.ciphers)},directives:[x.NgIf,S.InfiniteScrollDirective,x.NgForOf,b.CheckboxControlValueAccessor,w.StopPropDirective,b.NgControlStatus,b.NgModel,C.IconComponent,I.RouterLinkWithHref,E.MenuTriggerForDirective,P.A11yTitleDirective,O.MenuComponent,k.MenuItemComponent,A.OrganizationNameBadgeComponent],pipes:[T.I18nPipe,M.GetOrgNameFromIdPipe],encapsulation:2})},60962:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;n(91674),n(45330),n(3174),n(51554),n(36631),n(73828);const r=n(82789),o=n(49624),a=n(53994),s=n(86305),l=n(32621),c=n(3174),d=n(73828),p=n(51554),u=n(45330),m=n(91674),h=n(36631),v=n(96832),f=n(56820),g=n(57490),y=n(8863),x=n(39159),S=n(99729);function b(e,t){if(1&e&&(l.ɵɵelementStart(0,"small"),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.cipher.name)}}function w(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"div",17),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"button",18),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().selectAll(!0)})),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"button",18),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().selectAll(!1)})),l.ɵɵtext(7),l.ɵɵpipe(8,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd()}2&e&&(l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(4,2,"selectAll"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function C(e,t){1&e&&(l.ɵɵelementStart(0,"div"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function I(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"tr",21),l.ɵɵlistener("click",(function(){const t=l.ɵɵrestoreView(e).$implicit;return l.ɵɵnextContext(2).check(t)})),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"td",22),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"input",23),l.ɵɵlistener("ngModelChange",(function(t){return l.ɵɵrestoreView(e).$implicit.checked=t})),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"td"),l.ɵɵtext(8),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;l.ɵɵadvance(4),l.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),l.ɵɵproperty("ngModel",e.checked),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementStart(0,"table",19),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"tbody"),l.ɵɵtext(3,"\n "),l.ɵɵtemplate(4,I,10,3,"tr",20),l.ɵɵtext(5,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(4),l.ɵɵproperty("ngForOf",e.collections)}}class P extends s.CollectionsComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o),this.apiService=r,this.allowSelectNone=!0}loadCipher(){const e=Object.create(null,{loadCipher:{get:()=>super.loadCipher}});return i(this,void 0,void 0,(function*(){if(!this.organization.canViewAllCollections)return yield e.loadCipher.call(this);const t=yield this.apiService.getCipherAdmin(this.cipherId);return new o.Cipher(new r.CipherData(t))}))}loadCipherCollections(){return this.organization.canViewAllCollections?this.collectionIds:super.loadCipherCollections()}loadCollections(){return this.organization.canViewAllCollections?Promise.resolve(this.collections):super.loadCollections()}saveCollections(){if(this.organization.canEditAnyCollection){const e=new a.CipherCollectionsRequest(this.cipherDomain.collectionIds);return this.apiService.putCipherCollectionsAdmin(this.cipherId,e)}return super.saveCollections()}}t.CollectionsComponent=P,P.ɵfac=function(e){return new(e||P)(l.ɵɵdirectiveInject(c.CollectionService),l.ɵɵdirectiveInject(d.PlatformUtilsService),l.ɵɵdirectiveInject(p.I18nService),l.ɵɵdirectiveInject(u.CipherService),l.ɵɵdirectiveInject(m.ApiService),l.ɵɵdirectiveInject(h.LogService))},P.ɵcmp=l.ɵɵdefineComponent({type:P,selectors:[["app-org-vault-collections"]],features:[l.ɵɵInheritDefinitionFeature],decls:63,vars:27,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵtemplate(12,b,2,1,"small",6),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementStart(15,"button",7),l.ɵɵpipe(16,"i18n"),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"span",8),l.ɵɵtext(19,"×"),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"div",9),l.ɵɵtext(24,"\n "),l.ɵɵelementStart(25,"p"),l.ɵɵtext(26),l.ɵɵpipe(27,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"div",10),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"h3"),l.ɵɵtext(32),l.ɵɵpipe(33,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,w,10,6,"div",11),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵtemplate(38,C,3,3,"div",6),l.ɵɵtext(39,"\n "),l.ɵɵtemplate(40,E,7,1,"table",12),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementStart(43,"div",13),l.ɵɵtext(44,"\n "),l.ɵɵelementStart(45,"button",14),l.ɵɵtext(46,"\n "),l.ɵɵelement(47,"i",15),l.ɵɵpipe(48,"i18n"),l.ɵɵtext(49,"\n "),l.ɵɵelementStart(50,"span"),l.ɵɵtext(51),l.ɵɵpipe(52,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(53,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementStart(55,"button",16),l.ɵɵtext(56),l.ɵɵpipe(57,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(58,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(59,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(60,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(61,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(62,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(11,13,"collections"),"\n "),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.cipher),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(16,15,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(27,17,"collectionsDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(33,19,"collections")),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.collections&&t.collections.length),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",!t.collections||!t.collections.length),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.collections&&t.collections.length),l.ɵɵadvance(5),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(48,21,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(52,23,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(57,25,"cancel"),"\n ")}},directives:[v.ɵNgNoValidate,v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.NgIf,y.A11yTitleDirective,g.NgForOf,v.CheckboxControlValueAccessor,x.StopPropDirective,v.NgControlStatus,v.NgModel],pipes:[S.I18nPipe],encapsulation:2})},49173:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OssRoutingModule=void 0;const r=n(68012),o=n(76299),a=n(10517),s=n(2821),l=n(33642),c=n(4802),d=n(33154),p=n(79346),u=n(36729),m=n(39253),h=n(85175),v=n(48229),f=n(66686),g=n(12579),y=n(23291),x=n(27359),S=n(37565),b=n(6745),w=n(85002),C=n(52e3),I=n(61841),E=n(16823),P=n(53767),O=n(74155),k=n(72855),A=n(78482),T=n(82813),M=n(58728),B=n(532),D=n(10116),R=n(12721),F=n(41764),U=n(28964),V=n(82477),N=n(21362),_=n(26140),j=n(8042),z=n(56038),H=n(44118),L=n(32621),K=(n(68012),[{path:"",component:E.FrontendLayoutComponent,data:{doNotSaveUrl:!0},children:[{path:"",pathMatch:"full",children:[],canActivate:[I.HomeGuard]},{path:"login",component:u.LoginComponent,canActivate:[s.UnauthGuard]},{path:"2fa",component:x.TwoFactorComponent,canActivate:[s.UnauthGuard]},{path:"register",component:v.RegisterComponent,canActivate:[s.UnauthGuard],data:{titleId:"createAccount"}},{path:"sso",component:y.SsoComponent,canActivate:[s.UnauthGuard],data:{titleId:"enterpriseSingleSignOn"}},{path:"set-password",component:g.SetPasswordComponent,data:{titleId:"setMasterPassword"}},{path:"hint",component:d.HintComponent,canActivate:[s.UnauthGuard],data:{titleId:"passwordHint"}},{path:"lock",component:p.LockComponent,canActivate:[a.LockGuard]},{path:"verify-email",component:w.VerifyEmailTokenComponent},{path:"accept-organization",component:c.AcceptOrganizationComponent,data:{titleId:"joinOrganization",doNotSaveUrl:!1}},{path:"accept-emergency",component:l.AcceptEmergencyComponent,data:{titleId:"acceptEmergency",doNotSaveUrl:!1}},{path:"accept-families-for-enterprise",component:O.AcceptFamilySponsorshipComponent,data:{titleId:"acceptFamilySponsorship",doNotSaveUrl:!1}},{path:"recover",pathMatch:"full",redirectTo:"recover-2fa"},{path:"recover-2fa",component:h.RecoverTwoFactorComponent,canActivate:[s.UnauthGuard],data:{titleId:"recoverAccountTwoStep"}},{path:"recover-delete",component:m.RecoverDeleteComponent,canActivate:[s.UnauthGuard],data:{titleId:"deleteAccount"}},{path:"verify-recover-delete",component:C.VerifyRecoverDeleteComponent,canActivate:[s.UnauthGuard],data:{titleId:"deleteAccount"}},{path:"send/:sendId/:key",component:A.AccessComponent,data:{title:"Bitwarden Send"}},{path:"update-temp-password",component:b.UpdateTempPasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"updateTempPassword"}},{path:"update-password",component:S.UpdatePasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"updatePassword"}},{path:"remove-password",component:f.RemovePasswordComponent,canActivate:[o.AuthGuard],data:{titleId:"removeMasterPassword"}}]},{path:"",component:P.UserLayoutComponent,canActivate:[o.AuthGuard],children:[{path:"vault",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(85006)))).IndividualVaultModule}))},{path:"sends",component:T.SendComponent,data:{title:"Send"}},{path:"create-organization",component:B.CreateOrganizationComponent,data:{titleId:"newOrganization"}},{path:"settings",component:V.SettingsComponent,children:[{path:"",pathMatch:"full",redirectTo:"account"},{path:"account",component:M.AccountComponent,data:{titleId:"myAccount"}},{path:"preferences",component:U.PreferencesComponent,data:{titleId:"preferences"}},{path:"security",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(17587)))).SecurityRoutingModule}))},{path:"domain-rules",component:D.DomainRulesComponent,data:{titleId:"domainRules"}},{path:"subscription",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(63067)))).SubscriptionRoutingModule}))},{path:"emergency-access",children:[{path:"",component:F.EmergencyAccessComponent,data:{titleId:"emergencyAccess"}},{path:":id",component:R.EmergencyAccessViewComponent,data:{titleId:"emergencyAccess"}}]},{path:"sponsored-families",component:N.SponsoredFamiliesComponent,data:{titleId:"sponsoredFamilies"}}]},{path:"tools",component:H.ToolsComponent,canActivate:[o.AuthGuard],children:[{path:"",pathMatch:"full",redirectTo:"generator"},{path:"import",component:z.ImportComponent,data:{titleId:"importData"}},{path:"export",component:_.ExportComponent,data:{titleId:"exportVault"}},{path:"generator",component:j.GeneratorComponent,data:{titleId:"generator"}}]},{path:"reports",loadChildren:()=>i(void 0,void 0,void 0,(function*(){return(yield Promise.resolve().then((()=>n(26627)))).ReportsRoutingModule}))},{path:"setup/families-for-enterprise",component:k.FamiliesForEnterpriseSetupComponent}]},{path:"organizations",loadChildren:()=>Promise.resolve().then((()=>n(64525))).then((e=>e.OrganizationsRoutingModule))}]);class q{}t.OssRoutingModule=q,q.ɵfac=function(e){return new(e||q)},q.ɵmod=L.ɵɵdefineNgModule({type:q}),q.ɵinj=L.ɵɵdefineInjector({imports:[[r.RouterModule.forRoot(K,{useHash:!0,paramsInheritanceStrategy:"always"})],r.RouterModule]})},77537:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OssModule=void 0;const i=n(30322),r=n(65691),o=n(84696),a=n(38595),s=n(98528),l=n(32621);class c{}t.OssModule=c,c.ɵfac=function(e){return new(e||c)},c.ɵmod=l.ɵɵdefineNgModule({type:c}),c.ɵinj=l.ɵɵdefineInjector({imports:[[o.SharedModule,i.LooseComponentsModule,a.VaultFilterModule,s.OrganizationBadgeModule,r.PipesModule],i.LooseComponentsModule,a.VaultFilterModule,s.OrganizationBadgeModule,r.PipesModule]})},30773:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProvidersComponent=void 0;n(51554),n(68291);const r=n(82769),o=n(32621),a=n(68291),s=n(51554),l=n(53280),c=n(57490),d=n(59964),p=n(15370),u=n(68012),m=n(99729);function h(e,t){1&e&&(o.ɵɵelementStart(0,"p",4),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function v(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",13),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"providerIsDisabled")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"providerIsDisabled")))}const f=function(e){return["/providers",e]};function g(e,t){if(1&e&&(o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",10),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"app-avatar",11),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"a",12),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,v,9,6,"ng-container",3),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(4),o.ɵɵproperty("data",e.name)("circle",!0)("fontSize",14),o.ɵɵadvance(5),o.ɵɵproperty("routerLink",o.ɵɵpureFunction1(6,f,e.id)),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.enabled)}}function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",8),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,g,15,8,"tr",9),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.providers)}}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,y,7,1,"table",7),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.providers&&e.providers.length)}}class S{constructor(e,t){this.providerService=e,this.i18nService=t,this.loaded=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){document.body.classList.remove("layout_frontend"),yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.providerService.getAll();e.sort(r.Utils.getSortFunction(this.i18nService,"name")),this.providers=e,this.loaded=!0}))}}t.ProvidersComponent=S,S.ɵfac=function(e){return new(e||S)(o.ɵɵdirectiveInject(a.ProviderService),o.ɵɵdirectiveInject(s.I18nService))},S.ɵcmp=o.ɵɵdefineComponent({type:S,selectors:[["app-providers"]],decls:18,vars:5,consts:[[1,"container","page-content"],[1,"page-header","d-flex"],["class","text-muted",4,"ngIf"],[4,"ngIf"],[1,"text-muted"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"sr-only"],["class","table table-hover table-list",4,"ngIf"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","circle","fontSize"],["href","#",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-danger",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelement(0,"app-navbar"),o.ɵɵtext(1,"\n"),o.ɵɵelementStart(2,"div",0),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"h1"),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,h,9,6,"p",2),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,x,4,1,"ng-container",3),o.ɵɵtext(14,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n"),o.ɵɵelement(16,"app-footer"),o.ɵɵtext(17,"\n")),2&e&&(o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,3,"providers")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!t.loaded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.loaded))},directives:[l.NavbarComponent,c.NgIf,d.FooterComponent,c.NgForOf,p.AvatarComponent,u.RouterLinkWithHref],pipes:[m.I18nPipe],encapsulation:2})},80446:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BreachReportComponent=void 0;n(42982),n(73569);const r=n(32621),o=n(42982),a=n(73569),s=n(96832),l=n(56820),c=n(52767),d=n(57490),p=n(51626),u=n(99729);function m(e,t){1&e&&(r.ɵɵelementStart(0,"p"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(2,1,"reportError"),"..."))}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",16),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"goodNews")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind2(3,4,"breachUsernameNotFound",e.checkedUsername),"\n ")}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",17),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"breachFound")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind3(3,4,"breachUsernameFound",e.checkedUsername,e.breachedAccounts.length),"\n ")}}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"li"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(1),r.ɵɵtextInterpolate(e)}}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"li",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"img",22),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",23),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",24),r.ɵɵtext(12),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelement(14,"p",25),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"p",26),r.ɵɵtext(17),r.ɵɵpipe(18,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"ul"),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,f,2,1,"li",27),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",28),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"dl"),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"dt"),r.ɵɵtext(31),r.ɵɵpipe(32,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"dd"),r.ɵɵtext(35),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"dt"),r.ɵɵtext(38),r.ɵɵpipe(39,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"dd"),r.ɵɵtext(42),r.ɵɵpipe(43,"number"),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"dt"),r.ɵɵtext(46),r.ɵɵpipe(47,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementStart(49,"dd"),r.ɵɵtext(50),r.ɵɵpipe(51,"date"),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementStart(53,"dt"),r.ɵɵtext(54),r.ɵɵpipe(55,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(56,"\n "),r.ɵɵelementStart(57,"dd"),r.ɵɵtext(58),r.ɵɵpipe(59,"date"),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(63,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(6),r.ɵɵproperty("src",e.logoPath,r.ɵɵsanitizeUrl),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.title),r.ɵɵadvance(2),r.ɵɵproperty("innerHTML",e.description,r.ɵɵsanitizeHtml),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(18,13,"compromisedData"),":"),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",e.dataClasses),r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(32,15,"website")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(e.domain),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(39,17,"affectedUsers")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(43,19,e.pwnCount)),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(47,21,"breachOccurred")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(51,23,e.breachDate,"mediumDate")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(55,26,"breachReported")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(59,28,e.addedDate,"mediumDate"))}}function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"ul",18),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,g,64,31,"li",19),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.breachedAccounts)}}function x(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,h,4,7,"app-callout",13),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,v,4,8,"app-callout",14),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,y,4,1,"ul",15),r.ɵɵtext(7,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.breachedAccounts.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.breachedAccounts.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.breachedAccounts.length)}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",11),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,m,3,3,"p",12),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,x,8,3,"ng-container",12),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.error),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.error)}}class b{constructor(e,t){this.auditService=e,this.stateService=t,this.error=!1,this.breachedAccounts=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.username=yield this.stateService.getEmail()}))}submit(){return i(this,void 0,void 0,(function*(){this.error=!1,this.username=this.username.toLowerCase();try{this.formPromise=this.auditService.breachedAccounts(this.username),this.breachedAccounts=yield this.formPromise}catch(e){this.error=!0}this.checkedUsername=this.username}))}}t.BreachReportComponent=b,b.ɵfac=function(e){return new(e||b)(r.ɵɵdirectiveInject(o.AuditService),r.ɵɵdirectiveInject(a.StateService))},b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-breach-report"]],decls:43,vars:22,consts:[[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"form-group","col-6"],["for","username"],["id","username","type","text","name","Username","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-text","text-muted"],["bit-button","","buttonType","primary","type","submit",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],[1,"mt-4"],[4,"ngIf"],["type","success",3,"title",4,"ngIf"],["type","danger",3,"title",4,"ngIf"],["class","list-group list-group-breach",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"list-group","list-group-breach"],["class","list-group-item min-height-fix",4,"ngFor","ngForOf"],[1,"list-group-item","min-height-fix"],[1,"col-2","text-center"],["alt","",1,"img-fluid",3,"src"],[1,"col-7"],[1,"text-lg"],[3,"innerHTML"],[1,"mb-1"],[4,"ngFor","ngForOf"],[1,"col-3"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementStart(7,"p"),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n"),r.ɵɵelementStart(11,"form",1,2),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"div",3),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",4),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"label",5),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"input",6),r.ɵɵlistener("ngModelChange",(function(e){return t.username=e})),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"small",7),r.ɵɵtext(25),r.ɵɵpipe(26,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"button",8),r.ɵɵtext(31,"\n "),r.ɵɵelement(32,"i",9),r.ɵɵpipe(33,"i18n"),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"span"),r.ɵɵtext(36),r.ɵɵpipe(37,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n"),r.ɵɵtemplate(41,S,6,2,"div",10),r.ɵɵtext(42,"\n")),2&e){const e=r.ɵɵreference(12);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,10,"dataBreachReport")),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,12,"breachDesc")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,14,"username")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.username),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(26,16,"breachCheckUsernameEmail")),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(33,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(37,20,"checkBreaches")),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!e.loading&&t.checkedUsername)}},directives:[s.NgControlStatusGroup,s.NgForm,l.ApiActionDirective,s.DefaultValueAccessor,s.RequiredValidator,s.NgControlStatus,s.NgModel,c.ButtonComponent,d.NgIf,p.CalloutComponent,d.NgForOf],pipes:[u.I18nPipe,d.DecimalPipe,d.DatePipe],encapsulation:2})},84507:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CipherReportComponent=void 0;const r=n(32621),o=(n(64684),n(45552),n(44809),n(73569),n(34453)),a=n(93880),s=n(41141),l=n(32621),c=(n(64684),n(45552),n(73569),n(44809),["cipherAddEdit"]);class d{constructor(e,t,n,i,r){this.modalService=e,this.messagingService=t,this.requiresPaid=n,this.stateService=i,this.passwordRepromptService=r,this.loading=!1,this.hasLoaded=!1,this.ciphers=[]}load(){return i(this,void 0,void 0,(function*(){this.loading=!0,yield this.setCiphers(),this.loading=!1,this.hasLoaded=!0}))}selectCipher(e){return i(this,void 0,void 0,(function*(){if(!(yield this.repromptCipher(e)))return;const t=null!=this.organization?a.AddEditComponent:s.AddEditComponent,[n,r]=yield this.modalService.openViewRef(t,this.cipherAddEditModalRef,(t=>{null!=this.organization&&(t.organization=this.organization,t.organizationId=this.organization.id),t.cipherId=null==e?null:e.id,t.onSavedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()})))),t.onDeletedCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()})))),t.onRestoredCipher.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),yield this.load()}))))}));return r}))}checkAccess(){return i(this,void 0,void 0,(function*(){if(null!=this.organization){if(this.requiresPaid&&!this.organization.useTotp)return this.messagingService.send("upgradeOrganization",{organizationId:this.organization.id}),!1}else{const e=yield this.stateService.getCanAccessPremium();if(this.requiresPaid&&!e)return this.messagingService.send("premiumRequired"),this.loading=!1,!1}return!0}))}setCiphers(){return i(this,void 0,void 0,(function*(){this.ciphers=[]}))}repromptCipher(e){return i(this,void 0,void 0,(function*(){return e.reprompt===o.CipherRepromptType.None||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.CipherReportComponent=d,d.ɵfac=function(e){l.ɵɵinvalidFactory()},d.ɵdir=l.ɵɵdefineDirective({type:d,viewQuery:function(e,t){if(1&e&&l.ɵɵviewQuery(c,7,r.ViewContainerRef),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first)}}})},8489:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ExposedPasswordsReportComponent=void 0;n(64684),n(42982),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(42982),c=n(64684),d=n(45552),p=n(73569),u=n(44809),m=n(52767),h=n(57490),v=n(51626),f=n(18310),g=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noExposedPasswords"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",19),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",21),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",22),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",21),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,b,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,9,6,"ng-container",7),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,I,9,6,"ng-container",7),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span",18),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵpipe(29,"number"),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(28,7,"exposedXTimes",a.ɵɵpipeBind1(29,10,i.exposedPasswordMap.get(e.id))),"\n ")}}function P(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,E,32,12,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,4,"exposedPasswordsFound")),a.ɵɵproperty("useAlertRole",!0),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,6,"exposedPasswordsFoundDesc",a.ɵɵpipeBind1(6,9,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function O(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",5),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",6),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,P,16,11,"ng-container",7),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function k(e,t){}class A extends o.CipherReportComponent{constructor(e,t,n,i,r,o){super(n,i,!0,r,o),this.cipherService=e,this.auditService=t,this.exposedPasswordMap=new Map}ngOnInit(){this.checkAccess()}load(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&e.load.call(this)}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[],n=[];e.forEach((e=>{if(e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted)return;const i=this.auditService.passwordLeaked(e.login.password).then((n=>{n>0&&(t.push(e),this.exposedPasswordMap.set(e.id,n))}));n.push(i)})),yield Promise.all(n),this.ciphers=t}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}}t.ExposedPasswordsReportComponent=A,A.ɵfac=function(e){return new(e||A)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.AuditService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.MessagingService),a.ɵɵdirectiveInject(p.StateService),a.ɵɵdirectiveInject(u.PasswordRepromptService))},A.ɵcmp=a.ɵɵdefineComponent({type:A,selectors:[["app-exposed-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:26,vars:14,consts:[[1,"page-header"],["bit-button","","buttonType","primary","type","button",1,"btn-submit",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],[4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title","useAlertRole"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n"),a.ɵɵelementStart(7,"p"),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementStart(11,"button",1),a.ɵɵlistener("click",(function(){return t.load()})),a.ɵɵtext(12,"\n "),a.ɵɵelement(13,"i",2),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span"),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n"),a.ɵɵtemplate(21,O,6,2,"div",3),a.ɵɵtext(22,"\n"),a.ɵɵtemplate(23,k,0,0,"ng-template",null,4,a.ɵɵtemplateRefExtractor),a.ɵɵtext(25,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,6,"exposedPasswordsReport")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,8,"exposedPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("disabled",t.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(14,10,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(18,12,"checkExposedPasswords")),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.ButtonComponent,h.NgIf,v.CalloutComponent,h.NgForOf,f.IconComponent,g.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},66916:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InactiveTwoFactorReportComponent=void 0;n(64684),n(45330),n(36631),n(45552),n(44809),n(73569);const r=n(32773),o=n(82769),a=n(84507),s=n(32621),l=n(45330),c=n(64684),d=n(45552),p=n(73569),u=n(36631),m=n(44809),h=n(57490),v=n(51626),f=n(18310),g=n(1142),y=n(39159),x=n(99729);function S(e,t){1&e&&(s.ɵɵelementStart(0,"small"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",4),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",8),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"goodNews")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"noInactive2fa"),"\n "))}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",18),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"shared")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",19),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",5),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"attachments")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(s.ɵɵelementStart(0,"a",20),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext().$implicit,t=s.ɵɵnextContext(3);s.ɵɵpropertyInterpolate("href",t.cipherDocs.get(e.id),s.ɵɵsanitizeUrl),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,2,"instructions"),"")}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",12),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"app-vault-icon",13),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"td",14),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"a",15),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(3).selectCipher(t)})),s.ɵɵpipe(10,"i18n"),s.ɵɵtext(11),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,C,9,6,"ng-container",1),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,I,9,6,"ng-container",1),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"br"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"small"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"td",16),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,E,3,4,"a",17),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(4),s.ɵɵproperty("cipher",e),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(10,7,"editItem")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.name),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!n.organization&&e.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.hasAttachments),s.ɵɵadvance(5),s.ɵɵtextInterpolate(e.subTitle),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",n.cipherDocs.has(e.id))}}function O(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",9),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"number"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"table",10),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"tbody"),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,P,28,9,"tr",11),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"inactive2faFound")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(5,5,"inactive2faFoundDesc",s.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),s.ɵɵadvance(8),s.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",6),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,w,4,6,"app-callout",7),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,O,16,10,"ng-container",1),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.ciphers.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends a.CipherReportComponent{constructor(e,t,n,i,r,o){super(t,n,!0,i,o),this.cipherService=e,this.logService=r,this.services=new Map,this.cipherDocs=new Map}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){try{yield this.load2fa()}catch(e){this.logService.error(e)}if(this.services.size>0){const e=yield this.getAllCiphers(),t=[],n=[],i=new Map;e.forEach((e=>{if(e.type===r.CipherType.Login&&(null==e.login.totp||""===e.login.totp)&&e.login.hasUris&&!e.isDeleted)for(let n=0;n0)return;const e=yield fetch(new Request("https://2fa.directory/api/v3/totp.json"));if(200!==e.status)throw new Error;const t=yield e.json();for(const n of t){const e=n[1];if(null!=e.domain&&null!=e.documentation){if(null!=e["additional-domains"])for(const t of e["additional-domains"])this.services.set(t,e.documentation);this.services.set(e.domain,e.documentation)}}}))}}t.InactiveTwoFactorReportComponent=T,T.ɵfac=function(e){return new(e||T)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.ModalService),s.ɵɵdirectiveInject(d.MessagingService),s.ɵɵdirectiveInject(p.StateService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.PasswordRepromptService))},T.ɵcmp=s.ɵɵdefineComponent({type:T,selectors:[["app-inactive-two-factor-report"]],features:[s.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"text-right"],["class","badge badge-primary","target","_blank","rel","noopener",3,"href",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["target","_blank","rel","noopener",1,"badge","badge-primary",3,"href"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵtemplate(5,S,9,6,"small",1),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"p"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n"),s.ɵɵtemplate(13,b,9,6,"div",1),s.ɵɵtext(14,"\n"),s.ɵɵtemplate(15,k,6,2,"div",2),s.ɵɵtext(16,"\n"),s.ɵɵtemplate(17,A,0,0,"ng-template",null,3,s.ɵɵtemplateRefExtractor),s.ɵɵtext(19,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,5,"inactive2faReport"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,7,"inactive2faReportDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.hasLoaded))},directives:[h.NgIf,v.CalloutComponent,h.NgForOf,f.IconComponent,g.StopClickDirective,y.StopPropDirective],pipes:[x.I18nPipe,h.DecimalPipe],encapsulation:2})},50702:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReportCardComponent=t.ReportTypes=void 0;n(61248),n(45552),n(73569);const r=n(32621),o=n(73569),a=n(45552),s=n(61248),l=n(68012),c=n(57490),d=n(25108),p=n(99729);function u(e,t){1&e&&(r.ɵɵelementStart(0,"span",8),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"premium")))}const m=function(e){return{"tw-grayscale":e}};!function(e){e.exposedPasswords="exposedPasswords",e.reusedPasswords="reusedPasswords",e.weakPasswords="weakPasswords",e.unsecuredWebsites="unsecuredWebsites",e.inactive2fa="inactive2fa",e.dataBreach="dataBreach"}(t.ReportTypes||(t.ReportTypes={}));const h={exposedPasswords:{title:"exposedPasswordsReport",description:"exposedPasswordsReportDesc",route:"exposed-passwords-report",icon:'\n \n \n \n \n \n \n \n \n \n \n \n \n ',requiresPremium:!0},reusedPasswords:{title:"reusedPasswordsReport",description:"reusedPasswordsReportDesc",route:"reused-passwords-report",icon:'\n \n \n \n \n \n ',requiresPremium:!0},weakPasswords:{title:"weakPasswordsReport",description:"weakPasswordsReportDesc",route:"weak-passwords-report",icon:'\n \n \n \n \n \n \n ',requiresPremium:!0},unsecuredWebsites:{title:"unsecuredWebsitesReport",description:"unsecuredWebsitesReportDesc",route:"unsecured-websites-report",icon:'\n \n \n \n \n \n \n \n \n ',requiresPremium:!0},inactive2fa:{title:"inactive2faReport",description:"inactive2faReportDesc",route:"inactive-two-factor-report",icon:'\n \n \n \n \n \n \n ',requiresPremium:!0},dataBreach:{title:"dataBreachReport",description:"breachDesc",route:"breach-report",icon:'\n \n \n \n \n \n \n \n \n \n \n ',requiresPremium:!1}};class v{constructor(e,t,n){this.stateService=e,this.messagingService=t,this.sanitizer=n}ngOnInit(){return i(this,void 0,void 0,(function*(){this.report=h[this.type],this.hasPremium=yield this.stateService.getCanAccessPremium()}))}get premium(){return this.report.requiresPremium&&!this.hasPremium}get route(){return this.premium?null:this.report.route}get icon(){return this.sanitizer.bypassSecurityTrustHtml(this.report.icon)}click(){this.premium&&this.messagingService.send("premiumRequired")}}t.ReportCardComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.StateService),r.ɵɵdirectiveInject(a.MessagingService),r.ɵɵdirectiveInject(s.DomSanitizer))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-report-card"]],inputs:{type:"type"},decls:24,vars:15,consts:[[1,"tw-border","tw-border-solid","tw-border-secondary-300","tw-rounded","tw-overflow-hidden","tw-h-full","tw-w-72","tw-block","!tw-text-main","hover:tw-no-underline","hover:tw-scale-105","tw-transition-all","focus:tw-outline-none","focus:tw-ring","focus:tw-ring-offset-2","focus:tw-ring-primary-700",3,"routerLink","click"],[1,"tw-relative"],[1,"tw-text-center","tw-h-28","tw-flex","tw-bg-background-alt2","tw-text-primary-300",3,"ngClass"],[1,"tw-m-auto",3,"innerHtml"],[1,"tw-p-5",3,"ngClass"],[1,"tw-text-xl","tw-font-bold","tw-mb-4"],[1,"tw-mb-0"],["bit-badge","","badgeType","success","class","tw-absolute tw-left-2 tw-top-2 tw-leading-none",4,"ngIf"],["bit-badge","","badgeType","success",1,"tw-absolute","tw-left-2","tw-top-2","tw-leading-none"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"a",0),r.ɵɵlistener("click",(function(){return t.click()})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",4),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",5),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"p",6),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,u,3,3,"span",7),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n")),2&e&&(r.ɵɵproperty("routerLink",t.route),r.ɵɵadvance(4),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(11,m,t.premium)),r.ɵɵadvance(2),r.ɵɵproperty("innerHtml",t.icon,r.ɵɵsanitizeHtml),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction1(13,m,t.report.requiresPremium)),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,7,t.report.title)),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(17,9,t.report.description)),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.premium))},directives:[l.RouterLinkWithHref,c.NgClass,c.NgIf,d.BadgeComponent],pipes:[p.I18nPipe],encapsulation:2})},9539:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportListComponent=void 0;const i=n(50702),r=n(32621),o=n(57490),a=n(50702),s=n(99729);function l(e,t){if(1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"app-report-card",3),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(2),r.ɵɵproperty("type",e)}}class c{constructor(){this.reports=[i.ReportTypes.exposedPasswords,i.ReportTypes.reusedPasswords,i.ReportTypes.weakPasswords,i.ReportTypes.unsecuredWebsites,i.ReportTypes.inactive2fa,i.ReportTypes.dataBreach]}}t.ReportListComponent=c,c.ɵfac=function(e){return new(e||c)},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-report-list"]],decls:16,vars:7,consts:[[1,"page-header"],[1,"tw-inline-grid","tw-grid-cols-3","tw-gap-4"],[4,"ngFor","ngForOf"],[3,"type"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n\n"),r.ɵɵelementStart(7,"p"),r.ɵɵtext(8),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n\n"),r.ɵɵelementStart(11,"div",1),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,l,4,1,"div",2),r.ɵɵtext(14,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"reports")),r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(9,5,"reportsDesc")),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",t.reports))},directives:[o.NgForOf,a.ReportCardComponent],pipes:[s.I18nPipe],encapsulation:2})},26627:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportsRoutingModule=void 0;const i=n(68012),r=n(76299),o=n(80446),a=n(8489),s=n(66916),l=n(9539),c=n(8351),d=n(99997),p=n(51948),u=n(64021),m=n(32621),h=(n(68012),[{path:"",component:c.ReportsComponent,canActivate:[r.AuthGuard],children:[{path:"",pathMatch:"full",component:l.ReportListComponent,data:{homepage:!0}},{path:"breach-report",component:o.BreachReportComponent,data:{titleId:"dataBreachReport"}},{path:"reused-passwords-report",component:d.ReusedPasswordsReportComponent,data:{titleId:"reusedPasswordsReport"}},{path:"unsecured-websites-report",component:p.UnsecuredWebsitesReportComponent,data:{titleId:"unsecuredWebsitesReport"}},{path:"weak-passwords-report",component:u.WeakPasswordsReportComponent,data:{titleId:"weakPasswordsReport"}},{path:"exposed-passwords-report",component:a.ExposedPasswordsReportComponent,data:{titleId:"exposedPasswordsReport"}},{path:"inactive-two-factor-report",component:s.InactiveTwoFactorReportComponent,data:{titleId:"inactive2faReport"}}]}]);class v{}t.ReportsRoutingModule=v,v.ɵfac=function(e){return new(e||v)},v.ɵmod=m.ɵɵdefineNgModule({type:v}),v.ɵinj=m.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(h)],i.RouterModule]})},8351:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ReportsComponent=void 0;const i=n(68012),r=n(14857),o=n(32621),a=n(68012),s=n(57490),l=n(52767),c=n(99729);function d(e,t){1&e&&(o.ɵɵelementStart(0,"a",4),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"backToReports"),"\n "))}class p{constructor(e){this.homepage=!0,this.subscription=e.events.pipe(r.filter((e=>e instanceof i.NavigationEnd))).subscribe((e=>{this.homepage="/reports"==e.url}))}ngOnDestroy(){var e;null===(e=this.subscription)||void 0===e||e.unsubscribe()}}t.ReportsComponent=p,p.ɵfac=function(e){return new(e||p)(o.ɵɵdirectiveInject(a.Router))},p.ɵcmp=o.ɵɵdefineComponent({type:p,selectors:[["app-reports"]],decls:13,vars:1,consts:[[1,"container","page-content"],[1,"row","mt-4"],[1,"col"],["bit-button","","routerLink","./",4,"ngIf"],["bit-button","","routerLink","./"],["aria-hidden","true",1,"bwi","bwi-angle-left"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"router-outlet"),o.ɵɵtext(3,"\n\n "),o.ɵɵelementStart(4,"div",1),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",2),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,d,5,3,"a",3),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(8),o.ɵɵproperty("ngIf",!t.homepage))},directives:[a.RouterOutlet,s.NgIf,l.ButtonComponent,a.RouterLinkWithHref],pipes:[c.I18nPipe],encapsulation:2})},99997:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ReusedPasswordsReportComponent=void 0;n(64684),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(64684),c=n(45552),d=n(73569),p=n(44809),u=n(57490),m=n(51626),h=n(18310),v=n(1142),f=n(39159),g=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noReusedPasswords"),"\n "))}function b(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",19),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function w(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",21),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,b,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,w,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,9,6,"ng-container",1),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,I,9,6,"ng-container",1),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span",18),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(28,7,"reusedXTimes",i.passwordUseMap.get(e.login.password)),"\n ")}}function P(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,E,31,10,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"reusedPasswordsFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"reusedPasswordsFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function O(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,P,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function k(e,t){}class A extends o.CipherReportComponent{constructor(e,t,n,i,r){super(t,n,!0,i,r),this.cipherService=e}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[];this.passwordUseMap=new Map,e.forEach((e=>{e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted||(t.push(e),this.passwordUseMap.has(e.login.password)?this.passwordUseMap.set(e.login.password,this.passwordUseMap.get(e.login.password)+1):this.passwordUseMap.set(e.login.password,1))}));const n=t.filter((e=>this.passwordUseMap.has(e.login.password)&&this.passwordUseMap.get(e.login.password)>1));this.ciphers=n}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}}t.ReusedPasswordsReportComponent=A,A.ɵfac=function(e){return new(e||A)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.ModalService),a.ɵɵdirectiveInject(c.MessagingService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PasswordRepromptService))},A.ɵcmp=a.ɵɵdefineComponent({type:A,selectors:[["app-reused-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],[1,"badge","badge-warning"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,y,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,x,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,O,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,k,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"reusedPasswordsReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"reusedPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[u.NgIf,m.CalloutComponent,u.NgForOf,h.IconComponent,v.StopClickDirective,f.StopPropDirective],pipes:[g.I18nPipe,u.DecimalPipe],encapsulation:2})},51948:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UnsecuredWebsitesReportComponent=void 0;n(64684),n(45330),n(45552),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(64684),c=n(45552),d=n(73569),p=n(44809),u=n(57490),m=n(51626),h=n(18310),v=n(1142),f=n(39159),g=n(99729);function y(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noUnsecuredWebsites"),"\n "))}function b(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",16),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function w(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",17),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function C(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"a",15),a.ɵɵlistener("click",(function(){const t=a.ɵɵrestoreView(e).$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(10,"i18n"),a.ɵɵtext(11),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵtemplate(13,b,9,6,"ng-container",1),a.ɵɵtext(14,"\n "),a.ɵɵtemplate(15,w,9,6,"ng-container",1),a.ɵɵtext(16,"\n "),a.ɵɵelement(17,"br"),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"small"),a.ɵɵtext(20),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(10,6,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!n.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle)}}function I(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,C,23,8,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"unsecuredWebsitesFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"unsecuredWebsitesFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function E(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,S,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,I,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function P(e,t){}class O extends o.CipherReportComponent{constructor(e,t,n,i,r){super(t,n,!0,i,r),this.cipherService=e}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=(yield this.getAllCiphers()).filter((e=>!(e.type!==r.CipherType.Login||!e.login.hasUris||e.isDeleted)&&e.login.uris.some((e=>null!=e.uri&&0===e.uri.indexOf("http://")))));this.ciphers=e}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}}t.UnsecuredWebsitesReportComponent=O,O.ɵfac=function(e){return new(e||O)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.ModalService),a.ɵɵdirectiveInject(c.MessagingService),a.ɵɵdirectiveInject(d.StateService),a.ɵɵdirectiveInject(p.PasswordRepromptService))},O.ɵcmp=a.ɵɵdefineComponent({type:O,selectors:[["app-unsecured-websites-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,y,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,x,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,E,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,P,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"unsecuredWebsitesReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"unsecuredWebsitesReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[u.NgIf,m.CalloutComponent,u.NgForOf,h.IconComponent,v.StopClickDirective,f.StopPropDirective],pipes:[g.I18nPipe,u.DecimalPipe],encapsulation:2})},64021:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WeakPasswordsReportComponent=void 0;n(64684),n(45330),n(45552),n(84275),n(44809),n(73569);const r=n(32773),o=n(84507),a=n(32621),s=n(45330),l=n(84275),c=n(64684),d=n(45552),p=n(73569),u=n(44809),m=n(57490),h=n(51626),v=n(18310),f=n(1142),g=n(39159),y=n(99729);function x(e,t){1&e&&(a.ɵɵelementStart(0,"small"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"div"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(a.ɵɵelementStart(0,"app-callout",8),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"goodNews")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"noWeakPasswords"),"\n "))}function w(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"a",18),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);const t=a.ɵɵnextContext().$implicit;return a.ɵɵnextContext(3).selectCipher(t)})),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"editItem")),a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function C(e,t){if(1&e&&(a.ɵɵtext(0,"\n "),a.ɵɵelementStart(1,"span"),a.ɵɵtext(2),a.ɵɵelementEnd(),a.ɵɵtext(3,"\n ")),2&e){const e=a.ɵɵnextContext().$implicit;a.ɵɵadvance(2),a.ɵɵtextInterpolate(e.name)}}function I(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",19),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"shared")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",20),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",5),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n "),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"attachments")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td",12),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"app-vault-icon",13),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"td",14),a.ɵɵtext(8,"\n "),a.ɵɵtemplate(9,w,6,4,"ng-container",15),a.ɵɵtext(10,"\n "),a.ɵɵtemplate(11,C,4,1,"ng-template",null,16,a.ɵɵtemplateRefExtractor),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,I,9,6,"ng-container",1),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,E,9,6,"ng-container",1),a.ɵɵtext(17,"\n "),a.ɵɵelement(18,"br"),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"small"),a.ɵɵtext(21),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"td",17),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"span"),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵreference(12),i=a.ɵɵnextContext(3);a.ɵɵadvance(4),a.ɵɵproperty("cipher",e),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization||i.canManageCipher(e))("ngIfElse",n),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",!i.organization&&e.organizationId),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.hasAttachments),a.ɵɵadvance(5),a.ɵɵtextInterpolate(e.subTitle),a.ɵɵadvance(5),a.ɵɵclassMapInterpolate1("badge badge-",i.passwordStrengthMap.get(e.id)[1],""),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(28,10,i.passwordStrengthMap.get(e.id)[0]),"\n ")}}function O(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"app-callout",9),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵpipe(6,"number"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"table",10),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"tbody"),a.ɵɵtext(11,"\n "),a.ɵɵtemplate(12,P,31,12,"tr",11),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(15,"\n "),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,3,"weakPasswordsFound")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(5,5,"weakPasswordsFoundDesc",a.ɵɵpipeBind1(6,8,e.ciphers.length)),"\n "),a.ɵɵadvance(8),a.ɵɵproperty("ngForOf",e.ciphers)}}function k(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",6),a.ɵɵtext(1,"\n "),a.ɵɵtemplate(2,b,4,6,"app-callout",7),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,O,16,10,"ng-container",1),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.ciphers.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.ciphers.length)}}function A(e,t){}class T extends o.CipherReportComponent{constructor(e,t,n,i,r,o){super(n,i,!0,r,o),this.cipherService=e,this.passwordGenerationService=t,this.passwordStrengthMap=new Map,this.passwordStrengthCache=new Map}ngOnInit(){const e=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){(yield this.checkAccess())&&(yield e.load.call(this))}))}setCiphers(){return i(this,void 0,void 0,(function*(){const e=yield this.getAllCiphers(),t=[],n=e=>null!=e.login.username&&""!==e.login.username.trim(),i=e=>e.login.password+"_____"+(n(e)?e.login.username:"");e.forEach((e=>{if(e.type!==r.CipherType.Login||null==e.login.password||""===e.login.password||e.isDeleted)return;const o=n(e),a=i(e);if(!this.passwordStrengthCache.has(a)){let t=[];if(o){const n=e.login.username.indexOf("@");t=n>-1?t.concat(e.login.username.substr(0,n).trim().toLowerCase().split(/[^A-Za-z0-9]/)).filter((e=>e.length>=3)):e.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/).filter((e=>e.length>=3))}const n=this.passwordGenerationService.passwordStrength(e.login.password,t.length>0?t:null);this.passwordStrengthCache.set(a,n.score)}const s=this.passwordStrengthCache.get(a);null!=s&&s<=2&&(this.passwordStrengthMap.set(e.id,this.scoreKey(s)),t.push(e))})),t.sort(((e,t)=>this.passwordStrengthCache.get(i(e))-this.passwordStrengthCache.get(i(t)))),this.ciphers=t}))}getAllCiphers(){return this.cipherService.getAllDecrypted()}canManageCipher(e){return!0}scoreKey(e){switch(e){case 4:return["strong","success"];case 3:return["good","primary"];case 2:return["weak","warning"];default:return["veryWeak","danger"]}}}t.WeakPasswordsReportComponent=T,T.ɵfac=function(e){return new(e||T)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.PasswordGenerationService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.MessagingService),a.ɵɵdirectiveInject(p.StateService),a.ɵɵdirectiveInject(u.PasswordRepromptService))},T.ɵcmp=a.ɵɵdefineComponent({type:T,selectors:[["app-weak-passwords-report"]],features:[a.ɵɵInheritDefinitionFeature],decls:20,vars:9,consts:[[1,"page-header"],[4,"ngIf"],["class","mt-4",4,"ngIf"],["cipherAddEdit",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"mt-4"],["type","success",3,"title",4,"ngIf"],["type","success",3,"title"],["type","danger",3,"title"],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],[4,"ngIf","ngIfElse"],["cantManage",""],[1,"text-right"],["href","#","appStopClick","",3,"title","click"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵtemplate(5,x,9,6,"small",1),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵtemplate(13,S,9,6,"div",1),a.ɵɵtext(14,"\n"),a.ɵɵtemplate(15,k,6,2,"div",2),a.ɵɵtext(16,"\n"),a.ɵɵtemplate(17,A,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(19,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,5,"weakPasswordsReport"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded&&t.loading),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(11,7,"weakPasswordsReportDesc")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.hasLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.hasLoaded))},directives:[m.NgIf,h.CalloutComponent,m.NgForOf,v.IconComponent,f.StopClickDirective,g.StopPropDirective],pipes:[y.I18nPipe,m.DecimalPipe],encapsulation:2})},78482:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccessComponent=void 0;n(68012),n(91674),n(85714),n(1659),n(51554),n(73828);const r=n(20971),o=n(70149),a=n(82769),s=n(95708),l=n(74012),c=n(33018),d=n(32621),p=n(51554),u=n(1659),m=n(91674),h=n(73828),v=n(68012),f=n(85714),g=n(96832),y=n(56820),x=n(57490),S=n(51626),b=n(48198),w=n(45728),C=n(99729);function I(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",16),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind2(4,1,"sendCreatorIdentifier",e.creatorIdentifier))}}function E(e,t){1&e&&(d.ɵɵelementStart(0,"div",17),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"app-callout",18),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4),d.ɵɵpipe(5,"i18n"),d.ɵɵelementStart(6,"a",19),d.ɵɵtext(7),d.ɵɵpipe(8,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(9,".\n "),d.ɵɵelementEnd(),d.ɵɵtext(10,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,3,"warning")),d.ɵɵadvance(2),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(5,5,"viewSendHiddenEmailWarning"),"\n "),d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(8,7,"learnMore")))}function P(e,t){1&e&&(d.ɵɵelementStart(0,"div",20),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",21),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",22),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function O(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"p"),d.ɵɵtext(7),d.ɵɵpipe(8,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"div",24),d.ɵɵtext(11,"\n "),d.ɵɵelementStart(12,"label",25),d.ɵɵtext(13),d.ɵɵpipe(14,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"input",26),d.ɵɵlistener("ngModelChange",(function(t){d.ɵɵrestoreView(e);return d.ɵɵnextContext().password=t})),d.ɵɵelementEnd(),d.ɵɵtext(17,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(18,"\n "),d.ɵɵelementStart(19,"div",27),d.ɵɵtext(20,"\n "),d.ɵɵelementStart(21,"button",28),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"span"),d.ɵɵtext(24,"\n "),d.ɵɵelement(25,"i",29),d.ɵɵtext(26),d.ɵɵpipe(27,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(28,"\n "),d.ɵɵelement(29,"i",30),d.ɵɵpipe(30,"i18n"),d.ɵɵtext(31,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(32,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(33,"\n "),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(),t=d.ɵɵreference(1);d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,7,"sendProtectedPassword")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(8,9,"sendProtectedPasswordDontKnow")),d.ɵɵadvance(6),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(14,11,"password")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",e.password),d.ɵɵadvance(5),d.ɵɵproperty("disabled",t.loading),d.ɵɵadvance(5),d.ɵɵtextInterpolate1(" ",d.ɵɵpipeBind1(27,13,"continue"),"\n "),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(30,15,"loading"))}}function k(e,t){1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(2,1,"sendAccessUnavailable"),"\n "))}function A(e,t){1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(2,1,"unexpectedError"),"\n "))}function T(e,t){1&e&&(d.ɵɵelementStart(0,"app-callout",38),d.ɵɵtext(1),d.ɵɵpipe(2,"i18n"),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(1),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(2,1,"sendHiddenByDefault")))}const M=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function B(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",36),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(3).toggleText()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",39),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(3);d.ɵɵadvance(2),d.ɵɵproperty("ngClass",d.ɵɵpureFunction2(4,M,!e.showText,e.showText)),d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,2,"toggleVisibility"),"\n ")}}function D(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵtemplate(2,T,3,3,"app-callout",33),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"div",24),d.ɵɵtext(5,"\n "),d.ɵɵelementStart(6,"textarea",34),d.ɵɵlistener("ngModelChange",(function(t){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).sendText=t})),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵtemplate(9,B,5,7,"button",35),d.ɵɵtext(10,"\n "),d.ɵɵelementStart(11,"button",36),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(2).copyText()})),d.ɵɵtext(12,"\n "),d.ɵɵelement(13,"i",37),d.ɵɵtext(14),d.ɵɵpipe(15,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementContainerEnd()}if(2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.send.text.hidden),d.ɵɵadvance(4),d.ɵɵproperty("ngModel",e.sendText),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",e.send.text.hidden),d.ɵɵadvance(5),d.ɵɵtextInterpolate1(" ",d.ɵɵpipeBind1(15,4,"copyValue"),"\n ")}}function R(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",42),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext(3).download()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",43),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}if(2&e){const e=d.ɵɵnextContext(3);d.ɵɵadvance(3),d.ɵɵtextInterpolate2("\n ",d.ɵɵpipeBind1(4,2,"downloadFile")," (",e.send.file.sizeName,")\n ")}}function F(e,t){1&e&&(d.ɵɵelementStart(0,"button",44),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",30),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,1,"loading")))}function U(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p"),d.ɵɵtext(3),d.ɵɵelementEnd(),d.ɵɵtext(4,"\n "),d.ɵɵtemplate(5,R,5,4,"button",40),d.ɵɵtext(6,"\n "),d.ɵɵtemplate(7,F,5,3,"button",41),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(3),d.ɵɵtextInterpolate(e.send.file.fileName),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!e.downloading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.downloading)}}function V(e,t){if(1&e&&(d.ɵɵelementStart(0,"p",45),d.ɵɵtext(1),d.ɵɵpipe(2,"date"),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext(2);d.ɵɵadvance(1),d.ɵɵtextInterpolate1("\n Expires: ",d.ɵɵpipeBind2(2,1,e.expirationDate,"medium"),"\n ")}}function N(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",23),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"p",20),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"b"),d.ɵɵtext(5),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelement(8,"hr"),d.ɵɵtext(9,"\n "),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,D,17,6,"ng-container",31),d.ɵɵtext(12,"\n "),d.ɵɵtext(13,"\n "),d.ɵɵtemplate(14,U,9,3,"ng-container",31),d.ɵɵtext(15,"\n "),d.ɵɵtemplate(16,V,3,4,"p",32),d.ɵɵtext(17,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.send.name),d.ɵɵadvance(6),d.ɵɵproperty("ngIf",e.send.type===e.sendType.Text),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",e.send.type===e.sendType.File),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.expirationDate)}}class _{constructor(e,t,n,i,r,a){this.i18nService=e,this.cryptoFunctionService=t,this.apiService=n,this.platformUtilsService=i,this.route=r,this.cryptoService=a,this.sendType=o.SendType,this.downloading=!1,this.loading=!0,this.passwordRequired=!1,this.showText=!1,this.unavailable=!1,this.error=!1,this.hideEmail=!1}get sendText(){return null==this.send||null==this.send.text?null:this.showText?this.send.text.text:this.send.text.maskedText}get expirationDate(){return null==this.send||null==this.send.expirationDate?null:this.send.expirationDate}get creatorIdentifier(){return null==this.send||null==this.send.creatorIdentifier?null:this.send.creatorIdentifier}ngOnInit(){this.route.params.subscribe((e=>i(this,void 0,void 0,(function*(){this.id=e.sendId,this.key=e.key,null!=this.key&&null!=this.id&&(yield this.load())}))))}download(){return i(this,void 0,void 0,(function*(){if(null==this.send||null==this.decKey)return;if(this.downloading)return;const e=yield this.apiService.getSendFileDownloadData(this.send,this.accessRequest);if(a.Utils.isNullOrWhitespace(e.url))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("missingSendFile"));this.downloading=!0;const t=yield fetch(new Request(e.url,{cache:"no-store"}));if(200!==t.status)return this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred")),void(this.downloading=!1);try{const e=yield t.arrayBuffer(),n=yield this.cryptoService.decryptFromBytes(e,this.decKey);this.platformUtilsService.saveFile(window,n,null,this.send.file.fileName)}catch(n){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}this.downloading=!1}))}copyText(){this.platformUtilsService.copyToClipboard(this.send.text.text),this.platformUtilsService.showToast("success",null,this.i18nService.t("valueCopied",this.i18nService.t("sendTypeText")))}toggleText(){this.showText=!this.showText}load(){return i(this,void 0,void 0,(function*(){this.unavailable=!1,this.error=!1,this.hideEmail=!1;const e=a.Utils.fromUrlB64ToArray(this.key);if(this.accessRequest=new l.SendAccessRequest,null!=this.password){const t=yield this.cryptoFunctionService.pbkdf2(this.password,e,"sha256",r.SEND_KDF_ITERATIONS);this.accessRequest.password=a.Utils.fromBufferToB64(t)}try{let t=null;this.loading?t=yield this.apiService.postSendAccess(this.id,this.accessRequest):(this.formPromise=this.apiService.postSendAccess(this.id,this.accessRequest),t=yield this.formPromise),this.passwordRequired=!1;const n=new s.SendAccess(t);this.decKey=yield this.cryptoService.makeSendKey(e),this.send=yield n.decrypt(this.decKey),this.showText=null==this.send.text||!this.send.text.hidden}catch(t){t instanceof c.ErrorResponse&&(401===t.statusCode?this.passwordRequired=!0:404===t.statusCode?this.unavailable=!0:this.error=!0)}this.loading=!1,this.hideEmail=null==this.creatorIdentifier&&!this.passwordRequired&&!this.loading&&!this.unavailable}))}}t.AccessComponent=_,_.ɵfac=function(e){return new(e||_)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.CryptoFunctionService),d.ɵɵdirectiveInject(m.ApiService),d.ɵɵdirectiveInject(h.PlatformUtilsService),d.ɵɵdirectiveInject(v.ActivatedRoute),d.ɵɵdirectiveInject(f.CryptoService))},_.ɵcmp=d.ɵɵdefineComponent({type:_,selectors:[["app-send-access"]],decls:55,vars:23,consts:[["ngNativeValidate","",1,"container",3,"appApiAction","ngSubmit"],["form",""],[1,"row","justify-content-center","mt-5"],[1,"col-12"],[1,"lead","text-center","mb-4"],["class","col-12 text-center",4,"ngIf"],["class","col-8",4,"ngIf"],[1,"row","justify-content-center"],[1,"col-5"],[1,"card","d-block"],["class","card-body","class","text-center",4,"ngIf"],["class","card-body",4,"ngIf"],[1,"col-12","text-center","mt-5","text-muted"],[1,"mb-0"],["href","https://www.bitwarden.com/products/send?source=web-vault","target","_blank"],["href","https://vault.bitwarden.com/#/register","target","_blank"],[1,"col-12","text-center"],[1,"col-8"],["type","warning",3,"title"],["href","https://bitwarden.com/help/receive-send/","target","_blank"],[1,"text-center"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-2x","text-muted",3,"title"],[1,"sr-only"],[1,"card-body"],[1,"form-group"],["for","password"],["id","password","type","password","name","Password","required","","appInputVerbatim","","appAutofocus","",1,"text-monospace","form-control",3,"ngModel","ngModelChange"],[1,"d-flex"],["type","submit",1,"btn","btn-primary","btn-block","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-sign-in"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[4,"ngIf"],["class","text-center text-muted",4,"ngIf"],["type","tip",4,"ngIf"],["id","text","rows","8","name","Text","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["class","btn btn-block btn-link","type","button",3,"click",4,"ngIf"],["type","button",1,"btn","btn-block","btn-link",3,"click"],["aria-hidden","true",1,"bwi","bwi-copy"],["type","tip"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["class","btn btn-primary btn-block","type","button",3,"click",4,"ngIf"],["class","btn btn-primary btn-block","type","button","disabled","true",4,"ngIf"],["type","button",1,"btn","btn-primary","btn-block",3,"click"],["aria-hidden","true",1,"bwi","bwi-download"],["type","button","disabled","true",1,"btn","btn-primary","btn-block"],[1,"text-center","text-muted"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"form",0,1),d.ɵɵlistener("ngSubmit",(function(){return t.load()})),d.ɵɵtext(2,"\n "),d.ɵɵelementStart(3,"div",2),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"div",3),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"p",4),d.ɵɵtext(8,"Bitwarden Send"),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,I,6,4,"div",5),d.ɵɵtext(12,"\n "),d.ɵɵtemplate(13,E,11,9,"div",6),d.ɵɵtext(14,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"div",7),d.ɵɵtext(17,"\n "),d.ɵɵelementStart(18,"div",8),d.ɵɵtext(19,"\n "),d.ɵɵelementStart(20,"div",9),d.ɵɵtext(21,"\n "),d.ɵɵtemplate(22,P,9,6,"div",10),d.ɵɵtext(23,"\n "),d.ɵɵtemplate(24,O,34,17,"div",11),d.ɵɵtext(25,"\n "),d.ɵɵtemplate(26,k,3,3,"div",11),d.ɵɵtext(27,"\n "),d.ɵɵtemplate(28,A,3,3,"div",11),d.ɵɵtext(29,"\n "),d.ɵɵtemplate(30,N,18,4,"div",11),d.ɵɵtext(31,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(32,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(33,"\n "),d.ɵɵelementStart(34,"div",12),d.ɵɵtext(35,"\n "),d.ɵɵelementStart(36,"p",13),d.ɵɵtext(37),d.ɵɵpipe(38,"i18n"),d.ɵɵelement(39,"br"),d.ɵɵtext(40),d.ɵɵpipe(41,"i18n"),d.ɵɵelementStart(42,"a",14),d.ɵɵtext(43,"Bitwarden Send"),d.ɵɵelementEnd(),d.ɵɵtext(44),d.ɵɵpipe(45,"i18n"),d.ɵɵelementStart(46,"a",15),d.ɵɵtext(47),d.ɵɵpipe(48,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(49),d.ɵɵpipe(50,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(51,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(52,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(53,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(54,"\n")),2&e&&(d.ɵɵproperty("appApiAction",t.formPromise),d.ɵɵadvance(11),d.ɵɵproperty("ngIf",null!=t.creatorIdentifier),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.hideEmail),d.ɵɵadvance(9),d.ɵɵproperty("ngIf",t.loading),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.passwordRequired),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.unavailable),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&t.error),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loading&&!t.passwordRequired&&t.send),d.ɵɵadvance(7),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(38,13,"sendAccessTaglineProductDesc"),""),d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(41,15,"sendAccessTaglineLearnMore"),"\n "),d.ɵɵadvance(4),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(45,17,"sendAccessTaglineOr"),"\n "),d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(48,19,"sendAccessTaglineSignUp")),d.ɵɵadvance(2),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(50,21,"sendAccessTaglineTryToday"),"\n "))},directives:[g.NgControlStatusGroup,g.NgForm,y.ApiActionDirective,x.NgIf,S.CalloutComponent,g.DefaultValueAccessor,g.RequiredValidator,b.InputVerbatimDirective,w.AutofocusDirective,g.NgControlStatus,g.NgModel,x.NgClass],pipes:[C.I18nPipe,x.DatePipe],encapsulation:2})},167:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;n(57490);const r=n(83810),o=(n(56071),n(51554),n(36631),n(45552),n(73828),n(62166),n(76532),n(73569),n(32621)),a=n(51554),s=n(73828),l=n(56071),c=n(57490),d=n(76532),p=n(73569),u=n(45552),m=n(62166),h=n(36631),v=n(96832),f=n(56820),g=n(8863),y=n(1142),x=n(70452),S=n(51626),b=n(99729);function w(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,1,"sendDisabledWarning")))}function C(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"ul",50),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"li"),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"sendOptionsPolicyInEffect")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(10,4,"sendDisableHideEmailInEffect")))}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",25),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",52),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).send.type=t}))("change",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(3).typeChanged(t)})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",53),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("name","Type_",e.value,""),o.ɵɵpropertyInterpolate1("id","type_",e.value,""),o.ɵɵproperty("ngModel",n.send.type)("value",e.value)("checked",n.send.type===e.value),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("for","type_",e.value,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label"),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,I,7,7,"div",51),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,2,"whatTypeOfSend")),o.ɵɵadvance(3),o.ɵɵproperty("ngForOf",e.typeOptions)}}function P(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",24),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",54),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"textarea",55),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.text.text=t})),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"small",20),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",24),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",25),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"input",56),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.text.hidden=t})),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",57),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,7,"sendTypeText")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.text.text)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,9,"sendTextDesc")),o.ɵɵadvance(8),o.ɵɵproperty("ngModel",e.send.text.hidden)("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,11,"textHiddenByDefault"))}}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"strong",58),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"file")),o.ɵɵadvance(2),o.ɵɵtextInterpolate2("\n ",e.send.file.fileName," (",e.send.file.sizeName,")\n ")}}function k(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",59),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",60),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"small",20),o.ɵɵtext(9),o.ɵɵpipe(10,"i18n"),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,4,"file")),o.ɵɵadvance(3),o.ɵɵproperty("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate2("",o.ɵɵpipeBind1(10,6,"sendFileDesc")," ",o.ɵɵpipeBind1(11,8,"maxFileSize"),"")}}function A(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",24),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,O,6,5,"div",15),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,k,13,10,"div",15),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.editMode)}}function T(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",24),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",61),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",62),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).link=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"sendLinkLabel")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.link)}}function M(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",17),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",63),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",64),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).send.accessCount=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"currentAccessCount")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.accessCount)}}function B(e,t){1&e&&(o.ɵɵelementStart(0,"label",65),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"password")))}function D(e,t){1&e&&(o.ɵɵelementStart(0,"label",65),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"newPassword")))}const R=function(e,t){return{"bwi-angle-down":e,"bwi-chevron-up":t}},F=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function U(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",14),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,w,6,3,"app-callout",15),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,13,6,"app-callout",15),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",17),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"small",20),o.ɵɵtext(17),o.ɵɵpipe(18,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵtemplate(22,E,11,4,"div",21),o.ɵɵtext(23,"\n "),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,P,27,13,"ng-container",15),o.ɵɵtext(26,"\n "),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,A,9,2,"ng-container",15),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"h3",22),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,T,8,4,"div",23),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"div",24),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",25),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"input",26),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().copyLink=t})),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"label",27),o.ɵɵtext(43),o.ɵɵpipe(44,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"div",28),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().toggleOptions()})),o.ɵɵtext(49,"\n "),o.ɵɵelementStart(50,"h3",29),o.ɵɵtext(51),o.ɵɵpipe(52,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelementStart(54,"a",30),o.ɵɵtext(55,"\n "),o.ɵɵelement(56,"i",31),o.ɵɵtext(57,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n "),o.ɵɵelementStart(60,"div",32),o.ɵɵtext(61,"\n "),o.ɵɵelementStart(62,"app-send-efflux-dates",33),o.ɵɵlistener("datesChanged",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().setDates(t)})),o.ɵɵtext(63,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(64,"\n "),o.ɵɵelementStart(65,"div",16),o.ɵɵtext(66,"\n "),o.ɵɵelementStart(67,"div",17),o.ɵɵtext(68,"\n "),o.ɵɵelementStart(69,"label",34),o.ɵɵtext(70),o.ɵɵpipe(71,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementStart(73,"input",35),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.maxAccessCount=t})),o.ɵɵelementEnd(),o.ɵɵtext(74,"\n "),o.ɵɵelementStart(75,"div",36),o.ɵɵtext(76),o.ɵɵpipe(77,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(78,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(79,"\n "),o.ɵɵtemplate(80,M,8,4,"div",37),o.ɵɵtext(81,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(82,"\n "),o.ɵɵelementStart(83,"div",16),o.ɵɵtext(84,"\n "),o.ɵɵelementStart(85,"div",17),o.ɵɵtext(86,"\n "),o.ɵɵtemplate(87,B,3,3,"label",38),o.ɵɵtext(88,"\n "),o.ɵɵtemplate(89,D,3,3,"label",38),o.ɵɵtext(90,"\n "),o.ɵɵelementStart(91,"div",39),o.ɵɵtext(92,"\n "),o.ɵɵelementStart(93,"input",40),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().password=t})),o.ɵɵelementEnd(),o.ɵɵtext(94,"\n "),o.ɵɵelementStart(95,"div",41),o.ɵɵtext(96,"\n "),o.ɵɵelementStart(97,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().togglePasswordVisible()})),o.ɵɵpipe(98,"i18n"),o.ɵɵtext(99,"\n "),o.ɵɵelement(100,"i",43),o.ɵɵtext(101,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(102,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(103,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(104,"\n "),o.ɵɵelementStart(105,"div",36),o.ɵɵtext(106),o.ɵɵpipe(107,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(108,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(109,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(110,"\n "),o.ɵɵelementStart(111,"div",24),o.ɵɵtext(112,"\n "),o.ɵɵelementStart(113,"label",44),o.ɵɵtext(114),o.ɵɵpipe(115,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(116,"\n "),o.ɵɵelementStart(117,"textarea",45),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.notes=t})),o.ɵɵelementEnd(),o.ɵɵtext(118,"\n "),o.ɵɵelementStart(119,"div",36),o.ɵɵtext(120),o.ɵɵpipe(121,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(122,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(123,"\n "),o.ɵɵelementStart(124,"div",24),o.ɵɵtext(125,"\n "),o.ɵɵelementStart(126,"div",25),o.ɵɵtext(127,"\n "),o.ɵɵelementStart(128,"input",46),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.hideEmail=t})),o.ɵɵelementEnd(),o.ɵɵtext(129,"\n "),o.ɵɵelementStart(130,"label",47),o.ɵɵtext(131),o.ɵɵpipe(132,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(133,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(134,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(135,"\n "),o.ɵɵelementStart(136,"div",24),o.ɵɵtext(137,"\n "),o.ɵɵelementStart(138,"div",25),o.ɵɵtext(139,"\n "),o.ɵɵelementStart(140,"input",48),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().send.disabled=t})),o.ɵɵelementEnd(),o.ɵɵtext(141,"\n "),o.ɵɵelementStart(142,"label",49),o.ɵɵtext(143),o.ɵɵpipe(144,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(145,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(146,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(147,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(148,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.disableSend&&e.disableHideEmail),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,43,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.name)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(18,45,"sendNameDesc")),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!e.editMode),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.send.type===e.sendType.Text),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.send.type===e.sendType.File),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,47,"share")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.link),o.ɵɵadvance(6),o.ɵɵproperty("ngModel",e.copyLink),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(44,49,"copySendLinkOnSave")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(52,51,"options")),o.ɵɵadvance(5),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(69,R,!e.showOptions,e.showOptions)),o.ɵɵadvance(4),o.ɵɵproperty("hidden",!e.showOptions),o.ɵɵadvance(2),o.ɵɵproperty("initialDeletionDate",e.send.deletionDate)("initialExpirationDate",e.send.expirationDate)("editMode",e.editMode)("disabled",e.disableSend),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(71,53,"maxAccessCount")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.maxAccessCount)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(77,55,"maxAccessCountDesc")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",!e.hasPassword),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasPassword),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),o.ɵɵproperty("ngModel",e.password)("readOnly",e.disableSend),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(98,57,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(72,F,!e.showPassword,e.showPassword)),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(107,59,"sendPasswordDesc")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(115,61,"notes")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.send.notes)("readOnly",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(121,63,"sendNotesDesc")),o.ɵɵadvance(8),o.ɵɵproperty("ngModel",e.send.hideEmail)("disabled",e.disableHideEmail&&!e.send.hideEmail||e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(132,65,"hideEmail"),"\n "),o.ɵɵadvance(9),o.ɵɵproperty("ngModel",e.send.disabled)("disabled",e.disableSend),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(144,67,"disableThisSend"))}}function V(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",68,69),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).delete()})),o.ɵɵpipe(2,"i18n"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",70),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",71),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(2,6,"delete")),o.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function N(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",66),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,V,9,10,"button",67),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode)}}const _=function(e){return{loading:e}};class j extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,r,a,s,l,o)}copyLinkToClipboard(e){const t=Object.create(null,{copyLinkToClipboard:{get:()=>super.copyLinkToClipboard}});return i(this,void 0,void 0,(function*(){return new Promise((n=>{window.setTimeout((()=>n(t.copyLinkToClipboard.call(this,e))),500)}))}))}}t.AddEditComponent=j,j.ɵfac=function(e){return new(e||j)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.EnvironmentService),o.ɵɵdirectiveInject(c.DatePipe),o.ɵɵdirectiveInject(d.SendService),o.ɵɵdirectiveInject(p.StateService),o.ɵɵdirectiveInject(u.MessagingService),o.ɵɵdirectiveInject(m.PolicyService),o.ɵɵdirectiveInject(h.LogService))},j.ɵcmp=o.ɵɵdefineComponent({type:j,selectors:[["app-send-add-edit"]],features:[o.ɵɵInheritDefinitionFeature],decls:44,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","sendAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","sendAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit","manual",3,"ngClass","disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],[4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","readOnly","ngModelChange"],[1,"form-text","text-muted"],["class","row",4,"ngIf"],[1,"mt-5"],["class","form-group",4,"ngIf"],[1,"form-group"],[1,"form-check"],["type","checkbox","id","copy-link","name","CopyLink",1,"form-check-input",3,"ngModel","ngModelChange"],["for","copy-link",1,"form-check-label"],["id","options-header",1,"section-header","d-flex","flex-row","align-items-center","mt-5",3,"click"],[1,"mb-0","mr-2"],["href","#","appStopClick","","role","button",1,"mb-1"],["aria-hidden","true",1,"bwi",3,"ngClass"],["id","options",3,"hidden"],[3,"initialDeletionDate","initialExpirationDate","editMode","disabled","datesChanged"],["for","maxAccessCount"],["id","maxAccessCount","type","number","name","MaxAccessCount","min","1",1,"form-control",3,"ngModel","readOnly","ngModelChange"],[1,"form-text","text-muted","small"],["class","col-6 form-group",4,"ngIf"],["for","password",4,"ngIf"],[1,"input-group"],["id","password","name","Password",1,"form-control","text-monospace",3,"type","ngModel","readOnly","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","readOnly","ngModelChange"],["type","checkbox","id","hideEmail","name","HideEmail",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","hideEmail",1,"form-check-label"],["type","checkbox","id","disabled","name","Disabled",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","disabled",1,"form-check-label"],[1,"mb-0"],["class","form-check",4,"ngFor","ngForOf"],["type","radio",1,"form-check-input",3,"ngModel","name","id","value","checked","ngModelChange","change"],[1,"form-check-label",3,"for"],["for","text"],["id","text","name","Text.Text","rows","6",1,"form-control",3,"ngModel","readOnly","ngModelChange"],["type","checkbox","id","text-hidden","name","Text.Hidden",1,"form-check-input",3,"ngModel","disabled","ngModelChange"],["for","text-hidden",1,"form-check-label"],[1,"d-block"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file",3,"disabled"],["for","link"],["type","text","readonly","","id","link","name","Link",1,"form-control",3,"ngModel","ngModelChange"],["for","accessCount"],["id","accessCount","type","text","name","AccessCount","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["for","password"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",6),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",7),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,U,149,75,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",9),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"button",10),o.ɵɵtext(25,"\n "),o.ɵɵelement(26,"i",11),o.ɵɵpipe(27,"i18n"),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"span"),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",12),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,N,4,1,"div",13),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(t.title),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,10,"close")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",t.send),o.ɵɵadvance(4),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(18,_,e.loading))("disabled",e.loading||t.disableSend),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(27,12,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,14,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,16,"cancel"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.send)}},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.A11yTitleDirective,c.NgIf,c.NgClass,v.DefaultValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,v.CheckboxControlValueAccessor,y.StopClickDirective,x.EffluxDatesComponent,v.MinValidator,v.NumberValueAccessor,S.CalloutComponent,c.NgForOf,v.RadioControlValueAccessor],pipes:[b.I18nPipe],encapsulation:2})},70452:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EffluxDatesComponent=void 0;n(57490);const i=n(96832),r=n(95546),o=(n(51554),n(73828),n(32621)),a=n(51554),s=n(73828),l=n(57490),c=n(96832),d=n(1142),p=n(99729);function u(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",14),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"input",15),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("readOnly",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disableSend)}}function m(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.twentyFourHour),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.twelveHour,"\n ")}}function h(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",13),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",14),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"select",16),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,m,2,2,"option",17),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("readOnly",e.disableSend),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.safariDeletionTimePresetOptions)}}function v(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",19),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disabled)}}function f(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementContainerStart(1,10),o.ɵɵtext(2,"\n "),o.ɵɵtemplate(3,u,9,2,"ng-container",11),o.ɵɵtext(4,"\n "),o.ɵɵtemplate(5,h,12,3,"ng-container",11),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,v,4,1,"ng-container",12),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd(),o.ɵɵtext(9,"\n ")),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵproperty("ngSwitch",e.browserPath),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","firefox"),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","safari")}}function g(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function y(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function x(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,y,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){o.ɵɵnextContext(2);const e=o.ɵɵreference(9);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function S(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"select",20),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,g,2,2,"option",17),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,x,4,1,"ng-container",4),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.deletionDatePresets),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",0===e.selectedDeletionDatePreset.value)}}function b(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,b,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(9);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",22),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().clearExpiration()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"clear"),"\n "))}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",24),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"input",25),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.twentyFourHour),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.twelveHour,"\n ")}}function P(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",24),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"select",26),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,E,2,2,"option",17),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode)("readOnly",e.disabled),o.ɵɵadvance(2),o.ɵɵproperty("required",!e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.safariExpirationTimePresetOptions)}}function O(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"input",27),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵproperty("readOnly",e.disabled)}}function k(e,t){if(1&e&&(o.ɵɵtext(0,"\n "),o.ɵɵelementContainerStart(1,10),o.ɵɵtext(2,"\n "),o.ɵɵtemplate(3,I,6,4,"div",23),o.ɵɵtext(4,"\n "),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,P,9,4,"div",23),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,O,4,1,"ng-container",12),o.ɵɵtext(9,"\n "),o.ɵɵelementContainerEnd(),o.ɵɵtext(10,"\n ")),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵproperty("ngSwitch",e.browserPath),o.ɵɵadvance(2),o.ɵɵproperty("ngSwitchCase","firefox"),o.ɵɵadvance(3),o.ɵɵproperty("ngSwitchCase","safari")}}function A(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",18),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function T(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function M(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,T,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){o.ɵɵnextContext(2);const e=o.ɵɵreference(32);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}function B(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"select",28),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,A,2,2,"option",17),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,M,4,1,"ng-container",4),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.expirationDatePresets),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",0===e.selectedExpirationDatePreset.value)}}function D(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1," "),o.ɵɵelementContainerEnd())}function R(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,D,2,0,"ng-container",21),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(32);o.ɵɵadvance(2),o.ɵɵproperty("ngTemplateOutlet",e)}}class F extends r.EffluxDatesComponent{constructor(e,t,n){super(e,t,n),this.i18nService=e,this.platformUtilsService=t,this.datePipe=n}}t.EffluxDatesComponent=F,F.ɵfac=function(e){return new(e||F)(o.ɵɵdirectiveInject(a.I18nService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.DatePipe))},F.ɵcmp=o.ɵɵdefineComponent({type:F,selectors:[["app-send-efflux-dates"]],features:[o.ɵɵProvidersFeature([],[{provide:i.ControlContainer,useExisting:i.NgForm}]),o.ɵɵInheritDefinitionFeature],decls:44,vars:18,consts:[[1,"row",3,"formGroup"],[1,"col-6","form-group"],["for","deletionDate"],["deletionDateCustom",""],[4,"ngIf"],[1,"form-text","text-muted","small"],[1,"d-flex"],["for","expirationDate"],["href","#","appStopClick","","class","ml-auto",3,"click",4,"ngIf"],["expirationDateCustom",""],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],[1,"d-flex","justify-content-around"],["id","deletionDateCustomFallback","type","date","name","DeletionDateFallback","formControlName","fallbackDeletionDate","required","","placeholder","MM/DD/YYYY","data-date-format","mm/dd/yyyy",1,"form-control","mt-1",3,"readOnly"],["id","deletionTimeCustomFallback","type","time","name","DeletionTimeDate","formControlName","fallbackDeletionTime","required","","placeholder","HH:MM AM/PM",1,"form-control","mt-1","ml-1",3,"readOnly"],["id","deletionTimeCustomFallback","formControlName","fallbackDeletionTime","name","SafariDeletionTime",1,"form-control","mt-1","ml-1",3,"required"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["id","deletionDateCustom","type","datetime-local","name","DeletionDate","formControlName","defaultDeletionDateTime","required","","placeholder","MM/DD/YYYY HH:MM AM/PM",1,"form-control","mt-1",3,"readOnly"],["id","deletionDate","name","SelectedDeletionDatePreset","formControlName","selectedDeletionDatePreset","required","",1,"form-control"],[4,"ngTemplateOutlet"],["href","#","appStopClick","",1,"ml-auto",3,"click"],["class","d-flex justify-content-around",4,"ngSwitchCase"],["id","expirationDateCustomFallback","type","date","name","ExpirationDateFallback","formControlName","fallbackExpirationDate","placeholder","MM/DD/YYYY","data-date-format","mm/dd/yyyy",1,"form-control","mt-1",3,"required","readOnly"],["id","expirationTimeCustomFallback","type","time","name","ExpirationTimeFallback","formControlName","fallbackExpirationTime","placeholder","HH:MM AM/PM",1,"form-control","mt-1","ml-1",3,"required","readOnly"],["id","expirationTimeCustomFallback","formControlName","fallbackExpirationTime","name","SafariExpirationTime",1,"form-control","mt-1","ml-1",3,"required"],["id","expirationDateCustom","type","datetime-local","name","ExpirationDate","formControlName","defaultExpirationDateTime","placeholder","MM/DD/YYYY HH:MM AM/PM",1,"form-control","mt-1",3,"readOnly"],["id","expirationDate","name","SelectedExpirationDatePreset","formControlName","selectedExpirationDatePreset","required","",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",2),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,f,10,3,"ng-template",null,3,o.ɵɵtemplateRefExtractor),o.ɵɵtext(10,"\n "),o.ɵɵtemplate(11,S,9,2,"div",4),o.ɵɵtext(12,"\n "),o.ɵɵtemplate(13,w,4,1,"div",4),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",5),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",1),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",6),o.ɵɵtext(23,"\n "),o.ɵɵelementStart(24,"label",7),o.ɵɵtext(25),o.ɵɵpipe(26,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵtemplate(28,C,3,3,"a",8),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵtemplate(31,k,11,3,"ng-template",null,9,o.ɵɵtemplateRefExtractor),o.ɵɵtext(33,"\n "),o.ɵɵtemplate(34,B,9,2,"div",4),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,R,4,1,"div",4),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",5),o.ɵɵtext(39),o.ɵɵpipe(40,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n")),2&e&&(o.ɵɵproperty("formGroup",t.datesForm),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,10,"deletionDate")),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",!t.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.editMode),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,12,"deletionDateDesc")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(26,14,"expirationDate")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.editMode&&!t.disabled),o.ɵɵadvance(6),o.ɵɵproperty("ngIf",!t.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.editMode),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(40,16,"expirationDateDesc")))},directives:[c.NgControlStatusGroup,c.FormGroupDirective,l.NgIf,l.NgSwitch,l.NgSwitchCase,l.NgSwitchDefault,c.DefaultValueAccessor,c.NgControlStatus,c.FormControlName,c.RequiredValidator,c.SelectControlValueAccessor,l.NgForOf,c.NgSelectOption,c.ɵNgSelectMultipleOption,l.NgTemplateOutlet,d.StopClickDirective],pipes:[p.I18nPipe],encapsulation:2})},82813:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SendComponent=void 0;const r=n(32621),o=n(23446),a=(n(64684),n(8470),n(56071),n(51554),n(36631),n(73828),n(62166),n(60421),n(76532),n(167)),s=n(32621),l=n(76532),c=n(51554),d=n(73828),p=n(56071),u=n(60421),m=n(62166),h=n(64684),v=n(8470),f=n(36631),g=n(57490),y=n(96832),x=n(45728),S=n(52767),b=n(1142),w=n(56820),C=n(51626),I=n(39159),E=n(6373),P=n(8863),O=n(44653),k=n(62985),A=n(99729),T=["sendAddEdit"];function M(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",28),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"span"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"sendDisabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(5,4,"sendDisabledWarning")))}function B(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function D(e,t){1&e&&s.ɵɵelement(0,"i",49)}function R(e,t){1&e&&s.ɵɵelement(0,"i",50)}function F(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",51),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"disabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"disabled")))}function U(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",52),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"password")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"password")))}function V(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",53),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"maxAccessCountReached")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"maxAccessCountReached")))}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",54),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"expired")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"expired")))}function _(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",55),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"pendingDeletion")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"pendingDeletion")))}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",44),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).removePassword(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",56),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"removePassword"),"\n "))}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"tr"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"td",33),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",34),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,D,1,0,"i",35),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,R,1,0,"i",36),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"td",37),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"a",38),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).editSend(t)})),s.ɵɵtext(15),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,F,9,6,"ng-container",21),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,U,9,6,"ng-container",21),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,V,9,6,"ng-container",21),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,N,9,6,"ng-container",21),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,_,9,6,"ng-container",21),s.ɵɵtext(26,"\n "),s.ɵɵelement(27,"br"),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"small",39),s.ɵɵtext(30),s.ɵɵpipe(31,"date"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"td",40),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"button",41),s.ɵɵpipe(37,"i18n"),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"i",42),s.ɵɵtext(40,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"bit-menu",null,43),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"button",44),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).copy(t)})),s.ɵɵtext(46,"\n "),s.ɵɵelement(47,"i",45),s.ɵɵtext(48),s.ɵɵpipe(49,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵtemplate(51,j,5,3,"button",46),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"button",44),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(2).delete(t)})),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"span",47),s.ɵɵtext(56,"\n "),s.ɵɵelement(57,"i",48),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(62,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵreference(43),i=s.ɵɵnextContext(2);s.ɵɵadvance(6),s.ɵɵproperty("ngIf",e.type==i.sendType.File),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.type==i.sendType.Text),s.ɵɵadvance(7),s.ɵɵtextInterpolate(e.name),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.disabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.password),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.maxAccessCountReached),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.expired),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.pendingDelete),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(31,14,e.deletionDate,"medium")),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(37,17,"options")),s.ɵɵproperty("bitMenuTriggerFor",n),s.ɵɵadvance(12),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(49,19,"copySendLink"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.password&&!i.disableSend),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(59,21,"delete"),"\n ")}}function H(e,t){if(1&e&&(s.ɵɵelementStart(0,"table",31),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tbody"),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,z,64,23,"tr",32),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.filteredSends)}}function L(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",30),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function K(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"button",58),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).addSend()})),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",59),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"noSendsInList")),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.disableSend),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(10,5,"createSend"),"\n ")}}function q(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",57),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,L,9,6,"ng-container",21),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,K,12,7,"ng-container",21),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.loaded),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.loaded)}}function G(e,t){}const W=function(e){return{active:e}},$="SendComponent";class Y extends o.SendComponent{constructor(e,t,n,i,r,o,a,s,l,c){super(e,t,n,i,r,o,a,c),this.modalService=s,this.broadcasterService=l}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){yield e.ngOnInit.call(this),yield this.load(),this.broadcasterService.subscribe($,(e=>{this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("syncCompleted"===e.command)e.successfully&&(yield this.load())}))))}))}))}ngOnDestroy(){this.broadcasterService.unsubscribe($)}addSend(){return i(this,void 0,void 0,(function*(){if(this.disableSend)return;(yield this.editSend(null)).type=this.type}))}editSend(e){return i(this,void 0,void 0,(function*(){const[t,n]=yield this.modalService.openViewRef(a.AddEditComponent,this.sendAddEditModalRef,(n=>{n.sendId=null==e?null:e.id,n.onSavedSend.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.load()})))),n.onDeletedSend.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.load()}))))}));return n}))}}t.SendComponent=Y,Y.ɵfac=function(e){return new(e||Y)(s.ɵɵdirectiveInject(l.SendService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.EnvironmentService),s.ɵɵdirectiveInject(s.NgZone),s.ɵɵdirectiveInject(u.SearchService),s.ɵɵdirectiveInject(m.PolicyService),s.ɵɵdirectiveInject(h.ModalService),s.ɵɵdirectiveInject(v.BroadcasterService),s.ɵɵdirectiveInject(f.LogService))},Y.ɵcmp=s.ɵɵdefineComponent({type:Y,selectors:[["app-send"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(T,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.sendAddEditModalRef=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:112,vars:40,consts:[[1,"container","page-content"],["type","warning",3,"title",4,"ngIf"],[1,"row"],[1,"col-3","groupings"],[1,"card","vault-filters"],[1,"card-header","d-flex"],[1,"card-body"],["type","search","id","search","autocomplete","off","appAutofocus","",1,"form-control",3,"placeholder","ngModel","ngModelChange","input"],[1,"filter"],[1,"filter-options"],[1,"filter-option",3,"ngClass"],[1,"filter-buttons"],["bit-button","","appStopClick","",1,"filter-button",3,"click"],[1,"bwi","bwi-fw","bwi-filter"],[1,"filter-heading"],[1,"bwi","bwi-fw","bwi-file-text"],[1,"bwi","bwi-fw","bwi-file"],[1,"col-9"],[1,"page-header","d-flex"],[3,"appApiAction"],["actionSpinner",""],[4,"ngIf"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-outline-primary","btn-sm",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["class","table table-hover table-list",4,"ngIf"],["class","no-items",4,"ngIf"],["sendAddEdit",""],["type","warning",3,"title"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["aria-hidden","true",1,"icon"],["class","bwi bwi-fw bwi-lg bwi-file",4,"ngIf"],["class","bwi bwi-fw bwi-lg bwi-file-text",4,"ngIf"],[1,"reduced-lh","wrap"],["href","#","appStopClick","","appStopProp","",3,"click"],["appStopProp",""],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["sendOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],[1,"bwi","bwi-fw","bwi-lg","bwi-file"],[1,"bwi","bwi-fw","bwi-lg","bwi-file-text"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-key",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-ban",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-clock",3,"title"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-trash",3,"title"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"no-items"],[1,"btn","btn-outline-primary",3,"disabled","click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,M,7,6,"app-callout",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",4),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",5),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",6),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.searchText=e}))("input",(function(){return t.searchTextChanged()})),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",8),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"ul",9),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"li",10),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"span",11),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"button",12),s.ɵɵlistener("click",(function(){return t.selectAll()})),s.ɵɵtext(28,"\n "),s.ɵɵelement(29,"i",13),s.ɵɵtext(30),s.ɵɵpipe(31,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",8),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"div",14),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"h3"),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"ul",9),s.ɵɵtext(47,"\n "),s.ɵɵelementStart(48,"li",10),s.ɵɵtext(49,"\n "),s.ɵɵelementStart(50,"span",11),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"button",12),s.ɵɵlistener("click",(function(){return t.selectType(t.sendType.Text)})),s.ɵɵtext(53,"\n "),s.ɵɵelement(54,"i",15),s.ɵɵtext(55),s.ɵɵpipe(56,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"li",10),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"span",11),s.ɵɵtext(63,"\n "),s.ɵɵelementStart(64,"button",12),s.ɵɵlistener("click",(function(){return t.selectType(t.sendType.File)})),s.ɵɵtext(65,"\n "),s.ɵɵelement(66,"i",16),s.ɵɵtext(67),s.ɵɵpipe(68,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(70,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(71,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(74,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"div",17),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"div",18),s.ɵɵtext(80,"\n "),s.ɵɵelementStart(81,"h1"),s.ɵɵtext(82),s.ɵɵpipe(83,"i18n"),s.ɵɵelementStart(84,"small",19,20),s.ɵɵtext(86,"\n "),s.ɵɵtemplate(87,B,9,6,"ng-container",21),s.ɵɵtext(88,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(90,"\n "),s.ɵɵelementStart(91,"div",22),s.ɵɵtext(92,"\n "),s.ɵɵelementStart(93,"button",23),s.ɵɵlistener("click",(function(){return t.addSend()})),s.ɵɵtext(94,"\n "),s.ɵɵelement(95,"i",24),s.ɵɵtext(96),s.ɵɵpipe(97,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(98,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(99,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵtext(101,"\n "),s.ɵɵtemplate(102,H,7,1,"table",25),s.ɵɵtext(103,"\n "),s.ɵɵtemplate(104,q,6,2,"div",26),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(108,"\n"),s.ɵɵtemplate(109,G,0,0,"ng-template",null,27,s.ɵɵtemplateRefExtractor),s.ɵɵtext(111,"\n")),2&e){const e=s.ɵɵreference(85);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.disableSend),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(12,18,"filters"),"\n "),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("placeholder",t.searchPlaceholder||s.ɵɵpipeBind1(17,20,"searchSends")),s.ɵɵproperty("ngModel",t.searchText),s.ɵɵadvance(7),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(34,W,t.selectedAll)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(31,22,"allSends"),"\n "),s.ɵɵadvance(12),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,24,"types")),s.ɵɵadvance(6),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(36,W,t.selectedType===t.sendType.Text)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(56,26,"sendTypeText"),"\n "),s.ɵɵadvance(5),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(38,W,t.selectedType===t.sendType.File)),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(68,28,"sendTypeFile"),"\n "),s.ɵɵadvance(15),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(83,30,"send"),"\n "),s.ɵɵadvance(2),s.ɵɵproperty("appApiAction",t.actionPromise),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.loading),s.ɵɵadvance(6),s.ɵɵproperty("disabled",t.disableSend),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(97,32,"createSend"),"\n "),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.filteredSends&&t.filteredSends.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.filteredSends&&!t.filteredSends.length)}},directives:[g.NgIf,y.DefaultValueAccessor,x.AutofocusDirective,y.NgControlStatus,y.NgModel,g.NgClass,S.ButtonComponent,b.StopClickDirective,w.ApiActionDirective,C.CalloutComponent,g.NgForOf,I.StopPropDirective,E.MenuTriggerForDirective,P.A11yTitleDirective,O.MenuComponent,k.MenuItemComponent],pipes:[A.I18nPipe,g.DatePipe],encapsulation:2})},3202:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EventOptions=t.EventInfo=t.EventService=void 0;n(51554),n(62166);const r=n(2779),o=n(80253),a=n(49906),s=n(32621),l=n(51554),c=n(62166);class d{constructor(e,t){this.i18nService=e,this.policyService=t}getDefaultDateFilters(){const e=new Date,t=new Date(e.getFullYear(),e.getMonth(),e.getDate(),23,59);e.setDate(e.getDate()-30);const n=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0);return[this.toDateTimeLocalString(n),this.toDateTimeLocalString(t)]}formatDateFilters(e,t){const n=new Date(e),i=new Date(t+":59.999");if(isNaN(n.getTime())||isNaN(i.getTime())||it.id===e.policyId))[0];let r=this.getShortId(e.policyId);null!=t&&(r=a.PolicyType[t.type]),i=this.i18nService.t("modifiedPolicyId",r);break}case o.EventType.ProviderUser_Invited:n=this.i18nService.t("invitedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("invitedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Confirmed:n=this.i18nService.t("confirmedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("confirmedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Updated:n=this.i18nService.t("editedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("editedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderUser_Removed:n=this.i18nService.t("removedUserId",this.formatProviderUserId(e)),i=this.i18nService.t("removedUserId",this.getShortId(e.providerUserId));break;case o.EventType.ProviderOrganization_Created:n=this.i18nService.t("createdOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("createdOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_Added:n=this.i18nService.t("addedOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("addedOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_Removed:n=this.i18nService.t("removedOrganizationId",this.formatProviderOrganizationId(e)),i=this.i18nService.t("removedOrganizationId",this.getShortId(e.providerOrganizationId));break;case o.EventType.ProviderOrganization_VaultAccessed:n=this.i18nService.t("accessedClientVault",this.formatProviderOrganizationId(e)),i=this.i18nService.t("accessedClientVault",this.getShortId(e.providerOrganizationId))}return{message:""===n?null:n,humanReadableMessage:""===i?null:i}}))}getAppInfo(e){switch(e){case r.DeviceType.Android:return["bwi-android",this.i18nService.t("mobile")+" - Android"];case r.DeviceType.iOS:return["bwi-apple",this.i18nService.t("mobile")+" - iOS"];case r.DeviceType.UWP:return["bwi-windows",this.i18nService.t("mobile")+" - Windows"];case r.DeviceType.ChromeExtension:return["bwi-chrome",this.i18nService.t("extension")+" - Chrome"];case r.DeviceType.FirefoxExtension:return["bwi-firefox",this.i18nService.t("extension")+" - Firefox"];case r.DeviceType.OperaExtension:return["bwi-opera",this.i18nService.t("extension")+" - Opera"];case r.DeviceType.EdgeExtension:return["bwi-edge",this.i18nService.t("extension")+" - Edge"];case r.DeviceType.VivaldiExtension:return["bwi-puzzle",this.i18nService.t("extension")+" - Vivaldi"];case r.DeviceType.SafariExtension:return["bwi-safari",this.i18nService.t("extension")+" - Safari"];case r.DeviceType.WindowsDesktop:return["bwi-windows",this.i18nService.t("desktop")+" - Windows"];case r.DeviceType.MacOsDesktop:return["bwi-apple",this.i18nService.t("desktop")+" - macOS"];case r.DeviceType.LinuxDesktop:return["bwi-linux",this.i18nService.t("desktop")+" - Linux"];case r.DeviceType.ChromeBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Chrome"];case r.DeviceType.FirefoxBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Firefox"];case r.DeviceType.OperaBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Opera"];case r.DeviceType.SafariBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Safari"];case r.DeviceType.VivaldiBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Vivaldi"];case r.DeviceType.EdgeBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - Edge"];case r.DeviceType.IEBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - IE"];case r.DeviceType.UnknownBrowser:return["bwi-globe",this.i18nService.t("webVault")+" - "+this.i18nService.t("unknown")];default:return["bwi-globe",this.i18nService.t("unknown")]}}formatCipherId(e,t){const n=this.getShortId(e.cipherId);if(null==e.organizationId||!t.cipherInfo)return""+n+"";const i=this.makeAnchor(n);return i.setAttribute("href","#/organizations/"+e.organizationId+"/vault?search="+n+"&viewEvents="+e.cipherId),i.outerHTML}formatGroupId(e){const t=this.getShortId(e.groupId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/groups?search="+t),n.outerHTML}formatCollectionId(e){const t=this.getShortId(e.collectionId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/collections?search="+t),n.outerHTML}formatOrgUserId(e){const t=this.getShortId(e.organizationUserId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/people?search="+t+"&viewEvents="+e.organizationUserId),n.outerHTML}formatProviderUserId(e){const t=this.getShortId(e.providerUserId),n=this.makeAnchor(t);return n.setAttribute("href","#/providers/"+e.providerId+"/manage/people?search="+t+"&viewEvents="+e.providerUserId),n.outerHTML}formatProviderOrganizationId(e){const t=this.getShortId(e.providerOrganizationId),n=this.makeAnchor(t);return n.setAttribute("href","#/providers/"+e.providerId+"/clients?search="+t),n.outerHTML}formatPolicyId(e){const t=this.getShortId(e.policyId),n=this.makeAnchor(t);return n.setAttribute("href","#/organizations/"+e.organizationId+"/manage/policies?policyId="+e.policyId),n.outerHTML}makeAnchor(e){const t=document.createElement("a");return t.title=this.i18nService.t("view"),t.innerHTML=""+e+"",t}getShortId(e){return null==e?void 0:e.substring(0,8)}toDateTimeLocalString(e){return e.getFullYear()+"-"+this.pad(e.getMonth()+1)+"-"+this.pad(e.getDate())+"T"+this.pad(e.getHours())+":"+this.pad(e.getMinutes())}pad(e){const t=Math.floor(Math.abs(e));return(t<10?"0":"")+t}}t.EventService=d,d.ɵfac=function(e){return new(e||d)(s.ɵɵinject(l.I18nService),s.ɵɵinject(c.PolicyService))},d.ɵprov=s.ɵɵdefineInjectable({token:d,factory:d.ɵfac});t.EventInfo=class{};class p{constructor(){this.cipherInfo=!0}}t.EventOptions=p},8674:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.InitService=void 0;const r=n(41058),o=(n(85714),n(56071),n(32034),n(51554),n(38249),n(73828),n(73569),n(27458),n(82656),n(14538)),a=n(74901),s=n(32621),l=n(56071),c=n(38249),d=n(82656),p=n(51554),u=n(32034),m=n(27458),h=n(73569),v=n(73828),f=n(85714);class g{constructor(e,t,n,i,r,o,a,s,l,c){this.win=e,this.environmentService=t,this.notificationsService=n,this.vaultTimeoutService=i,this.i18nService=r,this.eventLoggingService=o,this.twoFactorService=a,this.stateService=s,this.platformUtilsService=l,this.cryptoService=c}init(){return()=>i(this,void 0,void 0,(function*(){var e;yield this.stateService.init();const t={icons:"https://icons.bitwarden.net",notifications:"https://notifications.bitwarden.com"};null!==(e=t.base)&&void 0!==e||(t.base=this.win.location.origin),this.environmentService.setUrls(t),setTimeout((()=>this.notificationsService.init()),3e3),this.vaultTimeoutService.init(!0);const n=yield this.stateService.getLocale();yield this.i18nService.init(n),this.eventLoggingService.init(!0),this.twoFactorService.init();const r=this.win.document.documentElement;r.classList.add("locale_"+this.i18nService.translationLocale),this.platformUtilsService.onDefaultSystemThemeChange((e=>i(this,void 0,void 0,(function*(){(yield this.stateService.getTheme())===o.ThemeType.System&&(r.classList.remove("theme_"+o.ThemeType.Light,"theme_"+o.ThemeType.Dark),r.classList.add("theme_"+e))}))));new a.ContainerService(this.cryptoService).attachToWindow(this.win)}))}}t.InitService=g,g.ɵfac=function(e){return new(e||g)(s.ɵɵinject(r.WINDOW),s.ɵɵinject(l.EnvironmentService),s.ɵɵinject(c.NotificationsService),s.ɵɵinject(d.VaultTimeoutService),s.ɵɵinject(p.I18nService),s.ɵɵinject(u.EventService),s.ɵɵinject(m.TwoFactorService),s.ɵɵinject(h.StateService),s.ɵɵinject(v.PlatformUtilsService),s.ɵɵinject(f.CryptoService))},g.ɵprov=s.ɵɵdefineInjectable({token:g,factory:g.ɵfac})},93817:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModalService=void 0;n(32621);const i=n(19755),r=n(14857),o=n(64684),a=(n(45552),n(82769)),s=n(32621),l=n(45552);class c extends o.ModalService{constructor(e,t,n,i){super(e,t,n),this.messagingService=i,this.el=null,this.modalOpen=!1}setupHandlers(e){e.onCreated.pipe(r.first()).subscribe((()=>{const t=Array.from(document.querySelectorAll(".modal"));t.length>0&&(this.el=i(t[0]),this.el.modal("show"),this.el.on("show.bs.modal",(()=>{e.show(),this.messagingService.send("modalShow")})),this.el.on("shown.bs.modal",(()=>{e.shown(),this.messagingService.send("modalShown"),a.Utils.isMobileBrowser||this.el.find("*[appAutoFocus]").focus()})),this.el.on("hide.bs.modal",(()=>{this.messagingService.send("modalClose")})),this.el.on("hidden.bs.modal",(()=>{e.closed(),this.messagingService.send("modalClosed")})))})),e.onClose.pipe(r.first()).subscribe((()=>{null!=this.el&&this.el.modal("hide")}))}}t.ModalService=c,c.ɵfac=function(e){return new(e||c)(s.ɵɵinject(s.ComponentFactoryResolver),s.ɵɵinject(s.ApplicationRef),s.ɵɵinject(s.Injector),s.ɵɵinject(l.MessagingService))},c.ɵprov=s.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},55453:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PolicyListService=void 0;t.PolicyListService=class{constructor(){this.policies=[]}addPolicies(e){this.policies.push(...e)}getPolicies(){return this.policies}}},77459:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RouterService=void 0;n(61248);const i=n(68012),r=n(72872),o=(n(51554),n(32621)),a=n(68012),s=n(61248),l=n(51554);class c{constructor(e,t,n,o){this.router=e,this.activatedRoute=t,this.titleService=n,this.previousUrl=void 0,this.currentUrl=void 0,this.currentUrl=this.router.url,e.events.pipe(r.filter((e=>e instanceof i.NavigationEnd))).subscribe((e=>{var t,n,i,r,a,s,l;this.currentUrl=e.url;let c=o.t("pageTitle","Bitwarden"),d=this.activatedRoute.firstChild;for(;d.firstChild;)d=d.firstChild;const p=null===(n=null===(t=null==d?void 0:d.snapshot)||void 0===t?void 0:t.data)||void 0===n?void 0:n.titleId,u=null===(r=null===(i=null==d?void 0:d.snapshot)||void 0===i?void 0:i.data)||void 0===r?void 0:r.title,m=null===(l=!(null===(s=null===(a=null==d?void 0:d.snapshot)||void 0===a?void 0:a.data)||void 0===s?void 0:s.doNotSaveUrl))||void 0===l||l;if(null!=p||null!=u){const e=null!=u?u:o.t(p);null!=e&&""!==e&&(c=e+" | "+c)}this.titleService.setTitle(c),m&&this.setPreviousUrl(this.currentUrl)}))}getPreviousUrl(){return this.previousUrl}setPreviousUrl(e){this.previousUrl=e}}t.RouterService=c,c.ɵfac=function(e){return new(e||c)(o.ɵɵinject(a.Router),o.ɵɵinject(a.ActivatedRoute),o.ɵɵinject(s.Title),o.ɵɵinject(l.I18nService))},c.ɵprov=o.ɵɵdefineInjectable({token:c,factory:c.ɵfac})},52976:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ServicesModule=void 0;const i=n(32621),r=n(68290),o=n(41058),a=n(64684),s=n(91674),l=n(45330),c=n(3174),d=n(85714),p=n(88308),u=n(51554),m=n(11223),h=n(36631),v=n(45552),f=n(44809),g=n(73828),y=n(73569),x=n(6924),S=n(39566),b=n(35266),w=n(12514),C=n(15156),I=n(74657),E=n(82062),P=n(79046),O=n(57096),k=n(28455),A=n(97853),T=n(14020),M=n(91621),B=n(31113),D=n(51601),R=n(61841),F=n(70734),U=n(13637),V=n(3202),N=n(8674),_=n(93817),j=n(55453),z=n(77459),H=n(32621);class L{}t.ServicesModule=L,L.ɵfac=function(e){return new(e||L)},L.ɵmod=H.ɵɵdefineNgModule({type:L}),L.ɵinj=H.ɵɵdefineInjector({providers:[U.NavigationPermissionsService,F.PermissionsGuard,N.InitService,z.RouterService,V.EventService,j.PolicyListService,{provide:i.APP_INITIALIZER,useFactory:e=>e.init(),deps:[N.InitService],multi:!0},{provide:o.STATE_FACTORY,useValue:new b.StateFactory(E.GlobalState,I.Account)},{provide:o.STATE_SERVICE_USE_CACHE,useValue:!1},{provide:u.I18nService,useClass:k.I18nService,deps:[o.SYSTEM_LANGUAGE,o.LOCALES_DIRECTORY]},{provide:S.StorageService,useClass:O.HtmlStorageService},{provide:o.SECURE_STORAGE,useClass:A.MemoryStorageService},{provide:g.PlatformUtilsService,useClass:D.WebPlatformUtilsService},{provide:v.MessagingService,useClass:P.BroadcasterMessagingService},{provide:a.ModalService,useClass:_.ModalService},{provide:m.ImportService,useClass:w.ImportService,deps:[l.CipherService,p.FolderService,s.ApiService,u.I18nService,c.CollectionService,g.PlatformUtilsService,d.CryptoService]},{provide:x.StateMigrationService,useClass:B.StateMigrationService,deps:[S.StorageService,o.SECURE_STORAGE,o.STATE_FACTORY]},{provide:C.StateService,useClass:M.StateService,deps:[S.StorageService,o.SECURE_STORAGE,h.LogService,x.StateMigrationService,o.STATE_FACTORY,o.STATE_SERVICE_USE_CACHE]},{provide:y.StateService,useExisting:C.StateService},{provide:f.PasswordRepromptService,useClass:T.PasswordRepromptService},R.HomeGuard],imports:[[r.ToastrModule,o.JslibServicesModule]]})},58728:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AccountComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(72277),n(73569),n(26083)),a=n(6430),s=n(56796),l=n(32621),c=n(64684),d=n(91674),p=n(72277),u=n(73569),m=n(93276),h=n(57490),v=n(52767),f=n(74939),g=n(99729),y=["deauthorizeSessionsTemplate"],x=["purgeVaultTemplate"],S=["deleteAccountTemplate"];function b(e,t){1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",11),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"h1"),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelement(9,"app-change-email"),l.ɵɵtext(10,"\n"),l.ɵɵelementContainerEnd()),2&e&&(l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(6,1,"changeEmail")))}function w(e,t){}function C(e,t){}function I(e,t){}function E(e,t){}function P(e,t){}class O{constructor(e,t,n,i){this.modalService=e,this.apiService=t,this.keyConnectorService=n,this.stateService=i,this.showChangeEmail=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangeEmail=!(yield this.keyConnectorService.getUsesKeyConnector())}))}deauthorizeSessions(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(o.DeauthorizeSessionsComponent,this.deauthModalRef)}))}purgeVault(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(s.PurgeVaultComponent,this.purgeModalRef)}))}deleteAccount(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(a.DeleteAccountComponent,this.deleteModalRef)}))}}t.AccountComponent=O,O.ɵfac=function(e){return new(e||O)(l.ɵɵdirectiveInject(c.ModalService),l.ɵɵdirectiveInject(d.ApiService),l.ɵɵdirectiveInject(p.KeyConnectorService),l.ɵɵdirectiveInject(u.StateService))},O.ɵcmp=l.ɵɵdefineComponent({type:O,selectors:[["app-account"]],viewQuery:function(e,t){if(1&e&&(l.ɵɵviewQuery(y,7,r.ViewContainerRef),l.ɵɵviewQuery(x,7,r.ViewContainerRef),l.ɵɵviewQuery(S,7,r.ViewContainerRef)),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.deauthModalRef=e.first),l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.purgeModalRef=e.first),l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.deleteModalRef=e.first)}},decls:55,vars:19,consts:[[1,"page-header"],[4,"ngIf"],[1,"secondary-header","text-danger","border-0","mb-0"],[1,"card","border-danger"],[1,"card-body"],["bit-button","","buttonType","danger",3,"click"],["deauthorizeSessionsTemplate",""],["purgeVaultTemplate",""],["deleteAccountTemplate",""],["viewUserApiKeyTemplate",""],["rotateUserApiKeyTemplate",""],[1,"secondary-header"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"h1"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n"),l.ɵɵelement(7,"app-profile"),l.ɵɵtext(8,"\n"),l.ɵɵtemplate(9,b,11,3,"ng-container",1),l.ɵɵtext(10,"\n"),l.ɵɵelementStart(11,"div",2),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"h1"),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n"),l.ɵɵelementStart(18,"div",3),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",4),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"p"),l.ɵɵtext(23),l.ɵɵpipe(24,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementStart(26,"button",5),l.ɵɵlistener("click",(function(){return t.deauthorizeSessions()})),l.ɵɵtext(27),l.ɵɵpipe(28,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(29,"\n "),l.ɵɵelementStart(30,"button",5),l.ɵɵlistener("click",(function(){return t.purgeVault()})),l.ɵɵtext(31),l.ɵɵpipe(32,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(33,"\n "),l.ɵɵelementStart(34,"button",5),l.ɵɵlistener("click",(function(){return t.deleteAccount()})),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n"),l.ɵɵtemplate(40,w,0,0,"ng-template",null,6,l.ɵɵtemplateRefExtractor),l.ɵɵtext(42,"\n"),l.ɵɵtemplate(43,C,0,0,"ng-template",null,7,l.ɵɵtemplateRefExtractor),l.ɵɵtext(45,"\n"),l.ɵɵtemplate(46,I,0,0,"ng-template",null,8,l.ɵɵtemplateRefExtractor),l.ɵɵtext(48,"\n"),l.ɵɵtemplate(49,E,0,0,"ng-template",null,9,l.ɵɵtemplateRefExtractor),l.ɵɵtext(51,"\n"),l.ɵɵtemplate(52,P,0,0,"ng-template",null,10,l.ɵɵtemplateRefExtractor),l.ɵɵtext(54,"\n")),2&e&&(l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(4,7,"myAccount")),l.ɵɵadvance(6),l.ɵɵproperty("ngIf",t.showChangeEmail),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(15,9,"dangerZone")),l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(24,11,"dangerZoneDesc")),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(28,13,"deauthorizeSessions"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(32,15,"purgeVault"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(36,17,"deleteAccount"),"\n "))},directives:[m.ProfileComponent,h.NgIf,v.ButtonComponent,f.ChangeEmailComponent],pipes:[g.I18nPipe],encapsulation:2})},449:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddCreditComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(63513),n(73828),n(73569),n(98523)),a=n(34191),s=n(32621),l=n(73569),c=n(91674),d=n(73828),p=n(63513),u=n(36631),m=n(96832),h=n(56820),v=n(8863),f=n(57490),g=n(99729),y=["ppButtonForm"];function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",36),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",37),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",38),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",39),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",40),s.ɵɵtext(9," PayPal"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",37),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",41),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"label",42),s.ɵɵtext(17,"\n "),s.ɵɵelement(18,"i",43),s.ɵɵtext(19," Bitcoin"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("value",e.paymentMethodType.PayPal)("ngModel",e.method),s.ɵɵadvance(10),s.ɵɵproperty("value",e.paymentMethodType.BitPay)("ngModel",e.method)}}class S{constructor(e,t,n,i,a){this.stateService=e,this.apiService=t,this.platformUtilsService=n,this.organizationService=i,this.logService=a,this.showOptions=!0,this.method=o.PaymentMethodType.PayPal,this.onAdded=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.paymentMethodType=o.PaymentMethodType,this.ppLoading=!1;const s="4ZDA7DLUUJGMN",l="https://www.paypal.com/cgi-bin/webscr";this.ppButtonFormAction=l,this.ppButtonBusinessId=s}ngOnInit(){return i(this,void 0,void 0,(function*(){if(null!=this.organizationId){null==this.creditAmount&&(this.creditAmount="20.00"),this.ppButtonCustomField="organization_id:"+this.organizationId;const e=yield this.organizationService.get(this.organizationId);null!=e&&(this.subject=e.name,this.name=e.name)}else null==this.creditAmount&&(this.creditAmount="10.00"),this.userId=yield this.stateService.getUserId(),this.subject=yield this.stateService.getEmail(),this.email=this.subject,this.ppButtonCustomField="user_id:"+this.userId;this.ppButtonCustomField+=",account_credit:1",this.returnUrl=window.location.href}))}submit(){return i(this,void 0,void 0,(function*(){if(null!=this.creditAmount&&""!==this.creditAmount){if(this.method===o.PaymentMethodType.PayPal)return this.ppButtonFormRef.nativeElement.submit(),void(this.ppLoading=!0);if(this.method!==o.PaymentMethodType.BitPay)try{this.onAdded.emit()}catch(e){this.logService.error(e)}else try{const e=new a.BitPayInvoiceRequest;e.email=this.email,e.name=this.name,e.credit=!0,e.amount=this.creditAmountNumber,e.organizationId=this.organizationId,e.userId=this.userId,e.returnUrl=this.returnUrl,this.formPromise=this.apiService.postBitPayInvoice(e);const t=yield this.formPromise;this.platformUtilsService.launchUri(t)}catch(e){this.logService.error(e)}}}))}cancel(){this.onCanceled.emit()}formatAmount(){try{if(null!=this.creditAmount&&""!==this.creditAmount){const e=Math.abs(parseFloat(this.creditAmount));if(e>0)return void(this.creditAmount=parseFloat((Math.round(100*e)/100).toString()).toFixed(2).toString())}}catch(e){this.logService.error(e)}this.creditAmount=""}get creditAmountNumber(){if(null!=this.creditAmount&&""!==this.creditAmount)try{return parseFloat(this.creditAmount)}catch(e){this.logService.error(e)}return null}}t.AddCreditComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.StateService),s.ɵɵdirectiveInject(c.ApiService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.OrganizationService),s.ɵɵdirectiveInject(u.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-add-credit"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(y,7,r.ElementRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.ppButtonFormRef=e.first)}},inputs:{creditAmount:"creditAmount",showOptions:"showOptions",method:"method",organizationId:"organizationId"},outputs:{onAdded:"onAdded",onCanceled:"onCanceled"},decls:94,vars:32,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],["class","mb-4 text-lg",4,"ngIf"],[1,"form-group"],[1,"row"],[1,"col-4"],["for","creditAmount"],[1,"input-group"],[1,"input-group-prepend"],[1,"input-group-text"],["id","creditAmount","type","text","name","CreditAmount","required","",1,"form-control",3,"ngModel","ngModelChange","blur"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],["method","post","target","_top",3,"action"],["ppButtonForm",""],["type","hidden","name","cmd","value","_xclick"],["type","hidden","name","business",3,"value"],["type","hidden","name","button_subtype","value","services"],["type","hidden","name","no_note","value","1"],["type","hidden","name","no_shipping","value","1"],["type","hidden","name","rm","value","1"],["type","hidden","name","return",3,"value"],["type","hidden","name","cancel_return",3,"value"],["type","hidden","name","currency_code","value","USD"],["type","hidden","name","image_url","value","https://bitwarden.com/images/paypal-banner.png"],["type","hidden","name","bn","value","PP-BuyNowBF:btn_buynow_LG.gif:NonHosted"],["type","hidden","name","amount",3,"value"],["type","hidden","name","custom",3,"value"],["type","hidden","name","item_name","value","Bitwarden Account Credit"],["type","hidden","name","item_number",3,"value"],[1,"mb-4","text-lg"],[1,"form-check","form-check-inline"],["type","radio","name","Method","id","credit-method-paypal",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","credit-method-paypal",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paypal"],["type","radio","name","Method","id","credit-method-bitcoin",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","credit-method-bitcoin",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-bitcoin"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",3),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"span",4),s.ɵɵtext(9,"×"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"h3",5),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,x,22,4,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",7),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"div",8),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",9),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label",10),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",11),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",12),s.ɵɵelementStart(31,"span",13),s.ɵɵtext(32,"$USD"),s.ɵɵelementEnd(),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",14),s.ɵɵlistener("ngModelChange",(function(e){return t.creditAmount=e}))("blur",(function(){return t.formatAmount()})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"small",15),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"button",16),s.ɵɵtext(45,"\n "),s.ɵɵelement(46,"i",17),s.ɵɵpipe(47,"i18n"),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"span"),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementStart(54,"button",18),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵtext(55),s.ɵɵpipe(56,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n"),s.ɵɵelementStart(60,"form",19,20),s.ɵɵtext(62,"\n "),s.ɵɵelement(63,"input",21),s.ɵɵtext(64,"\n "),s.ɵɵelement(65,"input",22),s.ɵɵtext(66,"\n "),s.ɵɵelement(67,"input",23),s.ɵɵtext(68,"\n "),s.ɵɵelement(69,"input",24),s.ɵɵtext(70,"\n "),s.ɵɵelement(71,"input",25),s.ɵɵtext(72,"\n "),s.ɵɵelement(73,"input",26),s.ɵɵtext(74,"\n "),s.ɵɵelement(75,"input",27),s.ɵɵtext(76,"\n "),s.ɵɵelement(77,"input",28),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"input",29),s.ɵɵtext(80,"\n "),s.ɵɵelement(81,"input",30),s.ɵɵtext(82,"\n "),s.ɵɵelement(83,"input",31),s.ɵɵtext(84,"\n "),s.ɵɵelement(85,"input",32),s.ɵɵtext(86,"\n "),s.ɵɵelement(87,"input",33),s.ɵɵtext(88,"\n "),s.ɵɵelement(89,"input",34),s.ɵɵtext(90,"\n "),s.ɵɵelement(91,"input",35),s.ɵɵtext(92,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,18,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,20,"addCredit")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showOptions),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,22,"amount")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",t.creditAmount),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,24,"creditDelayed")),s.ɵɵadvance(4),s.ɵɵproperty("disabled",e.loading||t.ppLoading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(47,26,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(51,28,"submit")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(56,30,"cancel"),"\n "),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("action",t.ppButtonFormAction,s.ɵɵsanitizeUrl),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("value",t.ppButtonBusinessId),s.ɵɵadvance(10),s.ɵɵpropertyInterpolate("value",t.returnUrl),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("value",t.returnUrl),s.ɵɵadvance(8),s.ɵɵpropertyInterpolate("value",t.creditAmount),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("value",t.ppButtonCustomField),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("value",t.subject)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.A11yTitleDirective,f.NgIf,m.DefaultValueAccessor,m.RequiredValidator,m.NgControlStatus,m.NgModel,m.ɵNgNoValidate,m.RadioControlValueAccessor],pipes:[g.I18nPipe],encapsulation:2})},55732:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustPaymentComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(98523)),a=n(84707),s=n(17337),l=n(41799),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(96832),v=n(56820),f=n(8863),g=n(17337),y=n(41799),x=n(99729);class S{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onAdjusted=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.paymentMethodType=o.PaymentMethodType}submit(){return i(this,void 0,void 0,(function*(){try{const e=new a.PaymentRequest;this.formPromise=this.paymentComponent.createPaymentToken().then((t=>(e.paymentToken=t[0],e.paymentMethodType=t[1],e.postalCode=this.taxInfoComponent.taxInfo.postalCode,e.country=this.taxInfoComponent.taxInfo.country,null==this.organizationId?this.apiService.postAccountPayment(e):(e.taxId=this.taxInfoComponent.taxInfo.taxId,e.state=this.taxInfoComponent.taxInfo.state,e.line1=this.taxInfoComponent.taxInfo.line1,e.line2=this.taxInfoComponent.taxInfo.line2,e.city=this.taxInfoComponent.taxInfo.city,e.state=this.taxInfoComponent.taxInfo.state,this.apiService.postOrganizationPayment(this.organizationId,e))))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedPaymentMethod")),this.onAdjusted.emit()}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}changeCountry(){"US"===this.taxInfoComponent.taxInfo.country?this.paymentComponent.hideBank=!this.organizationId:(this.paymentComponent.hideBank=!0,this.paymentComponent.method===o.PaymentMethodType.BankAccount&&(this.paymentComponent.method=o.PaymentMethodType.Card,this.paymentComponent.changeMethod()))}}t.AdjustPaymentComponent=S,S.ɵfac=function(e){return new(e||S)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.LogService))},S.ɵcmp=c.ɵɵdefineComponent({type:S,selectors:[["app-adjust-payment"]],viewQuery:function(e,t){if(1&e&&(c.ɵɵviewQuery(s.PaymentComponent,7),c.ɵɵviewQuery(l.TaxInfoComponent,7)),2&e){let e;c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.paymentComponent=e.first),c.ɵɵqueryRefresh(e=c.ɵɵloadQuery())&&(t.taxInfoComponent=e.first)}},inputs:{currentType:"currentType",organizationId:"organizationId"},outputs:{onAdjusted:"onAdjusted",onCanceled:"onCanceled"},decls:36,vars:19,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"hideBank","hideCredit"],[3,"onCountryChanged"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(c.ɵɵelementStart(0,"form",0,1),c.ɵɵlistener("ngSubmit",(function(){return t.submit()})),c.ɵɵtext(2,"\n "),c.ɵɵelementStart(3,"div",2),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"button",3),c.ɵɵlistener("click",(function(){return t.cancel()})),c.ɵɵpipe(6,"i18n"),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"span",4),c.ɵɵtext(9,"×"),c.ɵɵelementEnd(),c.ɵɵtext(10,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(11,"\n "),c.ɵɵelementStart(12,"h3",5),c.ɵɵtext(13),c.ɵɵpipe(14,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelement(16,"app-payment",6),c.ɵɵtext(17,"\n "),c.ɵɵelementStart(18,"app-tax-info",7),c.ɵɵlistener("onCountryChanged",(function(){return t.changeCountry()})),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementStart(20,"button",8),c.ɵɵtext(21,"\n "),c.ɵɵelement(22,"i",9),c.ɵɵpipe(23,"i18n"),c.ɵɵtext(24,"\n "),c.ɵɵelementStart(25,"span"),c.ɵɵtext(26),c.ɵɵpipe(27,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"button",10),c.ɵɵlistener("click",(function(){return t.cancel()})),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(34,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(35,"\n")),2&e){const e=c.ɵɵreference(1);c.ɵɵproperty("appApiAction",t.formPromise),c.ɵɵadvance(5),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(6,9,"cancel")),c.ɵɵadvance(8),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(14,11,null!=t.currentType?"changePaymentMethod":"addPaymentMethod"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("hideBank",!t.organizationId)("hideCredit",!0),c.ɵɵadvance(4),c.ɵɵproperty("disabled",e.loading),c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(23,13,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(27,15,"submit")),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(32,17,"cancel"),"\n ")}},directives:[h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,f.A11yTitleDirective,g.PaymentComponent,y.TaxInfoComponent],pipes:[x.I18nPipe],encapsulation:2})},34959:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AdjustStorageComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(51554),n(36631),n(73828),n(78703)),a=n(17337),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(68012),u=n(36631),m=n(96832),h=n(56820),v=n(8863),f=n(57490),g=n(17337),y=n(99729);function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"strong"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5),s.ɵɵpipe(6,"currency"),s.ɵɵpipe(7,"currency"),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,5,"total"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate4(" ",e.storageAdjustment||0," GB ×\n ",s.ɵɵpipeBind2(6,7,e.storageGbPrice,"$")," = ",s.ɵɵpipeBind2(7,10,e.adjustedStorageTotal,"$")," /",s.ɵɵpipeBind1(8,13,e.interval),"\n ")}}class S{constructor(e,t,n,i,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.activatedRoute=o,this.logService=a,this.storageGbPrice=0,this.add=!0,this.interval="year",this.onAdjusted=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.storageAdjustment=0}submit(){return i(this,void 0,void 0,(function*(){try{const e=new o.StorageRequest;e.storageGbAdjustment=this.storageAdjustment,this.add||(e.storageGbAdjustment*=-1);let t=!1;const n=()=>i(this,void 0,void 0,(function*(){let n;n=null==this.organizationId?this.formPromise=this.apiService.postAccountStorage(e):this.formPromise=this.apiService.postOrganizationStorage(this.organizationId,e);const i=yield n;if(null!=i&&null!=i.paymentIntentClientSecret)try{yield this.paymentComponent.handleStripeCardPayment(i.paymentIntentClientSecret,null)}catch(r){t=!0}}));this.formPromise=n(),yield this.formPromise,this.onAdjusted.emit(this.storageAdjustment),t?(this.platformUtilsService.showToast("warning",null,this.i18nService.t("couldNotChargeCardPayInvoice"),{timeout:1e4}),this.router.navigate(["../billing"],{relativeTo:this.activatedRoute})):this.platformUtilsService.showToast("success",null,this.i18nService.t("adjustedStorage",e.storageGbAdjustment.toString()))}catch(e){this.logService.error(e)}}))}cancel(){this.onCanceled.emit()}get adjustedStorageTotal(){return this.storageGbPrice*this.storageAdjustment}}t.AdjustStorageComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.Router),s.ɵɵdirectiveInject(p.ActivatedRoute),s.ɵɵdirectiveInject(u.LogService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-adjust-storage"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(a.PaymentComponent,7),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.paymentComponent=e.first)}},inputs:{storageGbPrice:"storageGbPrice",add:"add",organizationId:"organizationId",interval:"interval"},outputs:{onAdjusted:"onAdjusted",onCanceled:"onCanceled"},decls:52,vars:26,consts:[["ngNativeValidate","",1,"card",3,"appApiAction","ngSubmit"],["form",""],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[1,"row"],[1,"form-group","col-6"],["for","storageAdjustment"],["id","storageAdjustment","type","number","name","StroageGbAdjustment","min","0","max","99","step","1","required","",1,"form-control",3,"ngModel","ngModelChange"],["class","mb-3",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[1,"d-block","text-muted","mt-3"],[3,"showMethods"],[1,"mb-3"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",3),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"span",4),s.ɵɵtext(9,"×"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"h3",5),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",7),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",8),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"input",9),s.ɵɵlistener("ngModelChange",(function(e){return t.storageAdjustment=e})),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,x,9,15,"div",10),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"button",11),s.ɵɵtext(31,"\n "),s.ɵɵelement(32,"i",12),s.ɵɵpipe(33,"i18n"),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"span"),s.ɵɵtext(36),s.ɵɵpipe(37,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"button",13),s.ɵɵlistener("click",(function(){return t.cancel()})),s.ɵɵtext(41),s.ɵɵpipe(42,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"small",14),s.ɵɵtext(45),s.ɵɵpipe(46,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n"),s.ɵɵelement(50,"app-payment",15),s.ɵɵtext(51,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,12,"cancel")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,14,t.add?"addStorage":"removeStorage")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,16,t.add?"gbStorageAdd":"gbStorageRemove")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.storageAdjustment),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.add),s.ɵɵadvance(2),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(33,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(37,20,"submit")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(42,22,"cancel"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(46,24,t.add?"storageAddNote":"storageRemoveNote"),"\n "),s.ɵɵadvance(5),s.ɵɵproperty("showMethods",!1)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.A11yTitleDirective,m.MinValidator,m.MaxValidator,m.NumberValueAccessor,m.DefaultValueAccessor,m.RequiredValidator,m.NgControlStatus,m.NgModel,f.NgIf,g.PaymentComponent],pipes:[y.I18nPipe,f.CurrencyPipe],encapsulation:2})},83011:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ApiKeyComponent=void 0;n(36631),n(57055);const r=n(32621),o=n(57055),a=n(36631),s=n(96832),l=n(56820),c=n(8863),d=n(57490),p=n(4158),u=n(51626),m=n(99729);function h(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-user-verification",15),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().masterPassword=t})),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("ngModel",e.masterPassword)}}function v(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",16),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,e.apiKeyWarning))}}function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"app-callout",17),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"p",18),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"strong"),r.ɵɵtext(6,"client_id:"),r.ɵɵelementEnd(),r.ɵɵelement(7,"br"),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"code"),r.ɵɵtext(10),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"p",18),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"strong"),r.ɵɵtext(16,"client_secret:"),r.ɵɵelementEnd(),r.ɵɵelement(17,"br"),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"code"),r.ɵɵtext(20),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p",18),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"strong"),r.ɵɵtext(26,"scope:"),r.ɵɵelementEnd(),r.ɵɵelement(27,"br"),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"code"),r.ɵɵtext(30),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"p",19),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"strong"),r.ɵɵtext(36,"grant_type:"),r.ɵɵelementEnd(),r.ɵɵelement(37,"br"),r.ɵɵtext(38,"\n "),r.ɵɵelementStart(39,"code"),r.ɵɵtext(40),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,5,"oauth2ClientCredentials")),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.clientId),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.clientSecret),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.scope),r.ɵɵadvance(10),r.ɵɵtextInterpolate(e.grantType)}}function g(e,t){if(1&e&&(r.ɵɵelementStart(0,"button",20),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",21),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(5);r.ɵɵproperty("disabled",t.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,3,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,5,e.isRotation?"rotateApiKey":"viewApiKey"))}}class y{constructor(e,t){this.userVerificationService=e,this.logService=t}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.postKey(this.entityId,e)));const e=yield this.formPromise;this.clientSecret=e.apiKey,this.clientId=`${this.keyType}.${this.entityId}`}catch(e){this.logService.error(e)}}))}}t.ApiKeyComponent=y,y.ɵfac=function(e){return new(e||y)(r.ɵɵdirectiveInject(o.UserVerificationService),r.ɵɵdirectiveInject(a.LogService))},y.ɵcmp=r.ɵɵdefineComponent({type:y,selectors:[["app-api-key"]],decls:46,vars:17,consts:[["role","dialog","aria-modal","true","aria-labelledby","apiKeyTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","apiKeyTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange",4,"ngIf"],["type","warning",4,"ngIf"],["type","info","icon","bwi bwi-key",3,"title",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],["type","warning"],["type","info","icon","bwi bwi-key",3,"title"],[1,"mb-1"],[1,"mb-0"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,h,2,1,"app-user-verification",9),r.ɵɵtext(28,"\n\n "),r.ɵɵtemplate(29,v,3,3,"app-callout",10),r.ɵɵtext(30,"\n "),r.ɵɵtemplate(31,f,43,7,"app-callout",11),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementStart(34,"div",12),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,g,9,7,"button",13),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"button",14),r.ɵɵtext(39),r.ɵɵpipe(40,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(43,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,9,t.apiKeyTitle)),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,11,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,13,t.apiKeyDescription)),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.clientSecret),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.clientSecret),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.clientSecret),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",!t.clientSecret),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(40,15,"close"),"\n "))},directives:[s.NgControlStatusGroup,s.NgForm,l.ApiActionDirective,c.A11yTitleDirective,d.NgIf,p.UserVerificationComponent,s.DefaultValueAccessor,s.NgControlStatus,s.NgModel,u.CalloutComponent],pipes:[m.I18nPipe],encapsulation:2})},6131:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BillingSyncKeyComponent=void 0;n(91674),n(36631);const r=n(24643),o=n(79977),a=n(29602),s=n(19036),l=n(32621),c=n(91674),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(45728),v=n(48198),f=n(99729);class g{constructor(e,t){this.apiService=e,this.logService=t}submit(){var e;return i(this,void 0,void 0,(function*(){try{const t=new s.OrganizationConnectionRequest(this.entityId,r.OrganizationConnectionType.CloudBillingSync,!0,new a.BillingSyncConfigRequest(this.billingSyncKey));null==this.existingConnectionId?this.formPromise=this.apiService.createOrganizationConnection(t,o.BillingSyncConfigApi):this.formPromise=this.apiService.updateOrganizationConnection(t,o.BillingSyncConfigApi,this.existingConnectionId);const n=yield this.formPromise;this.existingConnectionId=null==n?void 0:n.id,this.billingSyncKey=null===(e=null==n?void 0:n.config)||void 0===e?void 0:e.billingSyncKey,this.setParentConnection(n)}catch(t){this.logService.error(t)}}))}deleteConnection(){return i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.deleteOrganizationConnection(this.existingConnectionId),yield this.formPromise,this.setParentConnection(null)}))}}t.BillingSyncKeyComponent=g,g.ɵfac=function(e){return new(e||g)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=l.ɵɵdefineComponent({type:g,selectors:[["app-billing-sync-key"]],decls:77,vars:36,consts:[["role","dialog","aria-modal","true","aria-labelledby","billingSyncTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","billingSyncTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","billingSyncKey"],["id","billingSyncKey","type","input","name","billingSyncKey","required","","appAutofocus","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10),l.ɵɵpipe(11,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"button",6),l.ɵɵpipe(14,"i18n"),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"span",7),l.ɵɵtext(17,"×"),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n "),l.ɵɵelementStart(21,"div",8),l.ɵɵtext(22,"\n "),l.ɵɵelementStart(23,"p"),l.ɵɵtext(24),l.ɵɵpipe(25,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementStart(27,"div",9),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"label",10),l.ɵɵtext(30),l.ɵɵpipe(31,"i18n"),l.ɵɵelementStart(32,"small"),l.ɵɵtext(33,"("),l.ɵɵelementEnd(),l.ɵɵelementStart(34,"small"),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵelementStart(37,"small"),l.ɵɵtext(38,")"),l.ɵɵelementEnd(),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementStart(40,"input",11),l.ɵɵlistener("ngModelChange",(function(e){return t.billingSyncKey=e})),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(42,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n "),l.ɵɵelementStart(44,"div",12),l.ɵɵtext(45,"\n "),l.ɵɵelementStart(46,"button",13),l.ɵɵtext(47,"\n "),l.ɵɵelement(48,"i",14),l.ɵɵpipe(49,"i18n"),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"span"),l.ɵɵtext(52),l.ɵɵpipe(53,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(55,"\n "),l.ɵɵelementStart(56,"button",15),l.ɵɵtext(57),l.ɵɵpipe(58,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(59,"\n "),l.ɵɵelementStart(60,"div",16),l.ɵɵtext(61,"\n "),l.ɵɵelementStart(62,"button",17,18),l.ɵɵlistener("click",(function(){return t.deleteConnection()})),l.ɵɵpipe(64,"i18n"),l.ɵɵtext(65,"\n "),l.ɵɵelement(66,"i",19),l.ɵɵtext(67,"\n "),l.ɵɵelement(68,"i",20),l.ɵɵpipe(69,"i18n"),l.ɵɵtext(70,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(71,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(72,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(73,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(74,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(75,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(76,"\n")),2&e){const e=l.ɵɵreference(5);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(11,16,"manageBillingSync")),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(14,18,"close")),l.ɵɵadvance(11),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(25,20,"billingSyncKeyDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind1(31,22,"billingSyncKey")," "),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(36,24,"required")),l.ɵɵadvance(5),l.ɵɵproperty("ngModel",t.billingSyncKey),l.ɵɵadvance(6),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(49,26,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(53,28,"save")),l.ɵɵadvance(5),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(58,30,"cancel"),"\n "),l.ɵɵadvance(5),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(64,32,"delete")),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(4),l.ɵɵproperty("hidden",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(69,34,"loading")),l.ɵɵproperty("hidden",!e.loading)}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,p.DefaultValueAccessor,p.RequiredValidator,h.AutofocusDirective,v.InputVerbatimDirective,p.NgControlStatus,p.NgModel],pipes:[f.I18nPipe],encapsulation:2})},74939:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeEmailComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(73828),n(73569);const r=n(97374),o=n(79669),a=n(8283),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(85714),u=n(45552),m=n(36631),h=n(73569),v=n(96832),f=n(56820),g=n(57490),y=n(48198),x=n(51626),S=n(99729);function b(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",14),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"changeEmailTwoFactorWarning"),"\n "))}function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"hr"),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"app-callout",14),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",3),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",4),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",5),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",15),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"input",16),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().token=t})),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(6,4,"changeEmailDesc",e.newEmail)),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(10,7,"loggedOutWarning")),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,9,"code")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function C(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"continue")))}function I(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"changeEmail")))}function E(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",17),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().reset()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"cancel"),"\n "))}class P{constructor(e,t,n,i,r,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.messagingService=r,this.logService=o,this.stateService=a,this.tokenSent=!1,this.showTwoFactorEmailWarning=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getTwoFactorProviders();this.showTwoFactorEmailWarning=e.data.some((e=>e.type===r.TwoFactorProviderType.Email&&e.enabled))}))}submit(){return i(this,void 0,void 0,(function*(){if(yield this.cryptoService.hasEncKey())if(this.newEmail=this.newEmail.trim().toLowerCase(),this.tokenSent){const t=new o.EmailRequest;t.token=this.token,t.newEmail=this.newEmail,t.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);const n=yield this.stateService.getKdfType(),i=yield this.stateService.getKdfIterations(),r=yield this.cryptoService.makeKey(this.masterPassword,this.newEmail,n,i);t.newMasterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,r);const a=yield this.cryptoService.remakeEncKey(r);t.key=a[1].encryptedString;try{this.formPromise=this.apiService.postEmail(t),yield this.formPromise,this.reset(),this.platformUtilsService.showToast("success",this.i18nService.t("emailChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}else{const t=new a.EmailTokenRequest;t.newEmail=this.newEmail,t.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);try{this.formPromise=this.apiService.postEmailToken(t),yield this.formPromise,this.tokenSent=!0}catch(e){this.logService.error(e)}}else this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"))}))}reset(){this.token=this.newEmail=this.masterPassword=null,this.tokenSent=!1}}t.ChangeEmailComponent=P,P.ɵfac=function(e){return new(e||P)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.CryptoService),s.ɵɵdirectiveInject(u.MessagingService),s.ɵɵdirectiveInject(m.LogService),s.ɵɵdirectiveInject(h.StateService))},P.ɵcmp=s.ɵɵdefineComponent({type:P,selectors:[["app-change-email"]],decls:44,vars:20,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],["type","warning",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","masterPassword"],["id","masterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","readonly","ngModelChange"],["for","newEmail"],["id","newEmail","type","text","name","NewEmail","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","readonly","ngModelChange"],[4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],["type","warning"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵtemplate(3,b,3,3,"app-callout",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"div",3),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"div",5),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"label",6),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",5),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",8),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"input",9),s.ɵɵlistener("ngModelChange",(function(e){return t.newEmail=e})),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,w,27,11,"ng-container",10),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"button",11),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",12),s.ɵɵpipe(34,"i18n"),s.ɵɵtext(35,"\n "),s.ɵɵtemplate(36,C,3,3,"span",10),s.ɵɵtext(37,"\n "),s.ɵɵtemplate(38,I,3,3,"span",10),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵtemplate(41,E,3,3,"button",13),s.ɵɵtext(42,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.showTwoFactorEmailWarning),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,14,"masterPass")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.masterPassword)("readonly",t.tokenSent),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,16,"newEmail")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.newEmail)("readonly",t.tokenSent),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.tokenSent),s.ɵɵadvance(2),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(34,18,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.tokenSent),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.tokenSent),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.tokenSent)}},directives:[v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,g.NgIf,v.DefaultValueAccessor,v.RequiredValidator,y.InputVerbatimDirective,v.NgControlStatus,v.NgModel,x.CalloutComponent],pipes:[S.I18nPipe],encapsulation:2})},48381:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangeKdfComponent=void 0;n(91674),n(85714),n(51554),n(36631),n(45552),n(73828),n(73569);const r=n(20971),o=n(17287),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(85714),p=n(45552),u=n(36631),m=n(73569),h=n(20138),v=n(96832),f=n(56820),g=n(48198),y=n(8863),x=n(57490),S=n(52767),b=n(99729);function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"option",22),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵproperty("ngValue",e.value),a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class C{constructor(e,t,n,i,o,a,s){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.messagingService=o,this.logService=a,this.stateService=s,this.kdf=r.KdfType.PBKDF2_SHA256,this.kdfOptions=[],this.recommendedKdfIterations=r.DEFAULT_KDF_ITERATIONS,this.kdfOptions=[{name:"PBKDF2 SHA-256",value:r.KdfType.PBKDF2_SHA256}]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.kdf=yield this.stateService.getKdfType(),this.kdfIterations=yield this.stateService.getKdfIterations()}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.cryptoService.hasEncKey()))return void this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"));const e=new o.KdfRequest;e.kdf=this.kdf,e.kdfIterations=this.kdfIterations,e.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null);const t=yield this.stateService.getEmail(),n=yield this.cryptoService.makeKey(this.masterPassword,t,this.kdf,this.kdfIterations);e.newMasterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,n);const i=yield this.cryptoService.remakeEncKey(n);e.key=i[1].encryptedString;try{this.formPromise=this.apiService.postAccountKdf(e),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("encKeySettingsChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(r){this.logService.error(r)}}))}}t.ChangeKdfComponent=C,C.ɵfac=function(e){return new(e||C)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.CryptoService),a.ɵɵdirectiveInject(p.MessagingService),a.ɵɵdirectiveInject(u.LogService),a.ɵɵdirectiveInject(m.StateService))},C.ɵcmp=a.ɵɵdefineComponent({type:C,selectors:[["app-change-kdf"]],decls:102,vars:48,consts:[[1,"tabbed-header"],["type","warning"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","kdfMasterPassword"],["id","kdfMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-group","mb-0"],["for","kdf"],["href","https://en.wikipedia.org/wiki/Key_derivation_function","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","kdf","name","Kdf","required","",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],["for","kdfIterations"],["href","https://bitwarden.com/help/what-encryption-is-used/#pbkdf2","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["id","kdfIterations","type","number","min","5000","max","2000000","name","KdfIterations","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"col-12"],[1,"small","form-text","text-muted"],["bit-button","","buttonType","primary",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"ngValue"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n"),a.ɵɵelementStart(7,"bit-callout",1),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementStart(11,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"div",4),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"div",5),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",6),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"label",7),a.ɵɵtext(21),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementStart(24,"input",8),a.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(26,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(27,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"div",4),a.ɵɵtext(30,"\n "),a.ɵɵelementStart(31,"div",5),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"div",9),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"label",10),a.ɵɵtext(36),a.ɵɵpipe(37,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"a",11),a.ɵɵpipe(40,"i18n"),a.ɵɵtext(41,"\n "),a.ɵɵelement(42,"i",12),a.ɵɵtext(43,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n "),a.ɵɵelementStart(45,"select",13),a.ɵɵlistener("ngModelChange",(function(e){return t.kdf=e})),a.ɵɵtext(46,"\n "),a.ɵɵtemplate(47,w,2,2,"option",14),a.ɵɵtext(48,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(50,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(51,"\n "),a.ɵɵelementStart(52,"div",5),a.ɵɵtext(53,"\n "),a.ɵɵelementStart(54,"div",9),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"label",15),a.ɵɵtext(57),a.ɵɵpipe(58,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementStart(60,"a",16),a.ɵɵpipe(61,"i18n"),a.ɵɵtext(62,"\n "),a.ɵɵelement(63,"i",12),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementStart(66,"input",17),a.ɵɵlistener("ngModelChange",(function(e){return t.kdfIterations=e})),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(68,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(69,"\n "),a.ɵɵelementStart(70,"div",18),a.ɵɵtext(71,"\n "),a.ɵɵelementStart(72,"div",6),a.ɵɵtext(73,"\n "),a.ɵɵelementStart(74,"div",19),a.ɵɵtext(75,"\n "),a.ɵɵelementStart(76,"p"),a.ɵɵtext(77),a.ɵɵpipe(78,"i18n"),a.ɵɵpipe(79,"number"),a.ɵɵelementEnd(),a.ɵɵtext(80,"\n "),a.ɵɵelementStart(81,"strong"),a.ɵɵtext(82),a.ɵɵpipe(83,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(84),a.ɵɵpipe(85,"i18n"),a.ɵɵpipe(86,"number"),a.ɵɵelementEnd(),a.ɵɵtext(87,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(88,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(89,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(90,"\n "),a.ɵɵelementStart(91,"button",20),a.ɵɵtext(92,"\n "),a.ɵɵelement(93,"i",21),a.ɵɵpipe(94,"i18n"),a.ɵɵtext(95,"\n "),a.ɵɵelementStart(96,"span"),a.ɵɵtext(97),a.ɵɵpipe(98,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(99,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(100,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(101,"\n")),2&e){const e=a.ɵɵreference(12);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,18,"encKeySettings")),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,20,"loggedOutWarning")),a.ɵɵadvance(3),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(22,22,"masterPass")),a.ɵɵadvance(3),a.ɵɵproperty("ngModel",t.masterPassword),a.ɵɵadvance(12),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(37,24,"kdfAlgorithm")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(40,26,"learnMore")),a.ɵɵadvance(6),a.ɵɵproperty("ngModel",t.kdf),a.ɵɵadvance(2),a.ɵɵproperty("ngForOf",t.kdfOptions),a.ɵɵadvance(10),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(58,28,"kdfIterations")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(61,30,"learnMore")),a.ɵɵadvance(6),a.ɵɵproperty("ngModel",t.kdfIterations),a.ɵɵadvance(11),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(78,32,"kdfIterationsDesc",a.ɵɵpipeBind1(79,35,t.recommendedKdfIterations))),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(83,37,"warning")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1(": ",a.ɵɵpipeBind2(85,39,"kdfIterationsWarning",a.ɵɵpipeBind1(86,42,5e4)),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(94,44,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(98,46,"changeKdf"))}},directives:[h.CalloutComponent,v.NgControlStatusGroup,v.NgForm,f.ApiActionDirective,v.DefaultValueAccessor,v.RequiredValidator,g.InputVerbatimDirective,v.NgControlStatus,v.NgModel,y.A11yTitleDirective,v.SelectControlValueAccessor,x.NgForOf,v.MinValidator,v.MaxValidator,v.NumberValueAccessor,S.ButtonComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[b.I18nPipe,x.DecimalPipe],encapsulation:2})},11676:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ChangePasswordComponent=void 0;n(68012);const r=n(16545),o=(n(91674),n(45330),n(85714),n(88308),n(51554),n(72277),n(45552),n(63513),n(84275),n(73828),n(62166),n(76532),n(73569),n(9724),n(47200)),a=n(82769),s=n(24906),l=n(8468),c=n(49586),d=n(27784),p=n(49472),u=n(12909),m=n(93357),h=n(32621),v=n(51554),f=n(85714),g=n(45552),y=n(73569),x=n(84275),S=n(73828),b=n(62166),w=n(88308),C=n(45330),I=n(9724),E=n(91674),P=n(76532),O=n(63513),k=n(72277),A=n(68012),T=n(20138),M=n(57490),B=n(96832),D=n(56820),R=n(48198),F=n(40946),U=n(8863),V=n(52767),N=n(51626),_=n(99729);function j(e,t){if(1&e&&(h.ɵɵelementStart(0,"app-callout",22),h.ɵɵtext(1,"\n"),h.ɵɵelementEnd()),2&e){const e=h.ɵɵnextContext();h.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class z extends r.ChangePasswordComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,r,o,a,i),this.folderService=s,this.cipherService=l,this.syncService=c,this.apiService=d,this.sendService=p,this.organizationService=u,this.keyConnectorService=m,this.router=h,this.rotateEncKey=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){(yield this.keyConnectorService.getUsesKeyConnector())&&this.router.navigate(["/settings/security/two-factor"]),yield e.ngOnInit.call(this)}))}rotateEncKeyClicked(){return i(this,void 0,void 0,(function*(){if(this.rotateEncKey){const e=yield this.cipherService.getAllDecrypted();let t=!1;if(null!=e)for(let n=0;nsuper.submit}});return i(this,void 0,void 0,(function*(){(yield this.cryptoService.hasEncKey())?yield e.submit.call(this):this.platformUtilsService.showToast("error",null,this.i18nService.t("updateKey"))}))}setupSubmitActions(){const e=Object.create(null,{setupSubmitActions:{get:()=>super.setupSubmitActions}});return i(this,void 0,void 0,(function*(){return null==this.currentMasterPassword||""===this.currentMasterPassword?(this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired")),!1):(this.rotateEncKey&&(yield this.syncService.fullSync(!0)),e.setupSubmitActions.call(this))}))}performSubmitActions(e,t,n){return i(this,void 0,void 0,(function*(){const i=new p.PasswordRequest;i.masterPasswordHash=yield this.cryptoService.hashPassword(this.currentMasterPassword,null),i.newMasterPasswordHash=e,i.key=n[1].encryptedString;try{this.rotateEncKey?this.formPromise=this.apiService.postPassword(i).then((()=>this.updateKey(t,i.newMasterPasswordHash))):this.formPromise=this.apiService.postPassword(i),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("masterPasswordChanged"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(r){this.platformUtilsService.showToast("error",null,this.i18nService.t("errorOccurred"))}}))}updateKey(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.cryptoService.makeEncKey(e),r=yield this.cryptoService.getPrivateKey();let o=null;null!=r&&(o=yield this.cryptoService.encrypt(r,n[0]));const a=new m.UpdateKeyRequest;a.privateKey=null!=o?o.encryptedString:null,a.key=n[1].encryptedString,a.masterPasswordHash=t;const l=yield this.folderService.getAllDecrypted();for(let e=0;ei(this,void 0,void 0,(function*(){var t;const i=yield this.cryptoService.decryptToBytes(e.key,null);e.key=null!==(t=yield this.cryptoService.encrypt(i,n[0]))&&void 0!==t?t:e.key,a.sends.push(new u.SendWithIdRequest(e))}))))),yield this.apiService.postAccountKey(a),yield this.updateEmergencyAccesses(n[0]),yield this.updateAllResetPasswordKeys(n[0])}))}updateEmergencyAccesses(e){return i(this,void 0,void 0,(function*(){const t=yield this.apiService.getEmergencyAccessTrusted(),n=[o.EmergencyAccessStatusType.Confirmed,o.EmergencyAccessStatusType.RecoveryInitiated,o.EmergencyAccessStatusType.RecoveryApproved],i=t.data.filter((e=>n.includes(e.status)));for(const r of i){const t=yield this.apiService.getUserPublicKey(r.granteeId),n=a.Utils.fromB64ToArray(t.publicKey),i=yield this.cryptoService.rsaEncrypt(e.key,n.buffer),o=new l.EmergencyAccessUpdateRequest;o.type=r.type,o.waitTimeDays=r.waitTimeDays,o.keyEncrypted=i.encryptedString,yield this.apiService.putEmergencyAccess(r.id,o)}}))}updateAllResetPasswordKeys(e){return i(this,void 0,void 0,(function*(){const t=yield this.organizationService.getAll();for(const n of t){if(!n.resetPasswordEnrolled)continue;const t=yield this.apiService.getOrganizationKeys(n.id),i=a.Utils.fromB64ToArray(null==t?void 0:t.publicKey),r=yield this.cryptoService.rsaEncrypt(e.key,i.buffer),o=new d.OrganizationUserResetPasswordEnrollmentRequest;o.resetPasswordKey=r.encryptedString,yield this.apiService.putOrganizationUserResetPasswordEnrollment(n.id,n.userId,o)}}))}}t.ChangePasswordComponent=z,z.ɵfac=function(e){return new(e||z)(h.ɵɵdirectiveInject(v.I18nService),h.ɵɵdirectiveInject(f.CryptoService),h.ɵɵdirectiveInject(g.MessagingService),h.ɵɵdirectiveInject(y.StateService),h.ɵɵdirectiveInject(x.PasswordGenerationService),h.ɵɵdirectiveInject(S.PlatformUtilsService),h.ɵɵdirectiveInject(b.PolicyService),h.ɵɵdirectiveInject(w.FolderService),h.ɵɵdirectiveInject(C.CipherService),h.ɵɵdirectiveInject(I.SyncService),h.ɵɵdirectiveInject(E.ApiService),h.ɵɵdirectiveInject(P.SendService),h.ɵɵdirectiveInject(O.OrganizationService),h.ɵɵdirectiveInject(k.KeyConnectorService),h.ɵɵdirectiveInject(A.Router))},z.ɵcmp=h.ɵɵdefineComponent({type:z,selectors:[["app-change-password"]],features:[h.ɵɵInheritDefinitionFeature],decls:89,vars:36,consts:[[1,"tabbed-header"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","currentMasterPassword"],["id","currentMasterPassword","type","password","name","MasterPasswordHash","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","newMasterPassword"],["id","newMasterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-check"],["type","checkbox","id","rotateEncKey","name","RotateEncKey",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","rotateEncKey",1,"form-check-label"],["href","https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key","target","_blank","rel","noopener",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["bit-button","","buttonType","primary",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(h.ɵɵelementStart(0,"div",0),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"h1"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n\n"),h.ɵɵelementStart(7,"bit-callout",1),h.ɵɵtext(8),h.ɵɵpipe(9,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(10,"\n"),h.ɵɵtemplate(11,j,2,1,"app-callout",2),h.ɵɵtext(12,"\n\n"),h.ɵɵelementStart(13,"form",3,4),h.ɵɵlistener("ngSubmit",(function(){return t.submit()})),h.ɵɵtext(15,"\n "),h.ɵɵelementStart(16,"div",5),h.ɵɵtext(17,"\n "),h.ɵɵelementStart(18,"div",6),h.ɵɵtext(19,"\n "),h.ɵɵelementStart(20,"div",7),h.ɵɵtext(21,"\n "),h.ɵɵelementStart(22,"label",8),h.ɵɵtext(23),h.ɵɵpipe(24,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(25,"\n "),h.ɵɵelementStart(26,"input",9),h.ɵɵlistener("ngModelChange",(function(e){return t.currentMasterPassword=e})),h.ɵɵelementEnd(),h.ɵɵtext(27,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(28,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(29,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(30,"\n "),h.ɵɵelementStart(31,"div",5),h.ɵɵtext(32,"\n "),h.ɵɵelementStart(33,"div",6),h.ɵɵtext(34,"\n "),h.ɵɵelementStart(35,"div",7),h.ɵɵtext(36,"\n "),h.ɵɵelementStart(37,"label",10),h.ɵɵtext(38),h.ɵɵpipe(39,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(40,"\n "),h.ɵɵelementStart(41,"input",11),h.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),h.ɵɵelementEnd(),h.ɵɵtext(42,"\n "),h.ɵɵelement(43,"app-password-strength",12),h.ɵɵtext(44,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(45,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(46,"\n "),h.ɵɵelementStart(47,"div",6),h.ɵɵtext(48,"\n "),h.ɵɵelementStart(49,"div",7),h.ɵɵtext(50,"\n "),h.ɵɵelementStart(51,"label",13),h.ɵɵtext(52),h.ɵɵpipe(53,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(54,"\n "),h.ɵɵelementStart(55,"input",14),h.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),h.ɵɵelementEnd(),h.ɵɵtext(56,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(57,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(58,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(59,"\n "),h.ɵɵelementStart(60,"div",7),h.ɵɵtext(61,"\n "),h.ɵɵelementStart(62,"div",15),h.ɵɵtext(63,"\n "),h.ɵɵelementStart(64,"input",16),h.ɵɵlistener("ngModelChange",(function(e){return t.rotateEncKey=e}))("change",(function(){return t.rotateEncKeyClicked()})),h.ɵɵelementEnd(),h.ɵɵtext(65,"\n "),h.ɵɵelementStart(66,"label",17),h.ɵɵtext(67),h.ɵɵpipe(68,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(69,"\n "),h.ɵɵelementStart(70,"a",18),h.ɵɵpipe(71,"i18n"),h.ɵɵtext(72,"\n "),h.ɵɵelement(73,"i",19),h.ɵɵtext(74,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(75,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(76,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(77,"\n "),h.ɵɵelementStart(78,"button",20),h.ɵɵtext(79,"\n "),h.ɵɵelement(80,"i",21),h.ɵɵpipe(81,"i18n"),h.ɵɵtext(82,"\n "),h.ɵɵelementStart(83,"span"),h.ɵɵtext(84),h.ɵɵpipe(85,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(86,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(87,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(88,"\n")),2&e){const e=h.ɵɵreference(14);h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,18,"changeMasterPassword")),h.ɵɵadvance(5),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(9,20,"loggedOutWarning")),h.ɵɵadvance(3),h.ɵɵproperty("ngIf",t.enforcedPolicyOptions),h.ɵɵadvance(2),h.ɵɵproperty("appApiAction",t.formPromise),h.ɵɵadvance(10),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(24,22,"currentMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.currentMasterPassword),h.ɵɵadvance(12),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(39,24,"newMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.masterPassword),h.ɵɵadvance(2),h.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),h.ɵɵadvance(9),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(53,26,"confirmNewMasterPass")),h.ɵɵadvance(3),h.ɵɵproperty("ngModel",t.masterPasswordRetype),h.ɵɵadvance(9),h.ɵɵproperty("ngModel",t.rotateEncKey),h.ɵɵadvance(3),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(68,28,"rotateAccountEncKey"),"\n "),h.ɵɵadvance(3),h.ɵɵpropertyInterpolate("appA11yTitle",h.ɵɵpipeBind1(71,30,"learnMore")),h.ɵɵadvance(8),h.ɵɵproperty("disabled",e.loading),h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(81,32,"loading")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(85,34,"changeMasterPassword"))}},directives:[T.CalloutComponent,M.NgIf,B.NgControlStatusGroup,B.NgForm,D.ApiActionDirective,B.DefaultValueAccessor,B.RequiredValidator,R.InputVerbatimDirective,B.NgControlStatus,B.NgModel,F.PasswordStrengthComponent,B.CheckboxControlValueAccessor,U.A11yTitleDirective,V.ButtonComponent,N.CalloutComponent],pipes:[_.I18nPipe],encapsulation:2})},532:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.CreateOrganizationComponent=void 0;n(68012);const r=n(14857),o=n(47937),a=n(96066),s=n(28360),l=n(32621),c=n(68012),d=n(28360),p=n(99729);class u{constructor(e){this.route=e}ngOnInit(){this.route.queryParams.pipe(r.first()).subscribe((e=>i(this,void 0,void 0,(function*(){"families"===e.plan?(this.orgPlansComponent.plan=o.PlanType.FamiliesAnnually,this.orgPlansComponent.product=a.ProductType.Families):"teams"===e.plan?(this.orgPlansComponent.plan=o.PlanType.TeamsAnnually,this.orgPlansComponent.product=a.ProductType.Teams):"enterprise"===e.plan&&(this.orgPlansComponent.plan=o.PlanType.EnterpriseAnnually,this.orgPlansComponent.product=a.ProductType.Enterprise)}))))}}t.CreateOrganizationComponent=u,u.ɵfac=function(e){return new(e||u)(l.ɵɵdirectiveInject(c.ActivatedRoute))},u.ɵcmp=l.ɵɵdefineComponent({type:u,selectors:[["app-create-organization"]],viewQuery:function(e,t){if(1&e&&l.ɵɵviewQuery(s.OrganizationPlansComponent,7),2&e){let e;l.ɵɵqueryRefresh(e=l.ɵɵloadQuery())&&(t.orgPlansComponent=e.first)}},decls:22,vars:6,consts:[[1,"container","page-content"],[1,"row"],[1,"col-12"],[1,"page-header"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h1"),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"p"),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelement(17,"app-organization-plans"),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(20,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,2,"newOrganization")),l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(15,4,"newOrganizationDesc")))},directives:[d.OrganizationPlansComponent],pipes:[p.I18nPipe],encapsulation:2})},26083:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeauthorizeSessionsComponent=void 0;n(91674),n(51554),n(36631),n(45552),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(45552),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),f=n(99729);class g{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.messagingService=r,this.logService=o}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.postSecurityStamp(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("sessionsDeauthorized"),this.i18nService.t("logBackIn")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}))}}t.DeauthorizeSessionsComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.MessagingService),r.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-deauthorize-sessions"]],decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","deAuthTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deAuthTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"deauthorizeSessions")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"deauthorizeSessionsDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"deauthorizeSessionsWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"deauthorizeSessions")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[f.I18nPipe],encapsulation:2})},6430:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DeleteAccountComponent=void 0;n(91674),n(51554),n(36631),n(45552),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(45552),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),f=n(99729);class g{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.messagingService=r,this.logService=o}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.deleteAccount(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("accountDeleted"),this.i18nService.t("accountDeletedDesc")),this.messagingService.send("logout")}catch(e){this.logService.error(e)}}))}}t.DeleteAccountComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.MessagingService),r.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-delete-account"]],decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteAccountTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteAccountTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"deleteAccount")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,"deleteAccountDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"deleteAccountWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"deleteAccount")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[f.I18nPipe],encapsulation:2})},10116:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.DomainRulesComponent=void 0;n(91674),n(51554),n(36631),n(73828);const r=n(55785),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(36631),d=n(96832),p=n(56820),u=n(57490),m=n(8863),h=n(1142),v=n(99729);function f(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",8),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",9),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function g(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",15),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",16),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"textarea",17),o.ɵɵlistener("ngModelChange",(function(t){const n=o.ɵɵrestoreView(e).index;return o.ɵɵnextContext(2).custom[n]=t})),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",18),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).index;return o.ɵɵnextContext(2).remove(t)})),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelement(15,"i",19),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.index,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("for","customDomain_",e,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(6,7,"customDomainX",e+1)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate1("name","CustomDomain[",e,"]"),o.ɵɵpropertyInterpolate1("id","customDomain_",e,""),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(9,10,"ex")," google.com, gmail.com"),o.ɵɵproperty("ngModel",n.custom[e]),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,12,"remove"))}}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,g,18,14,"div",10),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"button",11),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().add()})),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",12),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"small",13),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.custom)("ngForTrackBy",e.indexTrackBy),o.ɵɵadvance(5),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(8,4,"newCustomDomain"),"\n "),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,6,"newCustomDomainDesc"))}}function x(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",8),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",9),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",29),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).toggleExcluded(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",31),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"exclude"),"\n "))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",29),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).toggleExcluded(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",32),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,1,"include"),"\n "))}const w=function(e){return{"table-list-strike":e}};function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",22),o.ɵɵtext(3),o.ɵɵelementEnd(),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"td",23),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",24),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"button",25),o.ɵɵpipe(10,"i18n"),o.ɵɵtext(11,"\n "),o.ɵɵelement(12,"i",26),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"div",27),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,S,5,3,"a",28),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,b,5,3,"a",28),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"a",29),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).customize(t)})),o.ɵɵtext(22,"\n "),o.ɵɵelement(23,"i",30),o.ɵɵtext(24),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit;o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(10,w,e.excluded)),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.domains),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(10,6,"options")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",!e.excluded),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.excluded),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(25,8,"customize"),"\n ")}}function I(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",20),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,C,30,12,"tr",21),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.global)}}class E{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.loading=!0,this.custom=[],this.global=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getSettingsDomains();this.loading=!1,null!=e.equivalentDomains&&(this.custom=e.equivalentDomains.map((e=>e.join(", ")))),null!=e.globalEquivalentDomains&&(this.global=e.globalEquivalentDomains.map((e=>({domains:e.domains.join(", "),excluded:e.excluded,key:e.type}))))}))}toggleExcluded(e){e.excluded=!e.excluded}customize(e){e.excluded=!0,this.custom.push(e.domains)}remove(e){this.custom.splice(e,1)}add(){this.custom.push("")}submit(){return i(this,void 0,void 0,(function*(){const e=new r.UpdateDomainsRequest;e.excludedGlobalEquivalentDomains=this.global.filter((e=>e.excluded)).map((e=>e.key)),0===e.excludedGlobalEquivalentDomains.length&&(e.excludedGlobalEquivalentDomains=null),e.equivalentDomains=this.custom.filter((e=>null!=e&&""!==e.trim())).map((e=>e.split(",").map((e=>e.trim())))),0===e.equivalentDomains.length&&(e.equivalentDomains=null);try{this.formPromise=this.apiService.putSettingsDomains(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("domainsUpdated"))}catch(t){this.logService.error(t)}}))}indexTrackBy(e,t){return e}}t.DomainRulesComponent=E,E.ɵfac=function(e){return new(e||E)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.LogService))},E.ɵcmp=o.ɵɵdefineComponent({type:E,selectors:[["app-domain-rules"]],decls:51,vars:31,consts:[[1,"page-header"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"spaced-header"],["class","table table-hover table-list",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","form-group d-flex",4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"btn","btn-outline-secondary","btn-sm","mb-2",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],[1,"text-muted","d-block","mb-3"],[1,"form-group","d-flex"],[1,"flex-fill"],[1,"sr-only",3,"for"],["required","",1,"form-control",3,"name","id","ngModel","placeholder","ngModelChange"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[3,"ngClass"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-cut"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-plus"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n"),o.ɵɵelementStart(7,"p"),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n"),o.ɵɵelementStart(11,"form",1,2),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"h2"),o.ɵɵtext(15),o.ɵɵpipe(16,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵtemplate(18,f,9,6,"p",3),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,y,14,8,"ng-container",3),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"button",4),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"i",5),o.ɵɵpipe(25,"i18n"),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"span"),o.ɵɵtext(28),o.ɵɵpipe(29,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"h2",6),o.ɵɵtext(33),o.ɵɵpipe(34,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵtemplate(36,x,9,6,"p",3),o.ɵɵtext(37,"\n "),o.ɵɵtemplate(38,I,7,1,"table",7),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"button",4),o.ɵɵtext(41,"\n "),o.ɵɵelement(42,"i",5),o.ɵɵpipe(43,"i18n"),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"span"),o.ɵɵtext(46),o.ɵɵpipe(47,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n")),2&e){const e=o.ɵɵreference(12);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,15,"domainRules")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,17,"domainRulesDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(16,19,"customEqDomains")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading),o.ɵɵadvance(2),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(25,21,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(29,23,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(34,25,"globalEqDomains")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.loading&&t.global.length>0),o.ɵɵadvance(2),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(43,27,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(47,29,"save"))}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.NgIf,u.NgForOf,d.DefaultValueAccessor,d.RequiredValidator,d.NgControlStatus,d.NgModel,m.A11yTitleDirective,u.NgClass,h.StopClickDirective],pipes:[v.I18nPipe],encapsulation:2})},36894:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAddEditComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(82838)),a=n(85985),s=n(8468),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(36631),m=n(96832),h=n(56820),v=n(57490),f=n(8863),g=n(48403),y=n(99729);function x(e,t){1&e&&l.ɵɵelement(0,"app-premium-badge")}function S(e,t){if(1&e&&(l.ɵɵelementStart(0,"small",18),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function b(e,t){1&e&&(l.ɵɵelementStart(0,"div",19),l.ɵɵtext(1,"\n "),l.ɵɵelement(2,"i",20),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4,"\n "),l.ɵɵelementStart(5,"span",21),l.ɵɵtext(6),l.ɵɵpipe(7,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,2,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p"),l.ɵɵtext(3),l.ɵɵpipe(4,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",33),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"label",34),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"input",35),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).email=t})),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementContainerEnd()}if(2&e){const e=l.ɵɵnextContext(2);l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(4,3,"inviteEmergencyContactDesc")),l.ɵɵadvance(6),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(10,5,"email")),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",e.email)}}function C(e,t){if(1&e&&(l.ɵɵelementStart(0,"option",36),l.ɵɵtext(1),l.ɵɵelementEnd()),2&e){const e=t.$implicit;l.ɵɵproperty("ngValue",e.value),l.ɵɵadvance(1),l.ɵɵtextInterpolate(e.name)}}function I(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"div",19),l.ɵɵtext(1,"\n "),l.ɵɵtemplate(2,w,15,7,"ng-container",6),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"h3"),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementStart(7,"a",22),l.ɵɵpipe(8,"i18n"),l.ɵɵtext(9,"\n "),l.ɵɵelement(10,"i",23),l.ɵɵtext(11,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(12,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(13,"\n "),l.ɵɵelementStart(14,"div",24),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"input",25),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().type=t})),l.ɵɵelementEnd(),l.ɵɵtext(17,"\n "),l.ɵɵelementStart(18,"label",26),l.ɵɵtext(19),l.ɵɵpipe(20,"i18n"),l.ɵɵelementStart(21,"small"),l.ɵɵtext(22),l.ɵɵpipe(23,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(24,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementStart(27,"div",24),l.ɵɵtext(28,"\n "),l.ɵɵelementStart(29,"input",27),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().type=t})),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n "),l.ɵɵelementStart(31,"label",28),l.ɵɵtext(32),l.ɵɵpipe(33,"i18n"),l.ɵɵelementStart(34,"small"),l.ɵɵtext(35),l.ɵɵpipe(36,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(38,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(39,"\n "),l.ɵɵelementStart(40,"div",29),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"label",30),l.ɵɵtext(43),l.ɵɵpipe(44,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(45,"\n "),l.ɵɵelementStart(46,"select",31),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().waitTime=t})),l.ɵɵtext(47,"\n "),l.ɵɵtemplate(48,C,2,2,"option",32),l.ɵɵtext(49,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n "),l.ɵɵelementStart(51,"small",18),l.ɵɵtext(52),l.ɵɵpipe(53,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(54,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(55,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!e.editMode),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(6,17,"userAccess"),"\n "),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(8,19,"learnMore")),l.ɵɵadvance(9),l.ɵɵproperty("value",e.emergencyAccessType.View)("ngModel",e.type),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(20,21,"view"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(23,23,"viewDesc")),l.ɵɵadvance(7),l.ɵɵproperty("value",e.emergencyAccessType.Takeover)("ngModel",e.type)("disabled",e.readOnly),l.ɵɵadvance(3),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(33,25,"takeover"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(36,27,"takeoverDesc")),l.ɵɵadvance(8),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(44,29,"waitTime")),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",e.waitTime)("disabled",e.readOnly),l.ɵɵadvance(2),l.ɵɵproperty("ngForOf",e.waitTimes),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(53,31,"waitTimeDesc"))}}function E(e,t){1&e&&(l.ɵɵelement(0,"i",37),l.ɵɵpipe(1,"i18n")),2&e&&l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(1,1,"loading"))}function P(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"save")))}function O(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"button",38,39),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().delete()})),l.ɵɵpipe(2,"i18n"),l.ɵɵtext(3,"\n "),l.ɵɵelement(4,"i",40),l.ɵɵtext(5,"\n "),l.ɵɵelement(6,"i",41),l.ɵɵpipe(7,"i18n"),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵreference(1);l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(2,5,"delete")),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(4),l.ɵɵproperty("hidden",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(7,7,"loading")),l.ɵɵproperty("hidden",!e.loading)}}class k{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.onSaved=new r.EventEmitter,this.onDeleted=new r.EventEmitter,this.loading=!0,this.readOnly=!1,this.editMode=!1,this.type=o.EmergencyAccessType.View,this.emergencyAccessType=o.EmergencyAccessType}ngOnInit(){return i(this,void 0,void 0,(function*(){if(this.editMode=this.loading=null!=this.emergencyAccessId,this.waitTimes=[{name:this.i18nService.t("oneDay"),value:1},{name:this.i18nService.t("days","2"),value:2},{name:this.i18nService.t("days","7"),value:7},{name:this.i18nService.t("days","14"),value:14},{name:this.i18nService.t("days","30"),value:30},{name:this.i18nService.t("days","90"),value:90}],this.editMode){this.editMode=!0,this.title=this.i18nService.t("editEmergencyContact");try{const e=yield this.apiService.getEmergencyAccess(this.emergencyAccessId);this.type=e.type,this.waitTime=e.waitTimeDays}catch(e){this.logService.error(e)}}else this.title=this.i18nService.t("inviteEmergencyContact"),this.waitTime=this.waitTimes[2].value;this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){try{if(this.editMode){const e=new s.EmergencyAccessUpdateRequest;e.type=this.type,e.waitTimeDays=this.waitTime,this.formPromise=this.apiService.putEmergencyAccess(this.emergencyAccessId,e)}else{const e=new a.EmergencyAccessInviteRequest;e.email=this.email.trim(),e.type=this.type,e.waitTimeDays=this.waitTime,this.formPromise=this.apiService.postEmergencyAccessInvite(e)}yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(this.editMode?"editedUserId":"invitedUsers",this.name)),this.onSaved.emit()}catch(e){this.logService.error(e)}}))}delete(){return i(this,void 0,void 0,(function*(){this.onDeleted.emit()}))}}t.EmergencyAccessAddEditComponent=k,k.ɵfac=function(e){return new(e||k)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=l.ɵɵdefineComponent({type:k,selectors:[["emergency-access-add-edit"]],inputs:{name:"name",emergencyAccessId:"emergencyAccessId"},outputs:{onSaved:"onSaved",onDeleted:"onDeleted"},decls:51,vars:16,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],[4,"ngIf"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary",3,"disabled"],["submitBtn",""],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","click",4,"ngIf"],[1,"text-muted"],[1,"modal-body"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/emergency-access/#user-access",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","userType","id","emergencyTypeView",1,"form-check-input",3,"value","ngModel","ngModelChange"],["for","emergencyTypeView",1,"form-check-label"],["type","radio","name","userType","id","emergencyTypeTakeover",1,"form-check-input",3,"value","ngModel","disabled","ngModelChange"],["for","emergencyTypeTakeover",1,"form-check-label"],[1,"form-group","col-6","mt-4"],["for","waitTime"],["id","waitTime","name","waitTime",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-group","mb-4"],["for","email"],["id","email","type","text","name","Email","required","",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"form",2,3),l.ɵɵlistener("ngSubmit",(function(){return t.submit()})),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"div",4),l.ɵɵtext(8,"\n "),l.ɵɵelementStart(9,"h2",5),l.ɵɵtext(10,"\n "),l.ɵɵtemplate(11,x,1,0,"app-premium-badge",6),l.ɵɵtext(12),l.ɵɵtemplate(13,S,2,1,"small",7),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"button",8),l.ɵɵpipe(17,"i18n"),l.ɵɵtext(18,"\n "),l.ɵɵelementStart(19,"span",9),l.ɵɵtext(20,"×"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,b,9,6,"div",10),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,I,56,33,"div",10),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"div",11),l.ɵɵtext(29,"\n "),l.ɵɵelementStart(30,"button",12,13),l.ɵɵtext(32,"\n "),l.ɵɵtemplate(33,E,2,3,"i",14),l.ɵɵtext(34,"\n "),l.ɵɵtemplate(35,P,3,3,"span",6),l.ɵɵtext(36,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(37,"\n "),l.ɵɵelementStart(38,"button",15),l.ɵɵtext(39),l.ɵɵpipe(40,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"div",16),l.ɵɵtext(43,"\n "),l.ɵɵtemplate(44,O,9,9,"button",17),l.ɵɵtext(45,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(46,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(47,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(48,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(49,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(50,"\n")),2&e){const e=l.ɵɵreference(31);l.ɵɵadvance(4),l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(7),l.ɵɵproperty("ngIf",t.readOnly),l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",t.title,"\n "),l.ɵɵadvance(1),l.ɵɵproperty("ngIf",t.name),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(17,12,"close")),l.ɵɵadvance(8),l.ɵɵproperty("ngIf",t.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading),l.ɵɵadvance(4),l.ɵɵproperty("disabled",t.loading||e.loading||t.readOnly),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",t.loading||e.loading),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.loading&&!e.loading),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(40,14,"cancel"),"\n "),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",t.editMode)}},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,f.A11yTitleDirective,g.PremiumBadgeComponent,m.RadioControlValueAccessor,m.DefaultValueAccessor,m.NgControlStatus,m.NgModel,m.SelectControlValueAccessor,v.NgForOf,m.RequiredValidator,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[y.I18nPipe],encapsulation:2})},4034:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessAttachmentsComponent=void 0;const r=n(93705),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(32621)),a=n(45330),s=n(51554),l=n(85714),c=n(73569),d=n(73828),p=n(91674),u=n(36631),m=n(96832),h=n(56820),v=n(57490),f=n(8863),g=n(1142),y=n(99729);function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.cipher.name)}}function S(e,t){1&e&&o.ɵɵelement(0,"i",24)}function b(e,t){1&e&&o.ɵɵelement(0,"i",25)}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",26),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",28),o.ɵɵpipe(5,"i18n"),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"span",29),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"button",30,31),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).reupload(t)})),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(12),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(5,5,"attachmentFixDesc")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,7,"attachmentFixDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"td",32),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",33,34),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).delete(t)})),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",35),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",36),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(3),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,6,"delete")),o.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",16),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,S,1,0,"i",17),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,1,0,"i",18),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td",19),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",20),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"a",21),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).download(t)})),o.ɵɵtext(14),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,16,11,"div",22),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,C,12,10,"td",23),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!e.downloading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.downloading),o.ɵɵadvance(8),o.ɵɵtextInterpolate(e.fileName),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),o.ɵɵadvance(4),o.ɵɵtextInterpolate(e.sizeName),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!n.viewOnly)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,I,25,6,"tr",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.cipher.attachments)}}function P(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",37),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",38),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small",39),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newAttachment")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"file")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"maxFileSize")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",40),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",41),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(5);o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"save"))}}class k extends r.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,r,o,window,a,i),this.viewOnly=!0,this.canAccessAttachments=!0}init(){return i(this,void 0,void 0,(function*(){}))}showFixOldAttachments(e){return!1}}t.EmergencyAccessAttachmentsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.CryptoService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.ApiService),o.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["emergency-access-attachments"]],features:[o.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,x,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,7,1,"table",10),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,P,16,9,"div",6),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",11),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,O,9,7,"button",12),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",13),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"attachments"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,f.A11yTitleDirective,v.NgForOf,g.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},94423:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessConfirmComponent=void 0;const r=n(32621),o=(n(91674),n(85714),n(36631),n(73569),n(82769)),a=n(32621),s=n(91674),l=n(85714),c=n(73569),d=n(36631),p=n(96832),u=n(56820),m=n(57490),h=n(8863),v=n(99729);function f(e,t){if(1&e&&(a.ɵɵelementStart(0,"small",18),a.ɵɵtext(1),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(1),a.ɵɵtextInterpolate(e.name)}}class g{constructor(e,t,n,i){this.apiService=e,this.cryptoService=t,this.stateService=n,this.logService=i,this.onConfirmed=new r.EventEmitter,this.dontAskAgain=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){try{const e=yield this.apiService.getUserPublicKey(this.userId);if(null!=e){const t=o.Utils.fromB64ToArray(e.publicKey),n=yield this.cryptoService.getFingerprint(this.userId,t.buffer);null!=n&&(this.fingerprint=n.join("-"))}}catch(e){this.logService.error(e)}this.loading=!1}))}submit(){return i(this,void 0,void 0,(function*(){if(!this.loading){this.dontAskAgain&&(yield this.stateService.setAutoConfirmFingerprints(!0));try{this.onConfirmed.emit()}catch(e){this.logService.error(e)}}}))}}t.EmergencyAccessConfirmComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.CryptoService),a.ɵɵdirectiveInject(c.StateService),a.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["emergency-access-confirm"]],inputs:{name:"name",userId:"userId",emergencyAccessId:"emergencyAccessId",formPromise:"formPromise"},outputs:{onConfirmed:"onConfirmed"},decls:69,vars:29,consts:[["role","dialog","aria-modal","true","aria-labelledby","confirmUserTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","confirmUserTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener"],[1,"form-check"],["type","checkbox","id","dontAskAgain","name","DontAskAgain",1,"form-check-input",3,"ngModel","ngModelChange"],["for","dontAskAgain",1,"form-check-label"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵtemplate(12,f,2,1,"small",6),a.ɵɵtext(13,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"button",7),a.ɵɵpipe(16,"i18n"),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"span",8),a.ɵɵtext(19,"×"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"div",9),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"p"),a.ɵɵtext(26),a.ɵɵpipe(27,"i18n"),a.ɵɵelementStart(28,"a",10),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementStart(33,"p"),a.ɵɵtext(34,"\n "),a.ɵɵelementStart(35,"code"),a.ɵɵtext(36),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"div",11),a.ɵɵtext(40,"\n "),a.ɵɵelementStart(41,"input",12),a.ɵɵlistener("ngModelChange",(function(e){return t.dontAskAgain=e})),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementStart(43,"label",13),a.ɵɵtext(44),a.ɵɵpipe(45,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(46,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(47,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(48,"\n "),a.ɵɵelementStart(49,"div",14),a.ɵɵtext(50,"\n "),a.ɵɵelementStart(51,"button",15),a.ɵɵtext(52,"\n "),a.ɵɵelement(53,"i",16),a.ɵɵpipe(54,"i18n"),a.ɵɵtext(55,"\n "),a.ɵɵelementStart(56,"span"),a.ɵɵtext(57),a.ɵɵpipe(58,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(60,"\n "),a.ɵɵelementStart(61,"button",17),a.ɵɵtext(62),a.ɵɵpipe(63,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(65,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(66,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(67,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(68,"\n")),2&e){const e=a.ɵɵreference(5);a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,13,"confirmUser"),"\n "),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.name),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(16,15,"close")),a.ɵɵadvance(11),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(27,17,"fingerprintEnsureIntegrityVerify"),"\n "),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,19,"learnMore"),""),a.ɵɵadvance(7),a.ɵɵtextInterpolate(t.fingerprint),a.ɵɵadvance(5),a.ɵɵproperty("ngModel",t.dontAskAgain),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(45,21,"dontAskFingerprintAgain"),"\n "),a.ɵɵadvance(7),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(54,23,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(58,25,"confirm")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(63,27,"cancel"),"\n ")}},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.NgIf,h.A11yTitleDirective,p.CheckboxControlValueAccessor,p.NgControlStatus,p.NgModel],pipes:[v.I18nPipe],encapsulation:2})},36485:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessTakeoverComponent=void 0;const r=n(32621),o=n(16545),a=(n(91674),n(85714),n(51554),n(36631),n(45552),n(84275),n(73828),n(62166),n(73569),n(20971),n(34144)),s=n(41317),l=n(69731),c=n(64288),d=n(32621),p=n(51554),u=n(85714),m=n(45552),h=n(73569),v=n(84275),f=n(73828),g=n(62166),y=n(91674),x=n(36631),S=n(96832),b=n(56820),w=n(57490),C=n(8863),I=n(51626),E=n(48198),P=n(40946),O=n(99729);function k(e,t){if(1&e&&(d.ɵɵelementStart(0,"small",24),d.ɵɵtext(1),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(1),d.ɵɵtextInterpolate(e.name)}}function A(e,t){if(1&e&&(d.ɵɵelementStart(0,"app-callout",25),d.ɵɵtext(1,"\n "),d.ɵɵelementEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵproperty("enforcedPolicyOptions",e.enforcedPolicyOptions)}}class T extends o.ChangePasswordComponent{constructor(e,t,n,i,o,a,s,l,c){super(e,t,n,o,a,s,i),this.apiService=l,this.logService=c,this.onDone=new r.EventEmitter}ngOnInit(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);if(null!=e.data&&e.data.length>0){const t=e.data.map((e=>new s.Policy(new a.PolicyData(e))));this.enforcedPolicyOptions=yield this.policyService.getMasterPasswordPolicyOptions(t)}}))}submit(){return i(this,void 0,void 0,(function*(){if(!(yield this.strongPassword()))return;const e=yield this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId),t=yield this.cryptoService.rsaDecrypt(e.keyEncrypted),n=new l.SymmetricCryptoKey(t);if(null==n)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("unexpectedError"));const i=yield this.cryptoService.makeKey(this.masterPassword,this.email,e.kdf,e.kdfIterations),r=yield this.cryptoService.hashPassword(this.masterPassword,i),o=yield this.cryptoService.remakeEncKey(i,n),a=new c.EmergencyAccessPasswordRequest;a.newMasterPasswordHash=r,a.key=o[1].encryptedString,this.apiService.postEmergencyAccessPassword(this.emergencyAccessId,a);try{this.onDone.emit()}catch(s){this.logService.error(s)}}))}}t.EmergencyAccessTakeoverComponent=T,T.ɵfac=function(e){return new(e||T)(d.ɵɵdirectiveInject(p.I18nService),d.ɵɵdirectiveInject(u.CryptoService),d.ɵɵdirectiveInject(m.MessagingService),d.ɵɵdirectiveInject(h.StateService),d.ɵɵdirectiveInject(v.PasswordGenerationService),d.ɵɵdirectiveInject(f.PlatformUtilsService),d.ɵɵdirectiveInject(g.PolicyService),d.ɵɵdirectiveInject(y.ApiService),d.ɵɵdirectiveInject(x.LogService))},T.ɵcmp=d.ɵɵdefineComponent({type:T,selectors:[["emergency-access-takeover"]],inputs:{emergencyAccessId:"emergencyAccessId",name:"name",email:"email",kdf:"kdf",kdfIterations:"kdfIterations"},outputs:{onDone:"onDone"},features:[d.ɵɵInheritDefinitionFeature],decls:82,vars:32,consts:[["role","dialog","aria-modal","true","aria-labelledby","userAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","userAddEditTitle",1,"modal-title"],["class","text-muted",4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["type","info",3,"enforcedPolicyOptions",4,"ngIf"],[1,"row"],[1,"col-6"],[1,"form-group"],["for","masterPassword"],["id","masterPassword","type","password","name","NewMasterPasswordHash","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control","mb-1",3,"ngModel","ngModelChange","input"],[3,"score","showText"],["for","masterPasswordRetype"],["id","masterPasswordRetype","type","password","name","MasterPasswordRetype","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-muted"],["type","info",3,"enforcedPolicyOptions"]],template:function(e,t){if(1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"div",1),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"form",2,3),d.ɵɵlistener("ngSubmit",(function(){return t.submit()})),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"div",4),d.ɵɵtext(8,"\n "),d.ɵɵelementStart(9,"h2",5),d.ɵɵtext(10),d.ɵɵpipe(11,"i18n"),d.ɵɵtemplate(12,k,2,1,"small",6),d.ɵɵtext(13,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(14,"\n "),d.ɵɵelementStart(15,"button",7),d.ɵɵpipe(16,"i18n"),d.ɵɵtext(17,"\n "),d.ɵɵelementStart(18,"span",8),d.ɵɵtext(19,"×"),d.ɵɵelementEnd(),d.ɵɵtext(20,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"div",9),d.ɵɵtext(24,"\n "),d.ɵɵelementStart(25,"app-callout",10),d.ɵɵtext(26),d.ɵɵpipe(27,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(28,"\n "),d.ɵɵtemplate(29,A,2,1,"app-callout",11),d.ɵɵtext(30,"\n "),d.ɵɵelementStart(31,"div",12),d.ɵɵtext(32,"\n "),d.ɵɵelementStart(33,"div",13),d.ɵɵtext(34,"\n "),d.ɵɵelementStart(35,"div",14),d.ɵɵtext(36,"\n "),d.ɵɵelementStart(37,"label",15),d.ɵɵtext(38),d.ɵɵpipe(39,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(40,"\n "),d.ɵɵelementStart(41,"input",16),d.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e}))("input",(function(){return t.updatePasswordStrength()})),d.ɵɵelementEnd(),d.ɵɵtext(42,"\n "),d.ɵɵelementStart(43,"app-password-strength",17),d.ɵɵtext(44,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(45,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(46,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(47,"\n "),d.ɵɵelementStart(48,"div",13),d.ɵɵtext(49,"\n "),d.ɵɵelementStart(50,"div",14),d.ɵɵtext(51,"\n "),d.ɵɵelementStart(52,"label",18),d.ɵɵtext(53),d.ɵɵpipe(54,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(55,"\n "),d.ɵɵelementStart(56,"input",19),d.ɵɵlistener("ngModelChange",(function(e){return t.masterPasswordRetype=e})),d.ɵɵelementEnd(),d.ɵɵtext(57,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(58,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(59,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(60,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(61,"\n "),d.ɵɵelementStart(62,"div",20),d.ɵɵtext(63,"\n "),d.ɵɵelementStart(64,"button",21),d.ɵɵtext(65,"\n "),d.ɵɵelement(66,"i",22),d.ɵɵpipe(67,"i18n"),d.ɵɵtext(68,"\n "),d.ɵɵelementStart(69,"span"),d.ɵɵtext(70),d.ɵɵpipe(71,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(72,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(73,"\n "),d.ɵɵelementStart(74,"button",23),d.ɵɵtext(75),d.ɵɵpipe(76,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(77,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(78,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(79,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(80,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(81,"\n")),2&e){const e=d.ɵɵreference(5);d.ɵɵadvance(4),d.ɵɵproperty("appApiAction",t.formPromise),d.ɵɵadvance(6),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(11,16,"takeover"),"\n "),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.name),d.ɵɵadvance(3),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(16,18,"close")),d.ɵɵadvance(11),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(27,20,"loggedOutWarning")),d.ɵɵadvance(3),d.ɵɵproperty("ngIf",t.enforcedPolicyOptions),d.ɵɵadvance(9),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(39,22,"newMasterPass")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",t.masterPassword),d.ɵɵadvance(2),d.ɵɵproperty("score",t.masterPasswordScore)("showText",!0),d.ɵɵadvance(10),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(54,24,"confirmNewMasterPass")),d.ɵɵadvance(3),d.ɵɵproperty("ngModel",t.masterPasswordRetype),d.ɵɵadvance(8),d.ɵɵproperty("disabled",e.loading),d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(67,26,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(71,28,"save")),d.ɵɵadvance(5),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(76,30,"cancel"),"\n ")}},directives:[S.NgControlStatusGroup,S.NgForm,b.ApiActionDirective,w.NgIf,C.A11yTitleDirective,I.CalloutComponent,S.DefaultValueAccessor,S.RequiredValidator,E.InputVerbatimDirective,S.NgControlStatus,S.NgModel,P.PasswordStrengthComponent],pipes:[O.I18nPipe],encapsulation:2})},12721:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessViewComponent=void 0;const r=n(32621),o=(n(68012),n(64684),n(91674),n(45330),n(85714),n(82789)),a=n(49624),s=n(69731),l=n(4034),c=n(19733),d=n(32621),p=n(45330),u=n(85714),m=n(64684),h=n(68012),v=n(91674),f=n(57490),g=n(18310),y=n(1142),x=n(39159),S=n(8863),b=n(99729),w=["cipherAddEdit"],C=["attachments"];function I(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",13),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"shared")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"shared")))}function E(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",15),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"attachments")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"attachments")))}function P(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"div",16),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",17),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",18),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",19),d.ɵɵtext(9,"\n "),d.ɵɵelementStart(10,"a",20),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);const t=d.ɵɵnextContext().$implicit;return d.ɵɵnextContext(2).viewAttachments(t)})),d.ɵɵtext(11,"\n "),d.ɵɵelement(12,"i",21),d.ɵɵtext(13),d.ɵɵpipe(14,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(15,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(16,"\n "),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,2,"options")),d.ɵɵadvance(11),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(14,4,"attachments"),"\n "))}function O(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"tr"),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"td",7),d.ɵɵtext(3,"\n "),d.ɵɵelement(4,"app-vault-icon",8),d.ɵɵtext(5,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n "),d.ɵɵelementStart(7,"td",9),d.ɵɵtext(8,"\n "),d.ɵɵelementStart(9,"a",10),d.ɵɵlistener("click",(function(){const t=d.ɵɵrestoreView(e).$implicit;return d.ɵɵnextContext(2).selectCipher(t)})),d.ɵɵpipe(10,"i18n"),d.ɵɵtext(11),d.ɵɵelementEnd(),d.ɵɵtext(12,"\n "),d.ɵɵtemplate(13,I,9,6,"ng-container",2),d.ɵɵtext(14,"\n "),d.ɵɵtemplate(15,E,9,6,"ng-container",2),d.ɵɵtext(16,"\n "),d.ɵɵelement(17,"br"),d.ɵɵtext(18,"\n "),d.ɵɵelementStart(19,"small"),d.ɵɵtext(20),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(22,"\n "),d.ɵɵelementStart(23,"td",11),d.ɵɵtext(24,"\n "),d.ɵɵtemplate(25,P,17,6,"div",12),d.ɵɵtext(26,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(27,"\n "),d.ɵɵelementEnd()}if(2&e){const e=t.$implicit;d.ɵɵadvance(4),d.ɵɵproperty("cipher",e),d.ɵɵadvance(5),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(10,7,"editItem")),d.ɵɵadvance(2),d.ɵɵtextInterpolate(e.name),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.organizationId),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",e.hasAttachments),d.ɵɵadvance(5),d.ɵɵtextInterpolate(e.subTitle),d.ɵɵadvance(5),d.ɵɵproperty("ngIf",e.hasAttachments)}}function k(e,t){if(1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"table",5),d.ɵɵtext(3,"\n "),d.ɵɵelementStart(4,"tbody"),d.ɵɵtext(5,"\n "),d.ɵɵtemplate(6,O,28,9,"tr",6),d.ɵɵtext(7,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(9,"\n "),d.ɵɵelementContainerEnd()),2&e){const e=d.ɵɵnextContext();d.ɵɵadvance(6),d.ɵɵproperty("ngForOf",e.ciphers)}}function A(e,t){1&e&&(d.ɵɵelementContainerStart(0),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",22),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelementStart(5,"span",14),d.ɵɵtext(6),d.ɵɵpipe(7,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(8,"\n "),d.ɵɵelementContainerEnd()),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("title",d.ɵɵpipeBind1(3,2,"loading")),d.ɵɵadvance(4),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(7,4,"loading")))}function T(e,t){}function M(e,t){}class B{constructor(e,t,n,i,r,o){this.cipherService=e,this.cryptoService=t,this.modalService=n,this.router=i,this.route=r,this.apiService=o,this.ciphers=[],this.loaded=!1}ngOnInit(){this.route.params.subscribe((e=>{if(null==e.id)return this.router.navigate(["settings/emergency-access"]);this.id=e.id,this.load()}))}selectCipher(e){return i(this,void 0,void 0,(function*(){const[t,n]=yield this.modalService.openViewRef(c.EmergencyAddEditComponent,this.cipherAddEditModalRef,(t=>{t.cipherId=null==e?null:e.id,t.cipher=e}));return n}))}load(){return i(this,void 0,void 0,(function*(){const e=yield this.apiService.postEmergencyAccessView(this.id);this.ciphers=yield this.getAllCiphers(e),this.loaded=!0}))}viewAttachments(e){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(l.EmergencyAccessAttachmentsComponent,this.attachmentsModalRef,(t=>{t.cipher=e,t.emergencyAccessId=this.id}))}))}getAllCiphers(e){return i(this,void 0,void 0,(function*(){const t=e.ciphers,n=[],i=yield this.cryptoService.rsaDecrypt(e.keyEncrypted),r=new s.SymmetricCryptoKey(i),l=[];return t.forEach((e=>{const t=new o.CipherData(e),i=new a.Cipher(t);l.push(i.decrypt(r).then((e=>n.push(e))))})),yield Promise.all(l),n.sort(this.cipherService.getLocaleSortingFunction()),n}))}}t.EmergencyAccessViewComponent=B,B.ɵfac=function(e){return new(e||B)(d.ɵɵdirectiveInject(p.CipherService),d.ɵɵdirectiveInject(u.CryptoService),d.ɵɵdirectiveInject(m.ModalService),d.ɵɵdirectiveInject(h.Router),d.ɵɵdirectiveInject(h.ActivatedRoute),d.ɵɵdirectiveInject(v.ApiService))},B.ɵcmp=d.ɵɵdefineComponent({type:B,selectors:[["emergency-access-view"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(w,7,r.ViewContainerRef),d.ɵɵviewQuery(C,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.cipherAddEditModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.attachmentsModalRef=e.first)}},decls:20,vars:5,consts:[[1,"page-header"],[1,"mt-4"],[4,"ngIf"],["cipherAddEdit",""],["attachments",""],[1,"table","table-hover","table-list","table-ciphers"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],[3,"cipher"],[1,"reduced-lh","wrap"],["href","#","appStopClick","",3,"title","click"],[1,"table-list-options"],["class","dropdown","appListDropdown","",4,"ngIf"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-collection",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],["appListDropdown","",1,"dropdown"],["type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],["aria-labelledby","dropdownMenuButton",1,"dropdown-menu","dropdown-menu-right"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"h1"),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(5,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(6,"\n"),d.ɵɵelementStart(7,"div",1),d.ɵɵtext(8,"\n "),d.ɵɵtemplate(9,k,10,1,"ng-container",2),d.ɵɵtext(10,"\n "),d.ɵɵtemplate(11,A,9,6,"ng-container",2),d.ɵɵtext(12,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(13,"\n"),d.ɵɵtemplate(14,T,0,0,"ng-template",null,3,d.ɵɵtemplateRefExtractor),d.ɵɵtext(16,"\n"),d.ɵɵtemplate(17,M,0,0,"ng-template",null,4,d.ɵɵtemplateRefExtractor),d.ɵɵtext(19,"\n")),2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate(d.ɵɵpipeBind1(4,3,"vault")),d.ɵɵadvance(6),d.ɵɵproperty("ngIf",t.ciphers.length),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.loaded))},directives:[f.NgIf,f.NgForOf,g.IconComponent,y.StopClickDirective,x.StopPropDirective,S.A11yTitleDirective],pipes:[b.I18nPipe],encapsulation:2})},41764:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAccessComponent=void 0;const r=n(32621),o=(n(52080),n(64684),n(91674),n(85714),n(51554),n(36631),n(45552),n(63513),n(73828),n(73569),n(47200)),a=n(82838),s=n(82769),l=n(16657),c=n(50881),d=n(36894),p=n(94423),u=n(36485),m=n(32621),h=n(91674),v=n(51554),f=n(64684),g=n(73828),y=n(85714),x=n(45552),S=n(52080),b=n(36631),w=n(73569),C=n(63513),I=n(57490),E=n(48403),P=n(15370),O=n(1142),k=n(8863),A=n(68012),T=n(99729),M=n(52080),B=["addEdit"],D=["takeoverTemplate"],R=["confirmTemplate"];function F(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"b"),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(5),m.ɵɵpipe(6,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("",m.ɵɵpipeBind1(4,2,"warning"),":"),m.ɵɵadvance(2),m.ɵɵtextInterpolate1(" ",m.ɵɵpipeBind1(6,4,"emergencyAccessOwnerWarning"),"\n"))}function U(e,t){1&e&&(m.ɵɵelementStart(0,"span",32),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"invited")))}function V(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"accepted")))}function N(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryInitiated")))}function _(e,t){1&e&&(m.ɵɵelementStart(0,"span",34),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryApproved")))}function j(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"view")))}function z(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"takeover")))}function H(e,t){if(1&e&&(m.ɵɵelementStart(0,"small",36),m.ɵɵtext(1),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵadvance(1),m.ɵɵtextInterpolate(e.name)}}function L(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).reinvite(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",38),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"resendInvitation"),"\n "))}function K(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",39),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).confirm(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",40),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"confirm"),"\n "))}function q(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",39),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).approve(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",40),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"approve"),"\n "))}function G(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",41),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).reject(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",31),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"reject"),"\n "))}function W(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"tr"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"td",14),m.ɵɵtext(3,"\n "),m.ɵɵelementStart(4,"app-avatar",15),m.ɵɵpipe(5,"userName"),m.ɵɵtext(6,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(7,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(8,"\n "),m.ɵɵelementStart(9,"td"),m.ɵɵtext(10,"\n "),m.ɵɵelementStart(11,"a",16),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).edit(t)})),m.ɵɵtext(12),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n "),m.ɵɵtemplate(14,U,3,3,"span",17),m.ɵɵtext(15,"\n "),m.ɵɵtemplate(16,V,3,3,"span",18),m.ɵɵtext(17,"\n "),m.ɵɵtemplate(18,N,3,3,"span",18),m.ɵɵtext(19,"\n "),m.ɵɵtemplate(20,_,3,3,"span",19),m.ɵɵtext(21,"\n\n "),m.ɵɵtemplate(22,j,3,3,"span",20),m.ɵɵtext(23,"\n "),m.ɵɵtemplate(24,z,3,3,"span",20),m.ɵɵtext(25,"\n\n "),m.ɵɵtemplate(26,H,2,1,"small",21),m.ɵɵtext(27,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(28,"\n "),m.ɵɵelementStart(29,"td",22),m.ɵɵtext(30,"\n "),m.ɵɵelementStart(31,"div",23),m.ɵɵtext(32,"\n "),m.ɵɵelementStart(33,"button",24),m.ɵɵpipe(34,"i18n"),m.ɵɵtext(35,"\n "),m.ɵɵelement(36,"i",25),m.ɵɵtext(37,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(38,"\n "),m.ɵɵelementStart(39,"div",26),m.ɵɵtext(40,"\n "),m.ɵɵtemplate(41,L,5,3,"a",27),m.ɵɵtext(42,"\n "),m.ɵɵtemplate(43,K,5,3,"a",28),m.ɵɵtext(44,"\n "),m.ɵɵtemplate(45,q,5,3,"a",28),m.ɵɵtext(46,"\n "),m.ɵɵtemplate(47,G,5,3,"a",29),m.ɵɵtext(48,"\n "),m.ɵɵelementStart(49,"a",30),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).remove(t)})),m.ɵɵtext(50,"\n "),m.ɵɵelement(51,"i",31),m.ɵɵtext(52),m.ɵɵpipe(53,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(54,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(55,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(56,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(57,"\n "),m.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=m.ɵɵnextContext(2);m.ɵɵadvance(4),m.ɵɵproperty("data",m.ɵɵpipeBind1(5,18,e))("email",e.email)("circle",!0)("fontSize",14),m.ɵɵadvance(8),m.ɵɵtextInterpolate(e.email),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.View),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.name),m.ɵɵadvance(7),m.ɵɵpropertyInterpolate("appA11yTitle",m.ɵɵpipeBind1(34,20,"options")),m.ɵɵadvance(8),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated||e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(53,22,"remove"),"\n ")}}function $(e,t){if(1&e&&(m.ɵɵelementStart(0,"table",12),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"tbody"),m.ɵɵtext(3,"\n "),m.ɵɵtemplate(4,W,58,24,"tr",13),m.ɵɵtext(5,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext();m.ɵɵadvance(4),m.ɵɵproperty("ngForOf",e.trustedContacts)}}function Y(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"noTrustedContacts")))}function Q(e,t){1&e&&(m.ɵɵelementStart(0,"span",32),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"invited")))}function J(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"accepted")))}function Z(e,t){1&e&&(m.ɵɵelementStart(0,"span",33),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryInitiated")))}function X(e,t){1&e&&(m.ɵɵelementStart(0,"span",34),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"emergencyAccessRecoveryApproved")))}function ee(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"view")))}function te(e,t){1&e&&(m.ɵɵelementStart(0,"span",35),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"takeover")))}function ne(e,t){if(1&e&&(m.ɵɵelementStart(0,"small",36),m.ɵɵtext(1),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵadvance(1),m.ɵɵtextInterpolate(e.name)}}function ie(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).requestAccess(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",38),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"requestAccess"),"\n "))}function re(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"a",37),m.ɵɵlistener("click",(function(){m.ɵɵrestoreView(e);const t=m.ɵɵnextContext().$implicit;return m.ɵɵnextContext(2).takeover(t)})),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",43),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()}2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,1,"takeover"),"\n "))}function oe(e,t){if(1&e&&(m.ɵɵelementStart(0,"a",44),m.ɵɵtext(1,"\n "),m.ɵɵelement(2,"i",45),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext().$implicit;m.ɵɵproperty("routerLink",e.id),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(4,2,"view"),"\n ")}}function ae(e,t){if(1&e){const e=m.ɵɵgetCurrentView();m.ɵɵelementStart(0,"tr"),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"td",14),m.ɵɵtext(3,"\n "),m.ɵɵelementStart(4,"app-avatar",15),m.ɵɵpipe(5,"userName"),m.ɵɵtext(6,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(7,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(8,"\n "),m.ɵɵelementStart(9,"td"),m.ɵɵtext(10,"\n "),m.ɵɵelementStart(11,"span"),m.ɵɵtext(12),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n "),m.ɵɵtemplate(14,Q,3,3,"span",17),m.ɵɵtext(15,"\n "),m.ɵɵtemplate(16,J,3,3,"span",18),m.ɵɵtext(17,"\n "),m.ɵɵtemplate(18,Z,3,3,"span",18),m.ɵɵtext(19,"\n "),m.ɵɵtemplate(20,X,3,3,"span",19),m.ɵɵtext(21,"\n\n "),m.ɵɵtemplate(22,ee,3,3,"span",20),m.ɵɵtext(23,"\n "),m.ɵɵtemplate(24,te,3,3,"span",20),m.ɵɵtext(25,"\n\n "),m.ɵɵtemplate(26,ne,2,1,"small",21),m.ɵɵtext(27,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(28,"\n "),m.ɵɵelementStart(29,"td",22),m.ɵɵtext(30,"\n "),m.ɵɵelementStart(31,"div",23),m.ɵɵtext(32,"\n "),m.ɵɵelementStart(33,"button",24),m.ɵɵpipe(34,"i18n"),m.ɵɵtext(35,"\n "),m.ɵɵelement(36,"i",25),m.ɵɵtext(37,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(38,"\n "),m.ɵɵelementStart(39,"div",26),m.ɵɵtext(40,"\n "),m.ɵɵtemplate(41,ie,5,3,"a",27),m.ɵɵtext(42,"\n "),m.ɵɵtemplate(43,re,5,3,"a",27),m.ɵɵtext(44,"\n "),m.ɵɵtemplate(45,oe,5,4,"a",42),m.ɵɵtext(46,"\n "),m.ɵɵelementStart(47,"a",30),m.ɵɵlistener("click",(function(){const t=m.ɵɵrestoreView(e).$implicit;return m.ɵɵnextContext(2).remove(t)})),m.ɵɵtext(48,"\n "),m.ɵɵelement(49,"i",31),m.ɵɵtext(50),m.ɵɵpipe(51,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(52,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(53,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(54,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(55,"\n "),m.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=m.ɵɵnextContext(2);m.ɵɵadvance(4),m.ɵɵproperty("data",m.ɵɵpipeBind1(5,17,e))("email",e.email)("circle",!0)("fontSize",14),m.ɵɵadvance(8),m.ɵɵtextInterpolate(e.email),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Invited),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Accepted),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryInitiated),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.View),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.name),m.ɵɵadvance(7),m.ɵɵpropertyInterpolate("appA11yTitle",m.ɵɵpipeBind1(34,19,"options")),m.ɵɵadvance(8),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.Confirmed),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved&&e.type===n.emergencyAccessType.Takeover),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",e.status===n.emergencyAccessStatusType.RecoveryApproved&&e.type===n.emergencyAccessType.View),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(51,21,"remove"),"\n ")}}function se(e,t){if(1&e&&(m.ɵɵelementStart(0,"table",12),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"tbody"),m.ɵɵtext(3,"\n "),m.ɵɵtemplate(4,ae,56,23,"tr",13),m.ɵɵtext(5,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementEnd()),2&e){const e=m.ɵɵnextContext();m.ɵɵadvance(4),m.ɵɵproperty("ngForOf",e.grantedContacts)}}function le(e,t){1&e&&(m.ɵɵelementStart(0,"p"),m.ɵɵtext(1),m.ɵɵpipe(2,"i18n"),m.ɵɵelementEnd()),2&e&&(m.ɵɵadvance(1),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(2,1,"noGrantedAccess")))}function ce(e,t){}function de(e,t){}function pe(e,t){}class ue{constructor(e,t,n,i,r,s,l,c,d,p){this.apiService=e,this.i18nService=t,this.modalService=n,this.platformUtilsService=i,this.cryptoService=r,this.messagingService=s,this.userNamePipe=l,this.logService=c,this.stateService=d,this.organizationService=p,this.emergencyAccessType=a.EmergencyAccessType,this.emergencyAccessStatusType=o.EmergencyAccessStatusType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();const e=yield this.organizationService.getAll();this.isOrganizationOwner=e.some((e=>e.isOwner)),this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.trustedContacts=(yield this.apiService.getEmergencyAccessTrusted()).data,this.grantedContacts=(yield this.apiService.getEmergencyAccessGranted()).data}))}premiumRequired(){return i(this,void 0,void 0,(function*(){this.canAccessPremium||this.messagingService.send("premiumRequired")}))}edit(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(d.EmergencyAccessAddEditComponent,this.addEditModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.emergencyAccessId=null==e?void 0:e.id,n.readOnly=!this.canAccessPremium,n.onSaved.subscribe((()=>{t.close(),this.load()})),n.onDeleted.subscribe((()=>{t.close(),this.remove(e)}))}))}))}invite(){this.edit(null)}reinvite(e){return i(this,void 0,void 0,(function*(){null==this.actionPromise&&(this.actionPromise=this.apiService.postEmergencyAccessReinvite(e.id),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenReinvited",e.email)),this.actionPromise=null)}))}confirm(e){return i(this,void 0,void 0,(function*(){function t(){e.status=o.EmergencyAccessStatusType.Confirmed}if(null!=this.actionPromise)return;const n=yield this.stateService.getAutoConfirmFingerPrints();if(null!=n&&n)this.actionPromise=this.doConfirmation(e),yield this.actionPromise,t(),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e))),this.actionPromise=null;else{const[n]=yield this.modalService.openViewRef(p.EmergencyAccessConfirmComponent,this.confirmModalRef,(r=>{r.name=this.userNamePipe.transform(e),r.emergencyAccessId=e.id,r.userId=null==e?void 0:e.granteeId,r.onConfirmed.subscribe((()=>i(this,void 0,void 0,(function*(){n.close(),r.formPromise=this.doConfirmation(e),yield r.formPromise,t(),this.platformUtilsService.showToast("success",null,this.i18nService.t("hasBeenConfirmed",this.userNamePipe.transform(e)))}))))}))}}))}remove(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeUserConfirmation"),this.userNamePipe.transform(e),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{yield this.apiService.deleteEmergencyAccess(e.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("removedUserId",this.userNamePipe.transform(e))),e instanceof c.EmergencyAccessGranteeDetailsResponse?this.removeGrantee(e):this.removeGrantor(e)}catch(t){this.logService.error(t)}}))}requestAccess(e){return i(this,void 0,void 0,(function*(){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("requestAccessConfirmation",e.waitTimeDays.toString()),this.userNamePipe.transform(e),this.i18nService.t("requestAccess"),this.i18nService.t("no"),"warning")))return!1;yield this.apiService.postEmergencyAccessInitiate(e.id),e.status=o.EmergencyAccessStatusType.RecoveryInitiated,this.platformUtilsService.showToast("success",null,this.i18nService.t("requestSent",this.userNamePipe.transform(e)))}))}approve(e){return i(this,void 0,void 0,(function*(){const t=this.i18nService.t(e.type===a.EmergencyAccessType.View?"view":"takeover");if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("approveAccessConfirmation",this.userNamePipe.transform(e),t),this.userNamePipe.transform(e),this.i18nService.t("approve"),this.i18nService.t("no"),"warning")))return!1;yield this.apiService.postEmergencyAccessApprove(e.id),e.status=o.EmergencyAccessStatusType.RecoveryApproved,this.platformUtilsService.showToast("success",null,this.i18nService.t("emergencyApproved",this.userNamePipe.transform(e)))}))}reject(e){return i(this,void 0,void 0,(function*(){yield this.apiService.postEmergencyAccessReject(e.id),e.status=o.EmergencyAccessStatusType.Confirmed,this.platformUtilsService.showToast("success",null,this.i18nService.t("emergencyRejected",this.userNamePipe.transform(e)))}))}takeover(e){return i(this,void 0,void 0,(function*(){const[t]=yield this.modalService.openViewRef(u.EmergencyAccessTakeoverComponent,this.takeoverModalRef,(n=>{n.name=this.userNamePipe.transform(e),n.email=e.email,n.emergencyAccessId=null!=e?e.id:null,n.onDone.subscribe((()=>{t.close(),this.platformUtilsService.showToast("success",null,this.i18nService.t("passwordResetFor",this.userNamePipe.transform(e)))}))}))}))}removeGrantee(e){const t=this.trustedContacts.indexOf(e);t>-1&&this.trustedContacts.splice(t,1)}removeGrantor(e){const t=this.grantedContacts.indexOf(e);t>-1&&this.grantedContacts.splice(t,1)}doConfirmation(e){return i(this,void 0,void 0,(function*(){const t=yield this.cryptoService.getEncKey(),n=yield this.apiService.getUserPublicKey(e.granteeId),i=s.Utils.fromB64ToArray(n.publicKey);try{this.logService.debug("User's fingerprint: "+(yield this.cryptoService.getFingerprint(e.granteeId,i.buffer)).join("-"))}catch(a){}const r=yield this.cryptoService.rsaEncrypt(t.key,i.buffer),o=new l.EmergencyAccessConfirmRequest;o.key=r.encryptedString,yield this.apiService.postEmergencyAccessConfirm(e.id,o)}))}}t.EmergencyAccessComponent=ue,ue.ɵfac=function(e){return new(e||ue)(m.ɵɵdirectiveInject(h.ApiService),m.ɵɵdirectiveInject(v.I18nService),m.ɵɵdirectiveInject(f.ModalService),m.ɵɵdirectiveInject(g.PlatformUtilsService),m.ɵɵdirectiveInject(y.CryptoService),m.ɵɵdirectiveInject(x.MessagingService),m.ɵɵdirectiveInject(S.UserNamePipe),m.ɵɵdirectiveInject(b.LogService),m.ɵɵdirectiveInject(w.StateService),m.ɵɵdirectiveInject(C.OrganizationService))},ue.ɵcmp=m.ɵɵdefineComponent({type:ue,selectors:[["emergency-access"]],viewQuery:function(e,t){if(1&e&&(m.ɵɵviewQuery(B,7,r.ViewContainerRef),m.ɵɵviewQuery(D,7,r.ViewContainerRef),m.ɵɵviewQuery(R,7,r.ViewContainerRef)),2&e){let e;m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.addEditModalRef=e.first),m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.takeoverModalRef=e.first),m.ɵɵqueryRefresh(e=m.ɵɵloadQuery())&&(t.confirmModalRef=e.first)}},decls:59,vars:24,consts:[[1,"page-header"],["href","https://bitwarden.com/help/emergency-access/","target","_blank","rel","noopener"],[4,"ngIf"],[1,"page-header","d-flex"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-sm","btn-outline-primary","ml-3",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-plus","bwi-fw"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"page-header","spaced-header"],["addEdit",""],["takeoverTemplate",""],["confirmTemplate",""],[1,"table","table-hover","table-list","mb-0"],[4,"ngFor","ngForOf"],["width","30"],["size","25",3,"data","email","circle","fontSize"],["href","#","appStopClick","",3,"click"],["class","badge badge-secondary",4,"ngIf"],["class","badge badge-warning",4,"ngIf"],["class","badge badge-success",4,"ngIf"],["class","badge badge-primary",4,"ngIf"],["class","text-muted d-block",4,"ngIf"],[1,"table-list-options"],["appListDropdown","",1,"dropdown"],["type","button","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-success","href","#","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item text-warning","href","#","appStopClick","",3,"click",4,"ngIf"],["href","#","appStopClick","",1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-close"],[1,"badge","badge-secondary"],[1,"badge","badge-warning"],[1,"badge","badge-success"],[1,"badge","badge-primary"],[1,"text-muted","d-block"],["href","#","appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-envelope"],["href","#","appStopClick","",1,"dropdown-item","text-success",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check"],["href","#","appStopClick","",1,"dropdown-item","text-warning",3,"click"],["class","dropdown-item",3,"routerLink",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-key"],[1,"dropdown-item",3,"routerLink"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-eye"]],template:function(e,t){1&e&&(m.ɵɵelementStart(0,"div",0),m.ɵɵtext(1,"\n "),m.ɵɵelementStart(2,"h1"),m.ɵɵtext(3),m.ɵɵpipe(4,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(5,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(6,"\n"),m.ɵɵelementStart(7,"p"),m.ɵɵtext(8),m.ɵɵpipe(9,"i18n"),m.ɵɵelementStart(10,"a",1),m.ɵɵtext(11),m.ɵɵpipe(12,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(13,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(14,"\n\n"),m.ɵɵtemplate(15,F,7,6,"p",2),m.ɵɵtext(16,"\n\n"),m.ɵɵelementStart(17,"div",3),m.ɵɵtext(18,"\n "),m.ɵɵelementStart(19,"h2"),m.ɵɵtext(20),m.ɵɵpipe(21,"i18n"),m.ɵɵelement(22,"app-premium-badge"),m.ɵɵtext(23,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(24,"\n "),m.ɵɵelementStart(25,"div",4),m.ɵɵtext(26,"\n "),m.ɵɵelementStart(27,"button",5),m.ɵɵlistener("click",(function(){return t.invite()})),m.ɵɵtext(28,"\n "),m.ɵɵelement(29,"i",6),m.ɵɵtext(30),m.ɵɵpipe(31,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(32,"\n "),m.ɵɵelementEnd(),m.ɵɵtext(33,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(34,"\n\n"),m.ɵɵtemplate(35,$,7,1,"table",7),m.ɵɵtext(36,"\n\n"),m.ɵɵtemplate(37,Y,3,3,"p",2),m.ɵɵtext(38,"\n\n"),m.ɵɵelementStart(39,"div",8),m.ɵɵtext(40,"\n "),m.ɵɵelementStart(41,"h2"),m.ɵɵtext(42),m.ɵɵpipe(43,"i18n"),m.ɵɵelementEnd(),m.ɵɵtext(44,"\n"),m.ɵɵelementEnd(),m.ɵɵtext(45,"\n\n"),m.ɵɵtemplate(46,se,7,1,"table",7),m.ɵɵtext(47,"\n\n"),m.ɵɵtemplate(48,le,3,3,"p",2),m.ɵɵtext(49,"\n\n"),m.ɵɵtemplate(50,ce,0,0,"ng-template",null,9,m.ɵɵtemplateRefExtractor),m.ɵɵtext(52,"\n"),m.ɵɵtemplate(53,de,0,0,"ng-template",null,10,m.ɵɵtemplateRefExtractor),m.ɵɵtext(55,"\n"),m.ɵɵtemplate(56,pe,0,0,"ng-template",null,11,m.ɵɵtemplateRefExtractor),m.ɵɵtext(58,"\n")),2&e&&(m.ɵɵadvance(3),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(4,12,"emergencyAccess")),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(9,14,"emergencyAccessDesc"),"\n "),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(12,16,"learnMore"),".\n "),m.ɵɵadvance(4),m.ɵɵproperty("ngIf",t.isOrganizationOwner),m.ɵɵadvance(5),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(21,18,"trustedEmergencyContacts"),"\n "),m.ɵɵadvance(7),m.ɵɵproperty("disabled",!t.canAccessPremium),m.ɵɵadvance(3),m.ɵɵtextInterpolate1("\n ",m.ɵɵpipeBind1(31,20,"addEmergencyContact"),"\n "),m.ɵɵadvance(5),m.ɵɵproperty("ngIf",t.trustedContacts&&t.trustedContacts.length),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",!t.trustedContacts||!t.trustedContacts.length),m.ɵɵadvance(5),m.ɵɵtextInterpolate(m.ɵɵpipeBind1(43,22,"designatedEmergencyContacts")),m.ɵɵadvance(4),m.ɵɵproperty("ngIf",t.grantedContacts&&t.grantedContacts.length),m.ɵɵadvance(2),m.ɵɵproperty("ngIf",!t.grantedContacts||!t.grantedContacts.length))},directives:[I.NgIf,E.PremiumBadgeComponent,I.NgForOf,P.AvatarComponent,O.StopClickDirective,k.A11yTitleDirective,A.RouterLinkWithHref],pipes:[T.I18nPipe,M.UserNamePipe],encapsulation:2})},19733:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.EmergencyAddEditComponent=void 0;n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344);const r=n(41141),o=n(32621),a=n(45330),s=n(88308),l=n(51554),c=n(73828),d=n(42982),p=n(73569),u=n(3174),m=n(52344),h=n(84275),v=n(45552),f=n(32034),g=n(62166),y=n(44809),x=n(63513),S=n(36631),b=n(96832),w=n(56820),C=n(8863),I=n(57490),E=n(95746),P=n(51626),O=n(45728),k=n(48198),A=n(1142),T=n(48403),M=n(99729);function B(e,t){1&e&&(o.ɵɵelementStart(0,"app-callout",26),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function D(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function R(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",17),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",27),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"select",28),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.type=t})),o.ɵɵtext(9,"\n "),o.ɵɵtemplate(10,D,2,2,"option",29),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(6,4,"whatTypeOfItem")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.typeOptions)}}function F(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function U(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",17),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",31),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"select",32),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.folderId=t})),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,F,2,2,"option",29),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,4,"folder")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.folders)}}function V(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",41),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelement(5,"i",44),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(3,1,"copyUsername")))}function N(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",57),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(4).generatePassword()})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",58),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}2&e&&o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,1,"generatePassword"))}function _(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",51),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,N,5,3,"a",52),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"a",53,54),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).checkPassword()})),o.ɵɵpipe(6,"i18n"),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",55),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"i",56),o.ɵɵpipe(11,"i18n"),o.ɵɵtext(12,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(5),t=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher.viewPassword),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(6,6,"checkPassword")),o.ɵɵproperty("appApiAction",t.checkPasswordPromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(11,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function j(e,t){1&e&&o.ɵɵelement(0,"app-premium-badge",62)}function z(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",63),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(4).upgradeOrganization()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function H(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"img",59),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵtemplate(5,j,1,0,"app-premium-badge",60),o.ɵɵtext(6,"\n "),o.ɵɵtemplate(7,z,3,3,"a",61),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"verificationCodeTotp")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const L=function(e){return{"stroke-dashoffset.px":e}};function K(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",64),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"span",65),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"span",66),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵnamespaceSVG(),o.ɵɵelementStart(7,"svg"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"g"),o.ɵɵtext(10,"\n "),o.ɵɵelement(11,"circle",67),o.ɵɵtext(12,"\n "),o.ɵɵelement(13,"circle",68),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵnamespaceHTML(),o.ɵɵelementStart(18,"span",69),o.ɵɵpipe(19,"i18n"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"button",70),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),o.ɵɵpipe(23,"i18n"),o.ɵɵtext(24,"\n "),o.ɵɵelement(25,"i",71),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(5),o.ɵɵtextInterpolate(e.totpSec),o.ɵɵadvance(6),o.ɵɵproperty("ngStyle",o.ɵɵpureFunction1(9,L,e.totpDash)),o.ɵɵadvance(7),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(19,5,"verificationCodeTotp")),o.ɵɵadvance(2),o.ɵɵtextInterpolate(e.totpCodeFormatted),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function q(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function G(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",82),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(4).removeUri(t)})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",83),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}2&e&&o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,1,"remove"))}function W(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",16),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",73),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",74),o.ɵɵtext(5),o.ɵɵpipe(6,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",34),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"input",75),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.uri=t})),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",41),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",42),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).launch(t)})),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"i",76),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"button",50),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),o.ɵɵpipe(22,"i18n"),o.ɵɵtext(23,"\n "),o.ɵɵelement(24,"i",44),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",77),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"div",37),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"label",74),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"a",78),o.ɵɵpipe(39,"i18n"),o.ɵɵtext(40,"\n "),o.ɵɵelement(41,"i",79),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementStart(45,"div",37),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"select",80),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(4).loginUriMatchChanged(t)})),o.ɵɵtext(48,"\n "),o.ɵɵtemplate(49,q,2,2,"option",29),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵtemplate(52,G,5,3,"button",81),o.ɵɵtext(53,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=o.ɵɵnextContext(4);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("for","loginUri",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(6,19,"uriPosition",n+1)),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate1("id","loginUri",n,""),o.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(11,22,"ex")," https://google.com"),o.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,24,"launch")),o.ɵɵproperty("disabled",!e.canLaunch),o.ɵɵadvance(6),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(22,26,"copyUri")),o.ɵɵadvance(13),o.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(39,30,"learnMore")),o.ɵɵadvance(9),o.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),o.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),o.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",i.uriMatchOptions),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function $(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,W,56,32,"div",72),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function Y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"a",84),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).addUri()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",85),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1(" ",o.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const Q=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},J=function(e){return{low:e}};function Z(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",33),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"div",34),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"input",35),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.username=t})),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,V,8,3,"div",36),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"div",17),o.ɵɵtext(19,"\n "),o.ɵɵelementStart(20,"div",37),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"label",38),o.ɵɵtext(23),o.ɵɵpipe(24,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵtemplate(26,_,14,10,"div",39),o.ɵɵtext(27,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",34),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"input",40),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.password=t})),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"div",41),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).togglePassword()})),o.ɵɵpipe(36,"i18n"),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"i",43),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementStart(41,"button",42),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),o.ɵɵpipe(42,"i18n"),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"i",44),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(48,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(49,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"div",16),o.ɵɵtext(52,"\n "),o.ɵɵelementStart(53,"div",17),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"label",45),o.ɵɵtext(56),o.ɵɵpipe(57,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n "),o.ɵɵelementStart(59,"input",46),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.login.totp=t})),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(61,"\n "),o.ɵɵelementStart(62,"div",47),o.ɵɵtext(63,"\n "),o.ɵɵtemplate(64,H,9,5,"div",21),o.ɵɵtext(65,"\n "),o.ɵɵtemplate(66,K,28,11,"div",48),o.ɵɵtext(67,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(68,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(69,"\n "),o.ɵɵtemplate(70,$,4,2,"ng-container",21),o.ɵɵtext(71,"\n "),o.ɵɵtemplate(72,Y,5,3,"a",49),o.ɵɵtext(73,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,23,"username")),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.isDeleted),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(24,25,"password")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(36,27,"toggleVisibility")),o.ɵɵproperty("disabled",!e.cipher.viewPassword),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(33,Q,!e.showPassword,e.showPassword)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(42,29,"copyPassword")),o.ɵɵproperty("disabled",!e.cipher.viewPassword),o.ɵɵadvance(15),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(36,J,e.totpLow)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.cipher.login.hasUris),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function X(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function ee(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function te(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",17),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",86),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"input",87),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.cardholderName=t})),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"div",17),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"label",88),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"select",89),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.brand=t})),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,X,2,2,"option",29),o.ɵɵtext(22,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"div",16),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",17),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"label",90),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"div",34),o.ɵɵtext(35,"\n "),o.ɵɵelementStart(36,"input",91),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.number=t})),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementStart(38,"div",41),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleCardNumber()})),o.ɵɵpipe(41,"i18n"),o.ɵɵtext(42,"\n "),o.ɵɵelement(43,"i",43),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementStart(46,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),o.ɵɵpipe(47,"i18n"),o.ɵɵtext(48,"\n "),o.ɵɵelement(49,"i",44),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(53,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"div",92),o.ɵɵtext(56,"\n "),o.ɵɵelementStart(57,"label",93),o.ɵɵtext(58),o.ɵɵpipe(59,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(60,"\n "),o.ɵɵelementStart(61,"select",94),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.expMonth=t})),o.ɵɵtext(62,"\n "),o.ɵɵtemplate(63,ee,2,2,"option",29),o.ɵɵtext(64,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementStart(67,"div",92),o.ɵɵtext(68,"\n "),o.ɵɵelementStart(69,"label",95),o.ɵɵtext(70),o.ɵɵpipe(71,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(72,"\n "),o.ɵɵelementStart(73,"input",96),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.expYear=t})),o.ɵɵpipe(74,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(75,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(76,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(77,"\n "),o.ɵɵelementStart(78,"div",16),o.ɵɵtext(79,"\n "),o.ɵɵelementStart(80,"div",17),o.ɵɵtext(81,"\n "),o.ɵɵelementStart(82,"label",97),o.ɵɵtext(83),o.ɵɵpipe(84,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(85,"\n "),o.ɵɵelementStart(86,"div",34),o.ɵɵtext(87,"\n "),o.ɵɵelementStart(88,"input",98),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.card.code=t})),o.ɵɵelementEnd(),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"div",41),o.ɵɵtext(91,"\n "),o.ɵɵelementStart(92,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleCardCode()})),o.ɵɵpipe(93,"i18n"),o.ɵɵtext(94,"\n "),o.ɵɵelement(95,"i",43),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"button",50),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),o.ɵɵpipe(99,"i18n"),o.ɵɵtext(100,"\n "),o.ɵɵelement(101,"i",44),o.ɵɵtext(102,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(103,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(104,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(105,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(106,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(107,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,29,"cardholderName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,31,"brand")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cardBrandOptions),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,33,"number")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(41,35,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(51,Q,!e.showCardNumber,e.showCardNumber)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(47,37,"copyNumber")),o.ɵɵadvance(12),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(59,39,"expirationMonth")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cardExpMonthOptions),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(71,41,"expirationYear")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate1("placeholder","",o.ɵɵpipeBind1(74,43,"ex")," 2019"),o.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(84,45,"securityCode")),o.ɵɵadvance(5),o.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),o.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(93,47,"toggleVisibility")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(54,Q,!e.showCardCode,e.showCardCode)),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(99,49,"securityCode"))}}function ne(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ie(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",16),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",99),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",100),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"select",101),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.title=t})),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,ne,2,2,"option",29),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",16),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"div",99),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"label",102),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"input",103),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.firstName=t})),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",99),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"label",104),o.ɵɵtext(31),o.ɵɵpipe(32,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"input",105),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.middleName=t})),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"div",99),o.ɵɵtext(38,"\n "),o.ɵɵelementStart(39,"label",106),o.ɵɵtext(40),o.ɵɵpipe(41,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"input",107),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.lastName=t})),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(45,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"div",16),o.ɵɵtext(48,"\n "),o.ɵɵelementStart(49,"div",99),o.ɵɵtext(50,"\n "),o.ɵɵelementStart(51,"label",108),o.ɵɵtext(52),o.ɵɵpipe(53,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(54,"\n "),o.ɵɵelementStart(55,"input",109),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.username=t})),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementStart(58,"div",99),o.ɵɵtext(59,"\n "),o.ɵɵelementStart(60,"label",110),o.ɵɵtext(61),o.ɵɵpipe(62,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(63,"\n "),o.ɵɵelementStart(64,"input",111),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.company=t})),o.ɵɵelementEnd(),o.ɵɵtext(65,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(66,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(67,"\n "),o.ɵɵelementStart(68,"div",16),o.ɵɵtext(69,"\n "),o.ɵɵelementStart(70,"div",99),o.ɵɵtext(71,"\n "),o.ɵɵelementStart(72,"label",112),o.ɵɵtext(73),o.ɵɵpipe(74,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(75,"\n "),o.ɵɵelementStart(76,"input",113),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.ssn=t})),o.ɵɵelementEnd(),o.ɵɵtext(77,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(78,"\n "),o.ɵɵelementStart(79,"div",99),o.ɵɵtext(80,"\n "),o.ɵɵelementStart(81,"label",114),o.ɵɵtext(82),o.ɵɵpipe(83,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(84,"\n "),o.ɵɵelementStart(85,"input",115),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.passportNumber=t})),o.ɵɵelementEnd(),o.ɵɵtext(86,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(87,"\n "),o.ɵɵelementStart(88,"div",99),o.ɵɵtext(89,"\n "),o.ɵɵelementStart(90,"label",116),o.ɵɵtext(91),o.ɵɵpipe(92,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(93,"\n "),o.ɵɵelementStart(94,"input",117),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),o.ɵɵelementEnd(),o.ɵɵtext(95,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(96,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(97,"\n "),o.ɵɵelementStart(98,"div",16),o.ɵɵtext(99,"\n "),o.ɵɵelementStart(100,"div",17),o.ɵɵtext(101,"\n "),o.ɵɵelementStart(102,"label",118),o.ɵɵtext(103),o.ɵɵpipe(104,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(105,"\n "),o.ɵɵelementStart(106,"input",119),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.email=t})),o.ɵɵelementEnd(),o.ɵɵtext(107,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(108,"\n "),o.ɵɵelementStart(109,"div",17),o.ɵɵtext(110,"\n "),o.ɵɵelementStart(111,"label",120),o.ɵɵtext(112),o.ɵɵpipe(113,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(114,"\n "),o.ɵɵelementStart(115,"input",121),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.phone=t})),o.ɵɵelementEnd(),o.ɵɵtext(116,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(117,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(118,"\n "),o.ɵɵelementStart(119,"div",16),o.ɵɵtext(120,"\n "),o.ɵɵelementStart(121,"div",17),o.ɵɵtext(122,"\n "),o.ɵɵelementStart(123,"label",122),o.ɵɵtext(124),o.ɵɵpipe(125,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(126,"\n "),o.ɵɵelementStart(127,"input",123),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address1=t})),o.ɵɵelementEnd(),o.ɵɵtext(128,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(129,"\n "),o.ɵɵelementStart(130,"div",17),o.ɵɵtext(131,"\n "),o.ɵɵelementStart(132,"label",124),o.ɵɵtext(133),o.ɵɵpipe(134,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(135,"\n "),o.ɵɵelementStart(136,"input",125),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address2=t})),o.ɵɵelementEnd(),o.ɵɵtext(137,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(138,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(139,"\n "),o.ɵɵelementStart(140,"div",16),o.ɵɵtext(141,"\n "),o.ɵɵelementStart(142,"div",17),o.ɵɵtext(143,"\n "),o.ɵɵelementStart(144,"label",126),o.ɵɵtext(145),o.ɵɵpipe(146,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(147,"\n "),o.ɵɵelementStart(148,"input",127),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.address3=t})),o.ɵɵelementEnd(),o.ɵɵtext(149,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(150,"\n "),o.ɵɵelementStart(151,"div",17),o.ɵɵtext(152,"\n "),o.ɵɵelementStart(153,"label",128),o.ɵɵtext(154),o.ɵɵpipe(155,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(156,"\n "),o.ɵɵelementStart(157,"input",129),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.city=t})),o.ɵɵelementEnd(),o.ɵɵtext(158,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(159,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(160,"\n "),o.ɵɵelementStart(161,"div",16),o.ɵɵtext(162,"\n "),o.ɵɵelementStart(163,"div",17),o.ɵɵtext(164,"\n "),o.ɵɵelementStart(165,"label",130),o.ɵɵtext(166),o.ɵɵpipe(167,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(168,"\n "),o.ɵɵelementStart(169,"input",131),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.state=t})),o.ɵɵelementEnd(),o.ɵɵtext(170,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(171,"\n "),o.ɵɵelementStart(172,"div",17),o.ɵɵtext(173,"\n "),o.ɵɵelementStart(174,"label",132),o.ɵɵtext(175),o.ɵɵpipe(176,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(177,"\n "),o.ɵɵelementStart(178,"input",133),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.postalCode=t})),o.ɵɵelementEnd(),o.ɵɵtext(179,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(180,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(181,"\n "),o.ɵɵelementStart(182,"div",16),o.ɵɵtext(183,"\n "),o.ɵɵelementStart(184,"div",17),o.ɵɵtext(185,"\n "),o.ɵɵelementStart(186,"label",134),o.ɵɵtext(187),o.ɵɵpipe(188,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(189,"\n "),o.ɵɵelementStart(190,"input",135),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.identity.country=t})),o.ɵɵelementEnd(),o.ɵɵtext(191,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(192,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(193,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,55,"title")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.identityTitleOptions),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,57,"firstName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(32,59,"middleName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(41,61,"lastName")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(53,63,"username")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(62,65,"company")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(74,67,"ssn")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(83,69,"passportNumber")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(92,71,"licenseNumber")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(104,73,"email")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(113,75,"phone")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(125,77,"address1")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(134,79,"address2")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(146,81,"address3")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(155,83,"cityTown")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(167,85,"stateProvince")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(176,87,"zipPostalCode")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(188,89,"country")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function re(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",30),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function oe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",137),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",138),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"select",139),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).organizationChanged()})),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,re,2,2,"option",29),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,5,"ownership")),o.ɵɵadvance(8),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.ownershipOptions)}}function ae(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function se(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",141),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"input",142),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.checked=t})),o.ɵɵelementEnd(),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"label",143),o.ɵɵtext(5),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=o.ɵɵnextContext(4);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("id","collection-",n,""),o.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),o.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate1("for","collection-",n,""),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function le(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,se,7,6,"div",140),o.ɵɵtext(3,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.collections)}}function ce(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,ae,3,3,"div",21),o.ɵɵtext(7,"\n "),o.ɵɵtemplate(8,le,4,1,"ng-container",21),o.ɵɵtext(9,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"collections")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.collections||!e.collections.length),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function de(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"b",145),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5),o.ɵɵpipe(6,"date"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function pe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"b",145),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"a",146),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(3).viewHistory()})),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(3),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(4,3,"passwordHistory"),":"),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,5,"view")),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function ue(e,t){if(1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"date"),o.ɵɵelementStart(3,"span",148),o.ɵɵtext(4),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),o.ɵɵadvance(3),o.ɵɵtextInterpolate(e.password)}}function me(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",62),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,ue,6,5,"div",147),o.ɵɵtext(3,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(3);o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function he(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",144),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div"),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"b",145),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9),o.ɵɵpipe(10,"date"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,de,7,7,"div",21),o.ɵɵtext(13,"\n "),o.ɵɵtemplate(14,pe,10,7,"div",21),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,me,4,1,"div",60),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(7),o.ɵɵtextInterpolate1("",o.ɵɵpipeBind1(8,5,"dateUpdated"),":"),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.showRevisionDate),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.hasPasswordHistory),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function ve(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3",136),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",141),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"input",149),o.ɵɵlistener("change",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).repromptChanged()})),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",150),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"a",151),o.ɵɵpipe(15,"i18n"),o.ɵɵtext(16,"\n "),o.ɵɵelement(17,"i",79),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementContainerEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,5,"options")),o.ɵɵadvance(5),o.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,7,"passwordPrompt")),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(15,9,"learnMore"))}}function fe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",13),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,B,3,3,"app-callout",14),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,R,14,6,"div",15),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",16),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",17),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"label",18),o.ɵɵtext(11),o.ɵɵpipe(12,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(13,"\n "),o.ɵɵelementStart(14,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().cipher.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,U,11,6,"div",20),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtext(20,"\n "),o.ɵɵtemplate(21,Z,74,38,"ng-container",21),o.ɵɵtext(22,"\n "),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,te,108,57,"ng-container",21),o.ɵɵtext(25,"\n "),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,ie,194,91,"ng-container",21),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"div",22),o.ɵɵtext(30,"\n "),o.ɵɵelementStart(31,"label",23),o.ɵɵtext(32),o.ɵɵpipe(33,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n "),o.ɵɵelementStart(35,"textarea",24),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().cipher.notes=t})),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),o.ɵɵtext(39,"\n "),o.ɵɵtemplate(40,oe,21,9,"ng-container",21),o.ɵɵtext(41,"\n "),o.ɵɵtemplate(42,ce,10,5,"ng-container",21),o.ɵɵtext(43,"\n "),o.ɵɵtemplate(44,he,19,10,"ng-container",21),o.ɵɵtext(45,"\n "),o.ɵɵtemplate(46,ve,21,11,"ng-container",21),o.ɵɵtext(47,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),o.ɵɵadvance(7),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(12,20,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.organization),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(33,22,"notes")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),o.ɵɵadvance(3),o.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.canUseReprompt)}}function ge(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",152),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",153),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(),t=o.ɵɵreference(5);o.ɵɵproperty("disabled",t.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const ye=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function xe(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",70),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).toggleFavorite()})),o.ɵɵpipe(1,"i18n"),o.ɵɵtext(2,"\n "),o.ɵɵelement(3,"i",43),o.ɵɵtext(4,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),o.ɵɵadvance(3),o.ɵɵproperty("ngClass",o.ɵɵpureFunction2(4,ye,e.cipher.favorite,!e.cipher.favorite))}}function Se(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",157,158),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).delete()})),o.ɵɵpipe(2,"i18n"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",159),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",160),o.ɵɵpipe(7,"i18n"),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext(2);o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),o.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(7,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function be(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",154),o.ɵɵtext(1,"\n "),o.ɵɵtemplate(2,xe,5,7,"button",155),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,Se,9,10,"button",156),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class we extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,i,r,o,a,s,l,c,d,p,m,h,u),this.originalCipher=null,this.viewOnly=!0}load(){return i(this,void 0,void 0,(function*(){this.title=this.i18nService.t("viewItem")}))}loadCipher(){return i(this,void 0,void 0,(function*(){return Promise.resolve(this.originalCipher)}))}}t.EmergencyAddEditComponent=we,we.ɵfac=function(e){return new(e||we)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.FolderService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.PlatformUtilsService),o.ɵɵdirectiveInject(d.AuditService),o.ɵɵdirectiveInject(p.StateService),o.ɵɵdirectiveInject(u.CollectionService),o.ɵɵdirectiveInject(m.TotpService),o.ɵɵdirectiveInject(h.PasswordGenerationService),o.ɵɵdirectiveInject(v.MessagingService),o.ɵɵdirectiveInject(f.EventService),o.ɵɵdirectiveInject(g.PolicyService),o.ɵɵdirectiveInject(y.PasswordRepromptService),o.ɵɵdirectiveInject(x.OrganizationService),o.ɵɵdirectiveInject(S.LogService))},we.ɵcmp=o.ɵɵdefineComponent({type:we,selectors:[["app-org-vault-add-edit"]],features:[o.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"button",6),o.ɵɵpipe(13,"i18n"),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"span",7),o.ɵɵtext(16,"×"),o.ɵɵelementEnd(),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,fe,48,24,"div",8),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"div",9),o.ɵɵtext(23,"\n "),o.ɵɵtemplate(24,ge,9,7,"button",10),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"button",11),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵtemplate(30,be,6,2,"div",12),o.ɵɵtext(31,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(33,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(34,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(t.title),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(13,7,"close")),o.ɵɵadvance(8),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[b.NgControlStatusGroup,b.NgForm,w.ApiActionDirective,C.A11yTitleDirective,I.NgIf,b.DefaultValueAccessor,b.RequiredValidator,b.NgControlStatus,b.NgModel,E.AddEditCustomFieldsComponent,P.CalloutComponent,b.SelectControlValueAccessor,O.AutofocusDirective,I.NgForOf,b.NgSelectOption,b.ɵNgSelectMultipleOption,k.InputVerbatimDirective,I.NgClass,A.StopClickDirective,T.PremiumBadgeComponent,I.NgStyle,b.CheckboxControlValueAccessor],pipes:[M.I18nPipe,I.DatePipe],encapsulation:2})},28360:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.OrganizationPlansComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(85714),n(51554),n(36631),n(45552),n(63513),n(73828),n(62166),n(9724),n(98523)),a=n(47937),s=n(49906),l=n(96066),c=n(7017),d=n(39950),p=n(80006),u=n(16567),m=n(17337),h=n(41799),v=n(32621),f=n(91674),g=n(51554),y=n(73828),x=n(85714),S=n(68012),b=n(9724),w=n(62166),C=n(63513),I=n(36631),E=n(45552),P=n(57490),O=n(96832),k=n(56820),A=n(41799),T=n(17337),M=n(51626),B=n(99729);function D(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"i",2),v.ɵɵpipe(3,"i18n"),v.ɵɵtext(4,"\n "),v.ɵɵelementStart(5,"span",3),v.ɵɵtext(6),v.ɵɵpipe(7,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(8,"\n"),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(3,2,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(7,4,"loading")))}function R(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"p"),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"form",4,5),v.ɵɵlistener("ngSubmit",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().submit()})),v.ɵɵtext(8,"\n "),v.ɵɵelementStart(9,"div",6),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"label",7),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵelement(15,"input",8),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"small",9),v.ɵɵtext(18),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(21,"\n "),v.ɵɵelementStart(22,"button",10),v.ɵɵtext(23,"\n "),v.ɵɵelement(24,"i",11),v.ɵɵpipe(25,"i18n"),v.ɵɵtext(26,"\n "),v.ɵɵelementStart(27,"span"),v.ɵɵtext(28),v.ɵɵpipe(29,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(30,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n"),v.ɵɵelementContainerEnd()}if(2&e){const e=v.ɵɵreference(7),t=v.ɵɵnextContext();v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,7,"uploadLicenseFileOrg")),v.ɵɵadvance(3),v.ɵɵproperty("appApiAction",t.formPromise),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(13,9,"licenseFile")),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(19,11,"licenseFileDesc","bitwarden_organization_license.json")),v.ɵɵadvance(4),v.ɵɵproperty("disabled",e.loading),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(25,14,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(29,16,"submit"))}}function F(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",19),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"label",25),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"input",26),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).clientOwnerEmail=t})),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"small",27),v.ɵɵtext(9),v.ɵɵpipe(10,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(11,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,3,"clientOwnerEmail")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.clientOwnerEmail),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(10,5,"clientOwnerDesc","20"))}}function U(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",20),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",21),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).name=t})),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"div",19),v.ɵɵtext(12,"\n "),v.ɵɵelementStart(13,"label",22),v.ɵɵtext(14),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"input",23),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).billingEmail=t})),v.ɵɵelementEnd(),v.ɵɵtext(18,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(19,"\n "),v.ɵɵtemplate(20,F,12,8,"div",24),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,5,"organizationName")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.name),v.ɵɵadvance(6),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(15,7,"billingEmail")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.billingEmail),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",!!e.providerId)}}function V(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",31),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",32),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).businessName=t})),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,2,"businessName")),v.ɵɵadvance(3),v.ɵɵproperty("ngModel",e.businessName)}}function N(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div"),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",28),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"input",29),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).ownedBusiness=t}))("change",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedOwnedBusiness()})),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"label",30),v.ɵɵtext(7),v.ɵɵpipe(8,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,V,11,4,"div",13),v.ɵɵtext(12,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(4),v.ɵɵproperty("ngModel",e.ownedBusiness),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(8,3,"accountOwnedBusiness")),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",e.ownedBusiness)}}function _(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"onPremHostingOptional"),""))}function j(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"includeSsoAuthentication"),""))}function z(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"includeEnterprisePolicies"),""))}function H(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("•\n ",v.ɵɵpipeBind2(2,1,"xDayFreeTrial",e.trialPeriodDays),"\n ")}}function L(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"small"),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵtemplate(6,_,3,3,"small",0),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,j,3,3,"small",0),v.ɵɵtext(9,"\n "),v.ɵɵtemplate(10,z,3,3,"small",0),v.ɵɵtext(11,"\n "),v.ɵɵtemplate(12,H,3,4,"small",0),v.ɵɵtext(13,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(3),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(4,5,"includeAllTeamsFeatures"),""),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.hasSelfHost),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasSso),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPolicies),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.trialPeriodDays&&t.createOrganization)}}function K(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"limitedUsers",e.maxUsers),"")}}function q(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"addShareLimitedUsers",e.maxUsers),"")}}function G(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"addShareUnlimitedUsers"),""))}function W(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"limitedCollections",e.maxCollections),"")}}function $(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"addShareLimitedUsers",e.maxAdditionalSeats),"")}}function Y(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"createUnlimitedCollections"),""))}function Q(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind2(2,1,"gbEncryptedFileStorage",e.baseStorageGb+"GB"),"")}}function J(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"controlAccessWithGroups"),""))}function Z(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"trackAuditLogs"),""))}function X(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"syncUsersFromDirectory"),""))}function ee(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"onPremHostingOptional"),""))}function te(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"usersGetPremium"),""))}function ne(e,t){1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("• ",v.ɵɵpipeBind1(2,1,"priorityCustomerSupport"),""))}function ie(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate1("•\n ",v.ɵɵpipeBind2(2,1,"xDayFreeTrial",e.trialPeriodDays),"\n ")}}function re(e,t){if(1&e&&(v.ɵɵtext(0,"\n "),v.ɵɵtemplate(1,K,3,4,"small",0),v.ɵɵtext(2,"\n "),v.ɵɵtemplate(3,q,3,4,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,G,3,3,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,W,3,4,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,$,3,4,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,Y,3,3,"small",0),v.ɵɵtext(12,"\n "),v.ɵɵtemplate(13,Q,3,4,"small",0),v.ɵɵtext(14,"\n "),v.ɵɵtemplate(15,J,3,3,"small",0),v.ɵɵtext(16,"\n "),v.ɵɵtemplate(17,Z,3,3,"small",0),v.ɵɵtext(18,"\n "),v.ɵɵtemplate(19,X,3,3,"small",0),v.ɵɵtext(20,"\n "),v.ɵɵtemplate(21,ee,3,3,"small",0),v.ɵɵtext(22,"\n "),v.ɵɵtemplate(23,te,3,3,"small",0),v.ɵɵtext(24,"\n "),v.ɵɵtemplate(25,ne,3,3,"small",0),v.ɵɵtext(26,"\n "),v.ɵɵtemplate(27,ie,3,4,"small",0),v.ɵɵtext(28,"\n ")),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(1),v.ɵɵproperty("ngIf",e.product==t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product!=t.productTypes.Free&&e.maxUsers),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.maxUsers),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.maxCollections),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.maxAdditionalSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.maxCollections),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseStorageGb),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasGroups),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasApi),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasDirectory),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasSelfHost),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.usersGetPremium),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product!=t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.trialPeriodDays&&t.createOrganization)}}function oe(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind1(2,3,"additionalUsers").toLowerCase(),"\n ",v.ɵɵpipeBind2(3,5,e.seatPrice/12,"$")," /",v.ɵɵpipeBind1(4,8,"month"),"\n ")}}function ae(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"currency"),v.ɵɵpipe(3,"i18n"),v.ɵɵpipe(4,"i18n"),v.ɵɵtemplate(5,oe,5,10,"ng-container",0),v.ɵɵtext(6,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind2(2,4,e.basePrice/12,"$")," /",v.ɵɵpipeBind1(3,7,"month"),",\n ",v.ɵɵpipeBind2(4,9,"includesXUsers",e.baseSeats),"\n "),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption)}}function se(e,t){if(1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,ae,7,12,"ng-container",0),v.ɵɵtext(3,"\n "),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice&&!t.acceptingSponsorship)}}function le(e,t){if(1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext().$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind2(2,2,"costPerUser",v.ɵɵpipeBind2(3,5,e.seatPrice/12,"$"))," /",v.ɵɵpipeBind1(4,8,"month"),"\n ")}}function ce(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(2,1,"freeForever")))}function de(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",33),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"input",34),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).product=t}))("change",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedProduct()})),v.ɵɵelementEnd(),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",35),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementStart(7,"small",36),v.ɵɵtext(8),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵtemplate(11,L,14,7,"ng-container",37),v.ɵɵtext(12,"\n "),v.ɵɵtemplate(13,re,29,14,"ng-template",null,38,v.ɵɵtemplateRefExtractor),v.ɵɵtext(15,"\n "),v.ɵɵtemplate(16,se,4,1,"span",0),v.ɵɵtext(17,"\n "),v.ɵɵtemplate(18,le,5,10,"span",0),v.ɵɵtext(19,"\n "),v.ɵɵtemplate(20,ce,3,3,"span",0),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(22,"\n "),v.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=v.ɵɵreference(14),i=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("id","product",e.product,""),v.ɵɵproperty("value",e.product)("ngModel",i.product),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("for","product",e.product,""),v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,11,e.nameLocalizationKey),"\n "),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(9,13,e.descriptionLocalizationKey,"1")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.product===i.productTypes.Enterprise)("ngIfElse",n),v.ɵɵadvance(5),v.ɵɵproperty("ngIf",e.product!=i.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.basePrice&&e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.product==i.productTypes.Free)}}function pe(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"h2",12),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"div",18),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"div",52),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"label",53),v.ɵɵtext(11),v.ɵɵpipe(12,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"input",54),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).additionalSeats=t})),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementStart(17,"small",41),v.ɵɵtext(18),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(21,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(22,"\n "),v.ɵɵelementContainerEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,5,"users")),v.ɵɵadvance(8),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(12,7,"userSeats")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(15,9,"userSeatsDesc")),v.ɵɵproperty("ngModel",e.additionalSeats),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(19,11,"userSeatsHowManyDesc"))}}function ue(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",18),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",19),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",53),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵelementStart(8,"input",55),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).additionalSeats=t})),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"small",41),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵpipe(14,"currency"),v.ɵɵelementEnd(),v.ɵɵtext(15,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,4,"additionalUserSeats")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(9,6,"userSeatsDesc")),v.ɵɵproperty("ngModel",e.additionalSeats),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind3(13,8,"userSeatsAdditionalDesc",e.selectedPlan.baseSeats,v.ɵɵpipeBind2(14,12,e.seatPriceMonthly(e.selectedPlan),"$")))}}function me(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",19),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"div",56),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"input",57),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).premiumAccessAddon=t})),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementStart(6,"label",58),v.ɵɵtext(7),v.ɵɵpipe(8,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"small",41),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵpipe(14,"currency"),v.ɵɵpipe(15,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(16,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(3);v.ɵɵadvance(4),v.ɵɵproperty("ngModel",e.premiumAccessAddon),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(8,3,"premiumAccess")),v.ɵɵadvance(5),v.ɵɵtextInterpolate(v.ɵɵpipeBind3(13,5,"premiumAccessDesc",v.ɵɵpipeBind2(14,9,3.33,"$"),v.ɵɵpipeBind1(15,12,"month")))}}function he(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"span",61),v.ɵɵtext(3),v.ɵɵpipe(4,"currency"),v.ɵɵelementEnd(),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind2(4,2,e.basePrice,"$")),v.ɵɵadvance(2),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(6,5,"freeWithSponsorship"),"\n ")}}function ve(e,t){if(1&e&&(v.ɵɵtext(0),v.ɵɵpipe(1,"currency"),v.ɵɵpipe(2,"i18n")),2&e){const e=v.ɵɵnextContext(3).$implicit;v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind2(1,2,e.basePrice,"$"),"\n /",v.ɵɵpipeBind1(2,5,"year"),"\n ")}}function fe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵtemplate(5,he,7,7,"ng-container",37),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,ve,3,7,"ng-template",null,60,v.ɵɵtemplateRefExtractor),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd()),2&e){const e=v.ɵɵreference(8),t=v.ɵɵnextContext(2).$implicit,n=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate3("\n ",v.ɵɵpipeBind1(2,5,"basePrice"),": ",v.ɵɵpipeBind2(3,7,t.basePrice/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n "),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",n.acceptingSponsorship)("ngIfElse",e)}}function ge(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"additionalUsers"),":"))}function ye(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"users"),":"))}function xe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,ge,3,3,"span",0),v.ɵɵtext(3,"\n "),v.ɵɵtemplate(4,ye,3,3,"span",0),v.ɵɵtext(5),v.ɵɵpipe(6,"currency"),v.ɵɵpipe(7,"i18n"),v.ɵɵpipe(8,"currency"),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.baseSeats),v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",t.additionalSeats||0," ×\n ",v.ɵɵpipeBind2(6,7,e.seatPrice/12,"$")," × 12\n ",v.ɵɵpipeBind1(7,10,"monthAbbr")," = ",v.ɵɵpipeBind2(8,12,t.seatTotal(e),"$")," /",v.ɵɵpipeBind1(9,15,"year"),"\n ")}}function Se(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate6("\n ",v.ɵɵpipeBind1(2,6,"additionalStorageGb"),": ",t.additionalStorage||0," ×\n ",v.ɵɵpipeBind2(3,8,e.additionalStoragePricePerGb/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,11,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,13,t.additionalStorageTotal(e),"$")," /",v.ɵɵpipeBind1(6,16,"year"),"\n ")}}function be(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"premiumAccess"),":\n ",v.ɵɵpipeBind2(3,7,e.premiumAccessOptionCost/12,"$")," × 12\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n ",v.ɵɵpipeBind2(5,12,40,"$"),"\n /",v.ɵɵpipeBind1(6,15,"year"),"\n ")}}function we(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵtemplate(3,fe,10,12,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,xe,10,17,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,Se,7,18,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,be,7,17,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,5,"annually"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalStorageOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPremiumAccessOption&&t.premiumAccessAddon)}}function Ce(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"basePrice"),": ",v.ɵɵpipeBind2(3,7,e.basePrice,"$"),"\n ",v.ɵɵpipeBind1(4,10,"monthAbbr"),"\n =\n ",v.ɵɵpipeBind2(5,12,e.basePrice,"$"),"\n /",v.ɵɵpipeBind1(6,15,"month"),"\n ")}}function Ie(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"additionalUsers"),":"))}function Ee(e,t){1&e&&(v.ɵɵelementStart(0,"span"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(2,1,"users"),":"))}function Pe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,Ie,3,3,"span",0),v.ɵɵtext(3,"\n "),v.ɵɵtemplate(4,Ee,3,3,"span",0),v.ɵɵtext(5),v.ɵɵpipe(6,"currency"),v.ɵɵpipe(7,"i18n"),v.ɵɵpipe(8,"currency"),v.ɵɵpipe(9,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.baseSeats),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.baseSeats),v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",t.additionalSeats||0," × ",v.ɵɵpipeBind2(6,7,e.seatPrice,"$"),"\n ",v.ɵɵpipeBind1(7,10,"monthAbbr")," = ",v.ɵɵpipeBind2(8,12,t.seatTotal(e),"$")," /",v.ɵɵpipeBind1(9,15,"month"),"\n ")}}function Oe(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate6("\n ",v.ɵɵpipeBind1(2,6,"additionalStorageGb"),": ",t.additionalStorage||0," ×\n ",v.ɵɵpipeBind2(3,8,e.additionalStoragePricePerGb,"$"),"\n ",v.ɵɵpipeBind1(4,11,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,13,t.additionalStorageTotal(e),"$")," /",v.ɵɵpipeBind1(6,16,"month"),"\n ")}}function ke(e,t){if(1&e&&(v.ɵɵelementStart(0,"small"),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵpipe(3,"currency"),v.ɵɵpipe(4,"i18n"),v.ɵɵpipe(5,"currency"),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd()),2&e){const e=v.ɵɵnextContext(2).$implicit;v.ɵɵadvance(1),v.ɵɵtextInterpolate5("\n ",v.ɵɵpipeBind1(2,5,"premiumAccess"),":\n ",v.ɵɵpipeBind2(3,7,e.premiumAccessOptionCost,"$")," ",v.ɵɵpipeBind1(4,10,"monthAbbr")," =\n ",v.ɵɵpipeBind2(5,12,40,"$"),"\n /",v.ɵɵpipeBind1(6,15,"month"),"\n ")}}function Ae(e,t){if(1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵtemplate(3,Ce,7,17,"small",0),v.ɵɵtext(4,"\n "),v.ɵɵtemplate(5,Pe,10,17,"small",0),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,Oe,7,18,"small",0),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,ke,7,17,"small",0),v.ɵɵtext(10,"\n "),v.ɵɵelementContainerEnd()),2&e){const e=v.ɵɵnextContext().$implicit,t=v.ɵɵnextContext(3);v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,5,"monthly"),"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.basePrice),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalSeatsOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasAdditionalStorageOption),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.hasPremiumAccessOption&&t.premiumAccessAddon)}}function Te(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div",33),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"input",59),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(3).plan=t})),v.ɵɵelementEnd(),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"label",35),v.ɵɵtext(5,"\n "),v.ɵɵtemplate(6,we,11,7,"ng-container",0),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,Ae,11,7,"ng-container",0),v.ɵɵtext(9,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(10,"\n "),v.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=v.ɵɵnextContext(3);v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("id","interval",e.type,""),v.ɵɵproperty("value",e.type)("ngModel",n.plan),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate1("for","interval",e.type,""),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.isAnnual),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!e.isAnnual)}}function Me(e,t){1&e&&v.ɵɵelement(0,"app-payment",62),2&e&&v.ɵɵproperty("hideCredit",!0)}function Be(e,t){1&e&&(v.ɵɵelementContainerStart(0),v.ɵɵtext(1,"\n "),v.ɵɵelement(2,"app-payment",63),v.ɵɵtext(3,"\n "),v.ɵɵelementContainerEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵproperty("showMethods",!1))}function De(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"div"),v.ɵɵtext(1,"\n "),v.ɵɵtemplate(2,pe,23,13,"ng-container",0),v.ɵɵtext(3,"\n "),v.ɵɵelementStart(4,"h2",12),v.ɵɵtext(5),v.ɵɵpipe(6,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(7,"\n "),v.ɵɵtemplate(8,ue,17,15,"div",13),v.ɵɵtext(9,"\n "),v.ɵɵelementStart(10,"div",18),v.ɵɵtext(11,"\n "),v.ɵɵelementStart(12,"div",19),v.ɵɵtext(13,"\n "),v.ɵɵelementStart(14,"label",39),v.ɵɵtext(15),v.ɵɵpipe(16,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(17,"\n "),v.ɵɵelementStart(18,"input",40),v.ɵɵlistener("ngModelChange",(function(t){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).additionalStorage=t})),v.ɵɵpipe(19,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"small",41),v.ɵɵtext(22),v.ɵɵpipe(23,"i18n"),v.ɵɵpipe(24,"currency"),v.ɵɵpipe(25,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(26,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(27,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(28,"\n "),v.ɵɵelementStart(29,"div",18),v.ɵɵtext(30,"\n "),v.ɵɵtemplate(31,me,17,14,"div",24),v.ɵɵtext(32,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(33,"\n "),v.ɵɵelementStart(34,"h2",42),v.ɵɵtext(35),v.ɵɵpipe(36,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(37,"\n "),v.ɵɵtemplate(38,Te,11,6,"div",14),v.ɵɵtext(39,"\n "),v.ɵɵelement(40,"hr",43),v.ɵɵtext(41,"\n "),v.ɵɵelementStart(42,"h2",44),v.ɵɵtext(43),v.ɵɵpipe(44,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(45,"\n "),v.ɵɵelementStart(46,"small",45),v.ɵɵtext(47),v.ɵɵelementEnd(),v.ɵɵtext(48,"\n "),v.ɵɵtemplate(49,Me,1,1,"app-payment",46),v.ɵɵtext(50,"\n "),v.ɵɵelementStart(51,"app-tax-info",47),v.ɵɵlistener("onCountryChanged",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).changedCountry()})),v.ɵɵelementEnd(),v.ɵɵtext(52,"\n "),v.ɵɵelementStart(53,"div",48),v.ɵɵtext(54,"\n "),v.ɵɵelementStart(55,"div",49),v.ɵɵtext(56),v.ɵɵpipe(57,"i18n"),v.ɵɵpipe(58,"currency"),v.ɵɵelement(59,"br"),v.ɵɵtext(60,"\n "),v.ɵɵelementContainerStart(61),v.ɵɵtext(62),v.ɵɵpipe(63,"i18n"),v.ɵɵpipe(64,"currency"),v.ɵɵelementContainerEnd(),v.ɵɵtext(65,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(66,"\n "),v.ɵɵelement(67,"hr",50),v.ɵɵtext(68,"\n "),v.ɵɵelementStart(69,"p",51),v.ɵɵtext(70,"\n "),v.ɵɵelementStart(71,"strong"),v.ɵɵtext(72),v.ɵɵpipe(73,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(74),v.ɵɵpipe(75,"currency"),v.ɵɵpipe(76,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(77,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(78,"\n "),v.ɵɵtemplate(79,Be,4,1,"ng-container",0),v.ɵɵtext(80,"\n "),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵnextContext(2);v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.selectedPlan.hasAdditionalSeatsOption&&!e.selectedPlan.baseSeats),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(6,21,"addons")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",e.selectedPlan.hasAdditionalSeatsOption&&e.selectedPlan.baseSeats),v.ɵɵadvance(7),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(16,23,"additionalStorageGb")),v.ɵɵadvance(3),v.ɵɵpropertyInterpolate("placeholder",v.ɵɵpipeBind1(19,25,"additionalStorageGbDesc")),v.ɵɵproperty("ngModel",e.additionalStorage),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind4(23,27,"additionalStorageIntervalDesc","1 GB",v.ɵɵpipeBind2(24,32,e.additionalStoragePriceMonthly(e.selectedPlan),"$"),v.ɵɵpipeBind1(25,35,"month"))),v.ɵɵadvance(9),v.ɵɵproperty("ngIf",e.selectedPlan.hasPremiumAccessOption),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(36,37,"summary")),v.ɵɵadvance(3),v.ɵɵproperty("ngForOf",e.selectablePlans),v.ɵɵadvance(5),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(44,39,e.createOrganization?"paymentInformation":"billingInformation"),"\n "),v.ɵɵadvance(4),v.ɵɵtextInterpolate1("\n ",e.paymentDesc,"\n "),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",e.createOrganization),v.ɵɵadvance(7),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind1(57,41,"planPrice"),": ",v.ɵɵpipeBind2(58,43,e.subtotal,"USD $"),"\n "),v.ɵɵadvance(6),v.ɵɵtextInterpolate2("\n ",v.ɵɵpipeBind1(63,46,"estimatedTax"),": ",v.ɵɵpipeBind2(64,48,e.taxCharges,"USD $"),"\n "),v.ɵɵadvance(10),v.ɵɵtextInterpolate1("",v.ɵɵpipeBind1(73,51,"total"),":"),v.ɵɵadvance(2),v.ɵɵtextInterpolate2(" ",v.ɵɵpipeBind2(75,53,e.total,"USD $"),"/",v.ɵɵpipeBind1(76,56,e.selectedPlanInterval),"\n "),v.ɵɵadvance(5),v.ɵɵproperty("ngIf",!e.createOrganization)}}function Re(e,t){1&e&&(v.ɵɵelementStart(0,"div",16),v.ɵɵtext(1,"\n "),v.ɵɵelementStart(2,"app-callout",64),v.ɵɵtext(3),v.ɵɵpipe(4,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(5,"\n "),v.ɵɵelementEnd()),2&e&&(v.ɵɵadvance(2),v.ɵɵproperty("type","error"),v.ɵɵadvance(1),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(4,2,"singleOrgBlockCreateMessage")))}function Fe(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"button",65),v.ɵɵlistener("click",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext(2).cancel()})),v.ɵɵtext(1),v.ɵɵpipe(2,"i18n"),v.ɵɵelementEnd()}2&e&&(v.ɵɵadvance(1),v.ɵɵtextInterpolate1("\n ",v.ɵɵpipeBind1(2,1,"cancel"),"\n "))}function Ue(e,t){if(1&e){const e=v.ɵɵgetCurrentView();v.ɵɵelementStart(0,"form",4,5),v.ɵɵlistener("ngSubmit",(function(){v.ɵɵrestoreView(e);return v.ɵɵnextContext().submit()})),v.ɵɵtext(2,"\n "),v.ɵɵelementStart(3,"h2",12),v.ɵɵtext(4),v.ɵɵpipe(5,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(6,"\n "),v.ɵɵtemplate(7,U,22,9,"div",13),v.ɵɵtext(8,"\n "),v.ɵɵtemplate(9,N,13,5,"div",0),v.ɵɵtext(10,"\n "),v.ɵɵelementStart(11,"h2",12),v.ɵɵtext(12),v.ɵɵpipe(13,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(14,"\n "),v.ɵɵtemplate(15,de,23,16,"div",14),v.ɵɵtext(16,"\n "),v.ɵɵtemplate(17,De,81,58,"div",0),v.ɵɵtext(18,"\n "),v.ɵɵtemplate(19,Re,6,4,"div",15),v.ɵɵtext(20,"\n "),v.ɵɵelementStart(21,"div",16),v.ɵɵtext(22,"\n "),v.ɵɵelementStart(23,"button",10),v.ɵɵtext(24,"\n "),v.ɵɵelement(25,"i",11),v.ɵɵpipe(26,"i18n"),v.ɵɵtext(27,"\n "),v.ɵɵelementStart(28,"span"),v.ɵɵtext(29),v.ɵɵpipe(30,"i18n"),v.ɵɵelementEnd(),v.ɵɵtext(31,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(32,"\n "),v.ɵɵtemplate(33,Fe,3,3,"button",17),v.ɵɵtext(34,"\n "),v.ɵɵelementEnd(),v.ɵɵtext(35,"\n"),v.ɵɵelementEnd()}if(2&e){const e=v.ɵɵreference(1),t=v.ɵɵnextContext();v.ɵɵproperty("appApiAction",t.formPromise),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(5,12,"generalInformation")),v.ɵɵadvance(3),v.ɵɵproperty("ngIf",t.createOrganization),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!t.providerId&&!t.acceptingSponsorship),v.ɵɵadvance(3),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(13,14,"chooseYourPlan")),v.ɵɵadvance(3),v.ɵɵproperty("ngForOf",t.selectableProducts),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.product!==t.productTypes.Free),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.singleOrgPolicyBlock),v.ɵɵadvance(4),v.ɵɵproperty("disabled",e.loading),v.ɵɵadvance(2),v.ɵɵpropertyInterpolate("title",v.ɵɵpipeBind1(26,16,"loading")),v.ɵɵadvance(4),v.ɵɵtextInterpolate(v.ɵɵpipeBind1(30,18,"submit")),v.ɵɵadvance(4),v.ɵɵproperty("ngIf",t.showCancel)}}class Ve{constructor(e,t,n,i,o,s,c,d,p,u){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.router=o,this.syncService=s,this.policyService=c,this.organizationService=d,this.logService=p,this.messagingService=u,this.showFree=!0,this.showCancel=!1,this.acceptingSponsorship=!1,this.product=l.ProductType.Free,this.plan=a.PlanType.Free,this.onSuccess=new r.EventEmitter,this.onCanceled=new r.EventEmitter,this.loading=!0,this.selfHosted=!1,this.ownedBusiness=!1,this.premiumAccessAddon=!1,this.additionalStorage=0,this.additionalSeats=0,this.productTypes=l.ProductType,this.singleOrgPolicyBlock=!1,this.discount=0,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){if(!this.selfHosted){const e=yield this.apiService.getPlans();this.plans=e.data,this.product!==l.ProductType.Enterprise&&this.product!==l.ProductType.Teams||(this.ownedBusiness=!0)}this.providerId&&(this.ownedBusiness=!0,this.changedOwnedBusiness()),this.loading=!1}))}get createOrganization(){return null==this.organizationId}get selectedPlan(){return this.plans.find((e=>e.type===this.plan))}get selectedPlanInterval(){return this.selectedPlan.isAnnual?"year":"month"}get selectableProducts(){let e=this.plans.filter((e=>e.type!==a.PlanType.Custom));if(this.ownedBusiness&&(e=e.filter((e=>e.canBeUsedByBusiness))),this.showFree||(e=e.filter((e=>e.product!==l.ProductType.Free))),e=e.filter((e=>!e.legacyYear&&!e.disabled&&(e.isAnnual||e.product===this.productTypes.Free))),this.acceptingSponsorship){const t=this.plans.find((e=>e.type===a.PlanType.FamiliesAnnually));this.discount=t.basePrice,e=[t]}return e}get selectablePlans(){return this.plans.filter((e=>!e.legacyYear&&!e.disabled&&e.product===this.product))}additionalStoragePriceMonthly(e){return e.isAnnual?e.additionalStoragePricePerGb/12:e.additionalStoragePricePerGb}seatPriceMonthly(e){return e.isAnnual?e.seatPrice/12:e.seatPrice}additionalStorageTotal(e){return e.hasAdditionalStorageOption?e.additionalStoragePricePerGb*Math.abs(this.additionalStorage||0):0}seatTotal(e){return e.hasAdditionalSeatsOption?e.seatPrice*Math.abs(this.additionalSeats||0):0}get subtotal(){let e=this.selectedPlan.basePrice;return this.selectedPlan.hasAdditionalSeatsOption&&this.additionalSeats&&(e+=this.seatTotal(this.selectedPlan)),this.selectedPlan.hasAdditionalStorageOption&&this.additionalStorage&&(e+=this.additionalStorageTotal(this.selectedPlan)),this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon&&(e+=this.selectedPlan.premiumAccessOptionPrice),e-this.discount}get freeTrial(){return null!=this.selectedPlan.trialPeriodDays}get taxCharges(){return null!=this.taxComponent&&null!=this.taxComponent.taxRate?this.taxComponent.taxRate/100*this.subtotal:0}get total(){return this.subtotal+this.taxCharges||0}get paymentDesc(){return this.acceptingSponsorship?this.i18nService.t("paymentSponsored"):this.freeTrial&&this.createOrganization?this.i18nService.t("paymentChargedWithTrial"):this.i18nService.t("paymentCharged",this.i18nService.t(this.selectedPlanInterval))}changedProduct(){this.plan=this.selectablePlans[0].type,this.selectedPlan.hasPremiumAccessOption||(this.premiumAccessAddon=!1),this.selectedPlan.hasAdditionalStorageOption||(this.additionalStorage=0),this.selectedPlan.hasAdditionalSeatsOption?this.additionalSeats||this.selectedPlan.baseSeats||!this.selectedPlan.hasAdditionalSeatsOption||(this.additionalSeats=1):this.additionalSeats=0}changedOwnedBusiness(){this.ownedBusiness&&!this.selectedPlan.canBeUsedByBusiness&&(this.product=l.ProductType.Teams,this.plan=a.PlanType.TeamsAnnually)}changedCountry(){this.paymentComponent.hideBank="US"!==this.taxComponent.taxInfo.country,this.paymentComponent.hideBank&&this.paymentComponent.method===o.PaymentMethodType.BankAccount&&(this.paymentComponent.method=o.PaymentMethodType.Card,this.paymentComponent.changeMethod())}cancel(){this.onCanceled.emit()}submit(){return i(this,void 0,void 0,(function*(){if(this.singleOrgPolicyBlock=yield this.userHasBlockingSingleOrgPolicy(),!this.singleOrgPolicyBlock)try{const e=()=>i(this,void 0,void 0,(function*(){let e=null;if(this.createOrganization){const t=yield this.cryptoService.makeShareKey(),n=t[0].encryptedString,i=(yield this.cryptoService.encrypt(this.i18nService.t("defaultCollection"),t[1])).encryptedString,r=yield this.cryptoService.makeKeyPair(t[1]);e=this.selfHosted?yield this.createSelfHosted(n,i,r):yield this.createCloudHosted(n,i,r,t[1]),this.platformUtilsService.showToast("success",this.i18nService.t("organizationCreated"),this.i18nService.t("organizationReadyToGo"))}else e=yield this.updateOrganization(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("organizationUpgraded"));return yield this.apiService.refreshIdentityToken(),yield this.syncService.fullSync(!0),this.acceptingSponsorship||this.router.navigate(["/organizations/"+e]),e}));this.formPromise=e();const t=yield this.formPromise;this.onSuccess.emit({organizationId:t}),this.messagingService.send("organizationCreated",t)}catch(e){this.logService.error(e)}}))}userHasBlockingSingleOrgPolicy(){return i(this,void 0,void 0,(function*(){return this.policyService.policyAppliesToUser(s.PolicyType.SingleOrg)}))}updateOrganization(e){return i(this,void 0,void 0,(function*(){const e=new p.OrganizationUpgradeRequest;e.businessName=this.ownedBusiness?this.businessName:null,e.additionalSeats=this.additionalSeats,e.additionalStorageGb=this.additionalStorage,e.premiumAccessAddon=this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon,e.planType=this.selectedPlan.type,e.billingAddressCountry=this.taxComponent.taxInfo.country,e.billingAddressPostalCode=this.taxComponent.taxInfo.postalCode;if(!(yield this.organizationService.get(this.organizationId)).hasPublicAndPrivateKeys){const t=yield this.cryptoService.getOrgKey(this.organizationId),n=yield this.cryptoService.makeKeyPair(t);e.keys=new d.OrganizationKeysRequest(n[0],n[1].encryptedString)}const t=yield this.apiService.postOrganizationUpgrade(this.organizationId,e);return t.success||null==t.paymentIntentClientSecret||(yield this.paymentComponent.handleStripeCardPayment(t.paymentIntentClientSecret,null)),this.organizationId}))}createCloudHosted(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=new c.OrganizationCreateRequest;if(i.key=e,i.collectionName=t,i.name=this.name,i.billingEmail=this.billingEmail,i.keys=new d.OrganizationKeysRequest(n[0],n[1].encryptedString),this.selectedPlan.type===a.PlanType.Free)i.planType=a.PlanType.Free;else{const e=yield this.paymentComponent.createPaymentToken();i.paymentToken=e[0],i.paymentMethodType=e[1],i.businessName=this.ownedBusiness?this.businessName:null,i.additionalSeats=this.additionalSeats,i.additionalStorageGb=this.additionalStorage,i.premiumAccessAddon=this.selectedPlan.hasPremiumAccessOption&&this.premiumAccessAddon,i.planType=this.selectedPlan.type,i.billingAddressPostalCode=this.taxComponent.taxInfo.postalCode,i.billingAddressCountry=this.taxComponent.taxInfo.country,this.taxComponent.taxInfo.includeTaxId&&(i.taxIdNumber=this.taxComponent.taxInfo.taxId,i.billingAddressLine1=this.taxComponent.taxInfo.line1,i.billingAddressLine2=this.taxComponent.taxInfo.line2,i.billingAddressCity=this.taxComponent.taxInfo.city,i.billingAddressState=this.taxComponent.taxInfo.state)}if(this.providerId){const e=new u.ProviderOrganizationCreateRequest(this.clientOwnerEmail,i),t=yield this.cryptoService.getProviderKey(this.providerId);e.organizationCreateRequest.key=(yield this.cryptoService.encrypt(r.key,t)).encryptedString;return(yield this.apiService.postProviderCreateOrganization(this.providerId,e)).organizationId}return(yield this.apiService.postOrganization(i)).id}))}createSelfHosted(e,t,n){return i(this,void 0,void 0,(function*(){const i=document.getElementById("file").files;if(null==i||0===i.length)throw new Error(this.i18nService.t("selectFile"));const r=new FormData;r.append("license",i[0]),r.append("key",e),r.append("collectionName",t);const o=(yield this.apiService.postOrganizationLicense(r)).id,a=new d.OrganizationKeysRequest(n[0],n[1].encryptedString);return yield this.apiService.postOrganizationKeys(o,a),o}))}}t.OrganizationPlansComponent=Ve,Ve.ɵfac=function(e){return new(e||Ve)(v.ɵɵdirectiveInject(f.ApiService),v.ɵɵdirectiveInject(g.I18nService),v.ɵɵdirectiveInject(y.PlatformUtilsService),v.ɵɵdirectiveInject(x.CryptoService),v.ɵɵdirectiveInject(S.Router),v.ɵɵdirectiveInject(b.SyncService),v.ɵɵdirectiveInject(w.PolicyService),v.ɵɵdirectiveInject(C.OrganizationService),v.ɵɵdirectiveInject(I.LogService),v.ɵɵdirectiveInject(E.MessagingService))},Ve.ɵcmp=v.ɵɵdefineComponent({type:Ve,selectors:[["app-organization-plans"]],viewQuery:function(e,t){if(1&e&&(v.ɵɵviewQuery(m.PaymentComponent,5),v.ɵɵviewQuery(h.TaxInfoComponent,5)),2&e){let e;v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.paymentComponent=e.first),v.ɵɵqueryRefresh(e=v.ɵɵloadQuery())&&(t.taxComponent=e.first)}},inputs:{organizationId:"organizationId",showFree:"showFree",showCancel:"showCancel",acceptingSponsorship:"acceptingSponsorship",product:"product",plan:"plan",providerId:"providerId"},outputs:{onSuccess:"onSuccess",onCanceled:"onCanceled"},decls:6,vars:3,consts:[[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"mt-5"],["class","row",4,"ngIf"],["class","form-check form-check-block",4,"ngFor","ngForOf"],["class","mt-4",4,"ngIf"],[1,"mt-4"],["type","button","class","btn btn-outline-secondary",3,"click",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","billingEmail"],["id","billingEmail","type","text","name","BillingEmail","required","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-group col-6",4,"ngIf"],["for","email"],["id","email","type","text","name","Email","required","",1,"form-control",3,"ngModel","ngModelChange"],[1,"text-muted"],[1,"form-group","form-check"],["id","ownedBusiness","type","checkbox","name","OwnedBusiness",1,"form-check-input",3,"ngModel","ngModelChange","change"],["for","ownedBusiness",1,"form-check-label"],["for","businessName"],["id","businessName","type","text","name","BusinessName",1,"form-control",3,"ngModel","ngModelChange"],[1,"form-check","form-check-block"],["type","radio","name","product",1,"form-check-input",3,"id","value","ngModel","ngModelChange","change"],[1,"form-check-label",3,"for"],[1,"mb-1"],[4,"ngIf","ngIfElse"],["fullFeatureList",""],["for","additionalStorage"],["id","additionalStorage","type","number","name","AdditionalStorageGb","min","0","max","99","step","1",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"text-muted","form-text"],[1,"spaced-header"],[1,"my-3"],[1,"spaced-header","mb-4"],[1,"text-muted","font-italic","mb-3","d-block"],[3,"hideCredit",4,"ngIf"],[3,"onCountryChanged"],["id","price",1,"my-4"],[1,"text-muted","text-sm"],[1,"my-1","col-3","ml-0"],[1,"text-lg"],[1,"col-6"],["for","additionalSeats"],["id","additionalSeats","type","number","name","AdditionalSeats","min","1","max","100000","required","",1,"form-control",3,"ngModel","placeholder","ngModelChange"],["id","additionalSeats","type","number","name","AdditionalSeats","min","0","max","100000",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"form-check"],["id","premiumAccess","type","checkbox","name","PremiumAccessAddon",1,"form-check-input",3,"ngModel","ngModelChange"],["for","premiumAccess",1,"form-check-label","bold"],["type","radio","name","BillingInterval",1,"form-check-input",3,"id","value","ngModel","ngModelChange"],["notAcceptingSponsorship",""],[2,"text-decoration","line-through"],[3,"hideCredit"],[3,"showMethods"],[3,"type"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){1&e&&(v.ɵɵtemplate(0,D,9,6,"ng-container",0),v.ɵɵtext(1,"\n"),v.ɵɵtemplate(2,R,33,18,"ng-container",0),v.ɵɵtext(3,"\n"),v.ɵɵtemplate(4,Ue,36,20,"form",1),v.ɵɵtext(5,"\n")),2&e&&(v.ɵɵproperty("ngIf",t.loading),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",t.createOrganization&&t.selfHosted),v.ɵɵadvance(2),v.ɵɵproperty("ngIf",!t.loading&&!t.selfHosted&&t.plans))},directives:[P.NgIf,O.NgControlStatusGroup,O.NgForm,k.ApiActionDirective,P.NgForOf,O.DefaultValueAccessor,O.RequiredValidator,O.NgControlStatus,O.NgModel,O.CheckboxControlValueAccessor,O.RadioControlValueAccessor,O.MinValidator,O.MaxValidator,O.NumberValueAccessor,A.TaxInfoComponent,T.PaymentComponent,M.CalloutComponent],pipes:[B.I18nPipe,P.CurrencyPipe],encapsulation:2})},88691:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentMethodComponent=void 0;n(68012),n(91674),n(51554),n(73828);const r=n(98523),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(68012),d=n(57490),p=n(52767),u=n(449),m=n(55732),h=n(99729),v=function(e){return{"bwi-spin":e}};function f(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",3),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().load()})),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",4),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext();o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngClass",o.ɵɵpureFunction1(5,v,e.loading)),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function g(e,t){1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",5),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",6),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementContainerEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",12),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).addCredit()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"addCredit"),"\n "))}function x(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"app-add-credit",13),o.ɵɵlistener("onAdded",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closeAddCredit(!0)}))("onCanceled",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closeAddCredit(!1)})),o.ɵɵtext(1,"\n "),o.ɵɵelementEnd()}}function S(e,t){1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"noPaymentMethod")))}function b(e,t){1&e&&(o.ɵɵelementStart(0,"span"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(2,1,"inAppPurchase")))}const w=function(e,t,n,i,r,o){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-money":n,"bwi-paypal text-primary":i,"bwi-apple text-muted":r,"bwi-google text-muted":o}};function C(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"p"),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",14),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,3,3,"span",2),o.ɵɵtext(7),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngClass",o.ɵɵpureFunction6(3,w,e.paymentSource.type===e.paymentMethodType.Card,e.paymentSource.type===e.paymentMethodType.BankAccount,e.paymentSource.type===e.paymentMethodType.Check,e.paymentSource.type===e.paymentMethodType.PayPal,e.paymentSource.type===e.paymentMethodType.AppleInApp,e.paymentSource.type===e.paymentMethodType.GoogleInApp)),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.paymentSourceInApp),o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",e.paymentSource.description,"\n ")}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"button",12),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).changePayment()})),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,e.paymentSource?"changePaymentMethod":"addPaymentMethod"),"\n ")}}function E(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"app-adjust-payment",15),o.ɵɵlistener("onAdjusted",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closePayment(!0)}))("onCanceled",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).closePayment(!1)})),o.ɵɵtext(1,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵproperty("currentType",null!=e.paymentSource?e.paymentSource.type:null)}}function P(e,t){if(1&e&&(o.ɵɵelementContainerStart(0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h2"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"p",7),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"strong"),o.ɵɵtext(9),o.ɵɵpipe(10,"currency"),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"p"),o.ɵɵtext(14),o.ɵɵpipe(15,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵtemplate(17,y,3,3,"button",8),o.ɵɵtext(18,"\n "),o.ɵɵtemplate(19,x,2,0,"app-add-credit",9),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"h2",10),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,S,3,3,"p",2),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,C,9,10,"ng-container",2),o.ɵɵtext(28,"\n "),o.ɵɵtemplate(29,I,3,3,"button",8),o.ɵɵtext(30,"\n "),o.ɵɵtemplate(31,E,2,1,"app-adjust-payment",11),o.ɵɵtext(32,"\n"),o.ɵɵelementContainerEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,10,e.isCreditBalance?"accountCredit":"accountBalance")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(10,12,e.creditOrBalance,"$")),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(15,15,"creditAppliedDesc")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.showAddCredit),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showAddCredit),o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,17,"paymentMethod")),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!e.paymentSource),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.paymentSource),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!e.showAdjustPayment),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.showAdjustPayment)}}class O{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.loading=!1,this.firstLoaded=!1,this.showAdjustPayment=!1,this.showAddCredit=!1,this.paymentMethodType=r.PaymentMethodType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.platformUtilsService.isSelfHost()&&this.router.navigate(["/settings/subscription"]),yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,this.billing=yield this.apiService.getUserBillingPayment(),this.loading=!1)}))}addCredit(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("addCredit"),null,null,"warning"):this.showAddCredit=!0}closeAddCredit(e){this.showAddCredit=!1,e&&this.load()}changePayment(){this.paymentSourceInApp?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t("changePaymentMethod"),null,null,"warning"):this.showAdjustPayment=!0}closePayment(e){this.showAdjustPayment=!1,e&&this.load()}get isCreditBalance(){return null==this.billing||this.billing.balance<=0}get creditOrBalance(){return Math.abs(null!=this.billing?this.billing.balance:0)}get paymentSource(){return null!=this.billing?this.billing.paymentSource:null}get paymentSourceInApp(){return null!=this.paymentSource&&(this.paymentSource.type===r.PaymentMethodType.AppleInApp||this.paymentSource.type===r.PaymentMethodType.GoogleInApp)}}t.PaymentMethodComponent=O,O.ɵfac=function(e){return new(e||O)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.Router))},O.ɵcmp=o.ɵɵdefineComponent({type:O,selectors:[["app-payment-method"]],decls:13,vars:6,consts:[[1,"tabbed-header","d-flex"],["bit-button","","buttonType","secondary","class","tw-ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],["bit-button","","buttonType","secondary",1,"tw-ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"text-lg"],["bit-button","","buttonType","secondary",3,"click",4,"ngIf"],[3,"onAdded","onCanceled",4,"ngIf"],[1,"spaced-header"],[3,"currentType","onAdjusted","onCanceled",4,"ngIf"],["bit-button","","buttonType","secondary",3,"click"],[3,"onAdded","onCanceled"],[1,"bwi","bwi-fw",3,"ngClass"],[3,"currentType","onAdjusted","onCanceled"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h1"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,f,5,7,"button",1),o.ɵɵtext(7,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵtemplate(9,g,9,6,"ng-container",2),o.ɵɵtext(10,"\n"),o.ɵɵtemplate(11,P,33,19,"ng-container",2),o.ɵɵtext(12,"\n")),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,4,"paymentMethod"),"\n "),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",t.firstLoaded),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.billing))},directives:[d.NgIf,p.ButtonComponent,d.NgClass,u.AddCreditComponent,m.AdjustPaymentComponent],pipes:[h.I18nPipe,d.CurrencyPipe],encapsulation:2})},17337:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PaymentComponent=void 0;n(91674),n(36631),n(73828);const r=n(98523),o=n(14538),a=n(83706),s=n(32621),l=n(73828),c=n(91674),d=n(36631),p=n(57490),u=n(96832),m=n(8863),h=n(51626),v=n(48198),f=n(99729);function g(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",3),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",9),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",10),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",11),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.BankAccount)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(8,3,"bankAccount"),"")}}function y(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",13),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",15),s.ɵɵtext(7," PayPal"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.PayPal)("ngModel",e.method)}}function x(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",16),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",17),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",18),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("value",e.paymentMethodType.Credit)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(8,3,"accountCredit"),"")}}function S(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",2),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",3),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",4),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().method=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().changeMethod()})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",5),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",6),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,g,10,5,"div",7),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,y,9,2,"div",8),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,x,10,5,"div",8),s.ɵɵtext(18,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("value",e.paymentMethodType.Card)("ngModel",e.method),s.ɵɵadvance(5),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(10,6,"creditCard"),""),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!e.hideBank),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.hidePaypal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.hideCredit)}}function b(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",19),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",20),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",21),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"div",22),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",23),s.ɵɵtext(14,"\n "),s.ɵɵelement(15,"img",24),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",20),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"label",25),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelement(24,"div",26),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",20),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",27),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"label",28),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"a",29),s.ɵɵpipe(36,"i18n"),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"i",30),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelement(42,"div",31),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,4,"number")),s.ɵɵadvance(14),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,6,"expiration")),s.ɵɵadvance(11),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(33,8,"securityCode"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(36,10,"learnMore")))}function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",32),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",19),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",33),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"label",34),s.ɵɵtext(13),s.ɵɵpipe(14,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.routing_number=t})),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",33),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",36),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",37),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_number=t})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",33),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",38),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",39),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_holder_name=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",33),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"label",40),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"select",41),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().bank.account_holder_type=t})),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"option",42),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"option",43),s.ɵɵtext(50),s.ɵɵpipe(51,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"option",44),s.ɵɵtext(54),s.ɵɵpipe(55,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,14,"verifyBankAccount")),s.ɵɵadvance(2),s.ɵɵtextInterpolate2("\n ",s.ɵɵpipeBind1(5,16,"verifyBankAccountInitialDesc")," ",s.ɵɵpipeBind1(6,18,"verifyBankAccountFailureWarning"),"\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(14,20,"routingNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.routing_number),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,22,"accountNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_number),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,24,"accountHolderName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_holder_name),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,26,"bankAccountType")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.bank.account_holder_type),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("-- ",s.ɵɵpipeBind1(47,28,"select")," --"),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(51,30,"bankAccountTypeCompany")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(55,32,"bankAccountTypeIndividual"))}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",45),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"div",46),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"small",47),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,1,"paypalClickSubmit")))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",48),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"makeSureEnoughCredit"),"\n "))}const E=a.default.lightInputColor,P=a.default.lightInputPlaceholderColor,O=a.default.darkInputColor,k=a.default.darkInputPlaceholderColor;class A{constructor(e,t,n){this.platformUtilsService=e,this.apiService=t,this.logService=n,this.showMethods=!0,this.showOptions=!0,this.method=r.PaymentMethodType.Card,this.hideBank=!1,this.hidePaypal=!1,this.hideCredit=!1,this.bank={routing_number:null,account_number:null,account_holder_name:null,account_holder_type:"",currency:"USD",country:"US"},this.paymentMethodType=r.PaymentMethodType,this.btInstance=null,this.stripe=null,this.stripeElements=null,this.stripeCardNumberElement=null,this.stripeCardExpiryElement=null,this.stripeCardCvcElement=null,this.stripeScript=window.document.createElement("script"),this.stripeScript.src="https://js.stripe.com/v3/",this.stripeScript.async=!0,this.stripeScript.onload=()=>{this.stripe=window.Stripe("pk_live_bpN0P37nMxrMQkcaHXtAybJk"),this.stripeElements=this.stripe.elements(),this.setStripeElement()},this.btScript=window.document.createElement("script"),this.btScript.src="scripts/dropin.js?cache=g85wp2",this.btScript.async=!0,this.StripeElementStyle={base:{color:null,fontFamily:'"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',fontSize:"14px",fontSmoothing:"antialiased","::placeholder":{color:null}},invalid:{color:null}},this.StripeElementClasses={focus:"is-focused",empty:"is-empty",invalid:"is-invalid"}}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showOptions||(this.hidePaypal=this.method!==r.PaymentMethodType.PayPal,this.hideBank=this.method!==r.PaymentMethodType.BankAccount,this.hideCredit=this.method!==r.PaymentMethodType.Credit),yield this.setTheme(),window.document.head.appendChild(this.stripeScript),this.hidePaypal||window.document.head.appendChild(this.btScript)}))}ngOnDestroy(){window.document.head.removeChild(this.stripeScript),window.setTimeout((()=>{Array.from(window.document.querySelectorAll("iframe")).forEach((e=>{if(null!=e.src&&e.src.indexOf("stripe")>-1)try{window.document.body.removeChild(e)}catch(t){this.logService.error(t)}}))}),500),this.hidePaypal||(window.document.head.removeChild(this.btScript),window.setTimeout((()=>{Array.from(window.document.head.querySelectorAll("script")).forEach((e=>{if(null!=e.src&&e.src.indexOf("paypal")>-1)try{window.document.head.removeChild(e)}catch(t){this.logService.error(t)}}));const e=window.document.head.querySelector("#braintree-dropin-stylesheet");if(null!=e)try{window.document.head.removeChild(e)}catch(t){this.logService.error(t)}}),500))}changeMethod(){this.btInstance=null,this.method===r.PaymentMethodType.PayPal?window.setTimeout((()=>{window.braintree.dropin.create({authorization:"production_qfbsv8kc_njj2zjtyngtjmbjd",container:"#bt-dropin-container",paymentOptionPriority:["paypal"],paypal:{flow:"vault",buttonStyle:{label:"pay",size:"medium",shape:"pill",color:"blue",tagline:"false"}}},((e,t)=>{null==e?this.btInstance=t:console.error(e)}))}),250):this.setStripeElement()}createPaymentToken(){return new Promise(((e,t)=>{this.method===r.PaymentMethodType.Credit?e([null,this.method]):this.method===r.PaymentMethodType.PayPal?this.btInstance.requestPaymentMethod().then((t=>{e([t.nonce,this.method])})).catch((e=>{t(e.message)})):this.method!==r.PaymentMethodType.Card&&this.method!==r.PaymentMethodType.BankAccount||(this.method===r.PaymentMethodType.Card?this.apiService.postSetupPayment().then((e=>this.stripe.handleCardSetup(e,this.stripeCardNumberElement))).then((n=>{n.error?t(n.error.message):n.setupIntent&&"succeeded"===n.setupIntent.status?e([n.setupIntent.payment_method,this.method]):t()})):this.stripe.createToken("bank_account",this.bank).then((n=>{n.error?t(n.error.message):n.token&&null!=n.token.id?e([n.token.id,this.method]):t()})))}))}handleStripeCardPayment(e,t){return new Promise(((n,r)=>{if(this.showMethods&&null==this.stripeCardNumberElement)return void r();return(()=>this.showMethods?this.stripe.handleCardSetup(e,this.stripeCardNumberElement):this.stripe.handleCardSetup(e))().then((e=>i(this,void 0,void 0,(function*(){e.error?r(e.error.message):e.paymentIntent&&"succeeded"===e.paymentIntent.status?(null!=t&&(yield t()),n()):r()}))))}))}setStripeElement(){window.setTimeout((()=>{this.showMethods&&this.method===r.PaymentMethodType.Card&&(null==this.stripeCardNumberElement&&(this.stripeCardNumberElement=this.stripeElements.create("cardNumber",{style:this.StripeElementStyle,classes:this.StripeElementClasses,placeholder:""})),null==this.stripeCardExpiryElement&&(this.stripeCardExpiryElement=this.stripeElements.create("cardExpiry",{style:this.StripeElementStyle,classes:this.StripeElementClasses})),null==this.stripeCardCvcElement&&(this.stripeCardCvcElement=this.stripeElements.create("cardCvc",{style:this.StripeElementStyle,classes:this.StripeElementClasses,placeholder:""})),this.stripeCardNumberElement.mount("#stripe-card-number-element"),this.stripeCardExpiryElement.mount("#stripe-card-expiry-element"),this.stripeCardCvcElement.mount("#stripe-card-cvc-element"))}),50)}setTheme(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.getEffectiveTheme())===o.ThemeType.Dark?(this.StripeElementStyle.base.color=O,this.StripeElementStyle.base["::placeholder"].color=k,this.StripeElementStyle.invalid.color=O):(this.StripeElementStyle.base.color=E,this.StripeElementStyle.base["::placeholder"].color=P,this.StripeElementStyle.invalid.color=E)}))}}t.PaymentComponent=A,A.ɵfac=function(e){return new(e||A)(s.ɵɵdirectiveInject(l.PlatformUtilsService),s.ɵɵdirectiveInject(c.ApiService),s.ɵɵdirectiveInject(d.LogService))},A.ɵcmp=s.ɵɵdefineComponent({type:A,selectors:[["app-payment"]],inputs:{showMethods:"showMethods",showOptions:"showOptions",method:"method",hideBank:"hideBank",hidePaypal:"hidePaypal",hideCredit:"hideCredit"},decls:10,vars:5,consts:[["class","mb-4 text-lg",4,"ngIf"],[4,"ngIf"],[1,"mb-4","text-lg"],[1,"form-check","form-check-inline","mr-4"],["type","radio","name","Method","id","method-card",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-card",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-credit-card"],["class","form-check form-check-inline mr-4",4,"ngIf"],["class","form-check form-check-inline",4,"ngIf"],["type","radio","name","Method","id","method-bank",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-bank",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-bank"],[1,"form-check","form-check-inline"],["type","radio","name","Method","id","method-paypal",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-paypal",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paypal"],["type","radio","name","Method","id","method-credit",1,"form-check-input",3,"value","ngModel","ngModelChange","change"],["for","method-credit",1,"form-check-label"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-dollar"],[1,"row"],[1,"form-group","col-4"],["for","stripe-card-number-element"],["id","stripe-card-number-element",1,"form-control","stripe-form-control"],[1,"form-group","col-8","d-flex","align-items-end"],["src","../../images/cards.png","alt","Visa, MasterCard, Discover, AmEx, JCB, Diners Club, UnionPay","width","323","height","32"],["for","stripe-card-expiry-element"],["id","stripe-card-expiry-element",1,"form-control","stripe-form-control"],[1,"d-flex"],["for","stripe-card-cvc-element"],["href","https://www.cvvnumber.com/cvv.html","tabindex","-1","target","_blank","rel","noopener noreferrer",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","stripe-card-cvc-element",1,"form-control","stripe-form-control"],["type","warning",3,"title"],[1,"form-group","col-6"],["for","routing_number"],["id","routing_number","type","text","name","routing_number","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_number"],["id","account_number","type","text","name","account_number","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_holder_name"],["id","account_holder_name","type","text","name","account_holder_name","required","",1,"form-control",3,"ngModel","ngModelChange"],["for","account_holder_type"],["id","account_holder_type","name","account_holder_type","required","",1,"form-control",3,"ngModel","ngModelChange"],["value",""],["value","company"],["value","individual"],[1,"mb-3"],["id","bt-dropin-container",1,"mb-1"],[1,"text-muted"],["type","note"]],template:function(e,t){1&e&&(s.ɵɵtemplate(0,S,19,8,"div",0),s.ɵɵtext(1,"\n"),s.ɵɵtemplate(2,b,46,12,"ng-container",1),s.ɵɵtext(3,"\n"),s.ɵɵtemplate(4,w,60,34,"ng-container",1),s.ɵɵtext(5,"\n"),s.ɵɵtemplate(6,C,11,3,"ng-container",1),s.ɵɵtext(7,"\n"),s.ɵɵtemplate(8,I,6,3,"ng-container",1),s.ɵɵtext(9,"\n")),2&e&&(s.ɵɵproperty("ngIf",t.showOptions&&t.showMethods),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.Card),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.BankAccount),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.PayPal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.showMethods&&t.method===t.paymentMethodType.Credit))},directives:[p.NgIf,u.RadioControlValueAccessor,u.DefaultValueAccessor,u.NgControlStatus,u.NgModel,m.A11yTitleDirective,h.CalloutComponent,u.RequiredValidator,v.InputVerbatimDirective,u.SelectControlValueAccessor,u.NgSelectOption,u.ɵNgSelectMultipleOption],pipes:[f.I18nPipe],encapsulation:2})},28964:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PreferencesComponent=void 0;const r=n(96832),o=(n(51554),n(45552),n(73828),n(73569),n(82656),n(14538)),a=n(82769),s=n(32621),l=n(73569),c=n(51554),d=n(82656),p=n(73828),u=n(45552),m=n(96832),h=n(81397),v=n(8863),f=n(57490),g=n(99729);function y(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",31),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",31),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}class S{constructor(e,t,n,i,s){this.stateService=e,this.i18nService=t,this.vaultTimeoutService=n,this.platformUtilsService=i,this.messagingService=s,this.vaultTimeoutAction="lock",this.vaultTimeout=new r.FormControl(null),this.vaultTimeouts=[{name:t.t("oneMinute"),value:1},{name:t.t("fiveMinutes"),value:5},{name:t.t("fifteenMinutes"),value:15},{name:t.t("thirtyMinutes"),value:30},{name:t.t("oneHour"),value:60},{name:t.t("fourHours"),value:240},{name:t.t("onRefresh"),value:-1}],this.platformUtilsService.isDev()&&this.vaultTimeouts.push({name:t.t("never"),value:null});const l=[];t.supportedTranslationLocales.forEach((e=>{let n=e;t.localeNames.has(e)&&(n+=" - "+t.localeNames.get(e)),l.push({name:n,value:e})})),l.sort(a.Utils.getSortFunction(t,"name")),l.splice(0,0,{name:t.t("default"),value:null}),this.localeOptions=l,this.themeOptions=[{name:t.t("themeLight"),value:o.ThemeType.Light},{name:t.t("themeDark"),value:o.ThemeType.Dark},{name:t.t("themeSystem"),value:o.ThemeType.System}]}ngOnInit(){var e;return i(this,void 0,void 0,(function*(){this.vaultTimeout.setValue(yield this.vaultTimeoutService.getVaultTimeout()),this.vaultTimeoutAction=yield this.stateService.getVaultTimeoutAction(),this.disableIcons=yield this.stateService.getDisableFavicon(),this.enableGravatars=yield this.stateService.getEnableGravitars(),this.enableFullWidth=yield this.stateService.getEnableFullWidth(),this.locale=null!==(e=yield this.stateService.getLocale())&&void 0!==e?e:null,this.startingLocale=this.locale,this.theme=yield this.stateService.getTheme(),this.startingTheme=this.theme}))}submit(){return i(this,void 0,void 0,(function*(){if(this.vaultTimeout.valid){if(yield this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout.value,this.vaultTimeoutAction),yield this.stateService.setDisableFavicon(this.disableIcons),yield this.stateService.setEnableGravitars(this.enableGravatars),yield this.stateService.setEnableFullWidth(this.enableFullWidth),this.messagingService.send("setFullWidth"),this.theme!==this.startingTheme){yield this.stateService.setTheme(this.theme),this.startingTheme=this.theme;const e=yield this.platformUtilsService.getEffectiveTheme(),t=window.document.documentElement;t.classList.remove("theme_"+o.ThemeType.Light,"theme_"+o.ThemeType.Dark),t.classList.add("theme_"+e)}yield this.stateService.setLocale(this.locale),this.locale!==this.startingLocale?window.location.reload():this.platformUtilsService.showToast("success",null,this.i18nService.t("preferencesUpdated"))}else this.platformUtilsService.showToast("error",null,this.i18nService.t("vaultTimeoutToLarge"))}))}vaultTimeoutActionChanged(e){return i(this,void 0,void 0,(function*(){if("logOut"===e){if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("vaultTimeoutLogOutConfirmation"),this.i18nService.t("vaultTimeoutLogOutConfirmationTitle"),this.i18nService.t("yes"),this.i18nService.t("cancel"),"warning")))return void(this.vaultTimeoutAction="lock")}this.vaultTimeoutAction=e}))}}t.PreferencesComponent=S,S.ɵfac=function(e){return new(e||S)(s.ɵɵdirectiveInject(l.StateService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.VaultTimeoutService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.MessagingService))},S.ɵcmp=s.ɵɵdefineComponent({type:S,selectors:[["app-preferences"]],decls:173,vars:74,consts:[[1,"page-header"],["ngNativeValidate","",3,"ngSubmit"],[1,"row"],[1,"col-6"],["ngDefaultControl","",3,"vaultTimeouts","formControl"],[1,"form-group"],[1,"form-check","form-check-block"],["type","radio","name","vaultTimeoutAction","id","vaultTimeoutActionLock","value","lock",1,"form-check-input",3,"ngModel","ngModelChange"],["for","vaultTimeoutActionLock",1,"form-check-label"],[1,"form-check","mt-2","form-check-block"],["type","radio","name","vaultTimeoutAction","id","vaultTimeoutActionLogOut","value","logOut",1,"form-check-input",3,"ngModel","ngModelChange"],["for","vaultTimeoutActionLogOut",1,"form-check-label"],[1,"d-flex"],["for","locale"],["href","https://bitwarden.com/help/localization/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["id","locale","name","Locale",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-text","text-muted"],[1,"form-check"],["type","checkbox","id","disableIcons","name","DisableIcons",1,"form-check-input",3,"ngModel","ngModelChange"],["for","disableIcons",1,"form-check-label"],["href","https://bitwarden.com/help/website-icons/","target","_blank","rel","noopener",3,"appA11yTitle"],["type","checkbox","id","enableGravatars","name","enableGravatars",1,"form-check-input",3,"ngModel","ngModelChange"],["for","enableGravatars",1,"form-check-label"],["href","https://gravatar.com/","target","_blank","rel","noopener",3,"appA11yTitle"],["type","checkbox","id","enableFullWidth","name","enableFullWidth",1,"form-check-input",3,"ngModel","ngModelChange"],["for","enableFullWidth",1,"form-check-label"],["for","theme"],["id","theme","name","theme",1,"form-control",3,"ngModel","ngModelChange"],["type","submit",1,"btn","btn-primary"],[3,"ngValue"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵelementStart(7,"p"),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n"),s.ɵɵelementStart(11,"form",1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",2),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",3),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"app-vault-timeout-input",4),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",5),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label"),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",6),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"input",7),s.ɵɵlistener("ngModelChange",(function(e){return t.vaultTimeoutAction=e})),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"label",8),s.ɵɵtext(33),s.ɵɵpipe(34,"i18n"),s.ɵɵelementStart(35,"small"),s.ɵɵtext(36),s.ɵɵpipe(37,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"div",9),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"input",10),s.ɵɵlistener("ngModelChange",(function(e){return t.vaultTimeoutAction=e}))("ngModelChange",(function(e){return t.vaultTimeoutActionChanged(e)})),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"label",11),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementStart(48,"small"),s.ɵɵtext(49),s.ɵɵpipe(50,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"div",2),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"div",3),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"div",5),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"div",12),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"label",13),s.ɵɵtext(64),s.ɵɵpipe(65,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"a",14),s.ɵɵpipe(68,"i18n"),s.ɵɵtext(69,"\n "),s.ɵɵelement(70,"i",15),s.ɵɵtext(71,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"select",16),s.ɵɵlistener("ngModelChange",(function(e){return t.locale=e})),s.ɵɵtext(75,"\n "),s.ɵɵtemplate(76,y,2,2,"option",17),s.ɵɵtext(77,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"small",18),s.ɵɵtext(80),s.ɵɵpipe(81,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(83,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(84,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"div",5),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"div",19),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"input",20),s.ɵɵlistener("ngModelChange",(function(e){return t.disableIcons=e})),s.ɵɵelementEnd(),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"label",21),s.ɵɵtext(93),s.ɵɵpipe(94,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(95,"\n "),s.ɵɵelementStart(96,"a",22),s.ɵɵpipe(97,"i18n"),s.ɵɵtext(98,"\n "),s.ɵɵelement(99,"i",15),s.ɵɵtext(100,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(101,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(102,"\n "),s.ɵɵelementStart(103,"small",18),s.ɵɵtext(104),s.ɵɵpipe(105,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementStart(108,"div",5),s.ɵɵtext(109,"\n "),s.ɵɵelementStart(110,"div",19),s.ɵɵtext(111,"\n "),s.ɵɵelementStart(112,"input",23),s.ɵɵlistener("ngModelChange",(function(e){return t.enableGravatars=e})),s.ɵɵelementEnd(),s.ɵɵtext(113,"\n "),s.ɵɵelementStart(114,"label",24),s.ɵɵtext(115),s.ɵɵpipe(116,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(117,"\n "),s.ɵɵelementStart(118,"a",25),s.ɵɵpipe(119,"i18n"),s.ɵɵtext(120,"\n "),s.ɵɵelement(121,"i",15),s.ɵɵtext(122,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(123,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(124,"\n "),s.ɵɵelementStart(125,"small",18),s.ɵɵtext(126),s.ɵɵpipe(127,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(128,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(129,"\n "),s.ɵɵelementStart(130,"div",5),s.ɵɵtext(131,"\n "),s.ɵɵelementStart(132,"div",19),s.ɵɵtext(133,"\n "),s.ɵɵelementStart(134,"input",26),s.ɵɵlistener("ngModelChange",(function(e){return t.enableFullWidth=e})),s.ɵɵelementEnd(),s.ɵɵtext(135,"\n "),s.ɵɵelementStart(136,"label",27),s.ɵɵtext(137),s.ɵɵpipe(138,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(140,"\n "),s.ɵɵelementStart(141,"small",18),s.ɵɵtext(142),s.ɵɵpipe(143,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(144,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(145,"\n "),s.ɵɵelementStart(146,"div",2),s.ɵɵtext(147,"\n "),s.ɵɵelementStart(148,"div",3),s.ɵɵtext(149,"\n "),s.ɵɵelementStart(150,"div",5),s.ɵɵtext(151,"\n "),s.ɵɵelementStart(152,"label",28),s.ɵɵtext(153),s.ɵɵpipe(154,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(155,"\n "),s.ɵɵelementStart(156,"select",29),s.ɵɵlistener("ngModelChange",(function(e){return t.theme=e})),s.ɵɵtext(157,"\n "),s.ɵɵtemplate(158,x,2,2,"option",17),s.ɵɵtext(159,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"small",18),s.ɵɵtext(162),s.ɵɵpipe(163,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(164,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(165,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(166,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(167,"\n "),s.ɵɵelementStart(168,"button",30),s.ɵɵtext(169),s.ɵɵpipe(170,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(171,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(172,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,32,"preferences")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(9,34,"preferencesDesc")),s.ɵɵadvance(9),s.ɵɵproperty("vaultTimeouts",t.vaultTimeouts)("formControl",t.vaultTimeout),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,36,"vaultTimeoutAction")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",t.vaultTimeoutAction),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(34,38,"lock"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(37,40,"vaultTimeoutActionLockDesc")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.vaultTimeoutAction),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(47,42,"logOut"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(50,44,"vaultTimeoutActionLogOutDesc")),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(65,46,"language")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(68,48,"learnMore")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",t.locale),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.localeOptions),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(81,50,"languageDesc")),s.ɵɵadvance(10),s.ɵɵproperty("ngModel",t.disableIcons),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(94,52,"disableIcons"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(97,54,"learnMore")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(105,56,"disableIconsDesc")),s.ɵɵadvance(8),s.ɵɵproperty("ngModel",t.enableGravatars),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(116,58,"enableGravatars"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(119,60,"learnMore")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(127,62,"enableGravatarsDesc")),s.ɵɵadvance(8),s.ɵɵproperty("ngModel",t.enableFullWidth),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(138,64,"enableFullWidth"),"\n "),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(143,66,"enableFullWidthDesc")),s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(154,68,"theme")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.theme),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.themeOptions),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(163,70,"themeDesc")),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(170,72,"save"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.VaultTimeoutInputComponent,m.DefaultValueAccessor,m.NgControlStatus,m.FormControlDirective,m.RadioControlValueAccessor,m.NgModel,v.A11yTitleDirective,m.SelectControlValueAccessor,f.NgForOf,m.CheckboxControlValueAccessor,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[g.I18nPipe],encapsulation:2})},28800:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PremiumComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(45552),n(73828),n(73569),n(9724),n(30694);const r=n(17337),o=n(41799),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(30694),p=n(68012),u=n(45552),m=n(9724),h=n(36631),v=n(73569),f=n(57490),g=n(20138),y=n(52767),x=n(96832),S=n(56820),b=n(17337),w=n(41799),C=n(99729);function I(e,t){1&e&&(a.ɵɵelementStart(0,"div",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"subscription")))}function E(e,t){1&e&&(a.ɵɵelementStart(0,"div",11),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,1,"goPremium")))}function P(e,t){1&e&&(a.ɵɵelementStart(0,"bit-callout",12),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2),a.ɵɵpipe(3,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(1,2,"youHavePremiumAccess")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(3,4,"alreadyPremiumFromOrg"),"\n"))}function O(e,t){1&e&&(a.ɵɵelementStart(0,"a",13),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"purchasePremium"),"\n "))}function k(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"p"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"form",14,15),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",16),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",17),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelement(15,"input",18),a.ɵɵtext(16,"\n "),a.ɵɵelementStart(17,"small",19),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"button",20),a.ɵɵtext(23,"\n "),a.ɵɵelement(24,"i",21),a.ɵɵpipe(25,"i18n"),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"span"),a.ɵɵtext(28),a.ɵɵpipe(29,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(30,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n"),a.ɵɵelementContainerEnd()}if(2&e){const e=a.ɵɵreference(7),t=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"uploadLicenseFilePremium")),a.ɵɵadvance(3),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,9,"licenseFile")),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(19,11,"licenseFileDesc","bitwarden_premium_license.json")),a.ɵɵadvance(4),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(25,14,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(29,16,"submit"))}}function A(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"form",14,15),a.ɵɵlistener("ngSubmit",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().submit()})),a.ɵɵtext(2,"\n "),a.ɵɵelementStart(3,"h2",22),a.ɵɵtext(4),a.ɵɵpipe(5,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",23),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"div",24),a.ɵɵtext(10,"\n "),a.ɵɵelementStart(11,"label",25),a.ɵɵtext(12),a.ɵɵpipe(13,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(14,"\n "),a.ɵɵelementStart(15,"input",26),a.ɵɵlistener("ngModelChange",(function(t){a.ɵɵrestoreView(e);return a.ɵɵnextContext().additionalStorage=t})),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"small",27),a.ɵɵtext(19),a.ɵɵpipe(20,"i18n"),a.ɵɵpipe(21,"currency"),a.ɵɵpipe(22,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(23,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"h2",28),a.ɵɵtext(27),a.ɵɵpipe(28,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵpipe(31,"currency"),a.ɵɵelement(32,"br"),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵpipe(35,"currency"),a.ɵɵpipe(36,"currency"),a.ɵɵelement(37,"hr",29),a.ɵɵtext(38,"\n "),a.ɵɵelementStart(39,"h2",30),a.ɵɵtext(40),a.ɵɵpipe(41,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelement(43,"app-payment",31),a.ɵɵtext(44,"\n "),a.ɵɵelement(45,"app-tax-info"),a.ɵɵtext(46,"\n "),a.ɵɵelementStart(47,"div",32),a.ɵɵtext(48,"\n "),a.ɵɵelementStart(49,"div",33),a.ɵɵtext(50),a.ɵɵpipe(51,"i18n"),a.ɵɵpipe(52,"currency"),a.ɵɵelement(53,"br"),a.ɵɵtext(54,"\n "),a.ɵɵelementContainerStart(55),a.ɵɵtext(56),a.ɵɵpipe(57,"i18n"),a.ɵɵpipe(58,"currency"),a.ɵɵelementContainerEnd(),a.ɵɵtext(59,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(60,"\n "),a.ɵɵelement(61,"hr",34),a.ɵɵtext(62,"\n "),a.ɵɵelementStart(63,"p",35),a.ɵɵtext(64,"\n "),a.ɵɵelementStart(65,"strong"),a.ɵɵtext(66),a.ɵɵpipe(67,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(68),a.ɵɵpipe(69,"currency"),a.ɵɵpipe(70,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(71,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(72,"\n "),a.ɵɵelementStart(73,"small",36),a.ɵɵtext(74),a.ɵɵpipe(75,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(76,"\n "),a.ɵɵelementStart(77,"button",20),a.ɵɵtext(78,"\n "),a.ɵɵelement(79,"i",21),a.ɵɵpipe(80,"i18n"),a.ɵɵtext(81,"\n "),a.ɵɵelementStart(82,"span"),a.ɵɵtext(83),a.ɵɵpipe(84,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(85,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(86,"\n"),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(5,26,"addons")),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(13,28,"additionalStorageGb")),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("placeholder",a.ɵɵpipeBind1(16,30,"additionalStorageGbDesc")),a.ɵɵproperty("ngModel",t.additionalStorage),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind4(20,32,"additionalStorageIntervalDesc","1 GB",a.ɵɵpipeBind2(21,37,t.storageGbPrice,"$"),a.ɵɵpipeBind1(22,40,"year"))),a.ɵɵadvance(8),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(28,42,"summary")),a.ɵɵadvance(2),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(30,44,"premiumMembership"),": ",a.ɵɵpipeBind2(31,46,t.premiumPrice,"$")," "),a.ɵɵadvance(4),a.ɵɵtextInterpolate4("\n ",a.ɵɵpipeBind1(34,49,"additionalStorageGb"),": ",t.additionalStorage||0," GB ×\n ",a.ɵɵpipeBind2(35,51,t.storageGbPrice,"$")," =\n ",a.ɵɵpipeBind2(36,54,t.additionalStorageTotal,"$"),"\n "),a.ɵɵadvance(7),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(41,57,"paymentInformation")),a.ɵɵadvance(3),a.ɵɵproperty("hideBank",!0),a.ɵɵadvance(7),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(51,59,"planPrice"),": ",a.ɵɵpipeBind2(52,61,t.subtotal,"USD $"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate2("\n ",a.ɵɵpipeBind1(57,64,"estimatedTax"),": ",a.ɵɵpipeBind2(58,66,t.taxCharges,"USD $"),"\n "),a.ɵɵadvance(10),a.ɵɵtextInterpolate1("",a.ɵɵpipeBind1(67,69,"total"),":"),a.ɵɵadvance(2),a.ɵɵtextInterpolate2(" ",a.ɵɵpipeBind2(69,71,t.total,"USD $"),"/",a.ɵɵpipeBind1(70,74,"year"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(75,76,"paymentChargedAnnually")),a.ɵɵadvance(3),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(80,78,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(84,80,"submit"))}}const T=function(e){return{"mb-0":e}};class M{constructor(e,t,n,i,r,o,a,s,l){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.tokenService=i,this.router=r,this.messagingService=o,this.syncService=a,this.logService=s,this.stateService=l,this.canAccessPremium=!1,this.selfHosted=!1,this.premiumPrice=10,this.storageGbPrice=4,this.additionalStorage=0,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();(yield this.tokenService.getPremium())&&this.router.navigate(["/settings/subscription/user-subscription"])}))}submit(){return i(this,void 0,void 0,(function*(){let e=null;if(this.selfHosted){if(e=document.getElementById("file").files,null==e||0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}try{if(this.selfHosted){if(!this.tokenService.getEmailVerified())return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("verifyEmailFirst"));const t=new FormData;t.append("license",e[0]),this.formPromise=this.apiService.postAccountLicense(t).then((()=>this.finalizePremium()))}else this.formPromise=this.paymentComponent.createPaymentToken().then((e=>{const t=new FormData;return t.append("paymentMethodType",e[1].toString()),null!=e[0]&&t.append("paymentToken",e[0]),t.append("additionalStorageGb",(this.additionalStorage||0).toString()),t.append("country",this.taxInfoComponent.taxInfo.country),t.append("postalCode",this.taxInfoComponent.taxInfo.postalCode),this.apiService.postPremium(t)})).then((e=>e.success||null==e.paymentIntentClientSecret?this.finalizePremium():this.paymentComponent.handleStripeCardPayment(e.paymentIntentClientSecret,(()=>this.finalizePremium()))));yield this.formPromise}catch(t){this.logService.error(t)}}))}finalizePremium(){return i(this,void 0,void 0,(function*(){yield this.apiService.refreshIdentityToken(),yield this.syncService.fullSync(!0),this.platformUtilsService.showToast("success",null,this.i18nService.t("premiumUpdated")),this.messagingService.send("purchasedPremium"),this.router.navigate(["/settings/subscription/user-subscription"])}))}get additionalStorageTotal(){return this.storageGbPrice*Math.abs(this.additionalStorage||0)}get subtotal(){return this.premiumPrice+this.additionalStorageTotal}get taxCharges(){return null!=this.taxInfoComponent&&null!=this.taxInfoComponent.taxRate?this.taxInfoComponent.taxRate/100*this.subtotal:0}get total(){return this.subtotal+this.taxCharges||0}}t.PremiumComponent=M,M.ɵfac=function(e){return new(e||M)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.TokenService),a.ɵɵdirectiveInject(p.Router),a.ɵɵdirectiveInject(u.MessagingService),a.ɵɵdirectiveInject(m.SyncService),a.ɵɵdirectiveInject(h.LogService),a.ɵɵdirectiveInject(v.StateService))},M.ɵcmp=a.ɵɵdefineComponent({type:M,selectors:[["app-premium"]],viewQuery:function(e,t){if(1&e&&(a.ɵɵviewQuery(r.PaymentComponent,5),a.ɵɵviewQuery(o.TaxInfoComponent,5)),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.paymentComponent=e.first),a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.taxInfoComponent=e.first)}},decls:69,vars:40,consts:[["class","page-header",4,"ngIf"],["class","tabbed-header",4,"ngIf"],["type","info","icon","bwi bwi-star-f",3,"title",4,"ngIf"],["type","success"],[1,"bwi-ul"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-li"],[1,"text-lg",3,"ngClass"],["bit-button","","href","https://vault.bitwarden.com/#/settings/premium","target","_blank","rel","noopener","buttonType","secondary",4,"ngIf"],[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[1,"page-header"],[1,"tabbed-header"],["type","info","icon","bwi bwi-star-f",3,"title"],["bit-button","","href","https://vault.bitwarden.com/#/settings/premium","target","_blank","rel","noopener","buttonType","secondary"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["bit-button","","buttonType","primary","type","submit",1,"btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"mt-5"],[1,"row"],[1,"form-group","col-6"],["for","additionalStorage"],["id","additionalStorage","type","number","name","AdditionalStorageGb","min","0","max","99","step","1",1,"form-control",3,"ngModel","placeholder","ngModelChange"],[1,"text-muted","form-text"],[1,"spaced-header"],[1,"my-3"],[1,"spaced-header","mb-4"],[3,"hideBank"],["id","price",1,"my-4"],[1,"text-muted","text-sm"],[1,"my-1","col-3","ml-0"],[1,"text-lg"],[1,"text-muted","font-italic"]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,I,6,3,"div",0),a.ɵɵtext(1,"\n"),a.ɵɵtemplate(2,E,6,3,"div",1),a.ɵɵtext(3,"\n"),a.ɵɵtemplate(4,P,4,6,"bit-callout",2),a.ɵɵtext(5,"\n"),a.ɵɵelementStart(6,"bit-callout",3),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"p"),a.ɵɵtext(9),a.ɵɵpipe(10,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n "),a.ɵɵelementStart(12,"ul",4),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"li"),a.ɵɵtext(15,"\n "),a.ɵɵelement(16,"i",5),a.ɵɵtext(17),a.ɵɵpipe(18,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementStart(20,"li"),a.ɵɵtext(21,"\n "),a.ɵɵelement(22,"i",5),a.ɵɵtext(23),a.ɵɵpipe(24,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(25,"\n "),a.ɵɵelementStart(26,"li"),a.ɵɵtext(27,"\n "),a.ɵɵelement(28,"i",5),a.ɵɵtext(29),a.ɵɵpipe(30,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"li"),a.ɵɵtext(33,"\n "),a.ɵɵelement(34,"i",5),a.ɵɵtext(35),a.ɵɵpipe(36,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(37,"\n "),a.ɵɵelementStart(38,"li"),a.ɵɵtext(39,"\n "),a.ɵɵelement(40,"i",5),a.ɵɵtext(41),a.ɵɵpipe(42,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n "),a.ɵɵelementStart(44,"li"),a.ɵɵtext(45,"\n "),a.ɵɵelement(46,"i",5),a.ɵɵtext(47),a.ɵɵpipe(48,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(49,"\n "),a.ɵɵelementStart(50,"li"),a.ɵɵtext(51,"\n "),a.ɵɵelement(52,"i",5),a.ɵɵtext(53),a.ɵɵpipe(54,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(55,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(56,"\n "),a.ɵɵelementStart(57,"p",6),a.ɵɵtext(58),a.ɵɵpipe(59,"i18n"),a.ɵɵpipe(60,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(61,"\n "),a.ɵɵtemplate(62,O,3,3,"a",7),a.ɵɵtext(63,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(64,"\n"),a.ɵɵtemplate(65,k,33,18,"ng-container",8),a.ɵɵtext(66,"\n"),a.ɵɵtemplate(67,A,87,82,"form",9),a.ɵɵtext(68,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.canAccessPremium),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(10,16,"premiumUpgradeUnlockFeatures")),a.ɵɵadvance(8),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(18,18,"premiumSignUpStorage"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(24,20,"premiumSignUpTwoStep"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(30,22,"premiumSignUpEmergency"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(36,24,"premiumSignUpReports"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(42,26,"premiumSignUpTotp"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(48,28,"premiumSignUpSupport"),"\n "),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(54,30,"premiumSignUpFuture"),"\n "),a.ɵɵadvance(4),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(38,T,!t.selfHosted)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(59,32,"premiumPrice",a.ɵɵpipeBind2(60,35,t.premiumPrice,"$")),"\n "),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.selfHosted),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!t.selfHosted))},directives:[f.NgIf,g.CalloutComponent,f.NgClass,y.ButtonComponent,x.NgControlStatusGroup,x.NgForm,S.ApiActionDirective,x.MinValidator,x.MaxValidator,x.NumberValueAccessor,x.DefaultValueAccessor,x.NgControlStatus,x.NgModel,b.PaymentComponent,w.TaxInfoComponent],pipes:[C.I18nPipe,f.CurrencyPipe],encapsulation:2})},93276:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ProfileComponent=void 0;n(91674),n(85714),n(51554),n(72277),n(36631),n(73828),n(73569);const r=n(82567),o=n(32621),a=n(91674),s=n(51554),l=n(73828),c=n(85714),d=n(36631),p=n(72277),u=n(73569),m=n(57490),h=n(96832),v=n(56820),f=n(15370),g=n(8863),y=n(99729),x=n(52080);function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",2),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span",3),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,2,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",8),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",18),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"input",19),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext(2).profile.masterPasswordHint=t})),o.ɵɵelementEnd(),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,2,"masterPassHintLabel")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",e.profile.masterPasswordHint)}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"p"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementStart(3,"a",20),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",21),o.ɵɵelementEnd(),o.ɵɵelement(7,"br"),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"code"),o.ɵɵtext(10),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext(2);o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,3,"yourAccountsFingerprint"),":\n "),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,5,"learnMore")),o.ɵɵadvance(7),o.ɵɵtextInterpolate(e.fingerprint)}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"form",4,5),o.ɵɵlistener("ngSubmit",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",6),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"div",7),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",8),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"label",9),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"input",10),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().profile.name=t})),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"div",8),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"label",11),o.ɵɵtext(19),o.ɵɵpipe(20,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementStart(22,"input",12),o.ɵɵlistener("ngModelChange",(function(t){o.ɵɵrestoreView(e);return o.ɵɵnextContext().profile.email=t})),o.ɵɵelementEnd(),o.ɵɵtext(23,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,b,8,4,"div",13),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(27,"\n "),o.ɵɵelementStart(28,"div",7),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",14),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"app-avatar",15),o.ɵɵpipe(33,"userName"),o.ɵɵtext(34,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelement(37,"hr"),o.ɵɵtext(38,"\n "),o.ɵɵtemplate(39,w,12,7,"p",0),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementStart(43,"button",16),o.ɵɵtext(44,"\n "),o.ɵɵelement(45,"i",17),o.ɵɵpipe(46,"i18n"),o.ɵɵtext(47,"\n "),o.ɵɵelementStart(48,"span"),o.ɵɵtext(49),o.ɵɵpipe(50,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(52,"\n"),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(1),t=o.ɵɵnextContext();o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(11,12,"name")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.profile.name),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(20,14,"email")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.profile.email),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!t.hidePasswordHint),o.ɵɵadvance(7),o.ɵɵpropertyInterpolate("data",o.ɵɵpipeBind1(33,16,t.profile)),o.ɵɵproperty("email",t.profile.email),o.ɵɵadvance(7),o.ɵɵproperty("ngIf",t.fingerprint),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(46,18,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(50,20,"save"))}}class I{constructor(e,t,n,i,r,o,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.cryptoService=i,this.logService=r,this.keyConnectorService=o,this.stateService=a,this.loading=!0,this.hidePasswordHint=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.profile=yield this.apiService.getProfile(),this.loading=!1;const e=yield this.cryptoService.getFingerprint(yield this.stateService.getUserId());null!=e&&(this.fingerprint=e.join("-")),this.hidePasswordHint=yield this.keyConnectorService.getUsesKeyConnector()}))}submit(){return i(this,void 0,void 0,(function*(){try{const e=new r.UpdateProfileRequest(this.profile.name,this.profile.masterPasswordHint);this.formPromise=this.apiService.putProfile(e),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("accountUpdated"))}catch(e){this.logService.error(e)}}))}}t.ProfileComponent=I,I.ɵfac=function(e){return new(e||I)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.CryptoService),o.ɵɵdirectiveInject(d.LogService),o.ɵɵdirectiveInject(p.KeyConnectorService),o.ɵɵdirectiveInject(u.StateService))},I.ɵcmp=o.ɵɵdefineComponent({type:I,selectors:[["app-profile"]],decls:4,vars:2,consts:[[4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","ngModelChange"],["for","email"],["id","email","type","text","name","Email","readonly","",1,"form-control",3,"ngModel","ngModelChange"],["class","form-group",4,"ngIf"],[1,"mb-3"],["dynamic","true","size","75","fontSize","35",3,"data","email"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["for","masterPasswordHint"],["id","masterPasswordHint","type","text","name","MasterPasswordHint",1,"form-control",3,"ngModel","ngModelChange"],["href","https://bitwarden.com/help/fingerprint-phrase/","target","_blank","rel","noopener",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,S,9,6,"div",0),o.ɵɵtext(1,"\n"),o.ɵɵtemplate(2,C,53,22,"form",1),o.ɵɵtext(3,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.loading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.profile&&!t.loading))},directives:[m.NgIf,h.NgControlStatusGroup,h.NgForm,v.ApiActionDirective,h.DefaultValueAccessor,h.NgControlStatus,h.NgModel,f.AvatarComponent,g.A11yTitleDirective],pipes:[y.I18nPipe,x.UserNamePipe],encapsulation:2})},56796:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.PurgeVaultComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(57055),c=n(68012),d=n(36631),p=n(96832),u=n(56820),m=n(8863),h=n(51626),v=n(4158),f=n(99729);class g{constructor(e,t,n,i,r,o){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.userVerificationService=i,this.router=r,this.logService=o,this.organizationId=null}submit(){return i(this,void 0,void 0,(function*(){try{this.formPromise=this.userVerificationService.buildRequest(this.masterPassword).then((e=>this.apiService.postPurgeCiphers(e,this.organizationId))),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("vaultPurged")),null!=this.organizationId?this.router.navigate(["organizations",this.organizationId,"vault"]):this.router.navigate(["vault"])}catch(e){this.logService.error(e)}}))}}t.PurgeVaultComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.UserVerificationService),r.ɵɵdirectiveInject(c.Router),r.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-purge-vault"]],inputs:{organizationId:"organizationId"},decls:55,vars:24,consts:[["role","dialog","aria-modal","true","aria-labelledby","purgeVaultTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","purgeVaultTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["type","warning"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",6),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"span",7),r.ɵɵtext(17,"×"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementStart(21,"div",8),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"p"),r.ɵɵtext(24),r.ɵɵpipe(25,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"app-callout",9),r.ɵɵtext(28),r.ɵɵpipe(29,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"app-user-verification",10),r.ɵɵlistener("ngModelChange",(function(e){return t.masterPassword=e})),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵelementStart(35,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"button",12),r.ɵɵtext(38,"\n "),r.ɵɵelement(39,"i",13),r.ɵɵpipe(40,"i18n"),r.ɵɵtext(41,"\n "),r.ɵɵelementStart(42,"span"),r.ɵɵtext(43),r.ɵɵpipe(44,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementStart(47,"button",14),r.ɵɵtext(48),r.ɵɵpipe(49,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,10,"purgeVault")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(25,14,t.organizationId?"purgeOrgVaultDesc":"purgeVaultDesc")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(29,16,"purgeVaultWarning")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.masterPassword),r.ɵɵadvance(6),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(40,18,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(44,20,"purgeVault")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(49,22,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective,h.CalloutComponent,v.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[f.I18nPipe],encapsulation:2})},80793:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityKeysComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(72277),n(73569),n(83011)),a=n(32621),s=n(72277),l=n(73569),c=n(64684),d=n(91674),p=n(57490),u=n(52767),m=n(48381),h=n(99729),v=["viewUserApiKeyTemplate"],f=["rotateUserApiKeyTemplate"];function g(e,t){1&e&&a.ɵɵelement(0,"app-change-kdf")}function y(e,t){}function x(e,t){}const S=function(e,t){return{"tabbed-header":e,"secondary-header":t}};class b{constructor(e,t,n,i){this.keyConnectorService=e,this.stateService=t,this.modalService=n,this.apiService=i,this.showChangeKdf=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangeKdf=!(yield this.keyConnectorService.getUsesKeyConnector())}))}viewUserApiKey(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getUserId();yield this.modalService.openViewRef(o.ApiKeyComponent,this.viewUserApiKeyModalRef,(t=>{t.keyType="user",t.entityId=e,t.postKey=this.apiService.postUserApiKey.bind(this.apiService),t.scope="api",t.grantType="client_credentials",t.apiKeyTitle="apiKey",t.apiKeyWarning="userApiKeyWarning",t.apiKeyDescription="userApiKeyDesc"}))}))}rotateUserApiKey(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getUserId();yield this.modalService.openViewRef(o.ApiKeyComponent,this.rotateUserApiKeyModalRef,(t=>{t.keyType="user",t.isRotation=!0,t.entityId=e,t.postKey=this.apiService.postUserRotateApiKey.bind(this.apiService),t.scope="api",t.grantType="client_credentials",t.apiKeyTitle="apiKey",t.apiKeyWarning="userApiKeyWarning",t.apiKeyDescription="apiKeyRotateDesc"}))}))}}t.SecurityKeysComponent=b,b.ɵfac=function(e){return new(e||b)(a.ɵɵdirectiveInject(s.KeyConnectorService),a.ɵɵdirectiveInject(l.StateService),a.ɵɵdirectiveInject(c.ModalService),a.ɵɵdirectiveInject(d.ApiService))},b.ɵcmp=a.ɵɵdefineComponent({type:b,selectors:[["app-security-keys"]],viewQuery:function(e,t){if(1&e&&(a.ɵɵviewQuery(v,7,r.ViewContainerRef),a.ɵɵviewQuery(f,7,r.ViewContainerRef)),2&e){let e;a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.viewUserApiKeyModalRef=e.first),a.ɵɵqueryRefresh(e=a.ɵɵloadQuery())&&(t.rotateUserApiKeyModalRef=e.first)}},decls:27,vars:17,consts:[[4,"ngIf"],[1,"border-0","mb-0",3,"ngClass"],["bit-button","","buttonType","secondary",3,"click"],["viewUserApiKeyTemplate",""],["rotateUserApiKeyTemplate",""]],template:function(e,t){1&e&&(a.ɵɵtemplate(0,g,1,0,"app-change-kdf",0),a.ɵɵtext(1,"\n"),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"h1"),a.ɵɵtext(5),a.ɵɵpipe(6,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementStart(9,"p"),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n"),a.ɵɵelementStart(13,"button",2),a.ɵɵlistener("click",(function(){return t.viewUserApiKey()})),a.ɵɵtext(14),a.ɵɵpipe(15,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(16,"\n"),a.ɵɵelementStart(17,"button",2),a.ɵɵlistener("click",(function(){return t.rotateUserApiKey()})),a.ɵɵtext(18),a.ɵɵpipe(19,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n"),a.ɵɵtemplate(21,y,0,0,"ng-template",null,3,a.ɵɵtemplateRefExtractor),a.ɵɵtext(23,"\n"),a.ɵɵtemplate(24,x,0,0,"ng-template",null,4,a.ɵɵtemplateRefExtractor),a.ɵɵtext(26,"\n")),2&e&&(a.ɵɵproperty("ngIf",t.showChangeKdf),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",a.ɵɵpureFunction2(14,S,!t.showChangeKdf,t.showChangeKdf)),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(6,6,"apiKey")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,8,"userApiKeyDesc"),"\n"),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(15,10,"viewApiKey"),"\n"),a.ɵɵadvance(4),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(19,12,"rotateApiKey"),"\n"))},directives:[p.NgIf,p.NgClass,u.ButtonComponent,m.ChangeKdfComponent],pipes:[h.I18nPipe],encapsulation:2})},17587:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityRoutingModule=void 0;const i=n(68012),r=n(11676),o=n(80793),a=n(75024),s=n(35906),l=n(32621),c=(n(68012),[{path:"",component:a.SecurityComponent,data:{titleId:"security"},children:[{path:"",pathMatch:"full",redirectTo:"change-password"},{path:"change-password",component:r.ChangePasswordComponent,data:{titleId:"masterPassword"}},{path:"two-factor",component:s.TwoFactorSetupComponent,data:{titleId:"twoStepLogin"}},{path:"security-keys",component:o.SecurityKeysComponent,data:{titleId:"keys"}}]}]);class d{}t.SecurityRoutingModule=d,d.ɵfac=function(e){return new(e||d)},d.ɵmod=l.ɵɵdefineNgModule({type:d}),d.ɵinj=l.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(c)],i.RouterModule]})},75024:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SecurityComponent=void 0;n(72277);const r=n(32621),o=n(72277),a=n(57490),s=n(68012),l=n(99729);function c(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"li",3),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"a",6),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,1,"masterPassword"),"\n "))}class d{constructor(e){this.keyConnectorService=e,this.showChangePassword=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.showChangePassword=!(yield this.keyConnectorService.getUsesKeyConnector())}))}}t.SecurityComponent=d,d.ɵfac=function(e){return new(e||d)(r.ɵɵdirectiveInject(o.KeyConnectorService))},d.ɵcmp=r.ɵɵdefineComponent({type:d,selectors:[["app-security"]],decls:24,vars:7,consts:[[1,"tabbed-nav","d-flex","flex-column"],[1,"nav","nav-tabs"],[4,"ngIf"],[1,"nav-item"],["routerLink","two-factor","routerLinkActive","active",1,"nav-link"],["routerLink","security-keys","routerLinkActive","active",1,"nav-link"],["routerLink","change-password","routerLinkActive","active",1,"nav-link"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",1),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,c,9,3,"ng-container",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"li",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"li",3),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"a",5),r.ɵɵtext(16),r.ɵɵpipe(17,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n"),r.ɵɵelement(22,"router-outlet"),r.ɵɵtext(23,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.showChangePassword),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,3,"twoStepLogin"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(17,5,"keys"),"\n "))},directives:[a.NgIf,s.RouterLinkWithHref,s.RouterLinkActive,s.RouterOutlet],pipes:[l.I18nPipe],encapsulation:2})},82477:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SettingsComponent=void 0;n(32621),n(91674),n(8470),n(63513),n(73828),n(30694),n(15156);const r=n(32621),o=n(30694),a=n(8470),s=n(73828),l=n(63513),c=n(15156),d=n(91674),p=n(68012),u=n(57490),m=n(99729);function h(e,t){1&e&&(r.ɵɵelementStart(0,"a",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"subscription"),"\n "))}function v(e,t){1&e&&(r.ɵɵelementStart(0,"a",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"sponsoredFamilies"),"\n "))}const f="SettingsComponent";class g{constructor(e,t,n,i,r,o,a){this.tokenService=e,this.broadcasterService=t,this.ngZone=n,this.platformUtilsService=i,this.organizationService=r,this.stateService=o,this.apiService=a}ngOnInit(){return i(this,void 0,void 0,(function*(){this.broadcasterService.subscribe(f,(e=>i(this,void 0,void 0,(function*(){this.ngZone.run((()=>i(this,void 0,void 0,(function*(){if("purchasedPremium"===e.command)yield this.load()}))))})))),this.selfHosted=yield this.platformUtilsService.isSelfHost(),yield this.load()}))}ngOnDestroy(){this.broadcasterService.unsubscribe(f)}load(){return i(this,void 0,void 0,(function*(){this.premium=yield this.tokenService.getPremium(),this.hasFamilySponsorshipAvailable=yield this.organizationService.canManageSponsorships();const e=yield this.stateService.getCanAccessPremium();let t=null;this.selfHosted||(t=yield this.apiService.getUserBillingHistory()),this.hideSubscription=!this.premium&&e&&(this.selfHosted||(null==t?void 0:t.hasNoHistory))}))}}t.SettingsComponent=g,g.ɵfac=function(e){return new(e||g)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.BroadcasterService),r.ɵɵdirectiveInject(r.NgZone),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.OrganizationService),r.ɵɵdirectiveInject(c.StateService),r.ɵɵdirectiveInject(d.ApiService))},g.ɵcmp=r.ɵɵdefineComponent({type:g,selectors:[["app-settings"]],decls:48,vars:20,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","account","routerLinkActive","active",1,"list-group-item"],["routerLink","security","routerLinkActive","active",1,"list-group-item"],["routerLink","preferences","routerLinkActive","active",1,"list-group-item"],["routerLink","subscription","class","list-group-item","routerLinkActive","active",4,"ngIf"],["routerLink","domain-rules","routerLinkActive","active",1,"list-group-item"],["routerLink","emergency-access","routerLinkActive","active",1,"list-group-item"],["routerLink","sponsored-families","class","list-group-item","routerLinkActive","active",4,"ngIf"],[1,"col-9"],["routerLink","subscription","routerLinkActive","active",1,"list-group-item"],["routerLink","sponsored-families","routerLinkActive","active",1,"list-group-item"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"a",8),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵtemplate(26,h,3,3,"a",9),r.ɵɵtext(27,"\n "),r.ɵɵelementStart(28,"a",10),r.ɵɵtext(29),r.ɵɵpipe(30,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"a",11),r.ɵɵtext(33),r.ɵɵpipe(34,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵtemplate(36,v,3,3,"a",12),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"div",13),r.ɵɵtext(42,"\n "),r.ɵɵelement(43,"router-outlet"),r.ɵɵtext(44,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(45,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,8,"accountSettings")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,10,"myAccount"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,12,"security"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,14,"preferences"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.hideSubscription),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(30,16,"domainRules"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(34,18,"emergencyAccess"),"\n "),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.hasFamilySponsorshipAvailable))},directives:[p.RouterLinkWithHref,p.RouterLinkActive,u.NgIf,p.RouterOutlet],pipes:[m.I18nPipe],encapsulation:2})},21362:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SponsoredFamiliesComponent=void 0;const r=n(96832),o=n(55939),a=(n(91674),n(51554),n(63513),n(73828),n(73569),n(9724),n(22931)),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(9724),u=n(63513),m=n(96832),h=n(73569),v=n(57490),f=n(56820),g=n(73618),y=n(99729);function x(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",2),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span",3),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n"),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,2,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,4,"loading")))}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",18),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function b(e,t){1&e&&(s.ɵɵelementStart(0,"small",19),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",20),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"cannotSponsorSelf"),"\n "))}function w(e,t){1&e&&(s.ɵɵelementStart(0,"small",19),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",20),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,1,"invalidEmail"),"\n "))}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",6,7),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",8),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"label",9),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"select",10),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"option",11),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,S,2,2,"option",12),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",8),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",13),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"input",14),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,b,5,3,"small",15),s.ɵɵtext(28,"\n "),s.ɵɵtemplate(29,w,5,3,"small",15),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",8),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"button",16),s.ɵɵtext(35,"\n "),s.ɵɵelement(36,"i",17),s.ɵɵpipe(37,"i18n"),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"span"),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.sponsorshipForm),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,12,"familiesSponsoringOrgSelect")),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("-- ",s.ɵɵpipeBind1(13,14,"select")," --"),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",t.availableSponsorshipOrgs),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(23,16,"sponsoredFamiliesEmail"),":"),s.ɵɵadvance(3),s.ɵɵattribute("aria-invalid",t.sponsorshipEmailControl.invalid),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.sponsorshipEmailControl.errors?null:t.sponsorshipEmailControl.errors.notAllowedValue),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",null==t.sponsorshipEmailControl.errors?null:t.sponsorshipEmailControl.errors.email),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(37,18,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,20,"redeem"))}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"tr",24),s.ɵɵlistener("sponsorshipRemoved",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).load(!0)})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("sponsoringOrg",e)("isSelfHosted",n.isSelfHosted)}}function E(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",21),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"table",22),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"thead"),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"tr"),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"th"),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"th"),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"th"),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelement(22,"th"),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"tbody"),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,I,4,2,"ng-container",23),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"small"),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(11),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,5,"recipient")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(16,7,"sponsoringOrg")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,9,"status")),s.ɵɵadvance(9),s.ɵɵproperty("ngForOf",e.activeSponsorshipOrgs),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,11,"sponsoredFamiliesLeaveCopy"))}}function P(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"p"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementStart(9,"ul",4),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"li"),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"li"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,C,45,22,"form",5),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,E,37,13,"ng-container",1),s.ɵɵtext(24,"\n"),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(4,6,"sponsoredFamiliesEligible"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(8,8,"sponsoredFamiliesInclude"),":\n "),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,10,"sponsoredFamiliesPremiumAccess")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,12,"sponsoredFamiliesSharedCollections")),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",e.anyOrgsAvailable),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.anyActiveSponsorships)}}class O{constructor(e,t,n,a,s,l,c){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.syncService=a,this.organizationService=s,this.formBuilder=l,this.stateService=c,this.loading=!1,this.availableSponsorshipOrgs=[],this.activeSponsorshipOrgs=[],this.sponsorshipForm=this.formBuilder.group({selectedSponsorshipOrgId:["",{validators:[r.Validators.required]}],sponsorshipEmail:["",{validators:[r.Validators.email],asyncValidators:[o.notAllowedValueAsync((()=>i(this,void 0,void 0,(function*(){return yield this.stateService.getEmail()}))),!0)],updateOn:"blur"}]})}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load()}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.postCreateSponsorship(this.sponsorshipForm.value.selectedSponsorshipOrgId,{sponsoredEmail:this.sponsorshipForm.value.sponsorshipEmail,planSponsorshipType:a.PlanSponsorshipType.FamiliesForEnterprise,friendlyName:this.sponsorshipForm.value.sponsorshipEmail}),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("sponsorshipCreated")),this.formPromise=null,this.resetForm(),yield this.load(!0)}))}load(e=!1){return i(this,void 0,void 0,(function*(){if(this.loading)return;this.loading=!0,e&&(yield this.syncService.fullSync(!0));const t=yield this.organizationService.getAll();this.availableSponsorshipOrgs=t.filter((e=>e.familySponsorshipAvailable)),this.activeSponsorshipOrgs=t.filter((e=>null!==e.familySponsorshipFriendlyName)),1===this.availableSponsorshipOrgs.length&&this.sponsorshipForm.patchValue({selectedSponsorshipOrgId:this.availableSponsorshipOrgs[0].id}),this.loading=!1}))}get sponsorshipEmailControl(){return this.sponsorshipForm.controls.sponsorshipEmail}resetForm(){return i(this,void 0,void 0,(function*(){this.sponsorshipForm.reset()}))}get anyActiveSponsorships(){return this.activeSponsorshipOrgs.length>0}get anyOrgsAvailable(){return this.availableSponsorshipOrgs.length>0}get isSelfHosted(){return this.platformUtilsService.isSelfHost()}}t.SponsoredFamiliesComponent=O,O.ɵfac=function(e){return new(e||O)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.SyncService),s.ɵɵdirectiveInject(u.OrganizationService),s.ɵɵdirectiveInject(m.FormBuilder),s.ɵɵdirectiveInject(h.StateService))},O.ɵcmp=s.ɵɵdefineComponent({type:O,selectors:[["app-sponsored-families"]],decls:11,vars:5,consts:[[1,"page-header"],[4,"ngIf"],[1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],[1,"inset-list"],["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"form-group","col-7"],["for","availableSponsorshipOrg"],["id","availableSponsorshipOrg","name","Available Sponsorship Organization","formControlName","selectedSponsorshipOrgId","required","",1,"form-control"],["disabled","true","value",""],[3,"ngValue",4,"ngFor","ngForOf"],["for","sponsorshipEmail"],["id","sponsorshipEmail","inputmode","email","formControlName","sponsorshipEmail","name","sponsorshipEmail","required","",1,"form-control"],["aria-errormessage","sponsorshipEmail","class","error-inline","role","alert",4,"ngIf"],["type","submit",1,"btn","btn-primary","btn-submit","mt-2",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[3,"ngValue"],["aria-errormessage","sponsorshipEmail","role","alert",1,"error-inline"],["aria-hidden","true",1,"bwi","bwi-error"],[1,"border-bottom"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],["sponsoring-org-row","",3,"sponsoringOrg","isSelfHosted","sponsorshipRemoved"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,x,9,6,"ng-container",1),s.ɵɵtext(8,"\n"),s.ɵɵtemplate(9,P,25,14,"ng-container",1),s.ɵɵtext(10,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"sponsoredFamilies")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.loading),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.loading))},directives:[v.NgIf,m.NgControlStatusGroup,f.ApiActionDirective,m.FormGroupDirective,m.SelectControlValueAccessor,m.NgControlStatus,m.FormControlName,m.RequiredValidator,m.NgSelectOption,m.ɵNgSelectMultipleOption,v.NgForOf,m.DefaultValueAccessor,g.SponsoringOrgRowComponent],pipes:[y.I18nPipe],encapsulation:2})},73618:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SponsoringOrgRowComponent=void 0;const r=n(57490),o=n(32621),a=(n(91674),n(51554),n(36631),n(73828),n(27957),n(32621)),s=n(91674),l=n(51554),c=n(36631),d=n(73828),p=n(57490),u=n(56820),m=n(8863),h=n(99729);function v(e,t){1&e&&(a.ɵɵelementStart(0,"button",9),a.ɵɵpipe(1,"i18n"),a.ɵɵtext(2,"\n "),a.ɵɵelement(3,"i",10),a.ɵɵtext(4,"\n "),a.ɵɵelementEnd()),2&e&&a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(1,1,"options"))}function f(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",11,12),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().resendEmail()})),a.ɵɵpipe(2,"i18n"),a.ɵɵtext(3,"\n "),a.ɵɵelement(4,"i",8),a.ɵɵpipe(5,"i18n"),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"span"),a.ɵɵtext(8),a.ɵɵpipe(9,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n "),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵreference(1),t=a.ɵɵnextContext();a.ɵɵproperty("appApiAction",t.resendEmailPromise)("disabled",e.loading),a.ɵɵattribute("aria-label",a.ɵɵpipeBind2(2,5,"resendEmailLabel",t.sponsoringOrg.familySponsorshipFriendlyName)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(5,8,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(9,10,"resendEmail"))}}class g{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.logService=n,this.platformUtilsService=i,this.sponsoringOrg=null,this.isSelfHosted=!1,this.sponsorshipRemoved=new o.EventEmitter,this.statusMessage="loading",this.statusClass="text-success"}ngOnInit(){this.setStatus(this.isSelfHosted,this.sponsoringOrg.familySponsorshipToDelete,this.sponsoringOrg.familySponsorshipValidUntil,this.sponsoringOrg.familySponsorshipLastSyncDate)}revokeSponsorship(){return i(this,void 0,void 0,(function*(){try{this.revokeSponsorshipPromise=this.doRevokeSponsorship(),yield this.revokeSponsorshipPromise}catch(e){this.logService.error(e)}this.revokeSponsorshipPromise=null}))}resendEmail(){return i(this,void 0,void 0,(function*(){this.resendEmailPromise=this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id),yield this.resendEmailPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("emailSent")),this.resendEmailPromise=null}))}get isSentAwaitingSync(){return this.isSelfHosted&&!this.sponsoringOrg.familySponsorshipLastSyncDate}doRevokeSponsorship(){return i(this,void 0,void 0,(function*(){(yield this.platformUtilsService.showDialog(this.i18nService.t("revokeSponsorshipConfirmation"),`${this.i18nService.t("remove")} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`,this.i18nService.t("remove"),this.i18nService.t("cancel"),"warning"))&&(yield this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id),this.platformUtilsService.showToast("success",null,this.i18nService.t("reclaimedFreePlan")),this.sponsorshipRemoved.emit())}))}setStatus(e,t,n,i){t&&n?(this.statusMessage=this.i18nService.t("revokeWhenExpired",r.formatDate(n,"MM/dd/yyyy",this.i18nService.locale)),this.statusClass="text-danger"):t?(this.statusMessage=this.i18nService.t("requestRemoved"),this.statusClass="text-danger"):n?(this.statusMessage=this.i18nService.t("active"),this.statusClass="text-success"):e&&i?(this.statusMessage=this.i18nService.t("sent"),this.statusClass="text-success"):e?(this.statusMessage=this.i18nService.t("requested"),this.statusClass="text-success"):(this.statusMessage=this.i18nService.t("sent"),this.statusClass="text-success")}}t.SponsoringOrgRowComponent=g,g.ɵfac=function(e){return new(e||g)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.LogService),a.ɵɵdirectiveInject(d.PlatformUtilsService))},g.ɵcmp=a.ɵɵdefineComponent({type:g,selectors:[["","sponsoring-org-row",""]],inputs:{sponsoringOrg:"sponsoringOrg",isSelfHosted:"isSelfHosted"},outputs:{sponsorshipRemoved:"sponsorshipRemoved"},attrs:["sponsoring-org-row",""],decls:37,vars:18,consts:[[3,"ngClass"],[1,"table-action-right"],["appListDropdown","",1,"dropdown"],["class","btn btn-outline-secondary dropdown-toggle","type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",3,"appA11yTitle",4,"ngIf"],["aria-labelledby","dropdownMenuButton",1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],[1,"dropdown-item","text-danger","btn-submit",3,"appApiAction","disabled","click"],["revokeSponsorshipBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","id","dropdownMenuButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog","bwi-lg"],[1,"dropdown-item","btn-submit",3,"appApiAction","disabled","click"],["resendEmailBtn",""]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"td"),a.ɵɵtext(1),a.ɵɵelementEnd(),a.ɵɵtext(2,"\n"),a.ɵɵelementStart(3,"td"),a.ɵɵtext(4),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n"),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"span",0),a.ɵɵtext(9),a.ɵɵelementEnd(),a.ɵɵtext(10,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(11,"\n"),a.ɵɵelementStart(12,"td",1),a.ɵɵtext(13,"\n "),a.ɵɵelementStart(14,"div",2),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,v,5,3,"button",3),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"div",4),a.ɵɵtext(19,"\n "),a.ɵɵtemplate(20,f,11,12,"button",5),a.ɵɵtext(21,"\n "),a.ɵɵelementStart(22,"button",6,7),a.ɵɵlistener("click",(function(){return t.revokeSponsorship()})),a.ɵɵpipe(24,"i18n"),a.ɵɵtext(25,"\n "),a.ɵɵelement(26,"i",8),a.ɵɵpipe(27,"i18n"),a.ɵɵtext(28,"\n "),a.ɵɵelementStart(29,"span"),a.ɵɵtext(30),a.ɵɵpipe(31,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(32,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(33,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(34,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n")),2&e){const e=a.ɵɵreference(23);a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",t.sponsoringOrg.familySponsorshipFriendlyName,"\n"),a.ɵɵadvance(3),a.ɵɵtextInterpolate(t.sponsoringOrg.name),a.ɵɵadvance(4),a.ɵɵproperty("ngClass",t.statusClass),a.ɵɵadvance(1),a.ɵɵtextInterpolate(t.statusMessage),a.ɵɵadvance(7),a.ɵɵproperty("ngIf",!t.sponsoringOrg.familySponsorshipToDelete),a.ɵɵadvance(4),a.ɵɵproperty("ngIf",!t.isSelfHosted&&!t.sponsoringOrg.familySponsorshipValidUntil),a.ɵɵadvance(2),a.ɵɵproperty("appApiAction",t.revokeSponsorshipPromise)("disabled",e.loading),a.ɵɵattribute("aria-label",a.ɵɵpipeBind2(24,11,"revokeAccount",t.sponsoringOrg.familySponsorshipFriendlyName)),a.ɵɵadvance(4),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(27,14,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(31,16,"remove"))}},directives:[p.NgClass,p.NgIf,u.ApiActionDirective,m.A11yTitleDirective],pipes:[h.I18nPipe],encapsulation:2})},63067:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SubscriptionRoutingModule=void 0;const i=n(68012),r=n(88691),o=n(28800),a=n(31960),s=n(89805),l=n(67562),c=n(32621),d=(n(68012),[{path:"",component:a.SubscriptionComponent,data:{titleId:"subscription"},children:[{path:"",pathMatch:"full",redirectTo:"premium"},{path:"user-subscription",component:l.UserSubscriptionComponent,data:{titleId:"premiumMembership"}},{path:"premium",component:o.PremiumComponent,data:{titleId:"goPremium"}},{path:"payment-method",component:r.PaymentMethodComponent,data:{titleId:"paymentMethod"}},{path:"billing-history",component:s.UserBillingHistoryComponent,data:{titleId:"billingHistory"}}]}]);class p{}t.SubscriptionRoutingModule=p,p.ɵfac=function(e){return new(e||p)},p.ɵmod=c.ɵɵdefineNgModule({type:p}),p.ɵinj=c.ɵɵdefineInjector({imports:[[i.RouterModule.forChild(d)],i.RouterModule]})},31960:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SubscriptionComponent=void 0;n(73828),n(30694);const r=n(32621),o=n(30694),a=n(73828),s=n(57490),l=n(68012),c=n(99729);function d(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",1),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",2),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"li",3),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"a",4),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"li",3),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"a",5),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"li",3),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"a",6),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(6),r.ɵɵproperty("routerLink",e.subscriptionRoute),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"subscription"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,6,"paymentMethod"),"\n "),r.ɵɵadvance(7),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,8,"billingHistory"),"\n ")}}class p{constructor(e,t){this.tokenService=e,this.platformUtilsService=t}ngOnInit(){return i(this,void 0,void 0,(function*(){this.hasPremium=yield this.tokenService.getPremium(),this.selfHosted=this.platformUtilsService.isSelfHost()}))}get subscriptionRoute(){return this.hasPremium?"user-subscription":"premium"}}t.SubscriptionComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.PlatformUtilsService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-subscription"]],decls:4,vars:1,consts:[["class","tabbed-nav d-flex flex-column",4,"ngIf"],[1,"tabbed-nav","d-flex","flex-column"],[1,"nav","nav-tabs"],[1,"nav-item"],["routerLinkActive","active",1,"nav-link",3,"routerLink"],["routerLink","payment-method","routerLinkActive","active",1,"nav-link"],["routerLink","billing-history","routerLinkActive","active",1,"nav-link"]],template:function(e,t){1&e&&(r.ɵɵtemplate(0,d,26,10,"div",0),r.ɵɵtext(1,"\n"),r.ɵɵelement(2,"router-outlet"),r.ɵɵtext(3,"\n")),2&e&&r.ɵɵproperty("ngIf",!t.selfHosted)},directives:[s.NgIf,l.RouterOutlet,l.RouterLinkWithHref,l.RouterLinkActive],pipes:[c.I18nPipe],encapsulation:2})},41799:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TaxInfoComponent=void 0;const r=n(32621),o=(n(68012),n(91674),n(36631),n(91260)),a=n(26374),s=n(32621),l=n(91674),c=n(68012),d=n(36631),p=n(96832),u=n(57490),m=n(99729);function h(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",1),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",261),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"input",262),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.includeTaxId=t})),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",263),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngModel",e.taxInfo.includeTaxId),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,2,"includeVAT"))}}function v(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",264),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",265),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.taxId=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,2,"taxIdNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.taxId)}}function f(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",266),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",267),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.line1=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",1),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",2),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",268),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"input",269),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.line2=t})),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",1),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",2),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",270),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",271),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.city=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",1),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"div",2),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"label",272),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"input",273),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().taxInfo.state=t})),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n"),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,8,"address1")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.line1),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(20,10,"address2")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.line2),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,12,"cityTown")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.city),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,14,"stateProvince")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.taxInfo.state)}}class g{constructor(e,t,n){this.apiService=e,this.route=t,this.logService=n,this.onCountryChanged=new r.EventEmitter,this.loading=!0,this.taxInfo={taxId:null,line1:null,line2:null,city:null,state:null,postalCode:null,country:"US",includeTaxId:!1},this.pristine={taxId:null,line1:null,line2:null,city:null,state:null,postalCode:null,country:"US",includeTaxId:!1}}ngOnInit(){return i(this,void 0,void 0,(function*(){this.route.parent.parent.params.subscribe((e=>i(this,void 0,void 0,(function*(){if(this.organizationId=e.organizationId,this.organizationId)try{const e=yield this.apiService.getOrganizationTaxInfo(this.organizationId);e&&(this.taxInfo.taxId=e.taxId,this.taxInfo.state=e.state,this.taxInfo.line1=e.line1,this.taxInfo.line2=e.line2,this.taxInfo.city=e.city,this.taxInfo.state=e.state,this.taxInfo.postalCode=e.postalCode,this.taxInfo.country=e.country||"US",this.taxInfo.includeTaxId=!("US"===this.taxInfo.country||!e.taxId&&!e.line1&&!e.line2&&!e.city&&!e.state))}catch(t){this.logService.error(t)}else try{const e=yield this.apiService.getTaxInfo();e&&(this.taxInfo.postalCode=e.postalCode,this.taxInfo.country=e.country||"US")}catch(t){this.logService.error(t)}this.pristine=Object.assign({},this.taxInfo),"US"!==this.taxInfo.country&&this.onCountryChanged.emit()}))));try{const e=yield this.apiService.getTaxRates();e&&(this.taxRates=e.data)}catch(e){this.logService.error(e)}finally{this.loading=!1}}))}get taxRate(){var e;if(null!=this.taxRates){const t=this.taxRates.find((e=>e.country===this.taxInfo.country&&e.postalCode===this.taxInfo.postalCode));return null!==(e=null==t?void 0:t.rate)&&void 0!==e?e:null}}getTaxInfoRequest(){if(this.organizationId){const e=new o.OrganizationTaxInfoUpdateRequest;return e.taxId=this.taxInfo.taxId,e.state=this.taxInfo.state,e.line1=this.taxInfo.line1,e.line2=this.taxInfo.line2,e.city=this.taxInfo.city,e.state=this.taxInfo.state,e.postalCode=this.taxInfo.postalCode,e.country=this.taxInfo.country,e}{const e=new a.TaxInfoUpdateRequest;return e.postalCode=this.taxInfo.postalCode,e.country=this.taxInfo.country,e}}submitTaxInfo(){if(!this.hasChanged())return new Promise((e=>{e()}));const e=this.getTaxInfoRequest();return this.organizationId?this.apiService.putOrganizationTaxInfo(this.organizationId,e):this.apiService.putTaxInfo(e)}changeCountry(){"US"===this.taxInfo.country&&(this.taxInfo.includeTaxId=!1,this.taxInfo.taxId=null,this.taxInfo.line1=null,this.taxInfo.line2=null,this.taxInfo.city=null,this.taxInfo.state=null),this.onCountryChanged.emit()}hasChanged(){for(const e in this.taxInfo)if(this.pristine.hasOwnProperty(e)&&this.pristine[e]!==this.taxInfo[e])return!0;return!1}}t.TaxInfoComponent=g,g.ɵfac=function(e){return new(e||g)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.ActivatedRoute),s.ɵɵdirectiveInject(d.LogService))},g.ɵcmp=s.ɵɵdefineComponent({type:g,selectors:[["app-tax-info"]],outputs:{onCountryChanged:"onCountryChanged"},decls:786,vars:12,consts:[[1,"row"],[1,"col-6"],[1,"form-group"],["for","addressCountry"],["id","addressCountry","required","","name","addressCountry","autocomplete","country",1,"form-control",3,"ngModel","ngModelChange","change"],["value",""],["value","US"],["value","CN"],["value","FR"],["value","DE"],["value","CA"],["value","GB"],["value","AU"],["value","IN"],["value","-","disabled",""],["value","AF"],["value","AX"],["value","AL"],["value","DZ"],["value","AS"],["value","AD"],["value","AO"],["value","AI"],["value","AQ"],["value","AG"],["value","AR"],["value","AM"],["value","AW"],["value","AT"],["value","AZ"],["value","BS"],["value","BH"],["value","BD"],["value","BB"],["value","BY"],["value","BE"],["value","BZ"],["value","BJ"],["value","BM"],["value","BT"],["value","BO"],["value","BQ"],["value","BA"],["value","BW"],["value","BV"],["value","BR"],["value","IO"],["value","BN"],["value","BG"],["value","BF"],["value","BI"],["value","KH"],["value","CM"],["value","CV"],["value","KY"],["value","CF"],["value","TD"],["value","CL"],["value","CX"],["value","CC"],["value","CO"],["value","KM"],["value","CG"],["value","CD"],["value","CK"],["value","CR"],["value","CI"],["value","HR"],["value","CU"],["value","CW"],["value","CY"],["value","CZ"],["value","DK"],["value","DJ"],["value","DM"],["value","DO"],["value","EC"],["value","EG"],["value","SV"],["value","GQ"],["value","ER"],["value","EE"],["value","ET"],["value","FK"],["value","FO"],["value","FJ"],["value","FI"],["value","GF"],["value","PF"],["value","TF"],["value","GA"],["value","GM"],["value","GE"],["value","GH"],["value","GI"],["value","GR"],["value","GL"],["value","GD"],["value","GP"],["value","GU"],["value","GT"],["value","GG"],["value","GN"],["value","GW"],["value","GY"],["value","HT"],["value","HM"],["value","VA"],["value","HN"],["value","HK"],["value","HU"],["value","IS"],["value","ID"],["value","IR"],["value","IQ"],["value","IE"],["value","IM"],["value","IL"],["value","IT"],["value","JM"],["value","JP"],["value","JE"],["value","JO"],["value","KZ"],["value","KE"],["value","KI"],["value","KP"],["value","KR"],["value","KW"],["value","KG"],["value","LA"],["value","LV"],["value","LB"],["value","LS"],["value","LR"],["value","LY"],["value","LI"],["value","LT"],["value","LU"],["value","MO"],["value","MK"],["value","MG"],["value","MW"],["value","MY"],["value","MV"],["value","ML"],["value","MT"],["value","MH"],["value","MQ"],["value","MR"],["value","MU"],["value","YT"],["value","MX"],["value","FM"],["value","MD"],["value","MC"],["value","MN"],["value","ME"],["value","MS"],["value","MA"],["value","MZ"],["value","MM"],["value","NA"],["value","NR"],["value","NP"],["value","NL"],["value","NC"],["value","NZ"],["value","NI"],["value","NE"],["value","NG"],["value","NU"],["value","NF"],["value","MP"],["value","NO"],["value","OM"],["value","PK"],["value","PW"],["value","PS"],["value","PA"],["value","PG"],["value","PY"],["value","PE"],["value","PH"],["value","PN"],["value","PL"],["value","PT"],["value","PR"],["value","QA"],["value","RE"],["value","RO"],["value","RU"],["value","RW"],["value","BL"],["value","SH"],["value","KN"],["value","LC"],["value","MF"],["value","PM"],["value","VC"],["value","WS"],["value","SM"],["value","ST"],["value","SA"],["value","SN"],["value","RS"],["value","SC"],["value","SL"],["value","SG"],["value","SX"],["value","SK"],["value","SI"],["value","SB"],["value","SO"],["value","ZA"],["value","GS"],["value","SS"],["value","ES"],["value","LK"],["value","SD"],["value","SR"],["value","SJ"],["value","SZ"],["value","SE"],["value","CH"],["value","SY"],["value","TW"],["value","TJ"],["value","TZ"],["value","TH"],["value","TL"],["value","TG"],["value","TK"],["value","TO"],["value","TT"],["value","TN"],["value","TR"],["value","TM"],["value","TC"],["value","TV"],["value","UG"],["value","UA"],["value","AE"],["value","UM"],["value","UY"],["value","UZ"],["value","VU"],["value","VE"],["value","VN"],["value","VG"],["value","VI"],["value","WF"],["value","EH"],["value","YE"],["value","ZM"],["value","ZW"],[1,"col-3"],["for","addressPostalCode"],["id","addressPostalCode","type","text","name","addressPostalCode","autocomplete","postal-code",1,"form-control",3,"ngModel","required","ngModelChange"],["class","col-6",4,"ngIf"],["class","row",4,"ngIf"],[1,"form-group","form-check"],["id","addressIncludeTaxId","name","addressIncludeTaxId","type","checkbox",1,"form-check-input",3,"ngModel","ngModelChange"],["for","addressIncludeTaxId",1,"form-check-label"],["for","taxId"],["id","taxId","type","text","name","taxId",1,"form-control",3,"ngModel","ngModelChange"],["for","addressLine1"],["id","addressLine1","type","text","name","addressLine1","autocomplete","address-line1",1,"form-control",3,"ngModel","ngModelChange"],["for","addressLine2"],["id","addressLine2","type","text","name","addressLine2","autocomplete","address-line2",1,"form-control",3,"ngModel","ngModelChange"],["for","addressCity"],["id","addressCity","type","text","name","addressCity","autocomplete","address-level2",1,"form-control",3,"ngModel","ngModelChange"],["for","addressState"],["id","addressState","type","text","name","addressState","autocomplete","address-level1",1,"form-control",3,"ngModel","ngModelChange"]],template:function(e,t){if(1&e){s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",3),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"select",4),s.ɵɵlistener("ngModelChange",(function(e){return t.taxInfo.country=e}))("change",(function(){return t.changeCountry()})),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"option",5),s.ɵɵtext(13,"-- Select --"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"option",6),s.ɵɵtext(16,"United States"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"option",7),s.ɵɵtext(19,"China"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"option",8),s.ɵɵtext(22,"France"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"option",9),s.ɵɵtext(25,"Germany"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"option",10),s.ɵɵtext(28,"Canada"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"option",11),s.ɵɵtext(31,"United Kingdom"),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"option",12),s.ɵɵtext(34,"Australia"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"option",13),s.ɵɵtext(37,"India"),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelement(39,"option",14),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"option",15),s.ɵɵtext(42,"Afghanistan"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementStart(44,"option",16),s.ɵɵtext(45,"Åland Islands"),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"option",17),s.ɵɵtext(48,"Albania"),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementStart(50,"option",18),s.ɵɵtext(51,"Algeria"),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"option",19),s.ɵɵtext(54,"American Samoa"),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementStart(56,"option",20),s.ɵɵtext(57,"Andorra"),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"option",21),s.ɵɵtext(60,"Angola"),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"option",22),s.ɵɵtext(63,"Anguilla"),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"option",23),s.ɵɵtext(66,"Antarctica"),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n "),s.ɵɵelementStart(68,"option",24),s.ɵɵtext(69,"Antigua and Barbuda"),s.ɵɵelementEnd(),s.ɵɵtext(70,"\n "),s.ɵɵelementStart(71,"option",25),s.ɵɵtext(72,"Argentina"),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"option",26),s.ɵɵtext(75,"Armenia"),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"option",27),s.ɵɵtext(78,"Aruba"),s.ɵɵelementEnd(),s.ɵɵtext(79,"\n "),s.ɵɵelementStart(80,"option",28),s.ɵɵtext(81,"Austria"),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementStart(83,"option",29),s.ɵɵtext(84,"Azerbaijan"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"option",30),s.ɵɵtext(87,"Bahamas"),s.ɵɵelementEnd(),s.ɵɵtext(88,"\n "),s.ɵɵelementStart(89,"option",31),s.ɵɵtext(90,"Bahrain"),s.ɵɵelementEnd(),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"option",32),s.ɵɵtext(93,"Bangladesh"),s.ɵɵelementEnd(),s.ɵɵtext(94,"\n "),s.ɵɵelementStart(95,"option",33),s.ɵɵtext(96,"Barbados"),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"option",34),s.ɵɵtext(99,"Belarus"),s.ɵɵelementEnd(),s.ɵɵtext(100,"\n "),s.ɵɵelementStart(101,"option",35),s.ɵɵtext(102,"Belgium"),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n "),s.ɵɵelementStart(104,"option",36),s.ɵɵtext(105,"Belize"),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementStart(107,"option",37),s.ɵɵtext(108,"Benin"),s.ɵɵelementEnd(),s.ɵɵtext(109,"\n "),s.ɵɵelementStart(110,"option",38),s.ɵɵtext(111,"Bermuda"),s.ɵɵelementEnd(),s.ɵɵtext(112,"\n "),s.ɵɵelementStart(113,"option",39),s.ɵɵtext(114,"Bhutan"),s.ɵɵelementEnd(),s.ɵɵtext(115,"\n "),s.ɵɵelementStart(116,"option",40),s.ɵɵtext(117,"Bolivia, Plurinational State of"),s.ɵɵelementEnd(),s.ɵɵtext(118,"\n "),s.ɵɵelementStart(119,"option",41),s.ɵɵtext(120,"Bonaire, Sint Eustatius and Saba"),s.ɵɵelementEnd(),s.ɵɵtext(121,"\n "),s.ɵɵelementStart(122,"option",42),s.ɵɵtext(123,"Bosnia and Herzegovina"),s.ɵɵelementEnd(),s.ɵɵtext(124,"\n "),s.ɵɵelementStart(125,"option",43),s.ɵɵtext(126,"Botswana"),s.ɵɵelementEnd(),s.ɵɵtext(127,"\n "),s.ɵɵelementStart(128,"option",44),s.ɵɵtext(129,"Bouvet Island"),s.ɵɵelementEnd(),s.ɵɵtext(130,"\n "),s.ɵɵelementStart(131,"option",45),s.ɵɵtext(132,"Brazil"),s.ɵɵelementEnd(),s.ɵɵtext(133,"\n "),s.ɵɵelementStart(134,"option",46),s.ɵɵtext(135,"British Indian Ocean Territory"),s.ɵɵelementEnd(),s.ɵɵtext(136,"\n "),s.ɵɵelementStart(137,"option",47),s.ɵɵtext(138,"Brunei Darussalam"),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementStart(140,"option",48),s.ɵɵtext(141,"Bulgaria"),s.ɵɵelementEnd(),s.ɵɵtext(142,"\n "),s.ɵɵelementStart(143,"option",49),s.ɵɵtext(144,"Burkina Faso"),s.ɵɵelementEnd(),s.ɵɵtext(145,"\n "),s.ɵɵelementStart(146,"option",50),s.ɵɵtext(147,"Burundi"),s.ɵɵelementEnd(),s.ɵɵtext(148,"\n "),s.ɵɵelementStart(149,"option",51),s.ɵɵtext(150,"Cambodia"),s.ɵɵelementEnd(),s.ɵɵtext(151,"\n "),s.ɵɵelementStart(152,"option",52),s.ɵɵtext(153,"Cameroon"),s.ɵɵelementEnd(),s.ɵɵtext(154,"\n "),s.ɵɵelementStart(155,"option",53),s.ɵɵtext(156,"Cape Verde"),s.ɵɵelementEnd(),s.ɵɵtext(157,"\n "),s.ɵɵelementStart(158,"option",54),s.ɵɵtext(159,"Cayman Islands"),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"option",55),s.ɵɵtext(162,"Central African Republic"),s.ɵɵelementEnd(),s.ɵɵtext(163,"\n "),s.ɵɵelementStart(164,"option",56),s.ɵɵtext(165,"Chad"),s.ɵɵelementEnd(),s.ɵɵtext(166,"\n "),s.ɵɵelementStart(167,"option",57),s.ɵɵtext(168,"Chile"),s.ɵɵelementEnd(),s.ɵɵtext(169,"\n "),s.ɵɵelementStart(170,"option",58),s.ɵɵtext(171,"Christmas Island"),s.ɵɵelementEnd(),s.ɵɵtext(172,"\n "),s.ɵɵelementStart(173,"option",59),s.ɵɵtext(174,"Cocos (Keeling) Islands"),s.ɵɵelementEnd(),s.ɵɵtext(175,"\n "),s.ɵɵelementStart(176,"option",60),s.ɵɵtext(177,"Colombia"),s.ɵɵelementEnd(),s.ɵɵtext(178,"\n "),s.ɵɵelementStart(179,"option",61),s.ɵɵtext(180,"Comoros"),s.ɵɵelementEnd(),s.ɵɵtext(181,"\n "),s.ɵɵelementStart(182,"option",62),s.ɵɵtext(183,"Congo"),s.ɵɵelementEnd(),s.ɵɵtext(184,"\n "),s.ɵɵelementStart(185,"option",63),s.ɵɵtext(186,"Congo, the Democratic Republic of the"),s.ɵɵelementEnd(),s.ɵɵtext(187,"\n "),s.ɵɵelementStart(188,"option",64),s.ɵɵtext(189,"Cook Islands"),s.ɵɵelementEnd(),s.ɵɵtext(190,"\n "),s.ɵɵelementStart(191,"option",65),s.ɵɵtext(192,"Costa Rica"),s.ɵɵelementEnd(),s.ɵɵtext(193,"\n "),s.ɵɵelementStart(194,"option",66),s.ɵɵtext(195,"Côte d'Ivoire"),s.ɵɵelementEnd(),s.ɵɵtext(196,"\n "),s.ɵɵelementStart(197,"option",67),s.ɵɵtext(198,"Croatia"),s.ɵɵelementEnd(),s.ɵɵtext(199,"\n "),s.ɵɵelementStart(200,"option",68),s.ɵɵtext(201,"Cuba"),s.ɵɵelementEnd(),s.ɵɵtext(202,"\n "),s.ɵɵelementStart(203,"option",69),s.ɵɵtext(204,"Curaçao"),s.ɵɵelementEnd(),s.ɵɵtext(205,"\n "),s.ɵɵelementStart(206,"option",70),s.ɵɵtext(207,"Cyprus"),s.ɵɵelementEnd(),s.ɵɵtext(208,"\n "),s.ɵɵelementStart(209,"option",71),s.ɵɵtext(210,"Czech Republic"),s.ɵɵelementEnd(),s.ɵɵtext(211,"\n "),s.ɵɵelementStart(212,"option",72),s.ɵɵtext(213,"Denmark"),s.ɵɵelementEnd(),s.ɵɵtext(214,"\n "),s.ɵɵelementStart(215,"option",73),s.ɵɵtext(216,"Djibouti"),s.ɵɵelementEnd(),s.ɵɵtext(217,"\n "),s.ɵɵelementStart(218,"option",74),s.ɵɵtext(219,"Dominica"),s.ɵɵelementEnd(),s.ɵɵtext(220,"\n "),s.ɵɵelementStart(221,"option",75),s.ɵɵtext(222,"Dominican Republic"),s.ɵɵelementEnd(),s.ɵɵtext(223,"\n "),s.ɵɵelementStart(224,"option",76),s.ɵɵtext(225,"Ecuador"),s.ɵɵelementEnd(),s.ɵɵtext(226,"\n "),s.ɵɵelementStart(227,"option",77),s.ɵɵtext(228,"Egypt"),s.ɵɵelementEnd(),s.ɵɵtext(229,"\n "),s.ɵɵelementStart(230,"option",78),s.ɵɵtext(231,"El Salvador"),s.ɵɵelementEnd(),s.ɵɵtext(232,"\n "),s.ɵɵelementStart(233,"option",79),s.ɵɵtext(234,"Equatorial Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(235,"\n "),s.ɵɵelementStart(236,"option",80),s.ɵɵtext(237,"Eritrea"),s.ɵɵelementEnd(),s.ɵɵtext(238,"\n "),s.ɵɵelementStart(239,"option",81),s.ɵɵtext(240,"Estonia"),s.ɵɵelementEnd(),s.ɵɵtext(241,"\n "),s.ɵɵelementStart(242,"option",82),s.ɵɵtext(243,"Ethiopia"),s.ɵɵelementEnd(),s.ɵɵtext(244,"\n "),s.ɵɵelementStart(245,"option",83),s.ɵɵtext(246,"Falkland Islands (Malvinas)"),s.ɵɵelementEnd(),s.ɵɵtext(247,"\n "),s.ɵɵelementStart(248,"option",84),s.ɵɵtext(249,"Faroe Islands"),s.ɵɵelementEnd(),s.ɵɵtext(250,"\n "),s.ɵɵelementStart(251,"option",85),s.ɵɵtext(252,"Fiji"),s.ɵɵelementEnd(),s.ɵɵtext(253,"\n "),s.ɵɵelementStart(254,"option",86),s.ɵɵtext(255,"Finland"),s.ɵɵelementEnd(),s.ɵɵtext(256,"\n "),s.ɵɵelementStart(257,"option",87),s.ɵɵtext(258,"French Guiana"),s.ɵɵelementEnd(),s.ɵɵtext(259,"\n "),s.ɵɵelementStart(260,"option",88),s.ɵɵtext(261,"French Polynesia"),s.ɵɵelementEnd(),s.ɵɵtext(262,"\n "),s.ɵɵelementStart(263,"option",89),s.ɵɵtext(264,"French Southern Territories"),s.ɵɵelementEnd(),s.ɵɵtext(265,"\n "),s.ɵɵelementStart(266,"option",90),s.ɵɵtext(267,"Gabon"),s.ɵɵelementEnd(),s.ɵɵtext(268,"\n "),s.ɵɵelementStart(269,"option",91),s.ɵɵtext(270,"Gambia"),s.ɵɵelementEnd(),s.ɵɵtext(271,"\n "),s.ɵɵelementStart(272,"option",92),s.ɵɵtext(273,"Georgia"),s.ɵɵelementEnd(),s.ɵɵtext(274,"\n "),s.ɵɵelementStart(275,"option",93),s.ɵɵtext(276,"Ghana"),s.ɵɵelementEnd(),s.ɵɵtext(277,"\n "),s.ɵɵelementStart(278,"option",94),s.ɵɵtext(279,"Gibraltar"),s.ɵɵelementEnd(),s.ɵɵtext(280,"\n "),s.ɵɵelementStart(281,"option",95),s.ɵɵtext(282,"Greece"),s.ɵɵelementEnd(),s.ɵɵtext(283,"\n "),s.ɵɵelementStart(284,"option",96),s.ɵɵtext(285,"Greenland"),s.ɵɵelementEnd(),s.ɵɵtext(286,"\n "),s.ɵɵelementStart(287,"option",97),s.ɵɵtext(288,"Grenada"),s.ɵɵelementEnd(),s.ɵɵtext(289,"\n "),s.ɵɵelementStart(290,"option",98),s.ɵɵtext(291,"Guadeloupe"),s.ɵɵelementEnd(),s.ɵɵtext(292,"\n "),s.ɵɵelementStart(293,"option",99),s.ɵɵtext(294,"Guam"),s.ɵɵelementEnd(),s.ɵɵtext(295,"\n "),s.ɵɵelementStart(296,"option",100),s.ɵɵtext(297,"Guatemala"),s.ɵɵelementEnd(),s.ɵɵtext(298,"\n "),s.ɵɵelementStart(299,"option",101),s.ɵɵtext(300,"Guernsey"),s.ɵɵelementEnd(),s.ɵɵtext(301,"\n "),s.ɵɵelementStart(302,"option",102),s.ɵɵtext(303,"Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(304,"\n "),s.ɵɵelementStart(305,"option",103),s.ɵɵtext(306,"Guinea-Bissau"),s.ɵɵelementEnd(),s.ɵɵtext(307,"\n "),s.ɵɵelementStart(308,"option",104),s.ɵɵtext(309,"Guyana"),s.ɵɵelementEnd(),s.ɵɵtext(310,"\n "),s.ɵɵelementStart(311,"option",105),s.ɵɵtext(312,"Haiti"),s.ɵɵelementEnd(),s.ɵɵtext(313,"\n "),s.ɵɵelementStart(314,"option",106),s.ɵɵtext(315,"Heard Island and McDonald Islands"),s.ɵɵelementEnd(),s.ɵɵtext(316,"\n "),s.ɵɵelementStart(317,"option",107),s.ɵɵtext(318,"Holy See (Vatican City State)"),s.ɵɵelementEnd(),s.ɵɵtext(319,"\n "),s.ɵɵelementStart(320,"option",108),s.ɵɵtext(321,"Honduras"),s.ɵɵelementEnd(),s.ɵɵtext(322,"\n "),s.ɵɵelementStart(323,"option",109),s.ɵɵtext(324,"Hong Kong"),s.ɵɵelementEnd(),s.ɵɵtext(325,"\n "),s.ɵɵelementStart(326,"option",110),s.ɵɵtext(327,"Hungary"),s.ɵɵelementEnd(),s.ɵɵtext(328,"\n "),s.ɵɵelementStart(329,"option",111),s.ɵɵtext(330,"Iceland"),s.ɵɵelementEnd(),s.ɵɵtext(331,"\n "),s.ɵɵelementStart(332,"option",112),s.ɵɵtext(333,"Indonesia"),s.ɵɵelementEnd(),s.ɵɵtext(334,"\n "),s.ɵɵelementStart(335,"option",113),s.ɵɵtext(336,"Iran, Islamic Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(337,"\n "),s.ɵɵelementStart(338,"option",114),s.ɵɵtext(339,"Iraq"),s.ɵɵelementEnd(),s.ɵɵtext(340,"\n "),s.ɵɵelementStart(341,"option",115),s.ɵɵtext(342,"Ireland"),s.ɵɵelementEnd(),s.ɵɵtext(343,"\n "),s.ɵɵelementStart(344,"option",116),s.ɵɵtext(345,"Isle of Man"),s.ɵɵelementEnd(),s.ɵɵtext(346,"\n "),s.ɵɵelementStart(347,"option",117),s.ɵɵtext(348,"Israel"),s.ɵɵelementEnd(),s.ɵɵtext(349,"\n "),s.ɵɵelementStart(350,"option",118),s.ɵɵtext(351,"Italy"),s.ɵɵelementEnd(),s.ɵɵtext(352,"\n "),s.ɵɵelementStart(353,"option",119),s.ɵɵtext(354,"Jamaica"),s.ɵɵelementEnd(),s.ɵɵtext(355,"\n "),s.ɵɵelementStart(356,"option",120),s.ɵɵtext(357,"Japan"),s.ɵɵelementEnd(),s.ɵɵtext(358,"\n "),s.ɵɵelementStart(359,"option",121),s.ɵɵtext(360,"Jersey"),s.ɵɵelementEnd(),s.ɵɵtext(361,"\n "),s.ɵɵelementStart(362,"option",122),s.ɵɵtext(363,"Jordan"),s.ɵɵelementEnd(),s.ɵɵtext(364,"\n "),s.ɵɵelementStart(365,"option",123),s.ɵɵtext(366,"Kazakhstan"),s.ɵɵelementEnd(),s.ɵɵtext(367,"\n "),s.ɵɵelementStart(368,"option",124),s.ɵɵtext(369,"Kenya"),s.ɵɵelementEnd(),s.ɵɵtext(370,"\n "),s.ɵɵelementStart(371,"option",125),s.ɵɵtext(372,"Kiribati"),s.ɵɵelementEnd(),s.ɵɵtext(373,"\n "),s.ɵɵelementStart(374,"option",126),s.ɵɵtext(375,"Korea, Democratic People's Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(376,"\n "),s.ɵɵelementStart(377,"option",127),s.ɵɵtext(378,"Korea, Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(379,"\n "),s.ɵɵelementStart(380,"option",128),s.ɵɵtext(381,"Kuwait"),s.ɵɵelementEnd(),s.ɵɵtext(382,"\n "),s.ɵɵelementStart(383,"option",129),s.ɵɵtext(384,"Kyrgyzstan"),s.ɵɵelementEnd(),s.ɵɵtext(385,"\n "),s.ɵɵelementStart(386,"option",130),s.ɵɵtext(387,"Lao People's Democratic Republic"),s.ɵɵelementEnd(),s.ɵɵtext(388,"\n "),s.ɵɵelementStart(389,"option",131),s.ɵɵtext(390,"Latvia"),s.ɵɵelementEnd(),s.ɵɵtext(391,"\n "),s.ɵɵelementStart(392,"option",132),s.ɵɵtext(393,"Lebanon"),s.ɵɵelementEnd(),s.ɵɵtext(394,"\n "),s.ɵɵelementStart(395,"option",133),s.ɵɵtext(396,"Lesotho"),s.ɵɵelementEnd(),s.ɵɵtext(397,"\n "),s.ɵɵelementStart(398,"option",134),s.ɵɵtext(399,"Liberia"),s.ɵɵelementEnd(),s.ɵɵtext(400,"\n "),s.ɵɵelementStart(401,"option",135),s.ɵɵtext(402,"Libya"),s.ɵɵelementEnd(),s.ɵɵtext(403,"\n "),s.ɵɵelementStart(404,"option",136),s.ɵɵtext(405,"Liechtenstein"),s.ɵɵelementEnd(),s.ɵɵtext(406,"\n "),s.ɵɵelementStart(407,"option",137),s.ɵɵtext(408,"Lithuania"),s.ɵɵelementEnd(),s.ɵɵtext(409,"\n "),s.ɵɵelementStart(410,"option",138),s.ɵɵtext(411,"Luxembourg"),s.ɵɵelementEnd(),s.ɵɵtext(412,"\n "),s.ɵɵelementStart(413,"option",139),s.ɵɵtext(414,"Macao"),s.ɵɵelementEnd(),s.ɵɵtext(415,"\n "),s.ɵɵelementStart(416,"option",140),s.ɵɵtext(417,"Macedonia, the former Yugoslav Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(418,"\n "),s.ɵɵelementStart(419,"option",141),s.ɵɵtext(420,"Madagascar"),s.ɵɵelementEnd(),s.ɵɵtext(421,"\n "),s.ɵɵelementStart(422,"option",142),s.ɵɵtext(423,"Malawi"),s.ɵɵelementEnd(),s.ɵɵtext(424,"\n "),s.ɵɵelementStart(425,"option",143),s.ɵɵtext(426,"Malaysia"),s.ɵɵelementEnd(),s.ɵɵtext(427,"\n "),s.ɵɵelementStart(428,"option",144),s.ɵɵtext(429,"Maldives"),s.ɵɵelementEnd(),s.ɵɵtext(430,"\n "),s.ɵɵelementStart(431,"option",145),s.ɵɵtext(432,"Mali"),s.ɵɵelementEnd(),s.ɵɵtext(433,"\n "),s.ɵɵelementStart(434,"option",146),s.ɵɵtext(435,"Malta"),s.ɵɵelementEnd(),s.ɵɵtext(436,"\n "),s.ɵɵelementStart(437,"option",147),s.ɵɵtext(438,"Marshall Islands"),s.ɵɵelementEnd(),s.ɵɵtext(439,"\n "),s.ɵɵelementStart(440,"option",148),s.ɵɵtext(441,"Martinique"),s.ɵɵelementEnd(),s.ɵɵtext(442,"\n "),s.ɵɵelementStart(443,"option",149),s.ɵɵtext(444,"Mauritania"),s.ɵɵelementEnd(),s.ɵɵtext(445,"\n "),s.ɵɵelementStart(446,"option",150),s.ɵɵtext(447,"Mauritius"),s.ɵɵelementEnd(),s.ɵɵtext(448,"\n "),s.ɵɵelementStart(449,"option",151),s.ɵɵtext(450,"Mayotte"),s.ɵɵelementEnd(),s.ɵɵtext(451,"\n "),s.ɵɵelementStart(452,"option",152),s.ɵɵtext(453,"Mexico"),s.ɵɵelementEnd(),s.ɵɵtext(454,"\n "),s.ɵɵelementStart(455,"option",153),s.ɵɵtext(456,"Micronesia, Federated States of"),s.ɵɵelementEnd(),s.ɵɵtext(457,"\n "),s.ɵɵelementStart(458,"option",154),s.ɵɵtext(459,"Moldova, Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(460,"\n "),s.ɵɵelementStart(461,"option",155),s.ɵɵtext(462,"Monaco"),s.ɵɵelementEnd(),s.ɵɵtext(463,"\n "),s.ɵɵelementStart(464,"option",156),s.ɵɵtext(465,"Mongolia"),s.ɵɵelementEnd(),s.ɵɵtext(466,"\n "),s.ɵɵelementStart(467,"option",157),s.ɵɵtext(468,"Montenegro"),s.ɵɵelementEnd(),s.ɵɵtext(469,"\n "),s.ɵɵelementStart(470,"option",158),s.ɵɵtext(471,"Montserrat"),s.ɵɵelementEnd(),s.ɵɵtext(472,"\n "),s.ɵɵelementStart(473,"option",159),s.ɵɵtext(474,"Morocco"),s.ɵɵelementEnd(),s.ɵɵtext(475,"\n "),s.ɵɵelementStart(476,"option",160),s.ɵɵtext(477,"Mozambique"),s.ɵɵelementEnd(),s.ɵɵtext(478,"\n "),s.ɵɵelementStart(479,"option",161),s.ɵɵtext(480,"Myanmar"),s.ɵɵelementEnd(),s.ɵɵtext(481,"\n "),s.ɵɵelementStart(482,"option",162),s.ɵɵtext(483,"Namibia"),s.ɵɵelementEnd(),s.ɵɵtext(484,"\n "),s.ɵɵelementStart(485,"option",163),s.ɵɵtext(486,"Nauru"),s.ɵɵelementEnd(),s.ɵɵtext(487,"\n "),s.ɵɵelementStart(488,"option",164),s.ɵɵtext(489,"Nepal"),s.ɵɵelementEnd(),s.ɵɵtext(490,"\n "),s.ɵɵelementStart(491,"option",165),s.ɵɵtext(492,"Netherlands"),s.ɵɵelementEnd(),s.ɵɵtext(493,"\n "),s.ɵɵelementStart(494,"option",166),s.ɵɵtext(495,"New Caledonia"),s.ɵɵelementEnd(),s.ɵɵtext(496,"\n "),s.ɵɵelementStart(497,"option",167),s.ɵɵtext(498,"New Zealand"),s.ɵɵelementEnd(),s.ɵɵtext(499,"\n "),s.ɵɵelementStart(500,"option",168),s.ɵɵtext(501,"Nicaragua"),s.ɵɵelementEnd(),s.ɵɵtext(502,"\n "),s.ɵɵelementStart(503,"option",169),s.ɵɵtext(504,"Niger"),s.ɵɵelementEnd(),s.ɵɵtext(505,"\n "),s.ɵɵelementStart(506,"option",170),s.ɵɵtext(507,"Nigeria"),s.ɵɵelementEnd(),s.ɵɵtext(508,"\n "),s.ɵɵelementStart(509,"option",171),s.ɵɵtext(510,"Niue"),s.ɵɵelementEnd(),s.ɵɵtext(511,"\n "),s.ɵɵelementStart(512,"option",172),s.ɵɵtext(513,"Norfolk Island"),s.ɵɵelementEnd(),s.ɵɵtext(514,"\n "),s.ɵɵelementStart(515,"option",173),s.ɵɵtext(516,"Northern Mariana Islands"),s.ɵɵelementEnd(),s.ɵɵtext(517,"\n "),s.ɵɵelementStart(518,"option",174),s.ɵɵtext(519,"Norway"),s.ɵɵelementEnd(),s.ɵɵtext(520,"\n "),s.ɵɵelementStart(521,"option",175),s.ɵɵtext(522,"Oman"),s.ɵɵelementEnd(),s.ɵɵtext(523,"\n "),s.ɵɵelementStart(524,"option",176),s.ɵɵtext(525,"Pakistan"),s.ɵɵelementEnd(),s.ɵɵtext(526,"\n "),s.ɵɵelementStart(527,"option",177),s.ɵɵtext(528,"Palau"),s.ɵɵelementEnd(),s.ɵɵtext(529,"\n "),s.ɵɵelementStart(530,"option",178),s.ɵɵtext(531,"Palestinian Territory, Occupied"),s.ɵɵelementEnd(),s.ɵɵtext(532,"\n "),s.ɵɵelementStart(533,"option",179),s.ɵɵtext(534,"Panama"),s.ɵɵelementEnd(),s.ɵɵtext(535,"\n "),s.ɵɵelementStart(536,"option",180),s.ɵɵtext(537,"Papua New Guinea"),s.ɵɵelementEnd(),s.ɵɵtext(538,"\n "),s.ɵɵelementStart(539,"option",181),s.ɵɵtext(540,"Paraguay"),s.ɵɵelementEnd(),s.ɵɵtext(541,"\n "),s.ɵɵelementStart(542,"option",182),s.ɵɵtext(543,"Peru"),s.ɵɵelementEnd(),s.ɵɵtext(544,"\n "),s.ɵɵelementStart(545,"option",183),s.ɵɵtext(546,"Philippines"),s.ɵɵelementEnd(),s.ɵɵtext(547,"\n "),s.ɵɵelementStart(548,"option",184),s.ɵɵtext(549,"Pitcairn"),s.ɵɵelementEnd(),s.ɵɵtext(550,"\n "),s.ɵɵelementStart(551,"option",185),s.ɵɵtext(552,"Poland"),s.ɵɵelementEnd(),s.ɵɵtext(553,"\n "),s.ɵɵelementStart(554,"option",186),s.ɵɵtext(555,"Portugal"),s.ɵɵelementEnd(),s.ɵɵtext(556,"\n "),s.ɵɵelementStart(557,"option",187),s.ɵɵtext(558,"Puerto Rico"),s.ɵɵelementEnd(),s.ɵɵtext(559,"\n "),s.ɵɵelementStart(560,"option",188),s.ɵɵtext(561,"Qatar"),s.ɵɵelementEnd(),s.ɵɵtext(562,"\n "),s.ɵɵelementStart(563,"option",189),s.ɵɵtext(564,"Réunion"),s.ɵɵelementEnd(),s.ɵɵtext(565,"\n "),s.ɵɵelementStart(566,"option",190),s.ɵɵtext(567,"Romania"),s.ɵɵelementEnd(),s.ɵɵtext(568,"\n "),s.ɵɵelementStart(569,"option",191),s.ɵɵtext(570,"Russian Federation"),s.ɵɵelementEnd(),s.ɵɵtext(571,"\n "),s.ɵɵelementStart(572,"option",192),s.ɵɵtext(573,"Rwanda"),s.ɵɵelementEnd(),s.ɵɵtext(574,"\n "),s.ɵɵelementStart(575,"option",193),s.ɵɵtext(576,"Saint Barthélemy"),s.ɵɵelementEnd(),s.ɵɵtext(577,"\n "),s.ɵɵelementStart(578,"option",194),s.ɵɵtext(579,"Saint Helena, Ascension and Tristan da Cunha"),s.ɵɵelementEnd(),s.ɵɵtext(580,"\n "),s.ɵɵelementStart(581,"option",195),s.ɵɵtext(582,"Saint Kitts and Nevis"),s.ɵɵelementEnd(),s.ɵɵtext(583,"\n "),s.ɵɵelementStart(584,"option",196),s.ɵɵtext(585,"Saint Lucia"),s.ɵɵelementEnd(),s.ɵɵtext(586,"\n "),s.ɵɵelementStart(587,"option",197),s.ɵɵtext(588,"Saint Martin (French part)"),s.ɵɵelementEnd(),s.ɵɵtext(589,"\n "),s.ɵɵelementStart(590,"option",198),s.ɵɵtext(591,"Saint Pierre and Miquelon"),s.ɵɵelementEnd(),s.ɵɵtext(592,"\n "),s.ɵɵelementStart(593,"option",199),s.ɵɵtext(594,"Saint Vincent and the Grenadines"),s.ɵɵelementEnd(),s.ɵɵtext(595,"\n "),s.ɵɵelementStart(596,"option",200),s.ɵɵtext(597,"Samoa"),s.ɵɵelementEnd(),s.ɵɵtext(598,"\n "),s.ɵɵelementStart(599,"option",201),s.ɵɵtext(600,"San Marino"),s.ɵɵelementEnd(),s.ɵɵtext(601,"\n ");s.ɵɵelementStart(602,"option",202),s.ɵɵtext(603,"Sao Tome and Principe"),s.ɵɵelementEnd(),s.ɵɵtext(604,"\n "),s.ɵɵelementStart(605,"option",203),s.ɵɵtext(606,"Saudi Arabia"),s.ɵɵelementEnd(),s.ɵɵtext(607,"\n "),s.ɵɵelementStart(608,"option",204),s.ɵɵtext(609,"Senegal"),s.ɵɵelementEnd(),s.ɵɵtext(610,"\n "),s.ɵɵelementStart(611,"option",205),s.ɵɵtext(612,"Serbia"),s.ɵɵelementEnd(),s.ɵɵtext(613,"\n "),s.ɵɵelementStart(614,"option",206),s.ɵɵtext(615,"Seychelles"),s.ɵɵelementEnd(),s.ɵɵtext(616,"\n "),s.ɵɵelementStart(617,"option",207),s.ɵɵtext(618,"Sierra Leone"),s.ɵɵelementEnd(),s.ɵɵtext(619,"\n "),s.ɵɵelementStart(620,"option",208),s.ɵɵtext(621,"Singapore"),s.ɵɵelementEnd(),s.ɵɵtext(622,"\n "),s.ɵɵelementStart(623,"option",209),s.ɵɵtext(624,"Sint Maarten (Dutch part)"),s.ɵɵelementEnd(),s.ɵɵtext(625,"\n "),s.ɵɵelementStart(626,"option",210),s.ɵɵtext(627,"Slovakia"),s.ɵɵelementEnd(),s.ɵɵtext(628,"\n "),s.ɵɵelementStart(629,"option",211),s.ɵɵtext(630,"Slovenia"),s.ɵɵelementEnd(),s.ɵɵtext(631,"\n "),s.ɵɵelementStart(632,"option",212),s.ɵɵtext(633,"Solomon Islands"),s.ɵɵelementEnd(),s.ɵɵtext(634,"\n "),s.ɵɵelementStart(635,"option",213),s.ɵɵtext(636,"Somalia"),s.ɵɵelementEnd(),s.ɵɵtext(637,"\n "),s.ɵɵelementStart(638,"option",214),s.ɵɵtext(639,"South Africa"),s.ɵɵelementEnd(),s.ɵɵtext(640,"\n "),s.ɵɵelementStart(641,"option",215),s.ɵɵtext(642,"South Georgia and the South Sandwich Islands"),s.ɵɵelementEnd(),s.ɵɵtext(643,"\n "),s.ɵɵelementStart(644,"option",216),s.ɵɵtext(645,"South Sudan"),s.ɵɵelementEnd(),s.ɵɵtext(646,"\n "),s.ɵɵelementStart(647,"option",217),s.ɵɵtext(648,"Spain"),s.ɵɵelementEnd(),s.ɵɵtext(649,"\n "),s.ɵɵelementStart(650,"option",218),s.ɵɵtext(651,"Sri Lanka"),s.ɵɵelementEnd(),s.ɵɵtext(652,"\n "),s.ɵɵelementStart(653,"option",219),s.ɵɵtext(654,"Sudan"),s.ɵɵelementEnd(),s.ɵɵtext(655,"\n "),s.ɵɵelementStart(656,"option",220),s.ɵɵtext(657,"Suriname"),s.ɵɵelementEnd(),s.ɵɵtext(658,"\n "),s.ɵɵelementStart(659,"option",221),s.ɵɵtext(660,"Svalbard and Jan Mayen"),s.ɵɵelementEnd(),s.ɵɵtext(661,"\n "),s.ɵɵelementStart(662,"option",222),s.ɵɵtext(663,"Swaziland"),s.ɵɵelementEnd(),s.ɵɵtext(664,"\n "),s.ɵɵelementStart(665,"option",223),s.ɵɵtext(666,"Sweden"),s.ɵɵelementEnd(),s.ɵɵtext(667,"\n "),s.ɵɵelementStart(668,"option",224),s.ɵɵtext(669,"Switzerland"),s.ɵɵelementEnd(),s.ɵɵtext(670,"\n "),s.ɵɵelementStart(671,"option",225),s.ɵɵtext(672,"Syrian Arab Republic"),s.ɵɵelementEnd(),s.ɵɵtext(673,"\n "),s.ɵɵelementStart(674,"option",226),s.ɵɵtext(675,"Taiwan"),s.ɵɵelementEnd(),s.ɵɵtext(676,"\n "),s.ɵɵelementStart(677,"option",227),s.ɵɵtext(678,"Tajikistan"),s.ɵɵelementEnd(),s.ɵɵtext(679,"\n "),s.ɵɵelementStart(680,"option",228),s.ɵɵtext(681,"Tanzania, United Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(682,"\n "),s.ɵɵelementStart(683,"option",229),s.ɵɵtext(684,"Thailand"),s.ɵɵelementEnd(),s.ɵɵtext(685,"\n "),s.ɵɵelementStart(686,"option",230),s.ɵɵtext(687,"Timor-Leste"),s.ɵɵelementEnd(),s.ɵɵtext(688,"\n "),s.ɵɵelementStart(689,"option",231),s.ɵɵtext(690,"Togo"),s.ɵɵelementEnd(),s.ɵɵtext(691,"\n "),s.ɵɵelementStart(692,"option",232),s.ɵɵtext(693,"Tokelau"),s.ɵɵelementEnd(),s.ɵɵtext(694,"\n "),s.ɵɵelementStart(695,"option",233),s.ɵɵtext(696,"Tonga"),s.ɵɵelementEnd(),s.ɵɵtext(697,"\n "),s.ɵɵelementStart(698,"option",234),s.ɵɵtext(699,"Trinidad and Tobago"),s.ɵɵelementEnd(),s.ɵɵtext(700,"\n "),s.ɵɵelementStart(701,"option",235),s.ɵɵtext(702,"Tunisia"),s.ɵɵelementEnd(),s.ɵɵtext(703,"\n "),s.ɵɵelementStart(704,"option",236),s.ɵɵtext(705,"Turkey"),s.ɵɵelementEnd(),s.ɵɵtext(706,"\n "),s.ɵɵelementStart(707,"option",237),s.ɵɵtext(708,"Turkmenistan"),s.ɵɵelementEnd(),s.ɵɵtext(709,"\n "),s.ɵɵelementStart(710,"option",238),s.ɵɵtext(711,"Turks and Caicos Islands"),s.ɵɵelementEnd(),s.ɵɵtext(712,"\n "),s.ɵɵelementStart(713,"option",239),s.ɵɵtext(714,"Tuvalu"),s.ɵɵelementEnd(),s.ɵɵtext(715,"\n "),s.ɵɵelementStart(716,"option",240),s.ɵɵtext(717,"Uganda"),s.ɵɵelementEnd(),s.ɵɵtext(718,"\n "),s.ɵɵelementStart(719,"option",241),s.ɵɵtext(720,"Ukraine"),s.ɵɵelementEnd(),s.ɵɵtext(721,"\n "),s.ɵɵelementStart(722,"option",242),s.ɵɵtext(723,"United Arab Emirates"),s.ɵɵelementEnd(),s.ɵɵtext(724,"\n "),s.ɵɵelementStart(725,"option",243),s.ɵɵtext(726,"United States Minor Outlying Islands"),s.ɵɵelementEnd(),s.ɵɵtext(727,"\n "),s.ɵɵelementStart(728,"option",244),s.ɵɵtext(729,"Uruguay"),s.ɵɵelementEnd(),s.ɵɵtext(730,"\n "),s.ɵɵelementStart(731,"option",245),s.ɵɵtext(732,"Uzbekistan"),s.ɵɵelementEnd(),s.ɵɵtext(733,"\n "),s.ɵɵelementStart(734,"option",246),s.ɵɵtext(735,"Vanuatu"),s.ɵɵelementEnd(),s.ɵɵtext(736,"\n "),s.ɵɵelementStart(737,"option",247),s.ɵɵtext(738,"Venezuela, Bolivarian Republic of"),s.ɵɵelementEnd(),s.ɵɵtext(739,"\n "),s.ɵɵelementStart(740,"option",248),s.ɵɵtext(741,"Viet Nam"),s.ɵɵelementEnd(),s.ɵɵtext(742,"\n "),s.ɵɵelementStart(743,"option",249),s.ɵɵtext(744,"Virgin Islands, British"),s.ɵɵelementEnd(),s.ɵɵtext(745,"\n "),s.ɵɵelementStart(746,"option",250),s.ɵɵtext(747,"Virgin Islands, U.S."),s.ɵɵelementEnd(),s.ɵɵtext(748,"\n "),s.ɵɵelementStart(749,"option",251),s.ɵɵtext(750,"Wallis and Futuna"),s.ɵɵelementEnd(),s.ɵɵtext(751,"\n "),s.ɵɵelementStart(752,"option",252),s.ɵɵtext(753,"Western Sahara"),s.ɵɵelementEnd(),s.ɵɵtext(754,"\n "),s.ɵɵelementStart(755,"option",253),s.ɵɵtext(756,"Yemen"),s.ɵɵelementEnd(),s.ɵɵtext(757,"\n "),s.ɵɵelementStart(758,"option",254),s.ɵɵtext(759,"Zambia"),s.ɵɵelementEnd(),s.ɵɵtext(760,"\n "),s.ɵɵelementStart(761,"option",255),s.ɵɵtext(762,"Zimbabwe"),s.ɵɵelementEnd(),s.ɵɵtext(763,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(764,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(765,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(766,"\n "),s.ɵɵelementStart(767,"div",256),s.ɵɵtext(768,"\n "),s.ɵɵelementStart(769,"div",2),s.ɵɵtext(770,"\n "),s.ɵɵelementStart(771,"label",257),s.ɵɵtext(772),s.ɵɵpipe(773,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(774,"\n "),s.ɵɵelementStart(775,"input",258),s.ɵɵlistener("ngModelChange",(function(e){return t.taxInfo.postalCode=e})),s.ɵɵelementEnd(),s.ɵɵtext(776,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(777,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(778,"\n "),s.ɵɵtemplate(779,h,11,4,"div",259),s.ɵɵtext(780,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(781,"\n"),s.ɵɵtemplate(782,v,14,4,"div",260),s.ɵɵtext(783,"\n"),s.ɵɵtemplate(784,f,50,16,"div",260),s.ɵɵtext(785,"\n")}2&e&&(s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,8,"country")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.taxInfo.country),s.ɵɵadvance(762),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(773,10,"zipPostalCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.taxInfo.postalCode)("required","US"===t.taxInfo.country),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.organizationId&&"US"!==t.taxInfo.country),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.organizationId&&t.taxInfo.includeTaxId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.organizationId&&t.taxInfo.includeTaxId))},directives:[p.SelectControlValueAccessor,p.RequiredValidator,p.NgControlStatus,p.NgModel,p.NgSelectOption,p.ɵNgSelectMultipleOption,p.DefaultValueAccessor,u.NgIf,p.CheckboxControlValueAccessor],pipes:[m.I18nPipe],encapsulation:2})},59751:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorAuthenticatorComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(73569),n(57055);const r=n(97374),o=n(57952),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(57055),p=n(73828),u=n(36631),m=n(73569),h=n(8863),v=n(57490),f=n(12720),g=n(96832),y=n(56820),x=n(51626),S=n(48198),b=n(99729);function w(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",28),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"p"),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"strong"),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"twoStepAuthenticatorDesc")),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("1. ",s.ɵɵpipeBind1(12,4,"twoStepAuthenticatorDownloadApp"),""))}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",29),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"p"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8),s.ɵɵpipe(9,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"img",28),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"p"),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()),2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,4,"enabled")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,6,"twoStepLoginProviderEnabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(9,8,"twoStepAuthenticatorReaddDesc"),"\n "),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,10,"twoStepAuthenticatorNeedApp")))}function E(e,t){1&e&&(s.ɵɵelementStart(0,"p"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"strong"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1("2. ",s.ɵɵpipeBind1(4,1,"twoStepAuthenticatorScanCode"),""))}function P(e,t){1&e&&s.ɵɵelement(0,"hr")}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",30),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"input",31),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).token=t})),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("3. ",s.ɵɵpipeBind1(4,2,"twoStepAuthenticatorEnterCode"),""),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.token)}}function k(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enable")))}function A(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"disable")))}const T=function(e){return{"mb-0":e}};function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,C,15,6,"ng-container",13),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,I,17,12,"ng-container",13),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"ul",14),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"li"),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"i",15),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementStart(16,"a",16),s.ɵɵtext(17,"Authy"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"li"),s.ɵɵtext(21,"\n "),s.ɵɵelement(22,"i",17),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementStart(25,"a",18),s.ɵɵtext(26,"Authy"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"li"),s.ɵɵtext(30,"\n "),s.ɵɵelement(31,"i",19),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementStart(34,"a",20),s.ɵɵtext(35,"Microsoft Authenticator"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"p"),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵtemplate(43,E,6,3,"p",13),s.ɵɵtext(44,"\n "),s.ɵɵtemplate(45,P,1,0,"hr",13),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"p",21),s.ɵɵtext(48,"\n "),s.ɵɵelement(49,"canvas",22),s.ɵɵelement(50,"br"),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"code",23),s.ɵɵpipe(53,"i18n"),s.ɵɵtext(54),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵtemplate(57,O,8,4,"ng-container",13),s.ɵɵtext(58,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"div",24),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"button",25),s.ɵɵtext(63,"\n "),s.ɵɵelement(64,"i",26),s.ɵɵpipe(65,"i18n"),s.ɵɵtext(66,"\n "),s.ɵɵtemplate(67,k,3,3,"span",13),s.ɵɵtext(68,"\n "),s.ɵɵtemplate(69,A,3,3,"span",13),s.ɵɵtext(70,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(71,"\n "),s.ɵɵelementStart(72,"button",27),s.ɵɵtext(73),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(15,18,"iosDevices"),":\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(24,20,"androidDevices"),":\n "),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(33,22,"windowsDevices"),":\n "),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,24,"twoStepAuthenticatorAppsRecommended")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(32,T,t.enabled)),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(53,26,"key")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(t.key),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(65,28,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(74,30,"close"),"\n ")}}class B extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,i,o,n),this.stateService=a,this.type=r.TwoFactorProviderType.Authenticator,this.qrScript=window.document.createElement("script"),this.qrScript.src="scripts/qrious.min.js",this.qrScript.async=!0}ngOnInit(){window.document.body.appendChild(this.qrScript)}ngOnDestroy(){window.document.body.removeChild(this.qrScript)}auth(e){return super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorAuthenticatorRequest);return t.token=this.token,t.key=this.key,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorAuthenticator(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){return i(this,void 0,void 0,(function*(){this.token=null,this.enabled=e.enabled,this.key=e.key;const t=yield this.stateService.getEmail();window.setTimeout((()=>{new window.QRious({element:document.getElementById("qr"),value:"otpauth://totp/Bitwarden:"+encodeURIComponent(t)+"?secret="+encodeURIComponent(this.key)+"&issuer=Bitwarden",size:160})}),100)}))}}t.TwoFactorAuthenticatorComponent=B,B.ɵfac=function(e){return new(e||B)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.UserVerificationService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.LogService),s.ɵɵdirectiveInject(m.StateService))},B.ɵcmp=s.ɵɵdefineComponent({type:B,selectors:[["app-two-factor-authenticator"]],features:[s.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faAuthenticatorTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faAuthenticatorTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"bwi-ul"],[1,"bwi","bwi-li","bwi-apple"],["href","https://itunes.apple.com/us/app/authy/id494168017?mt=8","target","_blank","rel","noopener"],[1,"bwi","bwi-li","bwi-android"],["href","https://play.google.com/store/apps/details?id=com.authy.authy","target","_blank","rel","noopener"],[1,"bwi","bwi-li","bwi-windows"],["href","https://www.microsoft.com/p/authenticator/9wzdncrfj3rj","target","_blank","rel","noopener"],[1,"text-center",3,"ngClass"],["id","qr"],[3,"appA11yTitle"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["alt","Authenticator app logo",1,"float-right","mfaType0"],["type","success","icon","bwi bwi-check-circle",3,"title"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"h2",4),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementStart(11,"small"),s.ɵɵtext(12),s.ɵɵpipe(13,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"button",5),s.ɵɵpipe(17,"i18n"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"span",6),s.ɵɵtext(20,"×"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,w,2,2,"app-two-factor-verify",7),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,M,77,34,"form",8),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n")),2&e&&(s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(13,7,"authenticatorAppTitle")),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(17,9,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",!t.authed),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.authed))},directives:[h.A11yTitleDirective,v.NgIf,f.TwoFactorVerifyComponent,g.NgControlStatusGroup,g.NgForm,y.ApiActionDirective,v.NgClass,x.CalloutComponent,g.DefaultValueAccessor,g.RequiredValidator,S.InputVerbatimDirective,g.NgControlStatus,g.NgModel],pipes:[b.I18nPipe],encapsulation:2})},40906:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorBaseComponent=void 0;const r=n(32621),o=(n(91674),n(51554),n(36631),n(73828),n(57055),n(97374)),a=n(40205),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055);class m{constructor(e,t,n,i,a){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i,this.userVerificationService=a,this.onUpdated=new r.EventEmitter,this.twoFactorProviderType=o.TwoFactorProviderType,this.enabled=!1,this.authed=!1}auth(e){this.hashedSecret=e.secret,this.verificationType=e.verificationType,this.authed=!0}enable(e){return i(this,void 0,void 0,(function*(){try{yield e(),this.onUpdated.emit(!0)}catch(t){this.logService.error(t)}}))}disable(e){return i(this,void 0,void 0,(function*(){if(yield this.platformUtilsService.showDialog(this.i18nService.t("twoStepDisableDesc"),this.i18nService.t("disable"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{const t=yield this.buildRequestModel(a.TwoFactorProviderRequest);t.type=this.type,e=null!=this.organizationId?this.apiService.putTwoFactorOrganizationDisable(this.organizationId,t):this.apiService.putTwoFactorDisable(t),yield e,this.enabled=!1,this.platformUtilsService.showToast("success",null,this.i18nService.t("twoStepDisabled")),this.onUpdated.emit(!1)}catch(t){this.logService.error(t)}}))}buildRequestModel(e){return i(this,void 0,void 0,(function*(){return this.userVerificationService.buildRequest({secret:this.hashedSecret,type:this.verificationType},e,!0)}))}}t.TwoFactorBaseComponent=m,m.ɵfac=function(e){return new(e||m)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService),s.ɵɵdirectiveInject(u.UserVerificationService))},m.ɵdir=s.ɵɵdefineDirective({type:m,outputs:{onUpdated:"onUpdated"}})},71790:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorDuoComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(37682),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055),m=n(8863),h=n(57490),v=n(12720),f=n(96832),g=n(56820),y=n(51626),x=n(48198),S=n(99729);function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function w(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"app-callout",18),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4),s.ɵɵpipe(5,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelement(7,"img",19),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"strong"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12),s.ɵɵelement(13,"br"),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"strong"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18),s.ɵɵelement(19,"br"),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"strong"),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,8,"enabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(5,10,"twoStepLoginProviderEnabled"),"\n "),s.ɵɵadvance(6),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(11,12,"twoFactorDuoIntegrationKey"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.ikey,"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(17,14,"twoFactorDuoSecretKey"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.skey,"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(23,16,"twoFactorDuoApiHostname"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1(" ",e.host,"\n ")}}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",19),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"p"),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",20),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",21),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",22),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).ikey=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",20),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"label",23),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"input",24),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).skey=t})),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",20),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"label",25),s.ɵɵtext(29),s.ɵɵpipe(30,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"input",26),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).host=t})),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,8,"twoFactorDuoDesc")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,10,"twoFactorDuoIntegrationKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.ikey),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(21,12,"twoFactorDuoSecretKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.skey),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(30,14,"twoFactorDuoApiHostname")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(33,16,"ex")," api-xxxxxxxx.duosecurity.com"),s.ɵɵproperty("ngModel",e.host)}}function I(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"enable")))}function E(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(2,1,"disable")))}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,w,25,18,"ng-container",13),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,C,36,18,"ng-container",13),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",14),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"button",15),s.ɵɵtext(13,"\n "),s.ɵɵelement(14,"i",16),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,I,3,3,"span",13),s.ɵɵtext(18,"\n "),s.ɵɵtemplate(19,E,3,3,"span",13),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"button",17),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(5),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(15,8,"loading")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!t.enabled),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(24,10,"close"),"\n ")}}class O extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o){super(e,t,n,i,o),this.type=r.TwoFactorProviderType.Duo}auth(e){super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorDuoRequest);return t.integrationKey=this.ikey,t.secretKey=this.skey,t.host=this.host,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){null!=this.organizationId?this.formPromise=this.apiService.putTwoFactorOrganizationDuo(this.organizationId,t):this.formPromise=this.apiService.putTwoFactorDuo(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){this.ikey=e.integrationKey,this.skey=e.secretKey,this.host=e.host,this.enabled=e.enabled}}t.TwoFactorDuoComponent=O,O.ɵfac=function(e){return new(e||O)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.I18nService),s.ɵɵdirectiveInject(d.PlatformUtilsService),s.ɵɵdirectiveInject(p.LogService),s.ɵɵdirectiveInject(u.UserVerificationService))},O.ɵcmp=s.ɵɵdefineComponent({type:O,selectors:[["app-two-factor-duo"]],features:[s.ɵɵInheritDefinitionFeature],decls:30,vars:8,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faDuoTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["title","2faDuoTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","","autocomplete","off",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],["alt","Duo logo",1,"float-right","ml-3","mfaType2"],[1,"form-group"],["for","ikey"],["id","ikey","type","text","name","IntegrationKey","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],["for","skey"],["id","skey","type","password","name","SecretKey","required","","appInputVerbatim","","autocomplete","new-password",1,"form-control",3,"ngModel","ngModelChange"],["for","host"],["id","host","type","text","name","Host","required","","appInputVerbatim","",1,"form-control",3,"ngModel","placeholder","ngModelChange"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",2),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",3),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"h2",4),s.ɵɵtext(9),s.ɵɵpipe(10,"i18n"),s.ɵɵelementStart(11,"small"),s.ɵɵtext(12,"Duo"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",5),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"span",6),s.ɵɵtext(19,"×"),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵtemplate(23,b,2,2,"app-two-factor-verify",7),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,P,27,12,"form",8),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n")),2&e&&(s.ɵɵadvance(9),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(10,4,"twoStepLogin"),"\n "),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,6,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",!t.authed),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.authed))},directives:[m.A11yTitleDirective,h.NgIf,v.TwoFactorVerifyComponent,f.NgControlStatusGroup,f.NgForm,g.ApiActionDirective,y.CalloutComponent,f.DefaultValueAccessor,f.RequiredValidator,x.InputVerbatimDirective,f.NgControlStatus,f.NgModel],pipes:[S.I18nPipe],encapsulation:2})},96055:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorEmailComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(73569),n(57055);const r=n(97374),o=n(88307),a=n(3191),s=n(40906),l=n(32621),c=n(91674),d=n(51554),p=n(73828),u=n(36631),m=n(57055),h=n(73569),v=n(8863),f=n(57490),g=n(12720),y=n(96832),x=n(56820),S=n(51626),b=n(48198),w=n(99729);function C(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"app-two-factor-verify",9),l.ɵɵlistener("onAuthed",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext().auth(t)})),l.ɵɵtext(1,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵnextContext();l.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function I(e,t){if(1&e&&(l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"app-callout",18),l.ɵɵpipe(3,"i18n"),l.ɵɵtext(4),l.ɵɵpipe(5,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(6,"\n "),l.ɵɵelementStart(7,"strong"),l.ɵɵtext(8),l.ɵɵpipe(9,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(10),l.ɵɵelementContainerEnd()),2&e){const e=l.ɵɵnextContext(2);l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(3,4,"enabled")),l.ɵɵadvance(2),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(5,6,"twoStepLoginProviderEnabled"),"\n "),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("",l.ɵɵpipeBind1(9,8,"email"),":"),l.ɵɵadvance(2),l.ɵɵtextInterpolate1(" ",e.email,"\n ")}}function E(e,t){if(1&e&&(l.ɵɵelementStart(0,"span",31),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e){const e=l.ɵɵnextContext(3);l.ɵɵadvance(1),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind2(2,1,"verificationCodeEmailSent",e.sentEmail),"\n ")}}function P(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementContainerStart(0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"p",19),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"span",20),l.ɵɵtext(5),l.ɵɵpipe(6,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(7,"\n "),l.ɵɵelement(8,"img",21),l.ɵɵtext(9,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(10,"\n "),l.ɵɵelementStart(11,"div",22),l.ɵɵtext(12,"\n "),l.ɵɵelementStart(13,"label",23),l.ɵɵtext(14),l.ɵɵpipe(15,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(16,"\n "),l.ɵɵelementStart(17,"input",24),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).email=t})),l.ɵɵelementEnd(),l.ɵɵtext(18,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(19,"\n "),l.ɵɵelementStart(20,"div",25),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"button",26,27),l.ɵɵlistener("click",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).sendEmail()})),l.ɵɵtext(24,"\n "),l.ɵɵelement(25,"i",16),l.ɵɵpipe(26,"i18n"),l.ɵɵtext(27,"\n "),l.ɵɵelementStart(28,"span"),l.ɵɵtext(29),l.ɵɵpipe(30,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(31,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(32,"\n "),l.ɵɵtemplate(33,E,3,4,"span",28),l.ɵɵtext(34,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(35,"\n "),l.ɵɵelementStart(36,"div",22),l.ɵɵtext(37,"\n "),l.ɵɵelementStart(38,"label",29),l.ɵɵtext(39),l.ɵɵpipe(40,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(41,"\n "),l.ɵɵelementStart(42,"input",30),l.ɵɵlistener("ngModelChange",(function(t){l.ɵɵrestoreView(e);return l.ɵɵnextContext(2).token=t})),l.ɵɵelementEnd(),l.ɵɵtext(43,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(44,"\n "),l.ɵɵelementContainerEnd()}if(2&e){const e=l.ɵɵreference(23),t=l.ɵɵnextContext(2);l.ɵɵadvance(5),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(6,10,"twoFactorEmailDesc")),l.ɵɵadvance(9),l.ɵɵtextInterpolate1("1. ",l.ɵɵpipeBind1(15,12,"twoFactorEmailEnterEmail"),""),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",t.email),l.ɵɵadvance(5),l.ɵɵproperty("appApiAction",t.emailPromise)("disabled",e.loading),l.ɵɵadvance(3),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(26,14,"loading")),l.ɵɵadvance(4),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(30,16,"sendEmail")),l.ɵɵadvance(4),l.ɵɵproperty("ngIf",t.sentEmail),l.ɵɵadvance(6),l.ɵɵtextInterpolate1("2. ",l.ɵɵpipeBind1(40,18,"twoFactorEmailEnterCode"),""),l.ɵɵadvance(3),l.ɵɵproperty("ngModel",t.token)}}function O(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"enable")))}function k(e,t){1&e&&(l.ɵɵelementStart(0,"span"),l.ɵɵtext(1),l.ɵɵpipe(2,"i18n"),l.ɵɵelementEnd()),2&e&&(l.ɵɵadvance(1),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(2,1,"disable")))}function A(e,t){if(1&e){const e=l.ɵɵgetCurrentView();l.ɵɵelementStart(0,"form",10,11),l.ɵɵlistener("ngSubmit",(function(){l.ɵɵrestoreView(e);return l.ɵɵnextContext().submit()})),l.ɵɵtext(2,"\n "),l.ɵɵelementStart(3,"div",12),l.ɵɵtext(4,"\n "),l.ɵɵtemplate(5,I,11,10,"ng-container",13),l.ɵɵtext(6,"\n "),l.ɵɵtemplate(7,P,45,20,"ng-container",13),l.ɵɵtext(8,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(9,"\n "),l.ɵɵelementStart(10,"div",14),l.ɵɵtext(11,"\n "),l.ɵɵelementStart(12,"button",15),l.ɵɵtext(13,"\n "),l.ɵɵelement(14,"i",16),l.ɵɵpipe(15,"i18n"),l.ɵɵtext(16,"\n "),l.ɵɵtemplate(17,O,3,3,"span",13),l.ɵɵtext(18,"\n "),l.ɵɵtemplate(19,k,3,3,"span",13),l.ɵɵtext(20,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementStart(22,"button",17),l.ɵɵtext(23),l.ɵɵpipe(24,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(25,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(26,"\n "),l.ɵɵelementEnd()}if(2&e){const e=l.ɵɵreference(1),t=l.ɵɵnextContext();l.ɵɵproperty("appApiAction",t.formPromise),l.ɵɵadvance(5),l.ɵɵproperty("ngIf",t.enabled),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",!t.enabled),l.ɵɵadvance(5),l.ɵɵproperty("disabled",e.loading),l.ɵɵadvance(2),l.ɵɵpropertyInterpolate("title",l.ɵɵpipeBind1(15,8,"loading")),l.ɵɵadvance(3),l.ɵɵproperty("ngIf",!t.enabled),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.enabled),l.ɵɵadvance(4),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(24,10,"close"),"\n ")}}class T extends s.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,n,i,o),this.stateService=a,this.type=r.TwoFactorProviderType.Email}auth(e){return super.auth(e),this.processResponse(e.response)}submit(){return this.enabled?super.disable(this.formPromise):this.enable()}sendEmail(){return i(this,void 0,void 0,(function*(){try{const e=yield this.buildRequestModel(o.TwoFactorEmailRequest);e.email=this.email,this.emailPromise=this.apiService.postTwoFactorEmailSetup(e),yield this.emailPromise,this.sentEmail=this.email}catch(e){this.logService.error(e)}}))}enable(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(a.UpdateTwoFactorEmailRequest);return t.email=this.email,t.token=this.token,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorEmail(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}processResponse(e){return i(this,void 0,void 0,(function*(){this.token=null,this.email=e.email,this.enabled=e.enabled,this.enabled||null!=this.email&&""!==this.email||(this.email=yield this.stateService.getEmail())}))}}t.TwoFactorEmailComponent=T,T.ɵfac=function(e){return new(e||T)(l.ɵɵdirectiveInject(c.ApiService),l.ɵɵdirectiveInject(d.I18nService),l.ɵɵdirectiveInject(p.PlatformUtilsService),l.ɵɵdirectiveInject(u.LogService),l.ɵɵdirectiveInject(m.UserVerificationService),l.ɵɵdirectiveInject(h.StateService))},T.ɵcmp=l.ɵɵdefineComponent({type:T,selectors:[["app-two-factor-email"]],features:[l.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faEmailTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faEmailTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],[1,"d-flex"],[1,"mr-3"],["alt","Email logo",1,"float-right","ml-auto","mfaType1"],[1,"form-group"],["for","email"],["id","email","type","text","name","Email","required","","inputmode","email","appInputVerbatim","false",1,"form-control",3,"ngModel","ngModelChange"],[1,"mb-3","d-flex"],["type","button",1,"btn","btn-outline-primary","btn-sm","btn-submit","align-self-start",3,"appApiAction","disabled","click"],["sendBtn",""],["class","text-success ml-3",4,"ngIf"],["for","token"],["id","token","type","text","name","Token","required","","appInputVerbatim","",1,"form-control",3,"ngModel","ngModelChange"],[1,"text-success","ml-3"]],template:function(e,t){1&e&&(l.ɵɵelementStart(0,"div",0),l.ɵɵtext(1,"\n "),l.ɵɵelementStart(2,"div",1),l.ɵɵtext(3,"\n "),l.ɵɵelementStart(4,"div",2),l.ɵɵtext(5,"\n "),l.ɵɵelementStart(6,"div",3),l.ɵɵtext(7,"\n "),l.ɵɵelementStart(8,"h2",4),l.ɵɵtext(9),l.ɵɵpipe(10,"i18n"),l.ɵɵelementStart(11,"small"),l.ɵɵtext(12),l.ɵɵpipe(13,"i18n"),l.ɵɵelementEnd(),l.ɵɵtext(14,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(15,"\n "),l.ɵɵelementStart(16,"button",5),l.ɵɵpipe(17,"i18n"),l.ɵɵtext(18,"\n "),l.ɵɵelementStart(19,"span",6),l.ɵɵtext(20,"×"),l.ɵɵelementEnd(),l.ɵɵtext(21,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(22,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(23,"\n "),l.ɵɵtemplate(24,C,2,2,"app-two-factor-verify",7),l.ɵɵtext(25,"\n "),l.ɵɵtemplate(26,A,27,12,"form",8),l.ɵɵtext(27,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(28,"\n "),l.ɵɵelementEnd(),l.ɵɵtext(29,"\n"),l.ɵɵelementEnd(),l.ɵɵtext(30,"\n")),2&e&&(l.ɵɵadvance(9),l.ɵɵtextInterpolate1("\n ",l.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),l.ɵɵadvance(3),l.ɵɵtextInterpolate(l.ɵɵpipeBind1(13,7,"emailTitle")),l.ɵɵadvance(4),l.ɵɵpropertyInterpolate("appA11yTitle",l.ɵɵpipeBind1(17,9,"close")),l.ɵɵadvance(8),l.ɵɵproperty("ngIf",!t.authed),l.ɵɵadvance(2),l.ɵɵproperty("ngIf",t.authed))},directives:[v.A11yTitleDirective,f.NgIf,g.TwoFactorVerifyComponent,y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.CalloutComponent,y.DefaultValueAccessor,y.RequiredValidator,b.InputVerbatimDirective,y.NgControlStatus,y.NgModel],pipes:[w.I18nPipe],encapsulation:2})},64542:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorRecoveryComponent=void 0;n(51554);const i=n(97374),r=n(32621),o=n(51554),a=n(8863),s=n(57490),l=n(12720),c=n(99729);function d(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-two-factor-verify",9),r.ɵɵlistener("onAuthed",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().auth(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function p(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"p"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"code",14),r.ɵɵtext(7),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate1("",r.ɵɵpipeBind1(4,2,"twoFactorRecoveryYourCode"),":"),r.ɵɵadvance(4),r.ɵɵtextInterpolate(e.code)}}function u(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"twoFactorRecoveryNoCode"),"\n "))}function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",15),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).print()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"printCode"),"\n "))}function h(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",10),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,p,9,4,"ng-container",8),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,u,3,3,"ng-container",8),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"div",11),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,m,3,3,"button",12),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",13),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.code),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.code),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.code),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(15,4,"close"),"\n ")}}class v{constructor(e){this.i18nService=e,this.type=-1,this.twoFactorProviderType=i.TwoFactorProviderType}auth(e){this.authed=!0,this.processResponse(e.response)}print(){const e=window.open();e.document.write('

'+this.i18nService.t("twoFactorRecoveryYourCode")+":

"+this.code+'

'+new Date+"

"),e.onafterprint=()=>e.close(),e.print()}formatString(e){return null==e?null:e.replace(/(.{4})/g,"$1 ").trim().toUpperCase()}processResponse(e){this.code=this.formatString(e.code)}}t.TwoFactorRecoveryComponent=v,v.ɵfac=function(e){return new(e||v)(r.ɵɵdirectiveInject(o.I18nService))},v.ɵcmp=r.ɵɵdefineComponent({type:v,selectors:[["app-two-factor-recovery"]],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faRecoveryTitle",1,"modal","fade"],["role","document",1,"modal-dialog"],[1,"modal-content"],[1,"modal-header"],["id","2faRecoveryTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],[4,"ngIf"],[3,"organizationId","type","onAuthed"],[1,"modal-body","text-center"],[1,"modal-footer"],["type","button","class","btn btn-primary",3,"click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"text-lg"],["type","button",1,"btn","btn-primary",3,"click"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementStart(11,"small"),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"button",5),r.ɵɵpipe(17,"i18n"),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"span",6),r.ɵɵtext(20,"×"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,d,2,2,"app-two-factor-verify",7),r.ɵɵtext(25,"\n "),r.ɵɵtemplate(26,h,18,6,"ng-container",8),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(30,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,7,"recoveryCodeTitle")),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(17,9,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.authed),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.authed))},directives:[a.A11yTitleDirective,s.NgIf,l.TwoFactorVerifyComponent],pipes:[c.I18nPipe],encapsulation:2})},35906:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorSetupComponent=void 0;const r=n(32621),o=(n(64684),n(91674),n(45552),n(62166),n(73569),n(49906)),a=n(97374),s=n(96837),l=n(59751),c=n(71790),d=n(96055),p=n(64542),u=n(84472),m=n(80445),h=n(32621),v=n(91674),f=n(64684),g=n(45552),y=n(62166),x=n(73569),S=n(57490),b=n(20138),w=n(52767),C=n(48403),I=n(99729),E=["recoveryTemplate"],P=["authenticatorTemplate"],O=["yubikeyTemplate"],k=["duoTemplate"],A=["emailTemplate"],T=["webAuthnTemplate"];function M(e,t){1&e&&(h.ɵɵelementStart(0,"p"),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(2,1,"twoStepLoginDesc")))}function B(e,t){1&e&&(h.ɵɵelementStart(0,"p"),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(2,1,"twoStepLoginOrganizationDesc")))}function D(e,t){if(1&e){const e=h.ɵɵgetCurrentView();h.ɵɵelementStart(0,"bit-callout",12),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"p"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n "),h.ɵɵelementStart(6,"button",13),h.ɵɵlistener("click",(function(){h.ɵɵrestoreView(e);return h.ɵɵnextContext().recoveryCode()})),h.ɵɵtext(7),h.ɵɵpipe(8,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(9,"\n"),h.ɵɵelementEnd()}2&e&&(h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,2,"twoStepLoginRecoveryWarning")),h.ɵɵadvance(4),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(8,4,"viewRecoveryCode"),"\n "))}function R(e,t){1&e&&(h.ɵɵelementStart(0,"small"),h.ɵɵtext(1,"\n "),h.ɵɵelement(2,"i",14),h.ɵɵpipe(3,"i18n"),h.ɵɵtext(4,"\n "),h.ɵɵelementStart(5,"span",15),h.ɵɵtext(6),h.ɵɵpipe(7,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(8,"\n "),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(3,2,"loading")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(7,4,"loading")))}function F(e,t){1&e&&(h.ɵɵelementStart(0,"bit-callout",12),h.ɵɵtext(1),h.ɵɵpipe(2,"i18n"),h.ɵɵelementEnd()),2&e&&(h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(2,1,"twoStepLoginPolicyUserWarning"),"\n"))}function U(e,t){1&e&&(h.ɵɵelementContainerStart(0),h.ɵɵtext(1,"\n "),h.ɵɵelement(2,"i",23),h.ɵɵpipe(3,"i18n"),h.ɵɵtext(4,"\n "),h.ɵɵelementStart(5,"span",15),h.ɵɵtext(6),h.ɵɵpipe(7,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(8,"\n "),h.ɵɵelementContainerEnd()),2&e&&(h.ɵɵadvance(2),h.ɵɵpropertyInterpolate("title",h.ɵɵpipeBind1(3,2,"enabled")),h.ɵɵadvance(4),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(7,4,"enabled")))}function V(e,t){1&e&&h.ɵɵelement(0,"app-premium-badge")}function N(e,t){if(1&e){const e=h.ɵɵgetCurrentView();h.ɵɵelementStart(0,"li",16),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"div",17),h.ɵɵtext(3,"\n "),h.ɵɵelement(4,"img",18),h.ɵɵtext(5,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n "),h.ɵɵelementStart(7,"div",19),h.ɵɵtext(8,"\n "),h.ɵɵelementStart(9,"h3",20),h.ɵɵtext(10),h.ɵɵtemplate(11,U,9,6,"ng-container",1),h.ɵɵtext(12,"\n "),h.ɵɵtemplate(13,V,1,0,"app-premium-badge",1),h.ɵɵtext(14,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(15),h.ɵɵelementEnd(),h.ɵɵtext(16,"\n "),h.ɵɵelementStart(17,"div",21),h.ɵɵtext(18,"\n "),h.ɵɵelementStart(19,"button",22),h.ɵɵlistener("click",(function(){const t=h.ɵɵrestoreView(e).$implicit;return h.ɵɵnextContext().manage(t.type)})),h.ɵɵtext(20),h.ɵɵpipe(21,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(22,"\n "),h.ɵɵelementEnd(),h.ɵɵtext(23,"\n "),h.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=h.ɵɵnextContext();h.ɵɵadvance(4),h.ɵɵclassMap("mfaType"+e.type),h.ɵɵproperty("alt",e.name+" logo"),h.ɵɵadvance(6),h.ɵɵtextInterpolate1("\n ",e.name,"\n "),h.ɵɵadvance(1),h.ɵɵproperty("ngIf",e.enabled),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",e.premium),h.ɵɵadvance(2),h.ɵɵtextInterpolate1("\n ",e.description,"\n "),h.ɵɵadvance(4),h.ɵɵproperty("disabled",!n.canAccessPremium&&e.premium),h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(21,9,"manage"),"\n ")}}function _(e,t){}function j(e,t){}function z(e,t){}function H(e,t){}function L(e,t){}function K(e,t){}const q=function(e){return{"mt-5":e}};class G{constructor(e,t,n,i,r){this.apiService=e,this.modalService=t,this.messagingService=n,this.policyService=i,this.stateService=r,this.providers=[],this.showPolicyWarning=!1,this.loading=!0}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium();for(const e in s.TwoFactorProviders){if(!s.TwoFactorProviders.hasOwnProperty(e))continue;const t=s.TwoFactorProviders[e];this.filterProvider(t.type)||this.providers.push({type:t.type,name:t.name,description:t.description,enabled:!1,premium:t.premium,sort:t.sort})}this.providers.sort(((e,t)=>e.sort-t.sort)),yield this.load()}))}load(){return i(this,void 0,void 0,(function*(){this.loading=!0;(yield this.getTwoFactorProviders()).data.forEach((e=>{this.providers.forEach((t=>{e.type===t.type&&(t.enabled=e.enabled)}))})),this.evaluatePolicies(),this.loading=!1}))}manage(e){return i(this,void 0,void 0,(function*(){switch(e){case a.TwoFactorProviderType.Authenticator:(yield this.openModal(this.authenticatorModalRef,l.TwoFactorAuthenticatorComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Authenticator)}));break;case a.TwoFactorProviderType.Yubikey:(yield this.openModal(this.yubikeyModalRef,m.TwoFactorYubiKeyComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Yubikey)}));break;case a.TwoFactorProviderType.Duo:(yield this.openModal(this.duoModalRef,c.TwoFactorDuoComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Duo)}));break;case a.TwoFactorProviderType.Email:(yield this.openModal(this.emailModalRef,d.TwoFactorEmailComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.Email)}));break;case a.TwoFactorProviderType.WebAuthn:(yield this.openModal(this.webAuthnModalRef,u.TwoFactorWebAuthnComponent)).onUpdated.subscribe((e=>{this.updateStatus(e,a.TwoFactorProviderType.WebAuthn)}));break}}))}recoveryCode(){this.openModal(this.recoveryModalRef,p.TwoFactorRecoveryComponent)}premiumRequired(){return i(this,void 0,void 0,(function*(){this.canAccessPremium||this.messagingService.send("premiumRequired")}))}getTwoFactorProviders(){return this.apiService.getTwoFactorProviders()}filterProvider(e){return e===a.TwoFactorProviderType.OrganizationDuo}openModal(e,t){return i(this,void 0,void 0,(function*(){const[n,i]=yield this.modalService.openViewRef(t,e);return this.modal=n,i}))}updateStatus(e,t){e||null==this.modal||this.modal.close(),this.providers.forEach((n=>{n.type===t&&(n.enabled=e)})),this.evaluatePolicies()}evaluatePolicies(){return i(this,void 0,void 0,(function*(){null==this.organizationId&&1===this.providers.filter((e=>e.enabled)).length?this.showPolicyWarning=yield this.policyService.policyAppliesToUser(o.PolicyType.TwoFactorAuthentication):this.showPolicyWarning=!1}))}}t.TwoFactorSetupComponent=G,G.ɵfac=function(e){return new(e||G)(h.ɵɵdirectiveInject(v.ApiService),h.ɵɵdirectiveInject(f.ModalService),h.ɵɵdirectiveInject(g.MessagingService),h.ɵɵdirectiveInject(y.PolicyService),h.ɵɵdirectiveInject(x.StateService))},G.ɵcmp=h.ɵɵdefineComponent({type:G,selectors:[["app-two-factor-setup"]],viewQuery:function(e,t){if(1&e&&(h.ɵɵviewQuery(E,7,r.ViewContainerRef),h.ɵɵviewQuery(P,7,r.ViewContainerRef),h.ɵɵviewQuery(O,7,r.ViewContainerRef),h.ɵɵviewQuery(k,7,r.ViewContainerRef),h.ɵɵviewQuery(A,7,r.ViewContainerRef),h.ɵɵviewQuery(T,7,r.ViewContainerRef)),2&e){let e;h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.recoveryModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.authenticatorModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.yubikeyModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.duoModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.emailModalRef=e.first),h.ɵɵqueryRefresh(e=h.ɵɵloadQuery())&&(t.webAuthnModalRef=e.first)}},decls:44,vars:15,consts:[[1,"tabbed-header"],[4,"ngIf"],["type","warning",4,"ngIf"],[3,"ngClass"],[1,"list-group","list-group-2fa"],["class","list-group-item d-flex align-items-center",4,"ngFor","ngForOf"],["authenticatorTemplate",""],["recoveryTemplate",""],["duoTemplate",""],["emailTemplate",""],["yubikeyTemplate",""],["webAuthnTemplate",""],["type","warning"],["bit-button","","buttonType","secondary",3,"click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-fw","text-muted",3,"title"],[1,"sr-only"],[1,"list-group-item","d-flex","align-items-center"],[1,"logo-2fa","d-flex","justify-content-center"],[3,"alt"],[1,"mx-4"],[1,"mb-0"],[1,"ml-auto"],["bit-button","","buttonType","secondary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-check","text-success","bwi-fw",3,"title"]],template:function(e,t){1&e&&(h.ɵɵelementStart(0,"div",0),h.ɵɵtext(1,"\n "),h.ɵɵelementStart(2,"h1"),h.ɵɵtext(3),h.ɵɵpipe(4,"i18n"),h.ɵɵelementEnd(),h.ɵɵtext(5,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(6,"\n"),h.ɵɵtemplate(7,M,3,3,"p",1),h.ɵɵtext(8,"\n"),h.ɵɵtemplate(9,B,3,3,"p",1),h.ɵɵtext(10,"\n"),h.ɵɵtemplate(11,D,10,6,"bit-callout",2),h.ɵɵtext(12,"\n"),h.ɵɵelementStart(13,"h2",3),h.ɵɵtext(14),h.ɵɵpipe(15,"i18n"),h.ɵɵtemplate(16,R,9,6,"small",1),h.ɵɵtext(17,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(18,"\n"),h.ɵɵtemplate(19,F,3,3,"bit-callout",2),h.ɵɵtext(20,"\n"),h.ɵɵelementStart(21,"ul",4),h.ɵɵtext(22,"\n "),h.ɵɵtemplate(23,N,24,11,"li",5),h.ɵɵtext(24,"\n"),h.ɵɵelementEnd(),h.ɵɵtext(25,"\n\n"),h.ɵɵtemplate(26,_,0,0,"ng-template",null,6,h.ɵɵtemplateRefExtractor),h.ɵɵtext(28,"\n"),h.ɵɵtemplate(29,j,0,0,"ng-template",null,7,h.ɵɵtemplateRefExtractor),h.ɵɵtext(31,"\n"),h.ɵɵtemplate(32,z,0,0,"ng-template",null,8,h.ɵɵtemplateRefExtractor),h.ɵɵtext(34,"\n"),h.ɵɵtemplate(35,H,0,0,"ng-template",null,9,h.ɵɵtemplateRefExtractor),h.ɵɵtext(37,"\n"),h.ɵɵtemplate(38,L,0,0,"ng-template",null,10,h.ɵɵtemplateRefExtractor),h.ɵɵtext(40,"\n"),h.ɵɵtemplate(41,K,0,0,"ng-template",null,11,h.ɵɵtemplateRefExtractor),h.ɵɵtext(43,"\n")),2&e&&(h.ɵɵadvance(3),h.ɵɵtextInterpolate(h.ɵɵpipeBind1(4,9,"twoStepLogin")),h.ɵɵadvance(4),h.ɵɵproperty("ngIf",!t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",!t.organizationId),h.ɵɵadvance(2),h.ɵɵproperty("ngClass",h.ɵɵpureFunction1(13,q,!t.organizationId)),h.ɵɵadvance(1),h.ɵɵtextInterpolate1("\n ",h.ɵɵpipeBind1(15,11,"providers"),"\n "),h.ɵɵadvance(2),h.ɵɵproperty("ngIf",t.loading),h.ɵɵadvance(3),h.ɵɵproperty("ngIf",t.showPolicyWarning),h.ɵɵadvance(4),h.ɵɵproperty("ngForOf",t.providers))},directives:[S.NgIf,S.NgClass,S.NgForOf,b.CalloutComponent,w.ButtonComponent,C.PremiumBadgeComponent],pipes:[I.I18nPipe],encapsulation:2})},12720:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorVerifyComponent=void 0;const r=n(32621),o=(n(91674),n(36631),n(57055),n(97374)),a=n(44254),s=n(32621),l=n(91674),c=n(36631),d=n(57055),p=n(96832),u=n(56820),m=n(4158),h=n(99729);class v{constructor(e,t,n){this.apiService=e,this.logService=t,this.userVerificationService=n,this.onAuthed=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){let e;try{this.formPromise=this.userVerificationService.buildRequest(this.secret).then((t=>(e=this.secret.type===a.VerificationType.MasterPassword?t.masterPasswordHash:t.otp,this.apiCall(t))));const t=yield this.formPromise;this.onAuthed.emit({response:t,secret:e,verificationType:this.secret.type})}catch(t){this.logService.error(t)}}))}apiCall(e){switch(this.type){case-1:return this.apiService.getTwoFactorRecover(e);case o.TwoFactorProviderType.Duo:case o.TwoFactorProviderType.OrganizationDuo:return null!=this.organizationId?this.apiService.getTwoFactorOrganizationDuo(this.organizationId,e):this.apiService.getTwoFactorDuo(e);case o.TwoFactorProviderType.Email:return this.apiService.getTwoFactorEmail(e);case o.TwoFactorProviderType.WebAuthn:return this.apiService.getTwoFactorWebAuthn(e);case o.TwoFactorProviderType.Authenticator:return this.apiService.getTwoFactorAuthenticator(e);case o.TwoFactorProviderType.Yubikey:return this.apiService.getTwoFactorYubiKey(e)}}}t.TwoFactorVerifyComponent=v,v.ɵfac=function(e){return new(e||v)(s.ɵɵdirectiveInject(l.ApiService),s.ɵɵdirectiveInject(c.LogService),s.ɵɵdirectiveInject(d.UserVerificationService))},v.ɵcmp=s.ɵɵdefineComponent({type:v,selectors:[["app-two-factor-verify"]],inputs:{type:"type",organizationId:"organizationId"},outputs:{onAuthed:"onAuthed"},decls:31,vars:15,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],["ngDefaultControl","","name","secret",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(s.ɵɵelementStart(0,"form",0,1),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",2),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"p"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"app-user-verification",3),s.ɵɵlistener("ngModelChange",(function(e){return t.secret=e})),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",4),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",5),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"i",6),s.ɵɵpipe(18,"i18n"),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"span"),s.ɵɵtext(21),s.ɵɵpipe(22,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"button",7),s.ɵɵtext(26),s.ɵɵpipe(27,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n")),2&e){const e=s.ɵɵreference(1);s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,7,"twoStepLoginAuthDesc")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.secret),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(18,9,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(22,11,"continue")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(27,13,"close"),"\n ")}},directives:[p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.UserVerificationComponent,p.DefaultValueAccessor,p.NgControlStatus,p.NgModel],pipes:[h.I18nPipe],encapsulation:2})},84472:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorWebAuthnComponent=void 0;n(32621),n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(36119),a=n(40088),s=n(72842),l=n(40906),c=n(32621),d=n(91674),p=n(51554),u=n(73828),m=n(36631),h=n(57055),v=n(8863),f=n(57490),g=n(12720),y=n(96832),x=n(56820),S=n(51626),b=n(1142),w=n(99729);function C(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"app-two-factor-verify",9),c.ɵɵlistener("onAuthed",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().auth(t)})),c.ɵɵtext(1,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext();c.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function I(e,t){1&e&&(c.ɵɵelementStart(0,"app-callout",31),c.ɵɵpipe(1,"i18n"),c.ɵɵtext(2),c.ɵɵpipe(3,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,2,"enabled")),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(3,4,"twoStepLoginProviderEnabled"),"\n "))}function E(e,t){if(1&e&&(c.ɵɵelementStart(0,"strong"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().index;c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind2(2,1,"webAuthnkeyX",e+1))}}function P(e,t){if(1&e&&(c.ɵɵelementStart(0,"strong"),c.ɵɵtext(1),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(1),c.ɵɵtextInterpolate(e.name)}}function O(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"span"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,1,"webAuthnMigrated")))}function k(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,O,6,3,"ng-container",25),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext().$implicit;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.migrated)}}function A(e,t){1&e&&(c.ɵɵelement(0,"i",37),c.ɵɵpipe(1,"i18n")),2&e&&c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,1,"loading"))}function T(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,A,2,3,"i",35),c.ɵɵtext(3,"\n -\n "),c.ɵɵelementStart(4,"a",36),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);const t=c.ɵɵnextContext().$implicit;return c.ɵɵnextContext(2).remove(t)})),c.ɵɵtext(5),c.ɵɵpipe(6,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()}if(2&e){c.ɵɵnextContext();const e=c.ɵɵreference(1);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loading),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(6,2,"remove"))}}function M(e,t){if(1&e&&(c.ɵɵelementStart(0,"li",32,33),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",34),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,E,3,4,"strong",25),c.ɵɵtext(6,"\n "),c.ɵɵtemplate(7,P,2,1,"strong",25),c.ɵɵtext(8,"\n "),c.ɵɵtemplate(9,k,4,1,"ng-container",25),c.ɵɵtext(10,"\n "),c.ɵɵtemplate(11,T,8,4,"ng-container",25),c.ɵɵtext(12,"\n "),c.ɵɵelementEnd()),2&e){const e=t.$implicit,n=c.ɵɵreference(1),i=c.ɵɵnextContext(2);c.ɵɵproperty("appApiAction",e.removePromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",!e.configured||!e.name),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.configured&&e.name),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.configured&&!n.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",i.keysConfiguredCount>1&&e.configured)}}function B(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3,"\n "),c.ɵɵelementContainerEnd())}function D(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fWaiting"),"...\n "))}function R(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",39),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fClickSave"),"\n "))}function F(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",40),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(4,1,"twoFactorU2fProblemReadingTryAgain"),"\n "))}function U(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,D,5,3,"ng-container",25),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,R,5,3,"ng-container",25),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,F,5,3,"ng-container",25),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnListening),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnResponse),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.webAuthnError)}}function V(e,t){1&e&&(c.ɵɵelement(0,"i",41),c.ɵɵpipe(1,"i18n")),2&e&&c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(1,1,"loading"))}function N(e,t){1&e&&(c.ɵɵelementStart(0,"span"),c.ɵɵtext(1),c.ɵɵpipe(2,"i18n"),c.ɵɵelementEnd()),2&e&&(c.ɵɵadvance(1),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(2,1,"save")))}function _(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",42,43),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).disable()})),c.ɵɵtext(2,"\n "),c.ɵɵelement(3,"i",41),c.ɵɵpipe(4,"i18n"),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"span"),c.ɵɵtext(7),c.ɵɵpipe(8,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(9,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵnextContext(2);c.ɵɵproperty("appApiAction",t.disablePromise)("disabled",e.loading),c.ɵɵadvance(3),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(4,4,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(8,6,"disableAllKeys"))}}function j(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"form",10,11),c.ɵɵlistener("ngSubmit",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().submit()})),c.ɵɵtext(2,"\n "),c.ɵɵelementStart(3,"div",12),c.ɵɵtext(4,"\n "),c.ɵɵtemplate(5,I,4,6,"app-callout",13),c.ɵɵtext(6,"\n "),c.ɵɵelementStart(7,"app-callout",14),c.ɵɵtext(8,"\n "),c.ɵɵelementStart(9,"p"),c.ɵɵtext(10),c.ɵɵpipe(11,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(12,"\n "),c.ɵɵelementStart(13,"ul",15),c.ɵɵtext(14,"\n "),c.ɵɵelementStart(15,"li"),c.ɵɵtext(16),c.ɵɵpipe(17,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(18,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(19,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(20,"\n "),c.ɵɵelement(21,"img",16),c.ɵɵtext(22,"\n "),c.ɵɵelementStart(23,"ul",17),c.ɵɵtext(24,"\n "),c.ɵɵtemplate(25,M,13,5,"li",18),c.ɵɵtext(26,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(27,"\n "),c.ɵɵelement(28,"hr"),c.ɵɵtext(29,"\n "),c.ɵɵelementStart(30,"p"),c.ɵɵtext(31),c.ɵɵpipe(32,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(33,"\n "),c.ɵɵelementStart(34,"ol"),c.ɵɵtext(35,"\n "),c.ɵɵelementStart(36,"li"),c.ɵɵtext(37),c.ɵɵpipe(38,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(39,"\n "),c.ɵɵelementStart(40,"li"),c.ɵɵtext(41),c.ɵɵpipe(42,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(43,"\n "),c.ɵɵelementStart(44,"li"),c.ɵɵtext(45),c.ɵɵpipe(46,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(47,"\n "),c.ɵɵelementStart(48,"li"),c.ɵɵtext(49),c.ɵɵpipe(50,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(51,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(52,"\n "),c.ɵɵelementStart(53,"div",19),c.ɵɵtext(54,"\n "),c.ɵɵelementStart(55,"div",20),c.ɵɵtext(56,"\n "),c.ɵɵelementStart(57,"label",21),c.ɵɵtext(58),c.ɵɵpipe(59,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(60,"\n "),c.ɵɵelementStart(61,"input",22),c.ɵɵlistener("ngModelChange",(function(t){c.ɵɵrestoreView(e);return c.ɵɵnextContext().name=t})),c.ɵɵelementEnd(),c.ɵɵtext(62,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(63,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(64,"\n "),c.ɵɵelementStart(65,"button",23,24),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext().readKey()})),c.ɵɵtext(67),c.ɵɵpipe(68,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(69,"\n "),c.ɵɵtemplate(70,B,4,0,"ng-container",25),c.ɵɵtext(71,"\n "),c.ɵɵtemplate(72,U,8,3,"ng-container",25),c.ɵɵtext(73,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(74,"\n "),c.ɵɵelementStart(75,"div",26),c.ɵɵtext(76,"\n "),c.ɵɵelementStart(77,"button",27),c.ɵɵtext(78,"\n "),c.ɵɵtemplate(79,V,2,3,"i",28),c.ɵɵtext(80,"\n "),c.ɵɵtemplate(81,N,3,3,"span",25),c.ɵɵtext(82,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(83,"\n "),c.ɵɵtemplate(84,_,10,8,"button",29),c.ɵɵtext(85,"\n "),c.ɵɵelementStart(86,"button",30),c.ɵɵtext(87),c.ɵɵpipe(88,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(89,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(90,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵreference(1),t=c.ɵɵreference(66),n=c.ɵɵnextContext();c.ɵɵproperty("appApiAction",n.formPromise),c.ɵɵadvance(5),c.ɵɵproperty("ngIf",n.enabled),c.ɵɵadvance(5),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(11,23,"twoFactorWebAuthnWarning")),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(17,25,"twoFactorWebAuthnSupportWeb")),c.ɵɵadvance(9),c.ɵɵproperty("ngForOf",n.keys),c.ɵɵadvance(6),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(32,27,"twoFactorWebAuthnAdd"),":"),c.ɵɵadvance(6),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(38,29,"twoFactorU2fGiveName")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(42,31,"twoFactorU2fPlugInReadKey")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(46,33,"twoFactorU2fTouchButton")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(50,35,"twoFactorU2fSaveForm")),c.ɵɵadvance(9),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(59,37,"name")),c.ɵɵadvance(3),c.ɵɵproperty("ngModel",n.name)("disabled",!n.keyIdAvailable),c.ɵɵadvance(4),c.ɵɵproperty("disabled",t.loading||n.webAuthnListening||!n.keyIdAvailable)("appApiAction",n.challengePromise),c.ɵɵadvance(2),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(68,39,"readKey"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",t.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!t.loading),c.ɵɵadvance(5),c.ɵɵproperty("disabled",e.loading||!n.webAuthnResponse),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loading),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.loading),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",n.enabled),c.ɵɵadvance(3),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(88,41,"close"),"\n ")}}class z extends l.TwoFactorBaseComponent{constructor(e,t,n,i,o,a){super(e,t,n,o,a),this.ngZone=i,this.type=r.TwoFactorProviderType.WebAuthn,this.keyIdAvailable=null,this.keysConfiguredCount=0}auth(e){super.auth(e),this.processResponse(e.response)}submit(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){if(null==this.webAuthnResponse||null==this.keyIdAvailable)return Promise.reject();const t=yield this.buildRequestModel(s.UpdateTwoFactorWebAuthnRequest);return t.deviceResponse=this.webAuthnResponse,t.id=this.keyIdAvailable,t.name=this.name,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorWebAuthn(t);const e=yield this.formPromise;yield this.processResponse(e)}))))}))}disable(){return super.disable(this.formPromise)}remove(e){return i(this,void 0,void 0,(function*(){if(this.keysConfiguredCount<=1||null!=e.removePromise)return;const t=null!=e.name?e.name:this.i18nService.t("webAuthnkeyX",e.id);if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("removeU2fConfirmation"),t,this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return;const n=yield this.buildRequestModel(a.UpdateTwoFactorWebAuthnDeleteRequest);n.id=e.id;try{e.removePromise=this.apiService.deleteTwoFactorWebAuthn(n);const t=yield e.removePromise;e.removePromise=null,yield this.processResponse(t)}catch(i){this.logService.error(i)}}))}readKey(){return i(this,void 0,void 0,(function*(){if(null==this.keyIdAvailable)return;const e=yield this.buildRequestModel(o.SecretVerificationRequest);try{this.challengePromise=this.apiService.getTwoFactorWebAuthnChallenge(e);const t=yield this.challengePromise;this.readDevice(t)}catch(t){this.logService.error(t)}}))}readDevice(e){console.log("listening for key..."),this.resetWebAuthn(!0),navigator.credentials.create({publicKey:e}).then((e=>{this.ngZone.run((()=>{this.webAuthnListening=!1,this.webAuthnResponse=e}))})).catch((e=>{console.error(e),this.resetWebAuthn(!1),this.webAuthnError=!0}))}resetWebAuthn(e=!1){this.webAuthnResponse=null,this.webAuthnError=!1,this.webAuthnListening=e}processResponse(e){this.resetWebAuthn(),this.keys=[],this.keyIdAvailable=null,this.name=null,this.keysConfiguredCount=0;for(let t=1;t<=5;t++){if(null!=e.keys){const n=e.keys.filter((e=>e.id===t));if(n.length>0){this.keysConfiguredCount++,this.keys.push({id:t,name:n[0].name,configured:!0,migrated:n[0].migrated,removePromise:null});continue}}this.keys.push({id:t,name:null,configured:!1,removePromise:null}),null==this.keyIdAvailable&&(this.keyIdAvailable=t)}this.enabled=e.enabled}}t.TwoFactorWebAuthnComponent=z,z.ɵfac=function(e){return new(e||z)(c.ɵɵdirectiveInject(d.ApiService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(c.NgZone),c.ɵɵdirectiveInject(m.LogService),c.ɵɵdirectiveInject(h.UserVerificationService))},z.ɵcmp=c.ɵɵdefineComponent({type:z,selectors:[["app-two-factor-webauthn"]],features:[c.ɵɵInheritDefinitionFeature],decls:31,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","2faU2fTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-lg"],[1,"modal-content"],[1,"modal-header"],["id","2faU2fTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[3,"organizationId","type","onAuthed",4,"ngIf"],["ngNativeValidate","",3,"appApiAction","ngSubmit",4,"ngIf"],[3,"organizationId","type","onAuthed"],["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-body"],["type","success","icon","bwi bwi-check-circle",3,"title",4,"ngIf"],["type","warning"],[1,"mb-0"],["alt","FIDO2 WebAuthn logo'",1,"float-right","ml-5","mfaType7"],[1,"bwi-ul"],[3,"appApiAction",4,"ngFor","ngForOf"],[1,"row"],[1,"form-group","col-6"],["for","name"],["id","name","type","text","name","Name",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-secondary","mr-2",3,"disabled","appApiAction","click"],["readKeyBtn",""],[4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary",3,"disabled"],["class","bwi bwi-spinner bwi-spin","aria-hidden","true",3,"title",4,"ngIf"],["type","button","class","btn btn-outline-secondary btn-submit",3,"appApiAction","disabled","click",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["type","success","icon","bwi bwi-check-circle",3,"title"],[3,"appApiAction"],["removeKeyBtn",""],[1,"bwi","bwi-li","bwi-key"],["class","bwi bwi-spin bwi-spinner text-muted bwi-fw","aria-hidden","true",3,"title",4,"ngIf"],["href","#","appStopClick","",3,"click"],["aria-hidden","true",1,"bwi","bwi-spin","bwi-spinner","text-muted","bwi-fw",3,"title"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted"],["aria-hidden","true",1,"bwi","bwi-check-circle","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-danger"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["disableBtn",""]],template:function(e,t){1&e&&(c.ɵɵelementStart(0,"div",0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"div",1),c.ɵɵtext(3,"\n "),c.ɵɵelementStart(4,"div",2),c.ɵɵtext(5,"\n "),c.ɵɵelementStart(6,"div",3),c.ɵɵtext(7,"\n "),c.ɵɵelementStart(8,"h2",4),c.ɵɵtext(9),c.ɵɵpipe(10,"i18n"),c.ɵɵelementStart(11,"small"),c.ɵɵtext(12),c.ɵɵpipe(13,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(14,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(15,"\n "),c.ɵɵelementStart(16,"button",5),c.ɵɵpipe(17,"i18n"),c.ɵɵtext(18,"\n "),c.ɵɵelementStart(19,"span",6),c.ɵɵtext(20,"×"),c.ɵɵelementEnd(),c.ɵɵtext(21,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(22,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(23,"\n "),c.ɵɵtemplate(24,C,2,2,"app-two-factor-verify",7),c.ɵɵtext(25,"\n "),c.ɵɵtemplate(26,j,91,43,"form",8),c.ɵɵtext(27,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(28,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(29,"\n"),c.ɵɵelementEnd(),c.ɵɵtext(30,"\n")),2&e&&(c.ɵɵadvance(9),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(10,5,"twoStepLogin"),"\n "),c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(13,7,"webAuthnTitle")),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(17,9,"close")),c.ɵɵadvance(8),c.ɵɵproperty("ngIf",!t.authed),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",t.authed))},directives:[v.A11yTitleDirective,f.NgIf,g.TwoFactorVerifyComponent,y.NgControlStatusGroup,y.NgForm,x.ApiActionDirective,S.CalloutComponent,f.NgForOf,y.DefaultValueAccessor,y.NgControlStatus,y.NgModel,b.StopClickDirective],pipes:[w.I18nPipe],encapsulation:2})},80445:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TwoFactorYubiKeyComponent=void 0;n(91674),n(51554),n(36631),n(73828),n(57055);const r=n(97374),o=n(17128),a=n(40906),s=n(32621),l=n(91674),c=n(51554),d=n(73828),p=n(36631),u=n(57055),m=n(8863),h=n(57490),v=n(12720),f=n(96832),g=n(56820),y=n(51626),x=n(48198),S=n(99729);function b(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"app-two-factor-verify",9),s.ɵɵlistener("onAuthed",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().auth(t)})),s.ɵɵtext(1,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("organizationId",e.organizationId)("type",e.type)}}function w(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",29),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2),s.ɵɵpipe(3,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(1,2,"enabled")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(3,4,"twoStepLoginProviderEnabled"),"\n "))}function C(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"input",34),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().$implicit.key=t})),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(),t=e.index,n=e.$implicit;s.ɵɵpropertyInterpolate1("id","key",t+1,""),s.ɵɵpropertyInterpolate1("name","Key",t+1,""),s.ɵɵproperty("ngModel",n.key)}}function I(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",35),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span",36),s.ɵɵtext(3),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"button",37),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(2).remove(t)})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",38),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext().$implicit;s.ɵɵadvance(3),s.ɵɵtextInterpolate(e.existingKey),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,2,"remove"))}}function E(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",30),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",31),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,C,1,3,"input",32),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,I,11,4,"div",33),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit,n=t.index;s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","key",n+1,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(4,4,"yubikeyX",n+1)),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.existingKey),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.existingKey)}}function P(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",39,40),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).disable()})),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",26),s.ɵɵpipe(4,"i18n"),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"span"),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵproperty("appApiAction",t.disablePromise)("disabled",e.loading),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(4,4,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,6,"disableAllKeys"))}}function O(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"form",10,11),s.ɵɵlistener("ngSubmit",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().submit()})),s.ɵɵtext(2,"\n "),s.ɵɵelementStart(3,"div",12),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,w,4,6,"app-callout",13),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"app-callout",14),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"p"),s.ɵɵtext(10),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"ul",15),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"li"),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"li"),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"img",16),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"p"),s.ɵɵtext(28),s.ɵɵpipe(29,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"ol"),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"li"),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"li"),s.ɵɵtext(38),s.ɵɵpipe(39,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"li"),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"li"),s.ɵɵtext(46),s.ɵɵpipe(47,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelement(50,"hr"),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"div",17),s.ɵɵtext(53,"\n "),s.ɵɵtemplate(54,E,10,7,"div",18),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"strong",19),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"div",20),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"input",21),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().nfc=t})),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"label",22),s.ɵɵtext(66),s.ɵɵpipe(67,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"small",23),s.ɵɵtext(71),s.ɵɵpipe(72,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(74,"\n "),s.ɵɵelementStart(75,"div",24),s.ɵɵtext(76,"\n "),s.ɵɵelementStart(77,"button",25),s.ɵɵtext(78,"\n "),s.ɵɵelement(79,"i",26),s.ɵɵpipe(80,"i18n"),s.ɵɵtext(81,"\n "),s.ɵɵelementStart(82,"span"),s.ɵɵtext(83),s.ɵɵpipe(84,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(86,"\n "),s.ɵɵtemplate(87,P,10,8,"button",27),s.ɵɵtext(88,"\n "),s.ɵɵelementStart(89,"button",28),s.ɵɵtext(90),s.ɵɵpipe(91,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(92,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext();s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(5),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(11,20,"twoFactorYubikeyWarning")),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,22,"twoFactorYubikeySupportUsb")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(21,24,"twoFactorYubikeySupportMobile")),s.ɵɵadvance(8),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(29,26,"twoFactorYubikeyAdd"),":"),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,28,"twoFactorYubikeyPlugIn")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(39,30,"twoFactorYubikeySelectKey")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(43,32,"twoFactorYubikeyTouchButton")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(47,34,"twoFactorYubikeySaveForm")),s.ɵɵadvance(8),s.ɵɵproperty("ngForOf",t.keys),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,36,"nfcSupport")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",t.nfc),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(67,38,"twoFactorYubikeySupportsNfc")),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(72,40,"twoFactorYubikeySupportsNfcDesc")),s.ɵɵadvance(6),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(80,42,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(84,44,"save")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.enabled),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(91,46,"close"),"\n ")}}class k extends a.TwoFactorBaseComponent{constructor(e,t,n,i,o){super(e,t,n,i,o),this.type=r.TwoFactorProviderType.Yubikey,this.nfc=!1}auth(e){super.auth(e),this.processResponse(e.response)}submit(){const e=Object.create(null,{enable:{get:()=>super.enable}});return i(this,void 0,void 0,(function*(){const t=yield this.buildRequestModel(o.UpdateTwoFactorYubioOtpRequest);return t.key1=null!=this.keys&&this.keys.length>0?this.keys[0].key:null,t.key2=null!=this.keys&&this.keys.length>1?this.keys[1].key:null,t.key3=null!=this.keys&&this.keys.length>2?this.keys[2].key:null,t.key4=null!=this.keys&&this.keys.length>3?this.keys[3].key:null,t.key5=null!=this.keys&&this.keys.length>4?this.keys[4].key:null,t.nfc=this.nfc,e.enable.call(this,(()=>i(this,void 0,void 0,(function*(){this.formPromise=this.apiService.putTwoFactorYubiKey(t);const e=yield this.formPromise;yield this.processResponse(e),this.platformUtilsService.showToast("success",null,this.i18nService.t("yubikeysUpdated"))}))))}))}disable(){return super.disable(this.disablePromise)}remove(e){e.existingKey=null,e.key=null}processResponse(e){this.enabled=e.enabled,this.keys=[{key:e.key1,existingKey:this.padRight(e.key1)},{key:e.key2,existingKey:this.padRight(e.key2)},{key:e.key3,existingKey:this.padRight(e.key3)},{key:e.key4,existingKey:this.padRight(e.key4)},{key:e.key5,existingKey:this.padRight(e.key5)}],this.nfc=e.nfc||!e.enabled}padRight(e,t="•",n=44){if(null==e||null==t||e.length>=n)return e;const i=(n-e.length)/t.length;for(let r=0;rthis.apiService.postAccountKey(e))),yield this.formPromise,this.platformUtilsService.showToast("success",this.i18nService.t("keyUpdated"),this.i18nService.t("logBackInOthersToo"),{timeout:15e3}),this.messagingService.send("logout")}catch(e){this.logService.error(e)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("masterPassRequired"))}))}makeRequest(){return i(this,void 0,void 0,(function*(){const e=yield this.cryptoService.getKey(),t=yield this.cryptoService.makeEncKey(e),n=yield this.cryptoService.getPrivateKey();let i=null;null!=n&&(i=yield this.cryptoService.encrypt(n,t[0]));const s=new a.UpdateKeyRequest;s.privateKey=null!=i?i.encryptedString:null,s.key=t[1].encryptedString,s.masterPasswordHash=yield this.cryptoService.hashPassword(this.masterPassword,null),yield this.syncService.fullSync(!0);const l=yield this.folderService.getAllDecrypted();for(let r=0;rthis.apiService.refreshIdentityToken())),yield this.formPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("updatedLicense")),this.onUpdated.emit()}catch(t){this.logService.error(t)}else this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile"))}))}cancel(){this.onCanceled.emit()}}t.UpdateLicenseComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.ApiService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.PlatformUtilsService),o.ɵɵdirectiveInject(c.LogService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-update-license"]],inputs:{organizationId:"organizationId"},outputs:{onUpdated:"onUpdated",onCanceled:"onCanceled"},decls:31,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","ngSubmit"],["form",""],[1,"form-group"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button",1,"btn","btn-outline-secondary",3,"click"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"form",0,1),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(2,"\n "),o.ɵɵelementStart(3,"div",2),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"label",3),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelement(9,"input",4),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"small",5),o.ɵɵtext(12),o.ɵɵpipe(13,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"button",6),o.ɵɵtext(17,"\n "),o.ɵɵelement(18,"i",7),o.ɵɵpipe(19,"i18n"),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"span"),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementStart(26,"button",8),o.ɵɵlistener("click",(function(){return t.cancel()})),o.ɵɵtext(27),o.ɵɵpipe(28,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(30,"\n")),2&e){const e=o.ɵɵreference(1);o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,7,"licenseFile")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(13,9,"licenseFileDesc",t.organizationId?"bitwarden_organization_license.json":"bitwarden_premium_license.json")),o.ɵɵadvance(4),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(19,12,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,14,"submit")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(28,16,"cancel"),"\n ")}},directives:[d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective],pipes:[u.I18nPipe],encapsulation:2})},89805:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserBillingHistoryComponent=void 0;n(68012),n(91674),n(51554),n(73828);const r=n(98523),o=n(94285),a=n(32621),s=n(91674),l=n(51554),c=n(73828),d=n(68012),p=n(57490),u=n(52767),m=n(8863),h=n(99729),v=function(e){return{"bwi-spin":e}};function f(e,t){if(1&e){const e=a.ɵɵgetCurrentView();a.ɵɵelementStart(0,"button",3),a.ɵɵlistener("click",(function(){a.ɵɵrestoreView(e);return a.ɵɵnextContext().load()})),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",4),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()}if(2&e){const e=a.ɵɵnextContext();a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(5,v,e.loading)),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,3,"refresh"),"\n ")}}function g(e,t){1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",5),a.ɵɵpipe(3,"i18n"),a.ɵɵtext(4,"\n "),a.ɵɵelementStart(5,"span",6),a.ɵɵtext(6),a.ɵɵpipe(7,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵelementContainerEnd()),2&e&&(a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(3,2,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(7,4,"loading")))}function y(e,t){1&e&&(a.ɵɵelementStart(0,"p"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"noInvoices")))}function x(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",15),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"paid"),"\n "))}function S(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1,"\n "),a.ɵɵelement(2,"i",16),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,1,"unpaid"),"\n "))}function b(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td"),a.ɵɵtext(3),a.ɵɵpipe(4,"date"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵelementStart(8,"a",12),a.ɵɵpipe(9,"i18n"),a.ɵɵtext(10,"\n "),a.ɵɵelement(11,"i",13),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"a",14),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15),a.ɵɵpipe(16,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementStart(19,"td"),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementStart(23,"td"),a.ɵɵtext(24,"\n "),a.ɵɵtemplate(25,x,5,3,"span",2),a.ɵɵtext(26,"\n "),a.ɵɵtemplate(27,S,5,3,"span",2),a.ɵɵtext(28,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(29,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit;a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(4,9,e.date,"mediumDate")),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("href",e.pdfUrl,a.ɵɵsanitizeUrl),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(9,12,"downloadInvoice")),a.ɵɵadvance(5),a.ɵɵpropertyInterpolate("href",e.url,a.ɵɵsanitizeUrl),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(14,14,"viewInvoice")),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(16,16,"invoiceNumber",e.number),""),a.ɵɵadvance(5),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(21,19,e.amount,"$")),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.paid),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",!e.paid)}}function w(e,t){if(1&e&&(a.ɵɵelementStart(0,"table",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,b,30,22,"tr",11),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e.invoices)}}function C(e,t){1&e&&(a.ɵɵelementStart(0,"p"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"noTransactions")))}function I(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(2,1,"chargeNoun"),"\n "))}function E(e,t){1&e&&(a.ɵɵelementStart(0,"span"),a.ɵɵtext(1),a.ɵɵpipe(2,"i18n"),a.ɵɵelementEnd()),2&e&&(a.ɵɵadvance(1),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(2,1,"refundNoun")))}const P=function(e,t,n,i){return{"bwi-credit-card":e,"bwi-bank":t,"bwi-bitcoin text-warning":n,"bwi-paypal text-primary":i}};function O(e,t){if(1&e&&a.ɵɵelement(0,"i",19),2&e){const e=a.ɵɵnextContext().$implicit,t=a.ɵɵnextContext(3);a.ɵɵproperty("ngClass",a.ɵɵpureFunction4(1,P,e.paymentMethodType===t.paymentMethodType.Card,e.paymentMethodType===t.paymentMethodType.BankAccount||e.paymentMethodType===t.paymentMethodType.WireTransfer,e.paymentMethodType===t.paymentMethodType.BitPay,e.paymentMethodType===t.paymentMethodType.PayPal))}}const k=function(e){return{"text-strike":e}};function A(e,t){if(1&e&&(a.ɵɵelementStart(0,"tr"),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"td"),a.ɵɵtext(3),a.ɵɵpipe(4,"date"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵelementStart(6,"td"),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,I,3,3,"span",2),a.ɵɵtext(9,"\n "),a.ɵɵtemplate(10,E,3,3,"span",2),a.ɵɵtext(11,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"td"),a.ɵɵtext(14,"\n "),a.ɵɵtemplate(15,O,1,6,"i",17),a.ɵɵtext(16),a.ɵɵelementEnd(),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"td",18),a.ɵɵpipe(19,"i18n"),a.ɵɵtext(20),a.ɵɵpipe(21,"currency"),a.ɵɵelementEnd(),a.ɵɵtext(22,"\n "),a.ɵɵelementEnd()),2&e){const e=t.$implicit,n=a.ɵɵnextContext(3);a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind2(4,8,e.createdDate,"mediumDate")),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.type===n.transactionType.Charge||e.type===n.transactionType.Credit),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.type===n.transactionType.Refund),a.ɵɵadvance(5),a.ɵɵproperty("ngIf",e.paymentMethodType),a.ɵɵadvance(1),a.ɵɵtextInterpolate1("\n ",e.details,"\n "),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(19,11,e.refunded?"refunded":"")),a.ɵɵproperty("ngClass",a.ɵɵpureFunction1(16,k,e.refunded)),a.ɵɵadvance(2),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(21,13,e.amount,"$"),"\n ")}}function T(e,t){if(1&e&&(a.ɵɵelementStart(0,"table",10),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"tbody"),a.ɵɵtext(3,"\n "),a.ɵɵtemplate(4,A,23,18,"tr",11),a.ɵɵtext(5,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(6,"\n "),a.ɵɵelementEnd()),2&e){const e=a.ɵɵnextContext(2);a.ɵɵadvance(4),a.ɵɵproperty("ngForOf",e.transactions)}}function M(e,t){if(1&e&&(a.ɵɵelementContainerStart(0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h2"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,y,3,3,"p",2),a.ɵɵtext(7,"\n "),a.ɵɵtemplate(8,w,7,1,"table",7),a.ɵɵtext(9,"\n "),a.ɵɵelementStart(10,"h2",8),a.ɵɵtext(11),a.ɵɵpipe(12,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(13,"\n "),a.ɵɵtemplate(14,C,3,3,"p",2),a.ɵɵtext(15,"\n "),a.ɵɵtemplate(16,T,7,1,"table",7),a.ɵɵtext(17,"\n "),a.ɵɵelementStart(18,"small",9),a.ɵɵtext(19),a.ɵɵpipe(20,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(21,"\n"),a.ɵɵelementContainerEnd()),2&e){const e=a.ɵɵnextContext();a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(4,7,"invoices")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!e.invoices||!e.invoices.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.invoices&&e.invoices.length),a.ɵɵadvance(3),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(12,9,"transactions")),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!e.transactions||!e.transactions.length),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",e.transactions&&e.transactions.length),a.ɵɵadvance(3),a.ɵɵtextInterpolate1("* ",a.ɵɵpipeBind2(20,11,"chargesStatement","BITWARDEN"),"")}}class B{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.router=i,this.loading=!1,this.firstLoaded=!1,this.paymentMethodType=r.PaymentMethodType,this.transactionType=o.TransactionType}ngOnInit(){return i(this,void 0,void 0,(function*(){this.platformUtilsService.isSelfHost()&&this.router.navigate(["/settings/subscription"]),yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.loading=!0,this.billing=yield this.apiService.getUserBillingHistory(),this.loading=!1)}))}get invoices(){return null!=this.billing?this.billing.invoices:null}get transactions(){return null!=this.billing?this.billing.transactions:null}}t.UserBillingHistoryComponent=B,B.ɵfac=function(e){return new(e||B)(a.ɵɵdirectiveInject(s.ApiService),a.ɵɵdirectiveInject(l.I18nService),a.ɵɵdirectiveInject(c.PlatformUtilsService),a.ɵɵdirectiveInject(d.Router))},B.ɵcmp=a.ɵɵdefineComponent({type:B,selectors:[["app-user-billing"]],decls:13,vars:6,consts:[[1,"tabbed-header","d-flex"],["bit-button","","buttonType","secondary","class","tw-ml-auto",3,"disabled","click",4,"ngIf"],[4,"ngIf"],["bit-button","","buttonType","secondary",1,"tw-ml-auto",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-refresh","bwi-fw",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["class","table mb-2",4,"ngIf"],[1,"spaced-header"],[1,"text-muted"],[1,"table","mb-2"],[4,"ngFor","ngForOf"],["target","_blank","rel","noopener",1,"mr-2",3,"href","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-file-pdf"],["target","_blank","rel","noopener",3,"href","title"],["aria-hidden","true",1,"bwi","bwi-check","text-success"],["aria-hidden","true",1,"bwi","bwi-exclamation-circle","text-muted"],["class","bwi bwi-fw","aria-hidden","true",3,"ngClass",4,"ngIf"],[3,"ngClass","title"],["aria-hidden","true",1,"bwi","bwi-fw",3,"ngClass"]],template:function(e,t){1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"h1"),a.ɵɵtext(3),a.ɵɵpipe(4,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(5,"\n "),a.ɵɵtemplate(6,f,5,7,"button",1),a.ɵɵtext(7,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(8,"\n"),a.ɵɵtemplate(9,g,9,6,"ng-container",2),a.ɵɵtext(10,"\n"),a.ɵɵtemplate(11,M,22,14,"ng-container",2),a.ɵɵtext(12,"\n")),2&e&&(a.ɵɵadvance(3),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(4,4,"billingHistory"),"\n "),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",t.firstLoaded),a.ɵɵadvance(3),a.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),a.ɵɵadvance(2),a.ɵɵproperty("ngIf",t.billing))},directives:[p.NgIf,u.ButtonComponent,p.NgClass,p.NgForOf,m.A11yTitleDirective],pipes:[h.I18nPipe,p.DatePipe,p.CurrencyPipe],encapsulation:2})},67562:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.UserSubscriptionComponent=void 0;n(68012),n(91674),n(51554),n(36631),n(73828),n(30694);const r=n(32621),o=n(30694),a=n(91674),s=n(73828),l=n(51554),c=n(68012),d=n(36631),p=n(57490),u=n(20138),m=n(52767),h=n(56820),v=n(25108),f=n(8863),g=n(13205),y=n(34959),x=n(99729);function S(e,t){1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function b(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",2),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span",3),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n"),r.ɵɵelementContainerEnd()),2&e&&(r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,2,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,4,"loading")))}function w(e,t){1&e&&(r.ɵɵelementStart(0,"bit-callout",6),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"canceled")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"subscriptionCanceled"),""))}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"bit-callout",6),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"p"),r.ɵɵtext(4),r.ɵɵpipe(5,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"button",7,8),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).reinstate()})),r.ɵɵtext(9,"\n "),r.ɵɵelement(10,"i",9),r.ɵɵpipe(11,"i18n"),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"span"),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(8),t=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,6,"pendingCancellation")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(5,8,"subscriptionPendingCanceled")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.reinstatePromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(11,10,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(15,12,"reinstateSubscription"))}}function I(e,t){if(1&e&&(r.ɵɵelementStart(0,"dd"),r.ɵɵtext(1),r.ɵɵpipe(2,"date"),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(2,1,e.sub.expiration,"mediumDate"))}}function E(e,t){1&e&&(r.ɵɵelementStart(0,"dd"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"neverExpires")))}function P(e,t){if(1&e&&(r.ɵɵelementStart(0,"dl"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"dt"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,I,3,4,"dd",1),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,E,3,3,"dd",1),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,3,"expiration")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.sub.expiration),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.sub.expiration)}}function O(e,t){1&e&&(r.ɵɵelementStart(0,"span",15),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(2,1,"pendingCancellation")))}function k(e,t){if(1&e&&(r.ɵɵelementStart(0,"tr"),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td"),r.ɵɵtext(3),r.ɵɵpipe(4,"currency"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"td"),r.ɵɵtext(7),r.ɵɵpipe(8,"currency"),r.ɵɵpipe(9,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵadvance(3),r.ɵɵtextInterpolate3("\n ",e.name," ",e.quantity>1?"×"+e.quantity:""," @\n ",r.ɵɵpipeBind2(4,5,e.amount,"$"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate2("",r.ɵɵpipeBind2(8,8,e.quantity*e.amount,"$")," /",r.ɵɵpipeBind1(9,11,e.interval),"")}}function A(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",16),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"strong",17),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"table",18),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"tbody"),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,k,11,13,"tr",19),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,2,"details")),r.ɵɵadvance(7),r.ɵɵproperty("ngForOf",e.subscription.items)}}function T(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",10),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",11),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"dl"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"dt"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"dd"),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"span",12),r.ɵɵtext(13),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵtemplate(15,O,3,3,"span",13),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"dt"),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"dd"),r.ɵɵtext(23),r.ɵɵpipe(24,"date"),r.ɵɵpipe(25,"currency"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,A,14,4,"div",14),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"status")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(e.subscription&&e.subscription.status||"-"),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,8,"nextCharge")),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.nextInvoice?r.ɵɵpipeBind2(24,10,e.nextInvoice.date,"mediumDate")+", "+r.ɵɵpipeBind2(25,13,e.nextInvoice.amount,"$"):"-","\n "),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.subscription)}}function M(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",23),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",24),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!1)})),r.ɵɵpipe(5,"i18n"),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"span",26),r.ɵɵtext(8,"×"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementStart(11,"h3",27),r.ɵɵtext(12),r.ɵɵpipe(13,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"app-update-license",28),r.ɵɵlistener("onUpdated",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!0)}))("onCanceled",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).closeUpdateLicense(!1)})),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(5,2,"cancel")),r.ɵɵadvance(8),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(13,4,"updateLicense")))}function B(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div"),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"button",20),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).updateLicense()})),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"a",21),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵtemplate(13,M,19,6,"div",22),r.ɵɵtext(14,"\n "),r.ɵɵelementContainerEnd()}if(2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(6,3,"updateLicense"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(10,5,"manageSubscription"),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.showUpdateLicense)}}function D(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",35),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).downloadLicense()})),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"downloadLicense"),"\n "))}function R(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",36,37),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(3).cancel()})),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",9),r.ɵɵpipe(4,"i18n"),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"span"),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext(3);r.ɵɵproperty("appApiAction",t.cancelPromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(4,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,6,"cancelSubscription"))}}function F(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",29),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",35),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).adjustStorage(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",41),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).adjustStorage(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"addStorage"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"removeStorage"),"\n "))}function U(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"app-adjust-storage",42),r.ɵɵlistener("onAdjusted",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).closeStorage(!0)}))("onCanceled",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(4).closeStorage(!1)})),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(4);r.ɵɵproperty("storageGbPrice",4)("add",e.adjustStorageAdd)}}function V(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",38),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,F,10,6,"div",39),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,U,1,2,"app-adjust-storage",40),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(3);r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.showAdjustStorage),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.showAdjustStorage)}}const N=function(e){return{width:e}};function _(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",29),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,D,3,3,"button",30),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,R,10,8,"button",31),r.ɵɵtext(7,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",32),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"p"),r.ɵɵtext(14),r.ɵɵpipe(15,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"div",33),r.ɵɵtext(18,"\n "),r.ɵɵelementStart(19,"div",34),r.ɵɵtext(20),r.ɵɵpipe(21,"percent"),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,V,9,2,"ng-container",1),r.ɵɵtext(25,"\n "),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!e.subscription||!e.subscription.cancelled),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(11,8,"storage")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind3(15,10,"subscriptionStorage",e.sub.maxStorageGb||0,e.sub.storageName||"0 MB")),r.ɵɵadvance(5),r.ɵɵproperty("ngStyle",r.ɵɵpureFunction1(16,N,e.storageProgressWidth+"%")),r.ɵɵattribute("aria-valuenow",e.storagePercentage),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(21,14,e.storagePercentage/100),"\n "),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",e.subscription&&!e.subscription.cancelled&&!e.subscriptionMarkedForCancel)}}function j(e,t){if(1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,w,4,6,"bit-callout",4),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,C,18,14,"bit-callout",4),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,P,10,5,"dl",1),r.ɵɵtext(7,"\n "),r.ɵɵtemplate(8,T,31,16,"div",5),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,B,15,7,"ng-container",1),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,_,26,18,"ng-container",1),r.ɵɵtext(13,"\n"),r.ɵɵelementContainerEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscription&&e.subscription.cancelled),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.subscriptionMarkedForCancel),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.selfHosted),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!e.selfHosted)}}const z=function(e,t){return{"page-header":e,"tabbed-header":t}};class H{constructor(e,t,n,i,r,o){this.tokenService=e,this.apiService=t,this.platformUtilsService=n,this.i18nService=i,this.router=r,this.logService=o,this.loading=!1,this.firstLoaded=!1,this.adjustStorageAdd=!0,this.showAdjustStorage=!1,this.showUpdateLicense=!1,this.selfHosted=!1,this.selfHosted=n.isSelfHost()}ngOnInit(){return i(this,void 0,void 0,(function*(){yield this.load(),this.firstLoaded=!0}))}load(){return i(this,void 0,void 0,(function*(){this.loading||(this.tokenService.getPremium()?(this.loading=!0,this.sub=yield this.apiService.getUserSubscription(),this.loading=!1):this.router.navigate(["/settings/subscription/premium"]))}))}reinstate(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(this.usingInAppPurchase)return void this.platformUtilsService.showDialog(this.i18nService.t("manageSubscriptionFromStore"),this.i18nService.t("cancelSubscription"),null,null,"warning");if(yield this.platformUtilsService.showDialog(this.i18nService.t("reinstateConfirmation"),this.i18nService.t("reinstateSubscription"),this.i18nService.t("yes"),this.i18nService.t("cancel")))try{this.reinstatePromise=this.apiService.postReinstatePremium(),yield this.reinstatePromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("reinstated")),this.load()}catch(e){this.logService.error(e)}}))}cancel(){return i(this,void 0,void 0,(function*(){if(this.loading)return;if(this.usingInAppPurchase)return void this.platformUtilsService.showDialog(this.i18nService.t("manageSubscriptionFromStore"),this.i18nService.t("cancelSubscription"),null,null,"warning");if(yield this.platformUtilsService.showDialog(this.i18nService.t("cancelConfirmation"),this.i18nService.t("cancelSubscription"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning"))try{this.cancelPromise=this.apiService.postCancelPremium(),yield this.cancelPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("canceledSubscription")),this.load()}catch(e){this.logService.error(e)}}))}downloadLicense(){if(this.loading)return;const e=JSON.stringify(this.sub.license,null,2);this.platformUtilsService.saveFile(window,e,null,"bitwarden_premium_license.json")}updateLicense(){this.loading||(this.showUpdateLicense=!0)}closeUpdateLicense(e){this.showUpdateLicense=!1,e&&this.load()}adjustStorage(e){this.usingInAppPurchase?this.platformUtilsService.showDialog(this.i18nService.t("cannotPerformInAppPurchase"),this.i18nService.t(e?"addStorage":"removeStorage"),null,null,"warning"):(this.adjustStorageAdd=e,this.showAdjustStorage=!0)}closeStorage(e){this.showAdjustStorage=!1,e&&this.load()}get subscriptionMarkedForCancel(){return null!=this.subscription&&!this.subscription.cancelled&&this.subscription.cancelAtEndDate}get subscription(){return null!=this.sub?this.sub.subscription:null}get nextInvoice(){return null!=this.sub?this.sub.upcomingInvoice:null}get storagePercentage(){return null!=this.sub&&this.sub.maxStorageGb?+(this.sub.storageGb/this.sub.maxStorageGb*100).toFixed(2):0}get storageProgressWidth(){return this.storagePercentage<5?5:0}get usingInAppPurchase(){return null!=this.sub&&this.sub.usingInAppPurchase}get title(){return this.i18nService.t(this.selfHosted?"subscription":"premiumMembership")}}t.UserSubscriptionComponent=H,H.ɵfac=function(e){return new(e||H)(r.ɵɵdirectiveInject(o.TokenService),r.ɵɵdirectiveInject(a.ApiService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.I18nService),r.ɵɵdirectiveInject(c.Router),r.ɵɵdirectiveInject(d.LogService))},H.ɵcmp=r.ɵɵdefineComponent({type:H,selectors:[["app-user-subscription"]],decls:12,vars:8,consts:[[3,"ngClass"],[4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],[1,"sr-only"],["type","warning",3,"title",4,"ngIf"],["class","row",4,"ngIf"],["type","warning",3,"title"],["bit-button","","type","button","buttonType","secondary",1,"btn-submit",3,"appApiAction","disabled","click"],["reinstateBtn",""],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"row"],[1,"col-4"],[1,"text-capitalize"],["bit-badge","","badgeType","warning",4,"ngIf"],["class","col-8",4,"ngIf"],["bit-badge","","badgeType","warning"],[1,"col-8"],[1,"d-block","mb-1"],[1,"table"],[4,"ngFor","ngForOf"],["type","button","bit-button","","buttonType","secondary",3,"click"],["bit-button","","buttonType","secondary","href","https://vault.bitwarden.com/#/settings/subscription","target","_blank","rel","noopener"],["class","card mt-3",4,"ngIf"],[1,"card","mt-3"],[1,"card-body"],["type","button",1,"close",3,"appA11yTitle","click"],["aria-hidden","true"],[1,"card-body-header"],[3,"onUpdated","onCanceled"],[1,"d-flex"],["bit-button","","type","button","buttonType","secondary",3,"click",4,"ngIf"],["bit-button","","type","button","buttonType","danger","class","btn-submit tw-ml-auto",3,"appApiAction","disabled","click",4,"ngIf"],[1,"spaced-header"],[1,"progress"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","bg-success",3,"ngStyle"],["bit-button","","type","button","buttonType","secondary",3,"click"],["bit-button","","type","button","buttonType","danger",1,"btn-submit","tw-ml-auto",3,"appApiAction","disabled","click"],["cancelBtn",""],[1,"mt-3"],["class","d-flex",4,"ngIf"],[3,"storageGbPrice","add","onAdjusted","onCanceled",4,"ngIf"],["bit-button","","type","button","buttonType","secondary",1,"tw-ml-1",3,"click"],[3,"storageGbPrice","add","onAdjusted","onCanceled"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h1"),r.ɵɵtext(3),r.ɵɵtemplate(4,S,9,6,"small",1),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n"),r.ɵɵtemplate(8,b,9,6,"ng-container",1),r.ɵɵtext(9,"\n"),r.ɵɵtemplate(10,j,14,6,"ng-container",1),r.ɵɵtext(11,"\n")),2&e&&(r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(5,z,t.selfHosted,!t.selfHosted)),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",t.title,"\n "),r.ɵɵadvance(1),r.ɵɵproperty("ngIf",t.firstLoaded&&t.loading),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",!t.firstLoaded&&t.loading),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.sub))},directives:[p.NgClass,p.NgIf,u.CalloutComponent,m.ButtonComponent,h.ApiActionDirective,v.BadgeComponent,p.NgForOf,f.A11yTitleDirective,g.UpdateLicenseComponent,p.NgStyle,y.AdjustStorageComponent],pipes:[x.I18nPipe,p.DatePipe,p.CurrencyPipe,p.PercentPipe],encapsulation:2})},81397:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VaultTimeoutInputComponent=void 0;const i=n(96832),r=n(96853),o=n(32621),a=n(57490),s=n(96832),l=n(51626),c=n(99729);function d(e,t){if(1&e&&(o.ɵɵelementStart(0,"app-callout",8),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind3(2,1,"vaultTimeoutPolicyInEffect",e.vaultTimeoutPolicyHours,e.vaultTimeoutPolicyMinutes),"\n")}}function p(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",9),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.value),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function u(e,t){1&e&&(o.ɵɵelementStart(0,"div",10),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"label",11),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"div",12),o.ɵɵtext(7,"\n "),o.ɵɵelementStart(8,"div",13),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",14),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small"),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(16,"\n "),o.ɵɵelementStart(17,"div",13),o.ɵɵtext(18,"\n "),o.ɵɵelement(19,"input",15),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"small"),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(25,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"customVaultTimeout")),o.ɵɵadvance(10),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,5,"hours")),o.ɵɵadvance(9),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(23,7,"minutes")))}class m extends r.VaultTimeoutInputComponent{}t.VaultTimeoutInputComponent=m,m.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(m)))(t||m)}}(),m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-vault-timeout-input"]],features:[o.ɵɵProvidersFeature([{provide:i.NG_VALUE_ACCESSOR,multi:!0,useExisting:m},{provide:i.NG_VALIDATORS,multi:!0,useExisting:m}]),o.ɵɵInheritDefinitionFeature],decls:23,vars:10,consts:[["type","info",4,"ngIf"],[3,"formGroup"],[1,"form-group"],["for","vaultTimeout"],["id","vaultTimeout","name","VaultTimeout","formControlName","vaultTimeout",1,"form-control"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"form-text","text-muted"],["class","form-group","formGroupName","custom",4,"ngIf"],["type","info"],[3,"ngValue"],["formGroupName","custom",1,"form-group"],["for","customVaultTimeout"],[1,"row"],[1,"col-6"],["id","hours","type","number","min","0","name","hours","formControlName","hours",1,"form-control"],["id","minutes","type","number","min","0","name","minutes","formControlName","minutes",1,"form-control"]],template:function(e,t){1&e&&(o.ɵɵtemplate(0,d,3,5,"app-callout",0),o.ɵɵtext(1,"\n\n"),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"div",2),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",3),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementStart(10,"select",4),o.ɵɵtext(11,"\n "),o.ɵɵtemplate(12,p,2,2,"option",5),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"small",6),o.ɵɵtext(16),o.ɵɵpipe(17,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵtemplate(20,u,27,9,"div",7),o.ɵɵtext(21,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n")),2&e&&(o.ɵɵproperty("ngIf",t.vaultTimeoutPolicy),o.ɵɵadvance(2),o.ɵɵproperty("formGroup",t.form),o.ɵɵadvance(5),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,6,"vaultTimeout")),o.ɵɵadvance(5),o.ɵɵproperty("ngForOf",t.vaultTimeouts),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(17,8,"vaultTimeoutDesc")),o.ɵɵadvance(4),o.ɵɵproperty("ngIf",t.showCustom))},directives:[a.NgIf,s.NgControlStatusGroup,s.FormGroupDirective,s.SelectControlValueAccessor,s.NgControlStatus,s.FormControlName,a.NgForOf,l.CalloutComponent,s.NgSelectOption,s.ɵNgSelectMultipleOption,s.FormGroupName,s.MinValidator,s.NumberValueAccessor,s.DefaultValueAccessor],pipes:[c.I18nPipe],encapsulation:2})},80945:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.VerifyEmailComponent=void 0;n(91674),n(51554),n(36631),n(73828);const r=n(32621),o=n(91674),a=n(51554),s=n(73828),l=n(36631),c=n(56820),d=n(99729);class p{constructor(e,t,n,i){this.apiService=e,this.i18nService=t,this.platformUtilsService=n,this.logService=i}send(){return i(this,void 0,void 0,(function*(){if(null==this.actionPromise){try{this.actionPromise=this.apiService.postAccountVerifyEmail(),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("checkInboxForVerification"))}catch(e){this.logService.error(e)}this.actionPromise=null}}))}}t.VerifyEmailComponent=p,p.ɵfac=function(e){return new(e||p)(r.ɵɵdirectiveInject(o.ApiService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.LogService))},p.ɵcmp=r.ɵɵdefineComponent({type:p,selectors:[["app-verify-email"]],decls:27,vars:14,consts:[[1,"card","border-warning"],[1,"card-header","bg-warning","text-white"],["aria-hidden","true",1,"bwi","bwi-envelope","bwi-fw"],[1,"card-body"],["type","button",1,"btn","btn-block","btn-outline-secondary","btn-submit",3,"appApiAction","disabled","click"],["sendBtn",""],["aria-hidden","true",1,"bwi","bwi-spin","bwi-spinner",3,"title"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",2),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",3),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"p"),r.ɵɵtext(11),r.ɵɵpipe(12,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",4,5),r.ɵɵlistener("click",(function(){return t.send()})),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",6),r.ɵɵpipe(18,"i18n"),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"span"),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(24,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n")),2&e){const e=r.ɵɵreference(15);r.ɵɵadvance(5),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(6,6,"verifyEmail"),"\n "),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(12,8,"verifyEmailDesc")),r.ɵɵadvance(3),r.ɵɵproperty("appApiAction",t.actionPromise)("disabled",e.loading),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(18,10,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(22,12,"sendEmail"),"\n ")}},directives:[c.ApiActionDirective],pipes:[d.I18nPipe],encapsulation:2})},26140:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ExportComponent=void 0;n(96832);const i=n(21748),r=(n(85714),n(32034),n(97445),n(51554),n(36631),n(73828),n(62166),n(57055),n(32621)),o=n(85714),a=n(51554),s=n(73828),l=n(97445),c=n(32034),d=n(62166),p=n(36631),u=n(57055),m=n(96832),h=n(56820),v=n(57490),f=n(4158),g=n(51626),y=n(44995),x=n(99729);function S(e,t){1&e&&(r.ɵɵelementStart(0,"app-callout",13),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2),r.ɵɵpipe(3,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(1,2,"vaultExportDisabled")),r.ɵɵadvance(2),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(3,4,"personalVaultExportPolicyInEffect"),"\n "))}function b(e,t){if(1&e&&r.ɵɵelement(0,"app-export-scope-callout",14),2&e){const e=r.ɵɵnextContext();r.ɵɵproperty("organizationId",e.organizationId)}}function w(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",15),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("value",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}class C extends i.ExportComponent{constructor(e,t,n,i,r,o,a,s,l){super(e,t,n,i,r,o,window,a,s,l)}saved(){super.saved(),this.platformUtilsService.showToast("success",null,this.i18nService.t("exportSuccess"))}}t.ExportComponent=C,C.ɵfac=function(e){return new(e||C)(r.ɵɵdirectiveInject(o.CryptoService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.ExportService),r.ɵɵdirectiveInject(c.EventService),r.ɵɵdirectiveInject(d.PolicyService),r.ɵɵdirectiveInject(p.LogService),r.ɵɵdirectiveInject(u.UserVerificationService),r.ɵɵdirectiveInject(m.FormBuilder))},C.ɵcmp=r.ɵɵdefineComponent({type:C,selectors:[["app-export"]],features:[r.ɵɵInheritDefinitionFeature],decls:49,vars:18,consts:[["ngNativeValidate","",3,"appApiAction","formGroup","ngSubmit"],["form",""],[1,"page-header"],["type","error",3,"title",4,"ngIf"],[3,"organizationId",4,"ngIf"],[1,"row"],[1,"form-group","col-6"],["for","format"],["id","format","name","Format","formControlName","format",1,"form-control"],[3,"value",4,"ngFor","ngForOf"],["ngDefaultControl","","formControlName","secret","name","secret"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","error",3,"title"],[3,"organizationId"],[3,"value"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"form",0,1),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(2,"\n "),r.ɵɵelementStart(3,"div",2),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"h1"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n\n "),r.ɵɵtemplate(10,S,4,6,"app-callout",3),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,b,1,1,"app-export-scope-callout",4),r.ɵɵtext(13,"\n\n "),r.ɵɵelementStart(14,"div",5),r.ɵɵtext(15,"\n "),r.ɵɵelementStart(16,"div",6),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"label",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"select",8),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,w,2,2,"option",9),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",5),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"div",6),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"app-user-verification",10),r.ɵɵtext(34,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementStart(38,"button",11),r.ɵɵtext(39,"\n "),r.ɵɵelement(40,"i",12),r.ɵɵpipe(41,"i18n"),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"span"),r.ɵɵtext(44),r.ɵɵpipe(45,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n")),2&e){const e=r.ɵɵreference(1);r.ɵɵproperty("appApiAction",t.formPromise)("formGroup",t.exportForm),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,10,"exportVault")),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.disabledByPolicy),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.disabledByPolicy),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(20,12,"fileFormat")),r.ɵɵadvance(5),r.ɵɵproperty("ngForOf",t.formatOptions),r.ɵɵadvance(14),r.ɵɵproperty("disabled",e.loading||t.exportForm.disabled),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(41,14,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(45,16,"exportVault"))}},directives:[m.NgControlStatusGroup,h.ApiActionDirective,m.FormGroupDirective,v.NgIf,m.SelectControlValueAccessor,m.NgControlStatus,m.FormControlName,v.NgForOf,f.UserVerificationComponent,m.DefaultValueAccessor,g.CalloutComponent,y.ExportScopeCalloutComponent,m.NgSelectOption,m.ɵNgSelectMultipleOption],pipes:[x.I18nPipe],encapsulation:2})},8042:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.GeneratorComponent=void 0;const r=n(32621),o=(n(68012),n(5675)),a=(n(64684),n(51554),n(36631),n(84275),n(73828),n(73569),n(13444),n(4184)),s=n(32621),l=n(84275),c=n(13444),d=n(73569),p=n(73828),u=n(51554),m=n(36631),h=n(68012),v=n(64684),f=n(57490),g=n(51626),y=n(31161),x=n(96832),S=n(8863),b=n(56820),w=n(99729),C=n(86758),I=["historyTemplate"];function E(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",10),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"passwordGeneratorPolicyInEffect"),"\n"))}function P(e,t){if(1&e&&(s.ɵɵelement(0,"div",11),s.ɵɵpipe(1,"colorPassword")),2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("innerHTML",s.ɵɵpipeBind1(1,1,e.password),s.ɵɵsanitizeHtml)}}function O(e,t){if(1&e&&(s.ɵɵelement(0,"div",11),s.ɵɵpipe(1,"colorPassword")),2&e){const e=s.ɵɵnextContext();s.ɵɵproperty("innerHTML",s.ɵɵpipeBind1(1,1,e.username),s.ɵɵsanitizeHtml)}}function k(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",13),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().typeChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","type_",e.value,""),s.ɵɵproperty("ngModel",n.type)("value",e.value)("checked",n.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","type_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function A(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",12),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",23),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","passwordType_",e.value,""),s.ɵɵproperty("ngModel",n.passwordOptions.type)("value",e.value)("checked",n.passwordOptions.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","passwordType_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function T(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",24),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",25),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",26),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",27),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.numWords=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",25),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",28),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"input",29),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.wordSeparator=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"label",30),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementStart(27,"div",31),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",32),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"input",33),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.capitalize=t})),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"label",34),s.ɵɵtext(34),s.ɵɵpipe(35,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",32),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"input",35),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.includeNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(41,"\n "),s.ɵɵelementStart(42,"label",36),s.ɵɵtext(43),s.ɵɵpipe(44,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,11,"numWords")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.numWords),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,13,"wordSeparator")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.wordSeparator),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,15,"options")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",e.passwordOptions.capitalize)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.capitalize),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(35,17,"capitalize")),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",e.passwordOptions.includeNumber)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.includeNumber),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(44,19,"includeNumber"))}}function M(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",24),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",25),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",37),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",38),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.length=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).lengthChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",25),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",39),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"input",40),s.ɵɵlistener("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.minNumber=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).minNumberChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",25),s.ɵɵtext(23,"\n "),s.ɵɵelementStart(24,"label",41),s.ɵɵtext(25),s.ɵɵpipe(26,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"input",42),s.ɵɵlistener("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.minSpecial=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).minSpecialChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"label",30),s.ɵɵtext(33),s.ɵɵpipe(34,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"div",31),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",32),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"input",43),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.uppercase=t})),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"label",44),s.ɵɵtext(44,"A-Z"),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"div",32),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"input",45),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.lowercase=t})),s.ɵɵpipe(50,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementStart(52,"label",46),s.ɵɵtext(53,"a-z"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementStart(56,"div",32),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"input",47),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.number=t})),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"label",48),s.ɵɵtext(62,"0-9"),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(64,"\n "),s.ɵɵelementStart(65,"div",32),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"input",49),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).passwordOptions.special=t})),s.ɵɵpipe(68,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"label",50),s.ɵɵtext(71,"!@#$%^&*"),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(73,"\n "),s.ɵɵelementStart(74,"div",32),s.ɵɵtext(75,"\n "),s.ɵɵelementStart(76,"input",51),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).savePasswordOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).avoidAmbiguous=t})),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementStart(78,"label",52),s.ɵɵtext(79),s.ɵɵpipe(80,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(81,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(82,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(83,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,21,"length")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.length),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,23,"minNumbers")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.minNumber),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(26,25,"minSpecial")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.passwordOptions.minSpecial),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(34,27,"options")),s.ɵɵadvance(7),s.ɵɵproperty("ngModel",e.passwordOptions.uppercase)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useUppercase),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(41,29,"uppercase")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.lowercase)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useLowercase),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(50,31,"lowercase")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.number)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useNumbers),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(59,33,"numbers")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.passwordOptions.special)("disabled",null==e.enforcedPasswordPolicyOptions?null:e.enforcedPasswordPolicyOptions.useSpecial),s.ɵɵattribute("aria-label",s.ɵɵpipeBind1(68,35,"specialCharacters")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.avoidAmbiguous),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(80,37,"ambiguous"))}}function B(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",15),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",16),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,A,7,6,"div",7),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵtemplate(11,T,48,21,"ng-container",8),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,M,84,39,"ng-container",8),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"div",17),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div"),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"button",18),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().regenerate()})),s.ɵɵtext(20),s.ɵɵpipe(21,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"button",19),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().copy()})),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",20),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"button",21),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().history()})),s.ɵɵpipe(31,"i18n"),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",22),s.ɵɵtext(34,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,7,"passwordType")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",e.passTypeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","passphrase"===e.passwordOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","password"===e.passwordOptions.type),s.ɵɵadvance(7),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(21,9,"regeneratePassword"),"\n "),s.ɵɵadvance(4),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(25,11,"copyPassword"),"\n "),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(31,13,"passwordHistory"))}}function D(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",63),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.type=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementStart(6,"div",64),s.ɵɵtext(7),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","usernameType_",e.value,""),s.ɵɵproperty("ngModel",n.usernameOptions.type)("value",e.value)("checked",n.usernameOptions.type===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","usernameType_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n "),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.desc)}}function R(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",32),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",65),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedService=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",14),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","forwardtype_",e.value,""),s.ɵɵproperty("ngModel",n.usernameOptions.forwardedService)("value",e.value)("checked",n.usernameOptions.forwardedService===e.value),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","forwardtype_",e.value,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function F(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",66),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",67),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedSimpleLoginApiKey=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"apiKey")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedSimpleLoginApiKey)}}function U(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",68),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",69),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedAnonAddyApiToken=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",25),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"label",70),s.ɵɵtext(14),s.ɵɵpipe(15,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"input",71),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedAnonAddyDomain=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,4,"apiAccessToken")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedAnonAddyApiToken),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(15,6,"domainName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedAnonAddyDomain)}}function V(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",72),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",73),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).usernameOptions.forwardedFirefoxApiToken=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"apiAccessToken")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.forwardedFirefoxApiToken)}}function N(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",31),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",30),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,R,7,6,"div",57),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵtemplate(11,F,11,4,"div",58),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,U,20,8,"div",58),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,V,11,4,"div",58),s.ɵɵtext(16,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,5,"service")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",e.forwardOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","simplelogin"===e.usernameOptions.forwardedService),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","anonaddy"===e.usernameOptions.forwardedService),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","firefoxrelay"===e.usernameOptions.forwardedService)}}function _(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",74),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",75),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.subaddressEmail=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"emailAddress")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.subaddressEmail)}}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",24),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",25),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",76),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",77),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.catchallDomain=t}))("blur",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,2,"domainName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.usernameOptions.catchallDomain)}}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",30),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",24),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",31),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",32),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",78),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.wordCapitalize=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"label",79),s.ɵɵtext(15),s.ɵɵpipe(16,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",32),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"input",80),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).saveUsernameOptions()}))("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).usernameOptions.wordIncludeNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(22,"\n "),s.ɵɵelementStart(23,"label",81),s.ɵɵtext(24),s.ɵɵpipe(25,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"options")),s.ɵɵadvance(9),s.ɵɵproperty("ngModel",e.usernameOptions.wordCapitalize),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(16,7,"capitalize")),s.ɵɵadvance(6),s.ɵɵproperty("ngModel",e.usernameOptions.wordIncludeNumber),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(25,9,"includeNumber"))}}function H(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",53),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",30),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",54),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"a",55),s.ɵɵpipe(11,"i18n"),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"i",56),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,D,10,7,"div",57),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,N,17,7,"ng-container",8),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,_,11,4,"div",58),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,j,11,4,"div",58),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,z,30,11,"ng-container",8),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",59,60),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"button",61),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().regenerate()})),s.ɵɵtext(32,"\n "),s.ɵɵelement(33,"i",62),s.ɵɵpipe(34,"i18n"),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"span"),s.ɵɵtext(37),s.ɵɵpipe(38,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",19),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext().copy()})),s.ɵɵtext(42),s.ɵɵpipe(43,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n"),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵreference(29),t=s.ɵɵnextContext();s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,12,"usernameType")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(11,14,"learnMore")),s.ɵɵadvance(7),s.ɵɵproperty("ngForOf",t.usernameTypeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","forwarded"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","subaddress"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","catchall"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","word"===t.usernameOptions.type),s.ɵɵadvance(2),s.ɵɵproperty("appApiAction",t.usernameGeneratingPromise),s.ɵɵadvance(3),s.ɵɵproperty("disabled",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(34,16,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(38,18,"regenerateUsername")),s.ɵɵadvance(5),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(43,20,"copyUsername"),"\n ")}}function L(e,t){}class K extends o.GeneratorComponent{constructor(e,t,n,i,r,o,a,s){super(e,t,i,n,r,o,a,window),this.modalService=s,i.isSelfHost()&&this.forwardOptions.splice(this.forwardOptions.findIndex((e=>"firefoxrelay"===e.value)),1)}history(){return i(this,void 0,void 0,(function*(){yield this.modalService.openViewRef(a.PasswordGeneratorHistoryComponent,this.historyModalRef)}))}lengthChanged(){document.getElementById("length").focus()}minNumberChanged(){document.getElementById("min-number").focus()}minSpecialChanged(){document.getElementById("min-special").focus()}}t.GeneratorComponent=K,K.ɵfac=function(e){return new(e||K)(s.ɵɵdirectiveInject(l.PasswordGenerationService),s.ɵɵdirectiveInject(c.UsernameGenerationService),s.ɵɵdirectiveInject(d.StateService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.I18nService),s.ɵɵdirectiveInject(m.LogService),s.ɵɵdirectiveInject(h.ActivatedRoute),s.ɵɵdirectiveInject(v.ModalService))},K.ɵcmp=s.ɵɵdefineComponent({type:K,selectors:[["app-generator"]],viewQuery:function(e,t){if(1&e&&s.ɵɵviewQuery(I,7,r.ViewContainerRef),2&e){let e;s.ɵɵqueryRefresh(e=s.ɵɵloadQuery())&&(t.historyModalRef=e.first)}},features:[s.ɵɵInheritDefinitionFeature],decls:35,vars:12,consts:[[1,"page-header"],["type","info",4,"ngIf"],[1,"card","card-generated","bg-light","my-4"],[1,"card-body"],["class","generated-wrapper","appSelectCopy","",3,"innerHTML",4,"ngIf"],["role","radiogroup","aria-labelledby","typeHeading",1,"form-group"],["id","typeHeading",1,"d-block"],["class","form-check form-check-inline",4,"ngFor","ngForOf"],[4,"ngIf"],["historyTemplate",""],["type","info"],["appSelectCopy","",1,"generated-wrapper",3,"innerHTML"],[1,"form-check","form-check-inline"],["type","radio","name","Type",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"form-check-label",3,"for"],["aria-labelledby","passwordTypeHeading","role","radiogroup",1,"form-group"],["id","passwordTypeHeading",1,"d-block"],[1,"d-flex"],["type","button",1,"btn","btn-primary",3,"click"],["type","button",1,"btn","btn-outline-secondary",3,"click"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clock","bwi-lg"],["type","radio","name","PasswordType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"row"],[1,"form-group","col-4"],["for","num-words"],["id","num-words","type","number","min","3","max","20",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","word-separator"],["id","word-separator","type","text","maxlength","1",1,"form-control",3,"ngModel","ngModelChange","blur"],[1,"d-block"],[1,"form-group"],[1,"form-check"],["id","capitalize","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","capitalize",1,"form-check-label"],["id","include-number","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","include-number",1,"form-check-label"],["for","length"],["id","length","type","number","min","5","max","128",1,"form-control",3,"ngModel","ngModelChange","blur","change"],["for","min-number"],["id","min-number","type","number","min","0","max","9",1,"form-control",3,"ngModel","blur","ngModelChange","change"],["for","min-special"],["id","min-special","type","number","min","0","max","9",1,"form-control",3,"ngModel","blur","ngModelChange","change"],["id","uppercase","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","uppercase",1,"form-check-label"],["id","lowercase","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","lowercase",1,"form-check-label"],["id","numbers","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","numbers",1,"form-check-label"],["id","special","type","checkbox",1,"form-check-input",3,"ngModel","disabled","change","ngModelChange"],["for","special",1,"form-check-label"],["id","ambiguous","type","checkbox",1,"form-check-input",3,"ngModel","change","ngModelChange"],["for","ambiguous",1,"form-check-label"],["aria-labelledby","usernameTypeHeading","role","radiogroup",1,"form-group"],["id","usernameTypeHeading"],["href","https://bitwarden.com/help/generator/#username-types","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["class","form-check",4,"ngFor","ngForOf"],["class","row",4,"ngIf"],[3,"appApiAction"],["form",""],["type","button",1,"btn","btn-submit","btn-primary",3,"disabled","click"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","radio","name","UsernameType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],[1,"small","text-muted"],["type","radio","name","ForwardType",1,"form-check-input",3,"ngModel","id","value","checked","ngModelChange","change"],["for","simplelogin-apikey"],["id","simplelogin-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","anonaddy-apikey"],["id","anonaddy-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","anonaddy-domain"],["id","anonaddy-domain","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","firefox-apikey"],["id","firefox-apikey","type","password",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","subaddress-email"],["id","subaddress-email","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["for","catchall-domain"],["id","catchall-domain","type","text",1,"form-control",3,"ngModel","ngModelChange","blur"],["id","capitalizeUsername","type","checkbox",3,"ngModel","change","ngModelChange"],["for","capitalizeUsername",1,"form-check-label"],["id","includeNumberUsername","type","checkbox",3,"ngModel","change","ngModelChange"],["for","includeNumberUsername",1,"form-check-label"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,E,3,3,"app-callout",1),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"div",2),s.ɵɵtext(10,"\n "),s.ɵɵelementStart(11,"div",3),s.ɵɵtext(12,"\n "),s.ɵɵtemplate(13,P,2,3,"div",4),s.ɵɵtext(14,"\n "),s.ɵɵtemplate(15,O,2,3,"div",4),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n"),s.ɵɵelementStart(19,"div",5),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",6),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵtemplate(25,k,7,6,"div",7),s.ɵɵtext(26,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n"),s.ɵɵtemplate(28,B,38,15,"ng-container",8),s.ɵɵtext(29,"\n"),s.ɵɵtemplate(30,H,46,22,"ng-container",8),s.ɵɵtext(31,"\n"),s.ɵɵtemplate(32,L,0,0,"ng-template",null,9,s.ɵɵtemplateRefExtractor),s.ɵɵtext(34,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,8,"generator")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",(null==t.enforcedPasswordPolicyOptions?null:t.enforcedPasswordPolicyOptions.inEffect())&&"password"===t.type),s.ɵɵadvance(6),s.ɵɵproperty("ngIf","password"===t.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","username"===t.type),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,10,"whatWouldYouLikeToGenerate")),s.ɵɵadvance(3),s.ɵɵproperty("ngForOf",t.typeOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf","password"===t.type),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","username"===t.type))},directives:[f.NgIf,f.NgForOf,g.CalloutComponent,y.SelectCopyDirective,x.RadioControlValueAccessor,x.DefaultValueAccessor,x.NgControlStatus,x.NgModel,S.A11yTitleDirective,x.MinValidator,x.MaxValidator,x.NumberValueAccessor,x.MaxLengthValidator,x.CheckboxControlValueAccessor,b.ApiActionDirective],pipes:[w.I18nPipe,C.ColorPasswordPipe],encapsulation:2})},56038:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ImportComponent=void 0;n(68012);const r=n(55733),o=n(78764),a=(n(51554),n(11223),n(36631),n(73828),n(62166),n(49906)),s=n(32621),l=n(51554),c=n(11223),d=n(68012),p=n(73828),u=n(62166),m=n(36631),h=n(57490),v=n(96832),f=n(51626),g=n(99729);function y(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",18),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffectImports"),"\n"))}function x(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",19),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function S(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",19),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"option",20),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,S,2,2,"option",9),s.ɵɵtext(5,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(4),s.ɵɵproperty("ngForOf",e.importOptions)}}function w(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",22),s.ɵɵtext(3,"\n https://bitwarden.com/help/export-your-data/"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementContainerEnd())}function C(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",23),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-lastpass/"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n "),s.ɵɵelementContainerEnd())}function I(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the KeePassX desktop application, navigate to "Database" → "Export to CSV file" and\n save the CSV file.\n '),s.ɵɵelementContainerEnd())}function E(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n In the Avira web vault, go to "Settings" → "My Data" → "Export data" and save the\n CSV file.\n '),s.ɵɵelementContainerEnd())}function P(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n In the Blur web vault, click your username at the top and go to "Settings" → "Export\n Data", then click "Export CSV" for your "Accounts".\n '),s.ɵɵelementContainerEnd())}function O(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SaveInCloud desktop application, navigate to "File" → "Export" → "As XML"\n and save the XML file.\n '),s.ɵɵelementContainerEnd())}function k(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to "Settings" → "Export" button and save the file "As CSV".\n '),s.ɵɵelementContainerEnd())}function A(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the KeePass 2 desktop application, navigate to "File" → "Export" and select the\n "KeePass XML (2.x)" option.\n '),s.ɵɵelementContainerEnd())}function T(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Universal Password Manager desktop application, navigate to "Database" →\n "Export" and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function M(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to "Settings". Click the "Export accounts" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function B(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Meldium web vault, navigate to "Settings". Locate the "Export data" function and\n click "Show me my data" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function D(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click\n "Export" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function R(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Keeper web vault (keepersecurity.com/vault). Click on your "account email" (top\n right) and select "Settings". Go to "Export" and find the "Export to .json File" option. Click\n "Export" to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function F(e,t){1&e&&(s.ɵɵelementStart(0,"span"),s.ɵɵtext(1,"\n The process is exactly the same as importing from Google Chrome.\n "),s.ɵɵelementEnd())}function U(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,F,2,0,"span",10),s.ɵɵtext(3,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(4,"a",24),s.ɵɵtext(5,"\n https://bitwarden.com/help/import-from-chrome/"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(2),s.ɵɵproperty("ngIf","chromecsv"!==e.format)}}function V(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",25),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-firefox/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function N(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",26),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-safari/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function _(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n See detailed instructions on our help site at\n "),s.ɵɵelementStart(2,"a",27),s.ɵɵtext(3,"\n https://bitwarden.com/help/import-from-1password/"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function j(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Dragon desktop application, navigate to "File" → "Export" → "To\n XML". In the dialog that pops up select "All Rows" and check all fields. Click the "Export"\n button and save the XML file.\n '),s.ɵɵelementContainerEnd())}function z(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Enpass desktop application, navigate to "File" → "Export" → "As CSV".\n Select "OK" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n '),s.ɵɵelementContainerEnd())}function H(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Enpass 6 desktop application, click the menu button and navigate to "File" →\n "Export". Select the ".json" file format option and save the JSON file.\n '),s.ɵɵelementContainerEnd())}function L(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Safe desktop application, navigate to "File" → "Export To" → "XML\n format..." and save the XML file.\n '),s.ɵɵelementContainerEnd())}function K(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log in to Dashlane, click on "My Account" → "Settings" → "Export file" and select\n "Export as a CSV file". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n '),s.ɵɵelementContainerEnd())}function q(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n "),s.ɵɵelementContainerEnd())}function G(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the mSecure desktop application, navigate to "File" → "Export" → "CSV File..."\n and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function W(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Sticky Password desktop application, navigate to "Menu" (top right) → "Export"\n → "Export all". Select the unencrypted format XML option and save the XML file.\n '),s.ɵɵelementContainerEnd())}function $(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n "App Settings". Click the "Export" button, enter your password and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function Y(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to "Data" → "Export". Click the\n "download HTML+JSON" button to save the HTML file.\n '),s.ɵɵelementContainerEnd())}function Q(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the RoboForm Editor desktop application, navigate to "RoboForm" (top left) →\n "Options" → "Account & Data" and click the "Export" button. Select all of your data,\n change the "Format" to "CSV file" and then click the "Export" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n '),s.ɵɵelementContainerEnd())}function J(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Passbolt web vault and navigate to the "Passwords" listing. Select all of the\n passwords you would like to export and click the "Export" button at the top of the listing.\n Choose the "csv (lastpass)" export format and click the "Export" button.\n '),s.ɵɵelementContainerEnd())}function Z(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Ascendo DataVault desktop application, navigate to "Tools" → "Export". In the\n dialog that pops up, select the "All Items (DVX, CSV)" option. Click the "Ok" button to save\n the CSV file.\n '),s.ɵɵelementContainerEnd())}function X(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Boss desktop application, navigate to "File" → "Export data" →\n "Password Boss JSON - not encrypted" and save the JSON file.\n '),s.ɵɵelementContainerEnd())}function ee(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Zoho web vault (vault.zoho.com). Navigate to "Tools" → "Export Secrets".\n Select "All Secrets" and click the "Zoho Vault Format CSV" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n '),s.ɵɵelementStart(2,"code"),s.ɵɵtext(3,"zoho_export.csv"),s.ɵɵelementEnd(),s.ɵɵtext(4,".\n "),s.ɵɵelementContainerEnd())}function te(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to "Export" → "Export as CSV" and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ne(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the PassKeep mobile app, navigate to "Backup/Restore". Locate the "CSV Backup/Restore"\n section and click "Backup to CSV" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ie(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n "),s.ɵɵelementStart(2,"a",28),s.ɵɵtext(3,"GNOME Keyring Import/Export"),s.ɵɵelementEnd(),s.ɵɵtext(4,"\n python script to your desktop as "),s.ɵɵelementStart(5,"code"),s.ɵɵtext(6,"pw_helper.py"),s.ɵɵelementEnd(),s.ɵɵtext(7,". Open terminal and run\n "),s.ɵɵelementStart(8,"code"),s.ɵɵtext(9,"chmod +rx Desktop/pw_helper.py"),s.ɵɵelementEnd(),s.ɵɵtext(10," and then\n "),s.ɵɵelementStart(11,"code"),s.ɵɵtext(12,"python Desktop/pw_helper.py export Desktop/my_passwords.json"),s.ɵɵelementEnd(),s.ɵɵtext(13,". Then upload the\n resulting "),s.ɵɵelementStart(14,"code"),s.ɵɵtext(15,"my_passwords.json"),s.ɵɵelementEnd(),s.ɵɵtext(16," file here to Bitwarden.\n "),s.ɵɵelementContainerEnd())}function re(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Using the Password Agent desktop application navigate to "File" → "Export", select the\n "Fields to export" button and check all of the fields, change the "Output format" to "CSV",\n and then click the "Start" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function oe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Log into the Passpack website vault and navigate to "Settings" → "Export", then click the\n "Download" button to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ae(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open your Passman vault and click on "Settings" in the bottom left corner. In the "Settings"\n window switch to the "Export credentials" tab and choose "JSON" as the export type. Enter your\n vault\'s passphrase and click the "Export" button to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function se(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to CSV file" option to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function le(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Avast Passwords desktop application and navigate to "Settings" → "Import/export\n data". Select the "Export" button for the "Export to JSON file" option to save the JSON file.\n '),s.ɵɵelementContainerEnd())}function ce(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the F-Secure KEY desktop application and navigate to "Settings" → "Export\n Passwords". Select the "Export" button, enter your master password, and save the FSK file.\n '),s.ɵɵelementContainerEnd())}function de(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Kaspersky Password Manager desktop application and navigate to "Settings" →\n "Import/Export". Locate the "Export to text file" section and select the "Export" button to\n save the TXT file.\n '),s.ɵɵelementContainerEnd())}function pe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the RememBear desktop application and navigate to "Settings" → "Account" →\n "Export". Enter your master password and select the "Export Anyway" button to save the CSV\n file.\n '),s.ɵɵelementContainerEnd())}function ue(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the PasswordWallet desktop application and navigate to "File" → "Export" →\n "Visible entries to text file". Enter your password and select the "Ok" button to save the TXT\n file.\n '),s.ɵɵelementContainerEnd())}function me(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Myki desktop browser extension and navigate to "Advanced" → "Export Accounts"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer\'s downloads folder.\n '),s.ɵɵelementContainerEnd())}function he(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n "),s.ɵɵelementContainerEnd())}function ve(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the LogMeOnce browser extension, then navigate to "Open Menu" → "Export To" and\n select "CSV File" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function fe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the BlackBerry Password Keeper application, then navigate to "Settings" →\n "Import/Export". Select "Export Passwords" and follow the instructions on screen to save the\n unencrypted CSV file.\n '),s.ɵɵelementContainerEnd())}function ge(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Buttercup desktop application and unlock your vault. Right click on your vault\'s icon\n and select "Export" to save the CSV file.\n '),s.ɵɵelementContainerEnd())}function ye(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n Open the Codebook desktop application and log in. Navigate to "File" → "Export all", then\n click "Yes" on the dialog and save the CSV file.\n '),s.ɵɵelementContainerEnd())}function xe(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n "),s.ɵɵelementContainerEnd())}function Se(e,t){1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,'\n From the Yoti browser extension, click on "Settings", then "Export Saved Logins" and save the\n CSV file.\n '),s.ɵɵelementContainerEnd())}function be(e,t){if(1&e&&(s.ɵɵelementStart(0,"app-callout",21),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,w,5,0,"ng-container",10),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,C,5,0,"ng-container",10),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,I,2,0,"ng-container",10),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,E,2,0,"ng-container",10),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,P,2,0,"ng-container",10),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,O,2,0,"ng-container",10),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,k,2,0,"ng-container",10),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,A,2,0,"ng-container",10),s.ɵɵtext(17,"\n "),s.ɵɵtemplate(18,T,2,0,"ng-container",10),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,M,2,0,"ng-container",10),s.ɵɵtext(21,"\n "),s.ɵɵtemplate(22,B,2,0,"ng-container",10),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,D,2,0,"ng-container",10),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,R,2,0,"ng-container",10),s.ɵɵtext(27,"\n "),s.ɵɵtemplate(28,U,7,1,"ng-container",10),s.ɵɵtext(29,"\n "),s.ɵɵtemplate(30,V,5,0,"ng-container",10),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,N,5,0,"ng-container",10),s.ɵɵtext(33,"\n "),s.ɵɵtemplate(34,_,5,0,"ng-container",10),s.ɵɵtext(35,"\n "),s.ɵɵtemplate(36,j,2,0,"ng-container",10),s.ɵɵtext(37,"\n "),s.ɵɵtemplate(38,z,2,0,"ng-container",10),s.ɵɵtext(39,"\n "),s.ɵɵtemplate(40,H,2,0,"ng-container",10),s.ɵɵtext(41,"\n "),s.ɵɵtemplate(42,L,2,0,"ng-container",10),s.ɵɵtext(43,"\n "),s.ɵɵtemplate(44,K,2,0,"ng-container",10),s.ɵɵtext(45,"\n "),s.ɵɵtemplate(46,q,2,0,"ng-container",10),s.ɵɵtext(47,"\n "),s.ɵɵtemplate(48,G,2,0,"ng-container",10),s.ɵɵtext(49,"\n "),s.ɵɵtemplate(50,W,2,0,"ng-container",10),s.ɵɵtext(51,"\n "),s.ɵɵtemplate(52,$,2,0,"ng-container",10),s.ɵɵtext(53,"\n "),s.ɵɵtemplate(54,Y,2,0,"ng-container",10),s.ɵɵtext(55,"\n "),s.ɵɵtemplate(56,Q,2,0,"ng-container",10),s.ɵɵtext(57,"\n "),s.ɵɵtemplate(58,J,2,0,"ng-container",10),s.ɵɵtext(59,"\n "),s.ɵɵtemplate(60,Z,2,0,"ng-container",10),s.ɵɵtext(61,"\n "),s.ɵɵtemplate(62,X,2,0,"ng-container",10),s.ɵɵtext(63,"\n "),s.ɵɵtemplate(64,ee,5,0,"ng-container",10),s.ɵɵtext(65,"\n "),s.ɵɵtemplate(66,te,2,0,"ng-container",10),s.ɵɵtext(67,"\n "),s.ɵɵtemplate(68,ne,2,0,"ng-container",10),s.ɵɵtext(69,"\n "),s.ɵɵtemplate(70,ie,17,0,"ng-container",10),s.ɵɵtext(71,"\n "),s.ɵɵtemplate(72,re,2,0,"ng-container",10),s.ɵɵtext(73,"\n "),s.ɵɵtemplate(74,oe,2,0,"ng-container",10),s.ɵɵtext(75,"\n "),s.ɵɵtemplate(76,ae,2,0,"ng-container",10),s.ɵɵtext(77,"\n "),s.ɵɵtemplate(78,se,2,0,"ng-container",10),s.ɵɵtext(79,"\n "),s.ɵɵtemplate(80,le,2,0,"ng-container",10),s.ɵɵtext(81,"\n "),s.ɵɵtemplate(82,ce,2,0,"ng-container",10),s.ɵɵtext(83,"\n "),s.ɵɵtemplate(84,de,2,0,"ng-container",10),s.ɵɵtext(85,"\n "),s.ɵɵtemplate(86,pe,2,0,"ng-container",10),s.ɵɵtext(87,"\n "),s.ɵɵtemplate(88,ue,2,0,"ng-container",10),s.ɵɵtext(89,"\n "),s.ɵɵtemplate(90,me,2,0,"ng-container",10),s.ɵɵtext(91,"\n "),s.ɵɵtemplate(92,he,2,0,"ng-container",10),s.ɵɵtext(93,"\n "),s.ɵɵtemplate(94,ve,2,0,"ng-container",10),s.ɵɵtext(95,"\n "),s.ɵɵtemplate(96,fe,2,0,"ng-container",10),s.ɵɵtext(97,"\n "),s.ɵɵtemplate(98,ge,2,0,"ng-container",10),s.ɵɵtext(99,"\n "),s.ɵɵtemplate(100,ye,2,0,"ng-container",10),s.ɵɵtext(101,"\n "),s.ɵɵtemplate(102,xe,2,0,"ng-container",10),s.ɵɵtext(103,"\n "),s.ɵɵtemplate(104,Se,2,0,"ng-container",10),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵpropertyInterpolate("title",e.getFormatInstructionTitle()),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","bitwardencsv"===e.format||"bitwardenjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","lastpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepassxcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","aviracsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","blurcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","safeincloudxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","padlockcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepass2xml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","upmcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","saferpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","meldiumcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keepercsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","keeperjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","chromecsv"===e.format||"operacsv"===e.format||"vivaldicsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","firefoxcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","safaricsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","1password1pux"===e.format||"1password1pif"===e.format||"1passwordwincsv"===e.format||"1passwordmaccsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passworddragonxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","enpasscsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","enpassjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","pwsafexml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","dashlanecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","dashlanejson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","msecurecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","stickypasswordxml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","truekeycsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","clipperzhtml"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","roboformcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passboltcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","ascendocsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordbossjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","zohovaultcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","splashidcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passkeepcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","gnomejson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordagentcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passpackcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passmanjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","avastcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","avastjson"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","fsecurefsk"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","kasperskytxt"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","remembearcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","passwordwallettxt"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","mykicsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","securesafecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","logmeoncecsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","blackberrycsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","buttercupcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","codebookcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","encryptrcsv"===e.format),s.ɵɵadvance(2),s.ɵɵproperty("ngIf","yoticsv"===e.format)}}const we=function(e){return{manual:e}};class Ce{constructor(e,t,n,i,r,o){this.i18nService=e,this.importService=t,this.router=n,this.platformUtilsService=i,this.policyService=r,this.logService=o,this.format=null,this.loading=!1,this.importBlockedByPolicy=!1,this.organizationId=null,this.successNavigate=["vault"]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.setImportOptions(),this.importBlockedByPolicy=yield this.policyService.policyAppliesToUser(a.PolicyType.PersonalOwnership)}))}submit(){return i(this,void 0,void 0,(function*(){if(this.importBlockedByPolicy)return void this.platformUtilsService.showToast("error",null,this.i18nService.t("personalOwnershipPolicyInEffectImports"));this.loading=!0;const e=this.importService.getImporter(this.format,this.organizationId);if(null===e)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFormat")),void(this.loading=!1);const t=document.getElementById("file").files;if(!(null!=t&&0!==t.length||null!=this.fileContents&&""!==this.fileContents))return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile")),void(this.loading=!1);let n=this.fileContents;if(null!=t&&t.length>0)try{const e=yield this.getFileContents(t[0]);null!=e&&(n=e)}catch(i){this.logService.error(i)}if(null==n||""===n)return this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("selectFile")),void(this.loading=!1);try{this.formPromise=this.importService.import(e,n,this.organizationId);const t=yield this.formPromise;if(null!=t)return this.error(t),void(this.loading=!1);this.platformUtilsService.showToast("success",null,this.i18nService.t("importSuccess")),this.router.navigate(this.successNavigate)}catch(i){this.logService.error(i)}this.loading=!1}))}getFormatInstructionTitle(){if(null==this.format)return null;const e=this.featuredImportOptions.concat(this.importOptions).filter((e=>e.id===this.format));return e.length>0?this.i18nService.t("instructionsFor",e[0].name):null}setImportOptions(){this.featuredImportOptions=[{id:null,name:"-- "+this.i18nService.t("select")+" --"},...this.importService.featuredImportOptions],this.importOptions=[...this.importService.regularImportOptions].sort(((e,t)=>null==e.name&&null!=t.name?-1:null!=e.name&&null==t.name?1:null==e.name&&null==t.name?0:this.i18nService.collator?this.i18nService.collator.compare(e.name,t.name):e.name.localeCompare(t.name)))}error(e){return i(this,void 0,void 0,(function*(){yield o.default.fire({heightAuto:!1,buttonsStyling:!1,icon:"error",iconHtml:'',input:"textarea",inputValue:e.message,inputAttributes:{readonly:"true"},titleText:this.i18nService.t("importError"),text:this.i18nService.t("importErrorDesc"),showConfirmButton:!0,confirmButtonText:this.i18nService.t("ok"),onOpen:e=>{e.querySelector(".swal2-textarea").scrollTo(0,0)}})}))}getFileContents(e){return"1password1pux"===this.format?this.extract1PuxContent(e):new Promise(((t,n)=>{const i=new FileReader;i.readAsText(e,"utf-8"),i.onload=i=>{if("lastpasscsv"===this.format&&"text/html"===e.type){const e=(new DOMParser).parseFromString(i.target.result,"text/html").querySelector("pre");return null!=e?void t(e.textContent):void n()}t(i.target.result)},i.onerror=()=>{n()}}))}extract1PuxContent(e){return(new r).loadAsync(e).then((e=>e.file("export.data").async("string"))).then((function(e){return e}),(function(e){return""}))}}t.ImportComponent=Ce,Ce.ɵfac=function(e){return new(e||Ce)(s.ɵɵdirectiveInject(l.I18nService),s.ɵɵdirectiveInject(c.ImportService),s.ɵɵdirectiveInject(d.Router),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.PolicyService),s.ɵɵdirectiveInject(m.LogService))},Ce.ɵcmp=s.ɵɵdefineComponent({type:Ce,selectors:[["app-import"]],decls:69,vars:31,consts:[[1,"page-header"],["type","info",4,"ngIf"],["ngNativeValidate","",3,"ngSubmit"],["form",""],[1,"row"],[1,"col-6"],[1,"form-group"],["for","type"],["id","type","name","Format","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[4,"ngIf"],["type","info",3,"title",4,"ngIf"],["for","file"],["type","file","id","file","name","file",1,"form-control-file",3,"disabled"],["for","fileContents"],["id","fileContents","name","FileContents",1,"form-control",3,"ngModel","disabled","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","info"],[3,"ngValue"],["value","-","disabled",""],["type","info",3,"title"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/export-your-data/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-lastpass/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-chrome/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-firefox/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-safari/"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/import-from-1password/"],["target","_blank","rel","noopener","href","https://bit.ly/2GpOMTg"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h1"),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n"),s.ɵɵtemplate(7,y,3,3,"app-callout",1),s.ɵɵtext(8,"\n"),s.ɵɵelementStart(9,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"div",4),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"div",5),s.ɵɵtext(15,"\n "),s.ɵɵelementStart(16,"div",6),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"label",7),s.ɵɵtext(19),s.ɵɵpipe(20,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"select",8),s.ɵɵlistener("ngModelChange",(function(e){return t.format=e})),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,x,2,2,"option",9),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,b,6,1,"ng-container",10),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(30,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(31,"\n "),s.ɵɵtemplate(32,be,106,53,"app-callout",11),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",4),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"div",5),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",6),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"label",12),s.ɵɵtext(41),s.ɵɵpipe(42,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelement(44,"input",13),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"div",6),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"label",14),s.ɵɵtext(52),s.ɵɵpipe(53,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"textarea",15),s.ɵɵlistener("ngModelChange",(function(e){return t.fileContents=e})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"button",16),s.ɵɵtext(59,"\n "),s.ɵɵelement(60,"i",17),s.ɵɵpipe(61,"i18n"),s.ɵɵtext(62,"\n "),s.ɵɵelementStart(63,"span"),s.ɵɵtext(64),s.ɵɵpipe(65,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n")),2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,17,"importData")),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",t.importBlockedByPolicy),s.ɵɵadvance(12),s.ɵɵtextInterpolate1("1. ",s.ɵɵpipeBind1(20,19,"selectFormat"),""),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.format)("disabled",t.importBlockedByPolicy),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",t.featuredImportOptions),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.importOptions&&t.importOptions.length),s.ɵɵadvance(6),s.ɵɵproperty("ngIf",t.format),s.ɵɵadvance(9),s.ɵɵtextInterpolate1("2. ",s.ɵɵpipeBind1(42,21,"selectImportFile"),""),s.ɵɵadvance(3),s.ɵɵproperty("disabled",t.importBlockedByPolicy),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(53,23,"orCopyPasteFileContents")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",t.fileContents)("disabled",t.importBlockedByPolicy),s.ɵɵadvance(3),s.ɵɵproperty("disabled",t.loading||t.importBlockedByPolicy)("ngClass",s.ɵɵpureFunction1(29,we,t.importBlockedByPolicy)),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(61,25,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(65,27,"importData")))},directives:[h.NgIf,v.NgControlStatusGroup,v.NgForm,v.SelectControlValueAccessor,v.RequiredValidator,v.NgControlStatus,v.NgModel,h.NgForOf,v.DefaultValueAccessor,h.NgClass,f.CalloutComponent,v.NgSelectOption,v.ɵNgSelectMultipleOption],pipes:[g.I18nPipe],encapsulation:2})},4184:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordGeneratorHistoryComponent=void 0;const i=n(61738),r=(n(51554),n(84275),n(73828),n(32621)),o=n(84275),a=n(73828),s=n(51554),l=n(8863),c=n(57490),d=n(31161),p=n(99729),u=n(86758);function m(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"li",16),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",17),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"div",18),r.ɵɵpipe(5,"colorPassword"),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"small",19),r.ɵɵtext(8),r.ɵɵpipe(9,"date"),r.ɵɵelementEnd(),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",10),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"button",20),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(2).copy(t.password)})),r.ɵɵpipe(15,"i18n"),r.ɵɵtext(16,"\n "),r.ɵɵelement(17,"i",21),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit;r.ɵɵadvance(4),r.ɵɵproperty("innerHTML",r.ɵɵpipeBind1(5,3,e.password),r.ɵɵsanitizeHtml),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind2(9,5,e.date,"medium")),r.ɵɵadvance(6),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(15,8,"copyPassword"))}}function h(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",13),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"ul",14),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,m,21,10,"li",15),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.history)}}function v(e,t){1&e&&(r.ɵɵelementStart(0,"div",13),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noPasswordsInList"),"\n "))}class f extends i.PasswordGeneratorHistoryComponent{constructor(e,t,n){super(e,t,n,window)}}t.PasswordGeneratorHistoryComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.PasswordGenerationService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-password-generator-history"]],features:[r.ɵɵInheritDefinitionFeature],decls:43,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","passHistoryTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content"],[1,"modal-header"],["id","passHistoryTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw"],[1,"modal-body"],[1,"list-group","list-group-flush"],["class","list-group-item d-flex",4,"ngFor","ngForOf"],[1,"list-group-item","d-flex"],[1,"password-row"],["appSelectCopy","",1,"text-monospace","generated-wrapper",3,"innerHTML"],[1,"text-muted"],[1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"h2",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",5),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",6),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵtemplate(20,h,7,1,"div",7),r.ɵɵtext(21,"\n "),r.ɵɵtemplate(22,v,3,3,"div",7),r.ɵɵtext(23,"\n "),r.ɵɵelementStart(24,"div",8),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"button",9),r.ɵɵtext(27),r.ɵɵpipe(28,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(29,"\n "),r.ɵɵelementStart(30,"div",10),r.ɵɵtext(31,"\n "),r.ɵɵelementStart(32,"button",11),r.ɵɵlistener("click",(function(){return t.clear()})),r.ɵɵpipe(33,"i18n"),r.ɵɵtext(34,"\n "),r.ɵɵelement(35,"i",12),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(41,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,6,"passwordHistory")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,8,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",t.history.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.history.length),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(28,10,"close"),"\n "),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(33,12,"clear")))},directives:[l.A11yTitleDirective,c.NgIf,c.NgForOf,d.SelectCopyDirective],pipes:[p.I18nPipe,u.ColorPasswordPipe,c.DatePipe],encapsulation:2})},44118:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.ToolsComponent=void 0;n(45552),n(73569);const r=n(32621),o=n(73569),a=n(45552),s=n(68012),l=n(99729);class c{constructor(e,t){this.stateService=e,this.messagingService=t,this.canAccessPremium=!1}ngOnInit(){return i(this,void 0,void 0,(function*(){this.canAccessPremium=yield this.stateService.getCanAccessPremium()}))}premiumRequired(){this.canAccessPremium||this.messagingService.send("premiumRequired")}}t.ToolsComponent=c,c.ɵfac=function(e){return new(e||c)(r.ɵɵdirectiveInject(o.StateService),r.ɵɵdirectiveInject(a.MessagingService))},c.ɵcmp=r.ɵɵdefineComponent({type:c,selectors:[["app-tools"]],decls:36,vars:12,consts:[[1,"container","page-content"],[1,"row"],[1,"col-3"],[1,"card","mb-4"],[1,"card-header"],[1,"list-group","list-group-flush"],["routerLink","generator","routerLinkActive","active",1,"list-group-item"],["routerLink","import","routerLinkActive","active",1,"list-group-item"],["routerLink","export","routerLinkActive","active",1,"list-group-item"],[1,"col-9"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",2),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",3),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"div",4),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"div",5),r.ɵɵtext(13,"\n "),r.ɵɵelementStart(14,"a",6),r.ɵɵtext(15),r.ɵɵpipe(16,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"a",7),r.ɵɵtext(19),r.ɵɵpipe(20,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"a",8),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",9),r.ɵɵtext(30,"\n "),r.ɵɵelement(31,"router-outlet"),r.ɵɵtext(32,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(33,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(35,"\n")),2&e&&(r.ɵɵadvance(9),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,4,"tools")),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(16,6,"generator"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(20,8,"importData"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(24,10,"exportVault"),"\n "))},directives:[s.RouterLinkWithHref,s.RouterLinkActive,s.RouterOutlet],pipes:[l.I18nPipe],encapsulation:2})},95746:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditCustomFieldsComponent=void 0;const i=n(4758),r=(n(32034),n(51554),n(32621)),o=n(51554),a=n(32034),s=n(57490),l=n(83072),c=n(8863),d=n(96832),p=n(48198),u=n(13803),m=n(1142),h=n(99729);function v(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"input",12),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",22),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).copy(t.value,"value","Field")})),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelement(9,"i",23),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(7,5,"copyValue"))}}const f=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}};function g(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"input",24),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd(),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",21),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).toggleFieldValue(t)})),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"i",26),r.ɵɵtext(10,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(12,"\n "),r.ɵɵelementStart(13,"button",25),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit,n=r.ɵɵnextContext(2);return n.copy(t.value,"value",t.type===n.fieldType.Hidden?"H_Field":"Field")})),r.ɵɵpipe(14,"i18n"),r.ɵɵtext(15,"\n "),r.ɵɵelement(16,"i",23),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate("type",n.showValue?"text":"password"),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly||!i.cipher.viewPassword&&!n.newField),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(7,10,"toggleVisibility")),r.ɵɵproperty("disabled",!i.cipher.viewPassword&&!n.newField),r.ɵɵadvance(3),r.ɵɵproperty("ngClass",r.ɵɵpureFunction2(14,f,!n.showValue,n.showValue)),r.ɵɵadvance(4),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(14,12,"copyValue")),r.ɵɵproperty("disabled",!i.cipher.viewPassword&&!n.newField)}}function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"select",28),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).$implicit.linkedId=t})),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,y,2,2,"option",29),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(2),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.linkedId)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",i.linkedFieldOptions)}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",20),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,x,4,5,"select",27),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext().$implicit,t=r.ɵɵnextContext(2);r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.type===t.fieldType.Linked&&null!=t.cipher.linkedFieldOptions)}}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"input",31),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().$implicit.value=t})),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext(),t=e.index,n=e.$implicit,i=r.ɵɵnextContext(2);r.ɵɵpropertyInterpolate1("id","fieldValue",t,""),r.ɵɵpropertyInterpolate1("name","Field.Value",t,""),r.ɵɵproperty("ngModel",n.value)("disabled",i.cipher.isDeleted||i.viewOnly)}}function w(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",32),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);const t=r.ɵɵnextContext().$implicit;return r.ɵɵnextContext(2).removeField(t)})),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",33),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()}2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"remove"))}function C(e,t){1&e&&(r.ɵɵelementStart(0,"button",34),r.ɵɵpipe(1,"i18n"),r.ɵɵtext(2,"\n "),r.ɵɵelement(3,"i",35),r.ɵɵtext(4,"\n "),r.ɵɵelementEnd()),2&e&&r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(1,1,"dragToSort"))}function I(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",6),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",7),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"div",8),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"label",9),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementStart(10,"a",10),r.ɵɵpipe(11,"i18n"),r.ɵɵtext(12,"\n "),r.ɵɵelement(13,"i",11),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementStart(17,"input",12),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.name=t})),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",13),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"label",9),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"div",14),r.ɵɵtext(27,"\n "),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,v,13,7,"div",15),r.ɵɵtext(30,"\n "),r.ɵɵtext(31,"\n "),r.ɵɵtemplate(32,g,20,17,"div",15),r.ɵɵtext(33,"\n "),r.ɵɵtext(34,"\n "),r.ɵɵtemplate(35,S,4,1,"div",15),r.ɵɵtext(36,"\n "),r.ɵɵelementStart(37,"div",16),r.ɵɵtext(38,"\n "),r.ɵɵtext(39,"\n "),r.ɵɵtemplate(40,b,1,4,"input",17),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵtemplate(43,w,5,3,"button",18),r.ɵɵtext(44,"\n "),r.ɵɵtemplate(45,C,5,3,"button",19),r.ɵɵtext(46,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(47,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=r.ɵɵnextContext(2);r.ɵɵadvance(6),r.ɵɵpropertyInterpolate1("for","fieldName",n,""),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(8,15,"name")),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(11,17,"learnMore")),r.ɵɵadvance(7),r.ɵɵpropertyInterpolate1("id","fieldName",n,""),r.ɵɵpropertyInterpolate1("name","Field.Name",n,""),r.ɵɵproperty("ngModel",e.name)("disabled",i.cipher.isDeleted||i.viewOnly),r.ɵɵadvance(5),r.ɵɵpropertyInterpolate1("for","fieldValue",n,""),r.ɵɵadvance(1),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(24,19,"value")),r.ɵɵadvance(6),r.ɵɵproperty("ngIf",e.type===i.fieldType.Text),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.type===i.fieldType.Hidden),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.type===i.fieldType.Linked),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",e.type===i.fieldType.Boolean),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",4),r.ɵɵlistener("cdkDropListDropped",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().drop(t)})),r.ɵɵtext(1,"\n "),r.ɵɵtemplate(2,I,49,21,"div",5),r.ɵɵtext(3,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.cipher.fields)("ngForTrackBy",e.trackByFunction)}}function P(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"a",36),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addField()})),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",37),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1(" ",r.ɵɵpipeBind1(4,1,"newCustomField"),"\n "))}function O(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function k(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",30),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵproperty("ngValue",e.addFieldLinkedTypeOption.value),r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",e.addFieldLinkedTypeOption.name,"\n ")}}function A(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",38),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",39),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"label",40),r.ɵɵtext(5),r.ɵɵpipe(6,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"select",41),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().addFieldType=t})),r.ɵɵtext(9,"\n "),r.ɵɵtemplate(10,O,2,2,"option",29),r.ɵɵtext(11,"\n "),r.ɵɵtemplate(12,k,2,2,"option",42),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(5),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(6,4,"type")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.addFieldType),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.addFieldTypeOptions),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",null!=e.cipher.linkedFieldOptions)}}class T extends i.AddEditCustomFieldsComponent{constructor(e,t){super(e,t)}}t.AddEditCustomFieldsComponent=T,T.ɵfac=function(e){return new(e||T)(r.ɵɵdirectiveInject(o.I18nService),r.ɵɵdirectiveInject(a.EventService))},T.ɵcmp=r.ɵɵdefineComponent({type:T,selectors:[["app-vault-add-edit-custom-fields"]],inputs:{viewOnly:"viewOnly",copy:"copy"},features:[r.ɵɵInheritDefinitionFeature],decls:14,vars:6,consts:[[1,"mt-4"],["cdkDropList","",3,"cdkDropListDropped",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-2",3,"click",4,"ngIf"],["class","row",4,"ngIf"],["cdkDropList","",3,"cdkDropListDropped"],["class","row","cdkDrag","",4,"ngFor","ngForOf","ngForTrackBy"],["cdkDrag","",1,"row"],[1,"col-5","form-group"],[1,"d-flex"],[3,"for"],["href","https://bitwarden.com/help/custom-fields/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","ngModelChange"],[1,"col-7","form-group"],[1,"d-flex","align-items-center"],["class","input-group",4,"ngIf"],[1,"flex-fill"],["type","checkbox","appTrueFalseValue","","trueValue","true","falseValue","false",3,"id","name","ngModel","disabled","ngModelChange",4,"ngIf"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-link text-muted cursor-move",3,"appA11yTitle",4,"ngIf"],[1,"input-group"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"id","type","name","ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["class","form-control",3,"id","name","ngModel","disabled","ngModelChange",4,"ngIf"],[1,"form-control",3,"id","name","ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["type","checkbox","appTrueFalseValue","","trueValue","true","falseValue","false",3,"id","name","ngModel","disabled","ngModelChange"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["type","button",1,"btn","btn-link","text-muted","cursor-move",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-hamburger","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-2",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],[1,"row"],[1,"col-5"],["for","addFieldType",1,"sr-only"],["id","addFieldType","name","AddFieldType",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngIf"]],template:function(e,t){1&e&&(r.ɵɵelementContainerStart(0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"h3",0),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵtemplate(6,E,4,2,"div",1),r.ɵɵtext(7,"\n "),r.ɵɵtext(8,"\n "),r.ɵɵtemplate(9,P,5,3,"a",2),r.ɵɵtext(10,"\n "),r.ɵɵtemplate(11,A,16,6,"div",3),r.ɵɵtext(12,"\n"),r.ɵɵelementContainerEnd(),r.ɵɵtext(13,"\n")),2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,4,"customFields")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.cipher.hasFields),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.cipher.isDeleted&&!t.viewOnly),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.cipher.isDeleted&&!t.viewOnly))},directives:[s.NgIf,l.CdkDropList,s.NgForOf,l.CdkDrag,c.A11yTitleDirective,d.DefaultValueAccessor,p.InputVerbatimDirective,d.NgControlStatus,d.NgModel,s.NgClass,d.SelectControlValueAccessor,d.NgSelectOption,d.ɵNgSelectMultipleOption,u.TrueFalseValueDirective,d.CheckboxControlValueAccessor,m.StopClickDirective],pipes:[h.I18nPipe],encapsulation:2})},41141:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AddEditComponent=void 0;const r=n(7481),o=(n(42982),n(45330),n(3174),n(32034),n(88308),n(51554),n(36631),n(45552),n(63513),n(84275),n(44809),n(73828),n(62166),n(73569),n(52344),n(32773)),a=n(80253),s=n(32621),l=n(45330),c=n(88308),d=n(51554),p=n(73828),u=n(42982),m=n(73569),h=n(3174),v=n(52344),f=n(84275),g=n(45552),y=n(32034),x=n(62166),S=n(63513),b=n(36631),w=n(44809),C=n(96832),I=n(56820),E=n(8863),P=n(57490),O=n(95746),k=n(51626),A=n(45728),T=n(48198),M=n(1142),B=n(48403),D=n(99729);function R(e,t){1&e&&(s.ɵɵelementStart(0,"app-callout",26),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"personalOwnershipPolicyInEffect"),"\n "))}function F(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function U(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",17),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",27),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"select",28),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.type=t})),s.ɵɵtext(9,"\n "),s.ɵɵtemplate(10,F,2,2,"option",29),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(6,4,"whatTypeOfItem")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.type)("disabled",e.cipher.isDeleted),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.typeOptions)}}function V(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.id),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function N(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",17),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"label",31),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"select",32),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.folderId=t})),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,V,2,2,"option",29),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(10,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,4,"folder")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.folderId)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.folders)}}function _(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",41),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.copy(t.cipher.login.username,"username","Username")})),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelement(5,"i",44),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(3,1,"copyUsername")))}function j(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",57),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(4).generatePassword()})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",58),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}2&e&&s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,1,"generatePassword"))}function z(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",51),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,j,5,3,"a",52),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"a",53,54),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).checkPassword()})),s.ɵɵpipe(6,"i18n"),s.ɵɵtext(7,"\n "),s.ɵɵelement(8,"i",55),s.ɵɵtext(9,"\n "),s.ɵɵelement(10,"i",56),s.ɵɵpipe(11,"i18n"),s.ɵɵtext(12,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(5),t=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngIf",t.cipher.viewPassword),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(6,6,"checkPassword")),s.ɵɵproperty("appApiAction",t.checkPasswordPromise),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(11,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function H(e,t){1&e&&s.ɵɵelement(0,"app-premium-badge",62)}function L(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",63),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(4).upgradeOrganization()})),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"upgrade"),"\n "))}function K(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"img",59),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵtemplate(5,H,1,0,"app-premium-badge",60),s.ɵɵtext(6,"\n "),s.ɵɵtemplate(7,L,3,3,"a",61),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"verificationCodeTotp")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.organization&&!e.cipher.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.organization&&!e.organization.useTotp||!e.organization&&!e.canAccessPremium&&e.cipher.organizationId&&!e.cipher.organizationUseTotp)}}const q=function(e){return{"stroke-dashoffset.px":e}};function G(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",64),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"span",65),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"span",66),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵnamespaceSVG(),s.ɵɵelementStart(7,"svg"),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"g"),s.ɵɵtext(10,"\n "),s.ɵɵelement(11,"circle",67),s.ɵɵtext(12,"\n "),s.ɵɵelement(13,"circle",68),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵnamespaceHTML(),s.ɵɵelementStart(18,"span",69),s.ɵɵpipe(19,"i18n"),s.ɵɵtext(20),s.ɵɵelementEnd(),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"button",70),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(3);return t.copy(t.totpCode,"verificationCodeTotp","TOTP")})),s.ɵɵpipe(23,"i18n"),s.ɵɵtext(24,"\n "),s.ɵɵelement(25,"i",71),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(5),s.ɵɵtextInterpolate(e.totpSec),s.ɵɵadvance(6),s.ɵɵproperty("ngStyle",s.ɵɵpureFunction1(9,q,e.totpDash)),s.ɵɵadvance(7),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(19,5,"verificationCodeTotp")),s.ɵɵadvance(2),s.ɵɵtextInterpolate(e.totpCodeFormatted),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(23,7,"copyVerificationCode"))}}function W(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function $(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",82),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext().$implicit;return s.ɵɵnextContext(4).removeUri(t)})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",83),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}2&e&&s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,1,"remove"))}function Y(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",16),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",73),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",74),s.ɵɵtext(5),s.ɵɵpipe(6,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",34),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",75),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.uri=t})),s.ɵɵpipe(11,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",41),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"button",42),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).launch(t)})),s.ɵɵpipe(16,"i18n"),s.ɵɵtext(17,"\n "),s.ɵɵelement(18,"i",76),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"button",50),s.ɵɵlistener("click",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).copy(t.uri,"uri","URI")})),s.ɵɵpipe(22,"i18n"),s.ɵɵtext(23,"\n "),s.ɵɵelement(24,"i",44),s.ɵɵtext(25,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"div",77),s.ɵɵtext(31,"\n "),s.ɵɵelementStart(32,"div",37),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"label",74),s.ɵɵtext(35),s.ɵɵpipe(36,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"a",78),s.ɵɵpipe(39,"i18n"),s.ɵɵtext(40,"\n "),s.ɵɵelement(41,"i",79),s.ɵɵtext(42,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(43,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementStart(45,"div",37),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"select",80),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.match=t}))("change",(function(){const t=s.ɵɵrestoreView(e).$implicit;return s.ɵɵnextContext(4).loginUriMatchChanged(t)})),s.ɵɵtext(48,"\n "),s.ɵɵtemplate(49,W,2,2,"option",29),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵtemplate(52,$,5,3,"button",81),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(55,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=s.ɵɵnextContext(4);s.ɵɵadvance(4),s.ɵɵpropertyInterpolate1("for","loginUri",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(s.ɵɵpipeBind2(6,19,"uriPosition",n+1)),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate1("id","loginUri",n,""),s.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Uri"),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(11,22,"ex")," https://google.com"),s.ɵɵproperty("ngModel",e.uri)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(16,24,"launch")),s.ɵɵproperty("disabled",!e.canLaunch),s.ɵɵadvance(6),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(22,26,"copyUri")),s.ɵɵadvance(13),s.ɵɵpropertyInterpolate1("for","loginUriMatch",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(36,28,"matchDetection"),"\n "),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(39,30,"learnMore")),s.ɵɵadvance(9),s.ɵɵpropertyInterpolate1("id","loginUriMatch",n,""),s.ɵɵpropertyInterpolate1("name","Login.Uris[",n,"].Match"),s.ɵɵproperty("ngModel",e.match)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",i.uriMatchOptions),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!i.cipher.isDeleted&&!i.viewOnly)}}function Q(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,Y,56,32,"div",72),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cipher.login.uris)("ngForTrackBy",e.trackByFunction)}}function J(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"a",84),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).addUri()})),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",85),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd()}2&e&&(s.ɵɵadvance(3),s.ɵɵtextInterpolate1(" ",s.ɵɵpipeBind1(4,1,"newUri"),"\n "))}const Z=function(e,t){return{"bwi-eye":e,"bwi-eye-slash":t}},X=function(e){return{low:e}};function ee(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",17),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",33),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"div",34),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"input",35),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.username=t})),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,_,8,3,"div",36),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementStart(18,"div",17),s.ɵɵtext(19,"\n "),s.ɵɵelementStart(20,"div",37),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"label",38),s.ɵɵtext(23),s.ɵɵpipe(24,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵtemplate(26,z,14,10,"div",39),s.ɵɵtext(27,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",34),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"input",40),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.password=t})),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementStart(33,"div",41),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"button",42),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).togglePassword()})),s.ɵɵpipe(36,"i18n"),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"i",43),s.ɵɵtext(39,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(40,"\n "),s.ɵɵelementStart(41,"button",42),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.login.password,"password","Password")})),s.ɵɵpipe(42,"i18n"),s.ɵɵtext(43,"\n "),s.ɵɵelement(44,"i",44),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(48,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(49,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"div",16),s.ɵɵtext(52,"\n "),s.ɵɵelementStart(53,"div",17),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"label",45),s.ɵɵtext(56),s.ɵɵpipe(57,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(58,"\n "),s.ɵɵelementStart(59,"input",46),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.login.totp=t})),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(61,"\n "),s.ɵɵelementStart(62,"div",47),s.ɵɵtext(63,"\n "),s.ɵɵtemplate(64,K,9,5,"div",21),s.ɵɵtext(65,"\n "),s.ɵɵtemplate(66,G,28,11,"div",48),s.ɵɵtext(67,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(68,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(69,"\n "),s.ɵɵtemplate(70,Q,4,2,"ng-container",21),s.ɵɵtext(71,"\n "),s.ɵɵtemplate(72,J,5,3,"a",49),s.ɵɵtext(73,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,23,"username")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",e.cipher.login.username)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.isDeleted),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(24,25,"password")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showPassword?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.login.password)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(36,27,"toggleVisibility")),s.ɵɵproperty("disabled",!e.cipher.viewPassword),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(33,Z,!e.showPassword,e.showPassword)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(42,29,"copyPassword")),s.ɵɵproperty("disabled",!e.cipher.viewPassword),s.ɵɵadvance(15),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(57,31,"authenticatorKeyTotp")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("type",e.cipher.viewPassword?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.login.totp)("disabled",e.cipher.isDeleted||!e.cipher.viewPassword||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction1(36,X,e.totpLow)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.login.totp||!e.totpCode),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.cipher.login.totp&&e.totpCode),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",e.cipher.login.hasUris),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.cipher.isDeleted&&!e.viewOnly)}}function te(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function ne(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function ie(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",17),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",86),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"input",87),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.cardholderName=t})),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(12,"\n "),s.ɵɵelementStart(13,"div",17),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"label",88),s.ɵɵtext(16),s.ɵɵpipe(17,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"select",89),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.brand=t})),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,te,2,2,"option",29),s.ɵɵtext(22,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(23,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"div",16),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",17),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",90),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"div",34),s.ɵɵtext(35,"\n "),s.ɵɵelementStart(36,"input",91),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.number=t})),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelementStart(38,"div",41),s.ɵɵtext(39,"\n "),s.ɵɵelementStart(40,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleCardNumber()})),s.ɵɵpipe(41,"i18n"),s.ɵɵtext(42,"\n "),s.ɵɵelement(43,"i",43),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementStart(46,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.card.number,"number","Number")})),s.ɵɵpipe(47,"i18n"),s.ɵɵtext(48,"\n "),s.ɵɵelement(49,"i",44),s.ɵɵtext(50,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(51,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(52,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(53,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"div",92),s.ɵɵtext(56,"\n "),s.ɵɵelementStart(57,"label",93),s.ɵɵtext(58),s.ɵɵpipe(59,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(60,"\n "),s.ɵɵelementStart(61,"select",94),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.expMonth=t})),s.ɵɵtext(62,"\n "),s.ɵɵtemplate(63,ne,2,2,"option",29),s.ɵɵtext(64,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementStart(67,"div",92),s.ɵɵtext(68,"\n "),s.ɵɵelementStart(69,"label",95),s.ɵɵtext(70),s.ɵɵpipe(71,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(72,"\n "),s.ɵɵelementStart(73,"input",96),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.expYear=t})),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(76,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementStart(78,"div",16),s.ɵɵtext(79,"\n "),s.ɵɵelementStart(80,"div",17),s.ɵɵtext(81,"\n "),s.ɵɵelementStart(82,"label",97),s.ɵɵtext(83),s.ɵɵpipe(84,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(85,"\n "),s.ɵɵelementStart(86,"div",34),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"input",98),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.card.code=t})),s.ɵɵelementEnd(),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"div",41),s.ɵɵtext(91,"\n "),s.ɵɵelementStart(92,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleCardCode()})),s.ɵɵpipe(93,"i18n"),s.ɵɵtext(94,"\n "),s.ɵɵelement(95,"i",43),s.ɵɵtext(96,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"button",50),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);const t=s.ɵɵnextContext(2);return t.copy(t.cipher.card.code,"securityCode","Security Code")})),s.ɵɵpipe(99,"i18n"),s.ɵɵtext(100,"\n "),s.ɵɵelement(101,"i",44),s.ɵɵtext(102,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(103,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(104,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(105,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(106,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,29,"cardholderName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.cardholderName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(17,31,"brand")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.brand)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cardBrandOptions),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,33,"number")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showCardNumber?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.card.number)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(41,35,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(51,Z,!e.showCardNumber,e.showCardNumber)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(47,37,"copyNumber")),s.ɵɵadvance(12),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(59,39,"expirationMonth")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.card.expMonth)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cardExpMonthOptions),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(71,41,"expirationYear")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate1("placeholder","",s.ɵɵpipeBind1(74,43,"ex")," 2019"),s.ɵɵproperty("ngModel",e.cipher.card.expYear)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(84,45,"securityCode")),s.ɵɵadvance(5),s.ɵɵpropertyInterpolate("type",e.showCardCode?"text":"password"),s.ɵɵproperty("ngModel",e.cipher.card.code)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(4),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(93,47,"toggleVisibility")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(54,Z,!e.showCardCode,e.showCardCode)),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(99,49,"securityCode"))}}function re(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function oe(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",16),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div",99),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"label",100),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"select",101),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.title=t})),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,re,2,2,"option",29),s.ɵɵtext(13,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(14,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵelementStart(17,"div",16),s.ɵɵtext(18,"\n "),s.ɵɵelementStart(19,"div",99),s.ɵɵtext(20,"\n "),s.ɵɵelementStart(21,"label",102),s.ɵɵtext(22),s.ɵɵpipe(23,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(24,"\n "),s.ɵɵelementStart(25,"input",103),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.firstName=t})),s.ɵɵelementEnd(),s.ɵɵtext(26,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(27,"\n "),s.ɵɵelementStart(28,"div",99),s.ɵɵtext(29,"\n "),s.ɵɵelementStart(30,"label",104),s.ɵɵtext(31),s.ɵɵpipe(32,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementStart(34,"input",105),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.middleName=t})),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementStart(37,"div",99),s.ɵɵtext(38,"\n "),s.ɵɵelementStart(39,"label",106),s.ɵɵtext(40),s.ɵɵpipe(41,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(42,"\n "),s.ɵɵelementStart(43,"input",107),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.lastName=t})),s.ɵɵelementEnd(),s.ɵɵtext(44,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(45,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(46,"\n "),s.ɵɵelementStart(47,"div",16),s.ɵɵtext(48,"\n "),s.ɵɵelementStart(49,"div",99),s.ɵɵtext(50,"\n "),s.ɵɵelementStart(51,"label",108),s.ɵɵtext(52),s.ɵɵpipe(53,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(54,"\n "),s.ɵɵelementStart(55,"input",109),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.username=t})),s.ɵɵelementEnd(),s.ɵɵtext(56,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(57,"\n "),s.ɵɵelementStart(58,"div",99),s.ɵɵtext(59,"\n "),s.ɵɵelementStart(60,"label",110),s.ɵɵtext(61),s.ɵɵpipe(62,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(63,"\n "),s.ɵɵelementStart(64,"input",111),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.company=t})),s.ɵɵelementEnd(),s.ɵɵtext(65,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(66,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(67,"\n "),s.ɵɵelementStart(68,"div",16),s.ɵɵtext(69,"\n "),s.ɵɵelementStart(70,"div",99),s.ɵɵtext(71,"\n "),s.ɵɵelementStart(72,"label",112),s.ɵɵtext(73),s.ɵɵpipe(74,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(75,"\n "),s.ɵɵelementStart(76,"input",113),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.ssn=t})),s.ɵɵelementEnd(),s.ɵɵtext(77,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(78,"\n "),s.ɵɵelementStart(79,"div",99),s.ɵɵtext(80,"\n "),s.ɵɵelementStart(81,"label",114),s.ɵɵtext(82),s.ɵɵpipe(83,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(84,"\n "),s.ɵɵelementStart(85,"input",115),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.passportNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(86,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(87,"\n "),s.ɵɵelementStart(88,"div",99),s.ɵɵtext(89,"\n "),s.ɵɵelementStart(90,"label",116),s.ɵɵtext(91),s.ɵɵpipe(92,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(93,"\n "),s.ɵɵelementStart(94,"input",117),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.licenseNumber=t})),s.ɵɵelementEnd(),s.ɵɵtext(95,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(96,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(97,"\n "),s.ɵɵelementStart(98,"div",16),s.ɵɵtext(99,"\n "),s.ɵɵelementStart(100,"div",17),s.ɵɵtext(101,"\n "),s.ɵɵelementStart(102,"label",118),s.ɵɵtext(103),s.ɵɵpipe(104,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(105,"\n "),s.ɵɵelementStart(106,"input",119),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.email=t})),s.ɵɵelementEnd(),s.ɵɵtext(107,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(108,"\n "),s.ɵɵelementStart(109,"div",17),s.ɵɵtext(110,"\n "),s.ɵɵelementStart(111,"label",120),s.ɵɵtext(112),s.ɵɵpipe(113,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(114,"\n "),s.ɵɵelementStart(115,"input",121),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.phone=t})),s.ɵɵelementEnd(),s.ɵɵtext(116,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(117,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(118,"\n "),s.ɵɵelementStart(119,"div",16),s.ɵɵtext(120,"\n "),s.ɵɵelementStart(121,"div",17),s.ɵɵtext(122,"\n "),s.ɵɵelementStart(123,"label",122),s.ɵɵtext(124),s.ɵɵpipe(125,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(126,"\n "),s.ɵɵelementStart(127,"input",123),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address1=t})),s.ɵɵelementEnd(),s.ɵɵtext(128,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(129,"\n "),s.ɵɵelementStart(130,"div",17),s.ɵɵtext(131,"\n "),s.ɵɵelementStart(132,"label",124),s.ɵɵtext(133),s.ɵɵpipe(134,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(135,"\n "),s.ɵɵelementStart(136,"input",125),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address2=t})),s.ɵɵelementEnd(),s.ɵɵtext(137,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(138,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(139,"\n "),s.ɵɵelementStart(140,"div",16),s.ɵɵtext(141,"\n "),s.ɵɵelementStart(142,"div",17),s.ɵɵtext(143,"\n "),s.ɵɵelementStart(144,"label",126),s.ɵɵtext(145),s.ɵɵpipe(146,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(147,"\n "),s.ɵɵelementStart(148,"input",127),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.address3=t})),s.ɵɵelementEnd(),s.ɵɵtext(149,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(150,"\n "),s.ɵɵelementStart(151,"div",17),s.ɵɵtext(152,"\n "),s.ɵɵelementStart(153,"label",128),s.ɵɵtext(154),s.ɵɵpipe(155,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(156,"\n "),s.ɵɵelementStart(157,"input",129),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.city=t})),s.ɵɵelementEnd(),s.ɵɵtext(158,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(159,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(160,"\n "),s.ɵɵelementStart(161,"div",16),s.ɵɵtext(162,"\n "),s.ɵɵelementStart(163,"div",17),s.ɵɵtext(164,"\n "),s.ɵɵelementStart(165,"label",130),s.ɵɵtext(166),s.ɵɵpipe(167,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(168,"\n "),s.ɵɵelementStart(169,"input",131),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.state=t})),s.ɵɵelementEnd(),s.ɵɵtext(170,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(171,"\n "),s.ɵɵelementStart(172,"div",17),s.ɵɵtext(173,"\n "),s.ɵɵelementStart(174,"label",132),s.ɵɵtext(175),s.ɵɵpipe(176,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(177,"\n "),s.ɵɵelementStart(178,"input",133),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.postalCode=t})),s.ɵɵelementEnd(),s.ɵɵtext(179,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(180,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(181,"\n "),s.ɵɵelementStart(182,"div",16),s.ɵɵtext(183,"\n "),s.ɵɵelementStart(184,"div",17),s.ɵɵtext(185,"\n "),s.ɵɵelementStart(186,"label",134),s.ɵɵtext(187),s.ɵɵpipe(188,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(189,"\n "),s.ɵɵelementStart(190,"input",135),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.identity.country=t})),s.ɵɵelementEnd(),s.ɵɵtext(191,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(192,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(193,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(8,55,"title")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.title)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.identityTitleOptions),s.ɵɵadvance(10),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(23,57,"firstName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.firstName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(32,59,"middleName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.middleName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(41,61,"lastName")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.lastName)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(53,63,"username")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.username)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(62,65,"company")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.company)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(74,67,"ssn")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.ssn)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(83,69,"passportNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.passportNumber)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(92,71,"licenseNumber")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.licenseNumber)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(104,73,"email")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.email)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(113,75,"phone")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.phone)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(125,77,"address1")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address1)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(134,79,"address2")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address2)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(146,81,"address3")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.address3)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(155,83,"cityTown")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.city)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(167,85,"stateProvince")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.state)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(6),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(176,87,"zipPostalCode")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.postalCode)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(9),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(188,89,"country")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.identity.country)("disabled",e.cipher.isDeleted||e.viewOnly)}}function ae(e,t){if(1&e&&(s.ɵɵelementStart(0,"option",30),s.ɵɵtext(1),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵproperty("ngValue",e.value),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function se(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",16),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",137),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",138),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"select",139),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).cipher.organizationId=t}))("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).organizationChanged()})),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,ae,2,2,"option",29),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"ownership")),s.ɵɵadvance(8),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,7,"whoOwnsThisItem")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.organizationId)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.ownershipOptions)}}function le(e,t){1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"i18n"),s.ɵɵelementEnd()),2&e&&(s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function ce(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",141),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"input",142),s.ɵɵlistener("ngModelChange",(function(t){return s.ɵɵrestoreView(e).$implicit.checked=t})),s.ɵɵelementEnd(),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"label",143),s.ɵɵtext(5),s.ɵɵelementEnd(),s.ɵɵtext(6,"\n "),s.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index,i=s.ɵɵnextContext(4);s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("id","collection-",n,""),s.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),s.ɵɵproperty("ngModel",e.checked)("disabled",i.cipher.isDeleted||i.viewOnly),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate1("for","collection-",n,""),s.ɵɵadvance(1),s.ɵɵtextInterpolate(e.name)}}function de(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,ce,7,6,"div",140),s.ɵɵtext(3,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.collections)}}function pe(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵtemplate(6,le,3,3,"div",21),s.ɵɵtext(7,"\n "),s.ɵɵtemplate(8,de,4,1,"ng-container",21),s.ɵɵtext(9,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,3,"collections")),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.collections||!e.collections.length),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}function ue(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"b",145),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5),s.ɵɵpipe(6,"date"),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,2,"datePasswordUpdated"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(6,4,e.cipher.passwordRevisionDisplayDate,"medium"),"\n ")}}function me(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div"),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"b",145),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"a",146),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(3).viewHistory()})),s.ɵɵpipe(7,"i18n"),s.ɵɵtext(8),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(3),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(4,3,"passwordHistory"),":"),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(7,5,"view")),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",e.cipher.passwordHistory.length,"\n ")}}function he(e,t){if(1&e&&(s.ɵɵelementStart(0,"div"),s.ɵɵtext(1),s.ɵɵpipe(2,"date"),s.ɵɵelementStart(3,"span",148),s.ɵɵtext(4),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=t.$implicit;s.ɵɵadvance(1),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(2,2,e.lastUsedDate,"short")," -\n "),s.ɵɵadvance(3),s.ɵɵtextInterpolate(e.password)}}function ve(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",62),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,he,6,5,"div",147),s.ɵɵtext(3,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(3);s.ɵɵadvance(2),s.ɵɵproperty("ngForOf",e.cipher.passwordHistory)}}function fe(e,t){if(1&e&&(s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",144),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"div"),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"b",145),s.ɵɵtext(7),s.ɵɵpipe(8,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(9),s.ɵɵpipe(10,"date"),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵtemplate(12,ue,7,7,"div",21),s.ɵɵtext(13,"\n "),s.ɵɵtemplate(14,me,10,7,"div",21),s.ɵɵtext(15,"\n "),s.ɵɵtemplate(16,ve,4,1,"div",60),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementContainerEnd()),2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(7),s.ɵɵtextInterpolate1("",s.ɵɵpipeBind1(8,5,"dateUpdated"),":"),s.ɵɵadvance(2),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind2(10,7,e.cipher.revisionDate,"medium"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.showRevisionDate),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.hasPasswordHistory),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.viewingPasswordHistory)}}function ge(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementContainerStart(0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"h3",136),s.ɵɵtext(3),s.ɵɵpipe(4,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",141),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"input",149),s.ɵɵlistener("change",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).repromptChanged()})),s.ɵɵelementEnd(),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",150),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"a",151),s.ɵɵpipe(15,"i18n"),s.ɵɵtext(16,"\n "),s.ɵɵelement(17,"i",79),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(20,"\n "),s.ɵɵelementContainerEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(4,5,"options")),s.ɵɵadvance(5),s.ɵɵproperty("ngModel",e.reprompt)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,7,"passwordPrompt")),s.ɵɵadvance(3),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(15,9,"learnMore"))}}function ye(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"div",13),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,R,3,3,"app-callout",14),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,U,14,6,"div",15),s.ɵɵtext(5,"\n "),s.ɵɵelementStart(6,"div",16),s.ɵɵtext(7,"\n "),s.ɵɵelementStart(8,"div",17),s.ɵɵtext(9,"\n "),s.ɵɵelementStart(10,"label",18),s.ɵɵtext(11),s.ɵɵpipe(12,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(13,"\n "),s.ɵɵelementStart(14,"input",19),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().cipher.name=t})),s.ɵɵelementEnd(),s.ɵɵtext(15,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(16,"\n "),s.ɵɵtemplate(17,N,11,6,"div",20),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtext(20,"\n "),s.ɵɵtemplate(21,ee,74,38,"ng-container",21),s.ɵɵtext(22,"\n "),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,ie,108,57,"ng-container",21),s.ɵɵtext(25,"\n "),s.ɵɵtext(26,"\n "),s.ɵɵtemplate(27,oe,194,91,"ng-container",21),s.ɵɵtext(28,"\n "),s.ɵɵelementStart(29,"div",22),s.ɵɵtext(30,"\n "),s.ɵɵelementStart(31,"label",23),s.ɵɵtext(32),s.ɵɵpipe(33,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n "),s.ɵɵelementStart(35,"textarea",24),s.ɵɵlistener("ngModelChange",(function(t){s.ɵɵrestoreView(e);return s.ɵɵnextContext().cipher.notes=t})),s.ɵɵelementEnd(),s.ɵɵtext(36,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(37,"\n "),s.ɵɵelement(38,"app-vault-add-edit-custom-fields",25),s.ɵɵtext(39,"\n "),s.ɵɵtemplate(40,se,21,9,"ng-container",21),s.ɵɵtext(41,"\n "),s.ɵɵtemplate(42,pe,10,5,"ng-container",21),s.ɵɵtext(43,"\n "),s.ɵɵtemplate(44,fe,19,10,"ng-container",21),s.ɵɵtext(45,"\n "),s.ɵɵtemplate(46,ge,21,11,"ng-container",21),s.ɵɵtext(47,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowOwnershipAssignment()&&!e.allowPersonal),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.editMode&&!e.viewOnly),s.ɵɵadvance(7),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(12,20,"name")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.name)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",!e.organization),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Login),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Card),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",e.cipher.type===e.cipherType.Identity),s.ɵɵadvance(5),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(33,22,"notes")),s.ɵɵadvance(3),s.ɵɵproperty("ngModel",e.cipher.notes)("disabled",e.cipher.isDeleted||e.viewOnly),s.ɵɵadvance(3),s.ɵɵproperty("cipher",e.cipher)("thisCipherType",e.cipher.type)("viewOnly",e.viewOnly)("copy",e.copy.bind(e)),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.allowOwnershipAssignment()),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",(!e.editMode||e.cloneMode)&&e.cipher.organizationId),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.editMode),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.canUseReprompt)}}function xe(e,t){if(1&e&&(s.ɵɵelementStart(0,"button",152),s.ɵɵtext(1,"\n "),s.ɵɵelement(2,"i",153),s.ɵɵpipe(3,"i18n"),s.ɵɵtext(4,"\n "),s.ɵɵelementStart(5,"span"),s.ɵɵtext(6),s.ɵɵpipe(7,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext(),t=s.ɵɵreference(5);s.ɵɵproperty("disabled",t.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(3,3,"loading")),s.ɵɵadvance(4),s.ɵɵtextInterpolate(s.ɵɵpipeBind1(7,5,null!=e.cipher&&e.cipher.isDeleted?"restore":"save"))}}const Se=function(e,t){return{"bwi-star-f":e,"bwi-star":t}};function be(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",70),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).toggleFavorite()})),s.ɵɵpipe(1,"i18n"),s.ɵɵtext(2,"\n "),s.ɵɵelement(3,"i",43),s.ɵɵtext(4,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵnextContext(2);s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(1,2,e.cipher.favorite?"unfavorite":"favorite")),s.ɵɵadvance(3),s.ɵɵproperty("ngClass",s.ɵɵpureFunction2(4,Se,e.cipher.favorite,!e.cipher.favorite))}}function we(e,t){if(1&e){const e=s.ɵɵgetCurrentView();s.ɵɵelementStart(0,"button",157,158),s.ɵɵlistener("click",(function(){s.ɵɵrestoreView(e);return s.ɵɵnextContext(2).delete()})),s.ɵɵpipe(2,"i18n"),s.ɵɵtext(3,"\n "),s.ɵɵelement(4,"i",159),s.ɵɵtext(5,"\n "),s.ɵɵelement(6,"i",160),s.ɵɵpipe(7,"i18n"),s.ɵɵtext(8,"\n "),s.ɵɵelementEnd()}if(2&e){const e=s.ɵɵreference(1),t=s.ɵɵnextContext(2);s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(2,6,t.cipher.isDeleted?"permanentlyDelete":"delete")),s.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),s.ɵɵadvance(4),s.ɵɵproperty("hidden",e.loading),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("title",s.ɵɵpipeBind1(7,8,"loading")),s.ɵɵproperty("hidden",!e.loading)}}function Ce(e,t){if(1&e&&(s.ɵɵelementStart(0,"div",154),s.ɵɵtext(1,"\n "),s.ɵɵtemplate(2,be,5,7,"button",155),s.ɵɵtext(3,"\n "),s.ɵɵtemplate(4,we,9,10,"button",156),s.ɵɵtext(5,"\n "),s.ɵɵelementEnd()),2&e){const e=s.ɵɵnextContext();s.ɵɵadvance(2),s.ɵɵproperty("ngIf",!e.organization&&!e.cipher.isDeleted),s.ɵɵadvance(2),s.ɵɵproperty("ngIf",e.editMode&&!e.cloneMode)}}class Ie extends r.AddEditComponent{constructor(e,t,n,i,r,o,a,s,l,c,d,p,u,m,h){super(e,t,n,i,r,o,a,c,d,p,m,h,u),this.totpService=s,this.passwordGenerationService=l,this.messagingService=c,this.policyService=p,this.showRevisionDate=!1,this.hasPasswordHistory=!1,this.viewingPasswordHistory=!1,this.viewOnly=!1}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return i(this,void 0,void 0,(function*(){if(yield e.ngOnInit.call(this),yield this.load(),this.showRevisionDate=null!=this.cipher.passwordRevisionDisplayDate,this.hasPasswordHistory=this.cipher.hasPasswordHistory,this.cleanUp(),this.canAccessPremium=yield this.stateService.getCanAccessPremium(),this.cipher.type===o.CipherType.Login&&this.cipher.login.totp&&(this.cipher.organizationUseTotp||this.canAccessPremium)){yield this.totpUpdateCode();const e=this.totpService.getTimeInterval(this.cipher.login.totp);yield this.totpTick(e),this.totpInterval=window.setInterval((()=>i(this,void 0,void 0,(function*(){yield this.totpTick(e)}))),1e3)}}))}toggleFavorite(){this.cipher.favorite=!this.cipher.favorite}launch(e){e.canLaunch&&this.platformUtilsService.launchUri(e.launchUri)}copy(e,t,n){null!=e&&(this.platformUtilsService.copyToClipboard(e,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(t))),this.editMode&&("password"===t?this.eventService.collect(a.EventType.Cipher_ClientToggledHiddenFieldVisible,this.cipherId):"securityCode"===t?this.eventService.collect(a.EventType.Cipher_ClientCopiedCardCode,this.cipherId):"H_Field"===n&&this.eventService.collect(a.EventType.Cipher_ClientCopiedHiddenField,this.cipherId)))}generatePassword(){const e=Object.create(null,{generatePassword:{get:()=>super.generatePassword}});return i(this,void 0,void 0,(function*(){const t=yield e.generatePassword.call(this);if(t){const e=(yield this.passwordGenerationService.getOptions())[0];this.cipher.login.password=yield this.passwordGenerationService.generatePassword(e)}return t}))}premiumRequired(){this.canAccessPremium||this.messagingService.send("premiumRequired")}upgradeOrganization(){this.messagingService.send("upgradeOrganization",{organizationId:this.cipher.organizationId})}viewHistory(){this.viewingPasswordHistory=!this.viewingPasswordHistory}cleanUp(){this.totpInterval&&window.clearInterval(this.totpInterval)}totpUpdateCode(){return i(this,void 0,void 0,(function*(){if(null!=this.cipher&&this.cipher.type===o.CipherType.Login&&null!=this.cipher.login.totp)if(this.totpCode=yield this.totpService.getCode(this.cipher.login.totp),null!=this.totpCode)if(this.totpCode.length>4){const e=Math.floor(this.totpCode.length/2);this.totpCodeFormatted=this.totpCode.substring(0,e)+" "+this.totpCode.substring(e)}else this.totpCodeFormatted=this.totpCode;else this.totpCodeFormatted=null,this.totpInterval&&window.clearInterval(this.totpInterval);else this.totpInterval&&window.clearInterval(this.totpInterval)}))}allowOwnershipAssignment(){return(!this.editMode||this.cloneMode)&&null!=this.ownershipOptions&&(this.ownershipOptions.length>1||!this.allowPersonal)}totpTick(e){return i(this,void 0,void 0,(function*(){const t=Math.round((new Date).getTime()/1e3)%e;this.totpSec=e-t,this.totpDash=+(Math.round(78.6/e*t+"e+2")+"e-2"),this.totpLow=this.totpSec<=7,0===t&&(yield this.totpUpdateCode())}))}}t.AddEditComponent=Ie,Ie.ɵfac=function(e){return new(e||Ie)(s.ɵɵdirectiveInject(l.CipherService),s.ɵɵdirectiveInject(c.FolderService),s.ɵɵdirectiveInject(d.I18nService),s.ɵɵdirectiveInject(p.PlatformUtilsService),s.ɵɵdirectiveInject(u.AuditService),s.ɵɵdirectiveInject(m.StateService),s.ɵɵdirectiveInject(h.CollectionService),s.ɵɵdirectiveInject(v.TotpService),s.ɵɵdirectiveInject(f.PasswordGenerationService),s.ɵɵdirectiveInject(g.MessagingService),s.ɵɵdirectiveInject(y.EventService),s.ɵɵdirectiveInject(x.PolicyService),s.ɵɵdirectiveInject(S.OrganizationService),s.ɵɵdirectiveInject(b.LogService),s.ɵɵdirectiveInject(w.PasswordRepromptService))},Ie.ɵcmp=s.ɵɵdefineComponent({type:Ie,selectors:[["app-vault-add-edit"]],features:[s.ɵɵInheritDefinitionFeature],decls:36,vars:11,consts:[["role","dialog","aria-modal","true","aria-labelledby","cipherAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-lg"],["ngNativeValidate","","autocomplete","off",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","cipherAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],["class","ml-auto",4,"ngIf"],[1,"modal-body"],["type","info",4,"ngIf"],["class","row",4,"ngIf"],[1,"row"],[1,"col-6","form-group"],["for","name"],["id","name","type","text","name","Name","required","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","col-6 form-group",4,"ngIf"],[4,"ngIf"],[1,"form-group"],["for","notes"],["id","notes","name","Notes","rows","6",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"cipher","thisCipherType","viewOnly","copy"],["type","info"],["for","type"],["id","type","name","Type","appAutofocus","",1,"form-control",3,"ngModel","disabled","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[3,"ngValue"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","loginUsername"],[1,"input-group"],["id","loginUsername","type","text","name","Login.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["class","input-group-append",4,"ngIf"],[1,"d-flex"],["for","loginPassword"],["class","ml-auto d-flex",4,"ngIf"],["id","loginPassword","name","Login.Password","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"input-group-append"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","disabled","click"],["aria-hidden","true",1,"bwi","bwi-lg",3,"ngClass"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-clone"],["for","loginTotp"],["id","loginTotp","name","Login.Totp","appInputVerbatim","",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-6","form-group","totp","d-flex","align-items-end",3,"ngClass"],["class","d-flex align-items-center",4,"ngIf"],["href","#","appStopClick","","class","d-inline-block mb-3",3,"click",4,"ngIf"],["type","button",1,"btn","btn-outline-secondary",3,"appA11yTitle","click"],[1,"ml-auto","d-flex"],["href","#","class","d-block mr-2 bwi-icon-above-input","appStopClick","",3,"appA11yTitle","click",4,"ngIf"],["href","#","appStopClick","",1,"d-block","bwi-icon-above-input",3,"appA11yTitle","appApiAction","click"],["checkPasswordBtn",""],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-check-circle",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-spinner","bwi-spin",3,"hidden","title"],["href","#","appStopClick","",1,"d-block","mr-2","bwi-icon-above-input",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-fw","bwi-generate"],["src","../../images/totp-countdown.png","id","totpImage",1,"ml-2",3,"title"],["class","ml-3",4,"ngIf"],["href","#","appStopClick","","class","badge badge-primary ml-3",3,"click",4,"ngIf"],[1,"ml-3"],["href","#","appStopClick","",1,"badge","badge-primary","ml-3",3,"click"],[1,"d-flex","align-items-center"],[1,"totp-countdown","mr-3","ml-2"],[1,"totp-sec"],["r","12.6","cy","16","cx","16",1,"totp-circle","inner",3,"ngStyle"],["r","14","cy","16","cx","16",1,"totp-circle","outer"],[1,"totp-code","mr-2",3,"title"],["type","button",1,"btn","btn-link",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-clone"],["class","row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-7","form-group"],[3,"for"],["type","text","appInputVerbatim","",1,"form-control",3,"id","name","ngModel","disabled","placeholder","ngModelChange"],["aria-hidden","true",1,"bwi","bwi-lg","bwi-share-square"],[1,"col-5","form-group"],["href","https://bitwarden.com/help/uri-match-detection/","target","_blank","rel","noopener",1,"ml-auto",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-question-circle"],[1,"form-control","overflow-hidden",3,"id","name","ngModel","disabled","ngModelChange","change"],["type","button","class","btn btn-link text-danger ml-2",3,"appA11yTitle","click",4,"ngIf"],["type","button",1,"btn","btn-link","text-danger","ml-2",3,"appA11yTitle","click"],["aria-hidden","true",1,"bwi","bwi-minus-circle","bwi-lg"],["href","#","appStopClick","",1,"d-inline-block","mb-3",3,"click"],["aria-hidden","true",1,"bwi","bwi-plus-circle","bwi-fw"],["for","cardCardholderName"],["id","cardCardholderName","type","text","name","Card.CardCardholderName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardBrand"],["id","cardBrand","name","Card.Brand",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardNumber"],["id","cardNumber","name","Card.Number","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col","form-group"],["for","cardExpMonth"],["id","cardExpMonth","name","Card.ExpMonth",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","cardExpYear"],["id","cardExpYear","type","text","name","Card.ExpYear",1,"form-control",3,"ngModel","placeholder","disabled","ngModelChange"],["for","cardCode"],["id","cardCode","name","Card.Code","appInputVerbatim","","autocomplete","new-password",1,"form-control","text-monospace",3,"type","ngModel","disabled","ngModelChange"],[1,"col-4","form-group"],["for","idTitle"],["id","idTitle","name","Identity.Title",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idFirstName"],["id","idFirstName","type","text","name","Identity.FirstName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idMiddleName"],["id","idMiddleName","type","text","name","Identity.MiddleName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLastName"],["id","idLastName","type","text","name","Identity.LastName",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idUsername"],["id","idUsername","type","text","name","Identity.Username","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCompany"],["id","idCompany","type","text","name","Identity.Company",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idSsn"],["id","idSsn","type","text","name","Identity.SSN","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPassportNumber"],["id","idPassportNumber","type","text","name","Identity.PassportNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idLicenseNumber"],["id","idLicenseNumber","type","text","name","Identity.LicenseNumber","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idEmail"],["id","idEmail","type","text","inputmode","email","name","Identity.Email","appInputVerbatim","",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPhone"],["id","idPhone","type","text","inputmode","tel","name","Identity.Phone",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress1"],["id","idAddress1","type","text","name","Identity.Address1",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress2"],["id","idAddress2","type","text","name","Identity.Address2",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idAddress3"],["id","idAddress3","type","text","name","Identity.Address3",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCity"],["id","idCity","type","text","name","Identity.City",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idState"],["id","idState","type","text","name","Identity.State",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idPostalCode"],["id","idPostalCode","type","text","name","Identity.PostalCode",1,"form-control",3,"ngModel","disabled","ngModelChange"],["for","idCountry"],["id","idCountry","type","text","name","Identity.Country",1,"form-control",3,"ngModel","disabled","ngModelChange"],[1,"mt-4"],[1,"col-5"],["for","organizationId"],["id","organizationId","name","OrganizationId",1,"form-control",3,"ngModel","disabled","ngModelChange","change"],["class","form-check",4,"ngFor","ngForOf"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"ngModel","id","name","disabled","ngModelChange"],[1,"form-check-label",3,"for"],[1,"small","text-muted","mt-4"],[1,"font-weight-semibold"],["href","#","appStopClick","",3,"title","click"],[4,"ngFor","ngForOf"],[1,"generated-wrapper","text-monospace","ml-2"],["type","checkbox","id","passwordPrompt","name","passwordPrompt",1,"form-check-input",3,"ngModel","disabled","change"],["for","passwordPrompt",1,"form-check-label"],["target","_blank","rel","noopener","href","https://bitwarden.com/help/managing-items/#protect-individual-items",3,"appA11yTitle"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],[1,"ml-auto"],["type","button","class","btn btn-link",3,"appA11yTitle","click",4,"ngIf"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){1&e&&(s.ɵɵelementStart(0,"div",0),s.ɵɵtext(1,"\n "),s.ɵɵelementStart(2,"div",1),s.ɵɵtext(3,"\n "),s.ɵɵelementStart(4,"form",2,3),s.ɵɵlistener("ngSubmit",(function(){return t.submit()})),s.ɵɵtext(6,"\n "),s.ɵɵelementStart(7,"div",4),s.ɵɵtext(8,"\n "),s.ɵɵelementStart(9,"h2",5),s.ɵɵtext(10),s.ɵɵelementEnd(),s.ɵɵtext(11,"\n "),s.ɵɵelementStart(12,"button",6),s.ɵɵpipe(13,"i18n"),s.ɵɵtext(14,"\n "),s.ɵɵelementStart(15,"span",7),s.ɵɵtext(16,"×"),s.ɵɵelementEnd(),s.ɵɵtext(17,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(18,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(19,"\n "),s.ɵɵtemplate(20,ye,48,24,"div",8),s.ɵɵtext(21,"\n "),s.ɵɵelementStart(22,"div",9),s.ɵɵtext(23,"\n "),s.ɵɵtemplate(24,xe,9,7,"button",10),s.ɵɵtext(25,"\n "),s.ɵɵelementStart(26,"button",11),s.ɵɵtext(27),s.ɵɵpipe(28,"i18n"),s.ɵɵelementEnd(),s.ɵɵtext(29,"\n "),s.ɵɵtemplate(30,Ce,6,2,"div",12),s.ɵɵtext(31,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(32,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(33,"\n "),s.ɵɵelementEnd(),s.ɵɵtext(34,"\n"),s.ɵɵelementEnd(),s.ɵɵtext(35,"\n")),2&e&&(s.ɵɵadvance(4),s.ɵɵproperty("appApiAction",t.formPromise),s.ɵɵadvance(6),s.ɵɵtextInterpolate(t.title),s.ɵɵadvance(2),s.ɵɵpropertyInterpolate("appA11yTitle",s.ɵɵpipeBind1(13,7,"close")),s.ɵɵadvance(8),s.ɵɵproperty("ngIf",t.cipher),s.ɵɵadvance(4),s.ɵɵproperty("ngIf",!t.viewOnly),s.ɵɵadvance(3),s.ɵɵtextInterpolate1("\n ",s.ɵɵpipeBind1(28,9,t.viewOnly?"close":"cancel"),"\n "),s.ɵɵadvance(3),s.ɵɵproperty("ngIf",t.cipher&&!t.viewOnly))},directives:[C.NgControlStatusGroup,C.NgForm,I.ApiActionDirective,E.A11yTitleDirective,P.NgIf,C.DefaultValueAccessor,C.RequiredValidator,C.NgControlStatus,C.NgModel,O.AddEditCustomFieldsComponent,k.CalloutComponent,C.SelectControlValueAccessor,A.AutofocusDirective,P.NgForOf,C.NgSelectOption,C.ɵNgSelectMultipleOption,T.InputVerbatimDirective,P.NgClass,M.StopClickDirective,B.PremiumBadgeComponent,P.NgStyle,C.CheckboxControlValueAccessor],pipes:[D.I18nPipe,P.DatePipe],encapsulation:2})},94652:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.AttachmentsComponent=void 0;const r=n(93705),o=(n(91674),n(45330),n(85714),n(51554),n(36631),n(73828),n(73569),n(32621)),a=n(45330),s=n(51554),l=n(85714),c=n(73569),d=n(73828),p=n(91674),u=n(36631),m=n(96832),h=n(56820),v=n(57490),f=n(8863),g=n(1142),y=n(99729);function x(e,t){if(1&e&&(o.ɵɵelementStart(0,"small"),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.cipher.name)}}function S(e,t){1&e&&o.ɵɵelement(0,"i",24)}function b(e,t){1&e&&o.ɵɵelement(0,"i",25)}function w(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",26),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"a",27),o.ɵɵtext(3,"\n "),o.ɵɵelement(4,"i",28),o.ɵɵpipe(5,"i18n"),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"span",29),o.ɵɵtext(8),o.ɵɵpipe(9,"i18n"),o.ɵɵelementEnd(),o.ɵɵelementEnd(),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"button",30,31),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).reupload(t)})),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(12),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(5,5,"attachmentFixDesc")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(9,7,"attachmentFixDesc")),o.ɵɵadvance(3),o.ɵɵproperty("appApiAction",n.reuploadPromises[t.id])("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(14,9,"fix"),"\n ")}}function C(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"td",32),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",33,34),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);const t=o.ɵɵnextContext().$implicit;return o.ɵɵnextContext(2).delete(t)})),o.ɵɵpipe(4,"i18n"),o.ɵɵtext(5,"\n "),o.ɵɵelement(6,"i",35),o.ɵɵtext(7,"\n "),o.ɵɵelement(8,"i",36),o.ɵɵpipe(9,"i18n"),o.ɵɵtext(10,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(11,"\n "),o.ɵɵelementEnd()}if(2&e){const e=o.ɵɵreference(3),t=o.ɵɵnextContext().$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(4,6,"delete")),o.ɵɵproperty("appApiAction",n.deletePromises[t.id])("disabled",e.loading),o.ɵɵadvance(4),o.ɵɵproperty("hidden",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(9,8,"loading")),o.ɵɵproperty("hidden",!e.loading)}}function I(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",16),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,S,1,0,"i",17),o.ɵɵtext(5,"\n "),o.ɵɵtemplate(6,b,1,0,"i",18),o.ɵɵtext(7,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"td",19),o.ɵɵtext(10,"\n "),o.ɵɵelementStart(11,"div",20),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"a",21),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).download(t)})),o.ɵɵtext(14),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵtemplate(16,w,16,11,"div",22),o.ɵɵtext(17,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementStart(19,"small"),o.ɵɵtext(20),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵtemplate(23,C,12,10,"td",23),o.ɵɵtext(24,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=o.ɵɵnextContext(2);o.ɵɵadvance(4),o.ɵɵproperty("ngIf",!e.downloading),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",e.downloading),o.ɵɵadvance(8),o.ɵɵtextInterpolate(e.fileName),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",n.showFixOldAttachments(e)),o.ɵɵadvance(4),o.ɵɵtextInterpolate(e.sizeName),o.ɵɵadvance(3),o.ɵɵproperty("ngIf",!n.viewOnly)}}function E(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",14),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,I,25,6,"tr",15),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.cipher.attachments)}}function P(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"h3"),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"label",37),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelement(10,"input",38),o.ɵɵtext(11,"\n "),o.ɵɵelementStart(12,"small",39),o.ɵɵtext(13),o.ɵɵpipe(14,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(15,"\n "),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(4,3,"newAttachment")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(8,5,"file")),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(14,7,"maxFileSize")))}function O(e,t){if(1&e&&(o.ɵɵelementStart(0,"button",40),o.ɵɵtext(1,"\n "),o.ɵɵelement(2,"i",41),o.ɵɵpipe(3,"i18n"),o.ɵɵtext(4,"\n "),o.ɵɵelementStart(5,"span"),o.ɵɵtext(6),o.ɵɵpipe(7,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(8,"\n "),o.ɵɵelementEnd()),2&e){o.ɵɵnextContext();const e=o.ɵɵreference(5);o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(3,3,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(7,5,"save"))}}class k extends r.AttachmentsComponent{constructor(e,t,n,i,r,o,a){super(e,t,n,r,o,window,a,i),this.viewOnly=!1}reupload(e){return i(this,void 0,void 0,(function*(){this.showFixOldAttachments(e)&&(yield this.reuploadCipherAttachment(e,!1))}))}showFixOldAttachments(e){return null==e.key&&null==this.cipher.organizationId}}t.AttachmentsComponent=k,k.ɵfac=function(e){return new(e||k)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.I18nService),o.ɵɵdirectiveInject(l.CryptoService),o.ɵɵdirectiveInject(c.StateService),o.ɵɵdirectiveInject(d.PlatformUtilsService),o.ɵɵdirectiveInject(p.ApiService),o.ɵɵdirectiveInject(u.LogService))},k.ɵcmp=o.ɵɵdefineComponent({type:k,selectors:[["app-vault-attachments"]],features:[o.ɵɵInheritDefinitionFeature],decls:42,vars:14,consts:[["role","dialog","aria-modal","true","aria-labelledby","attachmentsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","attachmentsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["class","table table-hover table-list",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit",3,"disabled",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"table","table-hover","table-list"],[4,"ngFor","ngForOf"],[1,"table-list-icon"],["class","bwi bwi-fw bwi-lg bwi-file","aria-hidden","true",4,"ngIf"],["class","bwi bwi-spinner bwi-lg bwi-fw bwi-spin","aria-hidden","true",4,"ngIf"],[1,"wrap"],[1,"d-flex"],["href","#","appStopClick","",3,"click"],["class","ml-2",4,"ngIf"],["class","table-list-options",4,"ngIf"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-lg","bwi-file"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-lg","bwi-fw","bwi-spin"],[1,"ml-2"],["href","https://bitwarden.com/help/attachments/#fixing-old-attachments","target","_blank","rel","noopener"],["aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"sr-only"],["type","button",1,"btn","btn-outline-primary","btn-sm","m-0","py-0","px-2",3,"appApiAction","disabled","click"],["reuploadBtn",""],[1,"table-list-options"],["type","button","appStopClick","",1,"btn","btn-outline-danger",3,"appA11yTitle","appApiAction","disabled","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"],["for","file",1,"sr-only"],["type","file","id","file","name","file","required","",1,"form-control-file"],[1,"form-text","text-muted"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"]],template:function(e,t){1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵtemplate(12,x,2,1,"small",6),o.ɵɵtext(13,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(14,"\n "),o.ɵɵelementStart(15,"button",7),o.ɵɵpipe(16,"i18n"),o.ɵɵtext(17,"\n "),o.ɵɵelementStart(18,"span",8),o.ɵɵtext(19,"×"),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(21,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"div",9),o.ɵɵtext(24,"\n "),o.ɵɵtemplate(25,E,7,1,"table",10),o.ɵɵtext(26,"\n "),o.ɵɵtemplate(27,P,16,9,"div",6),o.ɵɵtext(28,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(29,"\n "),o.ɵɵelementStart(30,"div",11),o.ɵɵtext(31,"\n "),o.ɵɵtemplate(32,O,9,7,"button",12),o.ɵɵtext(33,"\n "),o.ɵɵelementStart(34,"button",13),o.ɵɵtext(35),o.ɵɵpipe(36,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n")),2&e&&(o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"attachments"),"\n "),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",t.cipher),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(16,10,"close")),o.ɵɵadvance(10),o.ɵɵproperty("ngIf",t.cipher&&t.cipher.hasAttachments),o.ɵɵadvance(2),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(5),o.ɵɵproperty("ngIf",!t.viewOnly),o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(36,12,"close"),"\n "))},directives:[m.NgControlStatusGroup,m.NgForm,h.ApiActionDirective,v.NgIf,f.A11yTitleDirective,v.NgForOf,g.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},23582:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkActionsComponent=void 0;const r=n(32621),o=(n(64684),n(51554),n(44809),n(73828),n(34453)),a=(n(27957),n(33865)),s=n(63683),l=n(77996),c=n(27838),d=(n(91434),n(32621)),p=n(73828),u=n(51554),m=n(64684),h=n(44809),v=n(8863),f=n(57490),g=n(1142),y=n(99729),x=["bulkDeleteTemplate"],S=["bulkRestoreTemplate"],b=["bulkMoveTemplate"],w=["bulkShareTemplate"];function C(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",9),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkMove()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",16),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"moveSelected"),"\n "))}function I(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",9),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkShare()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",17),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"moveSelectedToOrg"),"\n "))}function E(e,t){if(1&e){const e=d.ɵɵgetCurrentView();d.ɵɵelementStart(0,"button",18),d.ɵɵlistener("click",(function(){d.ɵɵrestoreView(e);return d.ɵɵnextContext().bulkRestore()})),d.ɵɵtext(1,"\n "),d.ɵɵelement(2,"i",19),d.ɵɵtext(3),d.ɵɵpipe(4,"i18n"),d.ɵɵelementEnd()}2&e&&(d.ɵɵadvance(3),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(4,1,"restoreSelected"),"\n "))}function P(e,t){}function O(e,t){}function k(e,t){}function A(e,t){}class T{constructor(e,t,n,i){this.platformUtilsService=e,this.i18nService=t,this.modalService=n,this.passwordRepromptService=i}bulkDelete(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(a.BulkDeleteComponent,this.bulkDeleteModalRef,(n=>{n.permanent=this.deleted,n.cipherIds=e,n.organization=this.organization,n.onDeleted.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkRestore(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(l.BulkRestoreComponent,this.bulkRestoreModalRef,(n=>{n.cipherIds=e,n.onRestored.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkShare(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelected();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(c.BulkShareComponent,this.bulkShareModalRef,(n=>{n.ciphers=e,n.onShared.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}bulkMove(){return i(this,void 0,void 0,(function*(){if(!(yield this.promptPassword()))return;const e=this.ciphersComponent.getSelectedIds();if(0===e.length)return void this.platformUtilsService.showToast("error",this.i18nService.t("errorOccurred"),this.i18nService.t("nothingSelected"));const[t]=yield this.modalService.openViewRef(s.BulkMoveComponent,this.bulkMoveModalRef,(n=>{n.cipherIds=e,n.onMoved.subscribe((()=>i(this,void 0,void 0,(function*(){t.close(),yield this.ciphersComponent.refresh()}))))}))}))}selectAll(e){this.ciphersComponent.selectAll(e)}promptPassword(){return i(this,void 0,void 0,(function*(){return!this.ciphersComponent.getSelected().find((e=>e.reprompt!==o.CipherRepromptType.None))||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.BulkActionsComponent=T,T.ɵfac=function(e){return new(e||T)(d.ɵɵdirectiveInject(p.PlatformUtilsService),d.ɵɵdirectiveInject(u.I18nService),d.ɵɵdirectiveInject(m.ModalService),d.ɵɵdirectiveInject(h.PasswordRepromptService))},T.ɵcmp=d.ɵɵdefineComponent({type:T,selectors:[["app-vault-bulk-actions"]],viewQuery:function(e,t){if(1&e&&(d.ɵɵviewQuery(x,7,r.ViewContainerRef),d.ɵɵviewQuery(S,7,r.ViewContainerRef),d.ɵɵviewQuery(b,7,r.ViewContainerRef),d.ɵɵviewQuery(w,7,r.ViewContainerRef)),2&e){let e;d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkDeleteModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkRestoreModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkMoveModalRef=e.first),d.ɵɵqueryRefresh(e=d.ɵɵloadQuery())&&(t.bulkShareModalRef=e.first)}},inputs:{ciphersComponent:"ciphersComponent",deleted:"deleted",organization:"organization"},decls:50,vars:15,consts:[["appListDropdown","",1,"dropdown","mr-2"],["type","button","id","bulkActionsButton","data-toggle","dropdown","aria-haspopup","true","aria-expanded","false",1,"btn","btn-sm","btn-outline-secondary","dropdown-toggle",3,"appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-cog"],["aria-labelledby","bulkActionsButton",1,"dropdown-menu","dropdown-menu-right"],["class","dropdown-item","appStopClick","",3,"click",4,"ngIf"],["class","dropdown-item",3,"click",4,"ngIf"],[1,"dropdown-item","text-danger",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],[1,"dropdown-divider"],["appStopClick","",1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-check-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-minus-square"],["bulkDeleteTemplate",""],["bulkRestoreTemplate",""],["bulkMoveTemplate",""],["bulkShareTemplate",""],["aria-hidden","true",1,"bwi","bwi-fw","bwi-folder"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],[1,"dropdown-item",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"]],template:function(e,t){1&e&&(d.ɵɵelementStart(0,"div",0),d.ɵɵtext(1,"\n "),d.ɵɵelementStart(2,"button",1),d.ɵɵpipe(3,"i18n"),d.ɵɵtext(4,"\n "),d.ɵɵelement(5,"i",2),d.ɵɵtext(6,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(7,"\n "),d.ɵɵelementStart(8,"div",3),d.ɵɵtext(9,"\n "),d.ɵɵtemplate(10,C,5,3,"button",4),d.ɵɵtext(11,"\n "),d.ɵɵtemplate(12,I,5,3,"button",4),d.ɵɵtext(13,"\n "),d.ɵɵtemplate(14,E,5,3,"button",5),d.ɵɵtext(15,"\n "),d.ɵɵelementStart(16,"button",6),d.ɵɵlistener("click",(function(){return t.bulkDelete()})),d.ɵɵtext(17,"\n "),d.ɵɵelement(18,"i",7),d.ɵɵtext(19),d.ɵɵpipe(20,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(21,"\n "),d.ɵɵelement(22,"div",8),d.ɵɵtext(23,"\n "),d.ɵɵelementStart(24,"button",9),d.ɵɵlistener("click",(function(){return t.selectAll(!0)})),d.ɵɵtext(25,"\n "),d.ɵɵelement(26,"i",10),d.ɵɵtext(27),d.ɵɵpipe(28,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(29,"\n "),d.ɵɵelementStart(30,"button",9),d.ɵɵlistener("click",(function(){return t.selectAll(!1)})),d.ɵɵtext(31,"\n "),d.ɵɵelement(32,"i",11),d.ɵɵtext(33),d.ɵɵpipe(34,"i18n"),d.ɵɵelementEnd(),d.ɵɵtext(35,"\n "),d.ɵɵelementEnd(),d.ɵɵtext(36,"\n"),d.ɵɵelementEnd(),d.ɵɵtext(37,"\n\n"),d.ɵɵtemplate(38,P,0,0,"ng-template",null,12,d.ɵɵtemplateRefExtractor),d.ɵɵtext(40,"\n"),d.ɵɵtemplate(41,O,0,0,"ng-template",null,13,d.ɵɵtemplateRefExtractor),d.ɵɵtext(43,"\n"),d.ɵɵtemplate(44,k,0,0,"ng-template",null,14,d.ɵɵtemplateRefExtractor),d.ɵɵtext(46,"\n"),d.ɵɵtemplate(47,A,0,0,"ng-template",null,15,d.ɵɵtemplateRefExtractor),d.ɵɵtext(49,"\n")),2&e&&(d.ɵɵadvance(2),d.ɵɵpropertyInterpolate("appA11yTitle",d.ɵɵpipeBind1(3,7,"options")),d.ɵɵadvance(8),d.ɵɵproperty("ngIf",!t.deleted&&!t.organization),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",!t.deleted&&!t.organization),d.ɵɵadvance(2),d.ɵɵproperty("ngIf",t.deleted&&!t.organization),d.ɵɵadvance(5),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(20,9,t.deleted?"permanentlyDeleteSelected":"deleteSelected"),"\n "),d.ɵɵadvance(8),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(28,11,"selectAll"),"\n "),d.ɵɵadvance(6),d.ɵɵtextInterpolate1("\n ",d.ɵɵpipeBind1(34,13,"unselectAll"),"\n "))},directives:[v.A11yTitleDirective,f.NgIf,g.StopClickDirective],pipes:[y.I18nPipe],encapsulation:2})},33865:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkDeleteComponent=void 0;const r=n(32621),o=(n(91674),n(45330),n(51554),n(73828),n(27957),n(82890)),a=n(32621),s=n(45330),l=n(73828),c=n(51554),d=n(91674),p=n(96832),u=n(56820),m=n(8863),h=n(99729);class v{constructor(e,t,n,i){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.apiService=i,this.cipherIds=[],this.permanent=!1,this.onDeleted=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){this.organization&&this.organization.canEditAnyCollection?yield this.deleteCiphersAdmin():yield this.deleteCiphers(),yield this.formPromise,this.onDeleted.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t(this.permanent?"permanentlyDeletedItems":"deletedItems"))}))}deleteCiphers(){return i(this,void 0,void 0,(function*(){this.permanent?this.formPromise=yield this.cipherService.deleteManyWithServer(this.cipherIds):this.formPromise=yield this.cipherService.softDeleteManyWithServer(this.cipherIds)}))}deleteCiphersAdmin(){return i(this,void 0,void 0,(function*(){const e=new o.CipherBulkDeleteRequest(this.cipherIds,this.organization.id);this.permanent?this.formPromise=yield this.apiService.deleteManyCiphersAdmin(e):this.formPromise=yield this.apiService.putDeleteManyCiphersAdmin(e)}))}}t.BulkDeleteComponent=v,v.ɵfac=function(e){return new(e||v)(a.ɵɵdirectiveInject(s.CipherService),a.ɵɵdirectiveInject(l.PlatformUtilsService),a.ɵɵdirectiveInject(c.I18nService),a.ɵɵdirectiveInject(d.ApiService))},v.ɵcmp=a.ɵɵdefineComponent({type:v,selectors:[["app-vault-bulk-delete"]],inputs:{cipherIds:"cipherIds",permanent:"permanent",organization:"organization"},outputs:{onDeleted:"onDeleted"},decls:45,vars:21,consts:[["role","dialog","aria-modal","true","aria-labelledby","deleteSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","deleteSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"modal-footer"],["appAutoFocus","","type","submit",1,"btn","btn-danger","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(a.ɵɵelementStart(0,"div",0),a.ɵɵtext(1,"\n "),a.ɵɵelementStart(2,"div",1),a.ɵɵtext(3,"\n "),a.ɵɵelementStart(4,"form",2,3),a.ɵɵlistener("ngSubmit",(function(){return t.submit()})),a.ɵɵtext(6,"\n "),a.ɵɵelementStart(7,"div",4),a.ɵɵtext(8,"\n "),a.ɵɵelementStart(9,"h2",5),a.ɵɵtext(10),a.ɵɵpipe(11,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(12,"\n "),a.ɵɵelementStart(13,"button",6),a.ɵɵpipe(14,"i18n"),a.ɵɵtext(15,"\n "),a.ɵɵelementStart(16,"span",7),a.ɵɵtext(17,"×"),a.ɵɵelementEnd(),a.ɵɵtext(18,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(19,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(20,"\n "),a.ɵɵelementStart(21,"div",8),a.ɵɵtext(22),a.ɵɵpipe(23,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(24,"\n "),a.ɵɵelementStart(25,"div",9),a.ɵɵtext(26,"\n "),a.ɵɵelementStart(27,"button",10),a.ɵɵtext(28,"\n "),a.ɵɵelement(29,"i",11),a.ɵɵpipe(30,"i18n"),a.ɵɵtext(31,"\n "),a.ɵɵelementStart(32,"span"),a.ɵɵtext(33),a.ɵɵpipe(34,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(35,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(36,"\n "),a.ɵɵelementStart(37,"button",12),a.ɵɵtext(38),a.ɵɵpipe(39,"i18n"),a.ɵɵelementEnd(),a.ɵɵtext(40,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(41,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(42,"\n "),a.ɵɵelementEnd(),a.ɵɵtext(43,"\n"),a.ɵɵelementEnd(),a.ɵɵtext(44,"\n")),2&e){const e=a.ɵɵreference(5);a.ɵɵadvance(4),a.ɵɵproperty("appApiAction",t.formPromise),a.ɵɵadvance(6),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(11,8,t.permanent?"permanentlyDeleteSelected":"deleteSelected"),"\n "),a.ɵɵadvance(3),a.ɵɵpropertyInterpolate("appA11yTitle",a.ɵɵpipeBind1(14,10,"close")),a.ɵɵadvance(9),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind2(23,12,t.permanent?"permanentlyDeleteSelectedItemsDesc":"deleteSelectedItemsDesc",t.cipherIds.length),"\n "),a.ɵɵadvance(5),a.ɵɵproperty("disabled",e.loading),a.ɵɵadvance(2),a.ɵɵpropertyInterpolate("title",a.ɵɵpipeBind1(30,15,"loading")),a.ɵɵadvance(4),a.ɵɵtextInterpolate(a.ɵɵpipeBind1(34,17,t.permanent?"permanentlyDelete":"delete")),a.ɵɵadvance(5),a.ɵɵtextInterpolate1("\n ",a.ɵɵpipeBind1(39,19,"cancel"),"\n ")}},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.A11yTitleDirective],pipes:[h.I18nPipe],encapsulation:2})},63683:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkMoveComponent=void 0;const r=n(32621),o=(n(45330),n(88308),n(51554),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(88308),d=n(96832),p=n(56820),u=n(8863),m=n(57490),h=n(99729);function v(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",17),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}class f{constructor(e,t,n,i){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.folderService=i,this.cipherIds=[],this.onMoved=new r.EventEmitter,this.folderId=null,this.folders=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.folders=yield this.folderService.getAllDecrypted(),this.folderId=this.folders[0].id}))}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.cipherService.moveManyWithServer(this.cipherIds,this.folderId),yield this.formPromise,this.onMoved.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItems"))}))}}t.BulkMoveComponent=f,f.ɵfac=function(e){return new(e||f)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService),o.ɵɵdirectiveInject(c.FolderService))},f.ɵcmp=o.ɵɵdefineComponent({type:f,selectors:[["app-vault-bulk-move"]],inputs:{cipherIds:"cipherIds"},outputs:{onMoved:"onMoved"},decls:60,vars:26,consts:[["role","dialog","aria-modal","true","aria-labelledby","moveSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","moveSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"form-group"],["for","folder"],["id","folder","name","FolderId",1,"form-control",3,"ngModel","ngModelChange"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[3,"ngValue"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"button",6),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",7),o.ɵɵtext(17,"×"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"div",8),o.ɵɵtext(22,"\n "),o.ɵɵelementStart(23,"p"),o.ɵɵtext(24),o.ɵɵpipe(25,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"div",9),o.ɵɵtext(28,"\n "),o.ɵɵelementStart(29,"label",10),o.ɵɵtext(30),o.ɵɵpipe(31,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(32,"\n "),o.ɵɵelementStart(33,"select",11),o.ɵɵlistener("ngModelChange",(function(e){return t.folderId=e})),o.ɵɵtext(34,"\n "),o.ɵɵtemplate(35,v,2,2,"option",12),o.ɵɵtext(36,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(37,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(38,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(39,"\n "),o.ɵɵelementStart(40,"div",13),o.ɵɵtext(41,"\n "),o.ɵɵelementStart(42,"button",14),o.ɵɵtext(43,"\n "),o.ɵɵelement(44,"i",15),o.ɵɵpipe(45,"i18n"),o.ɵɵtext(46,"\n "),o.ɵɵelementStart(47,"span"),o.ɵɵtext(48),o.ɵɵpipe(49,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(50,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(51,"\n "),o.ɵɵelementStart(52,"button",16),o.ɵɵtext(53),o.ɵɵpipe(54,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(55,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(56,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(57,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(58,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(59,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,11,"moveSelected"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(14,13,"close")),o.ɵɵadvance(11),o.ɵɵtextInterpolate(o.ɵɵpipeBind2(25,15,"moveSelectedItemsDesc",t.cipherIds.length)),o.ɵɵadvance(6),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(31,18,"folder")),o.ɵɵadvance(3),o.ɵɵproperty("ngModel",t.folderId),o.ɵɵadvance(2),o.ɵɵproperty("ngForOf",t.folders),o.ɵɵadvance(7),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(45,20,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(49,22,"save")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(54,24,"cancel"),"\n ")}},directives:[d.ɵNgNoValidate,d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.A11yTitleDirective,d.SelectControlValueAccessor,d.NgControlStatus,d.NgModel,m.NgForOf,d.NgSelectOption,d.ɵNgSelectMultipleOption],pipes:[h.I18nPipe],encapsulation:2})},77996:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkRestoreComponent=void 0;const r=n(32621),o=(n(45330),n(51554),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(96832),d=n(56820),p=n(8863),u=n(99729);class m{constructor(e,t,n){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.cipherIds=[],this.onRestored=new r.EventEmitter}submit(){return i(this,void 0,void 0,(function*(){this.formPromise=this.cipherService.restoreManyWithServer(this.cipherIds),yield this.formPromise,this.onRestored.emit(),this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItems"))}))}}t.BulkRestoreComponent=m,m.ɵfac=function(e){return new(e||m)(o.ɵɵdirectiveInject(a.CipherService),o.ɵɵdirectiveInject(s.PlatformUtilsService),o.ɵɵdirectiveInject(l.I18nService))},m.ɵcmp=o.ɵɵdefineComponent({type:m,selectors:[["app-vault-bulk-restore"]],inputs:{cipherIds:"cipherIds"},outputs:{onRestored:"onRestored"},decls:45,vars:21,consts:[["role","dialog","aria-modal","true","aria-labelledby","restoreSelectedTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","restoreSelectedTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"modal-footer"],["appAutoFocus","","type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"]],template:function(e,t){if(1&e&&(o.ɵɵelementStart(0,"div",0),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"div",1),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"form",2,3),o.ɵɵlistener("ngSubmit",(function(){return t.submit()})),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"div",4),o.ɵɵtext(8,"\n "),o.ɵɵelementStart(9,"h2",5),o.ɵɵtext(10),o.ɵɵpipe(11,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(12,"\n "),o.ɵɵelementStart(13,"button",6),o.ɵɵpipe(14,"i18n"),o.ɵɵtext(15,"\n "),o.ɵɵelementStart(16,"span",7),o.ɵɵtext(17,"×"),o.ɵɵelementEnd(),o.ɵɵtext(18,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(19,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(20,"\n "),o.ɵɵelementStart(21,"div",8),o.ɵɵtext(22),o.ɵɵpipe(23,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(24,"\n "),o.ɵɵelementStart(25,"div",9),o.ɵɵtext(26,"\n "),o.ɵɵelementStart(27,"button",10),o.ɵɵtext(28,"\n "),o.ɵɵelement(29,"i",11),o.ɵɵpipe(30,"i18n"),o.ɵɵtext(31,"\n "),o.ɵɵelementStart(32,"span"),o.ɵɵtext(33),o.ɵɵpipe(34,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(35,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(36,"\n "),o.ɵɵelementStart(37,"button",12),o.ɵɵtext(38),o.ɵɵpipe(39,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(40,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(41,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(42,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(43,"\n"),o.ɵɵelementEnd(),o.ɵɵtext(44,"\n")),2&e){const e=o.ɵɵreference(5);o.ɵɵadvance(4),o.ɵɵproperty("appApiAction",t.formPromise),o.ɵɵadvance(6),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(11,8,"restoreSelected"),"\n "),o.ɵɵadvance(3),o.ɵɵpropertyInterpolate("appA11yTitle",o.ɵɵpipeBind1(14,10,"close")),o.ɵɵadvance(9),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind2(23,12,"restoreSelectedItemsDesc",t.cipherIds.length),"\n "),o.ɵɵadvance(5),o.ɵɵproperty("disabled",e.loading),o.ɵɵadvance(2),o.ɵɵpropertyInterpolate("title",o.ɵɵpipeBind1(30,15,"loading")),o.ɵɵadvance(4),o.ɵɵtextInterpolate(o.ɵɵpipeBind1(34,17,"restore")),o.ɵɵadvance(5),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(39,19,"cancel"),"\n ")}},directives:[c.ɵNgNoValidate,c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective],pipes:[u.I18nPipe],encapsulation:2})},27838:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BulkShareComponent=void 0;const r=n(32621),o=(n(45330),n(3174),n(51554),n(36631),n(63513),n(73828),n(32621)),a=n(45330),s=n(73828),l=n(51554),c=n(3174),d=n(63513),p=n(36631),u=n(96832),m=n(56820),h=n(8863),v=n(57490),f=n(39159),g=n(99729);function y(e,t){if(1&e&&(o.ɵɵelementStart(0,"option",21),o.ɵɵtext(1),o.ɵɵelementEnd()),2&e){const e=t.$implicit;o.ɵɵproperty("ngValue",e.id),o.ɵɵadvance(1),o.ɵɵtextInterpolate(e.name)}}function x(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"div",22),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"button",23),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().selectAll(!0)})),o.ɵɵtext(3),o.ɵɵpipe(4,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementStart(6,"button",23),o.ɵɵlistener("click",(function(){o.ɵɵrestoreView(e);return o.ɵɵnextContext().selectAll(!1)})),o.ɵɵtext(7),o.ɵɵpipe(8,"i18n"),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}2&e&&(o.ɵɵadvance(3),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(4,2,"selectAll"),"\n "),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function S(e,t){1&e&&(o.ɵɵelementStart(0,"div"),o.ɵɵtext(1),o.ɵɵpipe(2,"i18n"),o.ɵɵelementEnd()),2&e&&(o.ɵɵadvance(1),o.ɵɵtextInterpolate1("\n ",o.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function b(e,t){if(1&e){const e=o.ɵɵgetCurrentView();o.ɵɵelementStart(0,"tr",26),o.ɵɵlistener("click",(function(){const t=o.ɵɵrestoreView(e).$implicit;return o.ɵɵnextContext(2).check(t)})),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"td",27),o.ɵɵtext(3,"\n "),o.ɵɵelementStart(4,"input",28),o.ɵɵlistener("ngModelChange",(function(t){return o.ɵɵrestoreView(e).$implicit.checked=t})),o.ɵɵelementEnd(),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementStart(7,"td"),o.ɵɵtext(8),o.ɵɵelementEnd(),o.ɵɵtext(9,"\n "),o.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;o.ɵɵadvance(4),o.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),o.ɵɵproperty("ngModel",e.checked),o.ɵɵadvance(4),o.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function w(e,t){if(1&e&&(o.ɵɵelementStart(0,"table",24),o.ɵɵtext(1,"\n "),o.ɵɵelementStart(2,"tbody"),o.ɵɵtext(3,"\n "),o.ɵɵtemplate(4,b,10,3,"tr",25),o.ɵɵtext(5,"\n "),o.ɵɵelementEnd(),o.ɵɵtext(6,"\n "),o.ɵɵelementEnd()),2&e){const e=o.ɵɵnextContext();o.ɵɵadvance(4),o.ɵɵproperty("ngForOf",e.collections)}}const C=function(e){return{loading:e}};class I{constructor(e,t,n,i,o,a){this.cipherService=e,this.platformUtilsService=t,this.i18nService=n,this.collectionService=i,this.organizationService=o,this.logService=a,this.ciphers=[],this.onShared=new r.EventEmitter,this.nonShareableCount=0,this.collections=[],this.organizations=[],this.shareableCiphers=[],this.writeableCollections=[]}ngOnInit(){return i(this,void 0,void 0,(function*(){this.shareableCiphers=this.ciphers.filter((e=>!e.hasOldAttachments&&null==e.organizationId)),this.nonShareableCount=this.ciphers.length-this.shareableCiphers.length;const e=yield this.collectionService.getAllDecrypted();this.writeableCollections=e.filter((e=>!e.readOnly)),this.organizations=yield this.organizationService.getAll(),null==this.organizationId&&this.organizations.length>0&&(this.organizationId=this.organizations[0].id),this.filterCollections()}))}ngOnDestroy(){this.selectAll(!1)}filterCollections(){this.selectAll(!1),null==this.organizationId||0===this.writeableCollections.length?this.collections=[]:this.collections=this.writeableCollections.filter((e=>e.organizationId===this.organizationId))}submit(){var e,t;return i(this,void 0,void 0,(function*(){const n=this.collections.filter((e=>e.checked)).map((e=>e.id));try{this.formPromise=this.cipherService.shareManyWithServer(this.shareableCiphers,this.organizationId,n),yield this.formPromise,this.onShared.emit();const i=null!==(t=null===(e=this.organizations.find((e=>e.id===this.organizationId)))||void 0===e?void 0:e.name)&&void 0!==t?t:this.i18nService.t("organization");this.platformUtilsService.showToast("success",null,this.i18nService.t("movedItemsToOrg",i))}catch(i){this.logService.error(i)}}))}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){(e?this.collections:this.writeableCollections).forEach((t=>this.check(t,e)))}get canSave(){if(null!=this.shareableCiphers&&this.shareableCiphers.length>0&&null!=this.collections)for(let e=0;e0&&!i.organization),c.ɵɵadvance(4),c.ɵɵpropertyInterpolate("appA11yTitle",c.ɵɵpipeBind1(31,21,"options")),c.ɵɵproperty("bitMenuTriggerFor",n),c.ɵɵadvance(9),c.ɵɵproperty("ngIf",e.type===i.cipherType.Login&&!e.isDeleted),c.ɵɵadvance(5),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(45,23,"attachments"),"\n "),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",(!i.organization&&!e.organizationId||i.organization)&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!i.organization&&!e.organizationId&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organizationId&&!e.isDeleted),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.organizationId&&i.accessEvents),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.isDeleted),c.ɵɵadvance(7),c.ɵɵtextInterpolate1("\n ",c.ɵɵpipeBind1(63,25,e.isDeleted?"permanentlyDelete":"delete"),"\n ")}}function Y(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"table",3),c.ɵɵlistener("scrolled",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(2).loadMore()})),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"tbody"),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,$,68,30,"tr",4),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd(),c.ɵɵtext(6,"\n "),c.ɵɵelementEnd()}if(2&e){const e=c.ɵɵnextContext().ngIf,t=c.ɵɵnextContext();c.ɵɵproperty("infiniteScrollDistance",1)("infiniteScrollDisabled",!t.isPaging()),c.ɵɵadvance(4),c.ɵɵproperty("ngForOf",e)}}function Q(e,t){1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",35),c.ɵɵpipe(3,"i18n"),c.ɵɵtext(4,"\n "),c.ɵɵelementStart(5,"span",23),c.ɵɵtext(6),c.ɵɵpipe(7,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(8,"\n "),c.ɵɵelementContainerEnd()),2&e&&(c.ɵɵadvance(2),c.ɵɵpropertyInterpolate("title",c.ɵɵpipeBind1(3,2,"loading")),c.ɵɵadvance(4),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(7,4,"loading")))}function J(e,t){if(1&e){const e=c.ɵɵgetCurrentView();c.ɵɵelementStart(0,"button",37),c.ɵɵlistener("click",(function(){c.ɵɵrestoreView(e);return c.ɵɵnextContext(4).addCipher()})),c.ɵɵtext(1,"\n "),c.ɵɵelement(2,"i",38),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd()}2&e&&(c.ɵɵadvance(3),c.ɵɵtextInterpolate1("",c.ɵɵpipeBind1(4,1,"addItem"),"\n "))}function Z(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵelementStart(2,"p"),c.ɵɵtext(3),c.ɵɵpipe(4,"i18n"),c.ɵɵelementEnd(),c.ɵɵtext(5,"\n "),c.ɵɵtemplate(6,J,5,3,"button",36),c.ɵɵtext(7,"\n "),c.ɵɵelementContainerEnd()),2&e){const e=c.ɵɵnextContext(3);c.ɵɵadvance(3),c.ɵɵtextInterpolate(c.ɵɵpipeBind1(4,2,"noItemsInList")),c.ɵɵadvance(3),c.ɵɵproperty("ngIf",e.showAddNew)}}function X(e,t){if(1&e&&(c.ɵɵelementStart(0,"div",34),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Q,9,6,"ng-container",0),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,Z,8,4,"ng-container",0),c.ɵɵtext(5,"\n "),c.ɵɵelementEnd()),2&e){const e=c.ɵɵnextContext(2);c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.loaded),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.loaded)}}function ee(e,t){if(1&e&&(c.ɵɵelementContainerStart(0),c.ɵɵtext(1,"\n "),c.ɵɵtemplate(2,Y,7,3,"table",1),c.ɵɵtext(3,"\n "),c.ɵɵtemplate(4,X,6,2,"div",2),c.ɵɵtext(5,"\n"),c.ɵɵelementContainerEnd()),2&e){const e=t.ngIf;c.ɵɵadvance(2),c.ɵɵproperty("ngIf",e.length),c.ɵɵadvance(2),c.ɵɵproperty("ngIf",!e.length)}}class te extends o.CiphersComponent{constructor(e,t,n,i,o,a,l,c,d,p,u){super(e),this.i18nService=t,this.platformUtilsService=n,this.cipherService=i,this.eventService=o,this.totpService=a,this.stateService=l,this.passwordRepromptService=c,this.logService=d,this.organizationService=p,this.tokenService=u,this.showAddNew=!0,this.onAttachmentsClicked=new r.EventEmitter,this.onShareClicked=new r.EventEmitter,this.onCollectionsClicked=new r.EventEmitter,this.onCloneClicked=new r.EventEmitter,this.onOrganzationBadgeClicked=new r.EventEmitter,this.pagedCiphers=[],this.pageSize=200,this.cipherType=s.CipherType,this.userHasPremiumAccess=!1,this.organizations=[],this.didScroll=!1,this.pagedCiphersCount=0,this.refreshing=!1}ngOnDestroy(){this.selectAll(!1)}load(e=null,t=!1){const n=Object.create(null,{load:{get:()=>super.load}});return i(this,void 0,void 0,(function*(){yield n.load.call(this,e,t),this.profileName=yield this.tokenService.getName(),this.organizations=yield this.organizationService.getAll(),this.userHasPremiumAccess=yield this.stateService.getCanAccessPremium()}))}loadMore(){if(this.ciphers.length<=this.pageSize)return;const e=this.pagedCiphers.length;let t=this.pageSize;this.refreshing&&0===e&&this.pagedCiphersCount>this.pageSize&&(t=this.pagedCiphersCount),this.ciphers.length>e&&(this.pagedCiphers=this.pagedCiphers.concat(this.ciphers.slice(e,e+t))),this.pagedCiphersCount=this.pagedCiphers.length,this.didScroll=this.pagedCiphers.length>this.pageSize}refresh(){return i(this,void 0,void 0,(function*(){try{this.refreshing=!0,yield this.reload(this.filter,this.deleted)}finally{this.refreshing=!1}}))}isPaging(){const e=this.isSearching();return e&&this.didScroll&&this.resetPaging(),!e&&this.ciphers.length>this.pageSize}resetPaging(){return i(this,void 0,void 0,(function*(){this.pagedCiphers=[],this.loadMore()}))}doSearch(e){return i(this,void 0,void 0,(function*(){this.ciphers=yield this.searchService.searchCiphers(this.searchText,[this.filter,this.deletedFilter],e),this.resetPaging()}))}launch(e){this.platformUtilsService.launchUri(e)}attachments(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onAttachmentsClicked.emit(e)}))}share(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onShareClicked.emit(e)}))}collections(e){this.onCollectionsClicked.emit(e)}clone(e){return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&this.onCloneClicked.emit(e)}))}delete(e){return i(this,void 0,void 0,(function*(){if(!(yield this.repromptCipher(e)))return;if(null!=this.actionPromise)return;const t=e.isDeleted;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t(t?"permanentlyDeleteItemConfirmation":"deleteItemConfirmation"),this.i18nService.t(t?"permanentlyDeleteItem":"deleteItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.deleteCipher(e.id,t),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t(t?"permanentlyDeletedItem":"deletedItem")),this.refresh()}catch(n){this.logService.error(n)}this.actionPromise=null}))}restore(e){return i(this,void 0,void 0,(function*(){if(null!=this.actionPromise||!e.isDeleted)return;if(!(yield this.platformUtilsService.showDialog(this.i18nService.t("restoreItemConfirmation"),this.i18nService.t("restoreItem"),this.i18nService.t("yes"),this.i18nService.t("no"),"warning")))return!1;try{this.actionPromise=this.cipherService.restoreWithServer(e.id),yield this.actionPromise,this.platformUtilsService.showToast("success",null,this.i18nService.t("restoredItem")),this.refresh()}catch(t){this.logService.error(t)}this.actionPromise=null}))}copy(e,t,n,r){return i(this,void 0,void 0,(function*(){this.passwordRepromptService.protectedFields().includes(r)&&!(yield this.repromptCipher(e))||null==t||"TOTP"===r&&!this.displayTotpCopyButton(e)||(t===e.login.totp&&(t=yield this.totpService.getCode(t)),e.viewPassword&&(this.platformUtilsService.copyToClipboard(t,{window}),this.platformUtilsService.showToast("info",null,this.i18nService.t("valueCopied",this.i18nService.t(n))),"password"===n||"verificationCodeTotp"===n?this.eventService.collect(l.EventType.Cipher_ClientToggledHiddenFieldVisible,e.id):"securityCode"===n&&this.eventService.collect(l.EventType.Cipher_ClientCopiedCardCode,e.id)))}))}selectAll(e){e&&this.selectAll(!1);const t=e&&this.ciphers.length>500?500:this.ciphers.length;for(let n=0;n!!e.checked))}getSelectedIds(){return this.getSelected().map((e=>e.id))}displayTotpCopyButton(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.login)||void 0===t?void 0:t.hasTotp)&&void 0!==n&&n&&(e.organizationUseTotp||this.userHasPremiumAccess)}selectCipher(e){const t=Object.create(null,{selectCipher:{get:()=>super.selectCipher}});return i(this,void 0,void 0,(function*(){(yield this.repromptCipher(e))&&t.selectCipher.call(this,e)}))}onOrganizationClicked(e){this.onOrganzationBadgeClicked.emit(e)}deleteCipher(e,t){return t?this.cipherService.deleteWithServer(e):this.cipherService.softDeleteWithServer(e)}showFixOldAttachments(e){return e.hasOldAttachments&&null==e.organizationId}repromptCipher(e){return i(this,void 0,void 0,(function*(){return e.reprompt===a.CipherRepromptType.None||(yield this.passwordRepromptService.showPasswordPrompt())}))}}t.CiphersComponent=te,te.ɵfac=function(e){return new(e||te)(c.ɵɵdirectiveInject(d.SearchService),c.ɵɵdirectiveInject(p.I18nService),c.ɵɵdirectiveInject(u.PlatformUtilsService),c.ɵɵdirectiveInject(m.CipherService),c.ɵɵdirectiveInject(h.EventService),c.ɵɵdirectiveInject(v.TotpService),c.ɵɵdirectiveInject(f.StateService),c.ɵɵdirectiveInject(g.PasswordRepromptService),c.ɵɵdirectiveInject(y.LogService),c.ɵɵdirectiveInject(x.OrganizationService),c.ɵɵdirectiveInject(S.TokenService))},te.ɵcmp=c.ɵɵdefineComponent({type:te,selectors:[["app-vault-ciphers"]],inputs:{showAddNew:"showAddNew"},outputs:{onAttachmentsClicked:"onAttachmentsClicked",onShareClicked:"onShareClicked",onCollectionsClicked:"onCollectionsClicked",onCloneClicked:"onCloneClicked",onOrganzationBadgeClicked:"onOrganzationBadgeClicked"},features:[c.ɵɵInheritDefinitionFeature],decls:2,vars:1,consts:[[4,"ngIf"],["class","table table-hover table-list table-ciphers","infiniteScroll","",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled",4,"ngIf"],["class","no-items",4,"ngIf"],["infiniteScroll","",1,"table","table-hover","table-list","table-ciphers",3,"infiniteScrollDistance","infiniteScrollDisabled","scrolled"],[4,"ngFor","ngForOf"],[1,"table-list-checkbox",3,"click"],["type","checkbox","appStopProp","",3,"ngModel","ngModelChange"],[1,"table-list-icon",3,"click"],[3,"cipher"],[1,"reduced-lh","wrap",3,"click"],["appStopProp","","queryParamsHandling","merge",3,"routerLink","queryParams","title"],["appStopProp",""],["class","tw-w-28",4,"ngIf"],[1,"table-list-options"],["type","button",1,"tw-border-none","tw-bg-transparent","tw-text-main",3,"bitMenuTriggerFor","appA11yTitle"],["aria-hidden","true",1,"bwi","bwi-ellipsis-v","bwi-lg"],["cipherOptions",""],["bit-menu-item","",3,"click"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-paperclip"],["bit-menu-item","",3,"click",4,"ngIf"],[1,"tw-text-danger"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-trash"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-paperclip",3,"title"],[1,"sr-only"],["appStopProp","","aria-hidden","true",1,"bwi","bwi-exclamation-triangle","text-warning",3,"title"],[1,"tw-w-28"],[3,"organizationName","profileName","onOrganizationClicked"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-clone"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-share-square"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-files"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-arrow-circle-right"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-collection"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-file-text"],["aria-hidden","true",1,"bwi","bwi-fw","bwi-undo"],[1,"no-items"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","text-muted",3,"title"],["class","btn btn-outline-primary",3,"click",4,"ngIf"],[1,"btn","btn-outline-primary",3,"click"],[1,"bwi","bwi-plus","bwi-fw"]],template:function(e,t){1&e&&(c.ɵɵtemplate(0,ee,6,2,"ng-container",0),c.ɵɵtext(1,"\n")),2&e&&c.ɵɵproperty("ngIf",t.isPaging()?t.pagedCiphers:t.ciphers)},directives:[b.NgIf,w.InfiniteScrollDirective,b.NgForOf,C.CheckboxControlValueAccessor,I.StopPropDirective,C.NgControlStatus,C.NgModel,E.IconComponent,P.RouterLinkWithHref,O.MenuTriggerForDirective,k.A11yTitleDirective,A.MenuComponent,T.MenuItemComponent,M.OrganizationNameBadgeComponent],pipes:[B.I18nPipe,D.GetOrgNameFromIdPipe],encapsulation:2})},86305:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CollectionsComponent=void 0;const i=n(84415),r=(n(45330),n(3174),n(51554),n(36631),n(73828),n(32621)),o=n(3174),a=n(73828),s=n(51554),l=n(45330),c=n(36631),d=n(96832),p=n(56820),u=n(57490),m=n(8863),h=n(39159),v=n(99729);function f(e,t){if(1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.cipher.name)}}function g(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",17),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().selectAll(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().selectAll(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"selectAll"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function y(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function x(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"tr",21),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(2).check(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td",22),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",23),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.checked=t})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"td"),r.ɵɵtext(8),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;r.ɵɵadvance(4),r.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),r.ɵɵproperty("ngModel",e.checked),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",19),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"tbody"),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,x,10,3,"tr",20),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.collections)}}class b extends i.CollectionsComponent{constructor(e,t,n,i,r){super(e,t,n,i,r)}ngOnDestroy(){this.selectAll(!1)}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){this.collections.forEach((t=>this.check(t,e)))}}t.CollectionsComponent=b,b.ɵfac=function(e){return new(e||b)(r.ɵɵdirectiveInject(o.CollectionService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.CipherService),r.ɵɵdirectiveInject(c.LogService))},b.ɵcmp=r.ɵɵdefineComponent({type:b,selectors:[["app-vault-collections"]],features:[r.ɵɵInheritDefinitionFeature],decls:63,vars:27,consts:[["role","dialog","aria-modal","true","aria-labelledby","collectionsTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","collectionsTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵtemplate(12,f,2,1,"small",6),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"button",7),r.ɵɵpipe(16,"i18n"),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",8),r.ɵɵtext(19,"×"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵelementStart(23,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵelementStart(25,"p"),r.ɵɵtext(26),r.ɵɵpipe(27,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",10),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"h3"),r.ɵɵtext(32),r.ɵɵpipe(33,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(34,"\n "),r.ɵɵtemplate(35,g,10,6,"div",11),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵtemplate(38,y,3,3,"div",6),r.ɵɵtext(39,"\n "),r.ɵɵtemplate(40,S,7,1,"table",12),r.ɵɵtext(41,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(42,"\n "),r.ɵɵelementStart(43,"div",13),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"button",14),r.ɵɵtext(46,"\n "),r.ɵɵelement(47,"i",15),r.ɵɵpipe(48,"i18n"),r.ɵɵtext(49,"\n "),r.ɵɵelementStart(50,"span"),r.ɵɵtext(51),r.ɵɵpipe(52,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(54,"\n "),r.ɵɵelementStart(55,"button",16),r.ɵɵtext(56),r.ɵɵpipe(57,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(58,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(59,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(60,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(61,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(62,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,13,"collections"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.cipher),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(16,15,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(27,17,"collectionsDesc")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(33,19,"collections")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",t.collections&&t.collections.length),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!t.collections||!t.collections.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.collections&&t.collections.length),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(48,21,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(52,23,"save")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(57,25,"cancel"),"\n ")}},directives:[d.ɵNgNoValidate,d.NgControlStatusGroup,d.NgForm,p.ApiActionDirective,u.NgIf,m.A11yTitleDirective,u.NgForOf,d.CheckboxControlValueAccessor,h.StopPropDirective,d.NgControlStatus,d.NgModel],pipes:[v.I18nPipe],encapsulation:2})},27672:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FolderAddEditComponent=void 0;const i=n(17301),r=(n(88308),n(51554),n(36631),n(73828),n(32621)),o=n(88308),a=n(51554),s=n(73828),l=n(36631),c=n(96832),d=n(56820),p=n(8863),u=n(45728),m=n(57490),h=n(99729);function v(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"button",17,18),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().delete()})),r.ɵɵpipe(2,"i18n"),r.ɵɵtext(3,"\n "),r.ɵɵelement(4,"i",19),r.ɵɵtext(5,"\n "),r.ɵɵelement(6,"i",20),r.ɵɵpipe(7,"i18n"),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵreference(1),t=r.ɵɵnextContext();r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(2,6,"delete")),r.ɵɵproperty("disabled",e.loading)("appApiAction",t.deletePromise),r.ɵɵadvance(4),r.ɵɵproperty("hidden",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(7,8,"loading")),r.ɵɵproperty("hidden",!e.loading)}}class f extends i.FolderAddEditComponent{constructor(e,t,n,i){super(e,t,n,i)}}t.FolderAddEditComponent=f,f.ɵfac=function(e){return new(e||f)(r.ɵɵdirectiveInject(o.FolderService),r.ɵɵdirectiveInject(a.I18nService),r.ɵɵdirectiveInject(s.PlatformUtilsService),r.ɵɵdirectiveInject(l.LogService))},f.ɵcmp=r.ɵɵdefineComponent({type:f,selectors:[["app-folder-add-edit"]],features:[r.ɵɵInheritDefinitionFeature],decls:54,vars:20,consts:[["role","dialog","aria-modal","true","aria-labelledby","folderAddEditTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable","modal-sm"],["ngNativeValidate","",1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","folderAddEditTitle",1,"modal-title"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],[1,"modal-body"],["for","name"],["id","name","type","text","name","Name","required","","appAutofocus","",1,"form-control",3,"ngModel","ngModelChange"],[1,"modal-footer"],["type","submit",1,"btn","btn-primary","btn-submit",3,"disabled"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"ml-auto"],["type","button","class","btn btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click",4,"ngIf"],["type","button",1,"btn","btn-outline-danger",3,"appA11yTitle","disabled","appApiAction","click"],["deleteBtn",""],["aria-hidden","true",1,"bwi","bwi-trash","bwi-lg","bwi-fw",3,"hidden"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin","bwi-lg","bwi-fw",3,"hidden","title"]],template:function(e,t){if(1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"button",6),r.ɵɵpipe(13,"i18n"),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"span",7),r.ɵɵtext(16,"×"),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(18,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"div",8),r.ɵɵtext(21,"\n "),r.ɵɵelementStart(22,"label",9),r.ɵɵtext(23),r.ɵɵpipe(24,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(25,"\n "),r.ɵɵelementStart(26,"input",10),r.ɵɵlistener("ngModelChange",(function(e){return t.folder.name=e})),r.ɵɵelementEnd(),r.ɵɵtext(27,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(28,"\n "),r.ɵɵelementStart(29,"div",11),r.ɵɵtext(30,"\n "),r.ɵɵelementStart(31,"button",12),r.ɵɵtext(32,"\n "),r.ɵɵelement(33,"i",13),r.ɵɵpipe(34,"i18n"),r.ɵɵtext(35,"\n "),r.ɵɵelementStart(36,"span"),r.ɵɵtext(37),r.ɵɵpipe(38,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n "),r.ɵɵelementStart(41,"button",14),r.ɵɵtext(42),r.ɵɵpipe(43,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(44,"\n "),r.ɵɵelementStart(45,"div",15),r.ɵɵtext(46,"\n "),r.ɵɵtemplate(47,v,9,10,"button",16),r.ɵɵtext(48,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(49,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(50,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(51,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(52,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(53,"\n")),2&e){const e=r.ɵɵreference(5);r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate(t.title),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(13,10,"close")),r.ɵɵadvance(11),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(24,12,"name")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",t.folder.name),r.ɵɵadvance(5),r.ɵɵproperty("disabled",e.loading),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(34,14,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(38,16,"save")),r.ɵɵadvance(5),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(43,18,"cancel"),"\n "),r.ɵɵadvance(5),r.ɵɵproperty("ngIf",t.editMode)}},directives:[c.NgControlStatusGroup,c.NgForm,d.ApiActionDirective,p.A11yTitleDirective,c.DefaultValueAccessor,c.RequiredValidator,u.AutofocusDirective,c.NgControlStatus,c.NgModel,m.NgIf],pipes:[h.I18nPipe],encapsulation:2})},55715:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShareComponent=void 0;const i=n(78927),r=(n(45330),n(3174),n(51554),n(36631),n(63513),n(73828),n(32621)),o=n(3174),a=n(73828),s=n(51554),l=n(45330),c=n(63513),d=n(36631),p=n(96832),u=n(56820),m=n(57490),h=n(8863),v=n(39159),f=n(68012),g=n(99729);function y(e,t){if(1&e&&(r.ɵɵelementStart(0,"small"),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.cipher.name)}}function x(e,t){1&e&&(r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noOrganizationsList"),"\n "))}function S(e,t){if(1&e&&(r.ɵɵelementStart(0,"option",22),r.ɵɵtext(1),r.ɵɵelementEnd()),2&e){const e=t.$implicit;r.ɵɵproperty("ngValue",e.id),r.ɵɵadvance(1),r.ɵɵtextInterpolate(e.name)}}function b(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",23),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"button",24),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).selectAll(!0)})),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"button",24),r.ɵɵlistener("click",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext(2).selectAll(!1)})),r.ɵɵtext(7),r.ɵɵpipe(8,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}2&e&&(r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(4,2,"selectAll"),"\n "),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(8,4,"unselectAll"),"\n "))}function w(e,t){1&e&&(r.ɵɵelementStart(0,"div"),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"noCollectionsInList"),"\n "))}function C(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"tr",27),r.ɵɵlistener("click",(function(){const t=r.ɵɵrestoreView(e).$implicit;return r.ɵɵnextContext(3).check(t)})),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"td",28),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"input",29),r.ɵɵlistener("ngModelChange",(function(t){return r.ɵɵrestoreView(e).$implicit.checked=t})),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"td"),r.ɵɵtext(8),r.ɵɵelementEnd(),r.ɵɵtext(9,"\n "),r.ɵɵelementEnd()}if(2&e){const e=t.$implicit,n=t.index;r.ɵɵadvance(4),r.ɵɵpropertyInterpolate1("name","Collection[",n,"].Checked"),r.ɵɵproperty("ngModel",e.checked),r.ɵɵadvance(4),r.ɵɵtextInterpolate1("\n ",e.name,"\n ")}}function I(e,t){if(1&e&&(r.ɵɵelementStart(0,"table",25),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"tbody"),r.ɵɵtext(3,"\n "),r.ɵɵtemplate(4,C,10,3,"tr",26),r.ɵɵtext(5,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(6,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(2);r.ɵɵadvance(4),r.ɵɵproperty("ngForOf",e.collections)}}function E(e,t){if(1&e){const e=r.ɵɵgetCurrentView();r.ɵɵelementStart(0,"div",14),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"p"),r.ɵɵtext(3),r.ɵɵpipe(4,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(5,"\n "),r.ɵɵelementStart(6,"div",15),r.ɵɵtext(7,"\n "),r.ɵɵelementStart(8,"label",16),r.ɵɵtext(9),r.ɵɵpipe(10,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(11,"\n "),r.ɵɵelementStart(12,"select",17),r.ɵɵlistener("ngModelChange",(function(t){r.ɵɵrestoreView(e);return r.ɵɵnextContext().organizationId=t}))("change",(function(){r.ɵɵrestoreView(e);return r.ɵɵnextContext().filterCollections()})),r.ɵɵtext(13,"\n "),r.ɵɵtemplate(14,S,2,2,"option",18),r.ɵɵtext(15,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(16,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"div",19),r.ɵɵtext(19,"\n "),r.ɵɵelementStart(20,"h3"),r.ɵɵtext(21),r.ɵɵpipe(22,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(23,"\n "),r.ɵɵtemplate(24,b,10,6,"div",20),r.ɵɵtext(25,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(26,"\n "),r.ɵɵtemplate(27,w,3,3,"div",6),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,I,7,1,"table",21),r.ɵɵtext(30,"\n "),r.ɵɵelementEnd()}if(2&e){const e=r.ɵɵnextContext();r.ɵɵadvance(3),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(4,8,"moveToOrgDesc")),r.ɵɵadvance(6),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(10,10,"organization")),r.ɵɵadvance(3),r.ɵɵproperty("ngModel",e.organizationId),r.ɵɵadvance(2),r.ɵɵproperty("ngForOf",e.organizations),r.ɵɵadvance(7),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(22,12,"collections")),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",e.collections&&e.collections.length),r.ɵɵadvance(3),r.ɵɵproperty("ngIf",!e.collections||!e.collections.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",e.collections&&e.collections.length)}}const P=function(e){return{loading:e}};function O(e,t){if(1&e&&(r.ɵɵelementStart(0,"button",30),r.ɵɵtext(1,"\n "),r.ɵɵelement(2,"i",31),r.ɵɵpipe(3,"i18n"),r.ɵɵtext(4,"\n "),r.ɵɵelementStart(5,"span"),r.ɵɵtext(6),r.ɵɵpipe(7,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(8,"\n "),r.ɵɵelementEnd()),2&e){const e=r.ɵɵnextContext(),t=r.ɵɵreference(5);r.ɵɵproperty("disabled",t.loading||!e.canSave)("ngClass",r.ɵɵpureFunction1(8,P,t.loading)),r.ɵɵadvance(2),r.ɵɵpropertyInterpolate("title",r.ɵɵpipeBind1(3,4,"loading")),r.ɵɵadvance(4),r.ɵɵtextInterpolate(r.ɵɵpipeBind1(7,6,"save"))}}function k(e,t){1&e&&(r.ɵɵelementStart(0,"a",32),r.ɵɵtext(1),r.ɵɵpipe(2,"i18n"),r.ɵɵelementEnd()),2&e&&(r.ɵɵadvance(1),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(2,1,"newOrganization"),"\n "))}class A extends i.ShareComponent{constructor(e,t,n,i,r,o){super(e,t,n,i,o,r)}ngOnDestroy(){this.selectAll(!1)}check(e,t){e.checked=null==t?!e.checked:t}selectAll(e){(e?this.collections:this.writeableCollections).forEach((t=>this.check(t,e)))}}t.ShareComponent=A,A.ɵfac=function(e){return new(e||A)(r.ɵɵdirectiveInject(o.CollectionService),r.ɵɵdirectiveInject(a.PlatformUtilsService),r.ɵɵdirectiveInject(s.I18nService),r.ɵɵdirectiveInject(l.CipherService),r.ɵɵdirectiveInject(c.OrganizationService),r.ɵɵdirectiveInject(d.LogService))},A.ɵcmp=r.ɵɵdefineComponent({type:A,selectors:[["app-vault-share"]],features:[r.ɵɵInheritDefinitionFeature],decls:41,vars:15,consts:[["role","dialog","aria-modal","true","aria-labelledby","shareTitle",1,"modal","fade"],["role","document",1,"modal-dialog","modal-dialog-scrollable"],[1,"modal-content",3,"appApiAction","ngSubmit"],["form",""],[1,"modal-header"],["id","shareTitle",1,"modal-title"],[4,"ngIf"],["type","button","data-dismiss","modal",1,"close",3,"appA11yTitle"],["aria-hidden","true"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],["type","submit","class","btn btn-primary btn-submit manual",3,"disabled","ngClass",4,"ngIf"],["href","#","routerLink","/create-organization","class","btn btn-primary",4,"ngIf"],["type","button","data-dismiss","modal",1,"btn","btn-outline-secondary"],[1,"modal-body"],[1,"form-group"],["for","organization"],["id","organization","name","OrganizationId",1,"form-control",3,"ngModel","ngModelChange","change"],[3,"ngValue",4,"ngFor","ngForOf"],[1,"d-flex"],["class","ml-auto d-flex",4,"ngIf"],["class","table table-hover table-list mb-0",4,"ngIf"],[3,"ngValue"],[1,"ml-auto","d-flex"],["type","button",1,"btn","btn-link","btn-sm","py-0",3,"click"],[1,"table","table-hover","table-list","mb-0"],[3,"click",4,"ngFor","ngForOf"],[3,"click"],[1,"table-list-checkbox"],["type","checkbox","appStopProp","",3,"ngModel","name","ngModelChange"],["type","submit",1,"btn","btn-primary","btn-submit","manual",3,"disabled","ngClass"],["aria-hidden","true",1,"bwi","bwi-spinner","bwi-spin",3,"title"],["href","#","routerLink","/create-organization",1,"btn","btn-primary"]],template:function(e,t){1&e&&(r.ɵɵelementStart(0,"div",0),r.ɵɵtext(1,"\n "),r.ɵɵelementStart(2,"div",1),r.ɵɵtext(3,"\n "),r.ɵɵelementStart(4,"form",2,3),r.ɵɵlistener("ngSubmit",(function(){return t.submit()})),r.ɵɵtext(6,"\n "),r.ɵɵelementStart(7,"div",4),r.ɵɵtext(8,"\n "),r.ɵɵelementStart(9,"h2",5),r.ɵɵtext(10),r.ɵɵpipe(11,"i18n"),r.ɵɵtemplate(12,y,2,1,"small",6),r.ɵɵtext(13,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(14,"\n "),r.ɵɵelementStart(15,"button",7),r.ɵɵpipe(16,"i18n"),r.ɵɵtext(17,"\n "),r.ɵɵelementStart(18,"span",8),r.ɵɵtext(19,"×"),r.ɵɵelementEnd(),r.ɵɵtext(20,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(21,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(22,"\n "),r.ɵɵtemplate(23,x,3,3,"div",9),r.ɵɵtext(24,"\n "),r.ɵɵtemplate(25,E,31,14,"div",9),r.ɵɵtext(26,"\n "),r.ɵɵelementStart(27,"div",10),r.ɵɵtext(28,"\n "),r.ɵɵtemplate(29,O,9,10,"button",11),r.ɵɵtext(30,"\n "),r.ɵɵtemplate(31,k,3,3,"a",12),r.ɵɵtext(32,"\n "),r.ɵɵelementStart(33,"button",13),r.ɵɵtext(34),r.ɵɵpipe(35,"i18n"),r.ɵɵelementEnd(),r.ɵɵtext(36,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(37,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(38,"\n "),r.ɵɵelementEnd(),r.ɵɵtext(39,"\n"),r.ɵɵelementEnd(),r.ɵɵtext(40,"\n")),2&e&&(r.ɵɵadvance(4),r.ɵɵproperty("appApiAction",t.formPromise),r.ɵɵadvance(6),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(11,9,"moveToOrganization"),"\n "),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.cipher),r.ɵɵadvance(3),r.ɵɵpropertyInterpolate("appA11yTitle",r.ɵɵpipeBind1(16,11,"close")),r.ɵɵadvance(8),r.ɵɵproperty("ngIf",!t.organizations||!t.organizations.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",t.organizations&&t.organizations.length),r.ɵɵadvance(4),r.ɵɵproperty("ngIf",t.organizations&&t.organizations.length),r.ɵɵadvance(2),r.ɵɵproperty("ngIf",!t.organizations||!t.organizations.length),r.ɵɵadvance(3),r.ɵɵtextInterpolate1("\n ",r.ɵɵpipeBind1(35,13,"cancel"),"\n "))},directives:[p.ɵNgNoValidate,p.NgControlStatusGroup,p.NgForm,u.ApiActionDirective,m.NgIf,h.A11yTitleDirective,p.SelectControlValueAccessor,p.NgControlStatus,p.NgModel,m.NgForOf,p.NgSelectOption,p.ɵNgSelectMultipleOption,p.CheckboxControlValueAccessor,v.StopPropDirective,m.NgClass,f.RouterLinkWithHref],pipes:[g.I18nPipe],encapsulation:2})},7643:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WildcardRoutingModule=void 0;const i=n(68012),r=n(32621);n(68012);class o{}t.WildcardRoutingModule=o,o.ɵfac=function(e){return new(e||o)},o.ɵmod=r.ɵɵdefineNgModule({type:o}),o.ɵinj=r.ɵɵdefineInjector({imports:[[i.RouterModule.forChild([{path:"**",redirectTo:""}])],i.RouterModule]})},74657:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Account=t.AccountSettings=void 0;const i=n(31445);class r extends i.AccountSettings{constructor(){super(...arguments),this.vaultTimeout=15}}t.AccountSettings=r;class o extends i.Account{constructor(e){super(e),this.settings=new r,Object.assign(this.settings,Object.assign(Object.assign({},new r),this.settings))}}t.Account=o},82062:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GlobalState=void 0;const i=n(14538),r=n(99010);class o extends r.GlobalState{constructor(){super(...arguments),this.theme=i.ThemeType.Light,this.rememberEmail=!0}}t.GlobalState=o},79046:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BroadcasterMessagingService=void 0;n(8470);const i=n(32621),r=n(8470);class o{constructor(e){this.broadcasterService=e}send(e,t={}){const n=Object.assign({},{command:e},t);this.broadcasterService.send(n)}}t.BroadcasterMessagingService=o,o.ɵfac=function(e){return new(e||o)(i.ɵɵinject(r.BroadcasterService))},o.ɵprov=i.ɵɵdefineInjectable({token:o,factory:o.ɵfac})},57096:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.HtmlStorageService=void 0;const r=n(46632),o=n(32621);class a{get defaultOptions(){return{htmlStorageLocation:r.HtmlStorageLocation.Session}}get(e,t=this.defaultOptions){let n=null;switch(t.htmlStorageLocation){case r.HtmlStorageLocation.Local:n=window.localStorage.getItem(e);break;case r.HtmlStorageLocation.Session:default:n=window.sessionStorage.getItem(e)}if(null!=n){const e=JSON.parse(n);return Promise.resolve(e)}return Promise.resolve(null)}has(e,t=this.defaultOptions){return i(this,void 0,void 0,(function*(){return null!=(yield this.get(e,t))}))}save(e,t,n=this.defaultOptions){if(null==t)return this.remove(e,n);t instanceof Set&&(t=Array.from(t));const i=JSON.stringify(t);switch(n.htmlStorageLocation){case r.HtmlStorageLocation.Local:window.localStorage.setItem(e,i);break;case r.HtmlStorageLocation.Session:default:window.sessionStorage.setItem(e,i)}return Promise.resolve()}remove(e,t=this.defaultOptions){switch(t.htmlStorageLocation){case r.HtmlStorageLocation.Local:window.localStorage.removeItem(e);break;case r.HtmlStorageLocation.Session:default:window.sessionStorage.removeItem(e)}return Promise.resolve()}}t.HtmlStorageService=a,a.ɵfac=function(e){return new(e||a)},a.ɵprov=o.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},28455:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.I18nService=void 0;const r=n(17578);class o extends r.I18nService{constructor(e,t){super(e||"en-US",t,(e=>i(this,void 0,void 0,(function*(){const t=this.localesDirectory+"/"+e+"/messages.json?cache=g85wp2",n=yield fetch(t);return yield n.json()})))),this.supportedTranslationLocales=["en","af","az","be","bg","bn","bs","ca","cs","da","de","el","en-GB","en-IN","eo","es","et","fi","fil","fr","he","hi","hr","hu","id","it","ja","ka","km","kn","ko","lv","ml","nb","nl","nn","pl","pt-PT","pt-BR","ro","ru","si","sk","sl","sr","sv","tr","uk","vi","zh-CN","zh-TW"]}}t.I18nService=o},97853:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.MemoryStorageService=void 0;t.MemoryStorageService=class{constructor(){this.store=new Map}get(e){if(this.store.has(e)){const t=this.store.get(e);return Promise.resolve(t)}return Promise.resolve(null)}has(e){return n(this,void 0,void 0,(function*(){return null!=this.get(e)}))}save(e,t){return null==t?this.remove(e):(this.store.set(e,t),Promise.resolve())}remove(e){return this.store.delete(e),Promise.resolve()}}},14020:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordRepromptService=void 0;const i=n(91603),r=n(30563),o=n(32621);class a extends i.PasswordRepromptService{constructor(){super(...arguments),this.component=r.PasswordRepromptComponent}}t.PasswordRepromptService=a,a.ɵfac=function(){let e;return function(t){return(e||(e=o.ɵɵgetInheritedFactory(a)))(t||a)}}(),a.ɵprov=o.ɵɵdefineInjectable({token:a,factory:a.ɵfac})},91621:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateService=void 0;const r=n(13998),o=n(74657);class a extends r.StateService{addAccount(e){const t=Object.create(null,{addAccount:{get:()=>super.addAccount}});return i(this,void 0,void 0,(function*(){e=new o.Account(e),yield t.addAccount.call(this,e)}))}getRememberEmail(e){var t;return i(this,void 0,void 0,(function*(){return null===(t=yield this.getGlobals(this.reconcileOptions(e,yield this.defaultOnDiskLocalOptions())))||void 0===t?void 0:t.rememberEmail}))}setRememberEmail(e,t){return i(this,void 0,void 0,(function*(){const n=yield this.getGlobals(this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()));n.rememberEmail=e,yield this.saveGlobals(n,this.reconcileOptions(t,yield this.defaultOnDiskLocalOptions()))}))}getEncryptedCiphers(e){const t=Object.create(null,{getEncryptedCiphers:{get:()=>super.getEncryptedCiphers}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedCiphers.call(this,e)}))}setEncryptedCiphers(e,t){const n=Object.create(null,{setEncryptedCiphers:{get:()=>super.setEncryptedCiphers}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedCiphers.call(this,e,t)}))}getEncryptedCollections(e){const t=Object.create(null,{getEncryptedCollections:{get:()=>super.getEncryptedCollections}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedCollections.call(this,e)}))}setEncryptedCollections(e,t){const n=Object.create(null,{setEncryptedCollections:{get:()=>super.setEncryptedCollections}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedCollections.call(this,e,t)}))}getEncryptedFolders(e){const t=Object.create(null,{getEncryptedFolders:{get:()=>super.getEncryptedFolders}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedFolders.call(this,e)}))}setEncryptedFolders(e,t){const n=Object.create(null,{setEncryptedFolders:{get:()=>super.setEncryptedFolders}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedFolders.call(this,e,t)}))}getEncryptedSends(e){const t=Object.create(null,{getEncryptedSends:{get:()=>super.getEncryptedSends}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getEncryptedSends.call(this,e)}))}setEncryptedSends(e,t){const n=Object.create(null,{setEncryptedSends:{get:()=>super.setEncryptedSends}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setEncryptedSends.call(this,e,t)}))}getLastSync(e){const t=Object.create(null,{getLastSync:{get:()=>super.getLastSync}});return i(this,void 0,void 0,(function*(){return e=this.reconcileOptions(e,this.defaultInMemoryOptions),yield t.getLastSync.call(this,e)}))}setLastSync(e,t){const n=Object.create(null,{setLastSync:{get:()=>super.setLastSync}});return i(this,void 0,void 0,(function*(){return t=this.reconcileOptions(t,this.defaultInMemoryOptions),yield n.setLastSync.call(this,e,t)}))}}t.StateService=a},31113:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.StateMigrationService=void 0;const r=n(8357);class o extends r.StateMigrationService{migrationStateFrom1To2(){const e=Object.create(null,{migrateStateFrom1To2:{get:()=>super.migrateStateFrom1To2}});var t,n;return i(this,void 0,void 0,(function*(){yield e.migrateStateFrom1To2.call(this);const i=null!==(t=yield this.get("global"))&&void 0!==t?t:this.stateFactory.createGlobal(null);i.rememberEmail=null!==(n=yield this.get("rememberEmail"))&&void 0!==n?n:i.rememberEmail,yield this.set("global",i)}))}}t.StateMigrationService=o},51601:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function a(e){try{l(i.next(e))}catch(t){o(t)}}function s(e){try{l(i.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WebPlatformUtilsService=void 0;const r=n(78764),o=(n(51554),n(36631),n(45552),n(73569),n(69434)),a=n(2779),s=n(14538),l=n(32621),c=n(51554),d=n(45552),p=n(36631),u=n(73569);class m{constructor(e,t,n,i){this.i18nService=e,this.messagingService=t,this.logService=n,this.stateService=i,this.browserCache=null,this.prefersColorSchemeDark=window.matchMedia("(prefers-color-scheme: dark)")}getDevice(){return null!=this.browserCache||(-1!==navigator.userAgent.indexOf(" Firefox/")||-1!==navigator.userAgent.indexOf(" Gecko/")?this.browserCache=a.DeviceType.FirefoxBrowser:navigator.userAgent.indexOf(" OPR/")>=0?this.browserCache=a.DeviceType.OperaBrowser:-1!==navigator.userAgent.indexOf(" Edg/")?this.browserCache=a.DeviceType.EdgeBrowser:-1!==navigator.userAgent.indexOf(" Vivaldi/")?this.browserCache=a.DeviceType.VivaldiBrowser:-1!==navigator.userAgent.indexOf(" Safari/")&&-1===navigator.userAgent.indexOf("Chrome")?this.browserCache=a.DeviceType.SafariBrowser:window.chrome&&-1!==navigator.userAgent.indexOf(" Chrome/")?this.browserCache=a.DeviceType.ChromeBrowser:-1!==navigator.userAgent.indexOf(" Trident/")?this.browserCache=a.DeviceType.IEBrowser:this.browserCache=a.DeviceType.UnknownBrowser),this.browserCache}getDeviceString(){return a.DeviceType[this.getDevice()].toLowerCase().replace("browser","")}getClientType(){return o.ClientType.Web}isFirefox(){return this.getDevice()===a.DeviceType.FirefoxBrowser}isChrome(){return this.getDevice()===a.DeviceType.ChromeBrowser}isEdge(){return this.getDevice()===a.DeviceType.EdgeBrowser}isOpera(){return this.getDevice()===a.DeviceType.OperaBrowser}isVivaldi(){return this.getDevice()===a.DeviceType.VivaldiBrowser}isSafari(){return this.getDevice()===a.DeviceType.SafariBrowser}isMacAppStore(){return!1}isViewOpen(){return Promise.resolve(!1)}launchUri(e,t){const n=document.createElement("a");n.href=e,null!=t&&t.sameWindow||(n.target="_blank",n.rel="noreferrer noopener"),n.classList.add("d-none"),document.body.appendChild(n),n.click(),document.body.removeChild(n)}saveFile(e,t,n,i){let r=null,o=null;const a=i.toLowerCase();let s=!0;a.endsWith(".pdf")?(o="application/pdf",s=!1):a.endsWith(".xlsx")?o="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":a.endsWith(".docx")?o="application/vnd.openxmlformats-officedocument.wordprocessingml.document":a.endsWith(".pptx")?o="application/vnd.openxmlformats-officedocument.presentationml.presentation":a.endsWith(".csv")?o="text/csv":a.endsWith(".png")?o="image/png":a.endsWith(".jpg")||a.endsWith(".jpeg")?o="image/jpeg":a.endsWith(".gif")&&(o="image/gif"),null!=o&&null==(n=n||{}).type&&(n.type=o),r=null!=n?new Blob([t],n):new Blob([t]);const l=e.document.createElement("a");s?l.download=i:this.isSafari()||(l.target="_blank"),l.href=URL.createObjectURL(r),l.style.position="fixed",e.document.body.appendChild(l),l.click(),e.document.body.removeChild(l)}getApplicationVersion(){return Promise.resolve("2022.5.1")}supportsWebAuthn(e){return"undefined"!=typeof PublicKeyCredential}supportsDuo(){return!0}showToast(e,t,n,i){this.messagingService.send("showToast",{text:n,title:t,type:e,options:i})}showDialog(e,t,n,o,a,s=!1){return i(this,void 0,void 0,(function*(){let i=null;if(null!=a)switch(a){case"success":i="bwi-check text-success";break;case"warning":i="bwi-exclamation-triangle text-warning";break;case"error":i="bwi-error text-danger";break;case"info":i="bwi-info-circle text-info"}const l=document.querySelector("div.modal");null!=l&&l.removeAttribute("tabindex");const c=null!=i?``:void 0,d=yield r.default.fire({heightAuto:!1,buttonsStyling:!1,icon:a,iconHtml:c,text:s?null:e,html:s?e:null,titleText:t,showCancelButton:null!=o,cancelButtonText:o,showConfirmButton:!0,confirmButtonText:null==n?this.i18nService.t("ok"):n});return null!=l&&l.setAttribute("tabindex","-1"),d.value}))}isDev(){return!1}isSelfHost(){return"selfhosted"==="cloud".toString()}copyToClipboard(e,t){let n=window,i=window.document;if(t&&(t.window||t.win)?(n=t.window||t.win,i=n.document):t&&t.doc&&(i=t.doc),n.clipboardData&&n.clipboardData.setData)n.clipboardData.setData("Text",e);else if(i.queryCommandSupported&&i.queryCommandSupported("copy")){const t=i.createElement("textarea");t.textContent=e,t.style.position="fixed";let n=i.body;i.body.classList.contains("modal-open")&&(n=i.body.querySelector(".modal")),n.appendChild(t),t.select();let o=!1;try{o=i.execCommand("copy"),o||this.logService.debug("Copy command unsupported or disabled.")}catch(r){console.warn("Copy to clipboard failed.",r)}finally{n.removeChild(t)}return o}}readFromClipboard(e){throw new Error("Cannot read from clipboard on web.")}supportsBiometric(){return Promise.resolve(!1)}authenticateBiometric(){return Promise.resolve(!1)}supportsSecureStorage(){return!1}getDefaultSystemTheme(){return Promise.resolve(this.prefersColorSchemeDark.matches?s.ThemeType.Dark:s.ThemeType.Light)}getEffectiveTheme(){return i(this,void 0,void 0,(function*(){const e=yield this.stateService.getTheme();return e===s.ThemeType.Dark?s.ThemeType.Dark:e===s.ThemeType.System?this.getDefaultSystemTheme():s.ThemeType.Light}))}onDefaultSystemThemeChange(e){try{this.prefersColorSchemeDark.addEventListener("change",(({matches:t})=>{e(t?s.ThemeType.Dark:s.ThemeType.Light)}))}catch(t){this.prefersColorSchemeDark.addListener((t=>{e(t.matches?s.ThemeType.Dark:s.ThemeType.Light)}))}}}t.WebPlatformUtilsService=m,m.ɵfac=function(e){return new(e||m)(l.ɵɵinject(c.I18nService),l.ɵɵinject(d.MessagingService),l.ɵɵinject(p.LogService),l.ɵɵinject(u.StateService))},m.ɵprov=l.ɵɵdefineInjectable({token:m,factory:m.ɵfac})},51857:(e,t,n)=>{"use strict";n.r(t)},83706:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});const i={darkInputColor:"#fff",darkInputPlaceholderColor:"#bac0ce",lightInputColor:"#465057",lightInputPlaceholderColor:"#b6b8b8"}},5812:(e,t,n)=>{"use strict";n.r(t)},4958:()=>{},65971:()=>{},25819:()=>{},52361:()=>{},94616:()=>{}},n={};function i(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=t,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(d=0;d=o)&&Object.keys(i.O).every((e=>i.O[e](n[l])))?n.splice(l--,1):(s=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e={148:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var r,o,[a,s,l]=n,c=0;if(a.some((t=>0!==e[t]))){for(r in s)i.o(s,r)&&(i.m[r]=s[r]);if(l)var d=l(i)}for(t&&t(n);ci(22977)));r=i.O(r)})(); +//# sourceMappingURL=main.ee8beff7eee047674b0f.js.map \ No newline at end of file diff --git a/app/main.ee8beff7eee047674b0f.js.map b/app/main.ee8beff7eee047674b0f.js.map new file mode 100644 index 00000000..60bcdead --- /dev/null +++ b/app/main.ee8beff7eee047674b0f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app/main.ee8beff7eee047674b0f.js","mappings":"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EACXlnC,UACEmuC,EACAx0C,EACAy0C,EACAC,EACAC,GAEA,OAAa,MAATH,GAAkC,IAAjBA,EAAMz6C,OAClB,GAGS,MAAdiG,GAAsBA,EAAWjG,OAAS,EACrCy6C,GAGTx0C,EAAaA,EAAWyL,OAAOyR,cACxBs3B,EAAMh0C,QAAQ+P,GAER,MAATkkC,GACY,MAAZlkC,EAAEkkC,IACFlkC,EAAEkkC,GAAO15C,WAAWmiB,cAAcra,QAAQ7C,IAAe,IAKhD,MAAT00C,GACY,MAAZnkC,EAAEmkC,IACFnkC,EAAEmkC,GAAO35C,WAAWmiB,cAAcra,QAAQ7C,IAAe,GAKhD,MAAT20C,GACY,MAAZpkC,EAAEokC,IACFpkC,EAAEokC,GAAO55C,WAAWmiB,cAAcra,QAAQ7C,IAAe,OAtCjE,e,iCAGautC,I,2CAAAA,EAAU,W,qHCEvB,MAGaC,EACXnnC,UAAU/B,GACR,OAAY,MAARA,EACK,KAGW,MAAbA,EAAK5R,MAAqC,KAArB4R,EAAK5R,KAAK+Y,OAAgBnH,EAAKiC,MAAQjC,EAAK5R,MAT5E,iB,iCAGa86C,I,6CAAAA,EAAY,W,0GCRzB,iB,WAEA,MACaoH,UAA2B,sBADxC,uB,gFACaA,KAAkB,GAAlBA,I,uCAAAA,EAAkB,QAAlBA,EAAkB,Q,uQCL/B,iBAEA,WACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,YAEA,YACA,YACA,WAEA,YACA,YACA,YACA,Y,YAEa,EAAAC,OAAS,IAAI,EAAAC,eAAuB,UACpC,EAAAC,eAAiB,IAAI,EAAAD,eAA0C,kBAC/D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B,YAAbmT,EAAM,IAAoBvxB,KAAKg2E,gBACjCh2E,KAAKg2E,gBAAgBzkD,EAAM,IACL,UAAbA,EAAM,IAAkBvxB,KAAKi2E,cACtCj2E,KAAKi2E,cAAc1kD,EAAM,IACH,SAAbA,EAAM,IAAiBvxB,KAAKk2E,cACrCl2E,KAAKk2E,aAAa3kD,EAAM,IAIpBgmD,aAAa5zD,GACnB,OACkB,MAAhBA,EAAM6zD,QACW,KAAjB7zD,EAAM6zD,QACN7zD,EAAM6zD,SAAYx3E,KAAK22E,cAAsBa,QAC/B,MAAd7zD,EAAMxY,MACgB,iBAAfwY,EAAMxY,OAMsB,IAAnCwY,EAAMxY,KAAKoK,QAAQ,aACc,IAAjCoO,EAAMxY,KAAKoK,QAAQ,WACa,IAAhCoO,EAAMxY,KAAKoK,QAAQ,a,qGCrGZ,EAAAurE,gBAAkB,CAC7B,SACA,UACA,YACA,QACA,UACA,UACA,SACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,SACA,SACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,4GCjmPF,iBAEA,MAAaC,UAA6B,EAAAC,aAGxCz/E,YAAY4J,GACVpL,MAAMoL,GACM,MAARA,IAGJnL,KAAKihF,eAAiBjhF,KAAKkhF,oBAAoB,oBARnD,0B,+FCFA,iBAEA,MAAaC,UAAgB,EAAAH,aAQ3Bz/E,YAAY4J,EAAY,MACtBpL,MAAMoL,GACM,MAARA,IAGJnL,KAAKwyD,eAAiBxyD,KAAKkhF,oBAAoB,kBAC/ClhF,KAAK69B,MAA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","sources":["webpack://@bitwarden/web-vault/webpack/runtime/chunk loaded","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app.component.ts","webpack://@bitwarden/web-vault/./src/app/app.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/app.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/main.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/base-cva.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-checkbox.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-checkbox.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text-readonly.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text-readonly.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/input-text.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/select.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/components/select.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/manage/sso.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/manage/sso.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/organizations-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/organizations/organizations.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/disable-personal-vault-export.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/disable-personal-vault-export.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/maximum-vault-timeout.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/policies/maximum-vault-timeout.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/add-organization.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/add-organization.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/clients.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/clients.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/create-organization.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/clients/create-organization.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/guards/provider-type.guard.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/guards/provider.guard.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/accept-provider.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/accept-provider.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/bulk/bulk-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-confirm.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/bulk/bulk-remove.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-remove.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/events.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/events.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/manage.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/manage.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/people.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/people.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/user-add-edit.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/manage/user-add-edit.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-layout.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-layout.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers-routing.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/providers.module.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/services/webProvider.service.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/account.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/account.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/settings.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/settings/settings.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup-provider.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup-provider.component.html","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup.component.ts","webpack://@bitwarden/web-vault/./bitwarden_license/src/app/providers/setup/setup.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/add-edit-custom-fields.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/attachments.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/avatar.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/callout.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/callout.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/captchaProtected.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/change-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/ciphers.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/collections.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export-scope-callout.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export-scope-callout.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/export.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/folder-add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/generator.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/hint.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/icon.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/icon.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/components/lock.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/login.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/dynamic-modal.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/modal-injector.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/modal/modal.ref.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/password-generator-history.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/password-reprompt.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/register.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/remove-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/add-edit.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/efflux-dates.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/send/send.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/set-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/settings/vault-timeout-input.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/share.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/sso.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/toastr.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/two-factor-options.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/two-factor.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/update-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/update-temp-password.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/user-verification.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/components/user-verification.component.html","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/a11y-invalid.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/a11y-title.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/api-action.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/autofocus.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/blur-click.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/fallback-src.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/input-strip-spaces.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/input-verbatim.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/not-premium.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/select-copy.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/stop-click.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/stop-prop.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/directives/true-false-value.directive.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/auth.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/lock.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/guards/unauth.guard.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/jslib.module.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/collection-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/folder-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/organization-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/status-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/components/type-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/models/dynamic-tree-node.model.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/models/vault-filter.model.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/vault-filter.component.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/modules/vault-filter/vault-filter.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/color-password.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/credit-card-number.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/ellipsis.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/i18n.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/search.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/pipes/user-name.pipe.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/jslib-services.module.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/modal.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/services/validation.service.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/validators/dirty.validator.ts","webpack://@bitwarden/web-vault/./jslib/angular/src/validators/notAllowedValueAsync.validator.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/api.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/appId.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/audit.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/auth.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/cipher.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/collection.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/crypto.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/cryptoFunction.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/environment.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/event.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/export.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/fileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/folder.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/i18n.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/import.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/keyConnector.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/log.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/messaging.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/notifications.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/organization.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/passwordGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/platformUtils.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/policy.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/provider.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/search.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/send.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/settings.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/state.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/stateMigration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/storage.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/sync.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/token.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/totp.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/twoFactor.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/userVerification.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/usernameGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/abstractions/vaultTimeout.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/authenticationStatus.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/authenticationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/cipherRepromptType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/cipherType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/clientType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/deviceType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/emergencyAccessStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/emergencyAccessType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/encryptionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/eventType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/fieldType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/fileUploadType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/hashPurpose.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/htmlStorageLocation.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/importOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/kdfType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/keySuffixOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/linkedIdType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/logLevelType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/notificationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationApiKeyType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationConnectionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationUserStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/organizationUserType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/paymentMethodType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/permissions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/planSponsorshipType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/planType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/policyType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/productType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/providerUserStatusType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/providerUserType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/secureNoteType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/sendType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/ssoEnums.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/stateVersion.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/storageLocation.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/themeType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/transactionType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/twoFactorProviderType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/uriMatchType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/enums/verificationType.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/accountFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/globalStateFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/factories/stateFactory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/ascendoCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/avastCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/avastJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/aviraCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/baseImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/bitwardenPasswordProtectedImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/blackBerryCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/blurCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/buttercupCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/chromeCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/clipperzHtmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/codebookCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/encryptrCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/enpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/enpassJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/firefoxCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/fsecureFskImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/gnomeJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/importError.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/kasperskyTxtImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keepass2XmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keepassxCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/keeperImporters/keeperCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/lastpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/logMeOnceCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/meldiumCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/msecureCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/mykiCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/nordpassCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/cipherImportContext.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/padlockCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passkeepCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passmanJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passpackCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordAgentCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordBossJsonImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordDragonXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordSafeXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/passwordWalletTxtImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/rememBearCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/roboformCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/safariCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/safeInCloudXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/saferpassCsvImport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/secureSafeCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/splashIdCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/stickyPasswordXmlImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/truekeyCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/upmCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/yotiCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/importers/zohoVaultCsvImporter.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/captcha_iframe.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/iframe_component.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/linkedFieldOption.decorator.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/apiLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/logIn.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/passwordLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/logInStrategies/ssoLogin.strategy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/sequentialize.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/serviceUtils.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/throttle.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/tldjs.noop.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/utils.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/webauthn_iframe.ts","webpack://@bitwarden/web-vault/./jslib/common/src/misc/wordlist.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/billingSyncConfigApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/cardApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/fieldApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/identityApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/loginApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/loginUriApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/permissionsApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/secureNoteApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/sendFileApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/sendTextApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/api/ssoConfigApi.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/attachmentData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/cardData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/cipherData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/collectionData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/eventData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/fieldData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/folderData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/identityData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/loginData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/loginUriData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/organizationData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/passwordHistoryData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/policyData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/providerData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/secureNoteData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendFileData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/data/sendTextData.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/account.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/attachment.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/authResult.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/card.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/cipher.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/collection.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/decryptParameters.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/domainBase.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encArrayBuffer.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encString.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/encryptedObject.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/environmentUrls.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/field.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/folder.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/generatedPasswordHistory.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/globalState.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/identity.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/importResult.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/logInCredentials.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/login.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/loginUri.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/masterPasswordPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/organization.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/password.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/policy.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/provider.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/resetPasswordPolicyOptions.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/secureNote.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/send.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendAccess.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendFile.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sendText.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/sortedCiphersCache.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/state.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/symmetricCryptoKey.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/treeNode.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/domain/windowState.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cardExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cipherExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/cipherWithIdsExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/collectionExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/collectionWithIdExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/eventExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/fieldExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/folderExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/folderWithIdExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/identityExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/loginExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/loginUriExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/export/secureNoteExport.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/account/setKeyConnectorKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/account/verifyOTPRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/attachmentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/billingSyncConfigRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/bitPayInvoiceRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkDeleteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkMoveRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkRestoreRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherBulkShareRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherCollectionsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherShareRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/cipherWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/collectionRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/deleteRecoverRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/deviceRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emailTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/emergencyAccessUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/eventRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/folderRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/folderWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/groupRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/apiTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/passwordTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/ssoTokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/tokenRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/identityToken/tokenRequestTwoFactor.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/importCiphersRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/importOrganizationCiphersRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/kdfRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/keyConnectorUserKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/keysRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/kvpRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organization/organizationSponsorshipRedeemRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organization/organizationSsoRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationApiKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationConnectionRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationKeysRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationSubscriptionUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUpgradeRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserBulkConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserBulkRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserResetPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/organizationUserUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/passwordHintRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/passwordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/paymentRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/policyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/preloginRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerAddOrganizationRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerOrganizationCreateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerSetupRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserAcceptRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserBulkConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserBulkRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserConfirmRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserInviteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/provider/providerUserUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/referenceEventRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/registerRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/secretVerificationRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/selectionReadOnlyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendAccessRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/sendWithIdRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/setPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/storageRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/taxInfoUpdateRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorProviderRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/twoFactorRecoveryRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateDomainsRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateKeyRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateProfileRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTempPasswordRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorDuoRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorWebAuthnRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyBankRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyDeleteRecoverRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/request/verifyEmailRequest.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/apiKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/attachmentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/attachmentUploadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/baseResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingHistoryResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingPaymentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/billingResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/breachAccountResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/cipherResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/collectionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/domainsResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/emergencyAccessResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/errorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/eventResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/folderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/globalDomainResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/groupResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityCaptchaResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityTokenResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/identityTwoFactorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/keyConnectorUserKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/keysResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/listResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/notificationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organization/organizationSsoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationApiKeyInformationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationAutoEnrollStatusResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationConnectionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationKeysResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationSponsorshipSyncStatusResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationSubscriptionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserBulkPublicKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserBulkResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/organizationUserResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/passwordHistoryResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/paymentResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/planResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/policyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/preloginResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileProviderOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileProviderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/profileResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerOrganizationResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserBulkPublicKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserBulkResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/provider/providerUserResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/selectionReadOnlyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendAccessResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendFileDownloadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendFileUploadDataResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/sendResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/subscriptionResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/syncResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/taxInfoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/taxRateResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorAuthenticatorResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorDuoResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorEmailResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorProviderResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorRescoverResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorWebAuthnResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/twoFactorYubiKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/response/userKeyResponse.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/attachmentView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/cardView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/cipherView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/collectionView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/eventView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/fieldView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/folderView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/identityView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/itemView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/loginUriView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/loginView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/passwordHistoryView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/secureNoteView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendAccessView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendFileView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendTextView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/sendView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/ssoConfigView.ts","webpack://@bitwarden/web-vault/./jslib/common/src/models/view/view.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/api.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/appId.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/audit.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/auth.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/azureFileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/bitwardenFileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/broadcaster.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/cipher.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/collection.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/consoleLog.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/container.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/crypto.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/environment.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/event.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/export.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/fileUpload.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/folder.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/i18n.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/import.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/keyConnector.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/notifications.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/organization.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/passwordGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/policy.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/provider.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/search.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/send.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/settings.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/state.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/stateMigration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/sync.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/token.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/totp.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/twoFactor.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/userVerification.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/usernameGeneration.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/vaultTimeout.service.ts","webpack://@bitwarden/web-vault/./jslib/common/src/services/webCryptoFunction.service.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/badge.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/badge.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/badge/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/banner/banner.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/banner/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/button.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/button.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/button/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/callout/callout.module.ts","webpack://@bitwarden/web-vault/./jslib/components/src/callout/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/index.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-divider.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-divider.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-item.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu-trigger-for.directive.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.component.ts","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.component.html","webpack://@bitwarden/web-vault/./jslib/components/src/menu/menu.module.ts","webpack://@bitwarden/web-vault/./src/abstractions/state.service.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-emergency.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-emergency.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/accept-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/accept-organization.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/hint.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/hint.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/lock.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/lock.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/login.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/login.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/recover-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/recover-delete.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/recover-two-factor.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/recover-two-factor.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/register.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/register.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/remove-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/remove-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/set-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/set-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/sso.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/sso.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor-options.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor-options.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/two-factor.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/update-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/update-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/update-temp-password.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/update-temp-password.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/verify-email-token.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/verify-email-token.component.html","webpack://@bitwarden/web-vault/./src/app/accounts/verify-recover-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/accounts/verify-recover-delete.component.html","webpack://@bitwarden/web-vault/./src/app/app.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.accept.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.events.component.ts","webpack://@bitwarden/web-vault/./src/app/common/base.people.component.ts","webpack://@bitwarden/web-vault/./src/app/components/nested-checkbox.component.ts","webpack://@bitwarden/web-vault/./src/app/components/nested-checkbox.component.html","webpack://@bitwarden/web-vault/./src/app/components/organization-switcher.component.ts","webpack://@bitwarden/web-vault/./src/app/components/organization-switcher.component.html","webpack://@bitwarden/web-vault/./src/app/components/password-reprompt.component.ts","webpack://@bitwarden/web-vault/./src/app/components/password-reprompt.component.html","webpack://@bitwarden/web-vault/./src/app/components/password-strength.component.ts","webpack://@bitwarden/web-vault/./src/app/components/password-strength.component.html","webpack://@bitwarden/web-vault/./src/app/components/premium-badge.component.ts","webpack://@bitwarden/web-vault/./src/app/guards/home.guard.ts","webpack://@bitwarden/web-vault/./src/app/layouts/footer.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/footer.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/frontend-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/frontend-layout.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/navbar.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/navbar.component.html","webpack://@bitwarden/web-vault/./src/app/layouts/user-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/layouts/user-layout.component.html","webpack://@bitwarden/web-vault/./src/app/modules/loose-components.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/pipes/get-organization-name.pipe.ts","webpack://@bitwarden/web-vault/./src/app/modules/pipes/pipes.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/shared.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/collection-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/collection-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/folder-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/folder-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/link-sso.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/link-sso.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-options.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/organization-options.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/status-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/status-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/type-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/components/type-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/organization-vault-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault-filter/vault-filter.service.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/individual-vault/individual-vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-badge.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-name-badge.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-badge/organization-name-badge.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.component.html","webpack://@bitwarden/web-vault/./src/app/modules/vault/modules/organization-vault/organization-vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/vault.module.ts","webpack://@bitwarden/web-vault/./src/app/modules/vault/vault.service.ts","webpack://@bitwarden/web-vault/./src/app/organizations/guards/permissions.guard.ts","webpack://@bitwarden/web-vault/./src/app/organizations/layouts/organization-layout.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/layouts/organization-layout.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-remove.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-status.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/bulk/bulk-status.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collection-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collection-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/collections.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-events.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-events.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-users.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/entity-users.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/events.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/events.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/group-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/group-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/groups.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/groups.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/manage.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/manage.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/people.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/people.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policies.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policies.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policy-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/policy-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/reset-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/reset-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-confirm.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-groups.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/manage/user-groups.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/organization-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/base-policy.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/disable-send.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/disable-send.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/master-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/master-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/password-generator.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/password-generator.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/personal-ownership.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/personal-ownership.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/require-sso.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/require-sso.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/reset-password.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/reset-password.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/send-options.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/send-options.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/single-org.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/single-org.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/policies/two-factor-authentication.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/policies/two-factor-authentication.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/services/navigation-permissions.service.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/account.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/account.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/adjust-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/adjust-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/billing-sync-api-key.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/billing-sync-api-key.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/change-plan.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/change-plan.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/delete-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/delete-organization.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/download-license.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/download-license.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/image-subscription-hidden.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/image-subscription-hidden.component.svg","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-billing.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-billing.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/organization-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/settings.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/settings/settings.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/settings/two-factor-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-setup.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/accept-family-sponsorship.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/accept-family-sponsorship.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/sponsorships/families-for-enterprise-setup.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/export.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/export.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/exposed-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/import.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/import.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/inactive-two-factor-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/reused-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/reused-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/tools.component.ts","webpack://@bitwarden/web-vault/./src/app/organizations/tools/tools.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/unsecured-websites-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/tools/weak-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/weak-passwords-report.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/attachments.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/ciphers.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/ciphers.component.html","webpack://@bitwarden/web-vault/./src/app/organizations/vault/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/collections.component.html","webpack://@bitwarden/web-vault/./src/app/oss-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/oss.module.ts","webpack://@bitwarden/web-vault/./src/app/providers/providers.component.ts","webpack://@bitwarden/web-vault/./src/app/providers/providers.component.html","webpack://@bitwarden/web-vault/./src/app/reports/breach-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/breach-report.component.html","webpack://@bitwarden/web-vault/./src/app/reports/cipher-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/exposed-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/inactive-two-factor-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-card.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-card.component.html","webpack://@bitwarden/web-vault/./src/app/reports/report-list.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/report-list.component.html","webpack://@bitwarden/web-vault/./src/app/reports/reports-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/reports/reports.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/reports.component.html","webpack://@bitwarden/web-vault/./src/app/reports/reused-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/unsecured-websites-report.component.ts","webpack://@bitwarden/web-vault/./src/app/reports/weak-passwords-report.component.ts","webpack://@bitwarden/web-vault/./src/app/send/access.component.ts","webpack://@bitwarden/web-vault/./src/app/send/access.component.html","webpack://@bitwarden/web-vault/./src/app/send/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/send/add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/send/efflux-dates.component.ts","webpack://@bitwarden/web-vault/./src/app/send/efflux-dates.component.html","webpack://@bitwarden/web-vault/./src/app/send/send.component.ts","webpack://@bitwarden/web-vault/./src/app/send/send.component.html","webpack://@bitwarden/web-vault/./src/app/services/event.service.ts","webpack://@bitwarden/web-vault/./src/app/services/init.service.ts","webpack://@bitwarden/web-vault/./src/app/services/modal.service.ts","webpack://@bitwarden/web-vault/./src/app/services/policy-list.service.ts","webpack://@bitwarden/web-vault/./src/app/services/router.service.ts","webpack://@bitwarden/web-vault/./src/app/services/services.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/account.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/account.component.html","webpack://@bitwarden/web-vault/./src/app/settings/add-credit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/add-credit.component.html","webpack://@bitwarden/web-vault/./src/app/settings/adjust-payment.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/adjust-payment.component.html","webpack://@bitwarden/web-vault/./src/app/settings/adjust-storage.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/adjust-storage.component.html","webpack://@bitwarden/web-vault/./src/app/settings/api-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/api-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/billing-sync-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/billing-sync-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-email.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-kdf.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-kdf.component.html","webpack://@bitwarden/web-vault/./src/app/settings/change-password.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/change-password.component.html","webpack://@bitwarden/web-vault/./src/app/settings/create-organization.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/create-organization.component.html","webpack://@bitwarden/web-vault/./src/app/settings/deauthorize-sessions.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/deauthorize-sessions.component.html","webpack://@bitwarden/web-vault/./src/app/settings/delete-account.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/delete-account.component.html","webpack://@bitwarden/web-vault/./src/app/settings/domain-rules.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/domain-rules.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-confirm.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-confirm.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-takeover.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-takeover.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-view.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access-view.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/emergency-access.component.html","webpack://@bitwarden/web-vault/./src/app/settings/emergency-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/organization-plans.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/organization-plans.component.html","webpack://@bitwarden/web-vault/./src/app/settings/payment-method.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/payment-method.component.html","webpack://@bitwarden/web-vault/./src/app/settings/payment.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/payment.component.html","webpack://@bitwarden/web-vault/./src/app/settings/preferences.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/preferences.component.html","webpack://@bitwarden/web-vault/./src/app/settings/premium.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/premium.component.html","webpack://@bitwarden/web-vault/./src/app/settings/profile.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/profile.component.html","webpack://@bitwarden/web-vault/./src/app/settings/purge-vault.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/purge-vault.component.html","webpack://@bitwarden/web-vault/./src/app/settings/security-keys.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/security-keys.component.html","webpack://@bitwarden/web-vault/./src/app/settings/security-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/security.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/security.component.html","webpack://@bitwarden/web-vault/./src/app/settings/settings.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/settings.component.html","webpack://@bitwarden/web-vault/./src/app/settings/sponsored-families.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/sponsored-families.component.html","webpack://@bitwarden/web-vault/./src/app/settings/sponsoring-org-row.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/sponsoring-org-row.component.html","webpack://@bitwarden/web-vault/./src/app/settings/subscription-routing.module.ts","webpack://@bitwarden/web-vault/./src/app/settings/subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/subscription.component.html","webpack://@bitwarden/web-vault/./src/app/settings/tax-info.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/tax-info.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-authenticator.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-authenticator.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-base.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-duo.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-duo.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-email.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-recovery.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-recovery.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-setup.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-verify.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-verify.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-webauthn.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-webauthn.component.html","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-yubikey.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/two-factor-yubikey.component.html","webpack://@bitwarden/web-vault/./src/app/settings/update-key.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/update-key.component.html","webpack://@bitwarden/web-vault/./src/app/settings/update-license.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/update-license.component.html","webpack://@bitwarden/web-vault/./src/app/settings/user-billing-history.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/user-billing-history.component.html","webpack://@bitwarden/web-vault/./src/app/settings/user-subscription.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/user-subscription.component.html","webpack://@bitwarden/web-vault/./src/app/settings/vault-timeout-input.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/vault-timeout-input.component.html","webpack://@bitwarden/web-vault/./src/app/settings/verify-email.component.ts","webpack://@bitwarden/web-vault/./src/app/settings/verify-email.component.html","webpack://@bitwarden/web-vault/./src/app/tools/export.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/generator.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/generator.component.html","webpack://@bitwarden/web-vault/./src/app/tools/import.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/password-generator-history.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/password-generator-history.component.html","webpack://@bitwarden/web-vault/./src/app/tools/tools.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/tools.component.html","webpack://@bitwarden/web-vault/./src/app/vault/add-edit-custom-fields.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/add-edit-custom-fields.component.html","webpack://@bitwarden/web-vault/./src/app/vault/add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/attachments.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-actions.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-actions.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-delete.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-delete.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-move.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-move.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-restore.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-restore.component.html","webpack://@bitwarden/web-vault/./src/app/vault/bulk-share.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/bulk-share.component.html","webpack://@bitwarden/web-vault/./src/app/vault/ciphers.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/collections.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/folder-add-edit.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/folder-add-edit.component.html","webpack://@bitwarden/web-vault/./src/app/vault/share.component.ts","webpack://@bitwarden/web-vault/./src/app/vault/share.component.html","webpack://@bitwarden/web-vault/./src/app/wildcard-routing.module.ts","webpack://@bitwarden/web-vault/./src/models/account.ts","webpack://@bitwarden/web-vault/./src/models/globalState.ts","webpack://@bitwarden/web-vault/./src/services/broadcasterMessaging.service.ts","webpack://@bitwarden/web-vault/./src/services/htmlStorage.service.ts","webpack://@bitwarden/web-vault/./src/services/i18n.service.ts","webpack://@bitwarden/web-vault/./src/services/memoryStorage.service.ts","webpack://@bitwarden/web-vault/./src/services/passwordReprompt.service.ts","webpack://@bitwarden/web-vault/./src/services/state.service.ts","webpack://@bitwarden/web-vault/./src/services/stateMigration.service.ts","webpack://@bitwarden/web-vault/./src/services/webPlatformUtils.service.ts","webpack://@bitwarden/web-vault/./src/scss/export.module.scss","webpack://@bitwarden/web-vault/webpack/bootstrap","webpack://@bitwarden/web-vault/webpack/runtime/compat get default export","webpack://@bitwarden/web-vault/webpack/runtime/define property getters","webpack://@bitwarden/web-vault/webpack/runtime/global","webpack://@bitwarden/web-vault/webpack/runtime/hasOwnProperty shorthand","webpack://@bitwarden/web-vault/webpack/runtime/make namespace object","webpack://@bitwarden/web-vault/webpack/runtime/node module decorator","webpack://@bitwarden/web-vault/webpack/runtime/jsonp chunk loading","webpack://@bitwarden/web-vault/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nconst routes: Routes = [\n {\n path: \"providers\",\n loadChildren: async () => (await import(\"./providers/providers.module\")).ProvidersModule,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { AppComponent as BaseAppComponent } from \"src/app/app.component\";\n\nimport { DisablePersonalVaultExportPolicy } from \"./policies/disable-personal-vault-export.component\";\nimport { MaximumVaultTimeoutPolicy } from \"./policies/maximum-vault-timeout.component\";\n\n@Component({\n selector: \"app-root\",\n templateUrl: \"../../../src/app/app.component.html\",\n})\nexport class AppComponent extends BaseAppComponent {\n ngOnInit() {\n super.ngOnInit();\n\n this.policyListService.addPolicies([\n new MaximumVaultTimeoutPolicy(),\n new DisablePersonalVaultExportPolicy(),\n ]);\n }\n}\n","\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { RouterModule } from \"@angular/router\";\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nimport { OssRoutingModule } from \"src/app/oss-routing.module\";\nimport { OssModule } from \"src/app/oss.module\";\nimport { ServicesModule } from \"src/app/services/services.module\";\nimport { WildcardRoutingModule } from \"src/app/wildcard-routing.module\";\n\nimport { AppRoutingModule } from \"./app-routing.module\";\nimport { AppComponent } from \"./app.component\";\nimport { OrganizationsModule } from \"./organizations/organizations.module\";\nimport { DisablePersonalVaultExportPolicyComponent } from \"./policies/disable-personal-vault-export.component\";\nimport { MaximumVaultTimeoutPolicyComponent } from \"./policies/maximum-vault-timeout.component\";\n\n@NgModule({\n imports: [\n OverlayModule,\n OssModule,\n JslibModule,\n BrowserAnimationsModule,\n FormsModule,\n ReactiveFormsModule,\n ServicesModule,\n InfiniteScrollModule,\n DragDropModule,\n AppRoutingModule,\n OssRoutingModule,\n OrganizationsModule, // Must be after OssRoutingModule for competing routes to resolve properly\n RouterModule,\n WildcardRoutingModule, // Needs to be last to catch all non-existing routes\n ],\n declarations: [\n AppComponent,\n DisablePersonalVaultExportPolicyComponent,\n MaximumVaultTimeoutPolicyComponent,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { enableProdMode } from \"@angular/core\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n\nimport \"bootstrap\";\nimport \"jquery\";\nimport \"popper.js\";\n\nrequire(\"src/scss/styles.scss\");\nrequire(\"src/scss/tailwind.css\");\n\nimport { AppModule } from \"./app.module\";\n\nif (process.env.NODE_ENV === \"production\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","import { Directive, Input, OnInit, Self } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NgControl, Validators } from \"@angular/forms\";\n\nimport { dirtyRequired } from \"jslib-angular/validators/dirty.validator\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Directive()\nexport abstract class BaseCvaComponent implements ControlValueAccessor, OnInit {\n get describedById() {\n return this.showDescribedBy ? this.controlId + \"Desc\" : null;\n }\n\n get showDescribedBy() {\n return this.helperText != null || this.controlDir.control.hasError(\"required\");\n }\n\n get isRequired() {\n return (\n this.controlDir.control.hasValidator(Validators.required) ||\n this.controlDir.control.hasValidator(dirtyRequired)\n );\n }\n\n @Input() label: string;\n @Input() controlId: string;\n @Input() helperText: string;\n\n internalControl = new FormControl(\"\");\n\n protected onChange: any;\n protected onTouched: any;\n\n constructor(@Self() public controlDir: NgControl) {\n this.controlDir.valueAccessor = this;\n }\n\n ngOnInit() {\n this.internalControl.valueChanges.subscribe(this.onValueChangesInternal);\n }\n\n onBlurInternal() {\n this.onTouched();\n }\n\n // CVA interfaces\n writeValue(value: string) {\n this.internalControl.setValue(value);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this.internalControl.disable();\n } else {\n this.internalControl.enable();\n }\n }\n\n protected onValueChangesInternal: any = (value: string) => this.onChange(value);\n // End CVA interfaces\n}\n","import { Component } from \"@angular/core\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-checkbox\",\n templateUrl: \"input-checkbox.component.html\",\n})\nexport class InputCheckboxComponent extends BaseCvaComponent {}\n","
\n
\n \n \n
\n {{\n helperText\n }}\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-text-readonly\",\n templateUrl: \"input-text-readonly.component.html\",\n})\nexport class InputTextReadOnlyComponent {\n @Input() controlValue: string;\n @Input() label: string;\n @Input() showCopy = true;\n @Input() showLaunch = false;\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n copy(value: string) {\n this.platformUtilsService.copyToClipboard(value);\n }\n\n launchUri(url: string) {\n this.platformUtilsService.launchUri(url);\n }\n}\n","
\n \n
\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-input-text[label][controlId]\",\n templateUrl: \"input-text.component.html\",\n})\nexport class InputTextComponent extends BaseCvaComponent implements OnInit {\n @Input() helperTextSameAsError: string;\n @Input() requiredErrorMessage: string;\n @Input() stripSpaces = false;\n\n transformValue: (value: string) => string = null;\n\n ngOnInit() {\n super.ngOnInit();\n if (this.stripSpaces) {\n this.transformValue = this.doStripSpaces;\n }\n }\n\n writeValue(value: string) {\n this.internalControl.setValue(value == null ? \"\" : value);\n }\n\n protected onValueChangesInternal: any = (value: string) => {\n let newValue = value;\n if (this.transformValue != null) {\n newValue = this.transformValue(value);\n this.internalControl.setValue(newValue, { emitEvent: false });\n }\n this.onChange(newValue);\n };\n\n protected onValueChangeInternal(value: string) {\n let newValue = value;\n if (this.transformValue != null) {\n newValue = this.transformValue(value);\n this.internalControl.setValue(newValue, { emitEvent: false });\n }\n }\n\n private doStripSpaces(value: string) {\n return value.replace(/ /g, \"\");\n }\n}\n","
\n \n \n
\n \n {{ helperText }}\n \n \n \n {{ \"error\" | i18n }}:\n {{\n controlDir.control.hasError(helperTextSameAsError)\n ? helperText\n : (\"fieldRequiredError\" | i18n: label)\n }}\n \n
\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { SelectOptions } from \"jslib-angular/interfaces/selectOptions\";\n\nimport { BaseCvaComponent } from \"./base-cva.component\";\n\n/** For use in the SSO Config Form only - will be deprecated by the Component Library */\n@Component({\n selector: \"app-select\",\n templateUrl: \"select.component.html\",\n})\nexport class SelectComponent extends BaseCvaComponent {\n @Input() selectOptions: SelectOptions[];\n}\n","
\n \n \n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormBuilder, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { SelectOptions } from \"jslib-angular/interfaces/selectOptions\";\nimport { dirtyRequired } from \"jslib-angular/validators/dirty.validator\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"jslib-common/enums/ssoEnums\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SsoConfigApi } from \"jslib-common/models/api/ssoConfigApi\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationSsoRequest } from \"jslib-common/models/request/organization/organizationSsoRequest\";\nimport { OrganizationSsoResponse } from \"jslib-common/models/response/organization/organizationSsoResponse\";\nimport { SsoConfigView } from \"jslib-common/models/view/ssoConfigView\";\n\nconst defaultSigningAlgorithm = \"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\";\n\n@Component({\n selector: \"app-org-manage-sso\",\n templateUrl: \"sso.component.html\",\n})\nexport class SsoComponent implements OnInit {\n readonly ssoType = SsoType;\n\n readonly ssoTypeOptions: SelectOptions[] = [\n { name: this.i18nService.t(\"selectType\"), value: SsoType.None, disabled: true },\n { name: \"OpenID Connect\", value: SsoType.OpenIdConnect },\n { name: \"SAML 2.0\", value: SsoType.Saml2 },\n ];\n\n readonly samlSigningAlgorithms = [\n \"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha384\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha512\",\n \"http://www.w3.org/2000/09/xmldsig#rsa-sha1\",\n ];\n\n readonly saml2SigningBehaviourOptions: SelectOptions[] = [\n {\n name: \"If IdP Wants Authn Requests Signed\",\n value: Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned,\n },\n { name: \"Always\", value: Saml2SigningBehavior.Always },\n { name: \"Never\", value: Saml2SigningBehavior.Never },\n ];\n readonly saml2BindingTypeOptions: SelectOptions[] = [\n { name: \"Redirect\", value: Saml2BindingType.HttpRedirect },\n { name: \"HTTP POST\", value: Saml2BindingType.HttpPost },\n ];\n readonly saml2NameIdFormatOptions: SelectOptions[] = [\n { name: \"Not Configured\", value: Saml2NameIdFormat.NotConfigured },\n { name: \"Unspecified\", value: Saml2NameIdFormat.Unspecified },\n { name: \"Email Address\", value: Saml2NameIdFormat.EmailAddress },\n { name: \"X.509 Subject Name\", value: Saml2NameIdFormat.X509SubjectName },\n { name: \"Windows Domain Qualified Name\", value: Saml2NameIdFormat.WindowsDomainQualifiedName },\n { name: \"Kerberos Principal Name\", value: Saml2NameIdFormat.KerberosPrincipalName },\n { name: \"Entity Identifier\", value: Saml2NameIdFormat.EntityIdentifier },\n { name: \"Persistent\", value: Saml2NameIdFormat.Persistent },\n { name: \"Transient\", value: Saml2NameIdFormat.Transient },\n ];\n\n readonly connectRedirectOptions: SelectOptions[] = [\n { name: \"Redirect GET\", value: OpenIdConnectRedirectBehavior.RedirectGet },\n { name: \"Form POST\", value: OpenIdConnectRedirectBehavior.FormPost },\n ];\n\n showOpenIdCustomizations = false;\n\n loading = true;\n haveTestedKeyConnector = false;\n organizationId: string;\n organization: Organization;\n formPromise: Promise;\n\n callbackPath: string;\n signedOutCallbackPath: string;\n spEntityId: string;\n spMetadataUrl: string;\n spAcsUrl: string;\n\n enabled = this.formBuilder.control(false);\n\n openIdForm = this.formBuilder.group(\n {\n authority: [\"\", dirtyRequired],\n clientId: [\"\", dirtyRequired],\n clientSecret: [\"\", dirtyRequired],\n metadataAddress: [],\n redirectBehavior: [OpenIdConnectRedirectBehavior.RedirectGet, dirtyRequired],\n getClaimsFromUserInfoEndpoint: [],\n additionalScopes: [],\n additionalUserIdClaimTypes: [],\n additionalEmailClaimTypes: [],\n additionalNameClaimTypes: [],\n acrValues: [],\n expectedReturnAcrValue: [],\n },\n {\n updateOn: \"blur\",\n }\n );\n\n samlForm = this.formBuilder.group(\n {\n spNameIdFormat: [Saml2NameIdFormat.NotConfigured],\n spOutboundSigningAlgorithm: [defaultSigningAlgorithm],\n spSigningBehavior: [Saml2SigningBehavior.IfIdpWantAuthnRequestsSigned],\n spMinIncomingSigningAlgorithm: [defaultSigningAlgorithm],\n spWantAssertionsSigned: [],\n spValidateCertificates: [],\n\n idpEntityId: [\"\", dirtyRequired],\n idpBindingType: [Saml2BindingType.HttpRedirect],\n idpSingleSignOnServiceUrl: [],\n idpSingleLogoutServiceUrl: [],\n idpX509PublicCert: [\"\", dirtyRequired],\n idpOutboundSigningAlgorithm: [defaultSigningAlgorithm],\n idpAllowUnsolicitedAuthnResponse: [],\n idpAllowOutboundLogoutRequests: [true],\n idpWantAuthnRequestsSigned: [],\n },\n {\n updateOn: \"blur\",\n }\n );\n\n ssoConfigForm = this.formBuilder.group({\n configType: [SsoType.None],\n keyConnectorEnabled: [false],\n keyConnectorUrl: [\"\"],\n openId: this.openIdForm,\n saml: this.samlForm,\n });\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.ssoConfigForm.get(\"configType\").valueChanges.subscribe((newType: SsoType) => {\n if (newType === SsoType.OpenIdConnect) {\n this.openIdForm.enable();\n this.samlForm.disable();\n } else if (newType === SsoType.Saml2) {\n this.openIdForm.disable();\n this.samlForm.enable();\n } else {\n this.openIdForm.disable();\n this.samlForm.disable();\n }\n });\n\n this.samlForm\n .get(\"spSigningBehavior\")\n .valueChanges.subscribe(() =>\n this.samlForm.get(\"idpX509PublicCert\").updateValueAndValidity()\n );\n\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n const ssoSettings = await this.apiService.getOrganizationSso(this.organizationId);\n this.populateForm(ssoSettings);\n\n this.callbackPath = ssoSettings.urls.callbackPath;\n this.signedOutCallbackPath = ssoSettings.urls.signedOutCallbackPath;\n this.spEntityId = ssoSettings.urls.spEntityId;\n this.spMetadataUrl = ssoSettings.urls.spMetadataUrl;\n this.spAcsUrl = ssoSettings.urls.spAcsUrl;\n\n this.loading = false;\n }\n\n async submit() {\n this.validateForm(this.ssoConfigForm);\n\n if (this.ssoConfigForm.get(\"keyConnectorEnabled\").value) {\n await this.validateKeyConnectorUrl();\n }\n\n if (!this.ssoConfigForm.valid) {\n this.readOutErrors();\n return;\n }\n\n const request = new OrganizationSsoRequest();\n request.enabled = this.enabled.value;\n request.data = SsoConfigApi.fromView(this.ssoConfigForm.value as SsoConfigView);\n\n this.formPromise = this.apiService.postOrganizationSso(this.organizationId, request);\n\n try {\n const response = await this.formPromise;\n this.populateForm(response);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"ssoSettingsSaved\"));\n } catch {\n // Logged by appApiAction, do nothing\n }\n\n this.formPromise = null;\n }\n\n async validateKeyConnectorUrl() {\n if (this.haveTestedKeyConnector) {\n return;\n }\n\n this.keyConnectorUrl.markAsPending();\n\n try {\n await this.apiService.getKeyConnectorAlive(this.keyConnectorUrl.value);\n this.keyConnectorUrl.updateValueAndValidity();\n } catch {\n this.keyConnectorUrl.setErrors({\n invalidUrl: true,\n });\n }\n\n this.haveTestedKeyConnector = true;\n }\n\n toggleOpenIdCustomizations() {\n this.showOpenIdCustomizations = !this.showOpenIdCustomizations;\n }\n\n getErrorCount(form: FormGroup): number {\n return Object.values(form.controls).reduce((acc: number, control: AbstractControl) => {\n if (control instanceof FormGroup) {\n return acc + this.getErrorCount(control);\n }\n\n if (control.errors == null) {\n return acc;\n }\n return acc + Object.keys(control.errors).length;\n }, 0);\n }\n\n get enableTestKeyConnector() {\n return (\n this.ssoConfigForm.get(\"keyConnectorEnabled\").value &&\n !Utils.isNullOrWhitespace(this.keyConnectorUrl?.value)\n );\n }\n\n get keyConnectorUrl() {\n return this.ssoConfigForm.get(\"keyConnectorUrl\");\n }\n\n get samlSigningAlgorithmOptions(): SelectOptions[] {\n return this.samlSigningAlgorithms.map((algorithm) => ({ name: algorithm, value: algorithm }));\n }\n\n private validateForm(form: FormGroup) {\n Object.values(form.controls).forEach((control: AbstractControl) => {\n if (control.disabled) {\n return;\n }\n\n if (control instanceof FormGroup) {\n this.validateForm(control);\n } else {\n control.markAsDirty();\n control.markAsTouched();\n control.updateValueAndValidity();\n }\n });\n }\n\n private populateForm(ssoSettings: OrganizationSsoResponse) {\n this.enabled.setValue(ssoSettings.enabled);\n if (ssoSettings.data != null) {\n const ssoConfigView = new SsoConfigView(ssoSettings.data);\n this.ssoConfigForm.patchValue(ssoConfigView);\n }\n }\n\n private readOutErrors() {\n const errorText = this.i18nService.t(\"error\");\n const errorCount = this.getErrorCount(this.ssoConfigForm);\n const errorCountText = this.i18nService.t(\n errorCount === 1 ? \"formErrorSummarySingle\" : \"formErrorSummaryPlural\",\n errorCount.toString()\n );\n\n const div = document.createElement(\"div\");\n div.className = \"sr-only\";\n div.id = \"srErrorCount\";\n div.setAttribute(\"aria-live\", \"polite\");\n div.innerText = errorText + \": \" + errorCountText;\n\n const existing = document.getElementById(\"srErrorCount\");\n if (existing != null) {\n existing.remove();\n }\n\n document.body.append(div);\n }\n}\n","
\n

{{ \"singleSignOn\" | i18n }}

\n
\n\n\n \n {{ \"loading\" | i18n }}\n\n\n\n

\n {{ \"ssoPolicyHelpStart\" | i18n }}\n {{ \"ssoPolicyHelpLink\" | i18n }}\n {{ \"ssoPolicyHelpEnd\" | i18n }}\n
\n {{ \"ssoPolicyHelpKeyConnector\" | i18n }}\n

\n\n \n \n \n\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n\n \n \n \n {{ \"keyConnectorWarning\" | i18n }}\n \n\n
\n \n
\n \n
\n \n \n \n {{ \"keyConnectorTest\" | i18n }}\n \n \n
\n
\n
\n \n \n {{ \"error\" | i18n }}:\n {{ \"keyConnectorTestFail\" | i18n }}\n \n \n \n \n {{ \"keyConnectorTestSuccess\" | i18n }}\n \n \n
\n
\n \n\n \n \n \n\n \n \n
\n

{{ \"openIdConnectConfig\" | i18n }}

\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n\n \n\n \n \n

\n {{ \"openIdOptionalCustomizations\" | i18n }}\n

\n \n \n \n
\n
\n \n\n \n\n \n\n \n\n \n\n \n
\n \n \n\n \n
\n \n
\n

{{ \"samlSpConfig\" | i18n }}

\n\n \n\n \n\n \n\n \n \n\n \n \n\n \n \n\n \n \n\n \n\n \n
\n\n \n
\n

{{ \"samlIdpConfig\" | i18n }}

\n\n \n\n \n \n\n \n\n \n\n
\n \n \n \n \n {{ \"error\" | i18n }}:\n {{ \"fieldRequiredError\" | i18n: (\"idpX509PublicCert\" | i18n) }}\n \n
\n\n \n \n\n \n \n\n \n\n \n
\n
\n\n \n \n \n {{ \"error\" | i18n }}:\n {{\n (errorCount === 1 ? \"formErrorSummarySingle\" : \"formErrorSummaryPlural\") | i18n: errorCount\n }}\n \n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { PermissionsGuard } from \"src/app/organizations/guards/permissions.guard\";\nimport { OrganizationLayoutComponent } from \"src/app/organizations/layouts/organization-layout.component\";\nimport { ManageComponent } from \"src/app/organizations/manage/manage.component\";\nimport { NavigationPermissionsService } from \"src/app/organizations/services/navigation-permissions.service\";\n\nimport { SsoComponent } from \"./manage/sso.component\";\n\nconst routes: Routes = [\n {\n path: \"organizations/:organizationId\",\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuard, PermissionsGuard],\n children: [\n {\n path: \"manage\",\n component: ManageComponent,\n canActivate: [PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"manage\").concat(\n Permissions.ManageSso\n ),\n },\n children: [\n {\n path: \"sso\",\n component: SsoComponent,\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationsRoutingModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nimport { InputCheckboxComponent } from \"./components/input-checkbox.component\";\nimport { InputTextReadOnlyComponent } from \"./components/input-text-readonly.component\";\nimport { InputTextComponent } from \"./components/input-text.component\";\nimport { SelectComponent } from \"./components/select.component\";\nimport { SsoComponent } from \"./manage/sso.component\";\nimport { OrganizationsRoutingModule } from \"./organizations-routing.module\";\n\n// Form components are for use in the SSO Configuration Form only and should not be exported for use elsewhere.\n// They will be deprecated by the Component Library.\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n JslibModule,\n OrganizationsRoutingModule,\n ],\n declarations: [\n InputCheckboxComponent,\n InputTextComponent,\n InputTextReadOnlyComponent,\n SelectComponent,\n SsoComponent,\n ],\n})\nexport class OrganizationsModule {}\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport {\n BasePolicy,\n BasePolicyComponent,\n} from \"src/app/organizations/policies/base-policy.component\";\n\nexport class DisablePersonalVaultExportPolicy extends BasePolicy {\n name = \"disablePersonalVaultExport\";\n description = \"disablePersonalVaultExportDesc\";\n type = PolicyType.DisablePersonalVaultExport;\n component = DisablePersonalVaultExportPolicyComponent;\n}\n\n@Component({\n selector: \"policy-disable-personal-vault-export\",\n templateUrl: \"disable-personal-vault-export.component.html\",\n})\nexport class DisablePersonalVaultExportPolicyComponent extends BasePolicyComponent {}\n","
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport {\n BasePolicy,\n BasePolicyComponent,\n} from \"src/app/organizations/policies/base-policy.component\";\n\nexport class MaximumVaultTimeoutPolicy extends BasePolicy {\n name = \"maximumVaultTimeout\";\n description = \"maximumVaultTimeoutDesc\";\n type = PolicyType.MaximumVaultTimeout;\n component = MaximumVaultTimeoutPolicyComponent;\n}\n\n@Component({\n selector: \"policy-maximum-timeout\",\n templateUrl: \"maximum-vault-timeout.component.html\",\n})\nexport class MaximumVaultTimeoutPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n hours: [null],\n minutes: [null],\n });\n\n constructor(private formBuilder: FormBuilder, private i18nService: I18nService) {\n super();\n }\n\n loadData() {\n const minutes = this.policyResponse.data?.minutes;\n\n if (minutes == null) {\n return;\n }\n\n this.data.patchValue({\n hours: Math.floor(minutes / 60),\n minutes: minutes % 60,\n });\n }\n\n buildRequestData() {\n if (this.data.value.hours == null && this.data.value.minutes == null) {\n return null;\n }\n\n return {\n minutes: this.data.value.hours * 60 + this.data.value.minutes,\n };\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t(\"requireSsoPolicyReqError\"));\n }\n\n const data = this.buildRequestData();\n if (data?.minutes == null || data?.minutes <= 0) {\n throw new Error(this.i18nService.t(\"invalidMaximumVaultTimeout\"));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"requireSsoPolicyReq\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n
\n \n {{ \"hours\" | i18n }}\n
\n
\n \n {{ \"minutes\" | i18n }}\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\nimport { WebProviderService } from \"../services/webProvider.service\";\n\n@Component({\n selector: \"provider-add-organization\",\n templateUrl: \"add-organization.component.html\",\n})\nexport class AddOrganizationComponent implements OnInit {\n @Input() providerId: string;\n @Input() organizations: Organization[];\n @Output() onAddedOrganization = new EventEmitter();\n\n provider: Provider;\n formPromise: Promise;\n loading = true;\n\n constructor(\n private providerService: ProviderService,\n private webProviderService: WebProviderService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private validationService: ValidationService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n if (this.providerId == null) {\n return;\n }\n\n this.provider = await this.providerService.get(this.providerId);\n\n this.loading = false;\n }\n\n async add(organization: Organization) {\n if (this.formPromise) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"addOrganizationConfirmation\", organization.name, this.provider.name),\n organization.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n try {\n this.formPromise = this.webProviderService.addOrganizationToProvider(\n this.providerId,\n organization.id\n );\n await this.formPromise;\n } catch (e) {\n this.validationService.showError(e);\n return;\n } finally {\n this.formPromise = null;\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationJoinedProvider\")\n );\n this.onAddedOrganization.emit();\n }\n}\n","
\n
\n
\n
\n

\n {{ \"addExistingOrganization\" | i18n }}\n

\n \n ×\n \n
\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ o.name }}\n \n \n Add\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ProviderOrganizationOrganizationDetailsResponse } from \"jslib-common/models/response/provider/providerOrganizationResponse\";\n\nimport { WebProviderService } from \"../services/webProvider.service\";\n\nimport { AddOrganizationComponent } from \"./add-organization.component\";\n\nconst DisallowedPlanTypes = [\n PlanType.Free,\n PlanType.FamiliesAnnually2019,\n PlanType.FamiliesAnnually,\n];\n\n@Component({\n templateUrl: \"clients.component.html\",\n})\nexport class ClientsComponent implements OnInit {\n @ViewChild(\"add\", { read: ViewContainerRef, static: true }) addModalRef: ViewContainerRef;\n\n providerId: any;\n searchText: string;\n addableOrganizations: Organization[];\n loading = true;\n manageOrganizations = false;\n showAddExisting = false;\n\n clients: ProviderOrganizationOrganizationDetailsResponse[];\n pagedClients: ProviderOrganizationOrganizationDetailsResponse[];\n\n protected didScroll = false;\n protected pageSize = 100;\n protected actionPromise: Promise;\n private pagedClientsCount = 0;\n\n constructor(\n private route: ActivatedRoute,\n private providerService: ProviderService,\n private apiService: ApiService,\n private searchService: SearchService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private validationService: ValidationService,\n private webProviderService: WebProviderService,\n private logService: LogService,\n private modalService: ModalService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderClients(this.providerId);\n this.clients = response.data != null && response.data.length > 0 ? response.data : [];\n this.manageOrganizations =\n (await this.providerService.get(this.providerId)).type === ProviderUserType.ProviderAdmin;\n const candidateOrgs = (await this.organizationService.getAll()).filter(\n (o) => o.isOwner && o.providerId == null\n );\n const allowedOrgsIds = await Promise.all(\n candidateOrgs.map((o) => this.apiService.getOrganization(o.id))\n ).then((orgs) =>\n orgs.filter((o) => !DisallowedPlanTypes.includes(o.planType)).map((o) => o.id)\n );\n this.addableOrganizations = candidateOrgs.filter((o) => allowedOrgsIds.includes(o.id));\n\n this.showAddExisting = this.addableOrganizations.length !== 0;\n this.loading = false;\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.clients && this.clients.length > this.pageSize;\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n async resetPaging() {\n this.pagedClients = [];\n this.loadMore();\n }\n\n loadMore() {\n if (!this.clients || this.clients.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedClients.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedClientsCount > this.pageSize) {\n pagedSize = this.pagedClientsCount;\n }\n if (this.clients.length > pagedLength) {\n this.pagedClients = this.pagedClients.concat(\n this.clients.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedClientsCount = this.pagedClients.length;\n this.didScroll = this.pagedClients.length > this.pageSize;\n }\n\n async addExistingOrganization() {\n const [modal] = await this.modalService.openViewRef(\n AddOrganizationComponent,\n this.addModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.organizations = this.addableOrganizations;\n comp.onAddedOrganization.subscribe(async () => {\n try {\n await this.load();\n modal.close();\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n }\n );\n }\n\n async remove(organization: ProviderOrganizationOrganizationDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"detachOrganizationConfirmation\"),\n organization.organizationName,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.webProviderService.detachOrganizastion(\n this.providerId,\n organization.id\n );\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"detachedOrganization\", organization.organizationName)\n );\n await this.load();\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n}\n","
\n

{{ \"clients\" | i18n }}

\n\n
\n
\n \n \n
\n \n \n {{ \"newClientOrganization\" | i18n }}\n \n \n \n {{ \"addExistingOrganization\" | i18n }}\n \n
\n
\n\n\n \n {{ \"loading\" | i18n }}\n\n\n\n

{{ \"noClientsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n {{ o.organizationName }}\n \n \n \n \n \n \n \n \n\n\n\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationPlansComponent } from \"src/app/settings/organization-plans.component\";\n\n@Component({\n selector: \"app-create-organization\",\n templateUrl: \"create-organization.component.html\",\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true })\n orgPlansComponent: OrganizationPlansComponent;\n\n providerId: string;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n });\n }\n}\n","
\n

{{ \"newClientOrganization\" | i18n }}

\n
\n

{{ \"newClientOrganizationDesc\" | i18n }}

\n\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\n@Injectable()\nexport class PermissionsGuard implements CanActivate {\n constructor(private providerService: ProviderService, private router: Router) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.providerService.get(route.params.providerId);\n const permissions = route.data == null ? null : (route.data.permissions as Permissions[]);\n\n if (\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && provider.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.ManageProvider) !== -1 && provider.isProviderAdmin) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && provider.canManageUsers)\n ) {\n return true;\n }\n\n this.router.navigate([\"/providers\", provider.id]);\n return false;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\n\n@Injectable()\nexport class ProviderGuard implements CanActivate {\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private providerService: ProviderService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.providerService.get(route.params.providerId);\n if (provider == null) {\n this.router.navigate([\"/\"]);\n return false;\n }\n if (!provider.isProviderAdmin && !provider.enabled) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"providerIsDisabled\"));\n this.router.navigate([\"/\"]);\n return false;\n }\n\n return true;\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ProviderUserAcceptRequest } from \"jslib-common/models/request/provider/providerUserAcceptRequest\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-provider\",\n templateUrl: \"accept-provider.component.html\",\n})\nexport class AcceptProviderComponent extends BaseAcceptComponent {\n providerName: string;\n\n failedMessage = \"providerInviteAcceptFailed\";\n\n requiredParameters = [\"providerId\", \"providerUserId\", \"token\"];\n\n constructor(\n router: Router,\n i18nService: I18nService,\n route: ActivatedRoute,\n stateService: StateService,\n private apiService: ApiService,\n platformUtilService: PlatformUtilsService\n ) {\n super(router, platformUtilService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any) {\n const request = new ProviderUserAcceptRequest();\n request.token = qParams.token;\n\n await this.apiService.postProviderUserAccept(\n qParams.providerId,\n qParams.providerUserId,\n request\n );\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"providerInviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any) {\n this.providerName = qParams.providerName;\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"joinProvider\" | i18n }}

\n
\n
\n

\n {{ providerName }}\n {{ email }}\n

\n

{{ \"joinProviderDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserBulkConfirmRequest } from \"jslib-common/models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\n\nimport { BulkConfirmComponent as OrganizationBulkConfirmComponent } from \"src/app/organizations/manage/bulk/bulk-confirm.component\";\nimport { BulkUserDetails } from \"src/app/organizations/manage/bulk/bulk-status.component\";\n\n@Component({\n templateUrl: \"../../../../../../src/app/organizations/manage/bulk/bulk-confirm.component.html\",\n})\nexport class BulkConfirmComponent extends OrganizationBulkConfirmComponent {\n @Input() providerId: string;\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === ProviderUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new ProviderUserBulkRequest(this.filteredUsers.map((user) => user.id));\n return await this.apiService.postProviderUsersPublicKey(this.providerId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getProviderKey(this.providerId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new ProviderUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postProviderUserBulkConfirm(this.providerId, request);\n }\n}\n","\n","import { Component, Input } from \"@angular/core\";\n\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\n\nimport { BulkRemoveComponent as OrganizationBulkRemoveComponent } from \"src/app/organizations/manage/bulk/bulk-remove.component\";\n\n@Component({\n templateUrl: \"../../../../../../src/app/organizations/manage/bulk/bulk-remove.component.html\",\n})\nexport class BulkRemoveComponent extends OrganizationBulkRemoveComponent {\n @Input() providerId: string;\n\n async deleteUsers() {\n const request = new ProviderUserBulkRequest(this.users.map((user) => user.id));\n return await this.apiService.deleteManyProviderUsers(this.providerId, request);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"removeUsers\" | i18n }}\n

\n \n ×\n \n
\n
\n \n {{ \"noSelectedUsersApplicable\" | i18n }}\n \n \n {{ error }}\n \n \n 0 && !error\">\n {{ \"removeUsersWarning\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}
\n \n \n \n {{ user.email }}\n {{ user.name }}\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}{{ \"status\" | i18n }}
\n \n \n \n {{ user.email }}\n {{ user.name }}\n \n {{ statuses.get(user.id) }}\n \n {{ \"bulkFilteredMessage\" | i18n }}\n
\n
\n
\n
\n 0\"\n [disabled]=\"loading\"\n (click)=\"submit()\"\n >\n \n {{ \"removeUsers\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\nimport { BaseEventsComponent } from \"src/app/common/base.events.component\";\nimport { EventService } from \"src/app/services/event.service\";\n\n@Component({\n selector: \"provider-events\",\n templateUrl: \"events.component.html\",\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName = \"provider-events\";\n providerId: string;\n\n private providerUsersUserIdMap = new Map();\n private providerUsersIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n eventService: EventService,\n i18nService: I18nService,\n private providerService: ProviderService,\n exportService: ExportService,\n platformUtilsService: PlatformUtilsService,\n private router: Router,\n logService: LogService,\n private userNamePipe: UserNamePipe\n ) {\n super(eventService, i18nService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n const provider = await this.providerService.get(this.providerId);\n if (provider == null || !provider.useEvents) {\n this.router.navigate([\"/providers\", this.providerId]);\n return;\n }\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderUsers(this.providerId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.providerUsersIdMap.set(u.id, { name: name, email: u.email });\n this.providerUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsProvider(\n this.providerId,\n startDate,\n endDate,\n continuationToken\n );\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n return userId != null && this.providerUsersUserIdMap.has(userId)\n ? this.providerUsersUserIdMap.get(userId)\n : null;\n }\n}\n","
\n

{{ \"eventLogs\" | i18n }}

\n
\n
\n \n \n -\n \n \n
\n
\n \n \n {{ \"refresh\" | i18n }}\n \n \n
\n \n \n {{ \"export\" | i18n }}\n \n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noEventsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"provider-manage\",\n templateUrl: \"manage.component.html\",\n})\nexport class ManageComponent implements OnInit {\n provider: Provider;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.provider = await this.providerService.get(params.providerId);\n this.accessEvents = this.provider.useEvents;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"manage\" | i18n }}
\n
\n \n {{ \"people\" | i18n }}\n \n \n {{ \"eventLogs\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { ProviderUserBulkRequest } from \"jslib-common/models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"jslib-common/models/request/provider/providerUserConfirmRequest\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { ProviderUserBulkResponse } from \"jslib-common/models/response/provider/providerUserBulkResponse\";\nimport { ProviderUserUserDetailsResponse } from \"jslib-common/models/response/provider/providerUserResponse\";\n\nimport { BasePeopleComponent } from \"src/app/common/base.people.component\";\nimport { BulkStatusComponent } from \"src/app/organizations/manage/bulk/bulk-status.component\";\nimport { EntityEventsComponent } from \"src/app/organizations/manage/entity-events.component\";\n\nimport { BulkConfirmComponent } from \"./bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./bulk/bulk-remove.component\";\nimport { UserAddEditComponent } from \"./user-add-edit.component\";\n\n@Component({\n selector: \"provider-people\",\n templateUrl: \"people.component.html\",\n})\nexport class PeopleComponent\n extends BasePeopleComponent\n implements OnInit\n{\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"groupsTemplate\", { read: ViewContainerRef, static: true })\n groupsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n @ViewChild(\"bulkStatusTemplate\", { read: ViewContainerRef, static: true })\n bulkStatusModalRef: ViewContainerRef;\n @ViewChild(\"bulkConfirmTemplate\", { read: ViewContainerRef, static: true })\n bulkConfirmModalRef: ViewContainerRef;\n @ViewChild(\"bulkRemoveTemplate\", { read: ViewContainerRef, static: true })\n bulkRemoveModalRef: ViewContainerRef;\n\n userType = ProviderUserType;\n userStatusType = ProviderUserStatusType;\n providerId: string;\n accessEvents = false;\n\n constructor(\n apiService: ApiService,\n private route: ActivatedRoute,\n i18nService: I18nService,\n modalService: ModalService,\n platformUtilsService: PlatformUtilsService,\n cryptoService: CryptoService,\n private router: Router,\n searchService: SearchService,\n validationService: ValidationService,\n logService: LogService,\n searchPipe: SearchPipe,\n userNamePipe: UserNamePipe,\n stateService: StateService,\n private providerService: ProviderService\n ) {\n super(\n apiService,\n searchService,\n i18nService,\n platformUtilsService,\n cryptoService,\n validationService,\n modalService,\n logService,\n searchPipe,\n userNamePipe,\n stateService\n );\n }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n const provider = await this.providerService.get(this.providerId);\n\n if (!provider.canManageUsers) {\n this.router.navigate([\"../\"], { relativeTo: this.route });\n return;\n }\n\n this.accessEvents = provider.useEvents;\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter((u) => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === ProviderUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n });\n });\n }\n\n getUsers(): Promise> {\n return this.apiService.getProviderUsers(this.providerId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteProviderUser(this.providerId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postProviderUserReinvite(this.providerId, id);\n }\n\n async confirmUser(user: ProviderUserUserDetailsResponse, publicKey: Uint8Array): Promise {\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n const key = await this.cryptoService.rsaEncrypt(providerKey.key, publicKey.buffer);\n const request = new ProviderUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postProviderUserConfirm(this.providerId, user.id, request);\n }\n\n async edit(user: ProviderUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.providerUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n }\n );\n }\n\n async events(user: ProviderUserUserDetailsResponse) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = \"user\";\n });\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRemoveComponent,\n this.bulkRemoveModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter((u) => u.status === ProviderUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"noSelectedUsersApplicable\")\n );\n return;\n }\n\n try {\n const request = new ProviderUserBulkRequest(filteredUsers.map((user) => user.id));\n const response = this.apiService.postManyProviderUserReinvite(this.providerId, request);\n this.showBulkStatus(\n users,\n filteredUsers,\n response,\n this.i18nService.t(\"bulkReinviteMessage\")\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkConfirmComponent,\n this.bulkConfirmModalRef,\n (comp) => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n private async showBulkStatus(\n users: ProviderUserUserDetailsResponse[],\n filteredUsers: ProviderUserUserDetailsResponse[],\n request: Promise>,\n successfullMessage: string\n ) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n BulkStatusComponent,\n this.bulkStatusModalRef,\n (comp) => {\n comp.loading = true;\n }\n );\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data\n .filter((r) => r.error !== \"\")\n .reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map((user) => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n // eslint-disable-next-line\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t(\"bulkFilteredMessage\");\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","
\n

{{ \"people\" | i18n }}

\n
\n
\n \n {{ \"all\" | i18n }}\n {{ allCount }}\n \n \n {{ \"invited\" | i18n }}\n {{ invitedCount }}\n \n \n {{ \"accepted\" | i18n }}\n {{\n acceptedCount\n }}\n \n
\n
\n \n \n
\n
\n \n \n \n
\n \n \n \n {{ \"confirmSelected\" | i18n }}\n \n \n
\n \n \n
\n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noUsersInList\" | i18n }}

\n \n \n {{ \"providerUsersNeedConfirmed\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ u.email }}\n {{\n \"invited\" | i18n\n }}\n {{\n \"accepted\" | i18n\n }}\n {{ u.name }}\n \n \n \n \n {{ \"userUsingTwoStep\" | i18n }}\n \n \n \n {{ \"providerAdmin\" | i18n }}\n {{ \"serviceUser\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"groups\" | i18n }}\n \n \n \n {{ \"eventLogs\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n \n \n \n \n
\n\n\n\n\n\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { PermissionsApi } from \"jslib-common/models/api/permissionsApi\";\nimport { ProviderUserInviteRequest } from \"jslib-common/models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"jslib-common/models/request/provider/providerUserUpdateRequest\";\n\n@Component({\n selector: \"provider-user-add-edit\",\n templateUrl: \"user-add-edit.component.html\",\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() providerUserId: string;\n @Input() providerId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n emails: string;\n type: ProviderUserType = ProviderUserType.ServiceUser;\n permissions = new PermissionsApi();\n showCustom = false;\n access: \"all\" | \"selected\" = \"selected\";\n formPromise: Promise;\n deletePromise: Promise;\n userType = ProviderUserType;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.providerUserId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editUser\");\n try {\n const user = await this.apiService.getProviderUser(this.providerId, this.providerUserId);\n this.type = user.type;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteUser\");\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new ProviderUserUpdateRequest();\n request.type = this.type;\n this.formPromise = this.apiService.putProviderUser(\n this.providerId,\n this.providerUserId,\n request\n );\n } else {\n const request = new ProviderUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.type = this.type;\n this.formPromise = this.apiService.postProviderUserInvite(this.providerId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeUserConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteProviderUser(this.providerId, this.providerUserId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.name)\n );\n this.onDeletedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"providerInviteUserDesc\" | i18n }}

\n
\n \n \n {{ \"inviteMultipleEmailDesc\" | i18n: \"20\" }}\n
\n
\n

\n {{ \"userType\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"providers-layout\",\n templateUrl: \"providers-layout.component.html\",\n})\nexport class ProvidersLayoutComponent {\n provider: Provider;\n private providerId: string;\n\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n await this.load();\n });\n }\n\n async load() {\n this.provider = await this.providerService.get(this.providerId);\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showSettingsTab;\n }\n\n get showManageTab() {\n return this.provider.canManageUsers || this.provider.canAccessEventLogs;\n }\n\n get showSettingsTab() {\n return this.provider.isProviderAdmin;\n }\n\n get manageRoute(): string {\n switch (true) {\n case this.provider.canManageUsers:\n return \"manage/people\";\n case this.provider.canAccessEventLogs:\n return \"manage/events\";\n }\n }\n}\n","\n
\n
\n
\n
\n \n
\n {{ provider.name }}\n {{ \"provider\" | i18n }}\n
\n
\n
\n \n {{ \"providerIsDisabled\" | i18n }}\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { FrontendLayoutComponent } from \"src/app/layouts/frontend-layout.component\";\nimport { ProvidersComponent } from \"src/app/providers/providers.component\";\n\nimport { ClientsComponent } from \"./clients/clients.component\";\nimport { CreateOrganizationComponent } from \"./clients/create-organization.component\";\nimport { PermissionsGuard } from \"./guards/provider-type.guard\";\nimport { ProviderGuard } from \"./guards/provider.guard\";\nimport { AcceptProviderComponent } from \"./manage/accept-provider.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { ProvidersLayoutComponent } from \"./providers-layout.component\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SetupProviderComponent } from \"./setup/setup-provider.component\";\nimport { SetupComponent } from \"./setup/setup.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n canActivate: [AuthGuard],\n component: ProvidersComponent,\n },\n {\n path: \"\",\n component: FrontendLayoutComponent,\n children: [\n {\n path: \"setup-provider\",\n component: SetupProviderComponent,\n data: { titleId: \"setupProvider\" },\n },\n {\n path: \"accept-provider\",\n component: AcceptProviderComponent,\n data: { titleId: \"acceptProvider\" },\n },\n ],\n },\n {\n path: \"\",\n canActivate: [AuthGuard],\n children: [\n {\n path: \"setup\",\n component: SetupComponent,\n },\n {\n path: \":providerId\",\n component: ProvidersLayoutComponent,\n canActivate: [ProviderGuard],\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"clients\" },\n { path: \"clients/create\", component: CreateOrganizationComponent },\n { path: \"clients\", component: ClientsComponent, data: { titleId: \"clients\" } },\n {\n path: \"manage\",\n component: ManageComponent,\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"people\",\n },\n {\n path: \"people\",\n component: PeopleComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"people\",\n permissions: [Permissions.ManageUsers],\n },\n },\n {\n path: \"events\",\n component: EventsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"eventLogs\",\n permissions: [Permissions.AccessEventLogs],\n },\n },\n ],\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"account\",\n },\n {\n path: \"account\",\n component: AccountComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"myProvider\",\n permissions: [Permissions.ManageProvider],\n },\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProvidersRoutingModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { ComponentFactoryResolver, NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\n\nimport { OssModule } from \"src/app/oss.module\";\n\nimport { AddOrganizationComponent } from \"./clients/add-organization.component\";\nimport { ClientsComponent } from \"./clients/clients.component\";\nimport { CreateOrganizationComponent } from \"./clients/create-organization.component\";\nimport { PermissionsGuard } from \"./guards/provider-type.guard\";\nimport { ProviderGuard } from \"./guards/provider.guard\";\nimport { AcceptProviderComponent } from \"./manage/accept-provider.component\";\nimport { BulkConfirmComponent } from \"./manage/bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./manage/bulk/bulk-remove.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { UserAddEditComponent } from \"./manage/user-add-edit.component\";\nimport { ProvidersLayoutComponent } from \"./providers-layout.component\";\nimport { ProvidersRoutingModule } from \"./providers-routing.module\";\nimport { WebProviderService } from \"./services/webProvider.service\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SetupProviderComponent } from \"./setup/setup-provider.component\";\nimport { SetupComponent } from \"./setup/setup.component\";\n\n@NgModule({\n imports: [CommonModule, FormsModule, OssModule, JslibModule, ProvidersRoutingModule],\n declarations: [\n AcceptProviderComponent,\n AccountComponent,\n AddOrganizationComponent,\n BulkConfirmComponent,\n BulkRemoveComponent,\n ClientsComponent,\n CreateOrganizationComponent,\n EventsComponent,\n ManageComponent,\n PeopleComponent,\n ProvidersLayoutComponent,\n SettingsComponent,\n SetupComponent,\n SetupProviderComponent,\n UserAddEditComponent,\n ],\n providers: [WebProviderService, ProviderGuard, PermissionsGuard],\n})\nexport class ProvidersModule {\n constructor(modalService: ModalService, componentFactoryResolver: ComponentFactoryResolver) {\n modalService.registerComponentFactoryResolver(\n AddOrganizationComponent,\n componentFactoryResolver\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderAddOrganizationRequest } from \"jslib-common/models/request/provider/providerAddOrganizationRequest\";\n\n@Injectable()\nexport class WebProviderService {\n constructor(\n private cryptoService: CryptoService,\n private syncService: SyncService,\n private apiService: ApiService\n ) {}\n\n async addOrganizationToProvider(providerId: string, organizationId: string) {\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const providerKey = await this.cryptoService.getProviderKey(providerId);\n\n const encryptedOrgKey = await this.cryptoService.encrypt(orgKey.key, providerKey);\n\n const request = new ProviderAddOrganizationRequest();\n request.organizationId = organizationId;\n request.key = encryptedOrgKey.encryptedString;\n\n const response = await this.apiService.postProviderAddOrganization(providerId, request);\n await this.syncService.fullSync(true);\n return response;\n }\n\n async detachOrganizastion(providerId: string, organizationId: string): Promise {\n await this.apiService.deleteProviderOrganization(providerId, organizationId);\n await this.syncService.fullSync(true);\n }\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderUpdateRequest } from \"jslib-common/models/request/provider/providerUpdateRequest\";\nimport { ProviderResponse } from \"jslib-common/models/response/provider/providerResponse\";\n\n@Component({\n selector: \"provider-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n selfHosted = false;\n loading = true;\n provider: ProviderResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private providerId: string;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async (params) => {\n this.providerId = params.providerId;\n try {\n this.provider = await this.apiService.getProvider(this.providerId);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new ProviderUpdateRequest();\n request.name = this.provider.name;\n request.businessName = this.provider.businessName;\n request.billingEmail = this.provider.billingEmail;\n\n this.formPromise = this.apiService.putProvider(this.providerId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"providerUpdated\"));\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n}\n","
\n

{{ \"myProvider\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\n\n@Component({\n selector: \"provider-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent {\n constructor(private route: ActivatedRoute, private providerService: ProviderService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n await this.providerService.get(params.providerId);\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"settings\" | i18n }}
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-setup-provider\",\n templateUrl: \"setup-provider.component.html\",\n})\nexport class SetupProviderComponent extends BaseAcceptComponent {\n failedShortMessage = \"inviteAcceptFailedShort\";\n failedMessage = \"inviteAcceptFailed\";\n\n requiredParameters = [\"providerId\", \"email\", \"token\"];\n\n async authedHandler(qParams: any) {\n this.router.navigate([\"/providers/setup\"], { queryParams: qParams });\n }\n\n async unauthedHandler(qParams: any) {\n // Empty\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"setupProvider\" | i18n }}

\n
\n
\n

{{ \"setupProviderLoginDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { ProviderSetupRequest } from \"jslib-common/models/request/provider/providerSetupRequest\";\n\n@Component({\n selector: \"provider-setup\",\n templateUrl: \"setup.component.html\",\n})\nexport class SetupComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n formPromise: Promise;\n\n providerId: string;\n token: string;\n name: string;\n billingEmail: string;\n\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private syncService: SyncService,\n private validationService: ValidationService\n ) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const error = qParams.providerId == null || qParams.email == null || qParams.token == null;\n\n if (error) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"emergencyInviteAcceptFailed\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/\"]);\n return;\n }\n\n this.providerId = qParams.providerId;\n this.token = qParams.token;\n\n // Check if provider exists, redirect if it does\n try {\n const provider = await this.apiService.getProvider(this.providerId);\n if (provider.name != null) {\n this.router.navigate([\"/providers\", provider.id], { replaceUrl: true });\n }\n } catch (e) {\n this.validationService.showError(e);\n this.router.navigate([\"/\"]);\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit();\n await this.formPromise;\n this.formPromise = null;\n }\n\n async doSubmit() {\n try {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n\n const request = new ProviderSetupRequest();\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.token = this.token;\n request.key = key;\n\n const provider = await this.apiService.postProviderSetup(this.providerId, request);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"providerSetup\"));\n await this.syncService.fullSync(true);\n\n this.router.navigate([\"/providers\", provider.id]);\n } catch (e) {\n this.validationService.showError(e);\n }\n }\n}\n","\n
\n
\n

{{ \"setupProvider\" | i18n }}

\n
\n

{{ \"setupProviderDesc\" | i18n }}

\n\n
\n

{{ \"generalInformation\" | i18n }}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n \n \n
\n
\n
\n\n","import { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\nimport { Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\n\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { FieldType } from \"jslib-common/enums/fieldType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { FieldView } from \"jslib-common/models/view/fieldView\";\n\n@Directive()\nexport class AddEditCustomFieldsComponent implements OnChanges {\n @Input() cipher: CipherView;\n @Input() thisCipherType: CipherType;\n @Input() editMode: boolean;\n\n addFieldType: FieldType = FieldType.Text;\n addFieldTypeOptions: any[];\n addFieldLinkedTypeOption: any;\n linkedFieldOptions: any[] = [];\n\n cipherType = CipherType;\n fieldType = FieldType;\n eventType = EventType;\n\n constructor(private i18nService: I18nService, private eventService: EventService) {\n this.addFieldTypeOptions = [\n { name: i18nService.t(\"cfTypeText\"), value: FieldType.Text },\n { name: i18nService.t(\"cfTypeHidden\"), value: FieldType.Hidden },\n { name: i18nService.t(\"cfTypeBoolean\"), value: FieldType.Boolean },\n ];\n this.addFieldLinkedTypeOption = {\n name: this.i18nService.t(\"cfTypeLinked\"),\n value: FieldType.Linked,\n };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.thisCipherType != null) {\n this.setLinkedFieldOptions();\n\n if (!changes.thisCipherType.firstChange) {\n this.resetCipherLinkedFields();\n }\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n\n if (f.type === FieldType.Linked) {\n f.linkedId = this.linkedFieldOptions[0].value;\n }\n\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = field as any;\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipher.id);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n private setLinkedFieldOptions() {\n if (this.cipher.linkedFieldOptions == null) {\n return;\n }\n\n const options: any = [];\n this.cipher.linkedFieldOptions.forEach((linkedFieldOption, id) =>\n options.push({ name: this.i18nService.t(linkedFieldOption.i18nKey), value: id })\n );\n this.linkedFieldOptions = options.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n private resetCipherLinkedFields() {\n if (this.cipher.fields == null || this.cipher.fields.length === 0) {\n return;\n }\n\n // Delete any Linked custom fields if the item type does not support them\n if (this.cipher.linkedFieldOptions == null) {\n this.cipher.fields = this.cipher.fields.filter((f) => f.type !== FieldType.Linked);\n return;\n }\n\n this.cipher.fields\n .filter((f) => f.type === FieldType.Linked)\n .forEach((f) => (f.linkedId = this.linkedFieldOptions[0].value));\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SecureNoteType } from \"jslib-common/enums/secureNoteType\";\nimport { UriMatchType } from \"jslib-common/enums/uriMatchType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CardView } from \"jslib-common/models/view/cardView\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\nimport { IdentityView } from \"jslib-common/models/view/identityView\";\nimport { LoginUriView } from \"jslib-common/models/view/loginUriView\";\nimport { LoginView } from \"jslib-common/models/view/loginView\";\nimport { SecureNoteView } from \"jslib-common/models/view/secureNoteView\";\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n @Output() onGenerateUsername = new EventEmitter();\n\n editMode = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword = false;\n showCardNumber = false;\n showCardCode = false;\n cipherType = CipherType;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n autofillOnPageLoadOptions: any[];\n currentDate = new Date();\n allowPersonal = true;\n reprompt = false;\n canUseReprompt = true;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(\n protected cipherService: CipherService,\n protected folderService: FolderService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService,\n protected stateService: StateService,\n protected collectionService: CollectionService,\n protected messagingService: MessagingService,\n protected eventService: EventService,\n protected policyService: PolicyService,\n private logService: LogService,\n protected passwordRepromptService: PasswordRepromptService,\n private organizationService: OrganizationService\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"typeLogin\"), value: CipherType.Login },\n { name: i18nService.t(\"typeCard\"), value: CipherType.Card },\n { name: i18nService.t(\"typeIdentity\"), value: CipherType.Identity },\n { name: i18nService.t(\"typeSecureNote\"), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: \"Visa\", value: \"Visa\" },\n { name: \"Mastercard\", value: \"Mastercard\" },\n { name: \"American Express\", value: \"Amex\" },\n { name: \"Discover\", value: \"Discover\" },\n { name: \"Diners Club\", value: \"Diners Club\" },\n { name: \"JCB\", value: \"JCB\" },\n { name: \"Maestro\", value: \"Maestro\" },\n { name: \"UnionPay\", value: \"UnionPay\" },\n { name: i18nService.t(\"other\"), value: \"Other\" },\n ];\n this.cardExpMonthOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: \"01 - \" + i18nService.t(\"january\"), value: \"1\" },\n { name: \"02 - \" + i18nService.t(\"february\"), value: \"2\" },\n { name: \"03 - \" + i18nService.t(\"march\"), value: \"3\" },\n { name: \"04 - \" + i18nService.t(\"april\"), value: \"4\" },\n { name: \"05 - \" + i18nService.t(\"may\"), value: \"5\" },\n { name: \"06 - \" + i18nService.t(\"june\"), value: \"6\" },\n { name: \"07 - \" + i18nService.t(\"july\"), value: \"7\" },\n { name: \"08 - \" + i18nService.t(\"august\"), value: \"8\" },\n { name: \"09 - \" + i18nService.t(\"september\"), value: \"9\" },\n { name: \"10 - \" + i18nService.t(\"october\"), value: \"10\" },\n { name: \"11 - \" + i18nService.t(\"november\"), value: \"11\" },\n { name: \"12 - \" + i18nService.t(\"december\"), value: \"12\" },\n ];\n this.identityTitleOptions = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: i18nService.t(\"mr\"), value: i18nService.t(\"mr\") },\n { name: i18nService.t(\"mrs\"), value: i18nService.t(\"mrs\") },\n { name: i18nService.t(\"ms\"), value: i18nService.t(\"ms\") },\n { name: i18nService.t(\"dr\"), value: i18nService.t(\"dr\") },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t(\"defaultMatchDetection\"), value: null },\n { name: i18nService.t(\"baseDomain\"), value: UriMatchType.Domain },\n { name: i18nService.t(\"host\"), value: UriMatchType.Host },\n { name: i18nService.t(\"startsWith\"), value: UriMatchType.StartsWith },\n { name: i18nService.t(\"regEx\"), value: UriMatchType.RegularExpression },\n { name: i18nService.t(\"exact\"), value: UriMatchType.Exact },\n { name: i18nService.t(\"never\"), value: UriMatchType.Never },\n ];\n this.autofillOnPageLoadOptions = [\n { name: i18nService.t(\"autoFillOnPageLoadUseDefault\"), value: null },\n { name: i18nService.t(\"autoFillOnPageLoadYes\"), value: true },\n { name: i18nService.t(\"autoFillOnPageLoadNo\"), value: false },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n if (this.ownershipOptions.length) {\n this.ownershipOptions = [];\n }\n if (await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)) {\n this.allowPersonal = false;\n } else {\n const myEmail = await this.stateService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n }\n\n const orgs = await this.organizationService.getAll();\n orgs.sort(Utils.getSortFunction(this.i18nService, \"name\")).forEach((o) => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n }\n });\n if (!this.allowPersonal) {\n this.organizationId = this.ownershipOptions[0].value;\n }\n\n this.writeableCollections = await this.loadCollections();\n\n this.canUseReprompt = await this.passwordRepromptService.enabled();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t(\"addItem\");\n } else {\n this.title = this.i18nService.t(\"editItem\");\n }\n } else {\n this.title = this.i18nService.t(\"addItem\");\n }\n\n const addEditCipherInfo: any = await this.stateService.getAddEditCipherInfo();\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.setAddEditCipherInfo(null);\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += \" - \" + this.i18nService.t(\"clone\");\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (\n this.collectionIds != null &&\n this.collectionIds.length > 0 &&\n this.collections.length > 0\n ) {\n this.collections.forEach((c) => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n this.reprompt = this.cipher.reprompt !== CipherRepromptType.None;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n if (\n (!this.editMode || this.cloneMode) &&\n !this.allowPersonal &&\n this.cipher.organizationId == null\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"personalOwnershipSubmitError\")\n );\n return false;\n }\n\n if (\n (!this.editMode || this.cloneMode) &&\n this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null &&\n this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === \"\")\n ) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds =\n this.collections == null\n ? []\n : this.collections.filter((c) => (c as any).checked).map((c) => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode && !this.cloneMode ? \"editedItem\" : \"addedItem\")\n );\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? \"editedCipher\" : \"addedCipher\");\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\n this.cipher.isDeleted ? \"permanentlyDeleteItemConfirmation\" : \"deleteItemConfirmation\"\n ),\n this.i18nService.t(\"deleteItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.cipher.isDeleted ? \"permanentlyDeletedItem\" : \"deletedItem\")\n );\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(\n this.cipher.isDeleted ? \"permanentlyDeletedCipher\" : \"deletedCipher\"\n );\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"restoreItemConfirmation\"),\n this.i18nService.t(\"restoreItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItem\"));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send(\"restoredCipher\");\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async generateUsername(): Promise {\n if (this.cipher.login?.username?.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"overwriteUsernameConfirmation\"),\n this.i18nService.t(\"overwriteUsername\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\")\n );\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGenerateUsername.emit();\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login?.password?.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"overwritePasswordConfirmation\"),\n this.i18nService.t(\"overwritePassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\")\n );\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"loginPassword\").focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n async toggleCardNumber() {\n this.showCardNumber = !this.showCardNumber;\n if (this.showCardNumber) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.showCardCode = !this.showCardCode;\n document.getElementById(\"cardCode\").focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = uri as any;\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = uri as any;\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach((c) => ((c as any).checked = false));\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.cipher.organizationId\n );\n const org = await this.organizationService.get(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (\n this.cipher.login == null ||\n this.cipher.login.password == null ||\n this.cipher.login.password === \"\"\n ) {\n return;\n }\n\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast(\n \"warning\",\n null,\n this.i18nService.t(\"passwordExposed\", matches.toString())\n );\n } else {\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"passwordSafe\"));\n }\n }\n\n repromptChanged() {\n this.reprompt = !this.reprompt;\n if (this.reprompt) {\n this.cipher.reprompt = CipherRepromptType.Password;\n } else {\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter((c) => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted\n ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise } = {};\n reuploadPromises: { [id: string]: Promise } = {};\n emergencyAccessId?: string = null;\n\n constructor(\n protected cipherService: CipherService,\n protected i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService,\n protected apiService: ApiService,\n protected win: Window,\n protected logService: LogService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"updateKey\")\n );\n return;\n }\n\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n if (files[0].size > 524288000) {\n // 500 MB\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"maxFileSize\")\n );\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"attachmentSaved\"));\n this.onUploadedAttachment.emit();\n } catch (e) {\n this.logService.error(e);\n }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = \"\";\n fileEl.type = \"file\";\n fileEl.value = \"\";\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteAttachmentConfirmation\"),\n this.i18nService.t(\"deleteAttachment\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedAttachment\"));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = attachment as any;\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"premiumRequiredDesc\")\n );\n return;\n }\n\n let url: string;\n try {\n const attachmentDownloadResponse = await this.apiService.getAttachmentData(\n this.cipher.id,\n attachment.id,\n this.emergencyAccessId\n );\n url = attachmentDownloadResponse.url;\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n url = attachment.url;\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n a.downloading = true;\n const response = await fetch(new Request(url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key =\n attachment.key != null\n ? attachment.key\n : await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"premiumRequiredDesc\"),\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.platformUtilsService.launchUri(\"https://vault.bitwarden.com/#/?premium=purchase\");\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"updateKey\"),\n this.i18nService.t(\"featureUnavailable\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n if (confirmed) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key\"\n );\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = attachment as any;\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key =\n attachment.key != null\n ? attachment.key\n : await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain,\n attachment.fileName,\n decBuf,\n admin\n );\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter((a2) => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"attachmentSaved\")\n );\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { Component, Input, OnChanges, OnInit } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-avatar\",\n template:\n '\",\n})\nexport class AvatarComponent implements OnChanges, OnInit {\n @Input() data: string;\n @Input() email: string;\n @Input() size = 45;\n @Input() charCount = 2;\n @Input() textColor = \"#ffffff\";\n @Input() fontSize = 20;\n @Input() fontWeight = 300;\n @Input() dynamic = false;\n @Input() circle = false;\n\n src: string;\n\n constructor(\n public sanitizer: DomSanitizer,\n private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService\n ) {}\n\n ngOnInit() {\n if (!this.dynamic) {\n this.generate();\n }\n }\n\n ngOnChanges() {\n if (this.dynamic) {\n this.generate();\n }\n }\n\n private async generate() {\n const enableGravatars = await this.stateService.getEnableGravitars();\n if (enableGravatars && this.email != null) {\n const hashBytes = await this.cryptoFunctionService.hash(\n this.email.toLowerCase().trim(),\n \"md5\"\n );\n const hash = Utils.fromBufferToHex(hashBytes).toLowerCase();\n this.src = \"https://www.gravatar.com/avatar/\" + hash + \"?s=\" + this.size + \"&r=pg&d=retro\";\n } else {\n let chars: string = null;\n const upperData = this.data.toUpperCase();\n\n if (this.charCount > 1) {\n chars = this.getFirstLetters(upperData, this.charCount);\n }\n if (chars == null) {\n chars = this.unicodeSafeSubstring(upperData, this.charCount);\n }\n\n // If the chars contain an emoji, only show it.\n if (chars.match(Utils.regexpEmojiPresentation)) {\n chars = chars.match(Utils.regexpEmojiPresentation)[0];\n }\n\n const charObj = this.getCharText(chars);\n const color = this.stringToColor(upperData);\n const svg = this.getSvg(this.size, color);\n svg.appendChild(charObj);\n const html = window.document.createElement(\"div\").appendChild(svg).outerHTML;\n const svgHtml = window.btoa(unescape(encodeURIComponent(html)));\n this.src = \"data:image/svg+xml;base64,\" + svgHtml;\n }\n }\n\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = \"#\";\n for (let i = 0; i < 3; i++) {\n const value = (hash >> (i * 8)) & 0xff;\n color += (\"00\" + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n private getFirstLetters(data: string, count: number): string {\n const parts = data.split(\" \");\n if (parts.length > 1) {\n let text = \"\";\n for (let i = 0; i < count; i++) {\n text += this.unicodeSafeSubstring(parts[i], 1);\n }\n return text;\n }\n return null;\n }\n\n private getSvg(size: number, color: string): HTMLElement {\n const svgTag = window.document.createElement(\"svg\");\n svgTag.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\n svgTag.setAttribute(\"pointer-events\", \"none\");\n svgTag.setAttribute(\"width\", size.toString());\n svgTag.setAttribute(\"height\", size.toString());\n svgTag.style.backgroundColor = color;\n svgTag.style.width = size + \"px\";\n svgTag.style.height = size + \"px\";\n return svgTag;\n }\n\n private getCharText(character: string): HTMLElement {\n const textTag = window.document.createElement(\"text\");\n textTag.setAttribute(\"text-anchor\", \"middle\");\n textTag.setAttribute(\"y\", \"50%\");\n textTag.setAttribute(\"x\", \"50%\");\n textTag.setAttribute(\"dy\", \"0.35em\");\n textTag.setAttribute(\"pointer-events\", \"auto\");\n textTag.setAttribute(\"fill\", this.textColor);\n textTag.setAttribute(\n \"font-family\",\n '\"Open Sans\",\"Helvetica Neue\",Helvetica,Arial,' +\n 'sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"'\n );\n textTag.textContent = character;\n textTag.style.fontWeight = this.fontWeight.toString();\n textTag.style.fontSize = this.fontSize + \"px\";\n return textTag;\n }\n\n private unicodeSafeSubstring(str: string, count: number) {\n const characters = str.match(/./gu);\n return characters != null ? characters.slice(0, count).join(\"\") : \"\";\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\n\n@Component({\n selector: \"app-callout\",\n templateUrl: \"callout.component.html\",\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = \"info\";\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions;\n @Input() enforcedPolicyMessage: string;\n @Input() useAlertRole = false;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.enforcedPolicyMessage === undefined) {\n this.enforcedPolicyMessage = this.i18nService.t(\"masterPasswordPolicyInEffect\");\n }\n\n if (this.type === \"warning\" || this.type === \"danger\") {\n if (this.type === \"danger\") {\n this.calloutStyle = \"danger\";\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"warning\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-exclamation-triangle\";\n }\n } else if (this.type === \"error\") {\n this.calloutStyle = \"danger\";\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"error\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-error\";\n }\n } else if (this.type === \"tip\") {\n this.calloutStyle = \"success\";\n if (this.title === undefined) {\n this.title = this.i18nService.t(\"tip\");\n }\n if (this.icon === undefined) {\n this.icon = \"bwi-lightbulb\";\n }\n }\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return \"\";\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t(\"strong\");\n break;\n case 3:\n str = this.i18nService.t(\"good\");\n break;\n default:\n str = this.i18nService.t(\"weak\");\n break;\n }\n return str + \" (\" + this.enforcedPolicyOptions.minComplexity + \")\";\n }\n}\n","\n

\n \n {{ title }}\n

\n
\n {{ enforcedPolicyMessage }}\n
    \n
  • 0\">\n {{ \"policyInEffectMinComplexity\" | i18n: getPasswordScoreAlertDisplay() }}\n
  • \n
  • 0\">\n {{ \"policyInEffectMinLength\" | i18n: enforcedPolicyOptions?.minLength.toString() }}\n
  • \n
  • \n {{ \"policyInEffectUppercase\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectLowercase\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectNumbers\" | i18n }}\n
  • \n
  • \n {{ \"policyInEffectSpecial\" | i18n: \"!@#$%^&*\" }}\n
  • \n
\n
\n \n\n","import { Directive, Input } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CaptchaIFrame } from \"jslib-common/misc/captcha_iframe\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Directive()\nexport abstract class CaptchaProtectedComponent {\n @Input() captchaSiteKey: string = null;\n captchaToken: string = null;\n captcha: CaptchaIFrame;\n\n constructor(\n protected environmentService: EnvironmentService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService\n ) {}\n\n async setupCaptcha() {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n\n this.captcha = new CaptchaIFrame(\n window,\n webVaultUrl,\n this.i18nService,\n (token: string) => {\n this.captchaToken = token;\n },\n (error: string) => {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), error);\n },\n (info: string) => {\n this.platformUtilsService.showToast(\"info\", this.i18nService.t(\"info\"), info);\n }\n );\n }\n\n showCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n protected handleCaptchaRequired(response: { captchaSiteKey: string }): boolean {\n if (Utils.isNullOrWhitespace(response.captchaSiteKey)) {\n return false;\n }\n\n this.captchaSiteKey = response.captchaSiteKey;\n this.captcha.init(response.captchaSiteKey);\n return true;\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { KdfType } from \"jslib-common/enums/kdfType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\n\n@Directive()\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(\n protected i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected messagingService: MessagingService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected policyService: PolicyService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.email = await this.stateService.getEmail();\n this.enforcedPolicyOptions ??= await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n async submit() {\n if (!(await this.strongPassword())) {\n return;\n }\n\n if (!(await this.setupSubmitActions())) {\n return;\n }\n\n const email = await this.stateService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.stateService.getKdfType();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.stateService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n email.trim().toLowerCase(),\n this.kdf,\n this.kdfIterations\n );\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, EncString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassDoesntMatch\")\n );\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"logOutConfirmation\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.messagingService.send(\"logout\");\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n return userInput;\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded = false;\n ciphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted = false;\n\n protected searchPending = false;\n\n private searchTimeout: any = null;\n\n constructor(protected searchService: SearchService) {}\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.loaded = false;\n await this.load(filter, deleted);\n }\n\n async refresh() {\n await this.reload(this.filter, this.deleted);\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null, indexedCiphers?: CipherView[]) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n await this.doSearch(indexedCiphers);\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n await this.doSearch(indexedCiphers);\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n protected deletedFilter: (cipher: CipherView) => boolean = (c) => c.isDeleted === this.deleted;\n\n protected async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(\n this.searchText,\n [this.filter, this.deletedFilter],\n indexedCiphers\n );\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(\n protected collectionService: CollectionService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected cipherService: CipherService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach((c) => ((c as any).checked = false));\n if (this.collectionIds != null) {\n this.collections.forEach((c) => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectOneCollection\")\n );\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"editedItem\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(\n (c) => !c.readOnly && c.organizationId === this.cipher.organizationId\n );\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-export-scope-callout\",\n templateUrl: \"export-scope-callout.component.html\",\n})\nexport class ExportScopeCalloutComponent implements OnInit {\n @Input() organizationId: string = null;\n\n show = false;\n scopeConfig: {\n title: string;\n description: string;\n scopeIdentifier: string;\n };\n\n constructor(\n protected organizationService: OrganizationService,\n protected stateService: StateService\n ) {}\n\n async ngOnInit(): Promise {\n if (!(await this.organizationService.hasOrganizations())) {\n return;\n }\n this.scopeConfig =\n this.organizationId != null\n ? {\n title: \"exportingOrganizationVaultTitle\",\n description: \"exportingOrganizationVaultDescription\",\n scopeIdentifier: (await this.organizationService.get(this.organizationId)).name,\n }\n : {\n title: \"exportingPersonalVaultTitle\",\n description: \"exportingPersonalVaultDescription\",\n scopeIdentifier: await this.stateService.getEmail(),\n };\n this.show = true;\n }\n}\n","\n \n {{ scopeConfig.description | i18n: scopeConfig.scopeIdentifier }}\n \n\n","import { Directive, EventEmitter, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\n@Directive()\nexport class ExportComponent implements OnInit {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n disabledByPolicy = false;\n\n exportForm = this.formBuilder.group({\n format: [\"json\"],\n secret: [\"\"],\n });\n\n formatOptions = [\n { name: \".json\", value: \"json\" },\n { name: \".csv\", value: \"csv\" },\n { name: \".json (Encrypted)\", value: \"encrypted_json\" },\n ];\n\n constructor(\n protected cryptoService: CryptoService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected exportService: ExportService,\n protected eventService: EventService,\n private policyService: PolicyService,\n protected win: Window,\n private logService: LogService,\n private userVerificationService: UserVerificationService,\n private formBuilder: FormBuilder\n ) {}\n\n async ngOnInit() {\n await this.checkExportDisabled();\n }\n\n async checkExportDisabled() {\n this.disabledByPolicy = await this.policyService.policyAppliesToUser(\n PolicyType.DisablePersonalVaultExport\n );\n if (this.disabledByPolicy) {\n this.exportForm.disable();\n }\n }\n\n get encryptedFormat() {\n return this.format === \"encrypted_json\";\n }\n\n async submit() {\n if (this.disabledByPolicy) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"personalVaultExportPolicyInEffect\")\n );\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const secret = this.exportForm.get(\"secret\").value;\n try {\n await this.userVerificationService.verifyUser(secret);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n return;\n }\n\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n this.exportForm.get(\"secret\").setValue(\"\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n \"

\" +\n this.i18nService.t(\"encExportKeyWarningDesc\") +\n \"

\" +\n this.i18nService.t(\"encExportAccountWarningDesc\"),\n this.i18nService.t(\"confirmVaultExport\"),\n this.i18nService.t(\"exportVault\"),\n this.i18nService.t(\"cancel\"),\n \"warning\",\n true\n );\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t(\"exportWarningDesc\"),\n this.i18nService.t(\"confirmVaultExport\"),\n this.i18nService.t(\"exportVault\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n }\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === \"encrypted_json\") {\n if (prefix == null) {\n prefix = \"encrypted\";\n } else {\n prefix = \"encrypted_\" + prefix;\n }\n extension = \"json\";\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n get format() {\n return this.exportForm.get(\"format\").value;\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: \"text/plain\" }, fileName);\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(\n protected folderService: FolderService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedFolder\" : \"addedFolder\")\n );\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteFolderConfirmation\"),\n this.i18nService.t(\"deleteFolder\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedFolder\"));\n this.onDeletedFolder.emit(this.folder);\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editFolder\");\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t(\"addFolder\");\n }\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UsernameGenerationService } from \"jslib-common/abstractions/usernameGeneration.service\";\nimport { PasswordGeneratorPolicyOptions } from \"jslib-common/models/domain/passwordGeneratorPolicyOptions\";\n\n@Directive()\nexport class GeneratorComponent implements OnInit {\n @Input() comingFromAddEdit = false;\n @Input() type: string;\n @Output() onSelected = new EventEmitter();\n\n usernameGeneratingPromise: Promise;\n typeOptions: any[];\n passTypeOptions: any[];\n usernameTypeOptions: any[];\n subaddressOptions: any[];\n catchallOptions: any[];\n forwardOptions: any[];\n usernameOptions: any = {};\n passwordOptions: any = {};\n username = \"-\";\n password = \"-\";\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPasswordPolicyOptions: PasswordGeneratorPolicyOptions;\n usernameWebsite: string = null;\n\n constructor(\n protected passwordGenerationService: PasswordGenerationService,\n protected usernameGenerationService: UsernameGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected stateService: StateService,\n protected i18nService: I18nService,\n protected logService: LogService,\n protected route: ActivatedRoute,\n private win: Window\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"username\"), value: \"username\" },\n ];\n this.passTypeOptions = [\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"passphrase\"), value: \"passphrase\" },\n ];\n this.usernameTypeOptions = [\n {\n name: i18nService.t(\"plusAddressedEmail\"),\n value: \"subaddress\",\n desc: i18nService.t(\"plusAddressedEmailDesc\"),\n },\n {\n name: i18nService.t(\"catchallEmail\"),\n value: \"catchall\",\n desc: i18nService.t(\"catchallEmailDesc\"),\n },\n {\n name: i18nService.t(\"forwardedEmail\"),\n value: \"forwarded\",\n desc: i18nService.t(\"forwardedEmailDesc\"),\n },\n { name: i18nService.t(\"randomWord\"), value: \"word\" },\n ];\n this.subaddressOptions = [{ name: i18nService.t(\"random\"), value: \"random\" }];\n this.catchallOptions = [{ name: i18nService.t(\"random\"), value: \"random\" }];\n this.forwardOptions = [\n { name: \"SimpleLogin\", value: \"simplelogin\" },\n { name: \"AnonAddy\", value: \"anonaddy\" },\n { name: \"Firefox Relay\", value: \"firefoxrelay\" },\n // { name: \"FastMail\", value: \"fastmail\" },\n ];\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const passwordOptionsResponse = await this.passwordGenerationService.getOptions();\n this.passwordOptions = passwordOptionsResponse[0];\n this.enforcedPasswordPolicyOptions = passwordOptionsResponse[1];\n this.avoidAmbiguous = !this.passwordOptions.ambiguous;\n this.passwordOptions.type =\n this.passwordOptions.type === \"passphrase\" ? \"passphrase\" : \"password\";\n\n this.usernameOptions = await this.usernameGenerationService.getOptions();\n if (this.usernameOptions.type == null) {\n this.usernameOptions.type = \"word\";\n }\n if (\n this.usernameOptions.subaddressEmail == null ||\n this.usernameOptions.subaddressEmail === \"\"\n ) {\n this.usernameOptions.subaddressEmail = await this.stateService.getEmail();\n }\n if (this.usernameWebsite == null) {\n this.usernameOptions.subaddressType = this.usernameOptions.catchallType = \"random\";\n } else {\n this.usernameOptions.website = this.usernameWebsite;\n const websiteOption = { name: this.i18nService.t(\"websiteName\"), value: \"website-name\" };\n this.subaddressOptions.push(websiteOption);\n this.catchallOptions.push(websiteOption);\n }\n\n if (this.type !== \"username\" && this.type !== \"password\") {\n if (qParams.type === \"username\" || qParams.type === \"password\") {\n this.type = qParams.type;\n } else {\n const generatorOptions = await this.stateService.getGeneratorOptions();\n this.type = generatorOptions?.type ?? \"password\";\n }\n }\n if (this.regenerateWithoutButtonPress()) {\n await this.regenerate();\n }\n });\n }\n\n async typeChanged() {\n await this.stateService.setGeneratorOptions({ type: this.type });\n if (this.regenerateWithoutButtonPress()) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n if (this.type === \"password\") {\n await this.regeneratePassword();\n } else if (this.type === \"username\") {\n await this.regenerateUsername();\n }\n }\n\n async sliderChanged() {\n this.savePasswordOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderInput() {\n this.normalizePasswordOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.passwordOptions);\n }\n\n async savePasswordOptions(regenerate = true) {\n this.normalizePasswordOptions();\n await this.passwordGenerationService.saveOptions(this.passwordOptions);\n\n if (regenerate && this.regenerateWithoutButtonPress()) {\n await this.regeneratePassword();\n }\n }\n\n async saveUsernameOptions(regenerate = true) {\n await this.usernameGenerationService.saveOptions(this.usernameOptions);\n if (this.usernameOptions.type === \"forwarded\") {\n this.username = \"-\";\n }\n if (regenerate && this.regenerateWithoutButtonPress()) {\n await this.regenerateUsername();\n }\n }\n\n async regeneratePassword() {\n this.password = await this.passwordGenerationService.generatePassword(this.passwordOptions);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n regenerateUsername() {\n return this.generateUsername();\n }\n\n async generateUsername() {\n try {\n this.usernameGeneratingPromise = this.usernameGenerationService.generateUsername(\n this.usernameOptions\n );\n this.username = await this.usernameGeneratingPromise;\n if (this.username === \"\" || this.username === null) {\n this.username = \"-\";\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n copy() {\n const password = this.type === \"password\";\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(\n password ? this.password : this.username,\n copyOptions\n );\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(password ? \"password\" : \"username\"))\n );\n }\n\n select() {\n this.onSelected.emit(this.type === \"password\" ? this.password : this.username);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n regenerateWithoutButtonPress() {\n return this.type !== \"username\" || this.usernameOptions.type !== \"forwarded\";\n }\n\n private normalizePasswordOptions() {\n // Application level normalize options depedent on class variables\n this.passwordOptions.ambiguous = !this.avoidAmbiguous;\n\n if (\n !this.passwordOptions.uppercase &&\n !this.passwordOptions.lowercase &&\n !this.passwordOptions.number &&\n !this.passwordOptions.special\n ) {\n this.passwordOptions.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector(\"#lowercase\") as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(\n this.passwordOptions,\n this.enforcedPasswordPolicyOptions\n );\n }\n}\n","import { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PasswordHintRequest } from \"jslib-common/models/request/passwordHintRequest\";\n\nexport class HintComponent {\n email = \"\";\n formPromise: Promise;\n\n protected successRoute = \"login\";\n protected onSuccessfulSubmit: () => void;\n\n constructor(\n protected router: Router,\n protected i18nService: I18nService,\n protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"masterPassSent\"));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { Component, Input, OnChanges } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\n/**\n * Provides a mapping from supported card brands to\n * the filenames of icon that should be present in images/cards folder of clients.\n */\nconst cardIcons: Record = {\n Visa: \"card-visa\",\n Mastercard: \"card-mastercard\",\n Amex: \"card-amex\",\n Discover: \"card-discover\",\n \"Diners Club\": \"card-diners-club\",\n JCB: \"card-jcb\",\n Maestro: \"card-maestro\",\n UnionPay: \"card-union-pay\",\n};\n\n@Component({\n selector: \"app-vault-icon\",\n templateUrl: \"icon.component.html\",\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, private stateService: StateService) {\n this.iconsUrl = environmentService.getIconsUrl();\n }\n\n async ngOnChanges() {\n // Components may be re-used when using cdk-virtual-scroll. Which puts the component in a weird state,\n // to avoid this we reset all state variables.\n this.image = null;\n this.fallbackImage = null;\n this.imageEnabled = !(await this.stateService.getDisableFavicon());\n this.load();\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = \"bwi-globe\";\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = \"bwi-sticky-note\";\n break;\n case CipherType.Card:\n this.icon = \"bwi-credit-card\";\n this.setCardIcon();\n break;\n case CipherType.Identity:\n this.icon = \"bwi-id-card\";\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf(\"androidapp://\") === 0) {\n this.icon = \"bwi-android\";\n this.image = null;\n } else if (hostnameUri.indexOf(\"iosapp://\") === 0) {\n this.icon = \"bwi-apple\";\n this.image = null;\n } else if (\n this.imageEnabled &&\n hostnameUri.indexOf(\"://\") === -1 &&\n hostnameUri.indexOf(\".\") > -1\n ) {\n hostnameUri = \"http://\" + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf(\"http\") === 0 && hostnameUri.indexOf(\".\") > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + \"/\" + Utils.getHostname(hostnameUri) + \"/icon.png\";\n this.fallbackImage = \"images/bwi-globe.png\";\n } catch (e) {\n // Ignore error since the fallback icon will be shown if image is null.\n }\n }\n } else {\n this.image = null;\n }\n }\n\n private setCardIcon() {\n const brand = this.cipher.card.brand;\n if (this.imageEnabled && brand in cardIcons) {\n this.icon = \"credit-card-icon \" + cardIcons[brand];\n }\n }\n}\n","

\n \n \n
\n","import { Directive, NgZone, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { HashPurpose } from \"jslib-common/enums/hashPurpose\";\nimport { KeySuffixOptions } from \"jslib-common/enums/keySuffixOptions\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\n\n@Directive()\nexport class LockComponent implements OnInit {\n masterPassword = \"\";\n pin = \"\";\n showPassword = false;\n email: string;\n pinLock = false;\n webVaultHostname = \"\";\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n hideInput: boolean;\n\n protected successRoute = \"vault\";\n protected onSuccessfulSubmit: () => Promise;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(\n protected router: Router,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected cryptoService: CryptoService,\n protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected apiService: ApiService,\n protected logService: LogService,\n private keyConnectorService: KeyConnectorService,\n protected ngZone: NgZone\n ) {}\n\n async ngOnInit() {\n // Load the first and observe updates\n await this.load();\n this.stateService.activeAccount.subscribe(async () => {\n await this.load();\n });\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === \"\")) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"pinRequired\")\n );\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === \"\")) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n const kdf = await this.stateService.getKdfType();\n const kdfIterations = await this.stateService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(\n this.pin,\n this.email,\n kdf,\n kdfIterations,\n await this.stateService.getDecryptedPinProtected()\n );\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.stateService.getProtectedPin();\n const decPin = await this.cryptoService.decryptToUtf8(\n new EncString(protectedPin),\n encKey\n );\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(\n this.pin,\n this.email,\n kdf,\n kdfIterations\n );\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send(\"logout\");\n return;\n }\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidPin\")\n );\n }\n } else {\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n kdf,\n kdfIterations\n );\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n let passwordValid = false;\n\n if (storedKeyHash != null) {\n passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, key);\n } else {\n const request = new SecretVerificationRequest();\n const serverKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.ServerAuthorization\n );\n request.masterPasswordHash = serverKeyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n const localKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n await this.cryptoService.setKeyHash(localKeyHash);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.stateService.getProtectedPin();\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(\n new EncString(protectedPin),\n encKey\n );\n const pinKey = await this.cryptoService.makePinKey(\n decPin,\n this.email,\n kdf,\n kdfIterations\n );\n await this.stateService.setDecryptedPinProtected(\n await this.cryptoService.encrypt(key.key, pinKey)\n );\n }\n await this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidMasterPassword\")\n );\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"logOutConfirmation\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"logOut\"),\n this.i18nService.t(\"cancel\")\n );\n if (confirmed) {\n this.messagingService.send(\"logout\");\n }\n }\n\n async unlockBiometric(): Promise {\n if (!this.biometricLock) {\n return;\n }\n\n const success = (await this.cryptoService.getKey(KeySuffixOptions.Biometric)) != null;\n\n if (success) {\n await this.doContinue();\n }\n\n return success;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n const input = document.getElementById(this.pinLock ? \"pin\" : \"masterPassword\");\n if (this.ngZone.isStable) {\n input.focus();\n } else {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => input.focus());\n }\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n await this.doContinue();\n }\n\n private async doContinue() {\n await this.stateService.setBiometricLocked(false);\n await this.stateService.setEverBeenUnlocked(true);\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n this.messagingService.send(\"unlocked\");\n if (this.onSuccessfulSubmit != null) {\n await this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n\n private async load() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock =\n (this.pinSet[0] && (await this.stateService.getDecryptedPinProtected()) != null) ||\n this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock =\n (await this.vaultTimeoutService.isBiometricLockSet()) &&\n ((await this.cryptoService.hasKeyStored(KeySuffixOptions.Biometric)) ||\n !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.stateService.getBiometricText();\n this.email = await this.stateService.getEmail();\n const usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.hideInput = usesKeyConnector && !this.pinLock;\n\n // Users with key connector and without biometric or pin has no MP to unlock using\n if (usesKeyConnector && !(this.biometricLock || this.pinLock)) {\n await this.vaultTimeoutService.logOut();\n }\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n const vaultUrl =\n webVaultUrl === \"https://vault.bitwarden.com\" ? \"https://bitwarden.com\" : webVaultUrl;\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n}\n","import { Directive, Input, NgZone, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { take } from \"rxjs/operators\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { PasswordLogInCredentials } from \"jslib-common/models/domain/logInCredentials\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class LoginComponent extends CaptchaProtectedComponent implements OnInit {\n @Input() email = \"\";\n @Input() rememberEmail = true;\n\n masterPassword = \"\";\n showPassword = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = \"2fa\";\n protected successRoute = \"vault\";\n protected forcePasswordResetRoute = \"update-temp-password\";\n protected alwaysRememberEmail = false;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n protected stateService: StateService,\n environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected logService: LogService,\n protected ngZone: NgZone\n ) {\n super(environmentService, i18nService, platformUtilsService);\n }\n\n async ngOnInit() {\n if (this.email == null || this.email === \"\") {\n this.email = await this.stateService.getRememberedEmail();\n if (this.email == null) {\n this.email = \"\";\n }\n }\n if (!this.alwaysRememberEmail) {\n this.rememberEmail = (await this.stateService.getRememberedEmail()) != null;\n }\n if (Utils.isBrowser && !Utils.isNode) {\n this.focusInput();\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n try {\n const credentials = new PasswordLogInCredentials(\n this.email,\n this.masterPassword,\n this.captchaToken,\n null\n );\n this.formPromise = this.authService.logIn(credentials);\n const response = await this.formPromise;\n if (this.rememberEmail || this.alwaysRememberEmail) {\n await this.stateService.setRememberedEmail(this.email);\n } else {\n await this.stateService.setRememberedEmail(null);\n }\n if (this.handleCaptchaRequired(response)) {\n return;\n } else if (response.requiresTwoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n if (this.ngZone.isStable) {\n document.getElementById(\"masterPassword\").focus();\n } else {\n this.ngZone.onStable\n .pipe(take(1))\n .subscribe(() => document.getElementById(\"masterPassword\").focus());\n }\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: \"password\",\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, \"sha256\");\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.stateService.setSsoState(state);\n await this.stateService.setSsoCodeVerifier(ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(\n webUrl +\n \"/#/sso?clientId=\" +\n clientId +\n \"&redirectUri=\" +\n encodeURIComponent(ssoRedirectUri) +\n \"&state=\" +\n state +\n \"&codeChallenge=\" +\n codeChallenge\n );\n }\n\n protected focusInput() {\n document\n .getElementById(this.email == null || this.email === \"\" ? \"email\" : \"masterPassword\")\n .focus();\n }\n}\n","import { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from \"@angular/cdk/a11y\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\n\nimport { ModalService } from \"../../services/modal.service\";\n\nimport { ModalRef } from \"./modal.ref\";\n\n@Component({\n selector: \"app-modal\",\n template: \"\",\n})\nexport class DynamicModalComponent implements AfterViewInit, OnDestroy {\n componentRef: ComponentRef;\n\n @ViewChild(\"modalContent\", { read: ViewContainerRef, static: true })\n modalContentRef: ViewContainerRef;\n\n childComponentType: Type;\n setComponentParameters: (component: any) => void;\n\n private focusTrap: ConfigurableFocusTrap;\n\n constructor(\n private modalService: ModalService,\n private cd: ChangeDetectorRef,\n private el: ElementRef,\n private focusTrapFactory: ConfigurableFocusTrapFactory,\n public modalRef: ModalRef\n ) {}\n\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n if (this.setComponentParameters != null) {\n this.setComponentParameters(this.componentRef.instance);\n }\n this.cd.detectChanges();\n\n this.modalRef.created(this.el.nativeElement);\n this.focusTrap = this.focusTrapFactory.create(\n this.el.nativeElement.querySelector(\".modal-dialog\")\n );\n if (this.el.nativeElement.querySelector(\"[appAutoFocus]\") == null) {\n this.focusTrap.focusFirstTabbableElementWhenReady();\n }\n }\n\n loadChildComponent(componentType: Type) {\n const componentFactory = this.modalService.resolveComponentFactory(componentType);\n\n this.modalContentRef.clear();\n this.componentRef = this.modalContentRef.createComponent(componentFactory);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.focusTrap.destroy();\n }\n\n close() {\n this.modalRef.close();\n }\n\n getFocus() {\n const autoFocusEl = this.el.nativeElement.querySelector(\"[appAutoFocus]\") as HTMLElement;\n autoFocusEl?.focus();\n }\n}\n","import { InjectFlags, InjectionToken, Injector, Type } from \"@angular/core\";\n\nexport class ModalInjector implements Injector {\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap) {}\n\n get(token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags): T;\n get(token: any, notFoundValue?: any, flags?: any) {\n return this._additionalTokens.get(token) ?? this._parentInjector.get(token, notFoundValue);\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { first } from \"rxjs/operators\";\n\nexport class ModalRef {\n onCreated: Observable; // Modal added to the DOM.\n onClose: Observable; // Initiated close.\n onClosed: Observable; // Modal was closed (Remove element from DOM)\n onShow: Observable; // Start showing modal\n onShown: Observable; // Modal is fully visible\n\n private readonly _onCreated = new Subject();\n private readonly _onClose = new Subject();\n private readonly _onClosed = new Subject();\n private readonly _onShow = new Subject();\n private readonly _onShown = new Subject();\n private lastResult: any;\n\n constructor() {\n this.onCreated = this._onCreated.asObservable();\n this.onClose = this._onClose.asObservable();\n this.onClosed = this._onClosed.asObservable();\n this.onShow = this._onShow.asObservable();\n this.onShown = this._onShow.asObservable();\n }\n\n show() {\n this._onShow.next();\n }\n\n shown() {\n this._onShown.next();\n }\n\n close(result?: any) {\n this.lastResult = result;\n this._onClose.next(result);\n }\n\n closed() {\n this._onClosed.next(this.lastResult);\n }\n\n created(el: HTMLElement) {\n this._onCreated.next(el);\n }\n\n onClosedPromise(): Promise {\n return this.onClosed.pipe(first()).toPromise();\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { GeneratedPasswordHistory } from \"jslib-common/models/domain/generatedPasswordHistory\";\n\n@Directive()\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n private win: Window\n ) {}\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"password\"))\n );\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\nimport { ModalRef } from \"./modal/modal.ref\";\n\n/**\n * Used to verify the user's Master Password for the \"Master Password Re-prompt\" feature only.\n * See UserVerificationComponent for any other situation where you need to verify the user's identity.\n */\n@Directive()\nexport class PasswordRepromptComponent {\n showPassword = false;\n masterPassword = \"\";\n\n constructor(\n private modalRef: ModalRef,\n private cryptoService: CryptoService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n }\n\n async submit() {\n if (!(await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null))) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidMasterPassword\")\n );\n return;\n }\n\n this.modalRef.close(true);\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from \"jslib-common/enums/kdfType\";\nimport { KeysRequest } from \"jslib-common/models/request/keysRequest\";\nimport { ReferenceEventRequest } from \"jslib-common/models/request/referenceEventRequest\";\nimport { RegisterRequest } from \"jslib-common/models/request/registerRequest\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class RegisterComponent extends CaptchaProtectedComponent implements OnInit {\n name = \"\";\n email = \"\";\n masterPassword = \"\";\n confirmMasterPassword = \"\";\n hint = \"\";\n showPassword = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = true;\n acceptPolicies = false;\n\n protected successRoute = \"login\";\n private masterPasswordStrengthTimeout: any;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n i18nService: I18nService,\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService,\n environmentService: EnvironmentService,\n protected logService: LogService\n ) {\n super(environmentService, i18nService, platformUtilsService);\n this.showTerms = !platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.setupCaptcha();\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return \"success\";\n case 3:\n return \"primary\";\n case 2:\n return \"warning\";\n default:\n return \"danger\";\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t(\"strong\");\n case 3:\n return this.i18nService.t(\"good\");\n case 2:\n return this.i18nService.t(\"weak\");\n default:\n return this.masterPasswordScore != null ? this.i18nService.t(\"weak\") : null;\n }\n }\n\n async submit() {\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"acceptPoliciesError\")\n );\n return;\n }\n\n if (this.email == null || this.email === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"emailRequired\")\n );\n return;\n }\n if (this.email.indexOf(\"@\") === -1) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidEmail\")\n );\n return;\n }\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassDoesntMatch\")\n );\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"hintEqualsPassword\")\n );\n return;\n }\n\n this.name = this.name === \"\" ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = DEFAULT_KDF_TYPE;\n const kdfIterations = DEFAULT_KDF_ITERATIONS;\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n kdf,\n kdfIterations\n );\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(\n this.email,\n this.name,\n hashedPassword,\n this.hint,\n encKey[1].encryptedString,\n kdf,\n kdfIterations,\n this.referenceData,\n this.captchaToken\n );\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.getOrganizationInvitation();\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n try {\n await this.formPromise;\n } catch (e) {\n if (this.handleCaptchaRequired(e)) {\n return;\n } else {\n throw e;\n }\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"newAccountCreated\"));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n if (this.name != null && this.name !== \"\") {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(\" \"));\n }\n return userInput;\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Directive()\nexport class RemovePasswordComponent implements OnInit {\n actionPromise: Promise;\n continuing = false;\n leaving = false;\n\n loading = true;\n organization: Organization;\n email: string;\n\n constructor(\n private router: Router,\n private stateService: StateService,\n private apiService: ApiService,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n async ngOnInit() {\n this.organization = await this.keyConnectorService.getManagingOrganization();\n this.email = await this.stateService.getEmail();\n await this.syncService.fullSync(false);\n this.loading = false;\n }\n\n async convert() {\n this.continuing = true;\n this.actionPromise = this.keyConnectorService.migrateUser();\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedMasterPassword\")\n );\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate([\"\"]);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n }\n }\n\n async leave() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"leaveOrganizationConfirmation\"),\n this.organization.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.leaving = true;\n this.actionPromise = this.apiService.postLeaveOrganization(this.organization.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"leftOrganization\"));\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate([\"\"]);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e);\n }\n }\n}\n","import { DatePipe } from \"@angular/common\";\nimport { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { EncArrayBuffer } from \"jslib-common/models/domain/encArrayBuffer\";\nimport { Send } from \"jslib-common/models/domain/send\";\nimport { SendFileView } from \"jslib-common/models/view/sendFileView\";\nimport { SendTextView } from \"jslib-common/models/view/sendTextView\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n disableHideEmail = false;\n send: SendView;\n deletionDate: string;\n expirationDate: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n canAccessPremium = true;\n emailVerified = true;\n alertShown = false;\n showOptions = false;\n\n private sendLinkBaseUrl: string;\n\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService,\n protected datePipe: DatePipe,\n protected sendService: SendService,\n protected messagingService: MessagingService,\n protected policyService: PolicyService,\n private logService: LogService,\n protected stateService: StateService\n ) {\n this.typeOptions = [\n { name: i18nService.t(\"sendTypeFile\"), value: SendType.File },\n { name: i18nService.t(\"sendTypeText\"), value: SendType.Text },\n ];\n this.sendLinkBaseUrl = this.environmentService.getSendUrl();\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + \"/\" + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(this.editMode ? \"editSend\" : \"createSend\");\n }\n\n setDates(event: { deletionDate: string; expirationDate: string }) {\n this.deletionDate = event.deletionDate;\n this.expirationDate = event.expirationDate;\n }\n\n async load() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n this.disableHideEmail = await this.policyService.policyAppliesToUser(\n PolicyType.SendOptions,\n (p) => p.data.disableHideEmail\n );\n\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n this.emailVerified = await this.stateService.getEmailVerified();\n if (!this.canAccessPremium || !this.emailVerified) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== \"\";\n }\n\n async submit(): Promise {\n if (this.disableSend) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"sendDisabledWarning\")\n );\n return false;\n }\n\n if (this.send.name == null || this.send.name === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nameRequired\")\n );\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n file = files[0];\n if (files[0].size > 524288000) {\n // 500 MB\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"maxFileSize\")\n );\n return;\n }\n }\n\n if (this.password != null && this.password.trim() === \"\") {\n this.password = null;\n }\n\n this.formPromise = this.encryptSend(file).then(async (encSend) => {\n const uploadPromise = this.sendService.saveWithServer(encSend);\n await uploadPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.onSavedSend.emit(this.send);\n if (this.copyLink && this.link != null) {\n const copySuccess = await this.copyLinkToClipboard(this.link);\n if (copySuccess ?? true) {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedSend\" : \"createdSend\")\n );\n } else {\n await this.platformUtilsService.showDialog(\n this.i18nService.t(this.editMode ? \"editedSend\" : \"createdSend\"),\n null,\n this.i18nService.t(\"ok\"),\n null,\n \"success\",\n null\n );\n await this.copyLinkToClipboard(this.link);\n }\n }\n });\n try {\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n async copyLinkToClipboard(link: string): Promise {\n return Promise.resolve(this.platformUtilsService.copyToClipboard(link));\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteSendConfirmation\"),\n this.i18nService.t(\"deleteSend\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedSend\"));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n typeChanged() {\n if (this.send.type === SendType.File && !this.alertShown) {\n if (!this.canAccessPremium) {\n this.alertShown = true;\n this.messagingService.send(\"premiumRequired\");\n } else if (!this.emailVerified) {\n this.alertShown = true;\n this.messagingService.send(\"emailVerificationRequired\");\n }\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, EncArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate =\n this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"password\").focus();\n }\n}\n","import { DatePipe } from \"@angular/common\";\nimport { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n// Different BrowserPath = different controls.\nenum BrowserPath {\n // Native datetime-locale.\n // We are happy.\n Default = \"default\",\n\n // Native date and time inputs, but no datetime-locale.\n // We use individual date and time inputs and create a datetime programatically on submit.\n Firefox = \"firefox\",\n\n // No native date, time, or datetime-locale inputs.\n // We use a polyfill for dates and a dropdown for times.\n Safari = \"safari\",\n}\n\nenum DateField {\n DeletionDate = \"deletion\",\n ExpriationDate = \"expiration\",\n}\n\n// Value = hours\nenum DatePreset {\n OneHour = 1,\n OneDay = 24,\n TwoDays = 48,\n ThreeDays = 72,\n SevenDays = 168,\n ThirtyDays = 720,\n Custom = 0,\n Never = null,\n}\n\n// TimeOption is used for the dropdown implementation of custom times\n// twelveHour = displayed time; twentyFourHour = time used in logic\ninterface TimeOption {\n twelveHour: string;\n twentyFourHour: string;\n}\n\n@Directive()\nexport class EffluxDatesComponent implements OnInit {\n @Input() readonly initialDeletionDate: Date;\n @Input() readonly initialExpirationDate: Date;\n @Input() readonly editMode: boolean;\n @Input() readonly disabled: boolean;\n\n @Output() datesChanged = new EventEmitter<{ deletionDate: string; expirationDate: string }>();\n\n get browserPath(): BrowserPath {\n if (this.platformUtilsService.isFirefox()) {\n return BrowserPath.Firefox;\n } else if (this.platformUtilsService.isSafari()) {\n return BrowserPath.Safari;\n }\n return BrowserPath.Default;\n }\n\n datesForm = new FormGroup({\n selectedDeletionDatePreset: new FormControl(),\n selectedExpirationDatePreset: new FormControl(),\n defaultDeletionDateTime: new FormControl(),\n defaultExpirationDateTime: new FormControl(),\n fallbackDeletionDate: new FormControl(),\n fallbackDeletionTime: new FormControl(),\n fallbackExpirationDate: new FormControl(),\n fallbackExpirationTime: new FormControl(),\n });\n\n deletionDatePresets: any[] = [\n { name: this.i18nService.t(\"oneHour\"), value: DatePreset.OneHour },\n { name: this.i18nService.t(\"oneDay\"), value: DatePreset.OneDay },\n { name: this.i18nService.t(\"days\", \"2\"), value: DatePreset.TwoDays },\n { name: this.i18nService.t(\"days\", \"3\"), value: DatePreset.ThreeDays },\n { name: this.i18nService.t(\"days\", \"7\"), value: DatePreset.SevenDays },\n { name: this.i18nService.t(\"days\", \"30\"), value: DatePreset.ThirtyDays },\n { name: this.i18nService.t(\"custom\"), value: DatePreset.Custom },\n ];\n\n expirationDatePresets: any[] = [\n { name: this.i18nService.t(\"never\"), value: DatePreset.Never },\n ].concat([...this.deletionDatePresets]);\n\n get selectedDeletionDatePreset(): FormControl {\n return this.datesForm.get(\"selectedDeletionDatePreset\") as FormControl;\n }\n\n get selectedExpirationDatePreset(): FormControl {\n return this.datesForm.get(\"selectedExpirationDatePreset\") as FormControl;\n }\n\n get defaultDeletionDateTime(): FormControl {\n return this.datesForm.get(\"defaultDeletionDateTime\") as FormControl;\n }\n\n get defaultExpirationDateTime(): FormControl {\n return this.datesForm.get(\"defaultExpirationDateTime\") as FormControl;\n }\n\n get fallbackDeletionDate(): FormControl {\n return this.datesForm.get(\"fallbackDeletionDate\") as FormControl;\n }\n\n get fallbackDeletionTime(): FormControl {\n return this.datesForm.get(\"fallbackDeletionTime\") as FormControl;\n }\n\n get fallbackExpirationDate(): FormControl {\n return this.datesForm.get(\"fallbackExpirationDate\") as FormControl;\n }\n\n get fallbackExpirationTime(): FormControl {\n return this.datesForm.get(\"fallbackExpirationTime\") as FormControl;\n }\n\n // Should be able to call these at any time and compute a submitable value\n get formattedDeletionDate(): string {\n switch (this.selectedDeletionDatePreset.value as DatePreset) {\n case DatePreset.Never:\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n return this.formattedDeletionDate;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n return this.fallbackDeletionDate.value + \"T\" + this.fallbackDeletionTime.value;\n default:\n return this.defaultDeletionDateTime.value;\n }\n default: {\n const now = new Date();\n const miliseconds = now.setTime(\n now.getTime() + (this.selectedDeletionDatePreset.value as number) * 60 * 60 * 1000\n );\n return new Date(miliseconds).toString();\n }\n }\n }\n\n get formattedExpirationDate(): string {\n switch (this.selectedExpirationDatePreset.value as DatePreset) {\n case DatePreset.Never:\n return null;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n if (\n (!this.fallbackExpirationDate.value || !this.fallbackExpirationTime.value) &&\n this.editMode\n ) {\n return null;\n }\n return this.fallbackExpirationDate.value + \"T\" + this.fallbackExpirationTime.value;\n default:\n if (!this.defaultExpirationDateTime.value) {\n return null;\n }\n return this.defaultExpirationDateTime.value;\n }\n default: {\n const now = new Date();\n const miliseconds = now.setTime(\n now.getTime() + (this.selectedExpirationDatePreset.value as number) * 60 * 60 * 1000\n );\n return new Date(miliseconds).toString();\n }\n }\n }\n //\n\n get safariDeletionTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.DeletionDate);\n }\n\n get safariExpirationTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.ExpriationDate);\n }\n\n private get nextWeek(): Date {\n const nextWeek = new Date();\n nextWeek.setDate(nextWeek.getDate() + 7);\n return nextWeek;\n }\n\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe\n ) {}\n\n ngOnInit(): void {\n this.setInitialFormValues();\n this.emitDates();\n this.datesForm.valueChanges.subscribe(() => {\n this.emitDates();\n });\n }\n\n onDeletionDatePresetSelect(value: DatePreset) {\n this.selectedDeletionDatePreset.setValue(value);\n }\n\n clearExpiration() {\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackExpirationDate.setValue(null);\n this.fallbackExpirationTime.setValue(null);\n break;\n case BrowserPath.Default:\n this.defaultExpirationDateTime.setValue(null);\n break;\n }\n }\n\n protected emitDates() {\n this.datesChanged.emit({\n deletionDate: this.formattedDeletionDate,\n expirationDate: this.formattedExpirationDate,\n });\n }\n\n protected setInitialFormValues() {\n if (this.editMode) {\n this.selectedDeletionDatePreset.setValue(DatePreset.Custom);\n this.selectedExpirationDatePreset.setValue(DatePreset.Custom);\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0, 5));\n if (this.initialExpirationDate != null) {\n this.fallbackExpirationDate.setValue(\n this.initialExpirationDate.toISOString().slice(0, 10)\n );\n this.fallbackExpirationTime.setValue(\n this.initialExpirationDate.toTimeString().slice(0, 5)\n );\n }\n break;\n case BrowserPath.Default:\n if (this.initialExpirationDate) {\n this.defaultExpirationDateTime.setValue(\n this.datePipe.transform(new Date(this.initialExpirationDate), \"yyyy-MM-ddTHH:mm\")\n );\n }\n this.defaultDeletionDateTime.setValue(\n this.datePipe.transform(new Date(this.initialDeletionDate), \"yyyy-MM-ddTHH:mm\")\n );\n break;\n }\n } else {\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n this.selectedExpirationDatePreset.setValue(DatePreset.Never);\n\n switch (this.browserPath) {\n case BrowserPath.Safari:\n this.fallbackDeletionDate.setValue(this.nextWeek.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(\n this.safariTimePresetOptions(DateField.DeletionDate)[1].twentyFourHour\n );\n break;\n default:\n break;\n }\n }\n }\n\n protected safariTimePresetOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = \"0\" + hour;\n }\n if (m < 10) {\n minutes = \"0\" + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.initialExpirationDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialExpirationDate, \"hh:mm a\"),\n twentyFourHour: this.datePipe.transform(this.initialExpirationDate, \"HH:mm\"),\n };\n return [previousValue, { twelveHour: null, twentyFourHour: null }, ...validTimes];\n } else if (\n field === DateField.DeletionDate &&\n this.initialDeletionDate != null &&\n this.editMode\n ) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialDeletionDate, \"hh:mm a\"),\n twentyFourHour: this.datePipe.transform(this.initialDeletionDate, \"HH:mm\"),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ twelveHour: null, twentyFourHour: null }, ...validTimes];\n }\n }\n}\n","import { Directive, NgZone, OnInit } from \"@angular/core\";\n\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\n@Directive()\nexport class SendComponent implements OnInit {\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(\n protected sendService: SendService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService,\n protected ngZone: NgZone,\n protected searchService: SearchService,\n protected policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter((s) => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter((s) => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removePasswordConfirmation\"),\n this.i18nService.t(\"removePassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"removedPassword\"));\n await this.load();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteSendConfirmation\"),\n this.i18nService.t(\"deleteSend\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"deletedSend\"));\n await this.refresh();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n const sendLinkBaseUrl = this.environmentService.getSendUrl();\n const link = sendLinkBaseUrl + s.accessId + \"/\" + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"sendLink\"))\n );\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter((s) => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { HashPurpose } from \"jslib-common/enums/hashPurpose\";\nimport { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from \"jslib-common/enums/kdfType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { KeysRequest } from \"jslib-common/models/request/keysRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { SetPasswordRequest } from \"jslib-common/models/request/setPasswordRequest\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading = true;\n showPassword = false;\n hint = \"\";\n identifier: string = null;\n orgId: string;\n resetPasswordAutoEnroll = false;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = \"vault\";\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n protected router: Router,\n private apiService: ApiService,\n private syncService: SyncService,\n private route: ActivatedRoute,\n stateService: StateService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n // Automatic Enrollment Detection\n if (this.identifier != null) {\n try {\n const response = await this.apiService.getOrganizationAutoEnrollStatus(this.identifier);\n this.orgId = response.id;\n this.resetPasswordAutoEnroll = response.resetPasswordEnabled;\n this.enforcedPolicyOptions =\n await this.policyService.getMasterPasswordPoliciesForInvitedUsers(this.orgId);\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = DEFAULT_KDF_TYPE;\n this.kdfIterations = DEFAULT_KDF_ITERATIONS;\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new SetPasswordRequest(\n masterPasswordHash,\n encKey[1].encryptedString,\n this.hint,\n this.kdf,\n this.kdfIterations,\n this.identifier,\n new KeysRequest(keys[0], keys[1].encryptedString)\n );\n try {\n if (this.resetPasswordAutoEnroll) {\n this.formPromise = this.apiService\n .setPassword(request)\n .then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n return this.apiService.getOrganizationKeys(this.orgId);\n })\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n const userId = await this.stateService.getUserId();\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const userEncKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(\n userEncKey.key,\n publicKey.buffer\n );\n\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n this.orgId,\n userId,\n resetRequest\n );\n });\n } else {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n });\n }\n\n await this.formPromise;\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n private async onSetPasswordSuccess(\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString],\n keys: [string, EncString]\n ) {\n await this.stateService.setKdfType(this.kdf);\n await this.stateService.setKdfIterations(this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n const localKeyHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n await this.cryptoService.setKeyHash(localKeyHash);\n }\n}\n","import { Directive, Input, OnInit } from \"@angular/core\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\n\n@Directive()\nexport class VaultTimeoutInputComponent implements ControlValueAccessor, Validator, OnInit {\n get showCustom() {\n return this.form.get(\"vaultTimeout\").value === VaultTimeoutInputComponent.CUSTOM_VALUE;\n }\n\n static CUSTOM_VALUE = -100;\n\n form = this.formBuilder.group({\n vaultTimeout: [null],\n custom: this.formBuilder.group({\n hours: [null],\n minutes: [null],\n }),\n });\n\n @Input() vaultTimeouts: { name: string; value: number }[];\n vaultTimeoutPolicy: Policy;\n vaultTimeoutPolicyHours: number;\n vaultTimeoutPolicyMinutes: number;\n\n private onChange: (vaultTimeout: number) => void;\n private validatorChange: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private policyService: PolicyService,\n private i18nService: I18nService\n ) {}\n\n async ngOnInit() {\n if (await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout)) {\n const vaultTimeoutPolicy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout);\n\n this.vaultTimeoutPolicy = vaultTimeoutPolicy[0];\n this.vaultTimeoutPolicyHours = Math.floor(this.vaultTimeoutPolicy.data.minutes / 60);\n this.vaultTimeoutPolicyMinutes = this.vaultTimeoutPolicy.data.minutes % 60;\n\n this.vaultTimeouts = this.vaultTimeouts.filter(\n (t) =>\n t.value <= this.vaultTimeoutPolicy.data.minutes &&\n (t.value > 0 || t.value === VaultTimeoutInputComponent.CUSTOM_VALUE) &&\n t.value != null\n );\n this.validatorChange();\n }\n\n this.form.valueChanges.subscribe(async (value) => {\n this.onChange(this.getVaultTimeout(value));\n });\n\n // Assign the previous value to the custom fields\n this.form.get(\"vaultTimeout\").valueChanges.subscribe((value) => {\n if (value !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return;\n }\n\n const current = Math.max(this.form.value.vaultTimeout, 0);\n this.form.patchValue({\n custom: {\n hours: Math.floor(current / 60),\n minutes: current % 60,\n },\n });\n });\n }\n\n ngOnChanges() {\n this.vaultTimeouts.push({\n name: this.i18nService.t(\"custom\"),\n value: VaultTimeoutInputComponent.CUSTOM_VALUE,\n });\n }\n\n getVaultTimeout(value: any) {\n if (value.vaultTimeout !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return value.vaultTimeout;\n }\n\n return value.custom.hours * 60 + value.custom.minutes;\n }\n\n writeValue(value: number): void {\n if (value == null) {\n return;\n }\n\n if (this.vaultTimeouts.every((p) => p.value !== value)) {\n this.form.setValue({\n vaultTimeout: VaultTimeoutInputComponent.CUSTOM_VALUE,\n custom: {\n hours: Math.floor(value / 60),\n minutes: value % 60,\n },\n });\n return;\n }\n\n this.form.patchValue({\n vaultTimeout: value,\n });\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n // Empty\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Empty\n }\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.vaultTimeoutPolicy && this.vaultTimeoutPolicy?.data?.minutes < control.value) {\n return { policyError: true };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorChange = fn;\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(\n protected collectionService: CollectionService,\n protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected cipherService: CipherService,\n private logService: LogService,\n protected organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map((c) => c).filter((c) => !c.readOnly);\n const orgs = await this.organizationService.getAll();\n this.organizations = orgs\n .sort(Utils.getSortFunction(this.i18nService, \"name\"))\n .filter((o) => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach((c) => ((c as any).checked = false));\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.organizationId\n );\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter((c) => !!(c as any).checked)\n .map((c) => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectOneCollection\")\n );\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n const orgName =\n this.organizations.find((o) => o.id === this.organizationId)?.name ??\n this.i18nService.t(\"organization\");\n\n try {\n this.formPromise = this.cipherService\n .shareWithServer(cipherView, this.organizationId, selectedCollectionIds)\n .then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"movedItemToOrg\", cipherView.name, orgName)\n );\n });\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { SsoLogInCredentials } from \"jslib-common/models/domain/logInCredentials\";\n\n@Directive()\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = \"2fa\";\n protected successRoute = \"lock\";\n protected changePasswordRoute = \"set-password\";\n protected forcePasswordResetRoute = \"update-temp-password\";\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n protected i18nService: I18nService,\n protected route: ActivatedRoute,\n protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService,\n protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService,\n protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.stateService.getSsoCodeVerifier();\n const state = await this.stateService.getSsoState();\n await this.stateService.setSsoCodeVerifier(null);\n await this.stateService.setSsoState(null);\n if (\n qParams.code != null &&\n codeVerifier != null &&\n state != null &&\n this.checkState(state, qParams.state)\n ) {\n await this.logIn(\n qParams.code,\n codeVerifier,\n this.getOrgIdentifierFromState(qParams.state)\n );\n }\n } else if (\n qParams.clientId != null &&\n qParams.redirectUri != null &&\n qParams.state != null &&\n qParams.codeChallenge != null\n ) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"ssoValidationFailed\"),\n this.i18nService.t(\"ssoIdentifierRequired\")\n );\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(\n returnUri?: string,\n includeUserIdentifier?: boolean\n ): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: \"password\",\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, \"sha256\");\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.stateService.setSsoCodeVerifier(codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.stateService.setSsoState(state);\n\n let authorizeUrl =\n this.environmentService.getIdentityUrl() +\n \"/connect/authorize?\" +\n \"client_id=\" +\n this.clientId +\n \"&redirect_uri=\" +\n encodeURIComponent(this.redirectUri) +\n \"&\" +\n \"response_type=code&scope=api offline_access&\" +\n \"state=\" +\n state +\n \"&code_challenge=\" +\n codeChallenge +\n \"&\" +\n \"code_challenge_method=S256&response_mode=query&\" +\n \"domain_hint=\" +\n encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n const credentials = new SsoLogInCredentials(\n code,\n codeVerifier,\n this.redirectUri,\n orgIdFromState\n );\n this.formPromise = this.authService.logIn(credentials);\n const response = await this.formPromise;\n if (response.requiresTwoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: \"true\",\n },\n });\n }\n } else if (response.resetMasterPassword) {\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n\n // TODO: Key Connector Service should pass this error message to the logout callback instead of displaying here\n if (e.message === \"Key Connector error\") {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"ssoKeyConnectorError\")\n );\n }\n }\n this.loggingIn = false;\n }\n\n private getOrgIdentifierFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split(\"_identifier=\");\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split(\"_identifier=\");\n const checkStateSplit = checkState.split(\"_identifier=\");\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { CommonModule } from \"@angular/common\";\nimport { Component, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport {\n DefaultNoComponentGlobalConfig,\n GlobalConfig,\n Toast as BaseToast,\n ToastPackage,\n ToastrService,\n TOAST_CONFIG,\n} from \"ngx-toastr\";\n\n@Component({\n selector: \"[toast-component2]\",\n template: `\n \n ×\n \n
\n \n
\n
\n
\n {{ title }} [{{ duplicatesCount + 1 }}]\n
\n
\n \n {{ message }}\n \n \n
\n
\n
\n `,\n animations: [\n trigger(\"flyInOut\", [\n state(\"inactive\", style({ opacity: 0 })),\n state(\"active\", style({ opacity: 1 })),\n state(\"removed\", style({ opacity: 0 })),\n transition(\"inactive => active\", animate(\"{{ easeTime }}ms {{ easing }}\")),\n transition(\"active => removed\", animate(\"{{ easeTime }}ms {{ easing }}\")),\n ]),\n ],\n preserveWhitespaces: false,\n})\nexport class BitwardenToast extends BaseToast {\n constructor(protected toastrService: ToastrService, public toastPackage: ToastPackage) {\n super(toastrService, toastPackage);\n }\n}\n\nexport const BitwardenToastGlobalConfig: GlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: BitwardenToast,\n};\n\n@NgModule({\n imports: [CommonModule],\n declarations: [BitwardenToast],\n exports: [BitwardenToast],\n})\nexport class BitwardenToastModule {\n static forRoot(config: Partial = {}): ModuleWithProviders {\n return {\n ngModule: BitwardenToastModule,\n providers: [\n {\n provide: TOAST_CONFIG,\n useValue: {\n default: BitwardenToastGlobalConfig,\n config: config,\n },\n },\n ],\n };\n }\n}\n","import { Directive, EventEmitter, OnInit, Output } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(\n protected twoFactorService: TwoFactorService,\n protected router: Router,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected win: Window\n ) {}\n\n ngOnInit() {\n this.providers = this.twoFactorService.getSupportedProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.launchUri(\"https://bitwarden.com/help/lost-two-step-device/\");\n this.onRecoverSelected.emit();\n }\n}\n","import { Directive, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport * as DuoWebSDK from \"duo_web_sdk\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { WebAuthnIFrame } from \"jslib-common/misc/webauthn_iframe\";\nimport { AuthResult } from \"jslib-common/models/domain/authResult\";\nimport { TokenRequestTwoFactor } from \"jslib-common/models/request/identityToken/tokenRequestTwoFactor\";\nimport { TwoFactorEmailRequest } from \"jslib-common/models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviders } from \"jslib-common/services/twoFactor.service\";\n\nimport { CaptchaProtectedComponent } from \"./captchaProtected.component\";\n\n@Directive()\nexport class TwoFactorComponent extends CaptchaProtectedComponent implements OnInit, OnDestroy {\n token = \"\";\n remember = false;\n webAuthnReady = false;\n webAuthnNewTab = false;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n webAuthnSupported = false;\n webAuthn: WebAuthnIFrame = null;\n title = \"\";\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n get webAuthnAllow(): string {\n return `publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`;\n }\n\n protected loginRoute = \"login\";\n protected successRoute = \"vault\";\n\n constructor(\n protected authService: AuthService,\n protected router: Router,\n protected i18nService: I18nService,\n protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService,\n protected win: Window,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected route: ActivatedRoute,\n protected logService: LogService,\n protected twoFactorService: TwoFactorService,\n protected appIdService: AppIdService\n ) {\n super(environmentService, i18nService, platformUtilsService);\n this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.twoFactorService.getProviders() == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n this.route.queryParams.pipe(first()).subscribe((qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n if (this.needsLock) {\n this.successRoute = \"lock\";\n }\n\n if (this.win != null && this.webAuthnSupported) {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n this.webAuthn = new WebAuthnIFrame(\n this.win,\n webVaultUrl,\n this.webAuthnNewTab,\n this.platformUtilsService,\n this.i18nService,\n (token: string) => {\n this.token = token;\n this.submit();\n },\n (error: string) => {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), error);\n },\n (info: string) => {\n if (info === \"ready\") {\n this.webAuthnReady = true;\n }\n }\n );\n }\n\n this.selectedProviderType = this.twoFactorService.getDefaultProvider(this.webAuthnSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupWebAuthn();\n this.webAuthn = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t(\"loginUnavailable\");\n return;\n }\n\n this.cleanupWebAuthn();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.twoFactorService.getProviders().get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.WebAuthn:\n if (!this.webAuthnNewTab) {\n setTimeout(() => {\n this.authWebAuthn();\n }, 500);\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.twoFactorService.getProviders().size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.token == null || this.token === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"verificationCodeRequired\")\n );\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn) {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n } else {\n return;\n }\n } else if (\n this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator\n ) {\n this.token = this.token.replace(\" \", \"\").trim();\n }\n\n try {\n await this.doSubmit();\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && this.webAuthn != null) {\n this.webAuthn.start();\n }\n }\n }\n\n async doSubmit() {\n this.formPromise = this.authService.logInTwoFactor(\n new TokenRequestTwoFactor(this.selectedProviderType, this.token, this.remember),\n this.captchaToken\n );\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.stateService.getDisableFavicon();\n await this.stateService.setDisableFavicon(!!disableFavicon);\n if (this.handleCaptchaRequired(response)) {\n return;\n }\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (response.resetMasterPassword) {\n this.successRoute = \"set-password\";\n }\n if (response.forcePasswordReset) {\n this.successRoute = \"update-temp-password\";\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest();\n request.email = this.authService.email;\n request.masterPasswordHash = this.authService.masterPasswordHash;\n request.deviceIdentifier = await this.appIdService.getAppId();\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"verificationCodeEmailSent\", this.twoFactorEmail)\n );\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.emailPromise = null;\n }\n\n authWebAuthn() {\n const providerData = this.twoFactorService.getProviders().get(this.selectedProviderType);\n\n if (!this.webAuthnSupported || this.webAuthn == null) {\n return;\n }\n\n this.webAuthn.init(providerData);\n }\n\n private cleanupWebAuthn() {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n this.webAuthn.cleanup();\n }\n }\n\n get authing(): boolean {\n return (\n this.authService.authingWithPassword() ||\n this.authService.authingWithSso() ||\n this.authService.authingWithApiKey()\n );\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { PasswordRequest } from \"jslib-common/models/request/passwordRequest\";\nimport { Verification } from \"jslib-common/types/verification\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class UpdatePasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword = false;\n currentMasterPassword: string;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(\n protected router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n private apiService: ApiService,\n stateService: StateService,\n private userVerificationService: UserVerificationService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n async cancel() {\n await this.stateService.setOrganizationInvitation(null);\n this.router.navigate([\"/vault\"]);\n }\n\n async setupSubmitActions(): Promise {\n if (this.currentMasterPassword == null || this.currentMasterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n const secret: Verification = {\n type: VerificationType.MasterPassword,\n secret: this.currentMasterPassword,\n };\n try {\n await this.userVerificationService.verifyUser(secret);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n return false;\n }\n\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n return true;\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n try {\n // Create Request\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(\n this.currentMasterPassword,\n null\n );\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n // Update user's password\n this.apiService.postPassword(request);\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"masterPasswordChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send(\"logout\");\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { UpdateTempPasswordRequest } from \"jslib-common/models/request/updateTempPasswordRequest\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"./change-password.component\";\n\n@Directive()\nexport class UpdateTempPasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword = false;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n private apiService: ApiService,\n stateService: StateService,\n private syncService: SyncService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n super.ngOnInit();\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? \"masterPasswordRetype\" : \"masterPassword\").focus();\n }\n\n async setupSubmitActions(): Promise {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n this.email = await this.stateService.getEmail();\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n return true;\n }\n\n async submit() {\n // Validation\n if (!(await this.strongPassword())) {\n return;\n }\n\n if (!(await this.setupSubmitActions())) {\n return;\n }\n\n try {\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email.trim().toLowerCase(),\n this.kdf,\n this.kdfIterations\n );\n const newPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n\n // Grab user's current enc key\n const userEncKey = await this.cryptoService.getEncKey();\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n await this.performSubmitActions(newPasswordHash, newKey, newEncKey);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async performSubmitActions(\n masterPasswordHash: string,\n key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]\n ) {\n try {\n // Create request\n const request = new UpdateTempPasswordRequest();\n request.key = encKey[1].encryptedString;\n request.newMasterPasswordHash = masterPasswordHash;\n request.masterPasswordHint = this.hint;\n\n // Update user's password\n this.formPromise = this.apiService.putUpdateTempPassword(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"updatedMasterPassword\")\n );\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send(\"logout\");\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n/**\n * Used for general-purpose user verification throughout the app.\n * Collects the user's master password, or if they are using Key Connector, prompts for an OTP via email.\n * This is exposed to the parent component via the ControlValueAccessor interface (e.g. bind it to a FormControl).\n * Use UserVerificationService to verify the user's input.\n */\n@Component({\n selector: \"app-user-verification\",\n templateUrl: \"user-verification.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UserVerificationComponent,\n },\n ],\n animations: [\n trigger(\"sent\", [\n transition(\":enter\", [style({ opacity: 0 }), animate(\"100ms\", style({ opacity: 1 }))]),\n ]),\n ],\n})\nexport class UserVerificationComponent implements ControlValueAccessor, OnInit {\n usesKeyConnector = false;\n disableRequestOTP = false;\n sentCode = false;\n\n secret = new FormControl(\"\");\n\n private onChange: (value: Verification) => void;\n\n constructor(\n private keyConnectorService: KeyConnectorService,\n private userVerificationService: UserVerificationService\n ) {}\n\n async ngOnInit() {\n this.usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.processChanges(this.secret.value);\n\n this.secret.valueChanges.subscribe((secret: string) => this.processChanges(secret));\n }\n\n async requestOTP() {\n if (this.usesKeyConnector) {\n this.disableRequestOTP = true;\n try {\n await this.userVerificationService.requestOTP();\n this.sentCode = true;\n } finally {\n this.disableRequestOTP = false;\n }\n }\n }\n\n writeValue(obj: any): void {\n this.secret.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n // Not implemented\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disableRequestOTP = isDisabled;\n if (isDisabled) {\n this.secret.disable();\n } else {\n this.secret.enable();\n }\n }\n\n private processChanges(secret: string) {\n if (this.onChange == null) {\n return;\n }\n\n this.onChange({\n type: this.usesKeyConnector ? VerificationType.OTP : VerificationType.MasterPassword,\n secret: secret,\n });\n }\n}\n","\n \n \n {{ \"confirmIdentity\" | i18n }}\n\n\n
\n \n \n {{ \"sendCode\" | i18n }}\n \n \n \n {{ \"codeSent\" | i18n }}\n \n
\n\n
\n \n \n {{ \"confirmIdentity\" | i18n }}\n
\n
\n","import { Directive, ElementRef, OnDestroy, OnInit } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\n\n@Directive({\n selector: \"[appA11yInvalid]\",\n})\nexport class A11yInvalidDirective implements OnDestroy, OnInit {\n private sub: Subscription;\n\n constructor(private el: ElementRef, private formControlDirective: NgControl) {}\n\n ngOnInit() {\n this.sub = this.formControlDirective.control.statusChanges.subscribe((status) => {\n if (status === \"INVALID\") {\n this.el.nativeElement.setAttribute(\"aria-invalid\", \"true\");\n } else if (status === \"VALID\") {\n this.el.nativeElement.setAttribute(\"aria-invalid\", \"false\");\n }\n });\n }\n\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\n\n@Directive({\n selector: \"[appA11yTitle]\",\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute(\"title\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"title\", this.title);\n }\n if (!this.el.nativeElement.hasAttribute(\"aria-label\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"aria-label\", this.title);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnChanges } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\n\nimport { ValidationService } from \"../services/validation.service\";\n\n/**\n * Provides error handling, in particular for any error returned by the server in an api call.\n * Attach it to a
element and provide the name of the class property that will hold the api call promise.\n * e.g. \n * Any errors/rejections that occur will be intercepted and displayed as error toasts.\n */\n@Directive({\n selector: \"[appApiAction]\",\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(\n private el: ElementRef,\n private validationService: ValidationService,\n private logService: LogService\n ) {}\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then(\n (response: any) => {\n this.el.nativeElement.loading = false;\n },\n (e: any) => {\n this.el.nativeElement.loading = false;\n\n if ((e as ErrorResponse).captchaRequired) {\n this.logService.error(\"Captcha required error response: \" + e.getSingleMessage());\n return;\n }\n this.logService?.error(`Received API exception: ${e}`);\n this.validationService.showError(e);\n }\n );\n }\n}\n","import { Directive, ElementRef, Input, NgZone } from \"@angular/core\";\nimport { take } from \"rxjs/operators\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Directive({\n selector: \"[appAutofocus]\",\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === \"\" || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef, private ngZone: NgZone) {}\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n if (this.ngZone.isStable) {\n this.el.nativeElement.focus();\n } else {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.el.nativeElement.focus());\n }\n }\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appBlurClick]\",\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {}\n\n @HostListener(\"click\") onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from \"@angular/core\";\n\n@Directive({\n selector: \"[appFallbackSrc]\",\n})\nexport class FallbackSrcDirective {\n @Input(\"appFallbackSrc\") appFallbackSrc: string;\n\n constructor(private el: ElementRef) {}\n\n @HostListener(\"error\") onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"input[appInputStripSpaces]\",\n})\nexport class InputStripSpacesDirective {\n constructor(private el: ElementRef) {}\n\n @HostListener(\"input\") onInput() {\n this.el.nativeElement.value = this.el.nativeElement.value.replace(/ /g, \"\");\n }\n}\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\n\n@Directive({\n selector: \"[appInputVerbatim]\",\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === \"\" || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {}\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute(\"autocomplete\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocomplete\", \"off\");\n }\n if (!this.el.nativeElement.hasAttribute(\"autocapitalize\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocapitalize\", \"none\");\n }\n if (!this.el.nativeElement.hasAttribute(\"autocorrect\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"autocorrect\", \"none\");\n }\n if (!this.el.nativeElement.hasAttribute(\"spellcheck\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"spellcheck\", \"false\");\n }\n if (!this.el.nativeElement.hasAttribute(\"inputmode\")) {\n this.renderer.setAttribute(this.el.nativeElement, \"inputmode\", \"verbatim\");\n }\n }\n}\n","import { Directive, OnInit, TemplateRef, ViewContainerRef } from \"@angular/core\";\n\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n/**\n * Hides the element if the user has premium.\n */\n@Directive({\n selector: \"[appNotPremium]\",\n})\nexport class NotPremiumDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef,\n private viewContainer: ViewContainerRef,\n private stateService: StateService\n ) {}\n\n async ngOnInit(): Promise {\n const premium = await this.stateService.getCanAccessPremium();\n\n if (premium) {\n this.viewContainer.clear();\n } else {\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n}\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Directive({\n selector: \"[appSelectCopy]\",\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) {}\n\n @HostListener(\"copy\") onCopy() {\n if (window == null) {\n return;\n }\n let copyText = \"\";\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === \"\") {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appStopClick]\",\n})\nexport class StopClickDirective {\n @HostListener(\"click\", [\"$event\"]) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","import { Directive, HostListener } from \"@angular/core\";\n\n@Directive({\n selector: \"[appStopProp]\",\n})\nexport class StopPropDirective {\n @HostListener(\"click\", [\"$event\"]) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { Directive, ElementRef, forwardRef, HostListener, Input, Renderer2 } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: \"input[type=checkbox][appTrueFalseValue]\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {}\n\n @HostListener(\"change\", [\"$event\"])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, \"checked\", true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, \"checked\", false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n /* nothing */\n }\n\n setDisabledState?(isDisabled: boolean): void {\n /* nothing */\n }\n\n private propagateChange = (_: any) => {\n /* nothing */\n };\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(\n private authService: AuthService,\n private router: Router,\n private messagingService: MessagingService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n this.messagingService.send(\"authBlocked\", { url: routerState.url });\n return false;\n }\n\n if (authStatus === AuthenticationStatus.Locked) {\n if (routerState != null) {\n this.messagingService.send(\"lockedUrl\", { url: routerState.url });\n }\n return this.router.createUrlTree([\"lock\"], { queryParams: { promptBiometric: true } });\n }\n\n if (\n !routerState.url.includes(\"remove-password\") &&\n (await this.keyConnectorService.getConvertAccountRequired())\n ) {\n return this.router.createUrlTree([\"/remove-password\"]);\n }\n\n return true;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class LockGuard implements CanActivate {\n protected homepage = \"vault\";\n protected loginpage = \"login\";\n constructor(private authService: AuthService, private router: Router) {}\n\n async canActivate() {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.Locked) {\n return true;\n }\n\n const redirectUrl =\n authStatus === AuthenticationStatus.LoggedOut ? this.loginpage : this.homepage;\n\n return this.router.createUrlTree([redirectUrl]);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class UnauthGuard implements CanActivate {\n protected homepage = \"vault\";\n constructor(private authService: AuthService, private router: Router) {}\n\n async canActivate() {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n return true;\n }\n\n if (authStatus === AuthenticationStatus.Locked) {\n return this.router.createUrlTree([\"lock\"]);\n }\n\n return this.router.createUrlTree([this.homepage]);\n }\n}\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { AvatarComponent } from \"./components/avatar.component\";\nimport { CalloutComponent } from \"./components/callout.component\";\nimport { ExportScopeCalloutComponent } from \"./components/export-scope-callout.component\";\nimport { IconComponent } from \"./components/icon.component\";\nimport { BitwardenToastModule } from \"./components/toastr.component\";\nimport { A11yInvalidDirective } from \"./directives/a11y-invalid.directive\";\nimport { A11yTitleDirective } from \"./directives/a11y-title.directive\";\nimport { ApiActionDirective } from \"./directives/api-action.directive\";\nimport { AutofocusDirective } from \"./directives/autofocus.directive\";\nimport { BlurClickDirective } from \"./directives/blur-click.directive\";\nimport { BoxRowDirective } from \"./directives/box-row.directive\";\nimport { FallbackSrcDirective } from \"./directives/fallback-src.directive\";\nimport { InputStripSpacesDirective } from \"./directives/input-strip-spaces.directive\";\nimport { InputVerbatimDirective } from \"./directives/input-verbatim.directive\";\nimport { NotPremiumDirective } from \"./directives/not-premium.directive\";\nimport { SelectCopyDirective } from \"./directives/select-copy.directive\";\nimport { StopClickDirective } from \"./directives/stop-click.directive\";\nimport { StopPropDirective } from \"./directives/stop-prop.directive\";\nimport { TrueFalseValueDirective } from \"./directives/true-false-value.directive\";\nimport { ColorPasswordCountPipe } from \"./pipes/color-password-count.pipe\";\nimport { ColorPasswordPipe } from \"./pipes/color-password.pipe\";\nimport { CreditCardNumberPipe } from \"./pipes/credit-card-number.pipe\";\nimport { EllipsisPipe } from \"./pipes/ellipsis.pipe\";\nimport { I18nPipe } from \"./pipes/i18n.pipe\";\nimport { SearchCiphersPipe } from \"./pipes/search-ciphers.pipe\";\nimport { SearchPipe } from \"./pipes/search.pipe\";\nimport { UserNamePipe } from \"./pipes/user-name.pipe\";\n\n@NgModule({\n imports: [\n BitwardenToastModule.forRoot({\n maxOpened: 5,\n autoDismiss: true,\n closeButton: true,\n }),\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n ],\n declarations: [\n A11yInvalidDirective,\n A11yTitleDirective,\n ApiActionDirective,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n CalloutComponent,\n ColorPasswordCountPipe,\n ColorPasswordPipe,\n CreditCardNumberPipe,\n EllipsisPipe,\n ExportScopeCalloutComponent,\n FallbackSrcDirective,\n I18nPipe,\n IconComponent,\n InputStripSpacesDirective,\n InputVerbatimDirective,\n NotPremiumDirective,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n StopClickDirective,\n StopPropDirective,\n TrueFalseValueDirective,\n UserNamePipe,\n ],\n exports: [\n A11yInvalidDirective,\n A11yTitleDirective,\n ApiActionDirective,\n AutofocusDirective,\n AvatarComponent,\n BitwardenToastModule,\n BlurClickDirective,\n BoxRowDirective,\n CalloutComponent,\n ColorPasswordCountPipe,\n ColorPasswordPipe,\n CreditCardNumberPipe,\n EllipsisPipe,\n ExportScopeCalloutComponent,\n FallbackSrcDirective,\n I18nPipe,\n IconComponent,\n InputStripSpacesDirective,\n InputVerbatimDirective,\n NotPremiumDirective,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n StopClickDirective,\n StopPropDirective,\n TrueFalseValueDirective,\n UserNamePipe,\n ],\n providers: [CreditCardNumberPipe, DatePipe, I18nPipe, SearchPipe, UserNamePipe],\n})\nexport class JslibModule {}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\nimport { DynamicTreeNode } from \"../models/dynamic-tree-node.model\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class CollectionFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() collectionNodes: DynamicTreeNode;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n readonly collectionsGrouping: TopLevelTreeNode = {\n id: \"collections\",\n name: \"collections\",\n };\n\n get collections() {\n return this.collectionNodes?.fullList;\n }\n\n get nestedCollections() {\n return this.collectionNodes?.nestedList;\n }\n\n get show() {\n return !this.hide && this.collections != null && this.collections.length > 0;\n }\n\n isCollapsed(node: ITreeNodeObject) {\n return this.collapsedFilterNodes.has(node.id);\n }\n\n applyFilter(collection: CollectionView) {\n this.activeFilter.resetFilter();\n this.activeFilter.selectedCollectionId = collection.id;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n async toggleCollapse(node: ITreeNodeObject) {\n this.onNodeCollapseStateChange.emit(node);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"../models/dynamic-tree-node.model\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class FolderFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() folderNodes: DynamicTreeNode;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n\n get folders() {\n return this.folderNodes?.fullList;\n }\n\n get nestedFolders() {\n return this.folderNodes?.nestedList;\n }\n\n readonly foldersGrouping: TopLevelTreeNode = {\n id: \"folders\",\n name: \"folders\",\n };\n\n applyFilter(folder: FolderView) {\n this.activeFilter.resetFilter();\n this.activeFilter.selectedFolder = true;\n this.activeFilter.selectedFolderId = folder.id;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n isCollapsed(node: ITreeNodeObject) {\n return this.collapsedFilterNodes.has(node.id);\n }\n\n async toggleCollapse(node: ITreeNodeObject) {\n this.onNodeCollapseStateChange.emit(node);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\n\nimport { DisplayMode } from \"../models/display-mode\";\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class OrganizationFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() organizations: Organization[];\n @Input() activeFilter: VaultFilter;\n @Input() activePersonalOwnershipPolicy: boolean;\n @Input() activeSingleOrganizationPolicy: boolean;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n get displayMode(): DisplayMode {\n let displayMode: DisplayMode = \"organizationMember\";\n if (this.organizations == null || this.organizations.length < 1) {\n displayMode = \"noOrganizations\";\n } else if (this.activePersonalOwnershipPolicy && !this.activeSingleOrganizationPolicy) {\n displayMode = \"personalOwnershipPolicy\";\n } else if (!this.activePersonalOwnershipPolicy && this.activeSingleOrganizationPolicy) {\n displayMode = \"singleOrganizationPolicy\";\n } else if (this.activePersonalOwnershipPolicy && this.activeSingleOrganizationPolicy) {\n displayMode = \"singleOrganizationAndPersonalOwnershipPolicies\";\n }\n\n return displayMode;\n }\n\n get hasActiveFilter() {\n return this.activeFilter.myVaultOnly || this.activeFilter.selectedOrganizationId != null;\n }\n\n readonly organizationGrouping: TopLevelTreeNode = {\n id: \"vaults\",\n name: \"allVaults\",\n };\n\n async applyOrganizationFilter(organization: Organization) {\n this.activeFilter.selectedOrganizationId = organization.id;\n this.activeFilter.myVaultOnly = false;\n this.activeFilter.refreshCollectionsAndFolders = true;\n this.applyFilter(this.activeFilter);\n }\n\n async applyMyVaultFilter() {\n this.activeFilter.selectedOrganizationId = null;\n this.activeFilter.myVaultOnly = true;\n this.activeFilter.refreshCollectionsAndFolders = true;\n this.applyFilter(this.activeFilter);\n }\n\n clearFilter() {\n this.activeFilter.myVaultOnly = false;\n this.activeFilter.selectedOrganizationId = null;\n this.applyFilter(new VaultFilter(this.activeFilter));\n }\n\n private applyFilter(filter: VaultFilter) {\n this.onFilterChange.emit(filter);\n }\n\n async toggleCollapse() {\n this.onNodeCollapseStateChange.emit(this.organizationGrouping);\n }\n\n get isCollapsed() {\n return this.collapsedFilterNodes.has(this.organizationGrouping.id);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherStatus } from \"../models/cipher-status.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class StatusFilterComponent {\n @Input() hideFavorites = false;\n @Input() hideTrash = false;\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n @Input() activeFilter: VaultFilter;\n\n get show() {\n return !(this.hideFavorites && this.hideTrash);\n }\n\n applyFilter(cipherStatus: CipherStatus) {\n this.activeFilter.resetFilter();\n this.activeFilter.status = cipherStatus;\n this.onFilterChange.emit(this.activeFilter);\n }\n}\n","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\n\nimport { TopLevelTreeNode } from \"../models/top-level-tree-node.model\";\nimport { VaultFilter } from \"../models/vault-filter.model\";\n\n@Directive()\nexport class TypeFilterComponent {\n @Input() hide = false;\n @Input() collapsedFilterNodes: Set;\n @Input() selectedCipherType: CipherType = null;\n @Input() activeFilter: VaultFilter;\n\n @Output() onNodeCollapseStateChange: EventEmitter =\n new EventEmitter();\n @Output() onFilterChange: EventEmitter = new EventEmitter();\n\n readonly typesNode: TopLevelTreeNode = {\n id: \"types\",\n name: \"types\",\n };\n\n cipherTypeEnum = CipherType; // used in the template\n\n get isCollapsed() {\n return this.collapsedFilterNodes.has(this.typesNode.id);\n }\n\n applyFilter(cipherType: CipherType) {\n this.activeFilter.resetFilter();\n this.activeFilter.cipherType = cipherType;\n this.onFilterChange.emit(this.activeFilter);\n }\n\n async toggleCollapse() {\n this.onNodeCollapseStateChange.emit(this.typesNode);\n }\n}\n","import { TreeNode } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nexport class DynamicTreeNode {\n fullList: T[];\n nestedList: TreeNode[];\n\n hasId(id: string): boolean {\n return this.fullList != null && this.fullList.filter((i: T) => i.id === id).length > 0;\n }\n\n constructor(init?: Partial>) {\n Object.assign(this, init);\n }\n}\n","import { CipherType } from \"jslib-common/enums/cipherType\";\n\nimport { CipherStatus } from \"./cipher-status.model\";\n\nexport class VaultFilter {\n cipherType?: CipherType;\n selectedCollectionId?: string;\n status?: CipherStatus;\n selectedFolder = false; // This is needed because of how the \"No Folder\" folder works. It has a null id.\n selectedFolderId?: string;\n selectedOrganizationId?: string;\n myVaultOnly = false;\n refreshCollectionsAndFolders = false;\n\n constructor(init?: Partial) {\n Object.assign(this, init);\n }\n\n resetFilter() {\n this.cipherType = null;\n this.status = null;\n this.selectedCollectionId = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n }\n\n resetOrganization() {\n this.myVaultOnly = false;\n this.selectedOrganizationId = null;\n this.resetFilter();\n }\n}\n","import { Directive, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { ITreeNodeObject } from \"jslib-common/models/domain/treeNode\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"./models/dynamic-tree-node.model\";\nimport { VaultFilter } from \"./models/vault-filter.model\";\nimport { VaultFilterService } from \"./vault-filter.service\";\n\n@Directive()\nexport class VaultFilterComponent implements OnInit {\n @Input() activeFilter: VaultFilter = new VaultFilter();\n @Input() hideFolders = false;\n @Input() hideCollections = false;\n @Input() hideFavorites = false;\n @Input() hideTrash = false;\n @Input() hideOrganizations = false;\n\n @Output() onFilterChange = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n\n isLoaded = false;\n collapsedFilterNodes: Set;\n organizations: Organization[];\n activePersonalOwnershipPolicy: boolean;\n activeSingleOrganizationPolicy: boolean;\n collections: DynamicTreeNode;\n folders: DynamicTreeNode;\n\n constructor(protected vaultFilterService: VaultFilterService) {}\n\n get displayCollections() {\n return this.collections?.fullList != null && this.collections.fullList.length > 0;\n }\n\n async ngOnInit(): Promise {\n this.collapsedFilterNodes = await this.vaultFilterService.buildCollapsedFilterNodes();\n this.organizations = await this.vaultFilterService.buildOrganizations();\n if (this.organizations != null && this.organizations.length > 0) {\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n this.folders = await this.vaultFilterService.buildFolders();\n this.collections = await this.initCollections();\n this.isLoaded = true;\n }\n\n // overwritten in web for organization vaults\n async initCollections() {\n return await this.vaultFilterService.buildCollections();\n }\n\n async toggleFilterNodeCollapseState(node: ITreeNodeObject) {\n if (this.collapsedFilterNodes.has(node.id)) {\n this.collapsedFilterNodes.delete(node.id);\n } else {\n this.collapsedFilterNodes.add(node.id);\n }\n await this.vaultFilterService.storeCollapsedFilterNodes(this.collapsedFilterNodes);\n }\n\n async applyFilter(filter: VaultFilter) {\n if (filter.refreshCollectionsAndFolders) {\n await this.reloadCollectionsAndFolders(filter);\n filter = this.pruneInvalidatedFilterSelections(filter);\n }\n this.onFilterChange.emit(filter);\n }\n\n async reloadCollectionsAndFolders(filter: VaultFilter) {\n this.folders = await this.vaultFilterService.buildFolders(filter.selectedOrganizationId);\n this.collections = filter.myVaultOnly\n ? null\n : await this.vaultFilterService.buildCollections(filter.selectedOrganizationId);\n }\n\n async reloadOrganizations() {\n this.organizations = await this.vaultFilterService.buildOrganizations();\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n protected pruneInvalidatedFilterSelections(filter: VaultFilter): VaultFilter {\n filter = this.pruneInvalidFolderSelection(filter);\n filter = this.pruneInvalidCollectionSelection(filter);\n return filter;\n }\n\n protected pruneInvalidFolderSelection(filter: VaultFilter): VaultFilter {\n if (filter.selectedFolder && !this.folders?.hasId(filter.selectedFolderId)) {\n filter.selectedFolder = false;\n filter.selectedFolderId = null;\n }\n return filter;\n }\n\n protected pruneInvalidCollectionSelection(filter: VaultFilter): VaultFilter {\n if (\n filter.selectedCollectionId != null &&\n !this.collections?.hasId(filter.selectedCollectionId)\n ) {\n filter.selectedCollectionId = null;\n }\n return filter;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\nimport { DynamicTreeNode } from \"./models/dynamic-tree-node.model\";\n\n@Injectable()\nexport class VaultFilterService {\n constructor(\n protected stateService: StateService,\n protected organizationService: OrganizationService,\n protected folderService: FolderService,\n protected cipherService: CipherService,\n protected collectionService: CollectionService,\n protected policyService: PolicyService\n ) {}\n\n async storeCollapsedFilterNodes(collapsedFilterNodes: Set): Promise {\n await this.stateService.setCollapsedGroupings(Array.from(collapsedFilterNodes));\n }\n\n async buildCollapsedFilterNodes(): Promise> {\n return new Set(await this.stateService.getCollapsedGroupings());\n }\n\n async buildOrganizations(): Promise {\n return await this.organizationService.getAll();\n }\n\n async buildFolders(organizationId?: string): Promise> {\n const storedFolders = await this.folderService.getAllDecrypted();\n let folders: FolderView[];\n if (organizationId != null) {\n const ciphers = await this.cipherService.getAllDecrypted();\n const orgCiphers = ciphers.filter((c) => c.organizationId == organizationId);\n folders = storedFolders.filter(\n (f) =>\n orgCiphers.filter((oc) => oc.folderId == f.id).length > 0 ||\n ciphers.filter((c) => c.folderId == f.id).length < 1\n );\n } else {\n folders = storedFolders;\n }\n const nestedFolders = await this.folderService.getAllNested(folders);\n return new DynamicTreeNode({\n fullList: folders,\n nestedList: nestedFolders,\n });\n }\n\n async buildCollections(organizationId?: string): Promise> {\n const storedCollections = await this.collectionService.getAllDecrypted();\n let collections: CollectionView[];\n if (organizationId != null) {\n collections = storedCollections.filter((c) => c.organizationId === organizationId);\n } else {\n collections = storedCollections;\n }\n const nestedCollections = await this.collectionService.getAllNested(collections);\n return new DynamicTreeNode({\n fullList: collections,\n nestedList: nestedCollections,\n });\n }\n\n async checkForSingleOrganizationPolicy(): Promise {\n return await this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n async checkForPersonalOwnershipPolicy(): Promise {\n return await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n/*\n An updated pipe that sanitizes HTML, highlights numbers and special characters (in different colors each)\n and handles Unicode / Emoji characters correctly.\n*/\n@Pipe({ name: \"colorPassword\" })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n const template = (character: string, type: string) =>\n `${character}`;\n const colorizedPassword = this.generateTemplate(password, template);\n return colorizedPassword;\n }\n\n protected generateTemplate(\n password: string,\n templateGenerator: (chararacter: string, type: string, index?: number) => string\n ) {\n // Convert to an array to handle cases that stings have special characters, ie: emoji.\n const passwordArray = Array.from(password);\n let colorizedPassword = \"\";\n for (let i = 0; i < passwordArray.length; i++) {\n let character = passwordArray[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case \"&\":\n character = \"&\";\n isSpecial = true;\n break;\n case \"<\":\n character = \"<\";\n isSpecial = true;\n break;\n case \">\":\n character = \">\";\n isSpecial = true;\n break;\n case \" \":\n character = \" \";\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = \"letter\";\n if (character.match(Utils.regexpEmojiPresentation)) {\n type = \"emoji\";\n } else if (isSpecial || character.match(/[^\\w ]/)) {\n type = \"special\";\n } else if (character.match(/\\d/)) {\n type = \"number\";\n }\n colorizedPassword += templateGenerator(character, type, i);\n }\n return colorizedPassword;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\ninterface CardRuleEntry {\n cardLength: number;\n blocks: number[];\n}\n\n// See https://baymard.com/checkout-usability/credit-card-patterns for\n// all possible credit card spacing patterns. For now, we just handle\n// the below.\nconst numberFormats: Record = {\n Visa: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n Mastercard: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n Maestro: [\n { cardLength: 16, blocks: [4, 4, 4, 4] },\n { cardLength: 13, blocks: [4, 4, 5] },\n { cardLength: 15, blocks: [4, 6, 5] },\n { cardLength: 19, blocks: [4, 4, 4, 4, 3] },\n ],\n Discover: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n \"Diners Club\": [{ cardLength: 14, blocks: [4, 6, 4] }],\n JCB: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n UnionPay: [\n { cardLength: 16, blocks: [4, 4, 4, 4] },\n { cardLength: 19, blocks: [6, 13] },\n ],\n Amex: [{ cardLength: 15, blocks: [4, 6, 5] }],\n Other: [{ cardLength: 16, blocks: [4, 4, 4, 4] }],\n};\n\n@Pipe({ name: \"creditCardNumber\" })\nexport class CreditCardNumberPipe implements PipeTransform {\n transform(creditCardNumber: string, brand: string): string {\n let rules = numberFormats[brand];\n\n if (rules == null) {\n rules = numberFormats[\"Other\"];\n }\n\n const cardLength = creditCardNumber.length;\n\n let matchingRule = rules.find((r) => r.cardLength == cardLength);\n if (matchingRule == null) {\n matchingRule = rules[0];\n }\n\n const blocks = matchingRule.blocks;\n\n const chunks: string[] = [];\n let total = 0;\n\n blocks.forEach((c) => {\n chunks.push(creditCardNumber.slice(total, total + c));\n total += c;\n });\n\n // Append the remaining part\n if (cardLength > total) {\n chunks.push(creditCardNumber.slice(total));\n }\n\n return chunks.join(\" \");\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"ellipsis\",\n})\nexport class EllipsisPipe implements PipeTransform {\n transform(value: string, limit = 25, completeWords = false, ellipsis = \"...\") {\n if (value.length <= limit) {\n return value;\n }\n limit -= ellipsis.length;\n if (completeWords && value.length > limit && value.indexOf(\" \") > 0) {\n limit = value.substring(0, limit).lastIndexOf(\" \");\n }\n return value.substring(0, limit) + ellipsis;\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Pipe({\n name: \"i18n\",\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) {}\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: \"search\",\n})\nexport class SearchPipe implements PipeTransform {\n transform(\n items: any[],\n searchText: string,\n prop1?: string,\n prop2?: string,\n prop3?: string\n ): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter((i) => {\n if (\n prop1 != null &&\n i[prop1] != null &&\n i[prop1].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n if (\n prop2 != null &&\n i[prop2] != null &&\n i[prop2].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n if (\n prop3 != null &&\n i[prop3] != null &&\n i[prop3].toString().toLowerCase().indexOf(searchText) > -1\n ) {\n return true;\n }\n return false;\n });\n }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\ninterface User {\n name?: string;\n email: string;\n}\n\n@Pipe({\n name: \"userName\",\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user?: User): string {\n if (user == null) {\n return null;\n }\n\n return user.name == null || user.name.trim() === \"\" ? user.email : user.name;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { BroadcasterService as BaseBroadcasterService } from \"jslib-common/services/broadcaster.service\";\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {}\n","import { InjectionToken, Injector, LOCALE_ID, NgModule } from \"@angular/core\";\n\nimport { ApiService as ApiServiceAbstraction } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService as AppIdServiceAbstraction } from \"jslib-common/abstractions/appId.service\";\nimport { AuditService as AuditServiceAbstraction } from \"jslib-common/abstractions/audit.service\";\nimport { AuthService as AuthServiceAbstraction } from \"jslib-common/abstractions/auth.service\";\nimport { BroadcasterService as BroadcasterServiceAbstraction } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService as CipherServiceAbstraction } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService as CollectionServiceAbstraction } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService as EnvironmentServiceAbstraction } from \"jslib-common/abstractions/environment.service\";\nimport { EventService as EventServiceAbstraction } from \"jslib-common/abstractions/event.service\";\nimport { ExportService as ExportServiceAbstraction } from \"jslib-common/abstractions/export.service\";\nimport { FileUploadService as FileUploadServiceAbstraction } from \"jslib-common/abstractions/fileUpload.service\";\nimport { FolderService as FolderServiceAbstraction } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService as MessagingServiceAbstraction } from \"jslib-common/abstractions/messaging.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"jslib-common/abstractions/notifications.service\";\nimport { OrganizationService as OrganizationServiceAbstraction } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService as PasswordGenerationServiceAbstraction } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService as PolicyServiceAbstraction } from \"jslib-common/abstractions/policy.service\";\nimport { ProviderService as ProviderServiceAbstraction } from \"jslib-common/abstractions/provider.service\";\nimport { SearchService as SearchServiceAbstraction } from \"jslib-common/abstractions/search.service\";\nimport { SendService as SendServiceAbstraction } from \"jslib-common/abstractions/send.service\";\nimport { SettingsService as SettingsServiceAbstraction } from \"jslib-common/abstractions/settings.service\";\nimport { StateService as StateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { StateMigrationService as StateMigrationServiceAbstraction } from \"jslib-common/abstractions/stateMigration.service\";\nimport { StorageService as StorageServiceAbstraction } from \"jslib-common/abstractions/storage.service\";\nimport { SyncService as SyncServiceAbstraction } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService as TokenServiceAbstraction } from \"jslib-common/abstractions/token.service\";\nimport { TotpService as TotpServiceAbstraction } from \"jslib-common/abstractions/totp.service\";\nimport { TwoFactorService as TwoFactorServiceAbstraction } from \"jslib-common/abstractions/twoFactor.service\";\nimport { UserVerificationService as UserVerificationServiceAbstraction } from \"jslib-common/abstractions/userVerification.service\";\nimport { UsernameGenerationService as UsernameGenerationServiceAbstraction } from \"jslib-common/abstractions/usernameGeneration.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { StateFactory } from \"jslib-common/factories/stateFactory\";\nimport { Account } from \"jslib-common/models/domain/account\";\nimport { GlobalState } from \"jslib-common/models/domain/globalState\";\nimport { ApiService } from \"jslib-common/services/api.service\";\nimport { AppIdService } from \"jslib-common/services/appId.service\";\nimport { AuditService } from \"jslib-common/services/audit.service\";\nimport { AuthService } from \"jslib-common/services/auth.service\";\nimport { CipherService } from \"jslib-common/services/cipher.service\";\nimport { CollectionService } from \"jslib-common/services/collection.service\";\nimport { ConsoleLogService } from \"jslib-common/services/consoleLog.service\";\nimport { CryptoService } from \"jslib-common/services/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/services/environment.service\";\nimport { EventService } from \"jslib-common/services/event.service\";\nimport { ExportService } from \"jslib-common/services/export.service\";\nimport { FileUploadService } from \"jslib-common/services/fileUpload.service\";\nimport { FolderService } from \"jslib-common/services/folder.service\";\nimport { KeyConnectorService } from \"jslib-common/services/keyConnector.service\";\nimport { NotificationsService } from \"jslib-common/services/notifications.service\";\nimport { OrganizationService } from \"jslib-common/services/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/services/passwordGeneration.service\";\nimport { PolicyService } from \"jslib-common/services/policy.service\";\nimport { ProviderService } from \"jslib-common/services/provider.service\";\nimport { SearchService } from \"jslib-common/services/search.service\";\nimport { SendService } from \"jslib-common/services/send.service\";\nimport { SettingsService } from \"jslib-common/services/settings.service\";\nimport { StateService } from \"jslib-common/services/state.service\";\nimport { StateMigrationService } from \"jslib-common/services/stateMigration.service\";\nimport { SyncService } from \"jslib-common/services/sync.service\";\nimport { TokenService } from \"jslib-common/services/token.service\";\nimport { TotpService } from \"jslib-common/services/totp.service\";\nimport { TwoFactorService } from \"jslib-common/services/twoFactor.service\";\nimport { UserVerificationService } from \"jslib-common/services/userVerification.service\";\nimport { UsernameGenerationService } from \"jslib-common/services/usernameGeneration.service\";\nimport { VaultTimeoutService } from \"jslib-common/services/vaultTimeout.service\";\nimport { WebCryptoFunctionService } from \"jslib-common/services/webCryptoFunction.service\";\n\nimport { AuthGuard } from \"../guards/auth.guard\";\nimport { LockGuard } from \"../guards/lock.guard\";\nimport { UnauthGuard } from \"../guards/unauth.guard\";\n\nimport { BroadcasterService } from \"./broadcaster.service\";\nimport { ModalService } from \"./modal.service\";\nimport { PasswordRepromptService } from \"./passwordReprompt.service\";\nimport { ValidationService } from \"./validation.service\";\n\nexport const WINDOW = new InjectionToken(\"WINDOW\");\nexport const SECURE_STORAGE = new InjectionToken(\"SECURE_STORAGE\");\nexport const STATE_FACTORY = new InjectionToken(\"STATE_FACTORY\");\nexport const STATE_SERVICE_USE_CACHE = new InjectionToken(\"STATE_SERVICE_USE_CACHE\");\nexport const LOGOUT_CALLBACK = new InjectionToken<(expired: boolean, userId?: string) => void>(\n \"LOGOUT_CALLBACK\"\n);\nexport const LOCKED_CALLBACK = new InjectionToken<() => void>(\"LOCKED_CALLBACK\");\nexport const CLIENT_TYPE = new InjectionToken(\"CLIENT_TYPE\");\nexport const LOCALES_DIRECTORY = new InjectionToken(\"LOCALES_DIRECTORY\");\nexport const SYSTEM_LANGUAGE = new InjectionToken(\"SYSTEM_LANGUAGE\");\n\n@NgModule({\n declarations: [],\n providers: [\n ValidationService,\n AuthGuard,\n UnauthGuard,\n LockGuard,\n ModalService,\n { provide: WINDOW, useValue: window },\n {\n provide: LOCALE_ID,\n useFactory: (i18nService: I18nServiceAbstraction) => i18nService.translationLocale,\n deps: [I18nServiceAbstraction],\n },\n {\n provide: LOCALES_DIRECTORY,\n useValue: \"./locales\",\n },\n {\n provide: SYSTEM_LANGUAGE,\n useFactory: (window: Window) => window.navigator.language,\n deps: [WINDOW],\n },\n {\n provide: STATE_FACTORY,\n useValue: new StateFactory(GlobalState, Account),\n },\n {\n provide: STATE_SERVICE_USE_CACHE,\n useValue: true,\n },\n {\n provide: LOGOUT_CALLBACK,\n useFactory:\n (messagingService: MessagingServiceAbstraction) => (expired: boolean, userId?: string) =>\n messagingService.send(\"logout\", { expired: expired, userId: userId }),\n deps: [MessagingServiceAbstraction],\n },\n {\n provide: LOCKED_CALLBACK,\n useValue: null,\n },\n {\n provide: AppIdServiceAbstraction,\n useClass: AppIdService,\n deps: [StorageServiceAbstraction],\n },\n {\n provide: AuditServiceAbstraction,\n useClass: AuditService,\n deps: [CryptoFunctionServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: AuthServiceAbstraction,\n useClass: AuthService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n TokenServiceAbstraction,\n AppIdServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n MessagingServiceAbstraction,\n LogService,\n KeyConnectorServiceAbstraction,\n EnvironmentServiceAbstraction,\n StateServiceAbstraction,\n TwoFactorServiceAbstraction,\n I18nServiceAbstraction,\n ],\n },\n {\n provide: CipherServiceAbstraction,\n useFactory: (\n cryptoService: CryptoServiceAbstraction,\n settingsService: SettingsServiceAbstraction,\n apiService: ApiServiceAbstraction,\n fileUploadService: FileUploadServiceAbstraction,\n i18nService: I18nServiceAbstraction,\n injector: Injector,\n logService: LogService,\n stateService: StateServiceAbstraction\n ) =>\n new CipherService(\n cryptoService,\n settingsService,\n apiService,\n fileUploadService,\n i18nService,\n () => injector.get(SearchServiceAbstraction),\n logService,\n stateService\n ),\n deps: [\n CryptoServiceAbstraction,\n SettingsServiceAbstraction,\n ApiServiceAbstraction,\n FileUploadServiceAbstraction,\n I18nServiceAbstraction,\n Injector, // TODO: Get rid of this circular dependency!\n LogService,\n StateServiceAbstraction,\n ],\n },\n {\n provide: FolderServiceAbstraction,\n useClass: FolderService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n I18nServiceAbstraction,\n CipherServiceAbstraction,\n StateServiceAbstraction,\n ],\n },\n { provide: LogService, useFactory: () => new ConsoleLogService(false) },\n {\n provide: CollectionServiceAbstraction,\n useClass: CollectionService,\n deps: [CryptoServiceAbstraction, I18nServiceAbstraction, StateServiceAbstraction],\n },\n {\n provide: EnvironmentServiceAbstraction,\n useClass: EnvironmentService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: TotpServiceAbstraction,\n useClass: TotpService,\n deps: [CryptoFunctionServiceAbstraction, LogService, StateServiceAbstraction],\n },\n { provide: TokenServiceAbstraction, useClass: TokenService, deps: [StateServiceAbstraction] },\n {\n provide: CryptoServiceAbstraction,\n useClass: CryptoService,\n deps: [\n CryptoFunctionServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n LogService,\n StateServiceAbstraction,\n ],\n },\n {\n provide: PasswordGenerationServiceAbstraction,\n useClass: PasswordGenerationService,\n deps: [CryptoServiceAbstraction, PolicyServiceAbstraction, StateServiceAbstraction],\n },\n {\n provide: UsernameGenerationServiceAbstraction,\n useClass: UsernameGenerationService,\n deps: [CryptoServiceAbstraction, StateServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: ApiServiceAbstraction,\n useClass: ApiService,\n deps: [\n TokenServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n EnvironmentServiceAbstraction,\n AppIdServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: FileUploadServiceAbstraction,\n useClass: FileUploadService,\n deps: [LogService, ApiServiceAbstraction],\n },\n {\n provide: SyncServiceAbstraction,\n useClass: SyncService,\n deps: [\n ApiServiceAbstraction,\n SettingsServiceAbstraction,\n FolderServiceAbstraction,\n CipherServiceAbstraction,\n CryptoServiceAbstraction,\n CollectionServiceAbstraction,\n MessagingServiceAbstraction,\n PolicyServiceAbstraction,\n SendServiceAbstraction,\n LogService,\n KeyConnectorServiceAbstraction,\n StateServiceAbstraction,\n OrganizationServiceAbstraction,\n ProviderServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n { provide: BroadcasterServiceAbstraction, useClass: BroadcasterService },\n {\n provide: SettingsServiceAbstraction,\n useClass: SettingsService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: VaultTimeoutServiceAbstraction,\n useClass: VaultTimeoutService,\n deps: [\n CipherServiceAbstraction,\n FolderServiceAbstraction,\n CollectionServiceAbstraction,\n CryptoServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n MessagingServiceAbstraction,\n SearchServiceAbstraction,\n TokenServiceAbstraction,\n PolicyServiceAbstraction,\n KeyConnectorServiceAbstraction,\n StateServiceAbstraction,\n AuthServiceAbstraction,\n LOCKED_CALLBACK,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: StateServiceAbstraction,\n useClass: StateService,\n deps: [\n StorageServiceAbstraction,\n SECURE_STORAGE,\n LogService,\n StateMigrationServiceAbstraction,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n ],\n },\n {\n provide: StateMigrationServiceAbstraction,\n useClass: StateMigrationService,\n deps: [StorageServiceAbstraction, SECURE_STORAGE, STATE_FACTORY],\n },\n {\n provide: ExportServiceAbstraction,\n useClass: ExportService,\n deps: [\n FolderServiceAbstraction,\n CipherServiceAbstraction,\n ApiServiceAbstraction,\n CryptoServiceAbstraction,\n ],\n },\n {\n provide: SearchServiceAbstraction,\n useClass: SearchService,\n deps: [CipherServiceAbstraction, LogService, I18nServiceAbstraction],\n },\n {\n provide: NotificationsServiceAbstraction,\n useClass: NotificationsService,\n deps: [\n SyncServiceAbstraction,\n AppIdServiceAbstraction,\n ApiServiceAbstraction,\n EnvironmentServiceAbstraction,\n LOGOUT_CALLBACK,\n LogService,\n StateServiceAbstraction,\n AuthServiceAbstraction,\n ],\n },\n {\n provide: CryptoFunctionServiceAbstraction,\n useClass: WebCryptoFunctionService,\n deps: [WINDOW],\n },\n {\n provide: EventServiceAbstraction,\n useClass: EventService,\n deps: [\n ApiServiceAbstraction,\n CipherServiceAbstraction,\n StateServiceAbstraction,\n LogService,\n OrganizationServiceAbstraction,\n ],\n },\n {\n provide: PolicyServiceAbstraction,\n useClass: PolicyService,\n deps: [StateServiceAbstraction, OrganizationServiceAbstraction, ApiServiceAbstraction],\n },\n {\n provide: SendServiceAbstraction,\n useClass: SendService,\n deps: [\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n FileUploadServiceAbstraction,\n I18nServiceAbstraction,\n CryptoFunctionServiceAbstraction,\n StateServiceAbstraction,\n ],\n },\n {\n provide: KeyConnectorServiceAbstraction,\n useClass: KeyConnectorService,\n deps: [\n StateServiceAbstraction,\n CryptoServiceAbstraction,\n ApiServiceAbstraction,\n TokenServiceAbstraction,\n LogService,\n OrganizationServiceAbstraction,\n CryptoFunctionServiceAbstraction,\n LOGOUT_CALLBACK,\n ],\n },\n {\n provide: UserVerificationServiceAbstraction,\n useClass: UserVerificationService,\n deps: [CryptoServiceAbstraction, I18nServiceAbstraction, ApiServiceAbstraction],\n },\n { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },\n {\n provide: OrganizationServiceAbstraction,\n useClass: OrganizationService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: ProviderServiceAbstraction,\n useClass: ProviderService,\n deps: [StateServiceAbstraction],\n },\n {\n provide: TwoFactorServiceAbstraction,\n useClass: TwoFactorService,\n deps: [I18nServiceAbstraction, PlatformUtilsServiceAbstraction],\n },\n ],\n})\nexport class JslibServicesModule {}\n","import {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n Type,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { first } from \"rxjs/operators\";\n\nimport { DynamicModalComponent } from \"../components/modal/dynamic-modal.component\";\nimport { ModalInjector } from \"../components/modal/modal-injector\";\nimport { ModalRef } from \"../components/modal/modal.ref\";\n\nexport class ModalConfig {\n data?: D;\n allowMultipleModals = false;\n}\n\n@Injectable()\nexport class ModalService {\n protected modalList: ComponentRef[] = [];\n\n // Lazy loaded modules are not available in componentFactoryResolver,\n // therefore modules needs to manually initialize their resolvers.\n private factoryResolvers: Map, ComponentFactoryResolver> = new Map();\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef,\n private injector: Injector\n ) {\n document.addEventListener(\"keyup\", (event) => {\n if (event.key === \"Escape\" && this.modalCount > 0) {\n this.topModal.instance.close();\n }\n });\n }\n\n get modalCount() {\n return this.modalList.length;\n }\n\n private get topModal() {\n return this.modalList[this.modalCount - 1];\n }\n\n async openViewRef(\n componentType: Type,\n viewContainerRef: ViewContainerRef,\n setComponentParameters: (component: T) => void = null\n ): Promise<[ModalRef, T]> {\n const [modalRef, modalComponentRef] = this.openInternal(componentType, null, false);\n modalComponentRef.instance.setComponentParameters = setComponentParameters;\n\n viewContainerRef.insert(modalComponentRef.hostView);\n\n await modalRef.onCreated.pipe(first()).toPromise();\n\n return [modalRef, modalComponentRef.instance.componentRef.instance];\n }\n\n open(componentType: Type, config?: ModalConfig) {\n if (!(config?.allowMultipleModals ?? false) && this.modalCount > 0) {\n return;\n }\n\n // eslint-disable-next-line\n const [modalRef, _] = this.openInternal(componentType, config, true);\n\n return modalRef;\n }\n\n registerComponentFactoryResolver(\n componentType: Type,\n componentFactoryResolver: ComponentFactoryResolver\n ): void {\n this.factoryResolvers.set(componentType, componentFactoryResolver);\n }\n\n resolveComponentFactory(componentType: Type): ComponentFactory {\n if (this.factoryResolvers.has(componentType)) {\n return this.factoryResolvers.get(componentType).resolveComponentFactory(componentType);\n }\n\n return this.componentFactoryResolver.resolveComponentFactory(componentType);\n }\n\n protected openInternal(\n componentType: Type,\n config?: ModalConfig,\n attachToDom?: boolean\n ): [ModalRef, ComponentRef] {\n const [modalRef, componentRef] = this.createModalComponent(config);\n componentRef.instance.childComponentType = componentType;\n\n if (attachToDom) {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n }\n\n modalRef.onClosed.pipe(first()).subscribe(() => {\n if (attachToDom) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n\n this.modalList.pop();\n if (this.modalCount > 0) {\n this.topModal.instance.getFocus();\n }\n });\n\n this.setupHandlers(modalRef);\n\n this.modalList.push(componentRef);\n\n return [modalRef, componentRef];\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n let backdrop: HTMLElement = null;\n\n // Add backdrop, setup [data-dismiss] handler.\n modalRef.onCreated.pipe(first()).subscribe((el) => {\n document.body.classList.add(\"modal-open\");\n\n const modalEl: HTMLElement = el.querySelector(\".modal\");\n const dialogEl = modalEl.querySelector(\".modal-dialog\") as HTMLElement;\n\n backdrop = document.createElement(\"div\");\n backdrop.className = \"modal-backdrop fade\";\n backdrop.style.zIndex = `${this.modalCount}040`;\n modalEl.prepend(backdrop);\n\n dialogEl.addEventListener(\"click\", (e: Event) => {\n e.stopPropagation();\n });\n dialogEl.style.zIndex = `${this.modalCount}050`;\n\n const modals = Array.from(\n el.querySelectorAll('.modal-backdrop, .modal *[data-dismiss=\"modal\"]')\n );\n for (const closeElement of modals) {\n closeElement.addEventListener(\"click\", () => {\n modalRef.close();\n });\n }\n });\n\n // onClose is used in Web to hook into bootstrap. On other projects we pipe it directly to closed.\n modalRef.onClose.pipe(first()).subscribe(() => {\n modalRef.closed();\n\n if (this.modalCount === 0) {\n document.body.classList.remove(\"modal-open\");\n }\n });\n }\n\n protected createModalComponent(\n config: ModalConfig\n ): [ModalRef, ComponentRef] {\n const modalRef = new ModalRef();\n\n const map = new WeakMap();\n map.set(ModalConfig, config);\n map.set(ModalRef, modalRef);\n\n const componentFactory =\n this.componentFactoryResolver.resolveComponentFactory(DynamicModalComponent);\n const componentRef = componentFactory.create(new ModalInjector(this.injector, map));\n\n return [modalRef, componentRef];\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\n\nimport { PasswordRepromptComponent } from \"../components/password-reprompt.component\";\n\nimport { ModalService } from \"./modal.service\";\n\n/**\n * Used to verify the user's Master Password for the \"Master Password Re-prompt\" feature only.\n * See UserVerificationService for any other situation where you need to verify the user's identity.\n */\n@Injectable()\nexport class PasswordRepromptService implements PasswordRepromptServiceAbstraction {\n protected component = PasswordRepromptComponent;\n\n constructor(\n private modalService: ModalService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n protectedFields() {\n return [\"TOTP\", \"Password\", \"H_Field\", \"Card Number\", \"Security Code\"];\n }\n\n async showPasswordPrompt() {\n if (!(await this.enabled())) {\n return true;\n }\n\n const ref = this.modalService.open(this.component, { allowMultipleModals: true });\n\n if (ref == null) {\n return false;\n }\n\n const result = await ref.onClosedPromise();\n return result === true;\n }\n\n async enabled() {\n return !(await this.keyConnectorService.getUsesKeyConnector());\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\n\n@Injectable()\nexport class ValidationService {\n constructor(\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t(\"unexpectedError\");\n let errors: string[] = [];\n\n if (data != null && typeof data === \"string\") {\n errors.push(data);\n } else if (data == null || typeof data !== \"object\") {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import { AbstractControl, ValidationErrors, Validators } from \"@angular/forms\";\n\n/**\n * Runs Validators.required on a field only if it's dirty. This prevents error messages from being displayed\n * to the user prematurely.\n */\nexport function dirtyRequired(control: AbstractControl): ValidationErrors | null {\n return control.dirty ? Validators.required(control) : null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidationErrors } from \"@angular/forms\";\n\nexport function notAllowedValueAsync(\n valueGetter: () => Promise,\n caseInsensitive = false\n): AsyncValidatorFn {\n return async (control: AbstractControl): Promise => {\n let notAllowedValue = await valueGetter();\n let controlValue = control.value;\n if (caseInsensitive) {\n notAllowedValue = notAllowedValue.toLowerCase();\n controlValue = controlValue.toLowerCase();\n }\n\n if (controlValue === notAllowedValue) {\n return {\n notAllowedValue: true,\n };\n }\n };\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\nimport {\n OrganizationConnectionConfigApis,\n OrganizationConnectionResponse,\n} from \"jslib-common/models/response/organizationConnectionResponse\";\n\nimport { PolicyType } from \"../enums/policyType\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { BitPayInvoiceRequest } from \"../models/request/bitPayInvoiceRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkRestoreRequest } from \"../models/request/cipherBulkRestoreRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { DeleteRecoverRequest } from \"../models/request/deleteRecoverRequest\";\nimport { EmailRequest } from \"../models/request/emailRequest\";\nimport { EmailTokenRequest } from \"../models/request/emailTokenRequest\";\nimport { EmergencyAccessAcceptRequest } from \"../models/request/emergencyAccessAcceptRequest\";\nimport { EmergencyAccessConfirmRequest } from \"../models/request/emergencyAccessConfirmRequest\";\nimport { EmergencyAccessInviteRequest } from \"../models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessPasswordRequest } from \"../models/request/emergencyAccessPasswordRequest\";\nimport { EmergencyAccessUpdateRequest } from \"../models/request/emergencyAccessUpdateRequest\";\nimport { EventRequest } from \"../models/request/eventRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { GroupRequest } from \"../models/request/groupRequest\";\nimport { IapCheckRequest } from \"../models/request/iapCheckRequest\";\nimport { ApiTokenRequest } from \"../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../models/request/identityToken/ssoTokenRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportDirectoryRequest } from \"../models/request/importDirectoryRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KdfRequest } from \"../models/request/kdfRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { OrganizationSponsorshipCreateRequest } from \"../models/request/organization/organizationSponsorshipCreateRequest\";\nimport { OrganizationSponsorshipRedeemRequest } from \"../models/request/organization/organizationSponsorshipRedeemRequest\";\nimport { OrganizationSsoRequest } from \"../models/request/organization/organizationSsoRequest\";\nimport { OrganizationApiKeyRequest } from \"../models/request/organizationApiKeyRequest\";\nimport { OrganizationCreateRequest } from \"../models/request/organizationCreateRequest\";\nimport { OrganizationImportRequest } from \"../models/request/organizationImportRequest\";\nimport { OrganizationKeysRequest } from \"../models/request/organizationKeysRequest\";\nimport { OrganizationSubscriptionUpdateRequest } from \"../models/request/organizationSubscriptionUpdateRequest\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../models/request/organizationTaxInfoUpdateRequest\";\nimport { OrganizationUpdateRequest } from \"../models/request/organizationUpdateRequest\";\nimport { OrganizationUpgradeRequest } from \"../models/request/organizationUpgradeRequest\";\nimport { OrganizationUserAcceptRequest } from \"../models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserBulkConfirmRequest } from \"../models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"../models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"../models/request/organizationUserConfirmRequest\";\nimport { OrganizationUserInviteRequest } from \"../models/request/organizationUserInviteRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"../models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { OrganizationUserResetPasswordRequest } from \"../models/request/organizationUserResetPasswordRequest\";\nimport { OrganizationUserUpdateGroupsRequest } from \"../models/request/organizationUserUpdateGroupsRequest\";\nimport { OrganizationUserUpdateRequest } from \"../models/request/organizationUserUpdateRequest\";\nimport { PasswordHintRequest } from \"../models/request/passwordHintRequest\";\nimport { PasswordRequest } from \"../models/request/passwordRequest\";\nimport { PaymentRequest } from \"../models/request/paymentRequest\";\nimport { PolicyRequest } from \"../models/request/policyRequest\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ProviderAddOrganizationRequest } from \"../models/request/provider/providerAddOrganizationRequest\";\nimport { ProviderOrganizationCreateRequest } from \"../models/request/provider/providerOrganizationCreateRequest\";\nimport { ProviderSetupRequest } from \"../models/request/provider/providerSetupRequest\";\nimport { ProviderUpdateRequest } from \"../models/request/provider/providerUpdateRequest\";\nimport { ProviderUserAcceptRequest } from \"../models/request/provider/providerUserAcceptRequest\";\nimport { ProviderUserBulkConfirmRequest } from \"../models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"../models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"../models/request/provider/providerUserConfirmRequest\";\nimport { ProviderUserInviteRequest } from \"../models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"../models/request/provider/providerUserUpdateRequest\";\nimport { RegisterRequest } from \"../models/request/registerRequest\";\nimport { SeatRequest } from \"../models/request/seatRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { SelectionReadOnlyRequest } from \"../models/request/selectionReadOnlyRequest\";\nimport { SendAccessRequest } from \"../models/request/sendAccessRequest\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { SetPasswordRequest } from \"../models/request/setPasswordRequest\";\nimport { StorageRequest } from \"../models/request/storageRequest\";\nimport { TaxInfoUpdateRequest } from \"../models/request/taxInfoUpdateRequest\";\nimport { TwoFactorEmailRequest } from \"../models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviderRequest } from \"../models/request/twoFactorProviderRequest\";\nimport { TwoFactorRecoveryRequest } from \"../models/request/twoFactorRecoveryRequest\";\nimport { UpdateDomainsRequest } from \"../models/request/updateDomainsRequest\";\nimport { UpdateKeyRequest } from \"../models/request/updateKeyRequest\";\nimport { UpdateProfileRequest } from \"../models/request/updateProfileRequest\";\nimport { UpdateTempPasswordRequest } from \"../models/request/updateTempPasswordRequest\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"../models/request/updateTwoFactorAuthenticatorRequest\";\nimport { UpdateTwoFactorDuoRequest } from \"../models/request/updateTwoFactorDuoRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"../models/request/updateTwoFactorEmailRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"../models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"../models/request/updateTwoFactorWebAuthnRequest\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"../models/request/updateTwoFactorYubioOtpRequest\";\nimport { VerifyBankRequest } from \"../models/request/verifyBankRequest\";\nimport { VerifyDeleteRecoverRequest } from \"../models/request/verifyDeleteRecoverRequest\";\nimport { VerifyEmailRequest } from \"../models/request/verifyEmailRequest\";\nimport { ApiKeyResponse } from \"../models/response/apiKeyResponse\";\nimport { AttachmentResponse } from \"../models/response/attachmentResponse\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { BillingResponse } from \"../models/response/billingResponse\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse,\n} from \"../models/response/emergencyAccessResponse\";\nimport { EventResponse } from \"../models/response/eventResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { GroupDetailsResponse, GroupResponse } from \"../models/response/groupResponse\";\nimport { IdentityCaptchaResponse } from \"../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\nimport { KeyConnectorUserKeyResponse } from \"../models/response/keyConnectorUserKeyResponse\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { OrganizationSsoResponse } from \"../models/response/organization/organizationSsoResponse\";\nimport { OrganizationApiKeyInformationResponse } from \"../models/response/organizationApiKeyInformationResponse\";\nimport { OrganizationAutoEnrollStatusResponse } from \"../models/response/organizationAutoEnrollStatusResponse\";\nimport { OrganizationKeysResponse } from \"../models/response/organizationKeysResponse\";\nimport { OrganizationResponse } from \"../models/response/organizationResponse\";\nimport { OrganizationSponsorshipSyncStatusResponse } from \"../models/response/organizationSponsorshipSyncStatusResponse\";\nimport { OrganizationSubscriptionResponse } from \"../models/response/organizationSubscriptionResponse\";\nimport { OrganizationUserBulkPublicKeyResponse } from \"../models/response/organizationUserBulkPublicKeyResponse\";\nimport { OrganizationUserBulkResponse } from \"../models/response/organizationUserBulkResponse\";\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from \"../models/response/organizationUserResponse\";\nimport { PaymentResponse } from \"../models/response/paymentResponse\";\nimport { PlanResponse } from \"../models/response/planResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { PreloginResponse } from \"../models/response/preloginResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport {\n ProviderOrganizationOrganizationDetailsResponse,\n ProviderOrganizationResponse,\n} from \"../models/response/provider/providerOrganizationResponse\";\nimport { ProviderResponse } from \"../models/response/provider/providerResponse\";\nimport { ProviderUserBulkPublicKeyResponse } from \"../models/response/provider/providerUserBulkPublicKeyResponse\";\nimport { ProviderUserBulkResponse } from \"../models/response/provider/providerUserBulkResponse\";\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse,\n} from \"../models/response/provider/providerUserResponse\";\nimport { SelectionReadOnlyResponse } from \"../models/response/selectionReadOnlyResponse\";\nimport { SendAccessResponse } from \"../models/response/sendAccessResponse\";\nimport { SendFileDownloadDataResponse } from \"../models/response/sendFileDownloadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SubscriptionResponse } from \"../models/response/subscriptionResponse\";\nimport { SyncResponse } from \"../models/response/syncResponse\";\nimport { TaxInfoResponse } from \"../models/response/taxInfoResponse\";\nimport { TaxRateResponse } from \"../models/response/taxRateResponse\";\nimport { TwoFactorAuthenticatorResponse } from \"../models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"../models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"../models/response/twoFactorEmailResponse\";\nimport { TwoFactorProviderResponse } from \"../models/response/twoFactorProviderResponse\";\nimport { TwoFactorRecoverResponse } from \"../models/response/twoFactorRescoverResponse\";\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from \"../models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"../models/response/twoFactorYubiKeyResponse\";\nimport { UserKeyResponse } from \"../models/response/userKeyResponse\";\nimport { SendAccessView } from \"../models/view/sendAccessView\";\n\nexport abstract class ApiService {\n postIdentityToken: (\n request: PasswordTokenRequest | SsoTokenRequest | ApiTokenRequest\n ) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSetKeyConnectorKey: (request: SetKeyConnectorKeyRequest) => Promise;\n postSecurityStamp: (request: SecretVerificationRequest) => Promise;\n deleteAccount: (request: SecretVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: SecretVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n postUserApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n putUpdateTempPassword: (request: UpdateTempPasswordRequest) => Promise;\n postAccountRequestOTP: () => Promise;\n postAccountVerifyOTP: (request: VerifyOTPRequest) => Promise;\n postConvertToKeyConnector: () => Promise;\n\n getUserBillingHistory: () => Promise;\n getUserBillingPayment: () => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (\n id: string,\n request: SendAccessRequest,\n apiUrl?: string\n ) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postFileTypeSend: (request: SendRequest) => Promise;\n postSendFile: (sendId: string, fileId: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postSendFileLegacy: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (\n send: SendAccessView,\n request: SendAccessRequest,\n apiUrl?: string\n ) => Promise;\n renewSendFileUploadUrl: (sendId: string, fileId: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getAttachmentData: (\n cipherId: string,\n attachmentId: string,\n emergencyAccessId?: string\n ) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: SecretVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (\n organizationId: string,\n request: ImportOrganizationCiphersRequest\n ) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (\n request: CipherBulkRestoreRequest\n ) => Promise>;\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentLegacy: (id: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentAdminLegacy: (id: string, data: FormData) => Promise;\n postCipherAttachment: (\n id: string,\n request: AttachmentRequest\n ) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (\n id: string,\n attachmentId: string,\n data: FormData,\n organizationId: string\n ) => Promise;\n renewAttachmentUploadUrl: (\n id: string,\n attachmentId: string\n ) => Promise;\n postAttachmentFile: (id: string, attachmentId: string, data: FormData) => Promise;\n\n getCollectionDetails: (\n organizationId: string,\n id: string\n ) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (\n organizationId: string,\n request: CollectionRequest\n ) => Promise;\n putCollectionUsers: (\n organizationId: string,\n id: string,\n request: SelectionReadOnlyRequest[]\n ) => Promise;\n putCollection: (\n organizationId: string,\n id: string,\n request: CollectionRequest\n ) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (\n organizationId: string,\n id: string,\n organizationUserId: string\n ) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (\n organizationId: string,\n token: string,\n email: string,\n organizationUserId: string\n ) => Promise>;\n getPoliciesByInvitedUser: (\n organizationId: string,\n userId: string\n ) => Promise>;\n putPolicy: (\n organizationId: string,\n type: PolicyType,\n request: PolicyRequest\n ) => Promise;\n\n getOrganizationUser: (\n organizationId: string,\n id: string\n ) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (\n organizationId: string\n ) => Promise>;\n getOrganizationUserResetPasswordDetails: (\n organizationId: string,\n id: string\n ) => Promise;\n postOrganizationUserInvite: (\n organizationId: string,\n request: OrganizationUserInviteRequest\n ) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postManyOrganizationUserReinvite: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n postOrganizationUserAccept: (\n organizationId: string,\n id: string,\n request: OrganizationUserAcceptRequest\n ) => Promise;\n postOrganizationUserConfirm: (\n organizationId: string,\n id: string,\n request: OrganizationUserConfirmRequest\n ) => Promise;\n postOrganizationUsersPublicKey: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n postOrganizationUserBulkConfirm: (\n organizationId: string,\n request: OrganizationUserBulkConfirmRequest\n ) => Promise>;\n\n putOrganizationUser: (\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateRequest\n ) => Promise;\n putOrganizationUserGroups: (\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateGroupsRequest\n ) => Promise;\n putOrganizationUserResetPasswordEnrollment: (\n organizationId: string,\n userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest\n ) => Promise;\n putOrganizationUserResetPassword: (\n organizationId: string,\n id: string,\n request: OrganizationUserResetPasswordRequest\n ) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n deleteManyOrganizationUsers: (\n organizationId: string,\n request: OrganizationUserBulkRequest\n ) => Promise>;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n postPublicImportDirectory: (request: OrganizationImportRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (\n organizationId: string\n ) => Promise>;\n getTwoFactorAuthenticator: (\n request: SecretVerificationRequest\n ) => Promise;\n getTwoFactorEmail: (request: SecretVerificationRequest) => Promise;\n getTwoFactorDuo: (request: SecretVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (\n organizationId: string,\n request: SecretVerificationRequest\n ) => Promise;\n getTwoFactorYubiKey: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthn: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthnChallenge: (request: SecretVerificationRequest) => Promise;\n getTwoFactorRecover: (request: SecretVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest\n ) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (\n organizationId: string,\n request: UpdateTwoFactorDuoRequest\n ) => Promise;\n putTwoFactorYubiKey: (\n request: UpdateTwoFactorYubioOtpRequest\n ) => Promise;\n putTwoFactorWebAuthn: (\n request: UpdateTwoFactorWebAuthnRequest\n ) => Promise;\n deleteTwoFactorWebAuthn: (\n request: UpdateTwoFactorWebAuthnDeleteRequest\n ) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (\n organizationId: string,\n request: TwoFactorProviderRequest\n ) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (\n id: string,\n request: EmergencyAccessPasswordRequest\n ) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getCloudCommunicationsEnabled: () => Promise;\n abstract getOrganizationConnection(\n id: string,\n type: OrganizationConnectionType,\n configType: { new (response: any): TConfig }\n ): Promise>;\n abstract createOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig }\n ): Promise>;\n abstract updateOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig },\n organizationConnectionId: string\n ): Promise>;\n deleteOrganizationConnection: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n getOrganizationAutoEnrollStatus: (\n identifier: string\n ) => Promise;\n getOrganizationSso: (id: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (\n id: string,\n request: OrganizationUpdateRequest\n ) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (\n id: string,\n request: OrganizationApiKeyRequest\n ) => Promise;\n getOrganizationApiKeyInformation: (\n id: string\n ) => Promise>;\n postOrganizationRotateApiKey: (\n id: string,\n request: OrganizationApiKeyRequest\n ) => Promise;\n postOrganizationSso: (\n id: string,\n request: OrganizationSsoRequest\n ) => Promise;\n postOrganizationUpgrade: (\n id: string,\n request: OrganizationUpgradeRequest\n ) => Promise;\n postOrganizationUpdateSubscription: (\n id: string,\n request: OrganizationSubscriptionUpdateRequest\n ) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: SecretVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n getOrganizationKeys: (id: string) => Promise;\n postOrganizationKeys: (\n id: string,\n request: OrganizationKeysRequest\n ) => Promise;\n\n postProviderSetup: (id: string, request: ProviderSetupRequest) => Promise;\n getProvider: (id: string) => Promise;\n putProvider: (id: string, request: ProviderUpdateRequest) => Promise;\n\n getProviderUsers: (providerId: string) => Promise>;\n getProviderUser: (providerId: string, id: string) => Promise;\n postProviderUserInvite: (providerId: string, request: ProviderUserInviteRequest) => Promise;\n postProviderUserReinvite: (providerId: string, id: string) => Promise;\n postManyProviderUserReinvite: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n postProviderUserAccept: (\n providerId: string,\n id: string,\n request: ProviderUserAcceptRequest\n ) => Promise;\n postProviderUserConfirm: (\n providerId: string,\n id: string,\n request: ProviderUserConfirmRequest\n ) => Promise;\n postProviderUsersPublicKey: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n postProviderUserBulkConfirm: (\n providerId: string,\n request: ProviderUserBulkConfirmRequest\n ) => Promise>;\n putProviderUser: (\n providerId: string,\n id: string,\n request: ProviderUserUpdateRequest\n ) => Promise;\n deleteProviderUser: (organizationId: string, id: string) => Promise;\n deleteManyProviderUsers: (\n providerId: string,\n request: ProviderUserBulkRequest\n ) => Promise>;\n getProviderClients: (\n providerId: string\n ) => Promise>;\n postProviderAddOrganization: (\n providerId: string,\n request: ProviderAddOrganizationRequest\n ) => Promise;\n postProviderCreateOrganization: (\n providerId: string,\n request: ProviderOrganizationCreateRequest\n ) => Promise;\n deleteProviderOrganization: (providerId: string, organizationId: string) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsOrganization: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsOrganizationUser: (\n organizationId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsProvider: (\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n getEventsProviderUser: (\n providerId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n\n postCreateSponsorship: (\n sponsorshipOrgId: string,\n request: OrganizationSponsorshipCreateRequest\n ) => Promise;\n getSponsorshipSyncStatus: (\n sponsoredOrgId: string\n ) => Promise;\n deleteRevokeSponsorship: (sponsoringOrganizationId: string) => Promise;\n deleteRemoveSponsorship: (sponsoringOrgId: string) => Promise;\n postPreValidateSponsorshipToken: (sponsorshipToken: string) => Promise;\n postRedeemSponsorship: (\n sponsorshipToken: string,\n request: OrganizationSponsorshipRedeemRequest\n ) => Promise;\n postResendSponsorshipOffer: (sponsoringOrgId: string) => Promise;\n\n getUserKeyFromKeyConnector: (keyConnectorUrl: string) => Promise;\n postUserKeyToKeyConnector: (\n keyConnectorUrl: string,\n request: KeyConnectorUserKeyRequest\n ) => Promise;\n getKeyConnectorAlive: (keyConnectorUrl: string) => Promise;\n}\n","export abstract class AppIdService {\n getAppId: () => Promise;\n getAnonymousAppId: () => Promise;\n}\n","import { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { AuthResult } from \"../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TokenRequestTwoFactor } from \"../models/request/identityToken/tokenRequestTwoFactor\";\n\nexport abstract class AuthService {\n masterPasswordHash: string;\n email: string;\n logIn: (\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ) => Promise;\n logInTwoFactor: (\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ) => Promise;\n logOut: (callback: () => void) => void;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n getAuthStatus: (userId?: string) => Promise;\n}\n","export abstract class BroadcasterService {\n send: (message: any, id?: string) => void;\n subscribe: (id: string, messageCallback: (message: any) => any) => void;\n unsubscribe: (id: string) => void;\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport { Field } from \"../models/domain/field\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\n\nexport abstract class CipherService {\n clearCache: (userId?: string) => Promise;\n encrypt: (\n model: CipherView,\n key?: SymmetricCryptoKey,\n originalCipher?: Cipher\n ) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (\n url: string,\n includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType\n ) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getLastLaunchedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (\n cipher: CipherView,\n organizationId: string,\n collectionIds: string[]\n ) => Promise;\n shareManyWithServer: (\n ciphers: CipherView[],\n organizationId: string,\n collectionIds: string[]\n ) => Promise;\n saveAttachmentWithServer: (\n cipher: Cipher,\n unencryptedFile: any,\n admin?: boolean\n ) => Promise;\n saveAttachmentRawWithServer: (\n cipher: Cipher,\n filename: string,\n data: ArrayBuffer,\n admin?: boolean\n ) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (\n cipher: { id: string; revisionDate: string } | { id: string; revisionDate: string }[]\n ) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import { CollectionData } from \"../models/data/collectionData\";\nimport { Collection } from \"../models/domain/collection\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nexport abstract class CollectionService {\n clearCache: (userId?: string) => Promise;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import { HashPurpose } from \"../enums/hashPurpose\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { ProfileOrganizationResponse } from \"../models/response/profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"../models/response/profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"../models/response/profileProviderResponse\";\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise;\n setEncKey: (encKey: string) => Promise;\n setEncPrivateKey: (encPrivateKey: string) => Promise;\n setOrgKeys: (\n orgs: ProfileOrganizationResponse[],\n providerOrgs: ProfileProviderOrganizationResponse[]\n ) => Promise;\n setProviderKeys: (orgs: ProfileProviderResponse[]) => Promise;\n getKey: (keySuffix?: KeySuffixOptions, userId?: string) => Promise;\n getKeyFromStorage: (keySuffix: KeySuffixOptions, userId?: string) => Promise;\n getKeyHash: () => Promise;\n compareAndUpdateKeyHash: (masterPassword: string, key: SymmetricCryptoKey) => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n getProviderKey: (providerId: string) => Promise;\n hasKey: () => Promise;\n hasKeyInMemory: (userId?: string) => Promise;\n hasKeyStored: (keySuffix?: KeySuffixOptions, userId?: string) => Promise;\n hasEncKey: () => Promise;\n clearKey: (clearSecretStorage?: boolean, userId?: string) => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean, userId?: string) => Promise;\n clearKeyPair: (memoryOnly?: boolean, userId?: string) => Promise;\n clearOrgKeys: (memoryOnly?: boolean, userId?: string) => Promise;\n clearProviderKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: (userId?: string) => Promise;\n toggleKey: () => Promise;\n makeKey: (\n password: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ) => Promise;\n makeKeyFromPin: (\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number,\n protectedKeyCs?: EncString\n ) => Promise;\n makeShareKey: () => Promise<[EncString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, EncString]>;\n makePinKey: (\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (\n password: string,\n key: SymmetricCryptoKey,\n hashPurpose?: HashPurpose\n ) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n remakeEncKey: (\n key: SymmetricCryptoKey,\n encKey?: SymmetricCryptoKey\n ) => Promise<[SymmetricCryptoKey, EncString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string, privateKeyValue?: ArrayBuffer) => Promise;\n decryptToBytes: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n validateKey: (key: SymmetricCryptoKey) => Promise;\n}\n","import { DecryptParameters } from \"../models/domain/decryptParameters\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (\n password: string | ArrayBuffer,\n salt: string | ArrayBuffer,\n algorithm: \"sha256\" | \"sha512\",\n iterations: number\n ) => Promise;\n hkdf: (\n ikm: ArrayBuffer,\n salt: string | ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ) => Promise;\n hkdfExpand: (\n prk: ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ) => Promise;\n hash: (\n value: string | ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"\n ) => Promise;\n hmac: (\n value: ArrayBuffer,\n key: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ) => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (\n value: ArrayBuffer | string,\n key: ArrayBuffer | string,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ) => Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ) => DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (\n data: ArrayBuffer,\n publicKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ) => Promise;\n rsaDecrypt: (\n data: ArrayBuffer,\n privateKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ) => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { Observable } from \"rxjs\";\n\nexport type Urls = {\n base?: string;\n webVault?: string;\n api?: string;\n identity?: string;\n icons?: string;\n notifications?: string;\n events?: string;\n keyConnector?: string;\n};\n\nexport type PayPalConfig = {\n businessId?: string;\n buttonAction?: string;\n};\n\nexport abstract class EnvironmentService {\n urls: Observable;\n\n hasBaseUrl: () => boolean;\n getNotificationsUrl: () => string;\n getWebVaultUrl: () => string;\n getSendUrl: () => string;\n getIconsUrl: () => string;\n getApiUrl: () => string;\n getIdentityUrl: () => string;\n getEventsUrl: () => string;\n getKeyConnectorUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: Urls) => Promise;\n getUrls: () => Urls;\n}\n","import { EventType } from \"../enums/eventType\";\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: (userId?: string) => Promise;\n clearEvents: (userId?: string) => Promise;\n}\n","import { EventView } from \"../models/view/eventView\";\n\nexport type ExportFormat = \"csv\" | \"json\" | \"encrypted_json\";\n\nexport abstract class ExportService {\n getExport: (format?: ExportFormat, organizationId?: string) => Promise;\n getPasswordProtectedExport: (password: string, organizationId?: string) => Promise;\n getOrganizationExport: (organizationId: string, format?: ExportFormat) => Promise;\n getEventExport: (events: EventView[]) => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\n\nexport abstract class FileUploadService {\n uploadSendFile: (\n uploadData: SendFileUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) => Promise;\n uploadCipherAttachment: (\n admin: boolean,\n uploadData: AttachmentUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) => Promise;\n}\n","import { FolderData } from \"../models/data/folderData\";\nimport { Folder } from \"../models/domain/folder\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { FolderView } from \"../models/view/folderView\";\n\nexport abstract class FolderService {\n clearCache: (userId?: string) => Promise;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (folders?: FolderView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { ImportOption, ImportType } from \"../enums/importOptions\";\nimport { ImportError } from \"../importers/importError\";\nimport { Importer } from \"../importers/importer\";\n\nexport abstract class ImportService {\n featuredImportOptions: readonly ImportOption[];\n regularImportOptions: readonly ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (\n importer: Importer,\n fileContents: string,\n organizationId?: string\n ) => Promise;\n getImporter: (\n format: ImportType | \"bitwardenpasswordprotected\",\n organizationId: string,\n password?: string\n ) => Importer;\n}\n","import { Organization } from \"../models/domain/organization\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport abstract class KeyConnectorService {\n getAndSetKey: (url?: string) => Promise;\n getManagingOrganization: () => Promise;\n getUsesKeyConnector: () => Promise;\n migrateUser: () => Promise;\n userNeedsMigration: () => Promise;\n convertNewSsoUserToKeyConnector: (\n tokenResponse: IdentityTokenResponse,\n orgId: string\n ) => Promise;\n setUsesKeyConnector: (enabled: boolean) => Promise;\n setConvertAccountRequired: (status: boolean) => Promise;\n getConvertAccountRequired: () => Promise;\n removeConvertAccountRequired: () => Promise;\n clear: () => Promise;\n}\n","import { LogLevelType } from \"../enums/logLevelType\";\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","export abstract class NotificationsService {\n init: () => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","import { OrganizationData } from \"../models/data/organizationData\";\nimport { Organization } from \"../models/domain/organization\";\n\nexport abstract class OrganizationService {\n get: (id: string) => Promise;\n getByIdentifier: (identifier: string) => Promise;\n getAll: (userId?: string) => Promise;\n save: (orgs: { [id: string]: OrganizationData }) => Promise;\n canManageSponsorships: () => Promise;\n hasOrganizations: (userId?: string) => Promise;\n}\n","import * as zxcvbn from \"zxcvbn\";\n\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { PasswordGeneratorPolicyOptions } from \"../models/domain/passwordGeneratorPolicyOptions\";\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (\n options: any\n ) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: (userId?: string) => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","export abstract class PasswordRepromptService {\n protectedFields: () => string[];\n showPasswordPrompt: () => Promise;\n enabled: () => Promise;\n}\n","import { ClientType } from \"../enums/clientType\";\nimport { DeviceType } from \"../enums/deviceType\";\nimport { ThemeType } from \"../enums/themeType\";\n\ninterface ToastOptions {\n timeout?: number;\n}\n\nexport abstract class PlatformUtilsService {\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n getClientType: () => ClientType;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isMacAppStore: () => boolean;\n isViewOpen: () => Promise;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => Promise;\n supportsWebAuthn: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (\n type: \"error\" | \"success\" | \"warning\" | \"info\",\n title: string,\n text: string | string[],\n options?: ToastOptions\n ) => void;\n showDialog: (\n body: string,\n title?: string,\n confirmText?: string,\n cancelText?: string,\n type?: string,\n bodyIsHtml?: boolean\n ) => Promise;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void | boolean;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => Promise;\n onDefaultSystemThemeChange: (\n callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown\n ) => unknown;\n getEffectiveTheme: () => Promise;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from \"../enums/policyType\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"../models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"../models/domain/policy\";\nimport { ResetPasswordPolicyOptions } from \"../models/domain/resetPasswordPolicyOptions\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\n\nexport abstract class PolicyService {\n clearCache: () => void;\n getAll: (type?: PolicyType, userId?: string) => Promise;\n getPolicyForOrganization: (policyType: PolicyType, organizationId: string) => Promise;\n replace: (policies: { [id: string]: PolicyData }) => Promise;\n clear: (userId?: string) => Promise;\n getMasterPasswordPoliciesForInvitedUsers: (orgId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (\n passwordStrength: number,\n newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions\n ) => boolean;\n getResetPasswordPolicyOptions: (\n policies: Policy[],\n orgId: string\n ) => [ResetPasswordPolicyOptions, boolean];\n mapPoliciesFromToken: (policiesResponse: ListResponse) => Policy[];\n policyAppliesToUser: (\n policyType: PolicyType,\n policyFilter?: (policy: Policy) => boolean,\n userId?: string\n ) => Promise;\n}\n","import { ProviderData } from \"../models/data/providerData\";\nimport { Provider } from \"../models/domain/provider\";\n\nexport abstract class ProviderService {\n get: (id: string) => Promise;\n getAll: () => Promise;\n save: (providers: { [id: string]: ProviderData }) => Promise;\n}\n","import { CipherView } from \"../models/view/cipherView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class SearchService {\n indexedEntityId?: string = null;\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: (indexedEntityGuid?: string, ciphersToIndex?: CipherView[]) => Promise;\n searchCiphers: (\n query: string,\n filter?: ((cipher: CipherView) => boolean) | ((cipher: CipherView) => boolean)[],\n ciphers?: CipherView[]\n ) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","import { SendData } from \"../models/data/sendData\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { Send } from \"../models/domain/send\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class SendService {\n clearCache: () => Promise;\n encrypt: (\n model: SendView,\n file: File | ArrayBuffer,\n password: string,\n key?: SymmetricCryptoKey\n ) => Promise<[Send, EncArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, EncArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","export abstract class SettingsService {\n clearCache: () => Promise;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId?: string) => Promise;\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { KdfType } from \"../enums/kdfType\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account } from \"../models/domain/account\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { Policy } from \"../models/domain/policy\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { WindowState } from \"../models/domain/windowState\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport abstract class StateService {\n accounts: BehaviorSubject<{ [userId: string]: T }>;\n activeAccount: BehaviorSubject;\n\n addAccount: (account: T) => Promise;\n setActiveUser: (userId: string) => Promise;\n clean: (options?: StorageOptions) => Promise;\n init: () => Promise;\n\n getAccessToken: (options?: StorageOptions) => Promise;\n setAccessToken: (value: string, options?: StorageOptions) => Promise;\n getAddEditCipherInfo: (options?: StorageOptions) => Promise;\n setAddEditCipherInfo: (value: any, options?: StorageOptions) => Promise;\n getAlwaysShowDock: (options?: StorageOptions) => Promise;\n setAlwaysShowDock: (value: boolean, options?: StorageOptions) => Promise;\n getApiKeyClientId: (options?: StorageOptions) => Promise;\n setApiKeyClientId: (value: string, options?: StorageOptions) => Promise;\n getApiKeyClientSecret: (options?: StorageOptions) => Promise;\n setApiKeyClientSecret: (value: string, options?: StorageOptions) => Promise;\n getAutoConfirmFingerPrints: (options?: StorageOptions) => Promise;\n setAutoConfirmFingerprints: (value: boolean, options?: StorageOptions) => Promise;\n getAutoFillOnPageLoadDefault: (options?: StorageOptions) => Promise;\n setAutoFillOnPageLoadDefault: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricAwaitingAcceptance: (options?: StorageOptions) => Promise;\n setBiometricAwaitingAcceptance: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricFingerprintValidated: (options?: StorageOptions) => Promise;\n setBiometricFingerprintValidated: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricLocked: (options?: StorageOptions) => Promise;\n setBiometricLocked: (value: boolean, options?: StorageOptions) => Promise;\n getBiometricText: (options?: StorageOptions) => Promise;\n setBiometricText: (value: string, options?: StorageOptions) => Promise;\n getBiometricUnlock: (options?: StorageOptions) => Promise;\n setBiometricUnlock: (value: boolean, options?: StorageOptions) => Promise;\n getCanAccessPremium: (options?: StorageOptions) => Promise;\n getClearClipboard: (options?: StorageOptions) => Promise;\n setClearClipboard: (value: number, options?: StorageOptions) => Promise;\n getCollapsedGroupings: (options?: StorageOptions) => Promise;\n setCollapsedGroupings: (value: string[], options?: StorageOptions) => Promise;\n getConvertAccountToKeyConnector: (options?: StorageOptions) => Promise;\n setConvertAccountToKeyConnector: (value: boolean, options?: StorageOptions) => Promise;\n getCryptoMasterKey: (options?: StorageOptions) => Promise;\n setCryptoMasterKey: (value: SymmetricCryptoKey, options?: StorageOptions) => Promise;\n getCryptoMasterKeyAuto: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyAuto: (value: string, options?: StorageOptions) => Promise;\n getCryptoMasterKeyB64: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyB64: (value: string, options?: StorageOptions) => Promise;\n getCryptoMasterKeyBiometric: (options?: StorageOptions) => Promise;\n hasCryptoMasterKeyBiometric: (options?: StorageOptions) => Promise;\n setCryptoMasterKeyBiometric: (value: string, options?: StorageOptions) => Promise;\n getDecodedToken: (options?: StorageOptions) => Promise;\n setDecodedToken: (value: any, options?: StorageOptions) => Promise;\n getDecryptedCiphers: (options?: StorageOptions) => Promise;\n setDecryptedCiphers: (value: CipherView[], options?: StorageOptions) => Promise;\n getDecryptedCollections: (options?: StorageOptions) => Promise;\n setDecryptedCollections: (value: CollectionView[], options?: StorageOptions) => Promise;\n getDecryptedCryptoSymmetricKey: (options?: StorageOptions) => Promise;\n setDecryptedCryptoSymmetricKey: (\n value: SymmetricCryptoKey,\n options?: StorageOptions\n ) => Promise;\n getDecryptedFolders: (options?: StorageOptions) => Promise;\n setDecryptedFolders: (value: FolderView[], options?: StorageOptions) => Promise;\n getDecryptedOrganizationKeys: (\n options?: StorageOptions\n ) => Promise>;\n setDecryptedOrganizationKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getDecryptedPasswordGenerationHistory: (\n options?: StorageOptions\n ) => Promise;\n setDecryptedPasswordGenerationHistory: (\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ) => Promise;\n getDecryptedPinProtected: (options?: StorageOptions) => Promise;\n setDecryptedPinProtected: (value: EncString, options?: StorageOptions) => Promise;\n getDecryptedPolicies: (options?: StorageOptions) => Promise;\n setDecryptedPolicies: (value: Policy[], options?: StorageOptions) => Promise;\n getDecryptedPrivateKey: (options?: StorageOptions) => Promise;\n setDecryptedPrivateKey: (value: ArrayBuffer, options?: StorageOptions) => Promise;\n getDecryptedProviderKeys: (options?: StorageOptions) => Promise>;\n setDecryptedProviderKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getDecryptedSends: (options?: StorageOptions) => Promise;\n setDecryptedSends: (value: SendView[], options?: StorageOptions) => Promise;\n getDefaultUriMatch: (options?: StorageOptions) => Promise;\n setDefaultUriMatch: (value: UriMatchType, options?: StorageOptions) => Promise;\n getDisableAddLoginNotification: (options?: StorageOptions) => Promise;\n setDisableAddLoginNotification: (value: boolean, options?: StorageOptions) => Promise;\n getDisableAutoBiometricsPrompt: (options?: StorageOptions) => Promise;\n setDisableAutoBiometricsPrompt: (value: boolean, options?: StorageOptions) => Promise;\n getDisableAutoTotpCopy: (options?: StorageOptions) => Promise;\n setDisableAutoTotpCopy: (value: boolean, options?: StorageOptions) => Promise;\n getDisableBadgeCounter: (options?: StorageOptions) => Promise;\n setDisableBadgeCounter: (value: boolean, options?: StorageOptions) => Promise;\n getDisableChangedPasswordNotification: (options?: StorageOptions) => Promise;\n setDisableChangedPasswordNotification: (\n value: boolean,\n options?: StorageOptions\n ) => Promise;\n getDisableContextMenuItem: (options?: StorageOptions) => Promise;\n setDisableContextMenuItem: (value: boolean, options?: StorageOptions) => Promise;\n getDisableFavicon: (options?: StorageOptions) => Promise;\n setDisableFavicon: (value: boolean, options?: StorageOptions) => Promise;\n getDisableGa: (options?: StorageOptions) => Promise;\n setDisableGa: (value: boolean, options?: StorageOptions) => Promise;\n getDontShowCardsCurrentTab: (options?: StorageOptions) => Promise;\n setDontShowCardsCurrentTab: (value: boolean, options?: StorageOptions) => Promise;\n getDontShowIdentitiesCurrentTab: (options?: StorageOptions) => Promise;\n setDontShowIdentitiesCurrentTab: (value: boolean, options?: StorageOptions) => Promise;\n getEmail: (options?: StorageOptions) => Promise;\n setEmail: (value: string, options?: StorageOptions) => Promise;\n getEmailVerified: (options?: StorageOptions) => Promise;\n setEmailVerified: (value: boolean, options?: StorageOptions) => Promise;\n getEnableAlwaysOnTop: (options?: StorageOptions) => Promise;\n setEnableAlwaysOnTop: (value: boolean, options?: StorageOptions) => Promise;\n getEnableAutoFillOnPageLoad: (options?: StorageOptions) => Promise;\n setEnableAutoFillOnPageLoad: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBiometric: (options?: StorageOptions) => Promise;\n setEnableBiometric: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBrowserIntegration: (options?: StorageOptions) => Promise;\n setEnableBrowserIntegration: (value: boolean, options?: StorageOptions) => Promise;\n getEnableBrowserIntegrationFingerprint: (options?: StorageOptions) => Promise;\n setEnableBrowserIntegrationFingerprint: (\n value: boolean,\n options?: StorageOptions\n ) => Promise;\n getEnableCloseToTray: (options?: StorageOptions) => Promise;\n setEnableCloseToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableFullWidth: (options?: StorageOptions) => Promise;\n setEnableFullWidth: (value: boolean, options?: StorageOptions) => Promise;\n getEnableGravitars: (options?: StorageOptions) => Promise;\n setEnableGravitars: (value: boolean, options?: StorageOptions) => Promise;\n getEnableMinimizeToTray: (options?: StorageOptions) => Promise;\n setEnableMinimizeToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableStartToTray: (options?: StorageOptions) => Promise;\n setEnableStartToTray: (value: boolean, options?: StorageOptions) => Promise;\n getEnableTray: (options?: StorageOptions) => Promise;\n setEnableTray: (value: boolean, options?: StorageOptions) => Promise;\n getEncryptedCiphers: (options?: StorageOptions) => Promise<{ [id: string]: CipherData }>;\n setEncryptedCiphers: (\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedCollections: (options?: StorageOptions) => Promise<{ [id: string]: CollectionData }>;\n setEncryptedCollections: (\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedCryptoSymmetricKey: (options?: StorageOptions) => Promise;\n setEncryptedCryptoSymmetricKey: (value: string, options?: StorageOptions) => Promise;\n getEncryptedFolders: (options?: StorageOptions) => Promise<{ [id: string]: FolderData }>;\n setEncryptedFolders: (\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedOrganizationKeys: (options?: StorageOptions) => Promise;\n setEncryptedOrganizationKeys: (\n value: Map,\n options?: StorageOptions\n ) => Promise;\n getEncryptedPasswordGenerationHistory: (\n options?: StorageOptions\n ) => Promise;\n setEncryptedPasswordGenerationHistory: (\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ) => Promise;\n getEncryptedPinProtected: (options?: StorageOptions) => Promise;\n setEncryptedPinProtected: (value: string, options?: StorageOptions) => Promise;\n getEncryptedPolicies: (options?: StorageOptions) => Promise<{ [id: string]: PolicyData }>;\n setEncryptedPolicies: (\n value: { [id: string]: PolicyData },\n options?: StorageOptions\n ) => Promise;\n getEncryptedPrivateKey: (options?: StorageOptions) => Promise;\n setEncryptedPrivateKey: (value: string, options?: StorageOptions) => Promise;\n getEncryptedProviderKeys: (options?: StorageOptions) => Promise;\n setEncryptedProviderKeys: (value: any, options?: StorageOptions) => Promise;\n getEncryptedSends: (options?: StorageOptions) => Promise<{ [id: string]: SendData }>;\n setEncryptedSends: (value: { [id: string]: SendData }, options?: StorageOptions) => Promise;\n getEntityId: (options?: StorageOptions) => Promise;\n setEntityId: (value: string, options?: StorageOptions) => Promise;\n getEntityType: (options?: StorageOptions) => Promise;\n setEntityType: (value: string, options?: StorageOptions) => Promise;\n getEnvironmentUrls: (options?: StorageOptions) => Promise;\n setEnvironmentUrls: (value: EnvironmentUrls, options?: StorageOptions) => Promise;\n getEquivalentDomains: (options?: StorageOptions) => Promise;\n setEquivalentDomains: (value: string, options?: StorageOptions) => Promise;\n getEventCollection: (options?: StorageOptions) => Promise;\n setEventCollection: (value: EventData[], options?: StorageOptions) => Promise;\n getEverBeenUnlocked: (options?: StorageOptions) => Promise;\n setEverBeenUnlocked: (value: boolean, options?: StorageOptions) => Promise;\n getForcePasswordReset: (options?: StorageOptions) => Promise;\n setForcePasswordReset: (value: boolean, options?: StorageOptions) => Promise;\n getInstalledVersion: (options?: StorageOptions) => Promise;\n setInstalledVersion: (value: string, options?: StorageOptions) => Promise;\n getIsAuthenticated: (options?: StorageOptions) => Promise;\n getKdfIterations: (options?: StorageOptions) => Promise;\n setKdfIterations: (value: number, options?: StorageOptions) => Promise;\n getKdfType: (options?: StorageOptions) => Promise;\n setKdfType: (value: KdfType, options?: StorageOptions) => Promise;\n getKeyHash: (options?: StorageOptions) => Promise;\n setKeyHash: (value: string, options?: StorageOptions) => Promise;\n getLastActive: (options?: StorageOptions) => Promise;\n setLastActive: (value: number, options?: StorageOptions) => Promise;\n getLastSync: (options?: StorageOptions) => Promise;\n setLastSync: (value: string, options?: StorageOptions) => Promise;\n getLegacyEtmKey: (options?: StorageOptions) => Promise;\n setLegacyEtmKey: (value: SymmetricCryptoKey, options?: StorageOptions) => Promise;\n getLocalData: (options?: StorageOptions) => Promise;\n setLocalData: (value: string, options?: StorageOptions) => Promise;\n getLocale: (options?: StorageOptions) => Promise;\n setLocale: (value: string, options?: StorageOptions) => Promise;\n getMainWindowSize: (options?: StorageOptions) => Promise;\n setMainWindowSize: (value: number, options?: StorageOptions) => Promise;\n getMinimizeOnCopyToClipboard: (options?: StorageOptions) => Promise;\n setMinimizeOnCopyToClipboard: (value: boolean, options?: StorageOptions) => Promise;\n getNeverDomains: (options?: StorageOptions) => Promise<{ [id: string]: any }>;\n setNeverDomains: (value: { [id: string]: any }, options?: StorageOptions) => Promise;\n getNoAutoPromptBiometrics: (options?: StorageOptions) => Promise;\n setNoAutoPromptBiometrics: (value: boolean, options?: StorageOptions) => Promise;\n getNoAutoPromptBiometricsText: (options?: StorageOptions) => Promise;\n setNoAutoPromptBiometricsText: (value: string, options?: StorageOptions) => Promise;\n getOpenAtLogin: (options?: StorageOptions) => Promise;\n setOpenAtLogin: (value: boolean, options?: StorageOptions) => Promise;\n getOrganizationInvitation: (options?: StorageOptions) => Promise;\n setOrganizationInvitation: (value: any, options?: StorageOptions) => Promise;\n getOrganizations: (options?: StorageOptions) => Promise<{ [id: string]: OrganizationData }>;\n setOrganizations: (\n value: { [id: string]: OrganizationData },\n options?: StorageOptions\n ) => Promise;\n getPasswordGenerationOptions: (options?: StorageOptions) => Promise;\n setPasswordGenerationOptions: (value: any, options?: StorageOptions) => Promise;\n getUsernameGenerationOptions: (options?: StorageOptions) => Promise;\n setUsernameGenerationOptions: (value: any, options?: StorageOptions) => Promise;\n getGeneratorOptions: (options?: StorageOptions) => Promise;\n setGeneratorOptions: (value: any, options?: StorageOptions) => Promise;\n getProtectedPin: (options?: StorageOptions) => Promise;\n setProtectedPin: (value: string, options?: StorageOptions) => Promise;\n getProviders: (options?: StorageOptions) => Promise<{ [id: string]: ProviderData }>;\n setProviders: (value: { [id: string]: ProviderData }, options?: StorageOptions) => Promise;\n getPublicKey: (options?: StorageOptions) => Promise;\n setPublicKey: (value: ArrayBuffer, options?: StorageOptions) => Promise;\n getRefreshToken: (options?: StorageOptions) => Promise;\n setRefreshToken: (value: string, options?: StorageOptions) => Promise;\n getRememberedEmail: (options?: StorageOptions) => Promise;\n setRememberedEmail: (value: string, options?: StorageOptions) => Promise;\n getSecurityStamp: (options?: StorageOptions) => Promise;\n setSecurityStamp: (value: string, options?: StorageOptions) => Promise;\n getSettings: (options?: StorageOptions) => Promise;\n setSettings: (value: string, options?: StorageOptions) => Promise;\n getSsoCodeVerifier: (options?: StorageOptions) => Promise;\n setSsoCodeVerifier: (value: string, options?: StorageOptions) => Promise;\n getSsoOrgIdentifier: (options?: StorageOptions) => Promise;\n setSsoOrganizationIdentifier: (value: string, options?: StorageOptions) => Promise;\n getSsoState: (options?: StorageOptions) => Promise;\n setSsoState: (value: string, options?: StorageOptions) => Promise;\n getTheme: (options?: StorageOptions) => Promise;\n setTheme: (value: ThemeType, options?: StorageOptions) => Promise;\n getTwoFactorToken: (options?: StorageOptions) => Promise;\n setTwoFactorToken: (value: string, options?: StorageOptions) => Promise;\n getUserId: (options?: StorageOptions) => Promise;\n getUsesKeyConnector: (options?: StorageOptions) => Promise;\n setUsesKeyConnector: (vaule: boolean, options?: StorageOptions) => Promise;\n getVaultTimeout: (options?: StorageOptions) => Promise;\n setVaultTimeout: (value: number, options?: StorageOptions) => Promise;\n getVaultTimeoutAction: (options?: StorageOptions) => Promise;\n setVaultTimeoutAction: (value: string, options?: StorageOptions) => Promise;\n getStateVersion: () => Promise;\n setStateVersion: (value: number) => Promise;\n getWindow: () => Promise;\n setWindow: (value: WindowState) => Promise;\n}\n","export abstract class StateMigrationService {\n needsMigration: () => Promise;\n migrate: () => Promise;\n}\n","import { StorageOptions } from \"../models/domain/storageOptions\";\n\nexport abstract class StorageService {\n get: (key: string, options?: StorageOptions) => Promise;\n has: (key: string, options?: StorageOptions) => Promise;\n save: (key: string, obj: any, options?: StorageOptions) => Promise;\n remove: (key: string, options?: StorageOptions) => Promise;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date, userId?: string) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","import { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport abstract class TokenService {\n setTokens: (\n accessToken: string,\n refreshToken: string,\n clientIdClientSecret: [string, string]\n ) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n setClientId: (clientId: string) => Promise;\n getClientId: () => Promise;\n setClientSecret: (clientSecret: string) => Promise;\n getClientSecret: () => Promise;\n setTwoFactorToken: (tokenResponse: IdentityTokenResponse) => Promise;\n getTwoFactorToken: () => Promise;\n clearTwoFactorToken: () => Promise;\n clearToken: (userId?: string) => Promise;\n decodeToken: (token?: string) => any;\n getTokenExpirationDate: () => Promise;\n tokenSecondsRemaining: (offsetSeconds?: number) => Promise;\n tokenNeedsRefresh: (minutes?: number) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getEmailVerified: () => Promise;\n getName: () => Promise;\n getPremium: () => Promise;\n getIssuer: () => Promise;\n getIsExternal: () => Promise;\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","import { TwoFactorProviderType } from \"../enums/twoFactorProviderType\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\n\nexport interface TwoFactorProviderDetails {\n type: TwoFactorProviderType;\n name: string;\n description: string;\n priority: number;\n sort: number;\n premium: boolean;\n}\n\nexport abstract class TwoFactorService {\n init: () => void;\n getSupportedProviders: (win: Window) => TwoFactorProviderDetails[];\n getDefaultProvider: (webAuthnSupported: boolean) => TwoFactorProviderType;\n setSelectedProvider: (type: TwoFactorProviderType) => void;\n clearSelectedProvider: () => void;\n\n setProviders: (response: IdentityTwoFactorResponse) => void;\n clearProviders: () => void;\n getProviders: () => Map;\n}\n","import { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { Verification } from \"../types/verification\";\n\nexport abstract class UserVerificationService {\n buildRequest: (\n verification: Verification,\n requestClass?: new () => T,\n alreadyHashed?: boolean\n ) => Promise;\n verifyUser: (verification: Verification) => Promise;\n requestOTP: () => Promise;\n}\n","export abstract class UsernameGenerationService {\n generateUsername: (options: any) => Promise;\n generateWord: (options: any) => Promise;\n generateSubaddress: (options: any) => Promise;\n generateCatchall: (options: any) => Promise;\n generateForwarded: (options: any) => Promise;\n getOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n}\n","export abstract class VaultTimeoutService {\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean, userId?: string) => Promise;\n logOut: (userId?: string) => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n getVaultTimeout: () => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: (userId?: string) => Promise;\n}\n","export enum AuthenticationStatus {\n LoggedOut = 0,\n Locked = 1,\n Unlocked = 2,\n}\n","export enum AuthenticationType {\n Password = 0,\n Sso = 1,\n Api = 2,\n}\n","export enum CipherRepromptType {\n None = 0,\n Password = 1,\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","export enum ClientType {\n Web = \"web\",\n Browser = \"browser\",\n Desktop = \"desktop\",\n Mobile = \"mobile\",\n Cli = \"cli\",\n DirectoryConnector = \"connector\",\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","export enum EmergencyAccessType {\n View = 0,\n Takeover = 1,\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n User_UpdatedTempPassword = 1008,\n User_MigratedKeyToKeyConnector = 1009,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n Cipher_ClientToggledCardNumberVisible = 1117,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n OrganizationUser_ResetPassword_Enroll = 1506,\n OrganizationUser_ResetPassword_Withdraw = 1507,\n OrganizationUser_AdminResetPassword = 1508,\n OrganizationUser_ResetSsoLink = 1509,\n OrganizationUser_FirstSsoLogin = 1510,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n Organization_VaultAccessed = 1603,\n Organization_EnabledSso = 1604,\n Organization_DisabledSso = 1605,\n Organization_EnabledKeyConnector = 1606,\n Organization_DisabledKeyConnector = 1607,\n Organization_SponsorshipsSynced = 1608,\n\n Policy_Updated = 1700,\n\n ProviderUser_Invited = 1800,\n ProviderUser_Confirmed = 1801,\n ProviderUser_Updated = 1802,\n ProviderUser_Removed = 1803,\n\n ProviderOrganization_Created = 1900,\n ProviderOrganization_Added = 1901,\n ProviderOrganization_Removed = 1902,\n ProviderOrganization_VaultAccessed = 1903,\n}\n","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n Linked = 3,\n}\n","export enum FileUploadType {\n Direct = 0,\n Azure = 1,\n}\n","export enum HashPurpose {\n ServerAuthorization = 1,\n LocalAuthorization = 2,\n}\n","export enum HtmlStorageLocation {\n Local = \"local\",\n Memory = \"memory\",\n Session = \"session\",\n}\n","export interface ImportOption {\n id: string;\n name: string;\n}\n\nexport const featuredImportOptions = [\n { id: \"bitwardenjson\", name: \"Bitwarden (json)\" },\n { id: \"bitwardencsv\", name: \"Bitwarden (csv)\" },\n { id: \"chromecsv\", name: \"Chrome (csv)\" },\n { id: \"dashlanecsv\", name: \"Dashlane (csv)\" },\n { id: \"firefoxcsv\", name: \"Firefox (csv)\" },\n { id: \"keepass2xml\", name: \"KeePass 2 (xml)\" },\n { id: \"lastpasscsv\", name: \"LastPass (csv)\" },\n { id: \"safaricsv\", name: \"Safari and macOS (csv)\" },\n { id: \"1password1pux\", name: \"1Password (1pux)\" },\n] as const;\n\nexport const regularImportOptions = [\n { id: \"keepassxcsv\", name: \"KeePassX (csv)\" },\n { id: \"1password1pif\", name: \"1Password (1pif)\" },\n { id: \"1passwordwincsv\", name: \"1Password 6 and 7 Windows (csv)\" },\n { id: \"1passwordmaccsv\", name: \"1Password 6 and 7 Mac (csv)\" },\n { id: \"dashlanejson\", name: \"Dashlane (json)\" },\n { id: \"roboformcsv\", name: \"RoboForm (csv)\" },\n { id: \"keepercsv\", name: \"Keeper (csv)\" },\n // Temporarily remove this option for the Feb release\n // { id: \"keeperjson\", name: \"Keeper (json)\" },\n { id: \"enpasscsv\", name: \"Enpass (csv)\" },\n { id: \"enpassjson\", name: \"Enpass (json)\" },\n { id: \"safeincloudxml\", name: \"SafeInCloud (xml)\" },\n { id: \"pwsafexml\", name: \"Password Safe (xml)\" },\n { id: \"stickypasswordxml\", name: \"Sticky Password (xml)\" },\n { id: \"msecurecsv\", name: \"mSecure (csv)\" },\n { id: \"truekeycsv\", name: \"True Key (csv)\" },\n { id: \"passwordbossjson\", name: \"Password Boss (json)\" },\n { id: \"zohovaultcsv\", name: \"Zoho Vault (csv)\" },\n { id: \"splashidcsv\", name: \"SplashID (csv)\" },\n { id: \"passworddragonxml\", name: \"Password Dragon (xml)\" },\n { id: \"padlockcsv\", name: \"Padlock (csv)\" },\n { id: \"passboltcsv\", name: \"Passbolt (csv)\" },\n { id: \"clipperzhtml\", name: \"Clipperz (html)\" },\n { id: \"aviracsv\", name: \"Avira (csv)\" },\n { id: \"saferpasscsv\", name: \"SaferPass (csv)\" },\n { id: \"upmcsv\", name: \"Universal Password Manager (csv)\" },\n { id: \"ascendocsv\", name: \"Ascendo DataVault (csv)\" },\n { id: \"meldiumcsv\", name: \"Meldium (csv)\" },\n { id: \"passkeepcsv\", name: \"PassKeep (csv)\" },\n { id: \"operacsv\", name: \"Opera (csv)\" },\n { id: \"vivaldicsv\", name: \"Vivaldi (csv)\" },\n { id: \"gnomejson\", name: \"GNOME Passwords and Keys/Seahorse (json)\" },\n { id: \"blurcsv\", name: \"Blur (csv)\" },\n { id: \"passwordagentcsv\", name: \"Password Agent (csv)\" },\n { id: \"passpackcsv\", name: \"Passpack (csv)\" },\n { id: \"passmanjson\", name: \"Passman (json)\" },\n { id: \"avastcsv\", name: \"Avast Passwords (csv)\" },\n { id: \"avastjson\", name: \"Avast Passwords (json)\" },\n { id: \"fsecurefsk\", name: \"F-Secure KEY (fsk)\" },\n { id: \"kasperskytxt\", name: \"Kaspersky Password Manager (txt)\" },\n { id: \"remembearcsv\", name: \"RememBear (csv)\" },\n { id: \"passwordwallettxt\", name: \"PasswordWallet (txt)\" },\n { id: \"mykicsv\", name: \"Myki (csv)\" },\n { id: \"securesafecsv\", name: \"SecureSafe (csv)\" },\n { id: \"logmeoncecsv\", name: \"LogMeOnce (csv)\" },\n { id: \"blackberrycsv\", name: \"BlackBerry Password Keeper (csv)\" },\n { id: \"buttercupcsv\", name: \"Buttercup (csv)\" },\n { id: \"codebookcsv\", name: \"Codebook (csv)\" },\n { id: \"encryptrcsv\", name: \"Encryptr (csv)\" },\n { id: \"yoticsv\", name: \"Yoti (csv)\" },\n { id: \"nordpasscsv\", name: \"Nordpass (csv)\" },\n] as const;\n\nexport type ImportType =\n | typeof featuredImportOptions[number][\"id\"]\n | typeof regularImportOptions[number][\"id\"];\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n\nexport const DEFAULT_KDF_TYPE = KdfType.PBKDF2_SHA256;\nexport const DEFAULT_KDF_ITERATIONS = 100000;\nexport const SEND_KDF_ITERATIONS = 100000;\n","export enum KeySuffixOptions {\n Auto = \"auto\",\n Biometric = \"biometric\",\n}\n","export type LinkedIdType = LoginLinkedId | CardLinkedId | IdentityLinkedId;\n\n// LoginView\nexport enum LoginLinkedId {\n Username = 100,\n Password = 101,\n}\n\n// CardView\nexport enum CardLinkedId {\n CardholderName = 300,\n ExpMonth = 301,\n ExpYear = 302,\n Code = 303,\n Brand = 304,\n Number = 305,\n}\n\n// IdentityView\nexport enum IdentityLinkedId {\n Title = 400,\n MiddleName = 401,\n Address1 = 402,\n Address2 = 403,\n Address3 = 404,\n City = 405,\n State = 406,\n PostalCode = 407,\n Country = 408,\n Company = 409,\n Email = 410,\n Phone = 411,\n Ssn = 412,\n Username = 413,\n PassportNumber = 414,\n LicenseNumber = 415,\n FirstName = 416,\n LastName = 417,\n FullName = 418,\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","export enum OrganizationApiKeyType {\n Default = 0,\n BillingSync = 1,\n}\n","export enum OrganizationConnectionType {\n CloudBillingSync = 1,\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","export enum Permissions {\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAllCollections,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization,\n ManagePolicies,\n ManageProvider,\n ManageUsers,\n ManageUsersPassword,\n CreateNewCollections,\n EditAnyCollection,\n DeleteAnyCollection,\n EditAssignedCollections,\n DeleteAssignedCollections,\n ManageSso,\n ManageBilling,\n}\n","export enum PlanSponsorshipType {\n FamiliesForEnterprise = 0,\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n SendOptions = 7, // Sets restrictions or defaults for Bitwarden Sends\n ResetPassword = 8, // Allows orgs to use reset password : also can enable auto-enrollment during invite flow\n MaximumVaultTimeout = 9, // Sets the maximum allowed vault timeout\n DisablePersonalVaultExport = 10, // Disable personal vault export\n}\n","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","export enum ProviderUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export enum ProviderUserType {\n ProviderAdmin = 0,\n ServiceUser = 1,\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","export enum SsoType {\n None = 0,\n OpenIdConnect = 1,\n Saml2 = 2,\n}\n\nexport enum OpenIdConnectRedirectBehavior {\n RedirectGet = 0,\n FormPost = 1,\n}\n\nexport enum Saml2BindingType {\n HttpRedirect = 1,\n HttpPost = 2,\n}\n\nexport enum Saml2NameIdFormat {\n NotConfigured = 0,\n Unspecified = 1,\n EmailAddress = 2,\n X509SubjectName = 3,\n WindowsDomainQualifiedName = 4,\n KerberosPrincipalName = 5,\n EntityIdentifier = 6,\n Persistent = 7,\n Transient = 8,\n}\n\nexport enum Saml2SigningBehavior {\n IfIdpWantAuthnRequestsSigned = 0,\n Always = 1,\n Never = 3,\n}\n","export enum StateVersion {\n One = 1, // Original flat key/value pair store\n Two = 2, // Move to a typed State object\n Three = 3, // Fix migration of users' premium status\n Four = 4, // Fix 'Never Lock' option by removing stale data\n Latest = Four,\n}\n","export enum StorageLocation {\n Both = \"both\",\n Disk = \"disk\",\n Memory = \"memory\",\n}\n","export enum ThemeType {\n System = \"system\",\n Light = \"light\",\n Dark = \"dark\",\n Nord = \"nord\",\n SolarizedDark = \"solarizedDark\",\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n WebAuthn = 7,\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","export enum VerificationType {\n MasterPassword = 0,\n OTP = 1,\n}\n","import { Account } from \"../models/domain/account\";\n\nexport class AccountFactory {\n private accountConstructor: new (init: Partial) => T;\n\n constructor(accountConstructor: new (init: Partial) => T) {\n this.accountConstructor = accountConstructor;\n }\n\n create(args: Partial) {\n return new this.accountConstructor(args);\n }\n}\n","import { GlobalState } from \"../models/domain/globalState\";\n\nexport class GlobalStateFactory {\n private globalStateConstructor: new (init: Partial) => T;\n\n constructor(globalStateConstructor: new (init: Partial) => T) {\n this.globalStateConstructor = globalStateConstructor;\n }\n\n create(args?: Partial) {\n return new this.globalStateConstructor(args);\n }\n}\n","import { Account } from \"../models/domain/account\";\nimport { GlobalState } from \"../models/domain/globalState\";\n\nimport { AccountFactory } from \"./accountFactory\";\nimport { GlobalStateFactory } from \"./globalStateFactory\";\n\nexport class StateFactory<\n TGlobal extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n private globalStateFactory: GlobalStateFactory;\n private accountFactory: AccountFactory;\n\n constructor(\n globalStateConstructor: new (init: Partial) => TGlobal,\n accountConstructor: new (init: Partial) => TAccount\n ) {\n this.globalStateFactory = new GlobalStateFactory(globalStateConstructor);\n this.accountFactory = new AccountFactory(accountConstructor);\n }\n\n createGlobal(args: Partial): TGlobal {\n return this.globalStateFactory.create(args);\n }\n\n createAccount(args: Partial): TAccount {\n return this.accountFactory.create(args);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n if (value.length > 2 && value.length % 2 === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (\n cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + \"\";\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + \"\";\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(\n value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), \"--\")\n );\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (\n this.isNullOrWhitespace(value.username) &&\n !this.isNullOrWhitespace(value.secondary_username)\n ) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import * as papa from \"papaparse\";\n\nimport { LogService } from \"../abstractions/log.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { Utils } from \"../misc/utils\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { LoginUriView } from \"../models/view/loginUriView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\nimport { ConsoleLogService } from \"../services/consoleLog.service\";\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n \"password\",\n \"pass word\",\n \"passphrase\",\n \"pass phrase\",\n \"pass\",\n \"code\",\n \"code word\",\n \"codeword\",\n \"secret\",\n \"secret word\",\n \"personpwd\",\n \"key\",\n \"keyword\",\n \"key word\",\n \"keyphrase\",\n \"key phrase\",\n \"form_pw\",\n \"wppassword\",\n \"pin\",\n \"pwd\",\n \"pw\",\n \"pword\",\n \"passwd\",\n \"p\",\n \"serial\",\n \"serial#\",\n \"license key\",\n \"reg #\",\n\n // Non-English names\n \"passwort\",\n ];\n\n protected usernameFieldNames = [\n \"user\",\n \"name\",\n \"user name\",\n \"username\",\n \"login name\",\n \"email\",\n \"e-mail\",\n \"id\",\n \"userid\",\n \"user id\",\n \"login\",\n \"form_loginname\",\n \"wpname\",\n \"mail\",\n \"loginid\",\n \"login id\",\n \"log\",\n \"personlogin\",\n \"first name\",\n \"last name\",\n \"card#\",\n \"account #\",\n \"member\",\n \"member #\",\n\n // Non-English names\n \"nom\",\n \"benutzername\",\n ];\n\n protected notesFieldNames = [\n \"note\",\n \"notes\",\n \"comment\",\n \"comments\",\n \"memo\",\n \"description\",\n \"free form\",\n \"freeform\",\n \"free text\",\n \"freetext\",\n \"free\",\n\n // Non-English names\n \"kommentar\",\n ];\n\n protected uriFieldNames: string[] = [\n \"url\",\n \"hyper link\",\n \"hyperlink\",\n \"link\",\n \"host\",\n \"hostname\",\n \"host name\",\n \"server\",\n \"address\",\n \"hyper ref\",\n \"href\",\n \"web\",\n \"website\",\n \"web site\",\n \"site\",\n \"web-site\",\n \"uri\",\n\n // Non-English names\n \"ort\",\n \"adresse\",\n ];\n\n protected parseCsvOptions = {\n encoding: \"UTF-8\",\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, \"application/xml\");\n return doc != null && doc.querySelector(\"parsererror\") == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions: papa.ParseConfig = Object.assign(\n { header: header },\n this.parseCsvOptions,\n options\n );\n data = this.splitNewLine(data).join(\"\\n\").trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach((e) => {\n if (e.row != null) {\n this.logService.warning(\"Error parsing row \" + e.row + \": \" + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === \"string\") {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach((u) => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf(\"://\") === -1 && uri.indexOf(\".\") >= 0) {\n uri = \"http://\" + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith(\"www.\") ? hostname.replace(\"www.\", \"\") : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp(\"^4\");\n if (cardNum.match(re) != null) {\n return \"Visa\";\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (\n /^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(\n cardNum\n )\n ) {\n return \"Mastercard\";\n }\n\n // AMEX\n re = new RegExp(\"^3[47]\");\n if (cardNum.match(re) != null) {\n return \"Amex\";\n }\n\n // Discover\n re = new RegExp(\n \"^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)\"\n );\n if (cardNum.match(re) != null) {\n return \"Discover\";\n }\n\n // Diners\n re = new RegExp(\"^36\");\n if (cardNum.match(re) != null) {\n return \"Diners Club\";\n }\n\n // Diners - Carte Blanche\n re = new RegExp(\"^30[0-5]\");\n if (cardNum.match(re) != null) {\n return \"Diners Club\";\n }\n\n // JCB\n re = new RegExp(\"^35(2[89]|[3-8][0-9])\");\n if (cardNum.match(re) != null) {\n return \"JCB\";\n }\n\n // Visa Electron\n re = new RegExp(\"^(4026|417500|4508|4844|491(3|7))\");\n if (cardNum.match(re) != null) {\n return \"Visa\";\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n expiration = expiration.replace(/\\s/g, \"\");\n const parts = expiration.split(\"/\");\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === \"0\") {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? \"20\" + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach((r) => result.collectionRelationships.push(r));\n result.collections = result.folders.map((f) => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter((el) => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = \"\";\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = \"--\";\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(\n cipher: CipherView,\n key: string,\n value: string,\n type: FieldType = FieldType.Text\n ) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = \"\";\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = \"\";\n }\n cipher.notes += key + \": \" + this.splitNewLine(value).join(\"\\n\") + \"\\n\";\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (\n cipher.type === CipherType.Login &&\n this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)\n ) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n\n protected processFullName(cipher: CipherView, fullName: string) {\n if (this.isNullOrWhitespace(fullName)) {\n return;\n }\n\n const nameParts = fullName.split(\" \");\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length >= 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = nameParts.slice(2, nameParts.length).join(\" \");\n }\n }\n}\n","import { CipherRepromptType } from \"../enums/cipherRepromptType\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(\",\");\n collections.forEach((col) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite =\n !this.organization && this.getValueOrDefault(value.favorite, \"0\") !== \"0\" ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n try {\n cipher.reprompt = parseInt(\n this.getValueOrDefault(value.reprompt, CipherRepromptType.None.toString()),\n 10\n );\n } catch (e) {\n // eslint-disable-next-line\n console.error(\"Unable to parse reprompt value\", e);\n cipher.reprompt = CipherRepromptType.None;\n }\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(\": \");\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > delimPosition + 2) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case \"note\":\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default: {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { EncString } from \"../models/domain/encString\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherWithIdExport } from \"../models/export/cipherWithIdsExport\";\nimport { CollectionWithIdExport } from \"../models/export/collectionWithIdExport\";\nimport { FolderWithIdExport } from \"../models/export/folderWithIdExport\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService) {\n super();\n }\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null) {\n if (this.results?.passwordProtected) {\n this.result.success = false;\n this.result.missingPassword = true;\n this.result.errorMessage = this.i18nService.t(\"importPasswordRequired\");\n return this.result;\n }\n\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n return this.result;\n }\n\n private async parseEncrypted() {\n if (this.results.encKeyValidation_DO_NOT_EDIT != null) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const encKeyValidation = new EncString(this.results.encKeyValidation_DO_NOT_EDIT);\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(\n encKeyValidation,\n orgKey\n );\n if (encKeyValidationDecrypt === null) {\n this.result.success = false;\n this.result.errorMessage = this.i18nService.t(\"importEncKeyError\");\n return;\n }\n }\n\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithIdExport[]) {\n const collection = CollectionWithIdExport.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithIdExport[]) {\n const folder = FolderWithIdExport.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIdExport[]) {\n const cipher = CipherWithIdExport.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(c.folderId),\n ]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach((cId) => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(cId),\n ]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n\n this.result.success = true;\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithIdExport) => {\n const collection = CollectionWithIdExport.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithIdExport) => {\n const folder = FolderWithIdExport.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIdExport) => {\n const cipher = CipherWithIdExport.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(c.folderId),\n ]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach((cId) => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([\n this.result.ciphers.length,\n groupingsMap.get(cId),\n ]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { EncString } from \"../models/domain/encString\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nimport { BitwardenJsonImporter } from \"./bitwardenJsonImporter\";\nimport { Importer } from \"./importer\";\n\ninterface BitwardenPasswordProtectedFileFormat {\n encrypted: boolean;\n passwordProtected: boolean;\n salt: string;\n kdfIterations: number;\n kdfType: number;\n encKeyValidation_DO_NOT_EDIT: string;\n data: string;\n}\n\nexport class BitwardenPasswordProtectedImporter extends BitwardenJsonImporter implements Importer {\n private key: SymmetricCryptoKey;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService, private password: string) {\n super(cryptoService, i18nService);\n }\n\n async parse(data: string): Promise {\n const result = new ImportResult();\n const parsedData = JSON.parse(data);\n if (this.cannotParseFile(parsedData)) {\n result.success = false;\n return result;\n }\n\n if (!(await this.checkPassword(parsedData))) {\n result.success = false;\n result.errorMessage = this.i18nService.t(\"importEncKeyError\");\n return result;\n }\n\n const encData = new EncString(parsedData.data);\n const clearTextData = await this.cryptoService.decryptToUtf8(encData, this.key);\n return await super.parse(clearTextData);\n }\n\n private async checkPassword(jdoc: BitwardenPasswordProtectedFileFormat): Promise {\n this.key = await this.cryptoService.makePinKey(\n this.password,\n jdoc.salt,\n KdfType.PBKDF2_SHA256,\n jdoc.kdfIterations\n );\n\n const encKeyValidation = new EncString(jdoc.encKeyValidation_DO_NOT_EDIT);\n\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(\n encKeyValidation,\n this.key\n );\n if (encKeyValidationDecrypt === null) {\n return false;\n }\n return true;\n }\n\n private cannotParseFile(jdoc: BitwardenPasswordProtectedFileFormat): boolean {\n return (\n !jdoc ||\n !jdoc.encrypted ||\n !jdoc.passwordProtected ||\n !jdoc.salt ||\n !jdoc.kdfIterations ||\n typeof jdoc.kdfIterations !== \"number\" ||\n jdoc.kdfType == null ||\n KdfType[jdoc.kdfType] == null ||\n !jdoc.encKeyValidation_DO_NOT_EDIT ||\n !jdoc.data\n );\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.grouping === \"list\") {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === \"1\";\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== \"note\") {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.label === \"null\") {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(\n value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), \"--\")\n );\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst OfficialProps = [\"!group_id\", \"!group_name\", \"title\", \"username\", \"password\", \"URL\", \"id\"];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value[\"!group_name\"]));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n // eslint-disable-next-line\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector(\"textarea\");\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = \"Missing textarea.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(\" \")[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split(\"\\\\n\").join(\"\\n\");\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n // eslint-disable-next-line\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case \"password\":\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case \"email\":\n case \"username\":\n case \"user\":\n case \"name\":\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case \"url\":\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default: {\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (\n cipher.login.password == null &&\n this.passwordFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (\n cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1\n ) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === \"True\";\n cipher.name = this.getValueOrDefault(value.Entry, \"--\");\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, \"Email\", value.Email);\n }\n this.processKvp(cipher, \"Phone\", value.Phone);\n this.processKvp(cipher, \"PIN\", value.PIN);\n this.processKvp(cipher, \"Account\", value.Account);\n this.processKvp(cipher, \"Date\", value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport {\n CredentialsRecord,\n IdRecord,\n PaymentsRecord,\n PersonalInformationRecord,\n SecureNoteRecord,\n} from \"./types/dashlaneCsvTypes\";\n\nconst _mappedCredentialsColums = new Set([\n \"title\",\n \"note\",\n \"username\",\n \"password\",\n \"url\",\n \"otpSecret\",\n \"category\",\n]);\n\nconst _mappedPersonalInfoAsIdentiyColumns = new Set([\n \"type\",\n \"title\",\n \"first_name\",\n \"middle_name\",\n \"last_name\",\n \"login\",\n \"email\",\n \"phone_number\",\n \"address\",\n \"country\",\n \"state\",\n \"city\",\n \"zip\",\n // Skip item_name as we already have set a combined name\n \"item_name\",\n]);\n\nconst _mappedSecureNoteColumns = new Set([\"title\", \"note\"]);\n\nexport class DashlaneCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results[0].type != null && results[0].title != null) {\n const personalRecords = results as PersonalInformationRecord[];\n\n // If personalRecords has only one \"name\" then create an Identity-Cipher\n if (personalRecords.filter((x) => x.type === \"name\").length === 1) {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n results.forEach((row) => {\n this.parsePersonalInformationRecordAsIdentity(cipher, row);\n });\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n result.success = true;\n return Promise.resolve(result);\n }\n }\n\n results.forEach((row) => {\n const cipher = this.initLoginCipher();\n\n const rowKeys = Object.keys(row);\n if (rowKeys[0] === \"username\") {\n this.processFolder(result, row.category);\n this.parseCredentialsRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"type\" && rowKeys[1] === \"account_name\") {\n this.parsePaymentRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"type\" && rowKeys[1] === \"number\") {\n this.parseIdRecord(cipher, row);\n }\n\n if ((rowKeys[0] === \"type\") != null && rowKeys[1] === \"title\") {\n this.parsePersonalInformationRecord(cipher, row);\n }\n\n if (rowKeys[0] === \"title\" && rowKeys[1] === \"note\") {\n this.parseSecureNoteRecords(cipher, row);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n parseCredentialsRecord(cipher: CipherView, row: CredentialsRecord) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n cipher.name = row.title;\n cipher.notes = row.note;\n cipher.login.username = row.username;\n cipher.login.password = row.password;\n cipher.login.totp = row.otpSecret;\n cipher.login.uris = this.makeUriArray(row.url);\n\n this.importUnmappedFields(cipher, row, _mappedCredentialsColums);\n }\n\n parsePaymentRecord(cipher: CipherView, row: PaymentsRecord) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n\n cipher.name = row.account_name;\n let mappedValues: string[] = [];\n switch (row.type) {\n case \"credit_card\":\n cipher.card.cardholderName = row.account_name;\n cipher.card.number = row.cc_number;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = row.code;\n cipher.card.expMonth = row.expiration_month;\n cipher.card.expYear = row.expiration_year.substring(2, 4);\n\n // If you add more mapped fields please extend this\n mappedValues = [\n \"account_name\",\n \"account_holder\",\n \"cc_number\",\n \"code\",\n \"expiration_month\",\n \"expiration_year\",\n ];\n break;\n case \"bank\":\n cipher.card.cardholderName = row.account_holder;\n cipher.card.number = row.account_number;\n\n // If you add more mapped fields please extend this\n mappedValues = [\"account_name\", \"account_holder\", \"account_number\"];\n break;\n default:\n break;\n }\n\n this.importUnmappedFields(cipher, row, new Set(mappedValues));\n }\n\n parseIdRecord(cipher: CipherView, row: IdRecord) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n\n const mappedValues: string[] = [\"name\", \"number\"];\n switch (row.type) {\n case \"card\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.licenseNumber = row.number;\n break;\n case \"passport\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.passportNumber = row.number;\n break;\n case \"license\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.licenseNumber = row.number;\n cipher.identity.state = row.state;\n\n mappedValues.push(\"state\");\n break;\n case \"social_security\":\n cipher.name = `${row.name} ${row.type}`;\n this.processFullName(cipher, row.name);\n cipher.identity.ssn = row.number;\n break;\n case \"tax_number\":\n cipher.name = row.type;\n cipher.identity.licenseNumber = row.number;\n break;\n\n default:\n break;\n }\n\n // If you add more mapped fields please extend this\n this.importUnmappedFields(cipher, row, new Set(mappedValues));\n }\n\n parsePersonalInformationRecord(cipher: CipherView, row: PersonalInformationRecord) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (row.type === \"name\") {\n cipher.name = `${row.title} ${row.first_name} ${row.middle_name} ${row.last_name}`\n .replace(\" \", \" \")\n .trim();\n } else {\n cipher.name = row.item_name;\n }\n\n const dataRow = row as any;\n Object.keys(row).forEach((key) => {\n this.processKvp(cipher, key, dataRow[key]);\n });\n }\n\n parsePersonalInformationRecordAsIdentity(cipher: CipherView, row: PersonalInformationRecord) {\n switch (row.type) {\n case \"name\":\n this.processFullName(cipher, `${row.first_name} ${row.middle_name} ${row.last_name}`);\n cipher.identity.title = row.title;\n cipher.name = cipher.identity.fullName;\n\n cipher.identity.username = row.login;\n break;\n case \"email\":\n cipher.identity.email = row.email;\n break;\n case \"number\":\n cipher.identity.phone = row.phone_number;\n break;\n case \"address\":\n cipher.identity.address1 = row.address;\n cipher.identity.city = row.city;\n cipher.identity.postalCode = row.zip;\n cipher.identity.state = row.state;\n cipher.identity.country = row.country;\n break;\n default:\n break;\n }\n\n this.importUnmappedFields(cipher, row, _mappedPersonalInfoAsIdentiyColumns);\n }\n\n parseSecureNoteRecords(cipher: CipherView, row: SecureNoteRecord) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = row.title;\n cipher.notes = row.note;\n\n this.importUnmappedFields(cipher, row, _mappedSecureNoteColumns);\n }\n\n importUnmappedFields(cipher: CipherView, row: any, mappedValues: Set) {\n const unmappedFields = Object.keys(row).filter((x) => !mappedValues.has(x));\n unmappedFields.forEach((key) => {\n const item = row as any;\n this.processKvp(cipher, key, item[key]);\n });\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nconst HandledResults = new Set([\n \"ADDRESS\",\n \"AUTHENTIFIANT\",\n \"BANKSTATEMENT\",\n \"IDCARD\",\n \"IDENTITY\",\n \"PAYMENTMEANS_CREDITCARD\",\n \"PAYMENTMEAN_PAYPAL\",\n \"EMAIL\",\n]);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, \"BankAccountName\");\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, \"Fullname\");\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n // eslint-disable-next-line\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, \"Generic Note\");\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(\n credential.login,\n this.getValueOrDefault(credential.secondaryLogin)\n );\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = \"Email: \" + credential.email + \"\\n\";\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, \"\");\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, \"\");\n const nameParts = cipher.name.split(\" \");\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += \" - \" + cipher.card.brand;\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n // eslint-disable-next-line\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, \"--\");\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += \"\\n\\n\" + text;\n }\n }\n\n const type = value[\"Entry Type\"];\n if (type === \"Password\") {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value[\"Site URL\"]);\n } else if (type === \"Credit Card\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value[\"Name on card\"]);\n cipher.card.number = this.getValueOrDefault(value[\"Card Number\"]);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split(\"/\");\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach((value) => {\n if (value.length < 2 || (firstRow && (value[0] === \"Title\" || value[0] === \"title\"))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n if (\n value.length === 2 ||\n (!this.containsField(value, \"username\") &&\n !this.containsField(value, \"password\") &&\n !this.containsField(value, \"email\") &&\n !this.containsField(value, \"url\"))\n ) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (\n this.containsField(value, \"cardholder\") &&\n this.containsField(value, \"number\") &&\n this.containsField(value, \"expiry date\")\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && value.length % 2 === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (\n fieldNameLower === \"url\" &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)\n ) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if (\n (fieldNameLower === \"username\" || fieldNameLower === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = fieldValue;\n continue;\n } else if (\n fieldNameLower === \"password\" &&\n this.isNullOrWhitespace(cipher.login.password)\n ) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === \"totp\" && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (\n fieldNameLower === \"cardholder\" &&\n this.isNullOrWhitespace(cipher.card.cardholderName)\n ) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === \"number\" && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === \"cvc\" && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (\n fieldNameLower === \"expiry date\" &&\n this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)\n ) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === \"type\") {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return (\n fields.filter((f) => !this.isNullOrWhitespace(f) && f.toLowerCase() === name.toLowerCase())\n .length > 0\n );\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([\n result.ciphers.length,\n foldersIndexMap.get(item.folders[0]),\n ]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (\n item.template_type.indexOf(\"login.\") === 0 ||\n item.template_type.indexOf(\"password.\") === 0\n ) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf(\"creditcard.\") === 0) {\n this.processCard(cipher, item.fields);\n } else if (\n item.template_type.indexOf(\"identity.\") < 0 &&\n item.fields.some((f: any) => f.type === \"password\" && !this.isNullOrWhitespace(f.value))\n ) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += \"\\n\" + this.getValueOrDefault(item.note, \"\");\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === \"section\") {\n return;\n }\n\n if (\n (field.type === \"username\" || field.type === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = field.value;\n } else if (field.type === \"password\" && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === \"totp\" && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === \"url\") {\n urls.push(field.value);\n } else {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (\n this.isNullOrWhitespace(field.value) ||\n field.type === \"section\" ||\n field.type === \"ccType\"\n ) {\n return;\n }\n\n if (field.type === \"ccName\" && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === \"ccNumber\" && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === \"ccCvc\" && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === \"ccExpiry\" && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n } else {\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === \"section\") {\n return;\n }\n this.processKvp(\n cipher,\n field.label,\n field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text\n );\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== \"\" && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== \"\") {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== \"\") {\n title = titlePrefix + \"/\" + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results\n .filter((value) => {\n return value.url !== \"chrome://FirefoxAccounts\";\n })\n .forEach((value) => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), \"--\");\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n // eslint-disable-next-line\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === \"website\" || value.style === \"globe\") {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === \"creditcard\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, \"Expiration\", value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, \"PIN\", value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (\n !results.hasOwnProperty(keyRing) || // eslint-disable-line\n this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0\n ) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (\n this.isNullOrWhitespace(value.display_name) ||\n value.display_name.indexOf(\"http\") !== 0\n ) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace(\"http://\", \"\").replace(\"https://\", \"\");\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username =\n value.attributes != null\n ? this.getValueOrDefault(value.attributes.username_value)\n : null;\n for (const attr in value.attributes) {\n if (\n !value.attributes.hasOwnProperty(attr) || // eslint-disable-line\n attr === \"username_value\" ||\n attr === \"xdg:schema\"\n ) {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","export class ImportError extends Error {\n constructor(message?: string, public passwordRequired: boolean = false) {\n super(message);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst NotesHeader = \"Notes\\n\\n\";\nconst ApplicationsHeader = \"Applications\\n\\n\";\nconst WebsitesHeader = \"Websites\\n\\n\";\nconst Delimiter = \"\\n---\\n\";\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join(\"\\n\");\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach((n) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get(\"Name\"));\n cipher.notes = this.getValueOrDefault(n.get(\"Text\"));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach((w) => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has(\"Website name\") ? \"Website name\" : \"Application\";\n cipher.name = this.getValueOrDefault(w.get(nameKey), \"\");\n if (!this.isNullOrWhitespace(w.get(\"Login name\"))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += \": \";\n }\n cipher.name += w.get(\"Login name\");\n }\n cipher.notes = this.getValueOrDefault(w.get(\"Comment\"));\n if (w.has(\"Website URL\")) {\n cipher.login.uris = this.makeUriArray(w.get(\"Website URL\"));\n }\n cipher.login.username = this.getValueOrDefault(w.get(\"Login\"));\n cipher.login.password = this.getValueOrDefault(w.get(\"Password\"));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach((p) => {\n if (p.indexOf(\"\\n\") === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split(\"\\n\").forEach((l) => {\n if (itemComment != null) {\n itemComment += \"\\n\" + l;\n return;\n }\n const colonIndex = l.indexOf(\":\");\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === \"Comment\" || key === \"Text\") {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { FieldType } from \"../enums/fieldType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector(\"KeePassFile > Root > Group\");\n if (rootGroup == null) {\n this.result.errorMessage = \"Missing `KeePassFile > Root > Group` node.\";\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, \"\");\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== \"\") {\n groupName += \"/\";\n }\n const nameEl = this.querySelectorDirectChild(node, \"Name\");\n groupName += nameEl == null ? \"-\" : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, \"Entry\").forEach((entry) => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, \"String\").forEach((entryString) => {\n const valueEl = this.querySelectorDirectChild(entryString, \"Value\");\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, \"Key\");\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === \"URL\") {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === \"UserName\") {\n cipher.login.username = value;\n } else if (key === \"Password\") {\n cipher.login.password = value;\n } else if (key === \"otp\") {\n cipher.login.totp = value.replace(\"key=\", \"\");\n } else if (key === \"Title\") {\n cipher.name = value;\n } else if (key === \"Notes\") {\n cipher.notes += value + \"\\n\";\n } else {\n let type = FieldType.Text;\n const attrs = valueEl.attributes as any;\n if (\n attrs.length > 0 &&\n attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === \"True\"\n ) {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, \"Group\").forEach((group) => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group =\n !this.isNullOrWhitespace(value.Group) && value.Group.startsWith(\"Root/\")\n ? value.Group.replace(\"Root/\", \"\")\n : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../../models/domain/importResult\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + \"\\n\";\n cipher.name = this.getValueOrDefault(value[1], \"--\");\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { IdentityView } from \"../models/view/identityView\";\nimport { LoginView } from \"../models/view/loginView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n // eslint-disable-next-line\n grouping = grouping.replace(/\\\\/g, \"/\").replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, \"\");\n }\n const hasFolder = this.getValueOrDefault(grouping, \"(none)\") !== \"(none)\";\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.totp);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n // eslint-disable-next-line\n if (value.hasOwnProperty(\"profilename\") && value.hasOwnProperty(\"profilelanguage\")) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, \"--\");\n cipher.type = CipherType.Card;\n\n if (\n !this.isNullOrWhitespace(value.title) ||\n !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) ||\n !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) ||\n !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)\n ) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, \"0\") === \"1\";\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.type = value.url === \"http://sn\" ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf(\"-\") > -1) {\n const ccexpParts = (value.ccexp as string).split(\"-\");\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === \"0\") {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(\":\");\n if (\n typeParts.length > 1 &&\n typeParts[0] === \"NoteType\" &&\n (typeParts[1] === \"Credit Card\" || typeParts[1] === \"Address\")\n ) {\n if (typeParts[1] === \"Credit Card\") {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n Number: \"number\",\n \"Name on Card\": \"cardholderName\",\n \"Security Code\": \"code\",\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n \"Expiration Date\": \"expMonth\",\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === \",\") {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(\",\");\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + \" 1, 2012\")).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === \"Address\") {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n Title: \"title\",\n \"First Name\": \"firstName\",\n \"Last Name\": \"lastName\",\n \"Middle Name\": \"middleName\",\n Company: \"company\",\n \"Address 1\": \"address1\",\n \"Address 2\": \"address2\",\n \"Address 3\": \"address3\",\n \"City / Town\": \"city\",\n State: \"state\",\n \"Zip / Postal Code\": \"postalCode\",\n Country: \"country\",\n \"Email Address\": \"email\",\n Username: \"username\",\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach((extraPart) => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(\":\");\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === \"NoteType\") {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += \"\\n\" + extraPart;\n } else if (key === \"Notes\") {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += \"\\n\" + val;\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n // eslint-disable-next-line\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, \"--\");\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n const folderName =\n this.getValueOrDefault(value[0], \"Unassigned\") !== \"Unassigned\" ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], \"--\");\n\n if (value[1] === \"Web Logins\" || value[1] === \"Login\") {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split(\"\\\\n\").join(\"\\n\") : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += value[i] + \"\\n\";\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + \": \" + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { IdentityView } from \"../models/view/identityView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst mappedBaseColumns = [\"nickname\", \"additionalInfo\"];\nconst _mappedUserAccountColumns = new Set(\n mappedBaseColumns.concat([\"url\", \"username\", \"password\", \"twofaSecret\"])\n);\nconst _mappedCreditCardColumns = new Set(\n mappedBaseColumns.concat([\"cardNumber\", \"cardName\", \"exp_month\", \"exp_year\", \"cvv\"])\n);\n\nconst _mappedIdentityColumns = new Set(\n mappedBaseColumns.concat([\n \"title\",\n \"firstName\",\n \"middleName\",\n \"lastName\",\n \"email\",\n \"firstAddressLine\",\n \"secondAddressLine\",\n \"city\",\n \"country\",\n \"zipCode\",\n ])\n);\n\nconst _mappedIdCardColumns = new Set(mappedBaseColumns.concat([\"idName\", \"idNumber\", \"idCountry\"]));\n\nconst _mappedTwoFaColumns = new Set(mappedBaseColumns.concat([\"authToken\"]));\n\nconst _mappedUserNoteColumns = new Set(mappedBaseColumns.concat([\"content\"]));\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, \"--\");\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twofaSecret);\n\n this.importUnmappedFields(cipher, value, _mappedUserAccountColumns);\n } else if (value.authToken !== undefined) {\n // TwoFA\n cipher.login.totp = this.getValueOrDefault(value.authToken);\n\n this.importUnmappedFields(cipher, value, _mappedTwoFaColumns);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n\n this.importUnmappedFields(cipher, value, _mappedCreditCardColumns);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n\n this.importUnmappedFields(cipher, value, _mappedIdentityColumns);\n } else if (value.idType !== undefined) {\n // IdCards\n\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n this.processFullName(cipher, value.idName);\n cipher.identity.country = this.getValueOrDefault(value.idCountry);\n\n switch (value.idType) {\n // case \"Driver's License\":\n // case \"ID Card\":\n // case \"Outdoor License\":\n // case \"Software License\":\n // case \"Tax Number\":\n // case \"Bank Account\":\n // case \"Insurance Card\":\n // case \"Health Card\":\n // case \"Membership\":\n // case \"Database\":\n // case \"Reward Program\":\n // case \"Tour Visa\":\n case \"Passport\":\n cipher.identity.passportNumber = value.idNumber;\n break;\n case \"Social Security\":\n cipher.identity.ssn = value.idNumber;\n break;\n default:\n cipher.identity.licenseNumber = value.idNumber;\n break;\n }\n\n this.importUnmappedFields(cipher, value, _mappedIdCardColumns);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.content);\n\n this.importUnmappedFields(cipher, value, _mappedUserNoteColumns);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n importUnmappedFields(cipher: CipherView, row: any, mappedValues: Set) {\n const unmappedFields = Object.keys(row).filter((x) => !mappedValues.has(x));\n unmappedFields.forEach((key) => {\n const item = row as any;\n this.processKvp(cipher, key, item[key]);\n });\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { LoginView } from \"../models/view/loginView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\ntype nodePassCsvParsed = {\n name: string;\n url: string;\n username: string;\n password: string;\n note: string;\n cardholdername: string;\n cardnumber: string;\n cvc: string;\n expirydate: string;\n zipcode: string;\n folder: string;\n full_name: string;\n phone_number: string;\n email: string;\n address1: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n};\n\nexport class NordPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results: nodePassCsvParsed[] = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((record) => {\n const recordType = this.evaluateType(record);\n if (recordType === undefined) {\n return;\n }\n\n if (!this.organization) {\n this.processFolder(result, record.folder);\n }\n\n const cipher = new CipherView();\n cipher.name = this.getValueOrDefault(record.name, \"--\");\n cipher.notes = this.getValueOrDefault(record.note);\n\n switch (recordType) {\n case CipherType.Login:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.username = this.getValueOrDefault(record.username);\n cipher.login.password = this.getValueOrDefault(record.password);\n cipher.login.uris = this.makeUriArray(record.url);\n break;\n case CipherType.Card:\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(record.cardholdername);\n cipher.card.number = this.getValueOrDefault(record.cardnumber);\n cipher.card.code = this.getValueOrDefault(record.cvc);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n this.setCardExpiration(cipher, record.expirydate);\n break;\n\n case CipherType.Identity:\n cipher.type = CipherType.Identity;\n\n this.processFullName(cipher, this.getValueOrDefault(record.full_name));\n cipher.identity.address1 = this.getValueOrDefault(record.address1);\n cipher.identity.address2 = this.getValueOrDefault(record.address2);\n cipher.identity.city = this.getValueOrDefault(record.city);\n cipher.identity.state = this.getValueOrDefault(record.state);\n cipher.identity.postalCode = this.getValueOrDefault(record.zipcode);\n cipher.identity.country = this.getValueOrDefault(record.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n cipher.identity.email = this.getValueOrDefault(record.email);\n cipher.identity.phone = this.getValueOrDefault(record.phone_number);\n break;\n case CipherType.SecureNote:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n break;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private evaluateType(record: nodePassCsvParsed): CipherType {\n if (!this.isNullOrWhitespace(record.username)) {\n return CipherType.Login;\n }\n\n if (!this.isNullOrWhitespace(record.cardnumber)) {\n return CipherType.Card;\n }\n\n if (!this.isNullOrWhitespace(record.full_name)) {\n return CipherType.Identity;\n }\n\n if (!this.isNullOrWhitespace(record.note)) {\n return CipherType.SecureNote;\n }\n\n return undefined;\n }\n}\n","import { CipherView } from \"../../models/view/cipherView\";\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { PasswordHistoryView } from \"../../models/view/passwordHistoryView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach((line) => {\n if (this.isNullOrWhitespace(line) || line[0] !== \"{\") {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (\n !this.isNullOrWhitespace(item.details.ccnum) ||\n !this.isNullOrWhitespace(item.details.cvv)\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (\n !this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)\n ) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, \"designation\", \"value\", \"name\");\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, \"n\", \"v\", \"t\");\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === \"securenotes.SecureNote\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === \"wallet.financial.CreditCard\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === \"identities.Identity\") {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, \"designation\", \"value\", \"name\");\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, \"n\", \"v\", \"t\");\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date((\"\" + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(\n fields: any[],\n cipher: CipherView,\n designationKey: string,\n valueKey: string,\n nameKey: string\n ) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === \"\") {\n return;\n }\n\n // TODO: when date FieldType exists, store this as a date field type instead of formatted Text if k is 'date'\n const fieldValue =\n field.k === \"date\"\n ? new Date(field[valueKey] * 1000).toUTCString()\n : field[valueKey].toString();\n const fieldDesignation =\n field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === \"username\") {\n cipher.login.username = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.login.password) &&\n fieldDesignation === \"password\"\n ) {\n cipher.login.password = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.login.totp) &&\n fieldDesignation != null &&\n fieldDesignation.startsWith(\"TOTP_\")\n ) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === \"ccnum\") {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === \"cvv\") {\n cipher.card.code = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.card.cardholderName) &&\n fieldDesignation === \"cardholder\"\n ) {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (\n this.isNullOrWhitespace(cipher.card.expiration) &&\n fieldDesignation === \"expiry\" &&\n fieldValue.length === 6\n ) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === \"0\") {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === \"type\") {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === \"firstname\") {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === \"lastname\") {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === \"initial\") {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === \"defphone\") {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === \"company\") {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === \"email\") {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === \"username\") {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === \"address\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? \"no_name\" : field[nameKey];\n if (\n fieldName === \"password\" &&\n cipher.passwordHistory != null &&\n cipher.passwordHistory.some((h) => h.password === fieldValue)\n ) {\n return;\n }\n\n const fieldType = field.k === \"concealed\" ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { PasswordHistoryView } from \"../../models/view/passwordHistoryView\";\nimport { SecureNoteView } from \"../../models/view/secureNoteView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport {\n CategoryEnum,\n Details,\n ExportData,\n FieldsEntity,\n Item,\n LoginFieldTypeEnum,\n Overview,\n PasswordHistoryEntity,\n SectionsEntity,\n UrlsEntity,\n Value,\n VaultsEntity,\n} from \"./types/onepassword1PuxImporterTypes\";\n\nexport class OnePassword1PuxImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const exportData: ExportData = JSON.parse(data);\n\n const account = exportData.accounts[0];\n // TODO Add handling of multiple vaults\n // const personalVaults = account.vaults[0].filter((v) => v.attrs.type === VaultAttributeTypeEnum.Personal);\n account.vaults.forEach((vault: VaultsEntity) => {\n vault.items.forEach((item: Item) => {\n if (item.trashed === true) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n\n const category = item.categoryUuid as CategoryEnum;\n switch (category) {\n case CategoryEnum.Login:\n case CategoryEnum.Database:\n case CategoryEnum.Password:\n case CategoryEnum.WirelessRouter:\n case CategoryEnum.Server:\n case CategoryEnum.API_Credential:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n break;\n case CategoryEnum.CreditCard:\n case CategoryEnum.BankAccount:\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n break;\n case CategoryEnum.SecureNote:\n case CategoryEnum.SoftwareLicense:\n case CategoryEnum.EmailAccount:\n case CategoryEnum.MedicalRecord:\n // case CategoryEnum.Document:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n case CategoryEnum.Identity:\n case CategoryEnum.DriversLicense:\n case CategoryEnum.OutdoorLicense:\n case CategoryEnum.Membership:\n case CategoryEnum.Passport:\n case CategoryEnum.RewardsProgram:\n case CategoryEnum.SocialSecurityNumber:\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n break;\n default:\n break;\n }\n\n cipher.favorite = item.favIndex === 1 ? true : false;\n\n this.processOverview(item.overview, cipher);\n\n this.processLoginFields(item, cipher);\n\n this.processDetails(category, item.details, cipher);\n\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n\n this.processSections(category, item.details.sections, cipher);\n\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join(\"\\n\") + \"\\n\";\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processOverview(overview: Overview, cipher: CipherView) {\n if (overview == null) {\n return;\n }\n\n cipher.name = this.getValueOrDefault(overview.title);\n\n if (overview.urls != null) {\n const urls: string[] = [];\n overview.urls.forEach((url: UrlsEntity) => {\n if (!this.isNullOrWhitespace(url.url)) {\n urls.push(url.url);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n if (overview.tags != null && overview.tags.length > 0) {\n const folderName = this.capitalize(overview.tags[0]);\n this.processFolder(this.result, folderName);\n }\n }\n\n private capitalize(inputString: string): string {\n return inputString.trim().replace(/\\w\\S*/g, (w) => w.replace(/^\\w/, (c) => c.toUpperCase()));\n }\n\n private processLoginFields(item: Item, cipher: CipherView) {\n if (item.details == null) {\n return;\n }\n\n if (item.details.loginFields == null || item.details.loginFields.length === 0) {\n return;\n }\n\n item.details.loginFields.forEach((loginField) => {\n if (loginField.designation === \"username\" && loginField.value !== \"\") {\n cipher.type = CipherType.Login;\n cipher.login.username = loginField.value;\n return;\n }\n\n if (loginField.designation === \"password\" && loginField.value !== \"\") {\n cipher.type = CipherType.Login;\n cipher.login.password = loginField.value;\n return;\n }\n\n let fieldValue = loginField.value;\n let fieldType: FieldType = FieldType.Text;\n switch (loginField.fieldType) {\n case LoginFieldTypeEnum.Password:\n fieldType = FieldType.Hidden;\n break;\n case LoginFieldTypeEnum.CheckBox:\n fieldValue = loginField.value !== \"\" ? \"true\" : \"false\";\n fieldType = FieldType.Boolean;\n break;\n default:\n break;\n }\n this.processKvp(cipher, loginField.name, fieldValue, fieldType);\n });\n }\n\n private processDetails(category: CategoryEnum, details: Details, cipher: CipherView) {\n if (category !== CategoryEnum.Password) {\n return;\n }\n\n if (details == null) {\n return;\n }\n cipher.login.password = details.password;\n }\n\n private processSections(category: CategoryEnum, sections: SectionsEntity[], cipher: CipherView) {\n if (sections == null || sections.length === 0) {\n return;\n }\n\n sections.forEach((section: SectionsEntity) => {\n if (section.fields == null) {\n return;\n }\n\n this.parseSectionFields(category, section.fields, cipher);\n });\n }\n\n private parseSectionFields(category: CategoryEnum, fields: FieldsEntity[], cipher: CipherView) {\n fields.forEach((field: FieldsEntity) => {\n const valueKey = Object.keys(field.value)[0];\n const anyField = field as any;\n\n if (\n anyField.value == null ||\n anyField.value[valueKey] == null ||\n anyField.value[valueKey] === \"\"\n ) {\n return;\n }\n\n const fieldName = this.getFieldName(field.id, field.title);\n const fieldValue = this.extractValue(field.value, valueKey);\n\n if (cipher.type === CipherType.Login) {\n if (this.fillLogin(field, fieldValue, cipher)) {\n return;\n }\n\n switch (category) {\n case CategoryEnum.Login:\n case CategoryEnum.Database:\n case CategoryEnum.EmailAccount:\n case CategoryEnum.WirelessRouter:\n break;\n\n case CategoryEnum.Server:\n if (this.isNullOrWhitespace(cipher.login.uri) && field.id === \"url\") {\n cipher.login.uris = this.makeUriArray(fieldValue);\n return;\n }\n break;\n\n case CategoryEnum.API_Credential:\n if (this.fillApiCredentials(field, fieldValue, cipher)) {\n return;\n }\n break;\n default:\n break;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.fillCreditCard(field, fieldValue, cipher)) {\n return;\n }\n\n if (category === CategoryEnum.BankAccount) {\n if (this.fillBankAccount(field, fieldValue, cipher)) {\n return;\n }\n }\n } else if (cipher.type === CipherType.Identity) {\n if (this.fillIdentity(field, fieldValue, cipher, valueKey)) {\n return;\n }\n if (valueKey === \"address\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip, state } = field.value.address;\n cipher.identity.address1 = this.getValueOrDefault(street);\n cipher.identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n cipher.identity.country = country.toUpperCase();\n }\n cipher.identity.postalCode = this.getValueOrDefault(zip);\n cipher.identity.state = this.getValueOrDefault(state);\n return;\n }\n\n switch (category) {\n case CategoryEnum.Identity:\n break;\n case CategoryEnum.DriversLicense:\n if (this.fillDriversLicense(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.OutdoorLicense:\n if (this.fillOutdoorLicense(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.Membership:\n if (this.fillMembership(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.Passport:\n if (this.fillPassport(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.RewardsProgram:\n if (this.fillRewardsProgram(field, fieldValue, cipher)) {\n return;\n }\n break;\n case CategoryEnum.SocialSecurityNumber:\n if (this.fillSSN(field, fieldValue, cipher)) {\n return;\n }\n break;\n default:\n break;\n }\n }\n\n if (valueKey === \"email\") {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { email_address, provider } = field.value.email;\n this.processKvp(cipher, fieldName, email_address, FieldType.Text);\n this.processKvp(cipher, \"provider\", provider, FieldType.Text);\n return;\n }\n\n // Do not include a password field if it's already in the history\n if (\n field.title === \"password\" &&\n cipher.passwordHistory != null &&\n cipher.passwordHistory.some((h) => h.password === fieldValue)\n ) {\n return;\n }\n\n // TODO ?? If one of the fields is marked as guarded, then activate Password-Reprompt for the entire item\n if (field.guarded && cipher.reprompt === CipherRepromptType.None) {\n cipher.reprompt = CipherRepromptType.Password;\n }\n\n const fieldType = valueKey === \"concealed\" ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n\n private getFieldName(id: string, title: string): string {\n if (this.isNullOrWhitespace(title)) {\n return id;\n }\n\n // Naive approach of checking if the fields id is usable\n if (id.length > 25 && RegExp(/[0-9]{2}[A-Z]{2}/, \"i\").test(id)) {\n return title;\n }\n return id;\n }\n\n private extractValue(value: Value, valueKey: string): string {\n if (valueKey === \"date\") {\n return new Date(value.date * 1000).toUTCString();\n }\n\n if (valueKey === \"monthYear\") {\n return value.monthYear.toString();\n }\n\n return (value as any)[valueKey];\n }\n\n private fillLogin(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n const fieldName = this.getFieldName(field.id, field.title);\n\n if (this.isNullOrWhitespace(cipher.login.username) && fieldName === \"username\") {\n cipher.login.username = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.login.password) && fieldName === \"password\") {\n cipher.login.password = fieldValue;\n return true;\n }\n\n if (\n this.isNullOrWhitespace(cipher.login.totp) &&\n field.id != null &&\n field.id.startsWith(\"TOTP_\")\n ) {\n cipher.login.totp = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillApiCredentials(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n const fieldName = this.getFieldName(field.id, field.title);\n\n if (this.isNullOrWhitespace(cipher.login.password) && fieldName === \"credential\") {\n cipher.login.password = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.login.uri) && fieldName === \"hostname\") {\n cipher.login.uris = this.makeUriArray(fieldValue);\n return true;\n }\n\n return false;\n }\n\n private fillCreditCard(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.card.number) && field.id === \"ccnum\") {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.code) && field.id === \"cvv\") {\n cipher.card.code = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.cardholderName) && field.id === \"cardholder\") {\n cipher.card.cardholderName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.card.expiration) && field.id === \"expiry\") {\n const monthYear: string = fieldValue.toString().trim();\n cipher.card.expMonth = monthYear.substring(4, 6);\n if (cipher.card.expMonth[0] === \"0\") {\n cipher.card.expMonth = cipher.card.expMonth.substring(1, 2);\n }\n cipher.card.expYear = monthYear.substring(0, 4);\n return true;\n }\n\n if (field.id === \"type\") {\n // Skip since brand was determined from number above\n return true;\n }\n\n return false;\n }\n\n private fillBankAccount(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.card.cardholderName) && field.id === \"owner\") {\n cipher.card.cardholderName = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillIdentity(\n field: FieldsEntity,\n fieldValue: string,\n cipher: CipherView,\n valueKey: string\n ): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"firstname\") {\n cipher.identity.firstName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.lastName) && field.id === \"lastname\") {\n cipher.identity.lastName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.middleName) && field.id === \"initial\") {\n cipher.identity.middleName = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.phone) && field.id === \"defphone\") {\n cipher.identity.phone = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"company\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.email)) {\n if (valueKey === \"email\") {\n const { email_address, provider } = field.value.email;\n cipher.identity.email = this.getValueOrDefault(email_address);\n this.processKvp(cipher, \"provider\", provider, FieldType.Text);\n return true;\n }\n\n if (field.id === \"email\") {\n cipher.identity.email = fieldValue;\n return true;\n }\n }\n\n if (this.isNullOrWhitespace(cipher.identity.username) && field.id === \"username\") {\n cipher.identity.username = fieldValue;\n return true;\n }\n return false;\n }\n\n private fillDriversLicense(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"fullname\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.address1) && field.id === \"address\") {\n cipher.identity.address1 = fieldValue;\n return true;\n }\n\n // TODO ISO code\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.state) && field.id === \"state\") {\n cipher.identity.state = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.licenseNumber) && field.id === \"number\") {\n cipher.identity.licenseNumber = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillOutdoorLicense(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n // TODO ISO code\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.state) && field.id === \"state\") {\n cipher.identity.state = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillMembership(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"member_name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"org_name\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.phone) && field.id === \"phone\") {\n cipher.identity.phone = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillPassport(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"fullname\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n // TODO Iso\n if (this.isNullOrWhitespace(cipher.identity.country) && field.id === \"issuing_country\") {\n cipher.identity.country = fieldValue;\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.passportNumber) && field.id === \"number\") {\n cipher.identity.passportNumber = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillRewardsProgram(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"member_name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.company) && field.id === \"company_name\") {\n cipher.identity.company = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private fillSSN(field: FieldsEntity, fieldValue: string, cipher: CipherView): boolean {\n if (this.isNullOrWhitespace(cipher.identity.firstName) && field.id === \"name\") {\n this.processFullName(cipher, fieldValue);\n return true;\n }\n\n if (this.isNullOrWhitespace(cipher.identity.ssn) && field.id === \"number\") {\n cipher.identity.ssn = fieldValue;\n return true;\n }\n\n return false;\n }\n\n private parsePasswordHistory(historyItems: PasswordHistoryEntity[], cipher: CipherView) {\n if (historyItems == null || historyItems.length === 0) {\n return;\n }\n\n const maxSize = historyItems.length > 5 ? 5 : historyItems.length;\n cipher.passwordHistory = historyItems\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date((\"\" + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { FieldType } from \"../../enums/fieldType\";\nimport { ImportResult } from \"../../models/domain/importResult\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { BaseImporter } from \"../baseImporter\";\nimport { Importer } from \"../importer\";\n\nimport { CipherImportContext } from \"./cipherImportContext\";\n\nexport const IgnoredProperties = [\n \"ainfo\",\n \"autosubmit\",\n \"notesplain\",\n \"ps\",\n \"scope\",\n \"tags\",\n \"title\",\n \"uuid\",\n \"notes\",\n];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [\n this.setLoginUsername,\n this.setLoginPassword,\n this.setLoginUris,\n ];\n protected creditCardPropertyParsers = [\n this.setCreditCardNumber,\n this.setCreditCardVerification,\n this.setCreditCardCardholderName,\n this.setCreditCardExpiry,\n ];\n protected identityPropertyParsers = [\n this.setIdentityFirstName,\n this.setIdentityInitial,\n this.setIdentityLastName,\n this.setIdentityUserName,\n this.setIdentityEmail,\n this.setIdentityPhone,\n this.setIdentityCompany,\n ];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: \"\\\\\",\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (this.isNullOrWhitespace(this.getProp(value, \"title\"))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, \"title\"), \"--\");\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n // eslint-disable-next-line\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (\n cipher.type === CipherType.Login &&\n !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) &&\n altUsername.indexOf(\"://\") === -1\n ) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes =\n this.getValueOrDefault(this.getProp(importRecord, \"notesPlain\"), \"\") +\n \"\\n\" +\n this.getValueOrDefault(this.getProp(importRecord, \"notes\"), \"\") +\n \"\\n\";\n cipher.notes.trim();\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (\n IgnoredProperties.indexOf(context.lowerProperty) === -1 &&\n !context.lowerProperty.startsWith(\"section:\") &&\n !context.lowerProperty.startsWith(\"section \")\n ) {\n if (altUsername == null && context.lowerProperty === \"email\") {\n return context.importRecord[context.property];\n } else if (\n context.lowerProperty === \"created date\" ||\n context.lowerProperty === \"modified date\"\n ) {\n const readableDate = new Date(\n parseInt(context.importRecord[context.property], 10) * 1000\n ).toUTCString();\n this.processKvp(context.cipher, \"1Password \" + context.property, readableDate);\n return null;\n }\n if (\n context.lowerProperty.includes(\"password\") ||\n context.lowerProperty.includes(\"key\") ||\n context.lowerProperty.includes(\"secret\")\n ) {\n this.processKvp(\n context.cipher,\n context.property,\n context.importRecord[context.property],\n FieldType.Hidden\n );\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.firstName) &&\n context.lowerProperty.includes(\"first name\")\n ) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.middleName) &&\n context.lowerProperty.includes(\"initial\")\n ) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.lastName) &&\n context.lowerProperty.includes(\"last name\")\n ) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.username) &&\n context.lowerProperty.includes(\"username\")\n ) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.company) &&\n context.lowerProperty.includes(\"company\")\n ) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.phone) &&\n context.lowerProperty.includes(\"default phone\")\n ) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.identity.email) &&\n context.lowerProperty.includes(\"email\")\n ) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (\n this.isNullOrWhitespace(context.cipher.card.number) &&\n context.lowerProperty.includes(\"number\")\n ) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.code) &&\n context.lowerProperty.includes(\"verification number\")\n ) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.cardholderName) &&\n context.lowerProperty.includes(\"cardholder name\")\n ) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.expiration) &&\n context.lowerProperty.includes(\"expiry date\") &&\n context.importRecord[context.property].length === 7\n ) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(\n 0,\n 2\n );\n if (context.cipher.card.expMonth[0] === \"0\") {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.login.password) &&\n context.lowerProperty === \"password\"\n ) {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.login.username) &&\n context.lowerProperty === \"username\"\n ) {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if (\n (context.cipher.login.uris == null || context.cipher.login.uris.length === 0) &&\n context.lowerProperty === \"urls\"\n ) {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if (context.lowerProperty === \"url\") {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { Importer } from \"../importer\";\n\nimport { IgnoredProperties, OnePasswordCsvImporter } from \"./onepasswordCsvImporter\";\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, \"type\"), \"Login\");\n switch (onePassType) {\n case \"Credit Card\":\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push(\"type\");\n break;\n case \"Identity\":\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push(\"type\");\n break;\n case \"Login\":\n case \"Secure Note\":\n IgnoredProperties.push(\"type\");\n break;\n default:\n break;\n }\n }\n}\n","import { CipherType } from \"../../enums/cipherType\";\nimport { CardView } from \"../../models/view/cardView\";\nimport { CipherView } from \"../../models/view/cipherView\";\nimport { IdentityView } from \"../../models/view/identityView\";\nimport { LoginView } from \"../../models/view/loginView\";\nimport { Importer } from \"../importer\";\n\nimport { CipherImportContext } from \"./cipherImportContext\";\nimport { OnePasswordCsvImporter } from \"./onepasswordCsvImporter\";\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))\n ) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))\n ) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, \"address\", context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (\n this.isNullOrWhitespace(context.cipher.card.expiration) &&\n context.lowerProperty.includes(\"expiry date\")\n ) {\n const expSplit = (context.importRecord[context.property] as string).split(\"/\");\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === \"0\" && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","export interface ExportData {\n accounts?: AccountsEntity[] | null;\n}\nexport interface AccountsEntity {\n attrs: AccountAttributes;\n vaults?: VaultsEntity[] | null;\n}\nexport interface AccountAttributes {\n accountName: string;\n name: string;\n avatar: string;\n email: string;\n uuid: string;\n domain: string;\n}\nexport interface VaultsEntity {\n attrs: VaultAttributes;\n items?: Item[] | null;\n}\nexport interface VaultAttributes {\n uuid: string;\n desc: string;\n avatar: string;\n name: string;\n type: string;\n}\n\nexport enum CategoryEnum {\n Login = \"001\",\n CreditCard = \"002\",\n SecureNote = \"003\",\n Identity = \"004\",\n Password = \"005\",\n Document = \"006\",\n SoftwareLicense = \"100\",\n BankAccount = \"101\",\n Database = \"102\",\n DriversLicense = \"103\",\n OutdoorLicense = \"104\",\n Membership = \"105\",\n Passport = \"106\",\n RewardsProgram = \"107\",\n SocialSecurityNumber = \"108\",\n WirelessRouter = \"109\",\n Server = \"110\",\n EmailAccount = \"111\",\n API_Credential = \"112\",\n MedicalRecord = \"113\",\n}\n\nexport interface Item {\n uuid: string;\n favIndex: number;\n createdAt: number;\n updatedAt: number;\n trashed?: boolean;\n categoryUuid: string;\n details: Details;\n overview: Overview;\n}\nexport interface Details {\n loginFields?: (LoginFieldsEntity | null)[] | null;\n notesPlain?: string | null;\n sections?: (SectionsEntity | null)[] | null;\n passwordHistory?: (PasswordHistoryEntity | null)[] | null;\n documentAttributes?: DocumentAttributes | null;\n password?: string | null;\n}\n\nexport enum LoginFieldTypeEnum {\n TextOrHtml = \"T\",\n EmailAddress = \"E\",\n URL = \"U\",\n Number = \"N\",\n Password = \"P\",\n TextArea = \"A\",\n PhoneNumber = \"T\",\n CheckBox = \"C\",\n}\nexport interface LoginFieldsEntity {\n value: string;\n id: string;\n name: string;\n fieldType: LoginFieldTypeEnum | string;\n designation?: string | null;\n}\nexport interface SectionsEntity {\n title: string;\n name?: string | null;\n fields?: FieldsEntity[] | null;\n}\nexport interface FieldsEntity {\n title: string;\n id: string;\n value: Value;\n indexAtSource: number;\n guarded: boolean;\n multiline: boolean;\n dontGenerate: boolean;\n placeholder?: string;\n inputTraits: InputTraits;\n clipboardFilter?: string | null;\n}\nexport interface Value {\n totp?: string | null;\n date?: number | null;\n string?: string | null;\n concealed?: string | null;\n email?: Email | null;\n phone?: string | null;\n menu?: string | null;\n gender?: string | null;\n monthYear?: number | null;\n url?: string | null;\n address?: Address | null;\n creditCardType?: string | null;\n creditCardNumber?: string | null;\n reference?: string | null;\n}\n\nexport interface Email {\n email_address: string;\n provider: string;\n}\n\nexport interface Address {\n street: string;\n city: string;\n country: string;\n zip: string;\n state: string;\n}\nexport interface InputTraits {\n keyboard: string;\n correction: string;\n capitalization: string;\n}\nexport interface PasswordHistoryEntity {\n value: string;\n time: number;\n}\nexport interface DocumentAttributes {\n fileName: string;\n documentId: string;\n decryptedSize: number;\n}\nexport interface Overview {\n subtitle: string;\n title: string;\n url: string;\n urls?: UrlsEntity[] | null;\n ps?: number | null;\n pbe?: number | null;\n pgrng?: boolean | null;\n tags?: string[] | null;\n}\nexport interface UrlsEntity {\n label: string;\n url: string;\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach((value) => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(\",\");\n tags.forEach((tag) => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(\",\");\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n this.processFolder(result, this.getValue(\"category\", value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue(\"description\", value);\n cipher.name = this.getValueOrDefault(this.getValue(\"title\", value), \"--\");\n cipher.login.username = this.getValue(\"username\", value);\n cipher.login.password = this.getValue(\"password\", value);\n cipher.login.uris = this.makeUriArray(this.getValue(\"site\", value));\n this.processKvp(cipher, \"Password 2\", this.getValue(\"password2\", value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[\" \" + key]));\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = \"Email: \" + credential.email + \"\\n\";\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, \"\");\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case \"text\":\n case \"password\":\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] =\n tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0\n ? tagsJson.tags\n .map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch {\n // Ignore error\n }\n return null;\n })\n .filter((t: string) => !this.isNullOrWhitespace(t))\n : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach((tag) => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, \"\");\n cipher.notes += \"\\n\\n\" + this.getValueOrDefault(value[\"Shared Notes\"], \"\") + \"\\n\";\n cipher.name = this.getValueOrDefault(value[\"Entry Name\"], \"--\");\n cipher.login.username = this.getValueOrDefault(value[\"User ID\"]);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += \"\\n\" + extra;\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value[\"Extra Fields\"])\n ? JSON.parse(value[\"Extra Fields\"])\n : null;\n const fields =\n fieldsJson != null && fieldsJson.extraFields != null && fieldsJson.extraFields.length > 0\n ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch {\n // Ignore error\n }\n return null;\n })\n : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach((value) => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === \"0\";\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], \"--\");\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], \"(None)\");\n let folderName = folder !== \"(None)\" ? folder.split(\"\\\\\").join(\"/\") : null;\n if (folderName != null) {\n folderName = folder.split(\" > \").join(\"/\");\n folderName = folder.split(\">\").join(\"/\");\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split(\"\\\\r\\\\n\").join(\"\\n\").split(\"\\\\n\").join(\"\\n\");\n }\n\n if (value.type === \"CreditCard\") {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n // eslint-disable-next-line\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (\n this.isNullOrWhitespace(val) ||\n property === \"notes\" ||\n property === \"ignoreItemInSecurityScore\"\n ) {\n continue;\n }\n\n if (property === \"custom_fields\") {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === \"cardNumber\") {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === \"nameOnCard\") {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === \"security_code\") {\n cipher.card.code = val;\n continue;\n } else if (property === \"expires\") {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n continue;\n } else if (property === \"cardType\") {\n continue;\n }\n } else {\n if (\n (property === \"username\" || property === \"email\") &&\n this.isNullOrWhitespace(cipher.login.username)\n ) {\n cipher.login.username = val;\n continue;\n } else if (property === \"password\") {\n cipher.login.password = val;\n continue;\n } else if (property === \"totp\") {\n cipher.login.totp = val;\n continue;\n } else if (\n (cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1\n ) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll(\"PasswordManager > record\");\n Array.from(records).forEach((record) => {\n const category = this.querySelectorDirectChild(record, \"Category\");\n const categoryText =\n category != null &&\n !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== \"Unfiled\"\n ? category.textContent\n : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, \"Account-Name\");\n const userId = this.querySelectorDirectChild(record, \"User-Id\");\n const password = this.querySelectorDirectChild(record, \"Password\");\n const url = this.querySelectorDirectChild(record, \"URL\");\n const notes = this.querySelectorDirectChild(record, \"Notes\");\n const cipher = this.initLoginCipher();\n cipher.name =\n accountName != null ? this.getValueOrDefault(accountName.textContent, \"--\") : \"--\";\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : \"\";\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password =\n password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push(\"Attribute-\" + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(\",\")).forEach((attr) => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === \"null\") {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector(\"passwordsafe\");\n if (passwordSafe == null) {\n result.errorMessage = \"Missing `passwordsafe` node.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute(\"delimiter\");\n const entries = doc.querySelectorAll(\"passwordsafe > entry\");\n Array.from(entries).forEach((entry) => {\n const group = this.querySelectorDirectChild(entry, \"group\");\n const groupText =\n group != null && !this.isNullOrWhitespace(group.textContent)\n ? group.textContent.split(\".\").join(\"/\")\n : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, \"title\");\n const username = this.querySelectorDirectChild(entry, \"username\");\n const email = this.querySelectorDirectChild(entry, \"email\");\n const password = this.querySelectorDirectChild(entry, \"password\");\n const url = this.querySelectorDirectChild(entry, \"url\");\n const notes = this.querySelectorDirectChild(entry, \"notes\");\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, \"--\") : \"--\";\n cipher.notes =\n notes != null\n ? this.getValueOrDefault(notes.textContent, \"\").split(notesDelimiter).join(\"\\n\")\n : null;\n cipher.login.username =\n username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password =\n password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes)\n ? \"Email: \" + email.textContent\n : cipher.notes + \"\\n\" + \"Email: \" + email.textContent;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], \"\").split(\"¬\").join(\"\\n\");\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.trash === \"true\") {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === \"LoginItem\") {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === \"CreditCardItem\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, \"PIN\", pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, \"Zip Code\", zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach((value) => {\n const folder =\n !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith(\"/\")\n ? value.Folder.replace(\"/\", \"\")\n : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(\":\");\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === \"-no-name-\" ? null : parts[0];\n const val = parts.length === 4 && parts[2] === \"rck\" ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (\n i === results.length &&\n cipher.name === \"--\" &&\n this.isNullOrWhitespace(cipher.login.password)\n ) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SafariCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title, \"--\");\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url ?? value.URL);\n cipher.login.totp = this.getValueOrDefault(value.OTPAuth);\n cipher.notes = this.getValueOrDefault(value.Notes);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector(\"database\");\n if (db == null) {\n result.errorMessage = \"Missing `database` node.\";\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll(\"database > label\")).forEach((labelEl) => {\n const name = labelEl.getAttribute(\"name\");\n const id = labelEl.getAttribute(\"id\");\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll(\"database > card\")).forEach((cardEl) => {\n if (cardEl.getAttribute(\"template\") === \"true\" || cardEl.getAttribute(\"deleted\") === \"true\") {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, \"label_id\");\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute(\"title\"), \"--\");\n\n if (cardEl.getAttribute(\"star\") === \"true\") {\n cipher.favorite = true;\n }\n\n const cardType = cardEl.getAttribute(\"type\");\n if (cardType === \"note\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, \"field\")).forEach((fieldEl) => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute(\"name\");\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute(\"type\"), \"\").toLowerCase();\n if (fieldType === \"login\") {\n cipher.login.username = text;\n } else if (fieldType === \"password\" || fieldType === \"secret\") {\n // safeInCloud allows for more than one password. we just insert them here and find the one used as password later\n this.processKvp(cipher, name, text, FieldType.Hidden);\n } else if (fieldType === \"one_time_password\") {\n cipher.login.totp = text;\n } else if (fieldType === \"notes\") {\n cipher.notes += text + \"\\n\";\n } else if (fieldType === \"weblogin\" || fieldType === \"website\") {\n cipher.login.uris = this.makeUriArray(text);\n } else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, \"notes\")).forEach((notesEl) => {\n cipher.notes += notesEl.textContent + \"\\n\";\n });\n\n this.setPassword(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n // Choose a password from all passwords. Take one that has password in its name, or the first one if there is no such entry\n // if its name is password, we can safely remove it form the fields. otherwise, it would maybe be best to keep it as a hidden field\n setPassword(cipher: CipherView) {\n const candidates = cipher.fields.filter((field) => field.type === FieldType.Hidden);\n if (!candidates.length) {\n return;\n }\n\n let choice: FieldView;\n for (const field of candidates) {\n if (this.passwordFieldNames.includes(field.name.toLowerCase())) {\n choice = field;\n cipher.fields = cipher.fields.filter((f) => f !== choice);\n break;\n }\n }\n\n if (!choice) {\n choice = candidates[0];\n }\n\n cipher.login.password = choice.value;\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), \"--\");\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], \"\");\n cipher.name = this.getValueOrDefault(value[1], \"--\");\n\n if (value[0] === \"Web Logins\" || value[0] === \"Servers\" || value[0] === \"Email Accounts\") {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += value[i] + \"\\n\";\n }\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll(\"root > Database > Logins > Login\");\n Array.from(loginNodes).forEach((loginNode) => {\n const accountId = loginNode.getAttribute(\"ID\");\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute(\"Name\");\n const passwordText = loginNode.getAttribute(\"Password\");\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector(\n \"root > Database > Accounts > Account > \" +\n 'LoginLinks > Login[SourceLoginID=\"' +\n accountId +\n '\"]'\n );\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute(\"Name\");\n linkText = account.getAttribute(\"Link\");\n groupId = account.getAttribute(\"ParentID\");\n notesText = account.getAttribute(\"Comments\");\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split(\"/n\").join(\"\\n\");\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, \"\");\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, \"--\");\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = \"/\" + groupText;\n }\n groupText = group.getAttribute(\"Name\") + groupText;\n return this.buildGroupText(doc, group.getAttribute(\"ParentID\"), groupText);\n }\n}\n","import { CipherType } from \"../enums/cipherType\";\nimport { SecureNoteType } from \"../enums/secureNoteType\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CardView } from \"../models/view/cardView\";\nimport { SecureNoteView } from \"../models/view/secureNoteView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nconst PropertiesToIgnore = [\n \"kind\",\n \"autologin\",\n \"favorite\",\n \"hexcolor\",\n \"protectedwithpassword\",\n \"subdomainonly\",\n \"type\",\n \"tk_export_version\",\n \"note\",\n \"title\",\n \"document_content\",\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, \"\").toLowerCase() === \"true\";\n cipher.name = this.getValueOrDefault(value.name, \"--\");\n cipher.notes = this.getValueOrDefault(value.memo, \"\");\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== \"login\") {\n cipher.name = this.getValueOrDefault(value.title, \"--\");\n cipher.notes = this.getValueOrDefault(value.note, \"\");\n }\n\n if (value.kind === \"cc\") {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n }\n } else if (value.kind !== \"login\") {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, \"\");\n }\n for (const property in value) {\n if (\n value.hasOwnProperty(property) && // eslint-disable-line\n PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])\n ) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], \"--\");\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, \"--\");\n cipher.login.username = this.getValueOrDefault(value[\"User name\"]);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { ImportResult } from \"../models/domain/importResult\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nimport { BaseImporter } from \"./baseImporter\";\nimport { Importer } from \"./importer\";\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value) => {\n if (\n this.isNullOrWhitespace(value[\"Password Name\"]) &&\n this.isNullOrWhitespace(value[\"Secret Name\"])\n ) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, \"0\") === \"1\";\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value[\"Password Name\"],\n this.getValueOrDefault(value[\"Secret Name\"], \"--\")\n );\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value[\"Password URL\"], this.getValueOrDefault(value[\"Secret URL\"]))\n );\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach((line) => {\n const delimPosition = line.indexOf(\":\");\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (\n this.isNullOrWhitespace(field) ||\n this.isNullOrWhitespace(value) ||\n field === \"SecretType\"\n ) {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (\n cipher.login.password == null &&\n this.passwordFieldNames.indexOf(fieldLower) > -1\n ) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import { I18nService } from \"../abstractions/i18n.service\";\n\nimport { IFrameComponent } from \"./iframe_component\";\n\nexport class CaptchaIFrame extends IFrameComponent {\n constructor(\n win: Window,\n webVaultUrl: string,\n private i18nService: I18nService,\n successCallback: (message: string) => any,\n errorCallback: (message: string) => any,\n infoCallback: (message: string) => any\n ) {\n super(\n win,\n webVaultUrl,\n \"captcha-connector.html\",\n \"hcaptcha_iframe\",\n successCallback,\n errorCallback,\n (message: string) => {\n const parsedMessage = JSON.parse(message);\n if (typeof parsedMessage !== \"string\") {\n this.iframe.height = parsedMessage.height.toString();\n this.iframe.width = parsedMessage.width.toString();\n } else {\n infoCallback(parsedMessage);\n }\n }\n );\n }\n\n init(siteKey: string): void {\n super.initComponent(\n this.createParams({ siteKey: siteKey, locale: this.i18nService.translationLocale }, 1)\n );\n }\n}\n","export abstract class IFrameComponent {\n iframe: HTMLIFrameElement;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(\n private win: Window,\n protected webVaultUrl: string,\n private path: string,\n private iframeId: string,\n public successCallback?: (message: string) => any,\n public errorCallback?: (message: string) => any,\n public infoCallback?: (message: string) => any\n ) {\n this.connectorLink = win.document.createElement(\"a\");\n }\n\n stop() {\n this.sendMessage(\"stop\");\n }\n\n start() {\n this.sendMessage(\"start\");\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode((\"0x\" + p1) as any);\n })\n );\n }\n\n cleanup() {\n this.win.removeEventListener(\"message\", this.parseFunction, false);\n }\n\n protected createParams(data: any, version: number) {\n return new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n v: version.toString(),\n });\n }\n\n protected initComponent(params: URLSearchParams): void {\n this.connectorLink.href = `${this.webVaultUrl}/${this.path}?${params}`;\n this.iframe = this.win.document.getElementById(this.iframeId) as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener(\"message\", this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split(\"|\");\n if (parts[0] === \"success\" && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === \"error\" && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === \"info\" && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (\n event.origin == null ||\n event.origin === \"\" ||\n event.origin !== (this.connectorLink as any).origin ||\n event.data == null ||\n typeof event.data !== \"string\"\n ) {\n return false;\n }\n\n return (\n event.data.indexOf(\"success|\") === 0 ||\n event.data.indexOf(\"error|\") === 0 ||\n event.data.indexOf(\"info|\") === 0\n );\n }\n}\n","import { LinkedIdType } from \"../enums/linkedIdType\";\nimport { ItemView } from \"../models/view/itemView\";\n\nexport class LinkedMetadata {\n constructor(readonly propertyKey: string, private readonly _i18nKey?: string) {}\n\n get i18nKey() {\n return this._i18nKey ?? this.propertyKey;\n }\n}\n\n/**\n * A decorator used to set metadata used by Linked custom fields. Apply it to a class property or getter to make it\n * available as a Linked custom field option.\n * @param id - A unique value that is saved in the Field model. It is used to look up the decorated class property.\n * @param i18nKey - The i18n key used to describe the decorated class property in the UI. If it is null, then the name\n * of the class property will be used as the i18n key.\n */\nexport function linkedFieldOption(id: LinkedIdType, i18nKey?: string) {\n return (prototype: ItemView, propertyKey: string) => {\n if (prototype.linkedFieldOptions == null) {\n prototype.linkedFieldOptions = new Map();\n }\n\n prototype.linkedFieldOptions.set(id, new LinkedMetadata(propertyKey, i18nKey));\n };\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { EnvironmentService } from \"../../abstractions/environment.service\";\nimport { KeyConnectorService } from \"../../abstractions/keyConnector.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { ApiLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { ApiTokenRequest } from \"../../models/request/identityToken/apiTokenRequest\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class ApiLogInStrategy extends LogInStrategy {\n tokenRequest: ApiTokenRequest;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private environmentService: EnvironmentService,\n private keyConnectorService: KeyConnectorService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin(tokenResponse: IdentityTokenResponse) {\n if (tokenResponse.apiUseKeyConnector) {\n const keyConnectorUrl = this.environmentService.getKeyConnectorUrl();\n await this.keyConnectorService.getAndSetKey(keyConnectorUrl);\n }\n }\n\n async logIn(credentials: ApiLogInCredentials) {\n this.tokenRequest = new ApiTokenRequest(\n credentials.clientId,\n credentials.clientSecret,\n await this.buildTwoFactor(),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n\n protected async saveAccountInformation(tokenResponse: IdentityTokenResponse) {\n await super.saveAccountInformation(tokenResponse);\n await this.stateService.setApiKeyClientId(this.tokenRequest.clientId);\n await this.stateService.setApiKeyClientSecret(this.tokenRequest.clientSecret);\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\nimport { Account, AccountProfile, AccountTokens } from \"../../models/domain/account\";\nimport { AuthResult } from \"../../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../../models/domain/logInCredentials\";\nimport { DeviceRequest } from \"../../models/request/deviceRequest\";\nimport { ApiTokenRequest } from \"../../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../../models/request/identityToken/ssoTokenRequest\";\nimport { TokenRequestTwoFactor } from \"../../models/request/identityToken/tokenRequestTwoFactor\";\nimport { KeysRequest } from \"../../models/request/keysRequest\";\nimport { IdentityCaptchaResponse } from \"../../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../../models/response/identityTwoFactorResponse\";\n\nexport abstract class LogInStrategy {\n protected abstract tokenRequest: ApiTokenRequest | PasswordTokenRequest | SsoTokenRequest;\n protected captchaBypassToken: string = null;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected tokenService: TokenService,\n protected appIdService: AppIdService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected logService: LogService,\n protected stateService: StateService,\n protected twoFactorService: TwoFactorService\n ) {}\n\n abstract logIn(\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ): Promise;\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string = null\n ): Promise {\n this.tokenRequest.setTwoFactor(twoFactor);\n return this.startLogIn();\n }\n\n protected async startLogIn(): Promise {\n this.twoFactorService.clearSelectedProvider();\n\n const response = await this.apiService.postIdentityToken(this.tokenRequest);\n\n if (response instanceof IdentityTwoFactorResponse) {\n return this.processTwoFactorResponse(response);\n } else if (response instanceof IdentityCaptchaResponse) {\n return this.processCaptchaResponse(response);\n } else if (response instanceof IdentityTokenResponse) {\n return this.processTokenResponse(response);\n }\n\n throw new Error(\"Invalid response object.\");\n }\n\n protected onSuccessfulLogin(response: IdentityTokenResponse): Promise {\n // Implemented in subclass if required\n return null;\n }\n\n protected async buildDeviceRequest() {\n const appId = await this.appIdService.getAppId();\n return new DeviceRequest(appId, this.platformUtilsService);\n }\n\n protected async buildTwoFactor(userProvidedTwoFactor?: TokenRequestTwoFactor) {\n if (userProvidedTwoFactor != null) {\n return userProvidedTwoFactor;\n }\n\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken();\n if (storedTwoFactorToken != null) {\n return new TokenRequestTwoFactor(TwoFactorProviderType.Remember, storedTwoFactorToken, false);\n }\n\n return new TokenRequestTwoFactor();\n }\n\n protected async saveAccountInformation(tokenResponse: IdentityTokenResponse) {\n const accountInformation = await this.tokenService.decodeToken(tokenResponse.accessToken);\n await this.stateService.addAccount(\n new Account({\n profile: {\n ...new AccountProfile(),\n ...{\n userId: accountInformation.sub,\n email: accountInformation.email,\n hasPremiumPersonally: accountInformation.premium,\n kdfIterations: tokenResponse.kdfIterations,\n kdfType: tokenResponse.kdf,\n },\n },\n tokens: {\n ...new AccountTokens(),\n ...{\n accessToken: tokenResponse.accessToken,\n refreshToken: tokenResponse.refreshToken,\n },\n },\n })\n );\n }\n\n protected async processTokenResponse(response: IdentityTokenResponse): Promise {\n const result = new AuthResult();\n result.resetMasterPassword = response.resetMasterPassword;\n result.forcePasswordReset = response.forcePasswordReset;\n\n await this.saveAccountInformation(response);\n\n if (response.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(response);\n }\n\n const newSsoUser = response.key == null;\n if (!newSsoUser) {\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(\n response.privateKey ?? (await this.createKeyPairForOldAccount())\n );\n }\n\n await this.onSuccessfulLogin(response);\n\n await this.stateService.setBiometricLocked(false);\n this.messagingService.send(\"loggedIn\");\n\n return result;\n }\n\n private async processTwoFactorResponse(response: IdentityTwoFactorResponse): Promise {\n const result = new AuthResult();\n result.twoFactorProviders = response.twoFactorProviders2;\n this.twoFactorService.setProviders(response);\n this.captchaBypassToken = response.captchaToken ?? null;\n return result;\n }\n\n private async processCaptchaResponse(response: IdentityCaptchaResponse): Promise {\n const result = new AuthResult();\n result.captchaSiteKey = response.siteKey;\n return result;\n }\n\n private async createKeyPairForOldAccount() {\n try {\n const [publicKey, privateKey] = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(publicKey, privateKey.encryptedString));\n return privateKey.encryptedString;\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { AuthService } from \"../../abstractions/auth.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { HashPurpose } from \"../../enums/hashPurpose\";\nimport { AuthResult } from \"../../models/domain/authResult\";\nimport { PasswordLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../../models/domain/symmetricCryptoKey\";\nimport { PasswordTokenRequest } from \"../../models/request/identityToken/passwordTokenRequest\";\nimport { TokenRequestTwoFactor } from \"../../models/request/identityToken/tokenRequestTwoFactor\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class PasswordLogInStrategy extends LogInStrategy {\n get email() {\n return this.tokenRequest.email;\n }\n\n get masterPasswordHash() {\n return this.tokenRequest.masterPasswordHash;\n }\n\n tokenRequest: PasswordTokenRequest;\n\n private localHashedPassword: string;\n private key: SymmetricCryptoKey;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private authService: AuthService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin() {\n await this.cryptoService.setKey(this.key);\n await this.cryptoService.setKeyHash(this.localHashedPassword);\n }\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ): Promise {\n this.tokenRequest.captchaResponse = captchaResponse ?? this.captchaBypassToken;\n return super.logInTwoFactor(twoFactor);\n }\n\n async logIn(credentials: PasswordLogInCredentials) {\n const { email, masterPassword, captchaToken, twoFactor } = credentials;\n\n this.key = await this.authService.makePreloginKey(masterPassword, email);\n\n // Hash the password early (before authentication) so we don't persist it in memory in plaintext\n this.localHashedPassword = await this.cryptoService.hashPassword(\n masterPassword,\n this.key,\n HashPurpose.LocalAuthorization\n );\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, this.key);\n\n this.tokenRequest = new PasswordTokenRequest(\n email,\n hashedPassword,\n captchaToken,\n await this.buildTwoFactor(twoFactor),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n}\n","import { ApiService } from \"../../abstractions/api.service\";\nimport { AppIdService } from \"../../abstractions/appId.service\";\nimport { CryptoService } from \"../../abstractions/crypto.service\";\nimport { KeyConnectorService } from \"../../abstractions/keyConnector.service\";\nimport { LogService } from \"../../abstractions/log.service\";\nimport { MessagingService } from \"../../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { StateService } from \"../../abstractions/state.service\";\nimport { TokenService } from \"../../abstractions/token.service\";\nimport { TwoFactorService } from \"../../abstractions/twoFactor.service\";\nimport { SsoLogInCredentials } from \"../../models/domain/logInCredentials\";\nimport { SsoTokenRequest } from \"../../models/request/identityToken/ssoTokenRequest\";\nimport { IdentityTokenResponse } from \"../../models/response/identityTokenResponse\";\n\nimport { LogInStrategy } from \"./logIn.strategy\";\n\nexport class SsoLogInStrategy extends LogInStrategy {\n tokenRequest: SsoTokenRequest;\n orgId: string;\n\n constructor(\n cryptoService: CryptoService,\n apiService: ApiService,\n tokenService: TokenService,\n appIdService: AppIdService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n logService: LogService,\n stateService: StateService,\n twoFactorService: TwoFactorService,\n private keyConnectorService: KeyConnectorService\n ) {\n super(\n cryptoService,\n apiService,\n tokenService,\n appIdService,\n platformUtilsService,\n messagingService,\n logService,\n stateService,\n twoFactorService\n );\n }\n\n async onSuccessfulLogin(tokenResponse: IdentityTokenResponse) {\n const newSsoUser = tokenResponse.key == null;\n\n if (tokenResponse.keyConnectorUrl != null) {\n if (!newSsoUser) {\n await this.keyConnectorService.getAndSetKey(tokenResponse.keyConnectorUrl);\n } else {\n await this.keyConnectorService.convertNewSsoUserToKeyConnector(tokenResponse, this.orgId);\n }\n }\n }\n\n async logIn(credentials: SsoLogInCredentials) {\n this.orgId = credentials.orgId;\n this.tokenRequest = new SsoTokenRequest(\n credentials.code,\n credentials.codeVerifier,\n credentials.redirectUrl,\n await this.buildTwoFactor(credentials.twoFactor),\n await this.buildDeviceRequest()\n );\n\n return this.startLogIn();\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function (...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod\n .apply(this, args)\n .then((val: any) => {\n onFinally();\n return val;\n })\n .catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { ITreeNodeObject, TreeNode } from \"../models/domain/treeNode\";\n\nexport class ServiceUtils {\n static nestedTraverse(\n nodeTree: TreeNode[],\n partIndex: number,\n parts: string[],\n obj: ITreeNodeObject,\n parent: ITreeNodeObject,\n delimiter: string\n ) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(\n nodeTree[i].children,\n partIndex + 1,\n parts,\n obj,\n nodeTree[i].node,\n delimiter\n );\n return;\n }\n\n if (nodeTree.filter((n) => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(\n nodeTree,\n 0,\n [newPartName, ...parts.slice(partIndex + 2)],\n obj,\n parent,\n delimiter\n );\n }\n }\n\n static getTreeNodeObject(\n nodeTree: TreeNode[],\n id: string\n ): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (\n target: any,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>\n ) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function (...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod\n .apply(this, args)\n .then((val: any) => {\n onFinally();\n return val;\n })\n .catch((err: any) => {\n onFinally();\n throw err;\n })\n .then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n\nexport function isValid(host: string): boolean {\n return true;\n}\n","/* eslint-disable no-useless-escape */\nimport * as tldjs from \"tldjs\";\n\nimport { I18nService } from \"../abstractions/i18n.service\";\n\nconst nodeURL = typeof window === \"undefined\" ? require(\"url\") : null;\n\nexport class Utils {\n static inited = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex =\n /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n // Transpiled version of /\\p{Emoji_Presentation}/gu using https://mothereff.in/regexpu. Used for compatability in older browsers.\n static regexpEmojiPresentation =\n /(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])/g;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode =\n typeof process !== \"undefined\" &&\n (process as any).release != null &&\n (process as any).release.name === \"node\";\n Utils.isBrowser = typeof window !== \"undefined\";\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNode && !Utils.isBrowser ? global : window;\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"hex\"));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode) {\n return new Uint8Array(Buffer.from(str, \"utf8\"));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"base64\");\n } else {\n let binary = \"\";\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"utf8\");\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode) {\n return Buffer.from(buffer).toString(\"hex\");\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map\n .call(bytes, (x: number) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Illegal base64url string!\");\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromUtf8ToB64(utfStr: string): string {\n if (Utils.isNode) {\n return Buffer.from(utfStr, \"utf8\").toString(\"base64\");\n } else {\n return decodeURIComponent(escape(window.btoa(utfStr)));\n }\n }\n\n static fromUtf8ToUrlB64(utfStr: string): string {\n return Utils.fromBufferToUrlB64(Utils.fromUtf8ToArray(utfStr));\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode) {\n return Buffer.from(b64Str, \"base64\").toString(\"utf8\");\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/,\n \"i\"\n ).test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== \"\" ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== \"\" ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === \"\") {\n return null;\n }\n\n if (uriString.startsWith(\"data:\")) {\n return null;\n }\n\n let httpUrl = uriString.startsWith(\"http://\") || uriString.startsWith(\"https://\");\n if (\n !httpUrl &&\n uriString.indexOf(\"://\") < 0 &&\n Utils.tldEndingRegex.test(uriString) &&\n uriString.indexOf(\"@\") < 0\n ) {\n uriString = \"http://\" + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n const validHostname = tldjs?.isValid != null ? tldjs.isValid(url.hostname) : true;\n if (!validHostname) {\n return null;\n }\n\n if (url.hostname === \"localhost\" || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain =\n tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) {\n // Invalid domain, try another approach below.\n }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === \"\") {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === \"?\" ? url.search.substr(1) : url.search).split(\"&\");\n pairs.forEach((pair) => {\n const parts = pair.split(\"=\");\n if (parts.length < 1) {\n return;\n }\n map.set(\n decodeURIComponent(parts[0]).toLowerCase(),\n parts[1] == null ? \"\" : decodeURIComponent(parts[1])\n );\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator\n ? i18nService.collator.compare(a[prop], b[prop])\n : a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== \"string\" || str.trim() === \"\";\n }\n\n static isNullOrEmpty(str: string): boolean {\n return str == null || typeof str !== \"string\" || str == \"\";\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n static iterateEnum(obj: O) {\n return (Object.keys(obj).filter((k) => Number.isNaN(+k)) as K[]).map((k) => obj[k]);\n }\n\n static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === \"\") {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol =\n uriString.indexOf(\"http://\") === 0 || uriString.indexOf(\"https://\") === 0;\n if (!hasHttpProtocol && uriString.indexOf(\".\") > -1) {\n url = Utils.getUrlObject(\"http://\" + uriString);\n }\n }\n return url;\n }\n\n static camelToPascalCase(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n }\n\n private static validIpAddress(ipString: string): boolean {\n const ipRegex =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n ((a) => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n ) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return (\n win.navigator.userAgent.match(/iPhone/i) != null ||\n win.navigator.userAgent.match(/iPad/i) != null\n );\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return new nodeURL.URL(uriString);\n } else if (typeof URL === \"function\") {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf(\"://\") > -1;\n if (!hasProtocol && uriString.indexOf(\".\") > -1) {\n uriString = \"http://\" + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement(\"a\");\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) {\n // Ignore error\n }\n\n return null;\n }\n}\n\nUtils.init();\n","import { I18nService } from \"../abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\n\nexport class WebAuthnIFrame {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(\n private win: Window,\n private webVaultUrl: string,\n private webAuthnNewTab: boolean,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private successCallback: Function, // eslint-disable-line\n private errorCallback: Function, // eslint-disable-line\n private infoCallback: Function // eslint-disable-line\n ) {\n this.connectorLink = win.document.createElement(\"a\");\n }\n\n init(data: any): void {\n const params = new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n btnText: encodeURIComponent(this.i18nService.t(\"webAuthnAuthenticate\")),\n v: \"1\",\n });\n\n if (this.webAuthnNewTab) {\n // Firefox fallback which opens the webauthn page in a new tab\n params.append(\"locale\", this.i18nService.translationLocale);\n this.platformUtilsService.launchUri(\n `${this.webVaultUrl}/webauthn-fallback-connector.html?${params}`\n );\n } else {\n this.connectorLink.href = `${this.webVaultUrl}/webauthn-connector.html?${params}`;\n this.iframe = this.win.document.getElementById(\"webauthn_iframe\") as HTMLIFrameElement;\n this.iframe.allow = \"publickey-credentials-get \" + new URL(this.webVaultUrl).origin;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener(\"message\", this.parseFunction, false);\n }\n }\n\n stop() {\n this.sendMessage(\"stop\");\n }\n\n start() {\n this.sendMessage(\"start\");\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(\n encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode((\"0x\" + p1) as any);\n })\n );\n }\n\n cleanup() {\n this.win.removeEventListener(\"message\", this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split(\"|\");\n if (parts[0] === \"success\" && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === \"error\" && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === \"info\" && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (\n event.origin == null ||\n event.origin === \"\" ||\n event.origin !== (this.connectorLink as any).origin ||\n event.data == null ||\n typeof event.data !== \"string\"\n ) {\n return false;\n }\n\n return (\n event.data.indexOf(\"success|\") === 0 ||\n event.data.indexOf(\"error|\") === 0 ||\n event.data.indexOf(\"info|\") === 0\n );\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n \"abacus\",\n \"abdomen\",\n \"abdominal\",\n \"abide\",\n \"abiding\",\n \"ability\",\n \"ablaze\",\n \"able\",\n \"abnormal\",\n \"abrasion\",\n \"abrasive\",\n \"abreast\",\n \"abridge\",\n \"abroad\",\n \"abruptly\",\n \"absence\",\n \"absentee\",\n \"absently\",\n \"absinthe\",\n \"absolute\",\n \"absolve\",\n \"abstain\",\n \"abstract\",\n \"absurd\",\n \"accent\",\n \"acclaim\",\n \"acclimate\",\n \"accompany\",\n \"account\",\n \"accuracy\",\n \"accurate\",\n \"accustom\",\n \"acetone\",\n \"achiness\",\n \"aching\",\n \"acid\",\n \"acorn\",\n \"acquaint\",\n \"acquire\",\n \"acre\",\n \"acrobat\",\n \"acronym\",\n \"acting\",\n \"action\",\n \"activate\",\n \"activator\",\n \"active\",\n \"activism\",\n \"activist\",\n \"activity\",\n \"actress\",\n \"acts\",\n \"acutely\",\n \"acuteness\",\n \"aeration\",\n \"aerobics\",\n \"aerosol\",\n \"aerospace\",\n \"afar\",\n \"affair\",\n \"affected\",\n \"affecting\",\n \"affection\",\n \"affidavit\",\n \"affiliate\",\n \"affirm\",\n \"affix\",\n \"afflicted\",\n \"affluent\",\n \"afford\",\n \"affront\",\n \"aflame\",\n \"afloat\",\n \"aflutter\",\n \"afoot\",\n \"afraid\",\n \"afterglow\",\n \"afterlife\",\n \"aftermath\",\n \"aftermost\",\n \"afternoon\",\n \"aged\",\n \"ageless\",\n \"agency\",\n \"agenda\",\n \"agent\",\n \"aggregate\",\n \"aghast\",\n \"agile\",\n \"agility\",\n \"aging\",\n \"agnostic\",\n \"agonize\",\n \"agonizing\",\n \"agony\",\n \"agreeable\",\n \"agreeably\",\n \"agreed\",\n \"agreeing\",\n \"agreement\",\n \"aground\",\n \"ahead\",\n \"ahoy\",\n \"aide\",\n \"aids\",\n \"aim\",\n \"ajar\",\n \"alabaster\",\n \"alarm\",\n \"albatross\",\n \"album\",\n \"alfalfa\",\n \"algebra\",\n \"algorithm\",\n \"alias\",\n \"alibi\",\n \"alienable\",\n \"alienate\",\n \"aliens\",\n \"alike\",\n \"alive\",\n \"alkaline\",\n \"alkalize\",\n \"almanac\",\n \"almighty\",\n \"almost\",\n \"aloe\",\n \"aloft\",\n \"aloha\",\n \"alone\",\n \"alongside\",\n \"aloof\",\n \"alphabet\",\n \"alright\",\n \"although\",\n \"altitude\",\n \"alto\",\n \"aluminum\",\n \"alumni\",\n \"always\",\n \"amaretto\",\n \"amaze\",\n \"amazingly\",\n \"amber\",\n \"ambiance\",\n \"ambiguity\",\n \"ambiguous\",\n \"ambition\",\n \"ambitious\",\n \"ambulance\",\n \"ambush\",\n \"amendable\",\n \"amendment\",\n \"amends\",\n \"amenity\",\n \"amiable\",\n \"amicably\",\n \"amid\",\n \"amigo\",\n \"amino\",\n \"amiss\",\n \"ammonia\",\n \"ammonium\",\n \"amnesty\",\n \"amniotic\",\n \"among\",\n \"amount\",\n \"amperage\",\n \"ample\",\n \"amplifier\",\n \"amplify\",\n \"amply\",\n \"amuck\",\n \"amulet\",\n \"amusable\",\n \"amused\",\n \"amusement\",\n \"amuser\",\n \"amusing\",\n \"anaconda\",\n \"anaerobic\",\n \"anagram\",\n \"anatomist\",\n \"anatomy\",\n \"anchor\",\n \"anchovy\",\n \"ancient\",\n \"android\",\n \"anemia\",\n \"anemic\",\n \"aneurism\",\n \"anew\",\n \"angelfish\",\n \"angelic\",\n \"anger\",\n \"angled\",\n \"angler\",\n \"angles\",\n \"angling\",\n \"angrily\",\n \"angriness\",\n \"anguished\",\n \"angular\",\n \"animal\",\n \"animate\",\n \"animating\",\n \"animation\",\n \"animator\",\n \"anime\",\n \"animosity\",\n \"ankle\",\n \"annex\",\n \"annotate\",\n \"announcer\",\n \"annoying\",\n \"annually\",\n \"annuity\",\n \"anointer\",\n \"another\",\n \"answering\",\n \"antacid\",\n \"antarctic\",\n \"anteater\",\n \"antelope\",\n \"antennae\",\n \"anthem\",\n \"anthill\",\n \"anthology\",\n \"antibody\",\n \"antics\",\n \"antidote\",\n \"antihero\",\n \"antiquely\",\n \"antiques\",\n \"antiquity\",\n \"antirust\",\n \"antitoxic\",\n \"antitrust\",\n \"antiviral\",\n \"antivirus\",\n \"antler\",\n \"antonym\",\n \"antsy\",\n \"anvil\",\n \"anybody\",\n \"anyhow\",\n \"anymore\",\n \"anyone\",\n \"anyplace\",\n \"anything\",\n \"anytime\",\n \"anyway\",\n \"anywhere\",\n \"aorta\",\n \"apache\",\n \"apostle\",\n \"appealing\",\n \"appear\",\n \"appease\",\n \"appeasing\",\n \"appendage\",\n \"appendix\",\n \"appetite\",\n \"appetizer\",\n \"applaud\",\n \"applause\",\n \"apple\",\n \"appliance\",\n \"applicant\",\n \"applied\",\n \"apply\",\n \"appointee\",\n \"appraisal\",\n \"appraiser\",\n \"apprehend\",\n \"approach\",\n \"approval\",\n \"approve\",\n \"apricot\",\n \"april\",\n \"apron\",\n \"aptitude\",\n \"aptly\",\n \"aqua\",\n \"aqueduct\",\n \"arbitrary\",\n \"arbitrate\",\n \"ardently\",\n \"area\",\n \"arena\",\n \"arguable\",\n \"arguably\",\n \"argue\",\n \"arise\",\n \"armadillo\",\n \"armband\",\n \"armchair\",\n \"armed\",\n \"armful\",\n \"armhole\",\n \"arming\",\n \"armless\",\n \"armoire\",\n \"armored\",\n \"armory\",\n \"armrest\",\n \"army\",\n \"aroma\",\n \"arose\",\n \"around\",\n \"arousal\",\n \"arrange\",\n \"array\",\n \"arrest\",\n \"arrival\",\n \"arrive\",\n \"arrogance\",\n \"arrogant\",\n \"arson\",\n \"art\",\n \"ascend\",\n \"ascension\",\n \"ascent\",\n \"ascertain\",\n \"ashamed\",\n \"ashen\",\n \"ashes\",\n \"ashy\",\n \"aside\",\n \"askew\",\n \"asleep\",\n \"asparagus\",\n \"aspect\",\n \"aspirate\",\n \"aspire\",\n \"aspirin\",\n \"astonish\",\n \"astound\",\n \"astride\",\n \"astrology\",\n \"astronaut\",\n \"astronomy\",\n \"astute\",\n \"atlantic\",\n \"atlas\",\n \"atom\",\n \"atonable\",\n \"atop\",\n \"atrium\",\n \"atrocious\",\n \"atrophy\",\n \"attach\",\n \"attain\",\n \"attempt\",\n \"attendant\",\n \"attendee\",\n \"attention\",\n \"attentive\",\n \"attest\",\n \"attic\",\n \"attire\",\n \"attitude\",\n \"attractor\",\n \"attribute\",\n \"atypical\",\n \"auction\",\n \"audacious\",\n \"audacity\",\n \"audible\",\n \"audibly\",\n \"audience\",\n \"audio\",\n \"audition\",\n \"augmented\",\n \"august\",\n \"authentic\",\n \"author\",\n \"autism\",\n \"autistic\",\n \"autograph\",\n \"automaker\",\n \"automated\",\n \"automatic\",\n \"autopilot\",\n \"available\",\n \"avalanche\",\n \"avatar\",\n \"avenge\",\n \"avenging\",\n \"avenue\",\n \"average\",\n \"aversion\",\n \"avert\",\n \"aviation\",\n \"aviator\",\n \"avid\",\n \"avoid\",\n \"await\",\n \"awaken\",\n \"award\",\n \"aware\",\n \"awhile\",\n \"awkward\",\n \"awning\",\n \"awoke\",\n \"awry\",\n \"axis\",\n \"babble\",\n \"babbling\",\n \"babied\",\n \"baboon\",\n \"backache\",\n \"backboard\",\n \"backboned\",\n \"backdrop\",\n \"backed\",\n \"backer\",\n \"backfield\",\n \"backfire\",\n \"backhand\",\n \"backing\",\n \"backlands\",\n \"backlash\",\n \"backless\",\n \"backlight\",\n \"backlit\",\n \"backlog\",\n \"backpack\",\n \"backpedal\",\n \"backrest\",\n \"backroom\",\n \"backshift\",\n \"backside\",\n \"backslid\",\n \"backspace\",\n \"backspin\",\n \"backstab\",\n \"backstage\",\n \"backtalk\",\n \"backtrack\",\n \"backup\",\n \"backward\",\n \"backwash\",\n \"backwater\",\n \"backyard\",\n \"bacon\",\n \"bacteria\",\n \"bacterium\",\n \"badass\",\n \"badge\",\n \"badland\",\n \"badly\",\n \"badness\",\n \"baffle\",\n \"baffling\",\n \"bagel\",\n \"bagful\",\n \"baggage\",\n \"bagged\",\n \"baggie\",\n \"bagginess\",\n \"bagging\",\n \"baggy\",\n \"bagpipe\",\n \"baguette\",\n \"baked\",\n \"bakery\",\n \"bakeshop\",\n \"baking\",\n \"balance\",\n \"balancing\",\n \"balcony\",\n \"balmy\",\n \"balsamic\",\n \"bamboo\",\n \"banana\",\n \"banish\",\n \"banister\",\n \"banjo\",\n \"bankable\",\n \"bankbook\",\n \"banked\",\n \"banker\",\n \"banking\",\n \"banknote\",\n \"bankroll\",\n \"banner\",\n \"bannister\",\n \"banshee\",\n \"banter\",\n \"barbecue\",\n \"barbed\",\n \"barbell\",\n \"barber\",\n \"barcode\",\n \"barge\",\n \"bargraph\",\n \"barista\",\n \"baritone\",\n \"barley\",\n \"barmaid\",\n \"barman\",\n \"barn\",\n \"barometer\",\n \"barrack\",\n \"barracuda\",\n \"barrel\",\n \"barrette\",\n \"barricade\",\n \"barrier\",\n \"barstool\",\n \"bartender\",\n \"barterer\",\n \"bash\",\n \"basically\",\n \"basics\",\n \"basil\",\n \"basin\",\n \"basis\",\n \"basket\",\n \"batboy\",\n \"batch\",\n \"bath\",\n \"baton\",\n \"bats\",\n \"battalion\",\n \"battered\",\n \"battering\",\n \"battery\",\n \"batting\",\n \"battle\",\n \"bauble\",\n \"bazooka\",\n \"blabber\",\n \"bladder\",\n \"blade\",\n \"blah\",\n \"blame\",\n \"blaming\",\n \"blanching\",\n \"blandness\",\n \"blank\",\n \"blaspheme\",\n \"blasphemy\",\n \"blast\",\n \"blatancy\",\n \"blatantly\",\n \"blazer\",\n \"blazing\",\n \"bleach\",\n \"bleak\",\n \"bleep\",\n \"blemish\",\n \"blend\",\n \"bless\",\n \"blighted\",\n \"blimp\",\n \"bling\",\n \"blinked\",\n \"blinker\",\n \"blinking\",\n \"blinks\",\n \"blip\",\n \"blissful\",\n \"blitz\",\n \"blizzard\",\n \"bloated\",\n \"bloating\",\n \"blob\",\n \"blog\",\n \"bloomers\",\n \"blooming\",\n \"blooper\",\n \"blot\",\n \"blouse\",\n \"blubber\",\n \"bluff\",\n \"bluish\",\n \"blunderer\",\n \"blunt\",\n \"blurb\",\n \"blurred\",\n \"blurry\",\n \"blurt\",\n \"blush\",\n \"blustery\",\n \"boaster\",\n \"boastful\",\n \"boasting\",\n \"boat\",\n \"bobbed\",\n \"bobbing\",\n \"bobble\",\n \"bobcat\",\n \"bobsled\",\n \"bobtail\",\n \"bodacious\",\n \"body\",\n \"bogged\",\n \"boggle\",\n \"bogus\",\n \"boil\",\n \"bok\",\n \"bolster\",\n \"bolt\",\n \"bonanza\",\n \"bonded\",\n \"bonding\",\n \"bondless\",\n \"boned\",\n \"bonehead\",\n \"boneless\",\n \"bonelike\",\n \"boney\",\n \"bonfire\",\n \"bonnet\",\n \"bonsai\",\n \"bonus\",\n \"bony\",\n \"boogeyman\",\n \"boogieman\",\n \"book\",\n \"boondocks\",\n \"booted\",\n \"booth\",\n \"bootie\",\n \"booting\",\n \"bootlace\",\n \"bootleg\",\n \"boots\",\n \"boozy\",\n \"borax\",\n \"boring\",\n \"borough\",\n \"borrower\",\n \"borrowing\",\n \"boss\",\n \"botanical\",\n \"botanist\",\n \"botany\",\n \"botch\",\n \"both\",\n \"bottle\",\n \"bottling\",\n \"bottom\",\n \"bounce\",\n \"bouncing\",\n \"bouncy\",\n \"bounding\",\n \"boundless\",\n \"bountiful\",\n \"bovine\",\n \"boxcar\",\n \"boxer\",\n \"boxing\",\n \"boxlike\",\n \"boxy\",\n \"breach\",\n \"breath\",\n \"breeches\",\n \"breeching\",\n \"breeder\",\n \"breeding\",\n \"breeze\",\n \"breezy\",\n \"brethren\",\n \"brewery\",\n \"brewing\",\n \"briar\",\n \"bribe\",\n \"brick\",\n \"bride\",\n \"bridged\",\n \"brigade\",\n \"bright\",\n \"brilliant\",\n \"brim\",\n \"bring\",\n \"brink\",\n \"brisket\",\n \"briskly\",\n \"briskness\",\n \"bristle\",\n \"brittle\",\n \"broadband\",\n \"broadcast\",\n \"broaden\",\n \"broadly\",\n \"broadness\",\n \"broadside\",\n \"broadways\",\n \"broiler\",\n \"broiling\",\n \"broken\",\n \"broker\",\n \"bronchial\",\n \"bronco\",\n \"bronze\",\n \"bronzing\",\n \"brook\",\n \"broom\",\n \"brought\",\n \"browbeat\",\n \"brownnose\",\n \"browse\",\n \"browsing\",\n \"bruising\",\n \"brunch\",\n \"brunette\",\n \"brunt\",\n \"brush\",\n \"brussels\",\n \"brute\",\n \"brutishly\",\n \"bubble\",\n \"bubbling\",\n \"bubbly\",\n \"buccaneer\",\n \"bucked\",\n \"bucket\",\n \"buckle\",\n \"buckshot\",\n \"buckskin\",\n \"bucktooth\",\n \"buckwheat\",\n \"buddhism\",\n \"buddhist\",\n \"budding\",\n \"buddy\",\n \"budget\",\n \"buffalo\",\n \"buffed\",\n \"buffer\",\n \"buffing\",\n \"buffoon\",\n \"buggy\",\n \"bulb\",\n \"bulge\",\n \"bulginess\",\n \"bulgur\",\n \"bulk\",\n \"bulldog\",\n \"bulldozer\",\n \"bullfight\",\n \"bullfrog\",\n \"bullhorn\",\n \"bullion\",\n \"bullish\",\n \"bullpen\",\n \"bullring\",\n \"bullseye\",\n \"bullwhip\",\n \"bully\",\n \"bunch\",\n \"bundle\",\n \"bungee\",\n \"bunion\",\n \"bunkbed\",\n \"bunkhouse\",\n \"bunkmate\",\n \"bunny\",\n \"bunt\",\n \"busboy\",\n \"bush\",\n \"busily\",\n \"busload\",\n \"bust\",\n \"busybody\",\n \"buzz\",\n \"cabana\",\n \"cabbage\",\n \"cabbie\",\n \"cabdriver\",\n \"cable\",\n \"caboose\",\n \"cache\",\n \"cackle\",\n \"cacti\",\n \"cactus\",\n \"caddie\",\n \"caddy\",\n \"cadet\",\n \"cadillac\",\n \"cadmium\",\n \"cage\",\n \"cahoots\",\n \"cake\",\n \"calamari\",\n \"calamity\",\n \"calcium\",\n \"calculate\",\n \"calculus\",\n \"caliber\",\n \"calibrate\",\n \"calm\",\n \"caloric\",\n \"calorie\",\n \"calzone\",\n \"camcorder\",\n \"cameo\",\n \"camera\",\n \"camisole\",\n \"camper\",\n \"campfire\",\n \"camping\",\n \"campsite\",\n \"campus\",\n \"canal\",\n \"canary\",\n \"cancel\",\n \"candied\",\n \"candle\",\n \"candy\",\n \"cane\",\n \"canine\",\n \"canister\",\n \"cannabis\",\n \"canned\",\n \"canning\",\n \"cannon\",\n \"cannot\",\n \"canola\",\n \"canon\",\n \"canopener\",\n \"canopy\",\n \"canteen\",\n \"canyon\",\n \"capable\",\n \"capably\",\n \"capacity\",\n \"cape\",\n \"capillary\",\n \"capital\",\n \"capitol\",\n \"capped\",\n \"capricorn\",\n \"capsize\",\n \"capsule\",\n \"caption\",\n \"captivate\",\n \"captive\",\n \"captivity\",\n \"capture\",\n \"caramel\",\n \"carat\",\n \"caravan\",\n \"carbon\",\n \"cardboard\",\n \"carded\",\n \"cardiac\",\n \"cardigan\",\n \"cardinal\",\n \"cardstock\",\n \"carefully\",\n \"caregiver\",\n \"careless\",\n \"caress\",\n \"caretaker\",\n \"cargo\",\n \"caring\",\n \"carless\",\n \"carload\",\n \"carmaker\",\n \"carnage\",\n \"carnation\",\n \"carnival\",\n \"carnivore\",\n \"carol\",\n \"carpenter\",\n \"carpentry\",\n \"carpool\",\n \"carport\",\n \"carried\",\n \"carrot\",\n \"carrousel\",\n \"carry\",\n \"cartel\",\n \"cartload\",\n \"carton\",\n \"cartoon\",\n \"cartridge\",\n \"cartwheel\",\n \"carve\",\n \"carving\",\n \"carwash\",\n \"cascade\",\n \"case\",\n \"cash\",\n \"casing\",\n \"casino\",\n \"casket\",\n \"cassette\",\n \"casually\",\n \"casualty\",\n \"catacomb\",\n \"catalog\",\n \"catalyst\",\n \"catalyze\",\n \"catapult\",\n \"cataract\",\n \"catatonic\",\n \"catcall\",\n \"catchable\",\n \"catcher\",\n \"catching\",\n \"catchy\",\n \"caterer\",\n \"catering\",\n \"catfight\",\n \"catfish\",\n \"cathedral\",\n \"cathouse\",\n \"catlike\",\n \"catnap\",\n \"catnip\",\n \"catsup\",\n \"cattail\",\n \"cattishly\",\n \"cattle\",\n \"catty\",\n \"catwalk\",\n \"caucasian\",\n \"caucus\",\n \"causal\",\n \"causation\",\n \"cause\",\n \"causing\",\n \"cauterize\",\n \"caution\",\n \"cautious\",\n \"cavalier\",\n \"cavalry\",\n \"caviar\",\n \"cavity\",\n \"cedar\",\n \"celery\",\n \"celestial\",\n \"celibacy\",\n \"celibate\",\n \"celtic\",\n \"cement\",\n \"census\",\n \"ceramics\",\n \"ceremony\",\n \"certainly\",\n \"certainty\",\n \"certified\",\n \"certify\",\n \"cesarean\",\n \"cesspool\",\n \"chafe\",\n \"chaffing\",\n \"chain\",\n \"chair\",\n \"chalice\",\n \"challenge\",\n \"chamber\",\n \"chamomile\",\n \"champion\",\n \"chance\",\n \"change\",\n \"channel\",\n \"chant\",\n \"chaos\",\n \"chaperone\",\n \"chaplain\",\n \"chapped\",\n \"chaps\",\n \"chapter\",\n \"character\",\n \"charbroil\",\n \"charcoal\",\n \"charger\",\n \"charging\",\n \"chariot\",\n \"charity\",\n \"charm\",\n \"charred\",\n \"charter\",\n \"charting\",\n \"chase\",\n \"chasing\",\n \"chaste\",\n \"chastise\",\n \"chastity\",\n \"chatroom\",\n \"chatter\",\n \"chatting\",\n \"chatty\",\n \"cheating\",\n \"cheddar\",\n \"cheek\",\n \"cheer\",\n \"cheese\",\n \"cheesy\",\n \"chef\",\n \"chemicals\",\n \"chemist\",\n \"chemo\",\n \"cherisher\",\n \"cherub\",\n \"chess\",\n \"chest\",\n \"chevron\",\n \"chevy\",\n \"chewable\",\n \"chewer\",\n \"chewing\",\n \"chewy\",\n \"chief\",\n \"chihuahua\",\n \"childcare\",\n \"childhood\",\n \"childish\",\n \"childless\",\n \"childlike\",\n \"chili\",\n \"chill\",\n \"chimp\",\n \"chip\",\n \"chirping\",\n \"chirpy\",\n \"chitchat\",\n \"chivalry\",\n \"chive\",\n \"chloride\",\n \"chlorine\",\n \"choice\",\n \"chokehold\",\n \"choking\",\n \"chomp\",\n \"chooser\",\n \"choosing\",\n \"choosy\",\n \"chop\",\n \"chosen\",\n \"chowder\",\n \"chowtime\",\n \"chrome\",\n \"chubby\",\n \"chuck\",\n \"chug\",\n \"chummy\",\n \"chump\",\n \"chunk\",\n \"churn\",\n \"chute\",\n \"cider\",\n \"cilantro\",\n \"cinch\",\n \"cinema\",\n \"cinnamon\",\n \"circle\",\n \"circling\",\n \"circular\",\n \"circulate\",\n \"circus\",\n \"citable\",\n \"citadel\",\n \"citation\",\n \"citizen\",\n \"citric\",\n \"citrus\",\n \"city\",\n \"civic\",\n \"civil\",\n \"clad\",\n \"claim\",\n \"clambake\",\n \"clammy\",\n \"clamor\",\n \"clamp\",\n \"clamshell\",\n \"clang\",\n \"clanking\",\n \"clapped\",\n \"clapper\",\n \"clapping\",\n \"clarify\",\n \"clarinet\",\n \"clarity\",\n \"clash\",\n \"clasp\",\n \"class\",\n \"clatter\",\n \"clause\",\n \"clavicle\",\n \"claw\",\n \"clay\",\n \"clean\",\n \"clear\",\n \"cleat\",\n \"cleaver\",\n \"cleft\",\n \"clench\",\n \"clergyman\",\n \"clerical\",\n \"clerk\",\n \"clever\",\n \"clicker\",\n \"client\",\n \"climate\",\n \"climatic\",\n \"cling\",\n \"clinic\",\n \"clinking\",\n \"clip\",\n \"clique\",\n \"cloak\",\n \"clobber\",\n \"clock\",\n \"clone\",\n \"cloning\",\n \"closable\",\n \"closure\",\n \"clothes\",\n \"clothing\",\n \"cloud\",\n \"clover\",\n \"clubbed\",\n \"clubbing\",\n \"clubhouse\",\n \"clump\",\n \"clumsily\",\n \"clumsy\",\n \"clunky\",\n \"clustered\",\n \"clutch\",\n \"clutter\",\n \"coach\",\n \"coagulant\",\n \"coastal\",\n \"coaster\",\n \"coasting\",\n \"coastland\",\n \"coastline\",\n \"coat\",\n \"coauthor\",\n \"cobalt\",\n \"cobbler\",\n \"cobweb\",\n \"cocoa\",\n \"coconut\",\n \"cod\",\n \"coeditor\",\n \"coerce\",\n \"coexist\",\n \"coffee\",\n \"cofounder\",\n \"cognition\",\n \"cognitive\",\n \"cogwheel\",\n \"coherence\",\n \"coherent\",\n \"cohesive\",\n \"coil\",\n \"coke\",\n \"cola\",\n \"cold\",\n \"coleslaw\",\n \"coliseum\",\n \"collage\",\n \"collapse\",\n \"collar\",\n \"collected\",\n \"collector\",\n \"collide\",\n \"collie\",\n \"collision\",\n \"colonial\",\n \"colonist\",\n \"colonize\",\n \"colony\",\n \"colossal\",\n \"colt\",\n \"coma\",\n \"come\",\n \"comfort\",\n \"comfy\",\n \"comic\",\n \"coming\",\n \"comma\",\n \"commence\",\n \"commend\",\n \"comment\",\n \"commerce\",\n \"commode\",\n \"commodity\",\n \"commodore\",\n \"common\",\n \"commotion\",\n \"commute\",\n \"commuting\",\n \"compacted\",\n \"compacter\",\n \"compactly\",\n \"compactor\",\n \"companion\",\n \"company\",\n \"compare\",\n \"compel\",\n \"compile\",\n \"comply\",\n \"component\",\n \"composed\",\n \"composer\",\n \"composite\",\n \"compost\",\n \"composure\",\n \"compound\",\n \"compress\",\n \"comprised\",\n \"computer\",\n \"computing\",\n \"comrade\",\n \"concave\",\n \"conceal\",\n \"conceded\",\n \"concept\",\n \"concerned\",\n \"concert\",\n \"conch\",\n \"concierge\",\n \"concise\",\n \"conclude\",\n \"concrete\",\n \"concur\",\n \"condense\",\n \"condiment\",\n \"condition\",\n \"condone\",\n \"conducive\",\n \"conductor\",\n \"conduit\",\n \"cone\",\n \"confess\",\n \"confetti\",\n \"confidant\",\n \"confident\",\n \"confider\",\n \"confiding\",\n \"configure\",\n \"confined\",\n \"confining\",\n \"confirm\",\n \"conflict\",\n \"conform\",\n \"confound\",\n \"confront\",\n \"confused\",\n \"confusing\",\n \"confusion\",\n \"congenial\",\n \"congested\",\n \"congrats\",\n \"congress\",\n \"conical\",\n \"conjoined\",\n \"conjure\",\n \"conjuror\",\n \"connected\",\n \"connector\",\n \"consensus\",\n \"consent\",\n \"console\",\n \"consoling\",\n \"consonant\",\n \"constable\",\n \"constant\",\n \"constrain\",\n \"constrict\",\n \"construct\",\n \"consult\",\n \"consumer\",\n \"consuming\",\n \"contact\",\n \"container\",\n \"contempt\",\n \"contend\",\n \"contented\",\n \"contently\",\n \"contents\",\n \"contest\",\n \"context\",\n \"contort\",\n \"contour\",\n \"contrite\",\n \"control\",\n \"contusion\",\n \"convene\",\n \"convent\",\n \"copartner\",\n \"cope\",\n \"copied\",\n \"copier\",\n \"copilot\",\n \"coping\",\n \"copious\",\n \"copper\",\n \"copy\",\n \"coral\",\n \"cork\",\n \"cornball\",\n \"cornbread\",\n \"corncob\",\n \"cornea\",\n \"corned\",\n \"corner\",\n \"cornfield\",\n \"cornflake\",\n \"cornhusk\",\n \"cornmeal\",\n \"cornstalk\",\n \"corny\",\n \"coronary\",\n \"coroner\",\n \"corporal\",\n \"corporate\",\n \"corral\",\n \"correct\",\n \"corridor\",\n \"corrode\",\n \"corroding\",\n \"corrosive\",\n \"corsage\",\n \"corset\",\n \"cortex\",\n \"cosigner\",\n \"cosmetics\",\n \"cosmic\",\n \"cosmos\",\n \"cosponsor\",\n \"cost\",\n \"cottage\",\n \"cotton\",\n \"couch\",\n \"cough\",\n \"could\",\n \"countable\",\n \"countdown\",\n \"counting\",\n \"countless\",\n \"country\",\n \"county\",\n \"courier\",\n \"covenant\",\n \"cover\",\n \"coveted\",\n \"coveting\",\n \"coyness\",\n \"cozily\",\n \"coziness\",\n \"cozy\",\n \"crabbing\",\n \"crabgrass\",\n \"crablike\",\n \"crabmeat\",\n \"cradle\",\n \"cradling\",\n \"crafter\",\n \"craftily\",\n \"craftsman\",\n \"craftwork\",\n \"crafty\",\n \"cramp\",\n \"cranberry\",\n \"crane\",\n \"cranial\",\n \"cranium\",\n \"crank\",\n \"crate\",\n \"crave\",\n \"craving\",\n \"crawfish\",\n \"crawlers\",\n \"crawling\",\n \"crayfish\",\n \"crayon\",\n \"crazed\",\n \"crazily\",\n \"craziness\",\n \"crazy\",\n \"creamed\",\n \"creamer\",\n \"creamlike\",\n \"crease\",\n \"creasing\",\n \"creatable\",\n \"create\",\n \"creation\",\n \"creative\",\n \"creature\",\n \"credible\",\n \"credibly\",\n \"credit\",\n \"creed\",\n \"creme\",\n \"creole\",\n \"crepe\",\n \"crept\",\n \"crescent\",\n \"crested\",\n \"cresting\",\n \"crestless\",\n \"crevice\",\n \"crewless\",\n \"crewman\",\n \"crewmate\",\n \"crib\",\n \"cricket\",\n \"cried\",\n \"crier\",\n \"crimp\",\n \"crimson\",\n \"cringe\",\n \"cringing\",\n \"crinkle\",\n \"crinkly\",\n \"crisped\",\n \"crisping\",\n \"crisply\",\n \"crispness\",\n \"crispy\",\n \"criteria\",\n \"critter\",\n \"croak\",\n \"crock\",\n \"crook\",\n \"croon\",\n \"crop\",\n \"cross\",\n \"crouch\",\n \"crouton\",\n \"crowbar\",\n \"crowd\",\n \"crown\",\n \"crucial\",\n \"crudely\",\n \"crudeness\",\n \"cruelly\",\n \"cruelness\",\n \"cruelty\",\n \"crumb\",\n \"crummiest\",\n \"crummy\",\n \"crumpet\",\n \"crumpled\",\n \"cruncher\",\n \"crunching\",\n \"crunchy\",\n \"crusader\",\n \"crushable\",\n \"crushed\",\n \"crusher\",\n \"crushing\",\n \"crust\",\n \"crux\",\n \"crying\",\n \"cryptic\",\n \"crystal\",\n \"cubbyhole\",\n \"cube\",\n \"cubical\",\n \"cubicle\",\n \"cucumber\",\n \"cuddle\",\n \"cuddly\",\n \"cufflink\",\n \"culinary\",\n \"culminate\",\n \"culpable\",\n \"culprit\",\n \"cultivate\",\n \"cultural\",\n \"culture\",\n \"cupbearer\",\n \"cupcake\",\n \"cupid\",\n \"cupped\",\n \"cupping\",\n \"curable\",\n \"curator\",\n \"curdle\",\n \"cure\",\n \"curfew\",\n \"curing\",\n \"curled\",\n \"curler\",\n \"curliness\",\n \"curling\",\n \"curly\",\n \"curry\",\n \"curse\",\n \"cursive\",\n \"cursor\",\n \"curtain\",\n \"curtly\",\n \"curtsy\",\n \"curvature\",\n \"curve\",\n \"curvy\",\n \"cushy\",\n \"cusp\",\n \"cussed\",\n \"custard\",\n \"custodian\",\n \"custody\",\n \"customary\",\n \"customer\",\n \"customize\",\n \"customs\",\n \"cut\",\n \"cycle\",\n \"cyclic\",\n \"cycling\",\n \"cyclist\",\n \"cylinder\",\n \"cymbal\",\n \"cytoplasm\",\n \"cytoplast\",\n \"dab\",\n \"dad\",\n \"daffodil\",\n \"dagger\",\n \"daily\",\n \"daintily\",\n \"dainty\",\n \"dairy\",\n \"daisy\",\n \"dallying\",\n \"dance\",\n \"dancing\",\n \"dandelion\",\n \"dander\",\n \"dandruff\",\n \"dandy\",\n \"danger\",\n \"dangle\",\n \"dangling\",\n \"daredevil\",\n \"dares\",\n \"daringly\",\n \"darkened\",\n \"darkening\",\n \"darkish\",\n \"darkness\",\n \"darkroom\",\n \"darling\",\n \"darn\",\n \"dart\",\n \"darwinism\",\n \"dash\",\n \"dastardly\",\n \"data\",\n \"datebook\",\n \"dating\",\n \"daughter\",\n \"daunting\",\n \"dawdler\",\n \"dawn\",\n \"daybed\",\n \"daybreak\",\n \"daycare\",\n \"daydream\",\n \"daylight\",\n \"daylong\",\n \"dayroom\",\n \"daytime\",\n \"dazzler\",\n \"dazzling\",\n \"deacon\",\n \"deafening\",\n \"deafness\",\n \"dealer\",\n \"dealing\",\n \"dealmaker\",\n \"dealt\",\n \"dean\",\n \"debatable\",\n \"debate\",\n \"debating\",\n \"debit\",\n \"debrief\",\n \"debtless\",\n \"debtor\",\n \"debug\",\n \"debunk\",\n \"decade\",\n \"decaf\",\n \"decal\",\n \"decathlon\",\n \"decay\",\n \"deceased\",\n \"deceit\",\n \"deceiver\",\n \"deceiving\",\n \"december\",\n \"decency\",\n \"decent\",\n \"deception\",\n \"deceptive\",\n \"decibel\",\n \"decidable\",\n \"decimal\",\n \"decimeter\",\n \"decipher\",\n \"deck\",\n \"declared\",\n \"decline\",\n \"decode\",\n \"decompose\",\n \"decorated\",\n \"decorator\",\n \"decoy\",\n \"decrease\",\n \"decree\",\n \"dedicate\",\n \"dedicator\",\n \"deduce\",\n \"deduct\",\n \"deed\",\n \"deem\",\n \"deepen\",\n \"deeply\",\n \"deepness\",\n \"deface\",\n \"defacing\",\n \"defame\",\n \"default\",\n \"defeat\",\n \"defection\",\n \"defective\",\n \"defendant\",\n \"defender\",\n \"defense\",\n \"defensive\",\n \"deferral\",\n \"deferred\",\n \"defiance\",\n \"defiant\",\n \"defile\",\n \"defiling\",\n \"define\",\n \"definite\",\n \"deflate\",\n \"deflation\",\n \"deflator\",\n \"deflected\",\n \"deflector\",\n \"defog\",\n \"deforest\",\n \"defraud\",\n \"defrost\",\n \"deftly\",\n \"defuse\",\n \"defy\",\n \"degraded\",\n \"degrading\",\n \"degrease\",\n \"degree\",\n \"dehydrate\",\n \"deity\",\n \"dejected\",\n \"delay\",\n \"delegate\",\n \"delegator\",\n \"delete\",\n \"deletion\",\n \"delicacy\",\n \"delicate\",\n \"delicious\",\n \"delighted\",\n \"delirious\",\n \"delirium\",\n \"deliverer\",\n \"delivery\",\n \"delouse\",\n \"delta\",\n \"deluge\",\n \"delusion\",\n \"deluxe\",\n \"demanding\",\n \"demeaning\",\n \"demeanor\",\n \"demise\",\n \"democracy\",\n \"democrat\",\n \"demote\",\n \"demotion\",\n \"demystify\",\n \"denatured\",\n \"deniable\",\n \"denial\",\n \"denim\",\n \"denote\",\n \"dense\",\n \"density\",\n \"dental\",\n \"dentist\",\n \"denture\",\n \"deny\",\n \"deodorant\",\n \"deodorize\",\n \"departed\",\n \"departure\",\n \"depict\",\n \"deplete\",\n \"depletion\",\n \"deplored\",\n \"deploy\",\n \"deport\",\n \"depose\",\n \"depraved\",\n \"depravity\",\n \"deprecate\",\n \"depress\",\n \"deprive\",\n \"depth\",\n \"deputize\",\n \"deputy\",\n \"derail\",\n \"deranged\",\n \"derby\",\n \"derived\",\n \"desecrate\",\n \"deserve\",\n \"deserving\",\n \"designate\",\n \"designed\",\n \"designer\",\n \"designing\",\n \"deskbound\",\n \"desktop\",\n \"deskwork\",\n \"desolate\",\n \"despair\",\n \"despise\",\n \"despite\",\n \"destiny\",\n \"destitute\",\n \"destruct\",\n \"detached\",\n \"detail\",\n \"detection\",\n \"detective\",\n \"detector\",\n \"detention\",\n \"detergent\",\n \"detest\",\n \"detonate\",\n \"detonator\",\n \"detoxify\",\n \"detract\",\n \"deuce\",\n \"devalue\",\n \"deviancy\",\n \"deviant\",\n \"deviate\",\n \"deviation\",\n \"deviator\",\n \"device\",\n \"devious\",\n \"devotedly\",\n \"devotee\",\n \"devotion\",\n \"devourer\",\n \"devouring\",\n \"devoutly\",\n \"dexterity\",\n \"dexterous\",\n \"diabetes\",\n \"diabetic\",\n \"diabolic\",\n \"diagnoses\",\n \"diagnosis\",\n \"diagram\",\n \"dial\",\n \"diameter\",\n \"diaper\",\n \"diaphragm\",\n \"diary\",\n \"dice\",\n \"dicing\",\n \"dictate\",\n \"dictation\",\n \"dictator\",\n \"difficult\",\n \"diffused\",\n \"diffuser\",\n \"diffusion\",\n \"diffusive\",\n \"dig\",\n \"dilation\",\n \"diligence\",\n \"diligent\",\n \"dill\",\n \"dilute\",\n \"dime\",\n \"diminish\",\n \"dimly\",\n \"dimmed\",\n \"dimmer\",\n \"dimness\",\n \"dimple\",\n \"diner\",\n \"dingbat\",\n \"dinghy\",\n \"dinginess\",\n \"dingo\",\n \"dingy\",\n \"dining\",\n \"dinner\",\n \"diocese\",\n \"dioxide\",\n \"diploma\",\n \"dipped\",\n \"dipper\",\n \"dipping\",\n \"directed\",\n \"direction\",\n \"directive\",\n \"directly\",\n \"directory\",\n \"direness\",\n \"dirtiness\",\n \"disabled\",\n \"disagree\",\n \"disallow\",\n \"disarm\",\n \"disarray\",\n \"disaster\",\n \"disband\",\n \"disbelief\",\n \"disburse\",\n \"discard\",\n \"discern\",\n \"discharge\",\n \"disclose\",\n \"discolor\",\n \"discount\",\n \"discourse\",\n \"discover\",\n \"discuss\",\n \"disdain\",\n \"disengage\",\n \"disfigure\",\n \"disgrace\",\n \"dish\",\n \"disinfect\",\n \"disjoin\",\n \"disk\",\n \"dislike\",\n \"disliking\",\n \"dislocate\",\n \"dislodge\",\n \"disloyal\",\n \"dismantle\",\n \"dismay\",\n \"dismiss\",\n \"dismount\",\n \"disobey\",\n \"disorder\",\n \"disown\",\n \"disparate\",\n \"disparity\",\n \"dispatch\",\n \"dispense\",\n \"dispersal\",\n \"dispersed\",\n \"disperser\",\n \"displace\",\n \"display\",\n \"displease\",\n \"disposal\",\n \"dispose\",\n \"disprove\",\n \"dispute\",\n \"disregard\",\n \"disrupt\",\n \"dissuade\",\n \"distance\",\n \"distant\",\n \"distaste\",\n \"distill\",\n \"distinct\",\n \"distort\",\n \"distract\",\n \"distress\",\n \"district\",\n \"distrust\",\n \"ditch\",\n \"ditto\",\n \"ditzy\",\n \"dividable\",\n \"divided\",\n \"dividend\",\n \"dividers\",\n \"dividing\",\n \"divinely\",\n \"diving\",\n \"divinity\",\n \"divisible\",\n \"divisibly\",\n \"division\",\n \"divisive\",\n \"divorcee\",\n \"dizziness\",\n \"dizzy\",\n \"doable\",\n \"docile\",\n \"dock\",\n \"doctrine\",\n \"document\",\n \"dodge\",\n \"dodgy\",\n \"doily\",\n \"doing\",\n \"dole\",\n \"dollar\",\n \"dollhouse\",\n \"dollop\",\n \"dolly\",\n \"dolphin\",\n \"domain\",\n \"domelike\",\n \"domestic\",\n \"dominion\",\n \"dominoes\",\n \"donated\",\n \"donation\",\n \"donator\",\n \"donor\",\n \"donut\",\n \"doodle\",\n \"doorbell\",\n \"doorframe\",\n \"doorknob\",\n \"doorman\",\n \"doormat\",\n \"doornail\",\n \"doorpost\",\n \"doorstep\",\n \"doorstop\",\n \"doorway\",\n \"doozy\",\n \"dork\",\n \"dormitory\",\n \"dorsal\",\n \"dosage\",\n \"dose\",\n \"dotted\",\n \"doubling\",\n \"douche\",\n \"dove\",\n \"down\",\n \"dowry\",\n \"doze\",\n \"drab\",\n \"dragging\",\n \"dragonfly\",\n \"dragonish\",\n \"dragster\",\n \"drainable\",\n \"drainage\",\n \"drained\",\n \"drainer\",\n \"drainpipe\",\n \"dramatic\",\n \"dramatize\",\n \"drank\",\n \"drapery\",\n \"drastic\",\n \"draw\",\n \"dreaded\",\n \"dreadful\",\n \"dreadlock\",\n \"dreamboat\",\n \"dreamily\",\n \"dreamland\",\n \"dreamless\",\n \"dreamlike\",\n \"dreamt\",\n \"dreamy\",\n \"drearily\",\n \"dreary\",\n \"drench\",\n \"dress\",\n \"drew\",\n \"dribble\",\n \"dried\",\n \"drier\",\n \"drift\",\n \"driller\",\n \"drilling\",\n \"drinkable\",\n \"drinking\",\n \"dripping\",\n \"drippy\",\n \"drivable\",\n \"driven\",\n \"driver\",\n \"driveway\",\n \"driving\",\n \"drizzle\",\n \"drizzly\",\n \"drone\",\n \"drool\",\n \"droop\",\n \"drop-down\",\n \"dropbox\",\n \"dropkick\",\n \"droplet\",\n \"dropout\",\n \"dropper\",\n \"drove\",\n \"drown\",\n \"drowsily\",\n \"drudge\",\n \"drum\",\n \"dry\",\n \"dubbed\",\n \"dubiously\",\n \"duchess\",\n \"duckbill\",\n \"ducking\",\n \"duckling\",\n \"ducktail\",\n \"ducky\",\n \"duct\",\n \"dude\",\n \"duffel\",\n \"dugout\",\n \"duh\",\n \"duke\",\n \"duller\",\n \"dullness\",\n \"duly\",\n \"dumping\",\n \"dumpling\",\n \"dumpster\",\n \"duo\",\n \"dupe\",\n \"duplex\",\n \"duplicate\",\n \"duplicity\",\n \"durable\",\n \"durably\",\n \"duration\",\n \"duress\",\n \"during\",\n \"dusk\",\n \"dust\",\n \"dutiful\",\n \"duty\",\n \"duvet\",\n \"dwarf\",\n \"dweeb\",\n \"dwelled\",\n \"dweller\",\n \"dwelling\",\n \"dwindle\",\n \"dwindling\",\n \"dynamic\",\n \"dynamite\",\n \"dynasty\",\n \"dyslexia\",\n \"dyslexic\",\n \"each\",\n \"eagle\",\n \"earache\",\n \"eardrum\",\n \"earflap\",\n \"earful\",\n \"earlobe\",\n \"early\",\n \"earmark\",\n \"earmuff\",\n \"earphone\",\n \"earpiece\",\n \"earplugs\",\n \"earring\",\n \"earshot\",\n \"earthen\",\n \"earthlike\",\n \"earthling\",\n \"earthly\",\n \"earthworm\",\n \"earthy\",\n \"earwig\",\n \"easeful\",\n \"easel\",\n \"easiest\",\n \"easily\",\n \"easiness\",\n \"easing\",\n \"eastbound\",\n \"eastcoast\",\n \"easter\",\n \"eastward\",\n \"eatable\",\n \"eaten\",\n \"eatery\",\n \"eating\",\n \"eats\",\n \"ebay\",\n \"ebony\",\n \"ebook\",\n \"ecard\",\n \"eccentric\",\n \"echo\",\n \"eclair\",\n \"eclipse\",\n \"ecologist\",\n \"ecology\",\n \"economic\",\n \"economist\",\n \"economy\",\n \"ecosphere\",\n \"ecosystem\",\n \"edge\",\n \"edginess\",\n \"edging\",\n \"edgy\",\n \"edition\",\n \"editor\",\n \"educated\",\n \"education\",\n \"educator\",\n \"eel\",\n \"effective\",\n \"effects\",\n \"efficient\",\n \"effort\",\n \"eggbeater\",\n \"egging\",\n \"eggnog\",\n \"eggplant\",\n \"eggshell\",\n \"egomaniac\",\n \"egotism\",\n \"egotistic\",\n \"either\",\n \"eject\",\n \"elaborate\",\n \"elastic\",\n \"elated\",\n \"elbow\",\n \"eldercare\",\n \"elderly\",\n \"eldest\",\n \"electable\",\n \"election\",\n \"elective\",\n \"elephant\",\n \"elevate\",\n \"elevating\",\n \"elevation\",\n \"elevator\",\n \"eleven\",\n \"elf\",\n \"eligible\",\n \"eligibly\",\n \"eliminate\",\n \"elite\",\n \"elitism\",\n \"elixir\",\n \"elk\",\n \"ellipse\",\n \"elliptic\",\n \"elm\",\n \"elongated\",\n \"elope\",\n \"eloquence\",\n \"eloquent\",\n \"elsewhere\",\n \"elude\",\n \"elusive\",\n \"elves\",\n \"email\",\n \"embargo\",\n \"embark\",\n \"embassy\",\n \"embattled\",\n \"embellish\",\n \"ember\",\n \"embezzle\",\n \"emblaze\",\n \"emblem\",\n \"embody\",\n \"embolism\",\n \"emboss\",\n \"embroider\",\n \"emcee\",\n \"emerald\",\n \"emergency\",\n \"emission\",\n \"emit\",\n \"emote\",\n \"emoticon\",\n \"emotion\",\n \"empathic\",\n \"empathy\",\n \"emperor\",\n \"emphases\",\n \"emphasis\",\n \"emphasize\",\n \"emphatic\",\n \"empirical\",\n \"employed\",\n \"employee\",\n \"employer\",\n \"emporium\",\n \"empower\",\n \"emptier\",\n \"emptiness\",\n \"empty\",\n \"emu\",\n \"enable\",\n \"enactment\",\n \"enamel\",\n \"enchanted\",\n \"enchilada\",\n \"encircle\",\n \"enclose\",\n \"enclosure\",\n \"encode\",\n \"encore\",\n \"encounter\",\n \"encourage\",\n \"encroach\",\n \"encrust\",\n \"encrypt\",\n \"endanger\",\n \"endeared\",\n \"endearing\",\n \"ended\",\n \"ending\",\n \"endless\",\n \"endnote\",\n \"endocrine\",\n \"endorphin\",\n \"endorse\",\n \"endowment\",\n \"endpoint\",\n \"endurable\",\n \"endurance\",\n \"enduring\",\n \"energetic\",\n \"energize\",\n \"energy\",\n \"enforced\",\n \"enforcer\",\n \"engaged\",\n \"engaging\",\n \"engine\",\n \"engorge\",\n \"engraved\",\n \"engraver\",\n \"engraving\",\n \"engross\",\n \"engulf\",\n \"enhance\",\n \"enigmatic\",\n \"enjoyable\",\n \"enjoyably\",\n \"enjoyer\",\n \"enjoying\",\n \"enjoyment\",\n \"enlarged\",\n \"enlarging\",\n \"enlighten\",\n \"enlisted\",\n \"enquirer\",\n \"enrage\",\n \"enrich\",\n \"enroll\",\n \"enslave\",\n \"ensnare\",\n \"ensure\",\n \"entail\",\n \"entangled\",\n \"entering\",\n \"entertain\",\n \"enticing\",\n \"entire\",\n \"entitle\",\n \"entity\",\n \"entomb\",\n \"entourage\",\n \"entrap\",\n \"entree\",\n \"entrench\",\n \"entrust\",\n \"entryway\",\n \"entwine\",\n \"enunciate\",\n \"envelope\",\n \"enviable\",\n \"enviably\",\n \"envious\",\n \"envision\",\n \"envoy\",\n \"envy\",\n \"enzyme\",\n \"epic\",\n \"epidemic\",\n \"epidermal\",\n \"epidermis\",\n \"epidural\",\n \"epilepsy\",\n \"epileptic\",\n \"epilogue\",\n \"epiphany\",\n \"episode\",\n \"equal\",\n \"equate\",\n \"equation\",\n \"equator\",\n \"equinox\",\n \"equipment\",\n \"equity\",\n \"equivocal\",\n \"eradicate\",\n \"erasable\",\n \"erased\",\n \"eraser\",\n \"erasure\",\n \"ergonomic\",\n \"errand\",\n \"errant\",\n \"erratic\",\n \"error\",\n \"erupt\",\n \"escalate\",\n \"escalator\",\n \"escapable\",\n \"escapade\",\n \"escapist\",\n \"escargot\",\n \"eskimo\",\n \"esophagus\",\n \"espionage\",\n \"espresso\",\n \"esquire\",\n \"essay\",\n \"essence\",\n \"essential\",\n \"establish\",\n \"estate\",\n \"esteemed\",\n \"estimate\",\n \"estimator\",\n \"estranged\",\n \"estrogen\",\n \"etching\",\n \"eternal\",\n \"eternity\",\n \"ethanol\",\n \"ether\",\n \"ethically\",\n \"ethics\",\n \"euphemism\",\n \"evacuate\",\n \"evacuee\",\n \"evade\",\n \"evaluate\",\n \"evaluator\",\n \"evaporate\",\n \"evasion\",\n \"evasive\",\n \"even\",\n \"everglade\",\n \"evergreen\",\n \"everybody\",\n \"everyday\",\n \"everyone\",\n \"evict\",\n \"evidence\",\n \"evident\",\n \"evil\",\n \"evoke\",\n \"evolution\",\n \"evolve\",\n \"exact\",\n \"exalted\",\n \"example\",\n \"excavate\",\n \"excavator\",\n \"exceeding\",\n \"exception\",\n \"excess\",\n \"exchange\",\n \"excitable\",\n \"exciting\",\n \"exclaim\",\n \"exclude\",\n \"excluding\",\n \"exclusion\",\n \"exclusive\",\n \"excretion\",\n \"excretory\",\n \"excursion\",\n \"excusable\",\n \"excusably\",\n \"excuse\",\n \"exemplary\",\n \"exemplify\",\n \"exemption\",\n \"exerciser\",\n \"exert\",\n \"exes\",\n \"exfoliate\",\n \"exhale\",\n \"exhaust\",\n \"exhume\",\n \"exile\",\n \"existing\",\n \"exit\",\n \"exodus\",\n \"exonerate\",\n \"exorcism\",\n \"exorcist\",\n \"expand\",\n \"expanse\",\n \"expansion\",\n \"expansive\",\n \"expectant\",\n \"expedited\",\n \"expediter\",\n \"expel\",\n \"expend\",\n \"expenses\",\n \"expensive\",\n \"expert\",\n \"expire\",\n \"expiring\",\n \"explain\",\n \"expletive\",\n \"explicit\",\n \"explode\",\n \"exploit\",\n \"explore\",\n \"exploring\",\n \"exponent\",\n \"exporter\",\n \"exposable\",\n \"expose\",\n \"exposure\",\n \"express\",\n \"expulsion\",\n \"exquisite\",\n \"extended\",\n \"extending\",\n \"extent\",\n \"extenuate\",\n \"exterior\",\n \"external\",\n \"extinct\",\n \"extortion\",\n \"extradite\",\n \"extras\",\n \"extrovert\",\n \"extrude\",\n \"extruding\",\n \"exuberant\",\n \"fable\",\n \"fabric\",\n \"fabulous\",\n \"facebook\",\n \"facecloth\",\n \"facedown\",\n \"faceless\",\n \"facelift\",\n \"faceplate\",\n \"faceted\",\n \"facial\",\n \"facility\",\n \"facing\",\n \"facsimile\",\n \"faction\",\n \"factoid\",\n \"factor\",\n \"factsheet\",\n \"factual\",\n \"faculty\",\n \"fade\",\n \"fading\",\n \"failing\",\n \"falcon\",\n \"fall\",\n \"false\",\n \"falsify\",\n \"fame\",\n \"familiar\",\n \"family\",\n \"famine\",\n \"famished\",\n \"fanatic\",\n \"fancied\",\n \"fanciness\",\n \"fancy\",\n \"fanfare\",\n \"fang\",\n \"fanning\",\n \"fantasize\",\n \"fantastic\",\n \"fantasy\",\n \"fascism\",\n \"fastball\",\n \"faster\",\n \"fasting\",\n \"fastness\",\n \"faucet\",\n \"favorable\",\n \"favorably\",\n \"favored\",\n \"favoring\",\n \"favorite\",\n \"fax\",\n \"feast\",\n \"federal\",\n \"fedora\",\n \"feeble\",\n \"feed\",\n \"feel\",\n \"feisty\",\n \"feline\",\n \"felt-tip\",\n \"feminine\",\n \"feminism\",\n \"feminist\",\n \"feminize\",\n \"femur\",\n \"fence\",\n \"fencing\",\n \"fender\",\n \"ferment\",\n \"fernlike\",\n \"ferocious\",\n \"ferocity\",\n \"ferret\",\n \"ferris\",\n \"ferry\",\n \"fervor\",\n \"fester\",\n \"festival\",\n \"festive\",\n \"festivity\",\n \"fetal\",\n \"fetch\",\n \"fever\",\n \"fiber\",\n \"fiction\",\n \"fiddle\",\n \"fiddling\",\n \"fidelity\",\n \"fidgeting\",\n \"fidgety\",\n \"fifteen\",\n \"fifth\",\n \"fiftieth\",\n \"fifty\",\n \"figment\",\n \"figure\",\n \"figurine\",\n \"filing\",\n \"filled\",\n \"filler\",\n \"filling\",\n \"film\",\n \"filter\",\n \"filth\",\n \"filtrate\",\n \"finale\",\n \"finalist\",\n \"finalize\",\n \"finally\",\n \"finance\",\n \"financial\",\n \"finch\",\n \"fineness\",\n \"finer\",\n \"finicky\",\n \"finished\",\n \"finisher\",\n \"finishing\",\n \"finite\",\n \"finless\",\n \"finlike\",\n \"fiscally\",\n \"fit\",\n \"five\",\n \"flaccid\",\n \"flagman\",\n \"flagpole\",\n \"flagship\",\n \"flagstick\",\n \"flagstone\",\n \"flail\",\n \"flakily\",\n \"flaky\",\n \"flame\",\n \"flammable\",\n \"flanked\",\n \"flanking\",\n \"flannels\",\n \"flap\",\n \"flaring\",\n \"flashback\",\n \"flashbulb\",\n \"flashcard\",\n \"flashily\",\n \"flashing\",\n \"flashy\",\n \"flask\",\n \"flatbed\",\n \"flatfoot\",\n \"flatly\",\n \"flatness\",\n \"flatten\",\n \"flattered\",\n \"flatterer\",\n \"flattery\",\n \"flattop\",\n \"flatware\",\n \"flatworm\",\n \"flavored\",\n \"flavorful\",\n \"flavoring\",\n \"flaxseed\",\n \"fled\",\n \"fleshed\",\n \"fleshy\",\n \"flick\",\n \"flier\",\n \"flight\",\n \"flinch\",\n \"fling\",\n \"flint\",\n \"flip\",\n \"flirt\",\n \"float\",\n \"flock\",\n \"flogging\",\n \"flop\",\n \"floral\",\n \"florist\",\n \"floss\",\n \"flounder\",\n \"flyable\",\n \"flyaway\",\n \"flyer\",\n \"flying\",\n \"flyover\",\n \"flypaper\",\n \"foam\",\n \"foe\",\n \"fog\",\n \"foil\",\n \"folic\",\n \"folk\",\n \"follicle\",\n \"follow\",\n \"fondling\",\n \"fondly\",\n \"fondness\",\n \"fondue\",\n \"font\",\n \"food\",\n \"fool\",\n \"footage\",\n \"football\",\n \"footbath\",\n \"footboard\",\n \"footer\",\n \"footgear\",\n \"foothill\",\n \"foothold\",\n \"footing\",\n \"footless\",\n \"footman\",\n \"footnote\",\n \"footpad\",\n \"footpath\",\n \"footprint\",\n \"footrest\",\n \"footsie\",\n \"footsore\",\n \"footwear\",\n \"footwork\",\n \"fossil\",\n \"foster\",\n \"founder\",\n \"founding\",\n \"fountain\",\n \"fox\",\n \"foyer\",\n \"fraction\",\n \"fracture\",\n \"fragile\",\n \"fragility\",\n \"fragment\",\n \"fragrance\",\n \"fragrant\",\n \"frail\",\n \"frame\",\n \"framing\",\n \"frantic\",\n \"fraternal\",\n \"frayed\",\n \"fraying\",\n \"frays\",\n \"freckled\",\n \"freckles\",\n \"freebase\",\n \"freebee\",\n \"freebie\",\n \"freedom\",\n \"freefall\",\n \"freehand\",\n \"freeing\",\n \"freeload\",\n \"freely\",\n \"freemason\",\n \"freeness\",\n \"freestyle\",\n \"freeware\",\n \"freeway\",\n \"freewill\",\n \"freezable\",\n \"freezing\",\n \"freight\",\n \"french\",\n \"frenzied\",\n \"frenzy\",\n \"frequency\",\n \"frequent\",\n \"fresh\",\n \"fretful\",\n \"fretted\",\n \"friction\",\n \"friday\",\n \"fridge\",\n \"fried\",\n \"friend\",\n \"frighten\",\n \"frightful\",\n \"frigidity\",\n \"frigidly\",\n \"frill\",\n \"fringe\",\n \"frisbee\",\n \"frisk\",\n \"fritter\",\n \"frivolous\",\n \"frolic\",\n \"from\",\n \"front\",\n \"frostbite\",\n \"frosted\",\n \"frostily\",\n \"frosting\",\n \"frostlike\",\n \"frosty\",\n \"froth\",\n \"frown\",\n \"frozen\",\n \"fructose\",\n \"frugality\",\n \"frugally\",\n \"fruit\",\n \"frustrate\",\n \"frying\",\n \"gab\",\n \"gaffe\",\n \"gag\",\n \"gainfully\",\n \"gaining\",\n \"gains\",\n \"gala\",\n \"gallantly\",\n \"galleria\",\n \"gallery\",\n \"galley\",\n \"gallon\",\n \"gallows\",\n \"gallstone\",\n \"galore\",\n \"galvanize\",\n \"gambling\",\n \"game\",\n \"gaming\",\n \"gamma\",\n \"gander\",\n \"gangly\",\n \"gangrene\",\n \"gangway\",\n \"gap\",\n \"garage\",\n \"garbage\",\n \"garden\",\n \"gargle\",\n \"garland\",\n \"garlic\",\n \"garment\",\n \"garnet\",\n \"garnish\",\n \"garter\",\n \"gas\",\n \"gatherer\",\n \"gathering\",\n \"gating\",\n \"gauging\",\n \"gauntlet\",\n \"gauze\",\n \"gave\",\n \"gawk\",\n \"gazing\",\n \"gear\",\n \"gecko\",\n \"geek\",\n \"geiger\",\n \"gem\",\n \"gender\",\n \"generic\",\n \"generous\",\n \"genetics\",\n \"genre\",\n \"gentile\",\n \"gentleman\",\n \"gently\",\n \"gents\",\n \"geography\",\n \"geologic\",\n \"geologist\",\n \"geology\",\n \"geometric\",\n \"geometry\",\n \"geranium\",\n \"gerbil\",\n \"geriatric\",\n \"germicide\",\n \"germinate\",\n \"germless\",\n \"germproof\",\n \"gestate\",\n \"gestation\",\n \"gesture\",\n \"getaway\",\n \"getting\",\n \"getup\",\n \"giant\",\n \"gibberish\",\n \"giblet\",\n \"giddily\",\n \"giddiness\",\n \"giddy\",\n \"gift\",\n \"gigabyte\",\n \"gigahertz\",\n \"gigantic\",\n \"giggle\",\n \"giggling\",\n \"giggly\",\n \"gigolo\",\n \"gilled\",\n \"gills\",\n \"gimmick\",\n \"girdle\",\n \"giveaway\",\n \"given\",\n \"giver\",\n \"giving\",\n \"gizmo\",\n \"gizzard\",\n \"glacial\",\n \"glacier\",\n \"glade\",\n \"gladiator\",\n \"gladly\",\n \"glamorous\",\n \"glamour\",\n \"glance\",\n \"glancing\",\n \"glandular\",\n \"glare\",\n \"glaring\",\n \"glass\",\n \"glaucoma\",\n \"glazing\",\n \"gleaming\",\n \"gleeful\",\n \"glider\",\n \"gliding\",\n \"glimmer\",\n \"glimpse\",\n \"glisten\",\n \"glitch\",\n \"glitter\",\n \"glitzy\",\n \"gloater\",\n \"gloating\",\n \"gloomily\",\n \"gloomy\",\n \"glorified\",\n \"glorifier\",\n \"glorify\",\n \"glorious\",\n \"glory\",\n \"gloss\",\n \"glove\",\n \"glowing\",\n \"glowworm\",\n \"glucose\",\n \"glue\",\n \"gluten\",\n \"glutinous\",\n \"glutton\",\n \"gnarly\",\n \"gnat\",\n \"goal\",\n \"goatskin\",\n \"goes\",\n \"goggles\",\n \"going\",\n \"goldfish\",\n \"goldmine\",\n \"goldsmith\",\n \"golf\",\n \"goliath\",\n \"gonad\",\n \"gondola\",\n \"gone\",\n \"gong\",\n \"good\",\n \"gooey\",\n \"goofball\",\n \"goofiness\",\n \"goofy\",\n \"google\",\n \"goon\",\n \"gopher\",\n \"gore\",\n \"gorged\",\n \"gorgeous\",\n \"gory\",\n \"gosling\",\n \"gossip\",\n \"gothic\",\n \"gotten\",\n \"gout\",\n \"gown\",\n \"grab\",\n \"graceful\",\n \"graceless\",\n \"gracious\",\n \"gradation\",\n \"graded\",\n \"grader\",\n \"gradient\",\n \"grading\",\n \"gradually\",\n \"graduate\",\n \"graffiti\",\n \"grafted\",\n \"grafting\",\n \"grain\",\n \"granddad\",\n \"grandkid\",\n \"grandly\",\n \"grandma\",\n \"grandpa\",\n \"grandson\",\n \"granite\",\n \"granny\",\n \"granola\",\n \"grant\",\n \"granular\",\n \"grape\",\n \"graph\",\n \"grapple\",\n \"grappling\",\n \"grasp\",\n \"grass\",\n \"gratified\",\n \"gratify\",\n \"grating\",\n \"gratitude\",\n \"gratuity\",\n \"gravel\",\n \"graveness\",\n \"graves\",\n \"graveyard\",\n \"gravitate\",\n \"gravity\",\n \"gravy\",\n \"gray\",\n \"grazing\",\n \"greasily\",\n \"greedily\",\n \"greedless\",\n \"greedy\",\n \"green\",\n \"greeter\",\n \"greeting\",\n \"grew\",\n \"greyhound\",\n \"grid\",\n \"grief\",\n \"grievance\",\n \"grieving\",\n \"grievous\",\n \"grill\",\n \"grimace\",\n \"grimacing\",\n \"grime\",\n \"griminess\",\n \"grimy\",\n \"grinch\",\n \"grinning\",\n \"grip\",\n \"gristle\",\n \"grit\",\n \"groggily\",\n \"groggy\",\n \"groin\",\n \"groom\",\n \"groove\",\n \"grooving\",\n \"groovy\",\n \"grope\",\n \"ground\",\n \"grouped\",\n \"grout\",\n \"grove\",\n \"grower\",\n \"growing\",\n \"growl\",\n \"grub\",\n \"grudge\",\n \"grudging\",\n \"grueling\",\n \"gruffly\",\n \"grumble\",\n \"grumbling\",\n \"grumbly\",\n \"grumpily\",\n \"grunge\",\n \"grunt\",\n \"guacamole\",\n \"guidable\",\n \"guidance\",\n \"guide\",\n \"guiding\",\n \"guileless\",\n \"guise\",\n \"gulf\",\n \"gullible\",\n \"gully\",\n \"gulp\",\n \"gumball\",\n \"gumdrop\",\n \"gumminess\",\n \"gumming\",\n \"gummy\",\n \"gurgle\",\n \"gurgling\",\n \"guru\",\n \"gush\",\n \"gusto\",\n \"gusty\",\n \"gutless\",\n \"guts\",\n \"gutter\",\n \"guy\",\n \"guzzler\",\n \"gyration\",\n \"habitable\",\n \"habitant\",\n \"habitat\",\n \"habitual\",\n \"hacked\",\n \"hacker\",\n \"hacking\",\n \"hacksaw\",\n \"had\",\n \"haggler\",\n \"haiku\",\n \"half\",\n \"halogen\",\n \"halt\",\n \"halved\",\n \"halves\",\n \"hamburger\",\n \"hamlet\",\n \"hammock\",\n \"hamper\",\n \"hamster\",\n \"hamstring\",\n \"handbag\",\n \"handball\",\n \"handbook\",\n \"handbrake\",\n \"handcart\",\n \"handclap\",\n \"handclasp\",\n \"handcraft\",\n \"handcuff\",\n \"handed\",\n \"handful\",\n \"handgrip\",\n \"handgun\",\n \"handheld\",\n \"handiness\",\n \"handiwork\",\n \"handlebar\",\n \"handled\",\n \"handler\",\n \"handling\",\n \"handmade\",\n \"handoff\",\n \"handpick\",\n \"handprint\",\n \"handrail\",\n \"handsaw\",\n \"handset\",\n \"handsfree\",\n \"handshake\",\n \"handstand\",\n \"handwash\",\n \"handwork\",\n \"handwoven\",\n \"handwrite\",\n \"handyman\",\n \"hangnail\",\n \"hangout\",\n \"hangover\",\n \"hangup\",\n \"hankering\",\n \"hankie\",\n \"hanky\",\n \"haphazard\",\n \"happening\",\n \"happier\",\n \"happiest\",\n \"happily\",\n \"happiness\",\n \"happy\",\n \"harbor\",\n \"hardcopy\",\n \"hardcore\",\n \"hardcover\",\n \"harddisk\",\n \"hardened\",\n \"hardener\",\n \"hardening\",\n \"hardhat\",\n \"hardhead\",\n \"hardiness\",\n \"hardly\",\n \"hardness\",\n \"hardship\",\n \"hardware\",\n \"hardwired\",\n \"hardwood\",\n \"hardy\",\n \"harmful\",\n \"harmless\",\n \"harmonica\",\n \"harmonics\",\n \"harmonize\",\n \"harmony\",\n \"harness\",\n \"harpist\",\n \"harsh\",\n \"harvest\",\n \"hash\",\n \"hassle\",\n \"haste\",\n \"hastily\",\n \"hastiness\",\n \"hasty\",\n \"hatbox\",\n \"hatchback\",\n \"hatchery\",\n \"hatchet\",\n \"hatching\",\n \"hatchling\",\n \"hate\",\n \"hatless\",\n \"hatred\",\n \"haunt\",\n \"haven\",\n \"hazard\",\n \"hazelnut\",\n \"hazily\",\n \"haziness\",\n \"hazing\",\n \"hazy\",\n \"headache\",\n \"headband\",\n \"headboard\",\n \"headcount\",\n \"headdress\",\n \"headed\",\n \"header\",\n \"headfirst\",\n \"headgear\",\n \"heading\",\n \"headlamp\",\n \"headless\",\n \"headlock\",\n \"headphone\",\n \"headpiece\",\n \"headrest\",\n \"headroom\",\n \"headscarf\",\n \"headset\",\n \"headsman\",\n \"headstand\",\n \"headstone\",\n \"headway\",\n \"headwear\",\n \"heap\",\n \"heat\",\n \"heave\",\n \"heavily\",\n \"heaviness\",\n \"heaving\",\n \"hedge\",\n \"hedging\",\n \"heftiness\",\n \"hefty\",\n \"helium\",\n \"helmet\",\n \"helper\",\n \"helpful\",\n \"helping\",\n \"helpless\",\n \"helpline\",\n \"hemlock\",\n \"hemstitch\",\n \"hence\",\n \"henchman\",\n \"henna\",\n \"herald\",\n \"herbal\",\n \"herbicide\",\n \"herbs\",\n \"heritage\",\n \"hermit\",\n \"heroics\",\n \"heroism\",\n \"herring\",\n \"herself\",\n \"hertz\",\n \"hesitancy\",\n \"hesitant\",\n \"hesitate\",\n \"hexagon\",\n \"hexagram\",\n \"hubcap\",\n \"huddle\",\n \"huddling\",\n \"huff\",\n \"hug\",\n \"hula\",\n \"hulk\",\n \"hull\",\n \"human\",\n \"humble\",\n \"humbling\",\n \"humbly\",\n \"humid\",\n \"humiliate\",\n \"humility\",\n \"humming\",\n \"hummus\",\n \"humongous\",\n \"humorist\",\n \"humorless\",\n \"humorous\",\n \"humpback\",\n \"humped\",\n \"humvee\",\n \"hunchback\",\n \"hundredth\",\n \"hunger\",\n \"hungrily\",\n \"hungry\",\n \"hunk\",\n \"hunter\",\n \"hunting\",\n \"huntress\",\n \"huntsman\",\n \"hurdle\",\n \"hurled\",\n \"hurler\",\n \"hurling\",\n \"hurray\",\n \"hurricane\",\n \"hurried\",\n \"hurry\",\n \"hurt\",\n \"husband\",\n \"hush\",\n \"husked\",\n \"huskiness\",\n \"hut\",\n \"hybrid\",\n \"hydrant\",\n \"hydrated\",\n \"hydration\",\n \"hydrogen\",\n \"hydroxide\",\n \"hyperlink\",\n \"hypertext\",\n \"hyphen\",\n \"hypnoses\",\n \"hypnosis\",\n \"hypnotic\",\n \"hypnotism\",\n \"hypnotist\",\n \"hypnotize\",\n \"hypocrisy\",\n \"hypocrite\",\n \"ibuprofen\",\n \"ice\",\n \"iciness\",\n \"icing\",\n \"icky\",\n \"icon\",\n \"icy\",\n \"idealism\",\n \"idealist\",\n \"idealize\",\n \"ideally\",\n \"idealness\",\n \"identical\",\n \"identify\",\n \"identity\",\n \"ideology\",\n \"idiocy\",\n \"idiom\",\n \"idly\",\n \"igloo\",\n \"ignition\",\n \"ignore\",\n \"iguana\",\n \"illicitly\",\n \"illusion\",\n \"illusive\",\n \"image\",\n \"imaginary\",\n \"imagines\",\n \"imaging\",\n \"imbecile\",\n \"imitate\",\n \"imitation\",\n \"immature\",\n \"immerse\",\n \"immersion\",\n \"imminent\",\n \"immobile\",\n \"immodest\",\n \"immorally\",\n \"immortal\",\n \"immovable\",\n \"immovably\",\n \"immunity\",\n \"immunize\",\n \"impaired\",\n \"impale\",\n \"impart\",\n \"impatient\",\n \"impeach\",\n \"impeding\",\n \"impending\",\n \"imperfect\",\n \"imperial\",\n \"impish\",\n \"implant\",\n \"implement\",\n \"implicate\",\n \"implicit\",\n \"implode\",\n \"implosion\",\n \"implosive\",\n \"imply\",\n \"impolite\",\n \"important\",\n \"importer\",\n \"impose\",\n \"imposing\",\n \"impotence\",\n \"impotency\",\n \"impotent\",\n \"impound\",\n \"imprecise\",\n \"imprint\",\n \"imprison\",\n \"impromptu\",\n \"improper\",\n \"improve\",\n \"improving\",\n \"improvise\",\n \"imprudent\",\n \"impulse\",\n \"impulsive\",\n \"impure\",\n \"impurity\",\n \"iodine\",\n \"iodize\",\n \"ion\",\n \"ipad\",\n \"iphone\",\n \"ipod\",\n \"irate\",\n \"irk\",\n \"iron\",\n \"irregular\",\n \"irrigate\",\n \"irritable\",\n \"irritably\",\n \"irritant\",\n \"irritate\",\n \"islamic\",\n \"islamist\",\n \"isolated\",\n \"isolating\",\n \"isolation\",\n \"isotope\",\n \"issue\",\n \"issuing\",\n \"italicize\",\n \"italics\",\n \"item\",\n \"itinerary\",\n \"itunes\",\n \"ivory\",\n \"ivy\",\n \"jab\",\n \"jackal\",\n \"jacket\",\n \"jackknife\",\n \"jackpot\",\n \"jailbird\",\n \"jailbreak\",\n \"jailer\",\n \"jailhouse\",\n \"jalapeno\",\n \"jam\",\n \"janitor\",\n \"january\",\n \"jargon\",\n \"jarring\",\n \"jasmine\",\n \"jaundice\",\n \"jaunt\",\n \"java\",\n \"jawed\",\n \"jawless\",\n \"jawline\",\n \"jaws\",\n \"jaybird\",\n \"jaywalker\",\n \"jazz\",\n \"jeep\",\n \"jeeringly\",\n \"jellied\",\n \"jelly\",\n \"jersey\",\n \"jester\",\n \"jet\",\n \"jiffy\",\n \"jigsaw\",\n \"jimmy\",\n \"jingle\",\n \"jingling\",\n \"jinx\",\n \"jitters\",\n \"jittery\",\n \"job\",\n \"jockey\",\n \"jockstrap\",\n \"jogger\",\n \"jogging\",\n \"john\",\n \"joining\",\n \"jokester\",\n \"jokingly\",\n \"jolliness\",\n \"jolly\",\n \"jolt\",\n \"jot\",\n \"jovial\",\n \"joyfully\",\n \"joylessly\",\n \"joyous\",\n \"joyride\",\n \"joystick\",\n \"jubilance\",\n \"jubilant\",\n \"judge\",\n \"judgingly\",\n \"judicial\",\n \"judiciary\",\n \"judo\",\n \"juggle\",\n \"juggling\",\n \"jugular\",\n \"juice\",\n \"juiciness\",\n \"juicy\",\n \"jujitsu\",\n \"jukebox\",\n \"july\",\n \"jumble\",\n \"jumbo\",\n \"jump\",\n \"junction\",\n \"juncture\",\n \"june\",\n \"junior\",\n \"juniper\",\n \"junkie\",\n \"junkman\",\n \"junkyard\",\n \"jurist\",\n \"juror\",\n \"jury\",\n \"justice\",\n \"justifier\",\n \"justify\",\n \"justly\",\n \"justness\",\n \"juvenile\",\n \"kabob\",\n \"kangaroo\",\n \"karaoke\",\n \"karate\",\n \"karma\",\n \"kebab\",\n \"keenly\",\n \"keenness\",\n \"keep\",\n \"keg\",\n \"kelp\",\n \"kennel\",\n \"kept\",\n \"kerchief\",\n \"kerosene\",\n \"kettle\",\n \"kick\",\n \"kiln\",\n \"kilobyte\",\n \"kilogram\",\n \"kilometer\",\n \"kilowatt\",\n \"kilt\",\n \"kimono\",\n \"kindle\",\n \"kindling\",\n \"kindly\",\n \"kindness\",\n \"kindred\",\n \"kinetic\",\n \"kinfolk\",\n \"king\",\n \"kinship\",\n \"kinsman\",\n \"kinswoman\",\n \"kissable\",\n \"kisser\",\n \"kissing\",\n \"kitchen\",\n \"kite\",\n \"kitten\",\n \"kitty\",\n \"kiwi\",\n \"kleenex\",\n \"knapsack\",\n \"knee\",\n \"knelt\",\n \"knickers\",\n \"knoll\",\n \"koala\",\n \"kooky\",\n \"kosher\",\n \"krypton\",\n \"kudos\",\n \"kung\",\n \"labored\",\n \"laborer\",\n \"laboring\",\n \"laborious\",\n \"labrador\",\n \"ladder\",\n \"ladies\",\n \"ladle\",\n \"ladybug\",\n \"ladylike\",\n \"lagged\",\n \"lagging\",\n \"lagoon\",\n \"lair\",\n \"lake\",\n \"lance\",\n \"landed\",\n \"landfall\",\n \"landfill\",\n \"landing\",\n \"landlady\",\n \"landless\",\n \"landline\",\n \"landlord\",\n \"landmark\",\n \"landmass\",\n \"landmine\",\n \"landowner\",\n \"landscape\",\n \"landside\",\n \"landslide\",\n \"language\",\n \"lankiness\",\n \"lanky\",\n \"lantern\",\n \"lapdog\",\n \"lapel\",\n \"lapped\",\n \"lapping\",\n \"laptop\",\n \"lard\",\n \"large\",\n \"lark\",\n \"lash\",\n \"lasso\",\n \"last\",\n \"latch\",\n \"late\",\n \"lather\",\n \"latitude\",\n \"latrine\",\n \"latter\",\n \"latticed\",\n \"launch\",\n \"launder\",\n \"laundry\",\n \"laurel\",\n \"lavender\",\n \"lavish\",\n \"laxative\",\n \"lazily\",\n \"laziness\",\n \"lazy\",\n \"lecturer\",\n \"left\",\n \"legacy\",\n \"legal\",\n \"legend\",\n \"legged\",\n \"leggings\",\n \"legible\",\n \"legibly\",\n \"legislate\",\n \"lego\",\n \"legroom\",\n \"legume\",\n \"legwarmer\",\n \"legwork\",\n \"lemon\",\n \"lend\",\n \"length\",\n \"lens\",\n \"lent\",\n \"leotard\",\n \"lesser\",\n \"letdown\",\n \"lethargic\",\n \"lethargy\",\n \"letter\",\n \"lettuce\",\n \"level\",\n \"leverage\",\n \"levers\",\n \"levitate\",\n \"levitator\",\n \"liability\",\n \"liable\",\n \"liberty\",\n \"librarian\",\n \"library\",\n \"licking\",\n \"licorice\",\n \"lid\",\n \"life\",\n \"lifter\",\n \"lifting\",\n \"liftoff\",\n \"ligament\",\n \"likely\",\n \"likeness\",\n \"likewise\",\n \"liking\",\n \"lilac\",\n \"lilly\",\n \"lily\",\n \"limb\",\n \"limeade\",\n \"limelight\",\n \"limes\",\n \"limit\",\n \"limping\",\n \"limpness\",\n \"line\",\n \"lingo\",\n \"linguini\",\n \"linguist\",\n \"lining\",\n \"linked\",\n \"linoleum\",\n \"linseed\",\n \"lint\",\n \"lion\",\n \"lip\",\n \"liquefy\",\n \"liqueur\",\n \"liquid\",\n \"lisp\",\n \"list\",\n \"litigate\",\n \"litigator\",\n \"litmus\",\n \"litter\",\n \"little\",\n \"livable\",\n \"lived\",\n \"lively\",\n \"liver\",\n \"livestock\",\n \"lividly\",\n \"living\",\n \"lizard\",\n \"lubricant\",\n \"lubricate\",\n \"lucid\",\n \"luckily\",\n \"luckiness\",\n \"luckless\",\n \"lucrative\",\n \"ludicrous\",\n \"lugged\",\n \"lukewarm\",\n \"lullaby\",\n \"lumber\",\n \"luminance\",\n \"luminous\",\n \"lumpiness\",\n \"lumping\",\n \"lumpish\",\n \"lunacy\",\n \"lunar\",\n \"lunchbox\",\n \"luncheon\",\n \"lunchroom\",\n \"lunchtime\",\n \"lung\",\n \"lurch\",\n \"lure\",\n \"luridness\",\n \"lurk\",\n \"lushly\",\n \"lushness\",\n \"luster\",\n \"lustfully\",\n \"lustily\",\n \"lustiness\",\n \"lustrous\",\n \"lusty\",\n \"luxurious\",\n \"luxury\",\n \"lying\",\n \"lyrically\",\n \"lyricism\",\n \"lyricist\",\n \"lyrics\",\n \"macarena\",\n \"macaroni\",\n \"macaw\",\n \"mace\",\n \"machine\",\n \"machinist\",\n \"magazine\",\n \"magenta\",\n \"maggot\",\n \"magical\",\n \"magician\",\n \"magma\",\n \"magnesium\",\n \"magnetic\",\n \"magnetism\",\n \"magnetize\",\n \"magnifier\",\n \"magnify\",\n \"magnitude\",\n \"magnolia\",\n \"mahogany\",\n \"maimed\",\n \"majestic\",\n \"majesty\",\n \"majorette\",\n \"majority\",\n \"makeover\",\n \"maker\",\n \"makeshift\",\n \"making\",\n \"malformed\",\n \"malt\",\n \"mama\",\n \"mammal\",\n \"mammary\",\n \"mammogram\",\n \"manager\",\n \"managing\",\n \"manatee\",\n \"mandarin\",\n \"mandate\",\n \"mandatory\",\n \"mandolin\",\n \"manger\",\n \"mangle\",\n \"mango\",\n \"mangy\",\n \"manhandle\",\n \"manhole\",\n \"manhood\",\n \"manhunt\",\n \"manicotti\",\n \"manicure\",\n \"manifesto\",\n \"manila\",\n \"mankind\",\n \"manlike\",\n \"manliness\",\n \"manly\",\n \"manmade\",\n \"manned\",\n \"mannish\",\n \"manor\",\n \"manpower\",\n \"mantis\",\n \"mantra\",\n \"manual\",\n \"many\",\n \"map\",\n \"marathon\",\n \"marauding\",\n \"marbled\",\n \"marbles\",\n \"marbling\",\n \"march\",\n \"mardi\",\n \"margarine\",\n \"margarita\",\n \"margin\",\n \"marigold\",\n \"marina\",\n \"marine\",\n \"marital\",\n \"maritime\",\n \"marlin\",\n \"marmalade\",\n \"maroon\",\n \"married\",\n \"marrow\",\n \"marry\",\n \"marshland\",\n \"marshy\",\n \"marsupial\",\n \"marvelous\",\n \"marxism\",\n \"mascot\",\n \"masculine\",\n \"mashed\",\n \"mashing\",\n \"massager\",\n \"masses\",\n \"massive\",\n \"mastiff\",\n \"matador\",\n \"matchbook\",\n \"matchbox\",\n \"matcher\",\n \"matching\",\n \"matchless\",\n \"material\",\n \"maternal\",\n \"maternity\",\n \"math\",\n \"mating\",\n \"matriarch\",\n \"matrimony\",\n \"matrix\",\n \"matron\",\n \"matted\",\n \"matter\",\n \"maturely\",\n \"maturing\",\n \"maturity\",\n \"mauve\",\n \"maverick\",\n \"maximize\",\n \"maximum\",\n \"maybe\",\n \"mayday\",\n \"mayflower\",\n \"moaner\",\n \"moaning\",\n \"mobile\",\n \"mobility\",\n \"mobilize\",\n \"mobster\",\n \"mocha\",\n \"mocker\",\n \"mockup\",\n \"modified\",\n \"modify\",\n \"modular\",\n \"modulator\",\n \"module\",\n \"moisten\",\n \"moistness\",\n \"moisture\",\n \"molar\",\n \"molasses\",\n \"mold\",\n \"molecular\",\n \"molecule\",\n \"molehill\",\n \"mollusk\",\n \"mom\",\n \"monastery\",\n \"monday\",\n \"monetary\",\n \"monetize\",\n \"moneybags\",\n \"moneyless\",\n \"moneywise\",\n \"mongoose\",\n \"mongrel\",\n \"monitor\",\n \"monkhood\",\n \"monogamy\",\n \"monogram\",\n \"monologue\",\n \"monopoly\",\n \"monorail\",\n \"monotone\",\n \"monotype\",\n \"monoxide\",\n \"monsieur\",\n \"monsoon\",\n \"monstrous\",\n \"monthly\",\n \"monument\",\n \"moocher\",\n \"moodiness\",\n \"moody\",\n \"mooing\",\n \"moonbeam\",\n \"mooned\",\n \"moonlight\",\n \"moonlike\",\n \"moonlit\",\n \"moonrise\",\n \"moonscape\",\n \"moonshine\",\n \"moonstone\",\n \"moonwalk\",\n \"mop\",\n \"morale\",\n \"morality\",\n \"morally\",\n \"morbidity\",\n \"morbidly\",\n \"morphine\",\n \"morphing\",\n \"morse\",\n \"mortality\",\n \"mortally\",\n \"mortician\",\n \"mortified\",\n \"mortify\",\n \"mortuary\",\n \"mosaic\",\n \"mossy\",\n \"most\",\n \"mothball\",\n \"mothproof\",\n \"motion\",\n \"motivate\",\n \"motivator\",\n \"motive\",\n \"motocross\",\n \"motor\",\n \"motto\",\n \"mountable\",\n \"mountain\",\n \"mounted\",\n \"mounting\",\n \"mourner\",\n \"mournful\",\n \"mouse\",\n \"mousiness\",\n \"moustache\",\n \"mousy\",\n \"mouth\",\n \"movable\",\n \"move\",\n \"movie\",\n \"moving\",\n \"mower\",\n \"mowing\",\n \"much\",\n \"muck\",\n \"mud\",\n \"mug\",\n \"mulberry\",\n \"mulch\",\n \"mule\",\n \"mulled\",\n \"mullets\",\n \"multiple\",\n \"multiply\",\n \"multitask\",\n \"multitude\",\n \"mumble\",\n \"mumbling\",\n \"mumbo\",\n \"mummified\",\n \"mummify\",\n \"mummy\",\n \"mumps\",\n \"munchkin\",\n \"mundane\",\n \"municipal\",\n \"muppet\",\n \"mural\",\n \"murkiness\",\n \"murky\",\n \"murmuring\",\n \"muscular\",\n \"museum\",\n \"mushily\",\n \"mushiness\",\n \"mushroom\",\n \"mushy\",\n \"music\",\n \"musket\",\n \"muskiness\",\n \"musky\",\n \"mustang\",\n \"mustard\",\n \"muster\",\n \"mustiness\",\n \"musty\",\n \"mutable\",\n \"mutate\",\n \"mutation\",\n \"mute\",\n \"mutilated\",\n \"mutilator\",\n \"mutiny\",\n \"mutt\",\n \"mutual\",\n \"muzzle\",\n \"myself\",\n \"myspace\",\n \"mystified\",\n \"mystify\",\n \"myth\",\n \"nacho\",\n \"nag\",\n \"nail\",\n \"name\",\n \"naming\",\n \"nanny\",\n \"nanometer\",\n \"nape\",\n \"napkin\",\n \"napped\",\n \"napping\",\n \"nappy\",\n \"narrow\",\n \"nastily\",\n \"nastiness\",\n \"national\",\n \"native\",\n \"nativity\",\n \"natural\",\n \"nature\",\n \"naturist\",\n \"nautical\",\n \"navigate\",\n \"navigator\",\n \"navy\",\n \"nearby\",\n \"nearest\",\n \"nearly\",\n \"nearness\",\n \"neatly\",\n \"neatness\",\n \"nebula\",\n \"nebulizer\",\n \"nectar\",\n \"negate\",\n \"negation\",\n \"negative\",\n \"neglector\",\n \"negligee\",\n \"negligent\",\n \"negotiate\",\n \"nemeses\",\n \"nemesis\",\n \"neon\",\n \"nephew\",\n \"nerd\",\n \"nervous\",\n \"nervy\",\n \"nest\",\n \"net\",\n \"neurology\",\n \"neuron\",\n \"neurosis\",\n \"neurotic\",\n \"neuter\",\n \"neutron\",\n \"never\",\n \"next\",\n \"nibble\",\n \"nickname\",\n \"nicotine\",\n \"niece\",\n \"nifty\",\n \"nimble\",\n \"nimbly\",\n \"nineteen\",\n \"ninetieth\",\n \"ninja\",\n \"nintendo\",\n \"ninth\",\n \"nuclear\",\n \"nuclei\",\n \"nucleus\",\n \"nugget\",\n \"nullify\",\n \"number\",\n \"numbing\",\n \"numbly\",\n \"numbness\",\n \"numeral\",\n \"numerate\",\n \"numerator\",\n \"numeric\",\n \"numerous\",\n \"nuptials\",\n \"nursery\",\n \"nursing\",\n \"nurture\",\n \"nutcase\",\n \"nutlike\",\n \"nutmeg\",\n \"nutrient\",\n \"nutshell\",\n \"nuttiness\",\n \"nutty\",\n \"nuzzle\",\n \"nylon\",\n \"oaf\",\n \"oak\",\n \"oasis\",\n \"oat\",\n \"obedience\",\n \"obedient\",\n \"obituary\",\n \"object\",\n \"obligate\",\n \"obliged\",\n \"oblivion\",\n \"oblivious\",\n \"oblong\",\n \"obnoxious\",\n \"oboe\",\n \"obscure\",\n \"obscurity\",\n \"observant\",\n \"observer\",\n \"observing\",\n \"obsessed\",\n \"obsession\",\n \"obsessive\",\n \"obsolete\",\n \"obstacle\",\n \"obstinate\",\n \"obstruct\",\n \"obtain\",\n \"obtrusive\",\n \"obtuse\",\n \"obvious\",\n \"occultist\",\n \"occupancy\",\n \"occupant\",\n \"occupier\",\n \"occupy\",\n \"ocean\",\n \"ocelot\",\n \"octagon\",\n \"octane\",\n \"october\",\n \"octopus\",\n \"ogle\",\n \"oil\",\n \"oink\",\n \"ointment\",\n \"okay\",\n \"old\",\n \"olive\",\n \"olympics\",\n \"omega\",\n \"omen\",\n \"ominous\",\n \"omission\",\n \"omit\",\n \"omnivore\",\n \"onboard\",\n \"oncoming\",\n \"ongoing\",\n \"onion\",\n \"online\",\n \"onlooker\",\n \"only\",\n \"onscreen\",\n \"onset\",\n \"onshore\",\n \"onslaught\",\n \"onstage\",\n \"onto\",\n \"onward\",\n \"onyx\",\n \"oops\",\n \"ooze\",\n \"oozy\",\n \"opacity\",\n \"opal\",\n \"open\",\n \"operable\",\n \"operate\",\n \"operating\",\n \"operation\",\n \"operative\",\n \"operator\",\n \"opium\",\n \"opossum\",\n \"opponent\",\n \"oppose\",\n \"opposing\",\n \"opposite\",\n \"oppressed\",\n \"oppressor\",\n \"opt\",\n \"opulently\",\n \"osmosis\",\n \"other\",\n \"otter\",\n \"ouch\",\n \"ought\",\n \"ounce\",\n \"outage\",\n \"outback\",\n \"outbid\",\n \"outboard\",\n \"outbound\",\n \"outbreak\",\n \"outburst\",\n \"outcast\",\n \"outclass\",\n \"outcome\",\n \"outdated\",\n \"outdoors\",\n \"outer\",\n \"outfield\",\n \"outfit\",\n \"outflank\",\n \"outgoing\",\n \"outgrow\",\n \"outhouse\",\n \"outing\",\n \"outlast\",\n \"outlet\",\n \"outline\",\n \"outlook\",\n \"outlying\",\n \"outmatch\",\n \"outmost\",\n \"outnumber\",\n \"outplayed\",\n \"outpost\",\n \"outpour\",\n \"output\",\n \"outrage\",\n \"outrank\",\n \"outreach\",\n \"outright\",\n \"outscore\",\n \"outsell\",\n \"outshine\",\n \"outshoot\",\n \"outsider\",\n \"outskirts\",\n \"outsmart\",\n \"outsource\",\n \"outspoken\",\n \"outtakes\",\n \"outthink\",\n \"outward\",\n \"outweigh\",\n \"outwit\",\n \"oval\",\n \"ovary\",\n \"oven\",\n \"overact\",\n \"overall\",\n \"overarch\",\n \"overbid\",\n \"overbill\",\n \"overbite\",\n \"overblown\",\n \"overboard\",\n \"overbook\",\n \"overbuilt\",\n \"overcast\",\n \"overcoat\",\n \"overcome\",\n \"overcook\",\n \"overcrowd\",\n \"overdraft\",\n \"overdrawn\",\n \"overdress\",\n \"overdrive\",\n \"overdue\",\n \"overeager\",\n \"overeater\",\n \"overexert\",\n \"overfed\",\n \"overfeed\",\n \"overfill\",\n \"overflow\",\n \"overfull\",\n \"overgrown\",\n \"overhand\",\n \"overhang\",\n \"overhaul\",\n \"overhead\",\n \"overhear\",\n \"overheat\",\n \"overhung\",\n \"overjoyed\",\n \"overkill\",\n \"overlabor\",\n \"overlaid\",\n \"overlap\",\n \"overlay\",\n \"overload\",\n \"overlook\",\n \"overlord\",\n \"overlying\",\n \"overnight\",\n \"overpass\",\n \"overpay\",\n \"overplant\",\n \"overplay\",\n \"overpower\",\n \"overprice\",\n \"overrate\",\n \"overreach\",\n \"overreact\",\n \"override\",\n \"overripe\",\n \"overrule\",\n \"overrun\",\n \"overshoot\",\n \"overshot\",\n \"oversight\",\n \"oversized\",\n \"oversleep\",\n \"oversold\",\n \"overspend\",\n \"overstate\",\n \"overstay\",\n \"overstep\",\n \"overstock\",\n \"overstuff\",\n \"oversweet\",\n \"overtake\",\n \"overthrow\",\n \"overtime\",\n \"overtly\",\n \"overtone\",\n \"overture\",\n \"overturn\",\n \"overuse\",\n \"overvalue\",\n \"overview\",\n \"overwrite\",\n \"owl\",\n \"oxford\",\n \"oxidant\",\n \"oxidation\",\n \"oxidize\",\n \"oxidizing\",\n \"oxygen\",\n \"oxymoron\",\n \"oyster\",\n \"ozone\",\n \"paced\",\n \"pacemaker\",\n \"pacific\",\n \"pacifier\",\n \"pacifism\",\n \"pacifist\",\n \"pacify\",\n \"padded\",\n \"padding\",\n \"paddle\",\n \"paddling\",\n \"padlock\",\n \"pagan\",\n \"pager\",\n \"paging\",\n \"pajamas\",\n \"palace\",\n \"palatable\",\n \"palm\",\n \"palpable\",\n \"palpitate\",\n \"paltry\",\n \"pampered\",\n \"pamperer\",\n \"pampers\",\n \"pamphlet\",\n \"panama\",\n \"pancake\",\n \"pancreas\",\n \"panda\",\n \"pandemic\",\n \"pang\",\n \"panhandle\",\n \"panic\",\n \"panning\",\n \"panorama\",\n \"panoramic\",\n \"panther\",\n \"pantomime\",\n \"pantry\",\n \"pants\",\n \"pantyhose\",\n \"paparazzi\",\n \"papaya\",\n \"paper\",\n \"paprika\",\n \"papyrus\",\n \"parabola\",\n \"parachute\",\n \"parade\",\n \"paradox\",\n \"paragraph\",\n \"parakeet\",\n \"paralegal\",\n \"paralyses\",\n \"paralysis\",\n \"paralyze\",\n \"paramedic\",\n \"parameter\",\n \"paramount\",\n \"parasail\",\n \"parasite\",\n \"parasitic\",\n \"parcel\",\n \"parched\",\n \"parchment\",\n \"pardon\",\n \"parish\",\n \"parka\",\n \"parking\",\n \"parkway\",\n \"parlor\",\n \"parmesan\",\n \"parole\",\n \"parrot\",\n \"parsley\",\n \"parsnip\",\n \"partake\",\n \"parted\",\n \"parting\",\n \"partition\",\n \"partly\",\n \"partner\",\n \"partridge\",\n \"party\",\n \"passable\",\n \"passably\",\n \"passage\",\n \"passcode\",\n \"passenger\",\n \"passerby\",\n \"passing\",\n \"passion\",\n \"passive\",\n \"passivism\",\n \"passover\",\n \"passport\",\n \"password\",\n \"pasta\",\n \"pasted\",\n \"pastel\",\n \"pastime\",\n \"pastor\",\n \"pastrami\",\n \"pasture\",\n \"pasty\",\n \"patchwork\",\n \"patchy\",\n \"paternal\",\n \"paternity\",\n \"path\",\n \"patience\",\n \"patient\",\n \"patio\",\n \"patriarch\",\n \"patriot\",\n \"patrol\",\n \"patronage\",\n \"patronize\",\n \"pauper\",\n \"pavement\",\n \"paver\",\n \"pavestone\",\n \"pavilion\",\n \"paving\",\n \"pawing\",\n \"payable\",\n \"payback\",\n \"paycheck\",\n \"payday\",\n \"payee\",\n \"payer\",\n \"paying\",\n \"payment\",\n \"payphone\",\n \"payroll\",\n \"pebble\",\n \"pebbly\",\n \"pecan\",\n \"pectin\",\n \"peculiar\",\n \"peddling\",\n \"pediatric\",\n \"pedicure\",\n \"pedigree\",\n \"pedometer\",\n \"pegboard\",\n \"pelican\",\n \"pellet\",\n \"pelt\",\n \"pelvis\",\n \"penalize\",\n \"penalty\",\n \"pencil\",\n \"pendant\",\n \"pending\",\n \"penholder\",\n \"penknife\",\n \"pennant\",\n \"penniless\",\n \"penny\",\n \"penpal\",\n \"pension\",\n \"pentagon\",\n \"pentagram\",\n \"pep\",\n \"perceive\",\n \"percent\",\n \"perch\",\n \"percolate\",\n \"perennial\",\n \"perfected\",\n \"perfectly\",\n \"perfume\",\n \"periscope\",\n \"perish\",\n \"perjurer\",\n \"perjury\",\n \"perkiness\",\n \"perky\",\n \"perm\",\n \"peroxide\",\n \"perpetual\",\n \"perplexed\",\n \"persecute\",\n \"persevere\",\n \"persuaded\",\n \"persuader\",\n \"pesky\",\n \"peso\",\n \"pessimism\",\n \"pessimist\",\n \"pester\",\n \"pesticide\",\n \"petal\",\n \"petite\",\n \"petition\",\n \"petri\",\n \"petroleum\",\n \"petted\",\n \"petticoat\",\n \"pettiness\",\n \"petty\",\n \"petunia\",\n \"phantom\",\n \"phobia\",\n \"phoenix\",\n \"phonebook\",\n \"phoney\",\n \"phonics\",\n \"phoniness\",\n \"phony\",\n \"phosphate\",\n \"photo\",\n \"phrase\",\n \"phrasing\",\n \"placard\",\n \"placate\",\n \"placidly\",\n \"plank\",\n \"planner\",\n \"plant\",\n \"plasma\",\n \"plaster\",\n \"plastic\",\n \"plated\",\n \"platform\",\n \"plating\",\n \"platinum\",\n \"platonic\",\n \"platter\",\n \"platypus\",\n \"plausible\",\n \"plausibly\",\n \"playable\",\n \"playback\",\n \"player\",\n \"playful\",\n \"playgroup\",\n \"playhouse\",\n \"playing\",\n \"playlist\",\n \"playmaker\",\n \"playmate\",\n \"playoff\",\n \"playpen\",\n \"playroom\",\n \"playset\",\n \"plaything\",\n \"playtime\",\n \"plaza\",\n \"pleading\",\n \"pleat\",\n \"pledge\",\n \"plentiful\",\n \"plenty\",\n \"plethora\",\n \"plexiglas\",\n \"pliable\",\n \"plod\",\n \"plop\",\n \"plot\",\n \"plow\",\n \"ploy\",\n \"pluck\",\n \"plug\",\n \"plunder\",\n \"plunging\",\n \"plural\",\n \"plus\",\n \"plutonium\",\n \"plywood\",\n \"poach\",\n \"pod\",\n \"poem\",\n \"poet\",\n \"pogo\",\n \"pointed\",\n \"pointer\",\n \"pointing\",\n \"pointless\",\n \"pointy\",\n \"poise\",\n \"poison\",\n \"poker\",\n \"poking\",\n \"polar\",\n \"police\",\n \"policy\",\n \"polio\",\n \"polish\",\n \"politely\",\n \"polka\",\n \"polo\",\n \"polyester\",\n \"polygon\",\n \"polygraph\",\n \"polymer\",\n \"poncho\",\n \"pond\",\n \"pony\",\n \"popcorn\",\n \"pope\",\n \"poplar\",\n \"popper\",\n \"poppy\",\n \"popsicle\",\n \"populace\",\n \"popular\",\n \"populate\",\n \"porcupine\",\n \"pork\",\n \"porous\",\n \"porridge\",\n \"portable\",\n \"portal\",\n \"portfolio\",\n \"porthole\",\n \"portion\",\n \"portly\",\n \"portside\",\n \"poser\",\n \"posh\",\n \"posing\",\n \"possible\",\n \"possibly\",\n \"possum\",\n \"postage\",\n \"postal\",\n \"postbox\",\n \"postcard\",\n \"posted\",\n \"poster\",\n \"posting\",\n \"postnasal\",\n \"posture\",\n \"postwar\",\n \"pouch\",\n \"pounce\",\n \"pouncing\",\n \"pound\",\n \"pouring\",\n \"pout\",\n \"powdered\",\n \"powdering\",\n \"powdery\",\n \"power\",\n \"powwow\",\n \"pox\",\n \"praising\",\n \"prance\",\n \"prancing\",\n \"pranker\",\n \"prankish\",\n \"prankster\",\n \"prayer\",\n \"praying\",\n \"preacher\",\n \"preaching\",\n \"preachy\",\n \"preamble\",\n \"precinct\",\n \"precise\",\n \"precision\",\n \"precook\",\n \"precut\",\n \"predator\",\n \"predefine\",\n \"predict\",\n \"preface\",\n \"prefix\",\n \"preflight\",\n \"preformed\",\n \"pregame\",\n \"pregnancy\",\n \"pregnant\",\n \"preheated\",\n \"prelaunch\",\n \"prelaw\",\n \"prelude\",\n \"premiere\",\n \"premises\",\n \"premium\",\n \"prenatal\",\n \"preoccupy\",\n \"preorder\",\n \"prepaid\",\n \"prepay\",\n \"preplan\",\n \"preppy\",\n \"preschool\",\n \"prescribe\",\n \"preseason\",\n \"preset\",\n \"preshow\",\n \"president\",\n \"presoak\",\n \"press\",\n \"presume\",\n \"presuming\",\n \"preteen\",\n \"pretended\",\n \"pretender\",\n \"pretense\",\n \"pretext\",\n \"pretty\",\n \"pretzel\",\n \"prevail\",\n \"prevalent\",\n \"prevent\",\n \"preview\",\n \"previous\",\n \"prewar\",\n \"prewashed\",\n \"prideful\",\n \"pried\",\n \"primal\",\n \"primarily\",\n \"primary\",\n \"primate\",\n \"primer\",\n \"primp\",\n \"princess\",\n \"print\",\n \"prior\",\n \"prism\",\n \"prison\",\n \"prissy\",\n \"pristine\",\n \"privacy\",\n \"private\",\n \"privatize\",\n \"prize\",\n \"proactive\",\n \"probable\",\n \"probably\",\n \"probation\",\n \"probe\",\n \"probing\",\n \"probiotic\",\n \"problem\",\n \"procedure\",\n \"process\",\n \"proclaim\",\n \"procreate\",\n \"procurer\",\n \"prodigal\",\n \"prodigy\",\n \"produce\",\n \"product\",\n \"profane\",\n \"profanity\",\n \"professed\",\n \"professor\",\n \"profile\",\n \"profound\",\n \"profusely\",\n \"progeny\",\n \"prognosis\",\n \"program\",\n \"progress\",\n \"projector\",\n \"prologue\",\n \"prolonged\",\n \"promenade\",\n \"prominent\",\n \"promoter\",\n \"promotion\",\n \"prompter\",\n \"promptly\",\n \"prone\",\n \"prong\",\n \"pronounce\",\n \"pronto\",\n \"proofing\",\n \"proofread\",\n \"proofs\",\n \"propeller\",\n \"properly\",\n \"property\",\n \"proponent\",\n \"proposal\",\n \"propose\",\n \"props\",\n \"prorate\",\n \"protector\",\n \"protegee\",\n \"proton\",\n \"prototype\",\n \"protozoan\",\n \"protract\",\n \"protrude\",\n \"proud\",\n \"provable\",\n \"proved\",\n \"proven\",\n \"provided\",\n \"provider\",\n \"providing\",\n \"province\",\n \"proving\",\n \"provoke\",\n \"provoking\",\n \"provolone\",\n \"prowess\",\n \"prowler\",\n \"prowling\",\n \"proximity\",\n \"proxy\",\n \"prozac\",\n \"prude\",\n \"prudishly\",\n \"prune\",\n \"pruning\",\n \"pry\",\n \"psychic\",\n \"public\",\n \"publisher\",\n \"pucker\",\n \"pueblo\",\n \"pug\",\n \"pull\",\n \"pulmonary\",\n \"pulp\",\n \"pulsate\",\n \"pulse\",\n \"pulverize\",\n \"puma\",\n \"pumice\",\n \"pummel\",\n \"punch\",\n \"punctual\",\n \"punctuate\",\n \"punctured\",\n \"pungent\",\n \"punisher\",\n \"punk\",\n \"pupil\",\n \"puppet\",\n \"puppy\",\n \"purchase\",\n \"pureblood\",\n \"purebred\",\n \"purely\",\n \"pureness\",\n \"purgatory\",\n \"purge\",\n \"purging\",\n \"purifier\",\n \"purify\",\n \"purist\",\n \"puritan\",\n \"purity\",\n \"purple\",\n \"purplish\",\n \"purposely\",\n \"purr\",\n \"purse\",\n \"pursuable\",\n \"pursuant\",\n \"pursuit\",\n \"purveyor\",\n \"pushcart\",\n \"pushchair\",\n \"pusher\",\n \"pushiness\",\n \"pushing\",\n \"pushover\",\n \"pushpin\",\n \"pushup\",\n \"pushy\",\n \"putdown\",\n \"putt\",\n \"puzzle\",\n \"puzzling\",\n \"pyramid\",\n \"pyromania\",\n \"python\",\n \"quack\",\n \"quadrant\",\n \"quail\",\n \"quaintly\",\n \"quake\",\n \"quaking\",\n \"qualified\",\n \"qualifier\",\n \"qualify\",\n \"quality\",\n \"qualm\",\n \"quantum\",\n \"quarrel\",\n \"quarry\",\n \"quartered\",\n \"quarterly\",\n \"quarters\",\n \"quartet\",\n \"quench\",\n \"query\",\n \"quicken\",\n \"quickly\",\n \"quickness\",\n \"quicksand\",\n \"quickstep\",\n \"quiet\",\n \"quill\",\n \"quilt\",\n \"quintet\",\n \"quintuple\",\n \"quirk\",\n \"quit\",\n \"quiver\",\n \"quizzical\",\n \"quotable\",\n \"quotation\",\n \"quote\",\n \"rabid\",\n \"race\",\n \"racing\",\n \"racism\",\n \"rack\",\n \"racoon\",\n \"radar\",\n \"radial\",\n \"radiance\",\n \"radiantly\",\n \"radiated\",\n \"radiation\",\n \"radiator\",\n \"radio\",\n \"radish\",\n \"raffle\",\n \"raft\",\n \"rage\",\n \"ragged\",\n \"raging\",\n \"ragweed\",\n \"raider\",\n \"railcar\",\n \"railing\",\n \"railroad\",\n \"railway\",\n \"raisin\",\n \"rake\",\n \"raking\",\n \"rally\",\n \"ramble\",\n \"rambling\",\n \"ramp\",\n \"ramrod\",\n \"ranch\",\n \"rancidity\",\n \"random\",\n \"ranged\",\n \"ranger\",\n \"ranging\",\n \"ranked\",\n \"ranking\",\n \"ransack\",\n \"ranting\",\n \"rants\",\n \"rare\",\n \"rarity\",\n \"rascal\",\n \"rash\",\n \"rasping\",\n \"ravage\",\n \"raven\",\n \"ravine\",\n \"raving\",\n \"ravioli\",\n \"ravishing\",\n \"reabsorb\",\n \"reach\",\n \"reacquire\",\n \"reaction\",\n \"reactive\",\n \"reactor\",\n \"reaffirm\",\n \"ream\",\n \"reanalyze\",\n \"reappear\",\n \"reapply\",\n \"reappoint\",\n \"reapprove\",\n \"rearrange\",\n \"rearview\",\n \"reason\",\n \"reassign\",\n \"reassure\",\n \"reattach\",\n \"reawake\",\n \"rebalance\",\n \"rebate\",\n \"rebel\",\n \"rebirth\",\n \"reboot\",\n \"reborn\",\n \"rebound\",\n \"rebuff\",\n \"rebuild\",\n \"rebuilt\",\n \"reburial\",\n \"rebuttal\",\n \"recall\",\n \"recant\",\n \"recapture\",\n \"recast\",\n \"recede\",\n \"recent\",\n \"recess\",\n \"recharger\",\n \"recipient\",\n \"recital\",\n \"recite\",\n \"reckless\",\n \"reclaim\",\n \"recliner\",\n \"reclining\",\n \"recluse\",\n \"reclusive\",\n \"recognize\",\n \"recoil\",\n \"recollect\",\n \"recolor\",\n \"reconcile\",\n \"reconfirm\",\n \"reconvene\",\n \"recopy\",\n \"record\",\n \"recount\",\n \"recoup\",\n \"recovery\",\n \"recreate\",\n \"rectal\",\n \"rectangle\",\n \"rectified\",\n \"rectify\",\n \"recycled\",\n \"recycler\",\n \"recycling\",\n \"reemerge\",\n \"reenact\",\n \"reenter\",\n \"reentry\",\n \"reexamine\",\n \"referable\",\n \"referee\",\n \"reference\",\n \"refill\",\n \"refinance\",\n \"refined\",\n \"refinery\",\n \"refining\",\n \"refinish\",\n \"reflected\",\n \"reflector\",\n \"reflex\",\n \"reflux\",\n \"refocus\",\n \"refold\",\n \"reforest\",\n \"reformat\",\n \"reformed\",\n \"reformer\",\n \"reformist\",\n \"refract\",\n \"refrain\",\n \"refreeze\",\n \"refresh\",\n \"refried\",\n \"refueling\",\n \"refund\",\n \"refurbish\",\n \"refurnish\",\n \"refusal\",\n \"refuse\",\n \"refusing\",\n \"refutable\",\n \"refute\",\n \"regain\",\n \"regalia\",\n \"regally\",\n \"reggae\",\n \"regime\",\n \"region\",\n \"register\",\n \"registrar\",\n \"registry\",\n \"regress\",\n \"regretful\",\n \"regroup\",\n \"regular\",\n \"regulate\",\n \"regulator\",\n \"rehab\",\n \"reheat\",\n \"rehire\",\n \"rehydrate\",\n \"reimburse\",\n \"reissue\",\n \"reiterate\",\n \"rejoice\",\n \"rejoicing\",\n \"rejoin\",\n \"rekindle\",\n \"relapse\",\n \"relapsing\",\n \"relatable\",\n \"related\",\n \"relation\",\n \"relative\",\n \"relax\",\n \"relay\",\n \"relearn\",\n \"release\",\n \"relenting\",\n \"reliable\",\n \"reliably\",\n \"reliance\",\n \"reliant\",\n \"relic\",\n \"relieve\",\n \"relieving\",\n \"relight\",\n \"relish\",\n \"relive\",\n \"reload\",\n \"relocate\",\n \"relock\",\n \"reluctant\",\n \"rely\",\n \"remake\",\n \"remark\",\n \"remarry\",\n \"rematch\",\n \"remedial\",\n \"remedy\",\n \"remember\",\n \"reminder\",\n \"remindful\",\n \"remission\",\n \"remix\",\n \"remnant\",\n \"remodeler\",\n \"remold\",\n \"remorse\",\n \"remote\",\n \"removable\",\n \"removal\",\n \"removed\",\n \"remover\",\n \"removing\",\n \"rename\",\n \"renderer\",\n \"rendering\",\n \"rendition\",\n \"renegade\",\n \"renewable\",\n \"renewably\",\n \"renewal\",\n \"renewed\",\n \"renounce\",\n \"renovate\",\n \"renovator\",\n \"rentable\",\n \"rental\",\n \"rented\",\n \"renter\",\n \"reoccupy\",\n \"reoccur\",\n \"reopen\",\n \"reorder\",\n \"repackage\",\n \"repacking\",\n \"repaint\",\n \"repair\",\n \"repave\",\n \"repaying\",\n \"repayment\",\n \"repeal\",\n \"repeated\",\n \"repeater\",\n \"repent\",\n \"rephrase\",\n \"replace\",\n \"replay\",\n \"replica\",\n \"reply\",\n \"reporter\",\n \"repose\",\n \"repossess\",\n \"repost\",\n \"repressed\",\n \"reprimand\",\n \"reprint\",\n \"reprise\",\n \"reproach\",\n \"reprocess\",\n \"reproduce\",\n \"reprogram\",\n \"reps\",\n \"reptile\",\n \"reptilian\",\n \"repugnant\",\n \"repulsion\",\n \"repulsive\",\n \"repurpose\",\n \"reputable\",\n \"reputably\",\n \"request\",\n \"require\",\n \"requisite\",\n \"reroute\",\n \"rerun\",\n \"resale\",\n \"resample\",\n \"rescuer\",\n \"reseal\",\n \"research\",\n \"reselect\",\n \"reseller\",\n \"resemble\",\n \"resend\",\n \"resent\",\n \"reset\",\n \"reshape\",\n \"reshoot\",\n \"reshuffle\",\n \"residence\",\n \"residency\",\n \"resident\",\n \"residual\",\n \"residue\",\n \"resigned\",\n \"resilient\",\n \"resistant\",\n \"resisting\",\n \"resize\",\n \"resolute\",\n \"resolved\",\n \"resonant\",\n \"resonate\",\n \"resort\",\n \"resource\",\n \"respect\",\n \"resubmit\",\n \"result\",\n \"resume\",\n \"resupply\",\n \"resurface\",\n \"resurrect\",\n \"retail\",\n \"retainer\",\n \"retaining\",\n \"retake\",\n \"retaliate\",\n \"retention\",\n \"rethink\",\n \"retinal\",\n \"retired\",\n \"retiree\",\n \"retiring\",\n \"retold\",\n \"retool\",\n \"retorted\",\n \"retouch\",\n \"retrace\",\n \"retract\",\n \"retrain\",\n \"retread\",\n \"retreat\",\n \"retrial\",\n \"retrieval\",\n \"retriever\",\n \"retry\",\n \"return\",\n \"retying\",\n \"retype\",\n \"reunion\",\n \"reunite\",\n \"reusable\",\n \"reuse\",\n \"reveal\",\n \"reveler\",\n \"revenge\",\n \"revenue\",\n \"reverb\",\n \"revered\",\n \"reverence\",\n \"reverend\",\n \"reversal\",\n \"reverse\",\n \"reversing\",\n \"reversion\",\n \"revert\",\n \"revisable\",\n \"revise\",\n \"revision\",\n \"revisit\",\n \"revivable\",\n \"revival\",\n \"reviver\",\n \"reviving\",\n \"revocable\",\n \"revoke\",\n \"revolt\",\n \"revolver\",\n \"revolving\",\n \"reward\",\n \"rewash\",\n \"rewind\",\n \"rewire\",\n \"reword\",\n \"rework\",\n \"rewrap\",\n \"rewrite\",\n \"rhyme\",\n \"ribbon\",\n \"ribcage\",\n \"rice\",\n \"riches\",\n \"richly\",\n \"richness\",\n \"rickety\",\n \"ricotta\",\n \"riddance\",\n \"ridden\",\n \"ride\",\n \"riding\",\n \"rifling\",\n \"rift\",\n \"rigging\",\n \"rigid\",\n \"rigor\",\n \"rimless\",\n \"rimmed\",\n \"rind\",\n \"rink\",\n \"rinse\",\n \"rinsing\",\n \"riot\",\n \"ripcord\",\n \"ripeness\",\n \"ripening\",\n \"ripping\",\n \"ripple\",\n \"rippling\",\n \"riptide\",\n \"rise\",\n \"rising\",\n \"risk\",\n \"risotto\",\n \"ritalin\",\n \"ritzy\",\n \"rival\",\n \"riverbank\",\n \"riverbed\",\n \"riverboat\",\n \"riverside\",\n \"riveter\",\n \"riveting\",\n \"roamer\",\n \"roaming\",\n \"roast\",\n \"robbing\",\n \"robe\",\n \"robin\",\n \"robotics\",\n \"robust\",\n \"rockband\",\n \"rocker\",\n \"rocket\",\n \"rockfish\",\n \"rockiness\",\n \"rocking\",\n \"rocklike\",\n \"rockslide\",\n \"rockstar\",\n \"rocky\",\n \"rogue\",\n \"roman\",\n \"romp\",\n \"rope\",\n \"roping\",\n \"roster\",\n \"rosy\",\n \"rotten\",\n \"rotting\",\n \"rotunda\",\n \"roulette\",\n \"rounding\",\n \"roundish\",\n \"roundness\",\n \"roundup\",\n \"roundworm\",\n \"routine\",\n \"routing\",\n \"rover\",\n \"roving\",\n \"royal\",\n \"rubbed\",\n \"rubber\",\n \"rubbing\",\n \"rubble\",\n \"rubdown\",\n \"ruby\",\n \"ruckus\",\n \"rudder\",\n \"rug\",\n \"ruined\",\n \"rule\",\n \"rumble\",\n \"rumbling\",\n \"rummage\",\n \"rumor\",\n \"runaround\",\n \"rundown\",\n \"runner\",\n \"running\",\n \"runny\",\n \"runt\",\n \"runway\",\n \"rupture\",\n \"rural\",\n \"ruse\",\n \"rush\",\n \"rust\",\n \"rut\",\n \"sabbath\",\n \"sabotage\",\n \"sacrament\",\n \"sacred\",\n \"sacrifice\",\n \"sadden\",\n \"saddlebag\",\n \"saddled\",\n \"saddling\",\n \"sadly\",\n \"sadness\",\n \"safari\",\n \"safeguard\",\n \"safehouse\",\n \"safely\",\n \"safeness\",\n \"saffron\",\n \"saga\",\n \"sage\",\n \"sagging\",\n \"saggy\",\n \"said\",\n \"saint\",\n \"sake\",\n \"salad\",\n \"salami\",\n \"salaried\",\n \"salary\",\n \"saline\",\n \"salon\",\n \"saloon\",\n \"salsa\",\n \"salt\",\n \"salutary\",\n \"salute\",\n \"salvage\",\n \"salvaging\",\n \"salvation\",\n \"same\",\n \"sample\",\n \"sampling\",\n \"sanction\",\n \"sanctity\",\n \"sanctuary\",\n \"sandal\",\n \"sandbag\",\n \"sandbank\",\n \"sandbar\",\n \"sandblast\",\n \"sandbox\",\n \"sanded\",\n \"sandfish\",\n \"sanding\",\n \"sandlot\",\n \"sandpaper\",\n \"sandpit\",\n \"sandstone\",\n \"sandstorm\",\n \"sandworm\",\n \"sandy\",\n \"sanitary\",\n \"sanitizer\",\n \"sank\",\n \"santa\",\n \"sapling\",\n \"sappiness\",\n \"sappy\",\n \"sarcasm\",\n \"sarcastic\",\n \"sardine\",\n \"sash\",\n \"sasquatch\",\n \"sassy\",\n \"satchel\",\n \"satiable\",\n \"satin\",\n \"satirical\",\n \"satisfied\",\n \"satisfy\",\n \"saturate\",\n \"saturday\",\n \"sauciness\",\n \"saucy\",\n \"sauna\",\n \"savage\",\n \"savanna\",\n \"saved\",\n \"savings\",\n \"savior\",\n \"savor\",\n \"saxophone\",\n \"say\",\n \"scabbed\",\n \"scabby\",\n \"scalded\",\n \"scalding\",\n \"scale\",\n \"scaling\",\n \"scallion\",\n \"scallop\",\n \"scalping\",\n \"scam\",\n \"scandal\",\n \"scanner\",\n \"scanning\",\n \"scant\",\n \"scapegoat\",\n \"scarce\",\n \"scarcity\",\n \"scarecrow\",\n \"scared\",\n \"scarf\",\n \"scarily\",\n \"scariness\",\n \"scarring\",\n \"scary\",\n \"scavenger\",\n \"scenic\",\n \"schedule\",\n \"schematic\",\n \"scheme\",\n \"scheming\",\n \"schilling\",\n \"schnapps\",\n \"scholar\",\n \"science\",\n \"scientist\",\n \"scion\",\n \"scoff\",\n \"scolding\",\n \"scone\",\n \"scoop\",\n \"scooter\",\n \"scope\",\n \"scorch\",\n \"scorebook\",\n \"scorecard\",\n \"scored\",\n \"scoreless\",\n \"scorer\",\n \"scoring\",\n \"scorn\",\n \"scorpion\",\n \"scotch\",\n \"scoundrel\",\n \"scoured\",\n \"scouring\",\n \"scouting\",\n \"scouts\",\n \"scowling\",\n \"scrabble\",\n \"scraggly\",\n \"scrambled\",\n \"scrambler\",\n \"scrap\",\n \"scratch\",\n \"scrawny\",\n \"screen\",\n \"scribble\",\n \"scribe\",\n \"scribing\",\n \"scrimmage\",\n \"script\",\n \"scroll\",\n \"scrooge\",\n \"scrounger\",\n \"scrubbed\",\n \"scrubber\",\n \"scruffy\",\n \"scrunch\",\n \"scrutiny\",\n \"scuba\",\n \"scuff\",\n \"sculptor\",\n \"sculpture\",\n \"scurvy\",\n \"scuttle\",\n \"secluded\",\n \"secluding\",\n \"seclusion\",\n \"second\",\n \"secrecy\",\n \"secret\",\n \"sectional\",\n \"sector\",\n \"secular\",\n \"securely\",\n \"security\",\n \"sedan\",\n \"sedate\",\n \"sedation\",\n \"sedative\",\n \"sediment\",\n \"seduce\",\n \"seducing\",\n \"segment\",\n \"seismic\",\n \"seizing\",\n \"seldom\",\n \"selected\",\n \"selection\",\n \"selective\",\n \"selector\",\n \"self\",\n \"seltzer\",\n \"semantic\",\n \"semester\",\n \"semicolon\",\n \"semifinal\",\n \"seminar\",\n \"semisoft\",\n \"semisweet\",\n \"senate\",\n \"senator\",\n \"send\",\n \"senior\",\n \"senorita\",\n \"sensation\",\n \"sensitive\",\n \"sensitize\",\n \"sensually\",\n \"sensuous\",\n \"sepia\",\n \"september\",\n \"septic\",\n \"septum\",\n \"sequel\",\n \"sequence\",\n \"sequester\",\n \"series\",\n \"sermon\",\n \"serotonin\",\n \"serpent\",\n \"serrated\",\n \"serve\",\n \"service\",\n \"serving\",\n \"sesame\",\n \"sessions\",\n \"setback\",\n \"setting\",\n \"settle\",\n \"settling\",\n \"setup\",\n \"sevenfold\",\n \"seventeen\",\n \"seventh\",\n \"seventy\",\n \"severity\",\n \"shabby\",\n \"shack\",\n \"shaded\",\n \"shadily\",\n \"shadiness\",\n \"shading\",\n \"shadow\",\n \"shady\",\n \"shaft\",\n \"shakable\",\n \"shakily\",\n \"shakiness\",\n \"shaking\",\n \"shaky\",\n \"shale\",\n \"shallot\",\n \"shallow\",\n \"shame\",\n \"shampoo\",\n \"shamrock\",\n \"shank\",\n \"shanty\",\n \"shape\",\n \"shaping\",\n \"share\",\n \"sharpener\",\n \"sharper\",\n \"sharpie\",\n \"sharply\",\n \"sharpness\",\n \"shawl\",\n \"sheath\",\n \"shed\",\n \"sheep\",\n \"sheet\",\n \"shelf\",\n \"shell\",\n \"shelter\",\n \"shelve\",\n \"shelving\",\n \"sherry\",\n \"shield\",\n \"shifter\",\n \"shifting\",\n \"shiftless\",\n \"shifty\",\n \"shimmer\",\n \"shimmy\",\n \"shindig\",\n \"shine\",\n \"shingle\",\n \"shininess\",\n \"shining\",\n \"shiny\",\n \"ship\",\n \"shirt\",\n \"shivering\",\n \"shock\",\n \"shone\",\n \"shoplift\",\n \"shopper\",\n \"shopping\",\n \"shoptalk\",\n \"shore\",\n \"shortage\",\n \"shortcake\",\n \"shortcut\",\n \"shorten\",\n \"shorter\",\n \"shorthand\",\n \"shortlist\",\n \"shortly\",\n \"shortness\",\n \"shorts\",\n \"shortwave\",\n \"shorty\",\n \"shout\",\n \"shove\",\n \"showbiz\",\n \"showcase\",\n \"showdown\",\n \"shower\",\n \"showgirl\",\n \"showing\",\n \"showman\",\n \"shown\",\n \"showoff\",\n \"showpiece\",\n \"showplace\",\n \"showroom\",\n \"showy\",\n \"shrank\",\n \"shrapnel\",\n \"shredder\",\n \"shredding\",\n \"shrewdly\",\n \"shriek\",\n \"shrill\",\n \"shrimp\",\n \"shrine\",\n \"shrink\",\n \"shrivel\",\n \"shrouded\",\n \"shrubbery\",\n \"shrubs\",\n \"shrug\",\n \"shrunk\",\n \"shucking\",\n \"shudder\",\n \"shuffle\",\n \"shuffling\",\n \"shun\",\n \"shush\",\n \"shut\",\n \"shy\",\n \"siamese\",\n \"siberian\",\n \"sibling\",\n \"siding\",\n \"sierra\",\n \"siesta\",\n \"sift\",\n \"sighing\",\n \"silenced\",\n \"silencer\",\n \"silent\",\n \"silica\",\n \"silicon\",\n \"silk\",\n \"silliness\",\n \"silly\",\n \"silo\",\n \"silt\",\n \"silver\",\n \"similarly\",\n \"simile\",\n \"simmering\",\n \"simple\",\n \"simplify\",\n \"simply\",\n \"sincere\",\n \"sincerity\",\n \"singer\",\n \"singing\",\n \"single\",\n \"singular\",\n \"sinister\",\n \"sinless\",\n \"sinner\",\n \"sinuous\",\n \"sip\",\n \"siren\",\n \"sister\",\n \"sitcom\",\n \"sitter\",\n \"sitting\",\n \"situated\",\n \"situation\",\n \"sixfold\",\n \"sixteen\",\n \"sixth\",\n \"sixties\",\n \"sixtieth\",\n \"sixtyfold\",\n \"sizable\",\n \"sizably\",\n \"size\",\n \"sizing\",\n \"sizzle\",\n \"sizzling\",\n \"skater\",\n \"skating\",\n \"skedaddle\",\n \"skeletal\",\n \"skeleton\",\n \"skeptic\",\n \"sketch\",\n \"skewed\",\n \"skewer\",\n \"skid\",\n \"skied\",\n \"skier\",\n \"skies\",\n \"skiing\",\n \"skilled\",\n \"skillet\",\n \"skillful\",\n \"skimmed\",\n \"skimmer\",\n \"skimming\",\n \"skimpily\",\n \"skincare\",\n \"skinhead\",\n \"skinless\",\n \"skinning\",\n \"skinny\",\n \"skintight\",\n \"skipper\",\n \"skipping\",\n \"skirmish\",\n \"skirt\",\n \"skittle\",\n \"skydiver\",\n \"skylight\",\n \"skyline\",\n \"skype\",\n \"skyrocket\",\n \"skyward\",\n \"slab\",\n \"slacked\",\n \"slacker\",\n \"slacking\",\n \"slackness\",\n \"slacks\",\n \"slain\",\n \"slam\",\n \"slander\",\n \"slang\",\n \"slapping\",\n \"slapstick\",\n \"slashed\",\n \"slashing\",\n \"slate\",\n \"slather\",\n \"slaw\",\n \"sled\",\n \"sleek\",\n \"sleep\",\n \"sleet\",\n \"sleeve\",\n \"slept\",\n \"sliceable\",\n \"sliced\",\n \"slicer\",\n \"slicing\",\n \"slick\",\n \"slider\",\n \"slideshow\",\n \"sliding\",\n \"slighted\",\n \"slighting\",\n \"slightly\",\n \"slimness\",\n \"slimy\",\n \"slinging\",\n \"slingshot\",\n \"slinky\",\n \"slip\",\n \"slit\",\n \"sliver\",\n \"slobbery\",\n \"slogan\",\n \"sloped\",\n \"sloping\",\n \"sloppily\",\n \"sloppy\",\n \"slot\",\n \"slouching\",\n \"slouchy\",\n \"sludge\",\n \"slug\",\n \"slum\",\n \"slurp\",\n \"slush\",\n \"sly\",\n \"small\",\n \"smartly\",\n \"smartness\",\n \"smasher\",\n \"smashing\",\n \"smashup\",\n \"smell\",\n \"smelting\",\n \"smile\",\n \"smilingly\",\n \"smirk\",\n \"smite\",\n \"smith\",\n \"smitten\",\n \"smock\",\n \"smog\",\n \"smoked\",\n \"smokeless\",\n \"smokiness\",\n \"smoking\",\n \"smoky\",\n \"smolder\",\n \"smooth\",\n \"smother\",\n \"smudge\",\n \"smudgy\",\n \"smuggler\",\n \"smuggling\",\n \"smugly\",\n \"smugness\",\n \"snack\",\n \"snagged\",\n \"snaking\",\n \"snap\",\n \"snare\",\n \"snarl\",\n \"snazzy\",\n \"sneak\",\n \"sneer\",\n \"sneeze\",\n \"sneezing\",\n \"snide\",\n \"sniff\",\n \"snippet\",\n \"snipping\",\n \"snitch\",\n \"snooper\",\n \"snooze\",\n \"snore\",\n \"snoring\",\n \"snorkel\",\n \"snort\",\n \"snout\",\n \"snowbird\",\n \"snowboard\",\n \"snowbound\",\n \"snowcap\",\n \"snowdrift\",\n \"snowdrop\",\n \"snowfall\",\n \"snowfield\",\n \"snowflake\",\n \"snowiness\",\n \"snowless\",\n \"snowman\",\n \"snowplow\",\n \"snowshoe\",\n \"snowstorm\",\n \"snowsuit\",\n \"snowy\",\n \"snub\",\n \"snuff\",\n \"snuggle\",\n \"snugly\",\n \"snugness\",\n \"speak\",\n \"spearfish\",\n \"spearhead\",\n \"spearman\",\n \"spearmint\",\n \"species\",\n \"specimen\",\n \"specked\",\n \"speckled\",\n \"specks\",\n \"spectacle\",\n \"spectator\",\n \"spectrum\",\n \"speculate\",\n \"speech\",\n \"speed\",\n \"spellbind\",\n \"speller\",\n \"spelling\",\n \"spendable\",\n \"spender\",\n \"spending\",\n \"spent\",\n \"spew\",\n \"sphere\",\n \"spherical\",\n \"sphinx\",\n \"spider\",\n \"spied\",\n \"spiffy\",\n \"spill\",\n \"spilt\",\n \"spinach\",\n \"spinal\",\n \"spindle\",\n \"spinner\",\n \"spinning\",\n \"spinout\",\n \"spinster\",\n \"spiny\",\n \"spiral\",\n \"spirited\",\n \"spiritism\",\n \"spirits\",\n \"spiritual\",\n \"splashed\",\n \"splashing\",\n \"splashy\",\n \"splatter\",\n \"spleen\",\n \"splendid\",\n \"splendor\",\n \"splice\",\n \"splicing\",\n \"splinter\",\n \"splotchy\",\n \"splurge\",\n \"spoilage\",\n \"spoiled\",\n \"spoiler\",\n \"spoiling\",\n \"spoils\",\n \"spoken\",\n \"spokesman\",\n \"sponge\",\n \"spongy\",\n \"sponsor\",\n \"spoof\",\n \"spookily\",\n \"spooky\",\n \"spool\",\n \"spoon\",\n \"spore\",\n \"sporting\",\n \"sports\",\n \"sporty\",\n \"spotless\",\n \"spotlight\",\n \"spotted\",\n \"spotter\",\n \"spotting\",\n \"spotty\",\n \"spousal\",\n \"spouse\",\n \"spout\",\n \"sprain\",\n \"sprang\",\n \"sprawl\",\n \"spray\",\n \"spree\",\n \"sprig\",\n \"spring\",\n \"sprinkled\",\n \"sprinkler\",\n \"sprint\",\n \"sprite\",\n \"sprout\",\n \"spruce\",\n \"sprung\",\n \"spry\",\n \"spud\",\n \"spur\",\n \"sputter\",\n \"spyglass\",\n \"squabble\",\n \"squad\",\n \"squall\",\n \"squander\",\n \"squash\",\n \"squatted\",\n \"squatter\",\n \"squatting\",\n \"squeak\",\n \"squealer\",\n \"squealing\",\n \"squeamish\",\n \"squeegee\",\n \"squeeze\",\n \"squeezing\",\n \"squid\",\n \"squiggle\",\n \"squiggly\",\n \"squint\",\n \"squire\",\n \"squirt\",\n \"squishier\",\n \"squishy\",\n \"stability\",\n \"stabilize\",\n \"stable\",\n \"stack\",\n \"stadium\",\n \"staff\",\n \"stage\",\n \"staging\",\n \"stagnant\",\n \"stagnate\",\n \"stainable\",\n \"stained\",\n \"staining\",\n \"stainless\",\n \"stalemate\",\n \"staleness\",\n \"stalling\",\n \"stallion\",\n \"stamina\",\n \"stammer\",\n \"stamp\",\n \"stand\",\n \"stank\",\n \"staple\",\n \"stapling\",\n \"starboard\",\n \"starch\",\n \"stardom\",\n \"stardust\",\n \"starfish\",\n \"stargazer\",\n \"staring\",\n \"stark\",\n \"starless\",\n \"starlet\",\n \"starlight\",\n \"starlit\",\n \"starring\",\n \"starry\",\n \"starship\",\n \"starter\",\n \"starting\",\n \"startle\",\n \"startling\",\n \"startup\",\n \"starved\",\n \"starving\",\n \"stash\",\n \"state\",\n \"static\",\n \"statistic\",\n \"statue\",\n \"stature\",\n \"status\",\n \"statute\",\n \"statutory\",\n \"staunch\",\n \"stays\",\n \"steadfast\",\n \"steadier\",\n \"steadily\",\n \"steadying\",\n \"steam\",\n \"steed\",\n \"steep\",\n \"steerable\",\n \"steering\",\n \"steersman\",\n \"stegosaur\",\n \"stellar\",\n \"stem\",\n \"stench\",\n \"stencil\",\n \"step\",\n \"stereo\",\n \"sterile\",\n \"sterility\",\n \"sterilize\",\n \"sterling\",\n \"sternness\",\n \"sternum\",\n \"stew\",\n \"stick\",\n \"stiffen\",\n \"stiffly\",\n \"stiffness\",\n \"stifle\",\n \"stifling\",\n \"stillness\",\n \"stilt\",\n \"stimulant\",\n \"stimulate\",\n \"stimuli\",\n \"stimulus\",\n \"stinger\",\n \"stingily\",\n \"stinging\",\n \"stingray\",\n \"stingy\",\n \"stinking\",\n \"stinky\",\n \"stipend\",\n \"stipulate\",\n \"stir\",\n \"stitch\",\n \"stock\",\n \"stoic\",\n \"stoke\",\n \"stole\",\n \"stomp\",\n \"stonewall\",\n \"stoneware\",\n \"stonework\",\n \"stoning\",\n \"stony\",\n \"stood\",\n \"stooge\",\n \"stool\",\n \"stoop\",\n \"stoplight\",\n \"stoppable\",\n \"stoppage\",\n \"stopped\",\n \"stopper\",\n \"stopping\",\n \"stopwatch\",\n \"storable\",\n \"storage\",\n \"storeroom\",\n \"storewide\",\n \"storm\",\n \"stout\",\n \"stove\",\n \"stowaway\",\n \"stowing\",\n \"straddle\",\n \"straggler\",\n \"strained\",\n \"strainer\",\n \"straining\",\n \"strangely\",\n \"stranger\",\n \"strangle\",\n \"strategic\",\n \"strategy\",\n \"stratus\",\n \"straw\",\n \"stray\",\n \"streak\",\n \"stream\",\n \"street\",\n \"strength\",\n \"strenuous\",\n \"strep\",\n \"stress\",\n \"stretch\",\n \"strewn\",\n \"stricken\",\n \"strict\",\n \"stride\",\n \"strife\",\n \"strike\",\n \"striking\",\n \"strive\",\n \"striving\",\n \"strobe\",\n \"strode\",\n \"stroller\",\n \"strongbox\",\n \"strongly\",\n \"strongman\",\n \"struck\",\n \"structure\",\n \"strudel\",\n \"struggle\",\n \"strum\",\n \"strung\",\n \"strut\",\n \"stubbed\",\n \"stubble\",\n \"stubbly\",\n \"stubborn\",\n \"stucco\",\n \"stuck\",\n \"student\",\n \"studied\",\n \"studio\",\n \"study\",\n \"stuffed\",\n \"stuffing\",\n \"stuffy\",\n \"stumble\",\n \"stumbling\",\n \"stump\",\n \"stung\",\n \"stunned\",\n \"stunner\",\n \"stunning\",\n \"stunt\",\n \"stupor\",\n \"sturdily\",\n \"sturdy\",\n \"styling\",\n \"stylishly\",\n \"stylist\",\n \"stylized\",\n \"stylus\",\n \"suave\",\n \"subarctic\",\n \"subatomic\",\n \"subdivide\",\n \"subdued\",\n \"subduing\",\n \"subfloor\",\n \"subgroup\",\n \"subheader\",\n \"subject\",\n \"sublease\",\n \"sublet\",\n \"sublevel\",\n \"sublime\",\n \"submarine\",\n \"submerge\",\n \"submersed\",\n \"submitter\",\n \"subpanel\",\n \"subpar\",\n \"subplot\",\n \"subprime\",\n \"subscribe\",\n \"subscript\",\n \"subsector\",\n \"subside\",\n \"subsiding\",\n \"subsidize\",\n \"subsidy\",\n \"subsoil\",\n \"subsonic\",\n \"substance\",\n \"subsystem\",\n \"subtext\",\n \"subtitle\",\n \"subtly\",\n \"subtotal\",\n \"subtract\",\n \"subtype\",\n \"suburb\",\n \"subway\",\n \"subwoofer\",\n \"subzero\",\n \"succulent\",\n \"such\",\n \"suction\",\n \"sudden\",\n \"sudoku\",\n \"suds\",\n \"sufferer\",\n \"suffering\",\n \"suffice\",\n \"suffix\",\n \"suffocate\",\n \"suffrage\",\n \"sugar\",\n \"suggest\",\n \"suing\",\n \"suitable\",\n \"suitably\",\n \"suitcase\",\n \"suitor\",\n \"sulfate\",\n \"sulfide\",\n \"sulfite\",\n \"sulfur\",\n \"sulk\",\n \"sullen\",\n \"sulphate\",\n \"sulphuric\",\n \"sultry\",\n \"superbowl\",\n \"superglue\",\n \"superhero\",\n \"superior\",\n \"superjet\",\n \"superman\",\n \"supermom\",\n \"supernova\",\n \"supervise\",\n \"supper\",\n \"supplier\",\n \"supply\",\n \"support\",\n \"supremacy\",\n \"supreme\",\n \"surcharge\",\n \"surely\",\n \"sureness\",\n \"surface\",\n \"surfacing\",\n \"surfboard\",\n \"surfer\",\n \"surgery\",\n \"surgical\",\n \"surging\",\n \"surname\",\n \"surpass\",\n \"surplus\",\n \"surprise\",\n \"surreal\",\n \"surrender\",\n \"surrogate\",\n \"surround\",\n \"survey\",\n \"survival\",\n \"survive\",\n \"surviving\",\n \"survivor\",\n \"sushi\",\n \"suspect\",\n \"suspend\",\n \"suspense\",\n \"sustained\",\n \"sustainer\",\n \"swab\",\n \"swaddling\",\n \"swagger\",\n \"swampland\",\n \"swan\",\n \"swapping\",\n \"swarm\",\n \"sway\",\n \"swear\",\n \"sweat\",\n \"sweep\",\n \"swell\",\n \"swept\",\n \"swerve\",\n \"swifter\",\n \"swiftly\",\n \"swiftness\",\n \"swimmable\",\n \"swimmer\",\n \"swimming\",\n \"swimsuit\",\n \"swimwear\",\n \"swinger\",\n \"swinging\",\n \"swipe\",\n \"swirl\",\n \"switch\",\n \"swivel\",\n \"swizzle\",\n \"swooned\",\n \"swoop\",\n \"swoosh\",\n \"swore\",\n \"sworn\",\n \"swung\",\n \"sycamore\",\n \"sympathy\",\n \"symphonic\",\n \"symphony\",\n \"symptom\",\n \"synapse\",\n \"syndrome\",\n \"synergy\",\n \"synopses\",\n \"synopsis\",\n \"synthesis\",\n \"synthetic\",\n \"syrup\",\n \"system\",\n \"t-shirt\",\n \"tabasco\",\n \"tabby\",\n \"tableful\",\n \"tables\",\n \"tablet\",\n \"tableware\",\n \"tabloid\",\n \"tackiness\",\n \"tacking\",\n \"tackle\",\n \"tackling\",\n \"tacky\",\n \"taco\",\n \"tactful\",\n \"tactical\",\n \"tactics\",\n \"tactile\",\n \"tactless\",\n \"tadpole\",\n \"taekwondo\",\n \"tag\",\n \"tainted\",\n \"take\",\n \"taking\",\n \"talcum\",\n \"talisman\",\n \"tall\",\n \"talon\",\n \"tamale\",\n \"tameness\",\n \"tamer\",\n \"tamper\",\n \"tank\",\n \"tanned\",\n \"tannery\",\n \"tanning\",\n \"tantrum\",\n \"tapeless\",\n \"tapered\",\n \"tapering\",\n \"tapestry\",\n \"tapioca\",\n \"tapping\",\n \"taps\",\n \"tarantula\",\n \"target\",\n \"tarmac\",\n \"tarnish\",\n \"tarot\",\n \"tartar\",\n \"tartly\",\n \"tartness\",\n \"task\",\n \"tassel\",\n \"taste\",\n \"tastiness\",\n \"tasting\",\n \"tasty\",\n \"tattered\",\n \"tattle\",\n \"tattling\",\n \"tattoo\",\n \"taunt\",\n \"tavern\",\n \"thank\",\n \"that\",\n \"thaw\",\n \"theater\",\n \"theatrics\",\n \"thee\",\n \"theft\",\n \"theme\",\n \"theology\",\n \"theorize\",\n \"thermal\",\n \"thermos\",\n \"thesaurus\",\n \"these\",\n \"thesis\",\n \"thespian\",\n \"thicken\",\n \"thicket\",\n \"thickness\",\n \"thieving\",\n \"thievish\",\n \"thigh\",\n \"thimble\",\n \"thing\",\n \"think\",\n \"thinly\",\n \"thinner\",\n \"thinness\",\n \"thinning\",\n \"thirstily\",\n \"thirsting\",\n \"thirsty\",\n \"thirteen\",\n \"thirty\",\n \"thong\",\n \"thorn\",\n \"those\",\n \"thousand\",\n \"thrash\",\n \"thread\",\n \"threaten\",\n \"threefold\",\n \"thrift\",\n \"thrill\",\n \"thrive\",\n \"thriving\",\n \"throat\",\n \"throbbing\",\n \"throng\",\n \"throttle\",\n \"throwaway\",\n \"throwback\",\n \"thrower\",\n \"throwing\",\n \"thud\",\n \"thumb\",\n \"thumping\",\n \"thursday\",\n \"thus\",\n \"thwarting\",\n \"thyself\",\n \"tiara\",\n \"tibia\",\n \"tidal\",\n \"tidbit\",\n \"tidiness\",\n \"tidings\",\n \"tidy\",\n \"tiger\",\n \"tighten\",\n \"tightly\",\n \"tightness\",\n \"tightrope\",\n \"tightwad\",\n \"tigress\",\n \"tile\",\n \"tiling\",\n \"till\",\n \"tilt\",\n \"timid\",\n \"timing\",\n \"timothy\",\n \"tinderbox\",\n \"tinfoil\",\n \"tingle\",\n \"tingling\",\n \"tingly\",\n \"tinker\",\n \"tinkling\",\n \"tinsel\",\n \"tinsmith\",\n \"tint\",\n \"tinwork\",\n \"tiny\",\n \"tipoff\",\n \"tipped\",\n \"tipper\",\n \"tipping\",\n \"tiptoeing\",\n \"tiptop\",\n \"tiring\",\n \"tissue\",\n \"trace\",\n \"tracing\",\n \"track\",\n \"traction\",\n \"tractor\",\n \"trade\",\n \"trading\",\n \"tradition\",\n \"traffic\",\n \"tragedy\",\n \"trailing\",\n \"trailside\",\n \"train\",\n \"traitor\",\n \"trance\",\n \"tranquil\",\n \"transfer\",\n \"transform\",\n \"translate\",\n \"transpire\",\n \"transport\",\n \"transpose\",\n \"trapdoor\",\n \"trapeze\",\n \"trapezoid\",\n \"trapped\",\n \"trapper\",\n \"trapping\",\n \"traps\",\n \"trash\",\n \"travel\",\n \"traverse\",\n \"travesty\",\n \"tray\",\n \"treachery\",\n \"treading\",\n \"treadmill\",\n \"treason\",\n \"treat\",\n \"treble\",\n \"tree\",\n \"trekker\",\n \"tremble\",\n \"trembling\",\n \"tremor\",\n \"trench\",\n \"trend\",\n \"trespass\",\n \"triage\",\n \"trial\",\n \"triangle\",\n \"tribesman\",\n \"tribunal\",\n \"tribune\",\n \"tributary\",\n \"tribute\",\n \"triceps\",\n \"trickery\",\n \"trickily\",\n \"tricking\",\n \"trickle\",\n \"trickster\",\n \"tricky\",\n \"tricolor\",\n \"tricycle\",\n \"trident\",\n \"tried\",\n \"trifle\",\n \"trifocals\",\n \"trillion\",\n \"trilogy\",\n \"trimester\",\n \"trimmer\",\n \"trimming\",\n \"trimness\",\n \"trinity\",\n \"trio\",\n \"tripod\",\n \"tripping\",\n \"triumph\",\n \"trivial\",\n \"trodden\",\n \"trolling\",\n \"trombone\",\n \"trophy\",\n \"tropical\",\n \"tropics\",\n \"trouble\",\n \"troubling\",\n \"trough\",\n \"trousers\",\n \"trout\",\n \"trowel\",\n \"truce\",\n \"truck\",\n \"truffle\",\n \"trump\",\n \"trunks\",\n \"trustable\",\n \"trustee\",\n \"trustful\",\n \"trusting\",\n \"trustless\",\n \"truth\",\n \"try\",\n \"tubby\",\n \"tubeless\",\n \"tubular\",\n \"tucking\",\n \"tuesday\",\n \"tug\",\n \"tuition\",\n \"tulip\",\n \"tumble\",\n \"tumbling\",\n \"tummy\",\n \"turban\",\n \"turbine\",\n \"turbofan\",\n \"turbojet\",\n \"turbulent\",\n \"turf\",\n \"turkey\",\n \"turmoil\",\n \"turret\",\n \"turtle\",\n \"tusk\",\n \"tutor\",\n \"tutu\",\n \"tux\",\n \"tweak\",\n \"tweed\",\n \"tweet\",\n \"tweezers\",\n \"twelve\",\n \"twentieth\",\n \"twenty\",\n \"twerp\",\n \"twice\",\n \"twiddle\",\n \"twiddling\",\n \"twig\",\n \"twilight\",\n \"twine\",\n \"twins\",\n \"twirl\",\n \"twistable\",\n \"twisted\",\n \"twister\",\n \"twisting\",\n \"twisty\",\n \"twitch\",\n \"twitter\",\n \"tycoon\",\n \"tying\",\n \"tyke\",\n \"udder\",\n \"ultimate\",\n \"ultimatum\",\n \"ultra\",\n \"umbilical\",\n \"umbrella\",\n \"umpire\",\n \"unabashed\",\n \"unable\",\n \"unadorned\",\n \"unadvised\",\n \"unafraid\",\n \"unaired\",\n \"unaligned\",\n \"unaltered\",\n \"unarmored\",\n \"unashamed\",\n \"unaudited\",\n \"unawake\",\n \"unaware\",\n \"unbaked\",\n \"unbalance\",\n \"unbeaten\",\n \"unbend\",\n \"unbent\",\n \"unbiased\",\n \"unbitten\",\n \"unblended\",\n \"unblessed\",\n \"unblock\",\n \"unbolted\",\n \"unbounded\",\n \"unboxed\",\n \"unbraided\",\n \"unbridle\",\n \"unbroken\",\n \"unbuckled\",\n \"unbundle\",\n \"unburned\",\n \"unbutton\",\n \"uncanny\",\n \"uncapped\",\n \"uncaring\",\n \"uncertain\",\n \"unchain\",\n \"unchanged\",\n \"uncharted\",\n \"uncheck\",\n \"uncivil\",\n \"unclad\",\n \"unclaimed\",\n \"unclamped\",\n \"unclasp\",\n \"uncle\",\n \"unclip\",\n \"uncloak\",\n \"unclog\",\n \"unclothed\",\n \"uncoated\",\n \"uncoiled\",\n \"uncolored\",\n \"uncombed\",\n \"uncommon\",\n \"uncooked\",\n \"uncork\",\n \"uncorrupt\",\n \"uncounted\",\n \"uncouple\",\n \"uncouth\",\n \"uncover\",\n \"uncross\",\n \"uncrown\",\n \"uncrushed\",\n \"uncured\",\n \"uncurious\",\n \"uncurled\",\n \"uncut\",\n \"undamaged\",\n \"undated\",\n \"undaunted\",\n \"undead\",\n \"undecided\",\n \"undefined\",\n \"underage\",\n \"underarm\",\n \"undercoat\",\n \"undercook\",\n \"undercut\",\n \"underdog\",\n \"underdone\",\n \"underfed\",\n \"underfeed\",\n \"underfoot\",\n \"undergo\",\n \"undergrad\",\n \"underhand\",\n \"underline\",\n \"underling\",\n \"undermine\",\n \"undermost\",\n \"underpaid\",\n \"underpass\",\n \"underpay\",\n \"underrate\",\n \"undertake\",\n \"undertone\",\n \"undertook\",\n \"undertow\",\n \"underuse\",\n \"underwear\",\n \"underwent\",\n \"underwire\",\n \"undesired\",\n \"undiluted\",\n \"undivided\",\n \"undocked\",\n \"undoing\",\n \"undone\",\n \"undrafted\",\n \"undress\",\n \"undrilled\",\n \"undusted\",\n \"undying\",\n \"unearned\",\n \"unearth\",\n \"unease\",\n \"uneasily\",\n \"uneasy\",\n \"uneatable\",\n \"uneaten\",\n \"unedited\",\n \"unelected\",\n \"unending\",\n \"unengaged\",\n \"unenvied\",\n \"unequal\",\n \"unethical\",\n \"uneven\",\n \"unexpired\",\n \"unexposed\",\n \"unfailing\",\n \"unfair\",\n \"unfasten\",\n \"unfazed\",\n \"unfeeling\",\n \"unfiled\",\n \"unfilled\",\n \"unfitted\",\n \"unfitting\",\n \"unfixable\",\n \"unfixed\",\n \"unflawed\",\n \"unfocused\",\n \"unfold\",\n \"unfounded\",\n \"unframed\",\n \"unfreeze\",\n \"unfrosted\",\n \"unfrozen\",\n \"unfunded\",\n \"unglazed\",\n \"ungloved\",\n \"unglue\",\n \"ungodly\",\n \"ungraded\",\n \"ungreased\",\n \"unguarded\",\n \"unguided\",\n \"unhappily\",\n \"unhappy\",\n \"unharmed\",\n \"unhealthy\",\n \"unheard\",\n \"unhearing\",\n \"unheated\",\n \"unhelpful\",\n \"unhidden\",\n \"unhinge\",\n \"unhitched\",\n \"unholy\",\n \"unhook\",\n \"unicorn\",\n \"unicycle\",\n \"unified\",\n \"unifier\",\n \"uniformed\",\n \"uniformly\",\n \"unify\",\n \"unimpeded\",\n \"uninjured\",\n \"uninstall\",\n \"uninsured\",\n \"uninvited\",\n \"union\",\n \"uniquely\",\n \"unisexual\",\n \"unison\",\n \"unissued\",\n \"unit\",\n \"universal\",\n \"universe\",\n \"unjustly\",\n \"unkempt\",\n \"unkind\",\n \"unknotted\",\n \"unknowing\",\n \"unknown\",\n \"unlaced\",\n \"unlatch\",\n \"unlawful\",\n \"unleaded\",\n \"unlearned\",\n \"unleash\",\n \"unless\",\n \"unleveled\",\n \"unlighted\",\n \"unlikable\",\n \"unlimited\",\n \"unlined\",\n \"unlinked\",\n \"unlisted\",\n \"unlit\",\n \"unlivable\",\n \"unloaded\",\n \"unloader\",\n \"unlocked\",\n \"unlocking\",\n \"unlovable\",\n \"unloved\",\n \"unlovely\",\n \"unloving\",\n \"unluckily\",\n \"unlucky\",\n \"unmade\",\n \"unmanaged\",\n \"unmanned\",\n \"unmapped\",\n \"unmarked\",\n \"unmasked\",\n \"unmasking\",\n \"unmatched\",\n \"unmindful\",\n \"unmixable\",\n \"unmixed\",\n \"unmolded\",\n \"unmoral\",\n \"unmovable\",\n \"unmoved\",\n \"unmoving\",\n \"unnamable\",\n \"unnamed\",\n \"unnatural\",\n \"unneeded\",\n \"unnerve\",\n \"unnerving\",\n \"unnoticed\",\n \"unopened\",\n \"unopposed\",\n \"unpack\",\n \"unpadded\",\n \"unpaid\",\n \"unpainted\",\n \"unpaired\",\n \"unpaved\",\n \"unpeeled\",\n \"unpicked\",\n \"unpiloted\",\n \"unpinned\",\n \"unplanned\",\n \"unplanted\",\n \"unpleased\",\n \"unpledged\",\n \"unplowed\",\n \"unplug\",\n \"unpopular\",\n \"unproven\",\n \"unquote\",\n \"unranked\",\n \"unrated\",\n \"unraveled\",\n \"unreached\",\n \"unread\",\n \"unreal\",\n \"unreeling\",\n \"unrefined\",\n \"unrelated\",\n \"unrented\",\n \"unrest\",\n \"unretired\",\n \"unrevised\",\n \"unrigged\",\n \"unripe\",\n \"unrivaled\",\n \"unroasted\",\n \"unrobed\",\n \"unroll\",\n \"unruffled\",\n \"unruly\",\n \"unrushed\",\n \"unsaddle\",\n \"unsafe\",\n \"unsaid\",\n \"unsalted\",\n \"unsaved\",\n \"unsavory\",\n \"unscathed\",\n \"unscented\",\n \"unscrew\",\n \"unsealed\",\n \"unseated\",\n \"unsecured\",\n \"unseeing\",\n \"unseemly\",\n \"unseen\",\n \"unselect\",\n \"unselfish\",\n \"unsent\",\n \"unsettled\",\n \"unshackle\",\n \"unshaken\",\n \"unshaved\",\n \"unshaven\",\n \"unsheathe\",\n \"unshipped\",\n \"unsightly\",\n \"unsigned\",\n \"unskilled\",\n \"unsliced\",\n \"unsmooth\",\n \"unsnap\",\n \"unsocial\",\n \"unsoiled\",\n \"unsold\",\n \"unsolved\",\n \"unsorted\",\n \"unspoiled\",\n \"unspoken\",\n \"unstable\",\n \"unstaffed\",\n \"unstamped\",\n \"unsteady\",\n \"unsterile\",\n \"unstirred\",\n \"unstitch\",\n \"unstopped\",\n \"unstuck\",\n \"unstuffed\",\n \"unstylish\",\n \"unsubtle\",\n \"unsubtly\",\n \"unsuited\",\n \"unsure\",\n \"unsworn\",\n \"untagged\",\n \"untainted\",\n \"untaken\",\n \"untamed\",\n \"untangled\",\n \"untapped\",\n \"untaxed\",\n \"unthawed\",\n \"unthread\",\n \"untidy\",\n \"untie\",\n \"until\",\n \"untimed\",\n \"untimely\",\n \"untitled\",\n \"untoasted\",\n \"untold\",\n \"untouched\",\n \"untracked\",\n \"untrained\",\n \"untreated\",\n \"untried\",\n \"untrimmed\",\n \"untrue\",\n \"untruth\",\n \"unturned\",\n \"untwist\",\n \"untying\",\n \"unusable\",\n \"unused\",\n \"unusual\",\n \"unvalued\",\n \"unvaried\",\n \"unvarying\",\n \"unveiled\",\n \"unveiling\",\n \"unvented\",\n \"unviable\",\n \"unvisited\",\n \"unvocal\",\n \"unwanted\",\n \"unwarlike\",\n \"unwary\",\n \"unwashed\",\n \"unwatched\",\n \"unweave\",\n \"unwed\",\n \"unwelcome\",\n \"unwell\",\n \"unwieldy\",\n \"unwilling\",\n \"unwind\",\n \"unwired\",\n \"unwitting\",\n \"unwomanly\",\n \"unworldly\",\n \"unworn\",\n \"unworried\",\n \"unworthy\",\n \"unwound\",\n \"unwoven\",\n \"unwrapped\",\n \"unwritten\",\n \"unzip\",\n \"upbeat\",\n \"upchuck\",\n \"upcoming\",\n \"upcountry\",\n \"update\",\n \"upfront\",\n \"upgrade\",\n \"upheaval\",\n \"upheld\",\n \"uphill\",\n \"uphold\",\n \"uplifted\",\n \"uplifting\",\n \"upload\",\n \"upon\",\n \"upper\",\n \"upright\",\n \"uprising\",\n \"upriver\",\n \"uproar\",\n \"uproot\",\n \"upscale\",\n \"upside\",\n \"upstage\",\n \"upstairs\",\n \"upstart\",\n \"upstate\",\n \"upstream\",\n \"upstroke\",\n \"upswing\",\n \"uptake\",\n \"uptight\",\n \"uptown\",\n \"upturned\",\n \"upward\",\n \"upwind\",\n \"uranium\",\n \"urban\",\n \"urchin\",\n \"urethane\",\n \"urgency\",\n \"urgent\",\n \"urging\",\n \"urologist\",\n \"urology\",\n \"usable\",\n \"usage\",\n \"useable\",\n \"used\",\n \"uselessly\",\n \"user\",\n \"usher\",\n \"usual\",\n \"utensil\",\n \"utility\",\n \"utilize\",\n \"utmost\",\n \"utopia\",\n \"utter\",\n \"vacancy\",\n \"vacant\",\n \"vacate\",\n \"vacation\",\n \"vagabond\",\n \"vagrancy\",\n \"vagrantly\",\n \"vaguely\",\n \"vagueness\",\n \"valiant\",\n \"valid\",\n \"valium\",\n \"valley\",\n \"valuables\",\n \"value\",\n \"vanilla\",\n \"vanish\",\n \"vanity\",\n \"vanquish\",\n \"vantage\",\n \"vaporizer\",\n \"variable\",\n \"variably\",\n \"varied\",\n \"variety\",\n \"various\",\n \"varmint\",\n \"varnish\",\n \"varsity\",\n \"varying\",\n \"vascular\",\n \"vaseline\",\n \"vastly\",\n \"vastness\",\n \"veal\",\n \"vegan\",\n \"veggie\",\n \"vehicular\",\n \"velcro\",\n \"velocity\",\n \"velvet\",\n \"vendetta\",\n \"vending\",\n \"vendor\",\n \"veneering\",\n \"vengeful\",\n \"venomous\",\n \"ventricle\",\n \"venture\",\n \"venue\",\n \"venus\",\n \"verbalize\",\n \"verbally\",\n \"verbose\",\n \"verdict\",\n \"verify\",\n \"verse\",\n \"version\",\n \"versus\",\n \"vertebrae\",\n \"vertical\",\n \"vertigo\",\n \"very\",\n \"vessel\",\n \"vest\",\n \"veteran\",\n \"veto\",\n \"vexingly\",\n \"viability\",\n \"viable\",\n \"vibes\",\n \"vice\",\n \"vicinity\",\n \"victory\",\n \"video\",\n \"viewable\",\n \"viewer\",\n \"viewing\",\n \"viewless\",\n \"viewpoint\",\n \"vigorous\",\n \"village\",\n \"villain\",\n \"vindicate\",\n \"vineyard\",\n \"vintage\",\n \"violate\",\n \"violation\",\n \"violator\",\n \"violet\",\n \"violin\",\n \"viper\",\n \"viral\",\n \"virtual\",\n \"virtuous\",\n \"virus\",\n \"visa\",\n \"viscosity\",\n \"viscous\",\n \"viselike\",\n \"visible\",\n \"visibly\",\n \"vision\",\n \"visiting\",\n \"visitor\",\n \"visor\",\n \"vista\",\n \"vitality\",\n \"vitalize\",\n \"vitally\",\n \"vitamins\",\n \"vivacious\",\n \"vividly\",\n \"vividness\",\n \"vixen\",\n \"vocalist\",\n \"vocalize\",\n \"vocally\",\n \"vocation\",\n \"voice\",\n \"voicing\",\n \"void\",\n \"volatile\",\n \"volley\",\n \"voltage\",\n \"volumes\",\n \"voter\",\n \"voting\",\n \"voucher\",\n \"vowed\",\n \"vowel\",\n \"voyage\",\n \"wackiness\",\n \"wad\",\n \"wafer\",\n \"waffle\",\n \"waged\",\n \"wager\",\n \"wages\",\n \"waggle\",\n \"wagon\",\n \"wake\",\n \"waking\",\n \"walk\",\n \"walmart\",\n \"walnut\",\n \"walrus\",\n \"waltz\",\n \"wand\",\n \"wannabe\",\n \"wanted\",\n \"wanting\",\n \"wasabi\",\n \"washable\",\n \"washbasin\",\n \"washboard\",\n \"washbowl\",\n \"washcloth\",\n \"washday\",\n \"washed\",\n \"washer\",\n \"washhouse\",\n \"washing\",\n \"washout\",\n \"washroom\",\n \"washstand\",\n \"washtub\",\n \"wasp\",\n \"wasting\",\n \"watch\",\n \"water\",\n \"waviness\",\n \"waving\",\n \"wavy\",\n \"whacking\",\n \"whacky\",\n \"wham\",\n \"wharf\",\n \"wheat\",\n \"whenever\",\n \"whiff\",\n \"whimsical\",\n \"whinny\",\n \"whiny\",\n \"whisking\",\n \"whoever\",\n \"whole\",\n \"whomever\",\n \"whoopee\",\n \"whooping\",\n \"whoops\",\n \"why\",\n \"wick\",\n \"widely\",\n \"widen\",\n \"widget\",\n \"widow\",\n \"width\",\n \"wieldable\",\n \"wielder\",\n \"wife\",\n \"wifi\",\n \"wikipedia\",\n \"wildcard\",\n \"wildcat\",\n \"wilder\",\n \"wildfire\",\n \"wildfowl\",\n \"wildland\",\n \"wildlife\",\n \"wildly\",\n \"wildness\",\n \"willed\",\n \"willfully\",\n \"willing\",\n \"willow\",\n \"willpower\",\n \"wilt\",\n \"wimp\",\n \"wince\",\n \"wincing\",\n \"wind\",\n \"wing\",\n \"winking\",\n \"winner\",\n \"winnings\",\n \"winter\",\n \"wipe\",\n \"wired\",\n \"wireless\",\n \"wiring\",\n \"wiry\",\n \"wisdom\",\n \"wise\",\n \"wish\",\n \"wisplike\",\n \"wispy\",\n \"wistful\",\n \"wizard\",\n \"wobble\",\n \"wobbling\",\n \"wobbly\",\n \"wok\",\n \"wolf\",\n \"wolverine\",\n \"womanhood\",\n \"womankind\",\n \"womanless\",\n \"womanlike\",\n \"womanly\",\n \"womb\",\n \"woof\",\n \"wooing\",\n \"wool\",\n \"woozy\",\n \"word\",\n \"work\",\n \"worried\",\n \"worrier\",\n \"worrisome\",\n \"worry\",\n \"worsening\",\n \"worshiper\",\n \"worst\",\n \"wound\",\n \"woven\",\n \"wow\",\n \"wrangle\",\n \"wrath\",\n \"wreath\",\n \"wreckage\",\n \"wrecker\",\n \"wrecking\",\n \"wrench\",\n \"wriggle\",\n \"wriggly\",\n \"wrinkle\",\n \"wrinkly\",\n \"wrist\",\n \"writing\",\n \"written\",\n \"wrongdoer\",\n \"wronged\",\n \"wrongful\",\n \"wrongly\",\n \"wrongness\",\n \"wrought\",\n \"xbox\",\n \"xerox\",\n \"yahoo\",\n \"yam\",\n \"yanking\",\n \"yapping\",\n \"yard\",\n \"yarn\",\n \"yeah\",\n \"yearbook\",\n \"yearling\",\n \"yearly\",\n \"yearning\",\n \"yeast\",\n \"yelling\",\n \"yelp\",\n \"yen\",\n \"yesterday\",\n \"yiddish\",\n \"yield\",\n \"yin\",\n \"yippee\",\n \"yo-yo\",\n \"yodel\",\n \"yoga\",\n \"yogurt\",\n \"yonder\",\n \"yoyo\",\n \"yummy\",\n \"zap\",\n \"zealous\",\n \"zebra\",\n \"zen\",\n \"zeppelin\",\n \"zero\",\n \"zestfully\",\n \"zesty\",\n \"zigzagged\",\n \"zipfile\",\n \"zipping\",\n \"zippy\",\n \"zips\",\n \"zit\",\n \"zodiac\",\n \"zombie\",\n \"zone\",\n \"zoning\",\n \"zookeeper\",\n \"zoologist\",\n \"zoology\",\n \"zoom\",\n];\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class BillingSyncConfigApi extends BaseResponse {\n billingSyncKey: string;\n\n constructor(data: any) {\n super(data);\n if (data == null) {\n return;\n }\n this.billingSyncKey = this.getResponseProperty(\"BillingSyncKey\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty(\"CardholderName\");\n this.brand = this.getResponseProperty(\"Brand\");\n this.number = this.getResponseProperty(\"Number\");\n this.expMonth = this.getResponseProperty(\"ExpMonth\");\n this.expYear = this.getResponseProperty(\"ExpYear\");\n this.code = this.getResponseProperty(\"Code\");\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.value = this.getResponseProperty(\"Value\");\n this.linkedId = this.getResponseProperty(\"linkedId\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty(\"Title\");\n this.firstName = this.getResponseProperty(\"FirstName\");\n this.middleName = this.getResponseProperty(\"MiddleName\");\n this.lastName = this.getResponseProperty(\"LastName\");\n this.address1 = this.getResponseProperty(\"Address1\");\n this.address2 = this.getResponseProperty(\"Address2\");\n this.address3 = this.getResponseProperty(\"Address3\");\n this.city = this.getResponseProperty(\"City\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.country = this.getResponseProperty(\"Country\");\n this.company = this.getResponseProperty(\"Company\");\n this.email = this.getResponseProperty(\"Email\");\n this.phone = this.getResponseProperty(\"Phone\");\n this.ssn = this.getResponseProperty(\"SSN\");\n this.username = this.getResponseProperty(\"Username\");\n this.passportNumber = this.getResponseProperty(\"PassportNumber\");\n this.licenseNumber = this.getResponseProperty(\"LicenseNumber\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nimport { LoginUriApi } from \"./loginUriApi\";\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty(\"Username\");\n this.password = this.getResponseProperty(\"Password\");\n this.passwordRevisionDate = this.getResponseProperty(\"PasswordRevisionDate\");\n this.totp = this.getResponseProperty(\"Totp\");\n this.autofillOnPageLoad = this.getResponseProperty(\"AutofillOnPageLoad\");\n\n const uris = this.getResponseProperty(\"Uris\");\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty(\"Uri\");\n const match = this.getResponseProperty(\"Match\");\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class PermissionsApi extends BaseResponse {\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAllCollections: boolean;\n createNewCollections: boolean;\n editAnyCollection: boolean;\n deleteAnyCollection: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAssignedCollections: boolean;\n editAssignedCollections: boolean;\n deleteAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n manageResetPassword: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessEventLogs = this.getResponseProperty(\"AccessEventLogs\");\n this.accessImportExport = this.getResponseProperty(\"AccessImportExport\");\n this.accessReports = this.getResponseProperty(\"AccessReports\");\n\n // For backwards compatibility with Server <= 1.43.0\n this.manageAllCollections = this.getResponseProperty(\"ManageAllCollections\");\n this.manageAssignedCollections = this.getResponseProperty(\"ManageAssignedCollections\");\n\n this.createNewCollections = this.getResponseProperty(\"CreateNewCollections\");\n this.editAnyCollection = this.getResponseProperty(\"EditAnyCollection\");\n this.deleteAnyCollection = this.getResponseProperty(\"DeleteAnyCollection\");\n this.editAssignedCollections = this.getResponseProperty(\"EditAssignedCollections\");\n this.deleteAssignedCollections = this.getResponseProperty(\"DeleteAssignedCollections\");\n\n this.manageCiphers = this.getResponseProperty(\"ManageCiphers\");\n this.manageGroups = this.getResponseProperty(\"ManageGroups\");\n this.manageSso = this.getResponseProperty(\"ManageSso\");\n this.managePolicies = this.getResponseProperty(\"ManagePolicies\");\n this.manageUsers = this.getResponseProperty(\"ManageUsers\");\n this.manageResetPassword = this.getResponseProperty(\"ManageResetPassword\");\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { BaseResponse } from \"../response/baseResponse\";\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty(\"Type\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty(\"Id\");\n this.fileName = this.getResponseProperty(\"FileName\");\n this.size = this.getResponseProperty(\"Size\");\n this.sizeName = this.getResponseProperty(\"SizeName\");\n }\n}\n","import { BaseResponse } from \"../response/baseResponse\";\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty(\"Text\");\n this.hidden = this.getResponseProperty(\"Hidden\") || false;\n }\n}\n","import {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"../../enums/ssoEnums\";\nimport { BaseResponse } from \"../response/baseResponse\";\nimport { SsoConfigView } from \"../view/ssoConfigView\";\n\nexport class SsoConfigApi extends BaseResponse {\n static fromView(view: SsoConfigView, api = new SsoConfigApi()) {\n api.configType = view.configType;\n\n api.keyConnectorEnabled = view.keyConnectorEnabled;\n api.keyConnectorUrl = view.keyConnectorUrl;\n\n if (api.configType === SsoType.OpenIdConnect) {\n api.authority = view.openId.authority;\n api.clientId = view.openId.clientId;\n api.clientSecret = view.openId.clientSecret;\n api.metadataAddress = view.openId.metadataAddress;\n api.redirectBehavior = view.openId.redirectBehavior;\n api.getClaimsFromUserInfoEndpoint = view.openId.getClaimsFromUserInfoEndpoint;\n api.additionalScopes = view.openId.additionalScopes;\n api.additionalUserIdClaimTypes = view.openId.additionalUserIdClaimTypes;\n api.additionalEmailClaimTypes = view.openId.additionalEmailClaimTypes;\n api.additionalNameClaimTypes = view.openId.additionalNameClaimTypes;\n api.acrValues = view.openId.acrValues;\n api.expectedReturnAcrValue = view.openId.expectedReturnAcrValue;\n } else if (api.configType === SsoType.Saml2) {\n api.spNameIdFormat = view.saml.spNameIdFormat;\n api.spOutboundSigningAlgorithm = view.saml.spOutboundSigningAlgorithm;\n api.spSigningBehavior = view.saml.spSigningBehavior;\n api.spMinIncomingSigningAlgorithm = view.saml.spMinIncomingSigningAlgorithm;\n api.spWantAssertionsSigned = view.saml.spWantAssertionsSigned;\n api.spValidateCertificates = view.saml.spValidateCertificates;\n\n api.idpEntityId = view.saml.idpEntityId;\n api.idpBindingType = view.saml.idpBindingType;\n api.idpSingleSignOnServiceUrl = view.saml.idpSingleSignOnServiceUrl;\n api.idpSingleLogoutServiceUrl = view.saml.idpSingleLogoutServiceUrl;\n api.idpX509PublicCert = view.saml.idpX509PublicCert;\n api.idpOutboundSigningAlgorithm = view.saml.idpOutboundSigningAlgorithm;\n api.idpAllowUnsolicitedAuthnResponse = view.saml.idpAllowUnsolicitedAuthnResponse;\n api.idpWantAuthnRequestsSigned = view.saml.idpWantAuthnRequestsSigned;\n\n // Value is inverted in the api model (disable instead of allow)\n api.idpDisableOutboundLogoutRequests = !view.saml.idpAllowOutboundLogoutRequests;\n }\n\n return api;\n }\n configType: SsoType;\n\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n // OpenId\n authority: string;\n clientId: string;\n clientSecret: string;\n metadataAddress: string;\n redirectBehavior: OpenIdConnectRedirectBehavior;\n getClaimsFromUserInfoEndpoint: boolean;\n additionalScopes: string;\n additionalUserIdClaimTypes: string;\n additionalEmailClaimTypes: string;\n additionalNameClaimTypes: string;\n acrValues: string;\n expectedReturnAcrValue: string;\n\n // SAML\n spNameIdFormat: Saml2NameIdFormat;\n spOutboundSigningAlgorithm: string;\n spSigningBehavior: Saml2SigningBehavior;\n spMinIncomingSigningAlgorithm: boolean;\n spWantAssertionsSigned: boolean;\n spValidateCertificates: boolean;\n\n idpEntityId: string;\n idpBindingType: Saml2BindingType;\n idpSingleSignOnServiceUrl: string;\n idpSingleLogoutServiceUrl: string;\n idpX509PublicCert: string;\n idpOutboundSigningAlgorithm: string;\n idpAllowUnsolicitedAuthnResponse: boolean;\n idpDisableOutboundLogoutRequests: boolean;\n idpWantAuthnRequestsSigned: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n\n this.configType = this.getResponseProperty(\"ConfigType\");\n\n this.keyConnectorEnabled = this.getResponseProperty(\"KeyConnectorEnabled\");\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n\n this.authority = this.getResponseProperty(\"Authority\");\n this.clientId = this.getResponseProperty(\"ClientId\");\n this.clientSecret = this.getResponseProperty(\"ClientSecret\");\n this.metadataAddress = this.getResponseProperty(\"MetadataAddress\");\n this.redirectBehavior = this.getResponseProperty(\"RedirectBehavior\");\n this.getClaimsFromUserInfoEndpoint = this.getResponseProperty(\"GetClaimsFromUserInfoEndpoint\");\n this.additionalScopes = this.getResponseProperty(\"AdditionalScopes\");\n this.additionalUserIdClaimTypes = this.getResponseProperty(\"AdditionalUserIdClaimTypes\");\n this.additionalEmailClaimTypes = this.getResponseProperty(\"AdditionalEmailClaimTypes\");\n this.additionalNameClaimTypes = this.getResponseProperty(\"AdditionalNameClaimTypes\");\n this.acrValues = this.getResponseProperty(\"AcrValues\");\n this.expectedReturnAcrValue = this.getResponseProperty(\"ExpectedReturnAcrValue\");\n\n this.spNameIdFormat = this.getResponseProperty(\"SpNameIdFormat\");\n this.spOutboundSigningAlgorithm = this.getResponseProperty(\"SpOutboundSigningAlgorithm\");\n this.spSigningBehavior = this.getResponseProperty(\"SpSigningBehavior\");\n this.spMinIncomingSigningAlgorithm = this.getResponseProperty(\"SpMinIncomingSigningAlgorithm\");\n this.spWantAssertionsSigned = this.getResponseProperty(\"SpWantAssertionsSigned\");\n this.spValidateCertificates = this.getResponseProperty(\"SpValidateCertificates\");\n\n this.idpEntityId = this.getResponseProperty(\"IdpEntityId\");\n this.idpBindingType = this.getResponseProperty(\"IdpBindingType\");\n this.idpSingleSignOnServiceUrl = this.getResponseProperty(\"IdpSingleSignOnServiceUrl\");\n this.idpSingleLogoutServiceUrl = this.getResponseProperty(\"IdpSingleLogoutServiceUrl\");\n this.idpX509PublicCert = this.getResponseProperty(\"IdpX509PublicCert\");\n this.idpOutboundSigningAlgorithm = this.getResponseProperty(\"IdpOutboundSigningAlgorithm\");\n this.idpAllowUnsolicitedAuthnResponse = this.getResponseProperty(\n \"IdpAllowUnsolicitedAuthnResponse\"\n );\n this.idpDisableOutboundLogoutRequests = this.getResponseProperty(\n \"IdpDisableOutboundLogoutRequests\"\n );\n this.idpWantAuthnRequestsSigned = this.getResponseProperty(\"IdpWantAuthnRequestsSigned\");\n }\n}\n","import { AttachmentResponse } from \"../response/attachmentResponse\";\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from \"../api/cardApi\";\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CipherResponse } from \"../response/cipherResponse\";\n\nimport { AttachmentData } from \"./attachmentData\";\nimport { CardData } from \"./cardData\";\nimport { FieldData } from \"./fieldData\";\nimport { IdentityData } from \"./identityData\";\nimport { LoginData } from \"./loginData\";\nimport { PasswordHistoryData } from \"./passwordHistoryData\";\nimport { SecureNoteData } from \"./secureNoteData\";\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response?: CipherResponse, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n this.reprompt = response.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map((f) => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map((a) => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map((ph) => new PasswordHistoryData(ph));\n }\n }\n}\n","import { CollectionDetailsResponse } from \"../response/collectionResponse\";\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { FieldApi } from \"../api/fieldApi\";\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n linkedId: LinkedIdType;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n this.linkedId = response.linkedId;\n }\n}\n","import { FolderResponse } from \"../response/folderResponse\";\n\nexport class FolderData {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse) {\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { IdentityApi } from \"../api/identityApi\";\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from \"../api/loginApi\";\n\nimport { LoginUriData } from \"./loginUriData\";\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n this.autofillOnPageLoad = data.autofillOnPageLoad;\n\n if (data.uris) {\n this.uris = data.uris.map((u) => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { LoginUriApi } from \"../api/loginUriApi\";\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\nimport { ProfileOrganizationResponse } from \"../response/profileOrganizationResponse\";\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useSso = response.useSso;\n this.useKeyConnector = response.useKeyConnector;\n this.useResetPassword = response.useResetPassword;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n this.resetPasswordEnrolled = response.resetPasswordEnrolled;\n this.userId = response.userId;\n this.hasPublicAndPrivateKeys = response.hasPublicAndPrivateKeys;\n this.providerId = response.providerId;\n this.providerName = response.providerName;\n this.familySponsorshipFriendlyName = response.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = response.familySponsorshipAvailable;\n this.planProductType = response.planProductType;\n this.keyConnectorEnabled = response.keyConnectorEnabled;\n this.keyConnectorUrl = response.keyConnectorUrl;\n this.familySponsorshipLastSyncDate = response.familySponsorshipLastSyncDate;\n this.familySponsorshipValidUntil = response.familySponsorshipValidUntil;\n this.familySponsorshipToDelete = response.familySponsorshipToDelete;\n }\n}\n","import { PasswordHistoryResponse } from \"../response/passwordHistoryResponse\";\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\nimport { PolicyResponse } from \"../response/policyResponse\";\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { ProfileProviderResponse } from \"../response/profileProviderResponse\";\n\nexport class ProviderData {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(response: ProfileProviderResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.userId = response.userId;\n this.useEvents = response.useEvents;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendResponse } from \"../response/sendResponse\";\n\nimport { SendFileData } from \"./sendFileData\";\nimport { SendTextData } from \"./sendTextData\";\n\nexport class SendData {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(response?: SendResponse) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n this.hideEmail = response.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { SendFileApi } from \"../api/sendFileApi\";\n\nexport class SendFileData {\n id: string;\n fileName: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from \"../api/sendTextApi\";\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { AuthenticationStatus } from \"../../enums/authenticationStatus\";\nimport { KdfType } from \"../../enums/kdfType\";\nimport { UriMatchType } from \"../../enums/uriMatchType\";\nimport { CipherData } from \"../data/cipherData\";\nimport { CollectionData } from \"../data/collectionData\";\nimport { EventData } from \"../data/eventData\";\nimport { FolderData } from \"../data/folderData\";\nimport { OrganizationData } from \"../data/organizationData\";\nimport { PolicyData } from \"../data/policyData\";\nimport { ProviderData } from \"../data/providerData\";\nimport { SendData } from \"../data/sendData\";\nimport { CipherView } from \"../view/cipherView\";\nimport { CollectionView } from \"../view/collectionView\";\nimport { FolderView } from \"../view/folderView\";\nimport { SendView } from \"../view/sendView\";\n\nimport { EncString } from \"./encString\";\nimport { EnvironmentUrls } from \"./environmentUrls\";\nimport { GeneratedPasswordHistory } from \"./generatedPasswordHistory\";\nimport { Policy } from \"./policy\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncryptionPair {\n encrypted?: TEncrypted;\n decrypted?: TDecrypted;\n}\n\nexport class DataEncryptionPair {\n encrypted?: { [id: string]: TEncrypted };\n decrypted?: TDecrypted[];\n}\n\nexport class AccountData {\n ciphers?: DataEncryptionPair = new DataEncryptionPair<\n CipherData,\n CipherView\n >();\n folders?: DataEncryptionPair = new DataEncryptionPair<\n FolderData,\n FolderView\n >();\n localData?: any;\n sends?: DataEncryptionPair = new DataEncryptionPair();\n collections?: DataEncryptionPair = new DataEncryptionPair<\n CollectionData,\n CollectionView\n >();\n policies?: DataEncryptionPair = new DataEncryptionPair();\n passwordGenerationHistory?: EncryptionPair<\n GeneratedPasswordHistory[],\n GeneratedPasswordHistory[]\n > = new EncryptionPair();\n addEditCipherInfo?: any;\n eventCollection?: EventData[];\n organizations?: { [id: string]: OrganizationData };\n providers?: { [id: string]: ProviderData };\n}\n\nexport class AccountKeys {\n cryptoMasterKey?: SymmetricCryptoKey;\n cryptoMasterKeyAuto?: string;\n cryptoMasterKeyB64?: string;\n cryptoMasterKeyBiometric?: string;\n cryptoSymmetricKey?: EncryptionPair = new EncryptionPair<\n string,\n SymmetricCryptoKey\n >();\n organizationKeys?: EncryptionPair> = new EncryptionPair<\n any,\n Map\n >();\n providerKeys?: EncryptionPair> = new EncryptionPair<\n any,\n Map\n >();\n privateKey?: EncryptionPair = new EncryptionPair();\n legacyEtmKey?: SymmetricCryptoKey;\n publicKey?: ArrayBuffer;\n apiKeyClientSecret?: string;\n}\n\nexport class AccountProfile {\n apiKeyClientId?: string;\n authenticationStatus?: AuthenticationStatus;\n convertAccountToKeyConnector?: boolean;\n email?: string;\n emailVerified?: boolean;\n entityId?: string;\n entityType?: string;\n everBeenUnlocked?: boolean;\n forcePasswordReset?: boolean;\n hasPremiumPersonally?: boolean;\n lastSync?: string;\n userId?: string;\n usesKeyConnector?: boolean;\n keyHash?: string;\n kdfIterations?: number;\n kdfType?: KdfType;\n}\n\nexport class AccountSettings {\n autoConfirmFingerPrints?: boolean;\n autoFillOnPageLoadDefault?: boolean;\n biometricLocked?: boolean;\n biometricUnlock?: boolean;\n clearClipboard?: number;\n collapsedGroupings?: string[];\n defaultUriMatch?: UriMatchType;\n disableAddLoginNotification?: boolean;\n disableAutoBiometricsPrompt?: boolean;\n disableAutoTotpCopy?: boolean;\n disableBadgeCounter?: boolean;\n disableChangedPasswordNotification?: boolean;\n disableContextMenuItem?: boolean;\n disableGa?: boolean;\n dontShowCardsCurrentTab?: boolean;\n dontShowIdentitiesCurrentTab?: boolean;\n enableAlwaysOnTop?: boolean;\n enableAutoFillOnPageLoad?: boolean;\n enableBiometric?: boolean;\n enableFullWidth?: boolean;\n enableGravitars?: boolean;\n environmentUrls: EnvironmentUrls = new EnvironmentUrls();\n equivalentDomains?: any;\n minimizeOnCopyToClipboard?: boolean;\n neverDomains?: { [id: string]: any };\n passwordGenerationOptions?: any;\n usernameGenerationOptions?: any;\n generatorOptions?: any;\n pinProtected?: EncryptionPair = new EncryptionPair();\n protectedPin?: string;\n settings?: any; // TODO: Merge whatever is going on here into the AccountSettings model properly\n vaultTimeout?: number;\n vaultTimeoutAction?: string = \"lock\";\n}\n\nexport class AccountTokens {\n accessToken?: string;\n decodedToken?: any;\n refreshToken?: string;\n securityStamp?: string;\n}\n\nexport class Account {\n data?: AccountData = new AccountData();\n keys?: AccountKeys = new AccountKeys();\n profile?: AccountProfile = new AccountProfile();\n settings?: AccountSettings = new AccountSettings();\n tokens?: AccountTokens = new AccountTokens();\n\n constructor(init: Partial) {\n Object.assign(this, {\n data: {\n ...new AccountData(),\n ...init?.data,\n },\n keys: {\n ...new AccountKeys(),\n ...init?.keys,\n },\n profile: {\n ...new AccountProfile(),\n ...init?.profile,\n },\n settings: {\n ...new AccountSettings(),\n ...init?.settings,\n },\n tokens: {\n ...new AccountTokens(),\n ...init?.tokens,\n },\n });\n }\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { Utils } from \"../../misc/utils\";\nimport { AttachmentData } from \"../data/attachmentData\";\nimport { AttachmentView } from \"../view/attachmentView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string; // Readable size, ex: \"4.2 KB\" or \"1.43 GB\"\n key: EncString;\n fileName: EncString;\n\n constructor(obj?: AttachmentData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n },\n [\"id\", \"url\", \"sizeName\"]\n );\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new AttachmentView(this),\n {\n fileName: null,\n },\n orgId,\n encKey\n );\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(\n this,\n a,\n {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n },\n [\"id\", \"url\", \"sizeName\"]\n );\n return a;\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\nimport { Utils } from \"../../misc/utils\";\n\nexport class AuthResult {\n captchaSiteKey = \"\";\n resetMasterPassword = false;\n forcePasswordReset = false;\n twoFactorProviders: Map = null;\n\n get requiresCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n get requiresTwoFactor() {\n return this.twoFactorProviders != null;\n }\n}\n","import { CardData } from \"../data/cardData\";\nimport { CardView } from \"../view/cardView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Card extends Domain {\n cardholderName: EncString;\n brand: EncString;\n number: EncString;\n expMonth: EncString;\n expYear: EncString;\n code: EncString;\n\n constructor(obj?: CardData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new CardView(),\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n orgId,\n encKey\n );\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CipherData } from \"../data/cipherData\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { Attachment } from \"./attachment\";\nimport { Card } from \"./card\";\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { Field } from \"./field\";\nimport { Identity } from \"./identity\";\nimport { Login } from \"./login\";\nimport { Password } from \"./password\";\nimport { SecureNote } from \"./secureNote\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: EncString;\n notes: EncString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(obj?: CipherData, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n },\n [\"id\", \"organizationId\", \"folderId\"]\n );\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n this.reprompt = obj.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map((a) => new Attachment(a));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map((f) => new Field(f));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map((ph) => new Password(ph));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(\n model,\n {\n name: null,\n notes: null,\n },\n this.organizationId,\n encKey\n );\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise\n .then(() => {\n return attachment.decrypt(orgId, encKey);\n })\n .then((decAttachment) => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise\n .then(() => {\n return field.decrypt(orgId, encKey);\n })\n .then((decField) => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise\n .then(() => {\n return ph.decrypt(orgId, encKey);\n })\n .then((decPh) => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n c.reprompt = this.reprompt;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map((f) => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map((a) => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map((ph) => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","import { CollectionData } from \"../data/collectionData\";\nimport { CollectionView } from \"../view/collectionView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: EncString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n },\n [\"id\", \"organizationId\", \"externalId\", \"readOnly\", \"hidePasswords\"]\n );\n }\n\n decrypt(): Promise {\n return this.decryptObj(\n new CollectionView(this),\n {\n name: null,\n },\n this.organizationId\n );\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { View } from \"../view/view\";\n\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport default class Domain {\n protected buildDomainModel(\n domain: D,\n dataObj: any,\n map: any,\n notEncList: any[] = []\n ) {\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[map[prop] || prop];\n if (notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new EncString(objProp) : null;\n }\n }\n }\n protected buildDataModel(\n domain: D,\n dataObj: any,\n map: any,\n notEncStringList: any[] = []\n ) {\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[map[prop] || prop];\n if (notEncStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as EncString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(\n viewModel: T,\n map: any,\n orgId: string,\n key: SymmetricCryptoKey = null\n ): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n (function (theProp) {\n const p = Promise.resolve()\n .then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n })\n .then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","export class EncArrayBuffer {\n constructor(public buffer: ArrayBuffer) {}\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { EncryptionType } from \"../../enums/encryptionType\";\nimport { Utils } from \"../../misc/utils\";\n\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(\n encryptedStringOrType: string | EncryptionType,\n data?: string,\n iv?: string,\n mac?: string\n ) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + \".\" + iv + \"|\" + data;\n } else {\n this.encryptedString = encType + \".\" + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += \"|\" + mac;\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split(\".\");\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split(\"|\");\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split(\"|\");\n this.encryptionType =\n encPieces.length === 3\n ? EncryptionType.AesCbc128_HmacSha256_B64\n : EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = \"[error: cannot decrypt]\";\n }\n return this.decryptedValue;\n }\n}\n","import { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string = null;\n api: string = null;\n identity: string = null;\n icons: string = null;\n notifications: string = null;\n events: string = null;\n webVault: string = null;\n keyConnector: string = null;\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { FieldData } from \"../data/fieldData\";\nimport { FieldView } from \"../view/fieldView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Field extends Domain {\n name: EncString;\n value: EncString;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(obj?: FieldData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.linkedId = obj.linkedId;\n this.buildDomainModel(\n this,\n obj,\n {\n name: null,\n value: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new FieldView(this),\n {\n name: null,\n value: null,\n },\n orgId,\n encKey\n );\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(\n this,\n f,\n {\n name: null,\n value: null,\n type: null,\n linkedId: null,\n },\n [\"type\", \"linkedId\"]\n );\n return f;\n }\n}\n","import { FolderData } from \"../data/folderData\";\nimport { FolderView } from \"../view/folderView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\n\nexport class Folder extends Domain {\n id: string;\n name: EncString;\n revisionDate: Date;\n\n constructor(obj?: FolderData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n name: null,\n },\n [\"id\"]\n );\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(\n new FolderView(this),\n {\n name: null,\n },\n null\n );\n }\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import { StateVersion } from \"../../enums/stateVersion\";\nimport { ThemeType } from \"../../enums/themeType\";\n\nimport { EnvironmentUrls } from \"./environmentUrls\";\nimport { WindowState } from \"./windowState\";\n\nexport class GlobalState {\n enableAlwaysOnTop?: boolean;\n installedVersion?: string;\n locale?: string;\n organizationInvitation?: any;\n ssoCodeVerifier?: string;\n ssoOrganizationIdentifier?: string;\n ssoState?: string;\n rememberedEmail?: string;\n theme?: ThemeType = ThemeType.System;\n window?: WindowState = new WindowState();\n twoFactorToken?: string;\n disableFavicon?: boolean;\n biometricAwaitingAcceptance?: boolean;\n biometricFingerprintValidated?: boolean;\n vaultTimeout?: number;\n vaultTimeoutAction?: string;\n loginRedirect?: any;\n mainWindowSize?: number;\n enableBiometrics?: boolean;\n biometricText?: string;\n noAutoPromptBiometrics?: boolean;\n noAutoPromptBiometricsText?: string;\n stateVersion: StateVersion = StateVersion.One;\n environmentUrls: EnvironmentUrls = new EnvironmentUrls();\n enableTray?: boolean;\n enableMinimizeToTray?: boolean;\n enableCloseToTray?: boolean;\n enableStartToTray?: boolean;\n openAtLogin?: boolean;\n alwaysShowDock?: boolean;\n enableBrowserIntegration?: boolean;\n enableBrowserIntegrationFingerprint?: boolean;\n}\n","import { IdentityData } from \"../data/identityData\";\nimport { IdentityView } from \"../view/identityView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Identity extends Domain {\n title: EncString;\n firstName: EncString;\n middleName: EncString;\n lastName: EncString;\n address1: EncString;\n address2: EncString;\n address3: EncString;\n city: EncString;\n state: EncString;\n postalCode: EncString;\n country: EncString;\n company: EncString;\n email: EncString;\n phone: EncString;\n ssn: EncString;\n username: EncString;\n passportNumber: EncString;\n licenseNumber: EncString;\n\n constructor(obj?: IdentityData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new IdentityView(),\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n orgId,\n encKey\n );\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { CipherView } from \"../view/cipherView\";\nimport { CollectionView } from \"../view/collectionView\";\nimport { FolderView } from \"../view/folderView\";\n\nexport class ImportResult {\n success = false;\n missingPassword = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","import { AuthenticationType } from \"../../enums/authenticationType\";\nimport { TokenRequestTwoFactor } from \"../request/identityToken/tokenRequestTwoFactor\";\n\nexport class PasswordLogInCredentials {\n readonly type = AuthenticationType.Password;\n\n constructor(\n public email: string,\n public masterPassword: string,\n public captchaToken?: string,\n public twoFactor?: TokenRequestTwoFactor\n ) {}\n}\n\nexport class SsoLogInCredentials {\n readonly type = AuthenticationType.Sso;\n\n constructor(\n public code: string,\n public codeVerifier: string,\n public redirectUrl: string,\n public orgId: string,\n public twoFactor?: TokenRequestTwoFactor\n ) {}\n}\n\nexport class ApiLogInCredentials {\n readonly type = AuthenticationType.Api;\n\n constructor(public clientId: string, public clientSecret: string) {}\n}\n","import { LoginData } from \"../data/loginData\";\nimport { LoginView } from \"../view/loginView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { LoginUri } from \"./loginUri\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: EncString;\n password: EncString;\n passwordRevisionDate?: Date;\n totp: EncString;\n autofillOnPageLoad: boolean;\n\n constructor(obj?: LoginData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate =\n obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.autofillOnPageLoad = obj.autofillOnPageLoad;\n this.buildDomainModel(\n this,\n obj,\n {\n username: null,\n password: null,\n totp: null,\n },\n []\n );\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach((u) => {\n this.uris.push(new LoginUri(u));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new LoginView(this),\n {\n username: null,\n password: null,\n totp: null,\n },\n orgId,\n encKey\n );\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate =\n this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n l.autofillOnPageLoad = this.autofillOnPageLoad;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach((u) => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { LoginUriData } from \"../data/loginUriData\";\nimport { LoginUriView } from \"../view/loginUriView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class LoginUri extends Domain {\n uri: EncString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(\n this,\n obj,\n {\n uri: null,\n },\n []\n );\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new LoginUriView(this),\n {\n uri: null,\n },\n orgId,\n encKey\n );\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(\n this,\n u,\n {\n uri: null,\n match: null,\n },\n [\"match\"]\n );\n return u;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity = 0;\n minLength = 0;\n requireUpper = false;\n requireLower = false;\n requireNumbers = false;\n requireSpecial = false;\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { Permissions } from \"../../enums/permissions\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\nimport { OrganizationData } from \"../data/organizationData\";\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useSso = obj.useSso;\n this.useKeyConnector = obj.useKeyConnector;\n this.useResetPassword = obj.useResetPassword;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n this.resetPasswordEnrolled = obj.resetPasswordEnrolled;\n this.userId = obj.userId;\n this.hasPublicAndPrivateKeys = obj.hasPublicAndPrivateKeys;\n this.providerId = obj.providerId;\n this.providerName = obj.providerName;\n this.isProviderUser = obj.isProviderUser;\n this.familySponsorshipFriendlyName = obj.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = obj.familySponsorshipAvailable;\n this.planProductType = obj.planProductType;\n this.keyConnectorEnabled = obj.keyConnectorEnabled;\n this.keyConnectorUrl = obj.keyConnectorUrl;\n this.familySponsorshipLastSyncDate = obj.familySponsorshipLastSyncDate;\n this.familySponsorshipValidUntil = obj.familySponsorshipValidUntil;\n this.familySponsorshipToDelete = obj.familySponsorshipToDelete;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return (\n this.type === OrganizationUserType.Manager ||\n this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin\n );\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner || this.isProviderUser;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canCreateNewCollections() {\n return (\n this.isManager ||\n (this.permissions.createNewCollections ?? this.permissions.manageAllCollections)\n );\n }\n\n get canEditAnyCollection() {\n return (\n this.isAdmin || (this.permissions.editAnyCollection ?? this.permissions.manageAllCollections)\n );\n }\n\n get canDeleteAnyCollection() {\n return (\n this.isAdmin ||\n (this.permissions.deleteAnyCollection ?? this.permissions.manageAllCollections)\n );\n }\n\n get canViewAllCollections() {\n return this.canCreateNewCollections || this.canEditAnyCollection || this.canDeleteAnyCollection;\n }\n\n get canEditAssignedCollections() {\n return (\n this.isManager ||\n (this.permissions.editAssignedCollections ?? this.permissions.manageAssignedCollections)\n );\n }\n\n get canDeleteAssignedCollections() {\n return (\n this.isManager ||\n (this.permissions.deleteAssignedCollections ?? this.permissions.manageAssignedCollections)\n );\n }\n\n get canViewAssignedCollections() {\n return this.canDeleteAssignedCollections || this.canEditAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n\n get canManageUsersPassword() {\n return this.isAdmin || this.permissions.manageResetPassword;\n }\n\n get isExemptFromPolicies() {\n return this.canManagePolicies;\n }\n\n hasAnyPermission(permissions: Permissions[]) {\n const specifiedPermissions =\n (permissions.includes(Permissions.AccessEventLogs) && this.canAccessEventLogs) ||\n (permissions.includes(Permissions.AccessImportExport) && this.canAccessImportExport) ||\n (permissions.includes(Permissions.AccessReports) && this.canAccessReports) ||\n (permissions.includes(Permissions.CreateNewCollections) && this.canCreateNewCollections) ||\n (permissions.includes(Permissions.EditAnyCollection) && this.canEditAnyCollection) ||\n (permissions.includes(Permissions.DeleteAnyCollection) && this.canDeleteAnyCollection) ||\n (permissions.includes(Permissions.EditAssignedCollections) &&\n this.canEditAssignedCollections) ||\n (permissions.includes(Permissions.DeleteAssignedCollections) &&\n this.canDeleteAssignedCollections) ||\n (permissions.includes(Permissions.ManageGroups) && this.canManageGroups) ||\n (permissions.includes(Permissions.ManageOrganization) && this.isOwner) ||\n (permissions.includes(Permissions.ManagePolicies) && this.canManagePolicies) ||\n (permissions.includes(Permissions.ManageUsers) && this.canManageUsers) ||\n (permissions.includes(Permissions.ManageUsersPassword) && this.canManageUsersPassword) ||\n (permissions.includes(Permissions.ManageSso) && this.canManageSso) ||\n (permissions.includes(Permissions.ManageBilling) && this.canManageBilling);\n\n return specifiedPermissions && (this.enabled || this.isOwner);\n }\n\n get canManageBilling() {\n return this.isOwner && (this.isProviderUser || !this.hasProvider);\n }\n\n get hasProvider() {\n return this.providerId != null || this.providerName != null;\n }\n}\n","import { PasswordHistoryData } from \"../data/passwordHistoryData\";\nimport { PasswordHistoryView } from \"../view/passwordHistoryView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class Password extends Domain {\n password: EncString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n });\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new PasswordHistoryView(this),\n {\n password: null,\n },\n orgId,\n encKey\n );\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType = \"\";\n minLength = 0;\n useUppercase = false;\n useLowercase = false;\n useNumbers = false;\n numberCount = 0;\n useSpecial = false;\n specialCount = 0;\n minNumberWords = 0;\n capitalize = false;\n includeNumber = false;\n\n inEffect() {\n return (\n this.defaultType !== \"\" ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber\n );\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\nimport { PolicyData } from \"../data/policyData\";\n\nimport Domain from \"./domainBase\";\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { ProviderData } from \"../data/providerData\";\n\nexport class Provider {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(obj?: ProviderData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.userId = obj.userId;\n this.useEvents = obj.useEvents;\n }\n\n get canAccess() {\n if (this.isProviderAdmin) {\n return true;\n }\n return this.enabled && this.status === ProviderUserStatusType.Confirmed;\n }\n\n get canCreateOrganizations() {\n return this.enabled && this.isProviderAdmin;\n }\n\n get canManageUsers() {\n return this.isProviderAdmin;\n }\n\n get canAccessEventLogs() {\n return this.isProviderAdmin;\n }\n\n get isProviderAdmin() {\n return this.type === ProviderUserType.ProviderAdmin;\n }\n}\n","import Domain from \"./domainBase\";\n\nexport class ResetPasswordPolicyOptions extends Domain {\n autoEnrollEnabled = false;\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNoteData } from \"../data/secureNoteData\";\nimport { SecureNoteView } from \"../view/secureNoteView\";\n\nimport Domain from \"./domainBase\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import { CryptoService } from \"../../abstractions/crypto.service\";\nimport { SendType } from \"../../enums/sendType\";\nimport { Utils } from \"../../misc/utils\";\nimport { SendData } from \"../data/sendData\";\nimport { SendView } from \"../view/sendView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SendFile } from \"./sendFile\";\nimport { SendText } from \"./sendText\";\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n type: SendType;\n name: EncString;\n notes: EncString;\n file: SendFile;\n text: SendText;\n key: EncString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(obj?: SendData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n accessId: null,\n name: null,\n notes: null,\n key: null,\n },\n [\"id\", \"accessId\"]\n );\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n this.hideEmail = obj.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error(\"global bitwardenContainerService not initialized.\");\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(\n model,\n {\n name: null,\n notes: null,\n },\n null,\n model.cryptoKey\n );\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendAccessResponse } from \"../response/sendAccessResponse\";\nimport { SendAccessView } from \"../view/sendAccessView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SendFile } from \"./sendFile\";\nimport { SendText } from \"./sendText\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: EncString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n },\n [\"id\", \"expirationDate\", \"creatorIdentifier\"]\n );\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(\n model,\n {\n name: null,\n },\n null,\n key\n );\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendFileData } from \"../data/sendFileData\";\nimport { SendFileView } from \"../view/sendFileView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: EncString;\n\n constructor(obj?: SendFileData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(\n this,\n obj,\n {\n id: null,\n sizeName: null,\n fileName: null,\n },\n [\"id\", \"sizeName\"]\n );\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(\n new SendFileView(this),\n {\n fileName: null,\n },\n null,\n key\n );\n return view;\n }\n}\n","import { SendTextData } from \"../data/sendTextData\";\nimport { SendTextView } from \"../view/sendTextView\";\n\nimport Domain from \"./domainBase\";\nimport { EncString } from \"./encString\";\nimport { SymmetricCryptoKey } from \"./symmetricCryptoKey\";\n\nexport class SendText extends Domain {\n text: EncString;\n hidden: boolean;\n\n constructor(obj?: SendTextData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(\n this,\n obj,\n {\n text: null,\n },\n []\n );\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(\n new SendTextView(this),\n {\n text: null,\n },\n null,\n key\n );\n }\n}\n","import { CipherView } from \"../view/cipherView\";\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) {}\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(\n url,\n setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL)\n );\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) {}\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter((cipher) => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort(\n (x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf()\n );\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","import { Account } from \"./account\";\nimport { GlobalState } from \"./globalState\";\n\nexport class State<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n accounts: { [userId: string]: TAccount } = {};\n globals: TGlobalState;\n activeUserId: string;\n authenticatedAccounts: string[] = [];\n accountActivity: { [userId: string]: number } = {};\n\n constructor(globals: TGlobalState) {\n this.globals = globals;\n }\n}\n","import { EncryptionType } from \"../../enums/encryptionType\";\nimport { Utils } from \"../../misc/utils\";\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error(\"Must provide key\");\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error(\"Unable to determine encType.\");\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error(\"Unsupported encType/key length.\");\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","export class WindowState {\n width?: number;\n height?: number;\n isMaximized?: boolean;\n // TODO: displayBounds is an Electron.Rectangle.\n // We need to establish some kind of client-specific global state, similiar to the way we already extend a base Account.\n displayBounds: any;\n x?: number;\n y?: number;\n}\n","import { Card as CardDomain } from \"../domain/card\";\nimport { EncString } from \"../domain/encString\";\nimport { CardView } from \"../view/cardView\";\n\nexport class CardExport {\n static template(): CardExport {\n const req = new CardExport();\n req.cardholderName = \"John Doe\";\n req.brand = \"visa\";\n req.number = \"4242424242424242\";\n req.expMonth = \"04\";\n req.expYear = \"2023\";\n req.code = \"123\";\n return req;\n }\n\n static toView(req: CardExport, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: CardExport, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new EncString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new EncString(req.brand) : null;\n domain.number = req.number != null ? new EncString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new EncString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new EncString(req.expYear) : null;\n domain.code = req.code != null ? new EncString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { Cipher as CipherDomain } from \"../domain/cipher\";\nimport { EncString } from \"../domain/encString\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { CardExport } from \"./cardExport\";\nimport { FieldExport } from \"./fieldExport\";\nimport { IdentityExport } from \"./identityExport\";\nimport { LoginExport } from \"./loginExport\";\nimport { SecureNoteExport } from \"./secureNoteExport\";\n\nexport class CipherExport {\n static template(): CipherExport {\n const req = new CipherExport();\n req.organizationId = null;\n req.collectionIds = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = \"Item name\";\n req.notes = \"Some notes about this item.\";\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n req.reprompt = CipherRepromptType.None;\n return req;\n }\n\n static toView(req: CipherExport, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n if (view.collectionIds || req.collectionIds) {\n const set = new Set((view.collectionIds ?? []).concat(req.collectionIds ?? []));\n view.collectionIds = Array.from(set.values());\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n view.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n view.fields = req.fields.map((f) => FieldExport.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = LoginExport.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNoteExport.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = CardExport.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = IdentityExport.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: CipherExport, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.notes = req.notes != null ? new EncString(req.notes) : null;\n domain.favorite = req.favorite;\n domain.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n domain.fields = req.fields.map((f) => FieldExport.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = LoginExport.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNoteExport.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = CardExport.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = IdentityExport.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n collectionIds: string[];\n name: string;\n notes: string;\n favorite: boolean;\n fields: FieldExport[];\n login: LoginExport;\n secureNote: SecureNoteExport;\n card: CardExport;\n identity: IdentityExport;\n reprompt: CipherRepromptType;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.reprompt = o.reprompt;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map((f) => new FieldExport(f));\n } else {\n this.fields = o.fields.map((f) => new FieldExport(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new LoginExport(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteExport(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardExport(o.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityExport(o.identity);\n break;\n }\n }\n}\n","import { Cipher as CipherDomain } from \"../domain/cipher\";\nimport { CipherView } from \"../view/cipherView\";\n\nimport { CipherExport } from \"./cipherExport\";\n\nexport class CipherWithIdExport extends CipherExport {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection as CollectionDomain } from \"../domain/collection\";\nimport { EncString } from \"../domain/encString\";\nimport { CollectionView } from \"../view/collectionView\";\n\nexport class CollectionExport {\n static template(): CollectionExport {\n const req = new CollectionExport();\n req.organizationId = \"00000000-0000-0000-0000-000000000000\";\n req.name = \"Collection name\";\n req.externalId = null;\n return req;\n }\n\n static toView(req: CollectionExport, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: CollectionExport, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { Collection as CollectionDomain } from \"../domain/collection\";\nimport { CollectionView } from \"../view/collectionView\";\n\nimport { CollectionExport } from \"./collectionExport\";\n\nexport class CollectionWithIdExport extends CollectionExport {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { EventType } from \"../../enums/eventType\";\nimport { EventView } from \"../view/eventView\";\n\nexport class EventExport {\n message: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: string;\n installationId: string;\n\n constructor(event: EventView) {\n this.message = event.humanReadableMessage;\n this.appIcon = event.appIcon;\n this.appName = event.appName;\n this.userId = event.userId;\n this.userName = event.userName;\n this.userEmail = event.userEmail;\n this.date = event.date;\n this.ip = event.ip;\n this.type = EventType[event.type];\n this.installationId = event.installationId;\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { EncString } from \"../domain/encString\";\nimport { Field as FieldDomain } from \"../domain/field\";\nimport { FieldView } from \"../view/fieldView\";\n\nexport class FieldExport {\n static template(): FieldExport {\n const req = new FieldExport();\n req.name = \"Field name\";\n req.value = \"Some value\";\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: FieldExport, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n view.linkedId = req.linkedId;\n return view;\n }\n\n static toDomain(req: FieldExport, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new EncString(req.value) : null;\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.linkedId = req.linkedId;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n this.linkedId = o.linkedId;\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Folder as FolderDomain } from \"../domain/folder\";\nimport { FolderView } from \"../view/folderView\";\n\nexport class FolderExport {\n static template(): FolderExport {\n const req = new FolderExport();\n req.name = \"Folder name\";\n return req;\n }\n\n static toView(req: FolderExport, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: FolderExport, domain = new FolderDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { Folder as FolderDomain } from \"../domain/folder\";\nimport { FolderView } from \"../view/folderView\";\n\nimport { FolderExport } from \"./folderExport\";\n\nexport class FolderWithIdExport extends FolderExport {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Identity as IdentityDomain } from \"../domain/identity\";\nimport { IdentityView } from \"../view/identityView\";\n\nexport class IdentityExport {\n static template(): IdentityExport {\n const req = new IdentityExport();\n req.title = \"Mr\";\n req.firstName = \"John\";\n req.middleName = \"William\";\n req.lastName = \"Doe\";\n req.address1 = \"123 Any St\";\n req.address2 = \"Apt #123\";\n req.address3 = null;\n req.city = \"New York\";\n req.state = \"NY\";\n req.postalCode = \"10001\";\n req.country = \"US\";\n req.company = \"Acme Inc.\";\n req.email = \"john@company.com\";\n req.phone = \"5555551234\";\n req.ssn = \"000-123-4567\";\n req.username = \"jdoe\";\n req.passportNumber = \"US-123456789\";\n req.licenseNumber = \"D123-12-123-12333\";\n return req;\n }\n\n static toView(req: IdentityExport, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: IdentityExport, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new EncString(req.title) : null;\n domain.firstName = req.firstName != null ? new EncString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new EncString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new EncString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new EncString(req.address1) : null;\n domain.address2 = req.address2 != null ? new EncString(req.address2) : null;\n domain.address3 = req.address3 != null ? new EncString(req.address3) : null;\n domain.city = req.city != null ? new EncString(req.city) : null;\n domain.state = req.state != null ? new EncString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new EncString(req.postalCode) : null;\n domain.country = req.country != null ? new EncString(req.country) : null;\n domain.company = req.company != null ? new EncString(req.company) : null;\n domain.email = req.email != null ? new EncString(req.email) : null;\n domain.phone = req.phone != null ? new EncString(req.phone) : null;\n domain.ssn = req.ssn != null ? new EncString(req.ssn) : null;\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new EncString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new EncString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { EncString } from \"../domain/encString\";\nimport { Login as LoginDomain } from \"../domain/login\";\nimport { LoginView } from \"../view/loginView\";\n\nimport { LoginUriExport } from \"./loginUriExport\";\n\nexport class LoginExport {\n static template(): LoginExport {\n const req = new LoginExport();\n req.uris = [];\n req.username = \"jdoe\";\n req.password = \"myp@ssword123\";\n req.totp = \"JBSWY3DPEHPK3PXP\";\n return req;\n }\n\n static toView(req: LoginExport, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map((u) => LoginUriExport.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: LoginExport, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map((u) => LoginUriExport.toDomain(u));\n }\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.password = req.password != null ? new EncString(req.password) : null;\n domain.totp = req.totp != null ? new EncString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUriExport[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map((u) => new LoginUriExport(u));\n } else {\n this.uris = o.uris.map((u) => new LoginUriExport(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { EncString } from \"../domain/encString\";\nimport { LoginUri as LoginUriDomain } from \"../domain/loginUri\";\nimport { LoginUriView } from \"../view/loginUriView\";\n\nexport class LoginUriExport {\n static template(): LoginUriExport {\n const req = new LoginUriExport();\n req.uri = \"https://google.com\";\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUriExport, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUriExport, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new EncString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNote as SecureNoteDomain } from \"../domain/secureNote\";\nimport { SecureNoteView } from \"../view/secureNoteView\";\n\nexport class SecureNoteExport {\n static template(): SecureNoteExport {\n const req = new SecureNoteExport();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNoteExport, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNoteExport, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { KdfType } from \"../../../enums/kdfType\";\nimport { KeysRequest } from \"../keysRequest\";\n\nexport class SetKeyConnectorKeyRequest {\n key: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(\n key: string,\n kdf: KdfType,\n kdfIterations: number,\n orgIdentifier: string,\n keys: KeysRequest\n ) {\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","export class VerifyOTPRequest {\n OTP: string;\n\n constructor(OTP: string) {\n this.OTP = OTP;\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n fileSize: number;\n adminRequest: boolean;\n}\n","export class BillingSyncConfigRequest {\n constructor(private billingSyncKey: string) {}\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherWithIdRequest } from \"./cipherWithIdRequest\";\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach((c) => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { CardApi } from \"../api/cardApi\";\nimport { FieldApi } from \"../api/fieldApi\";\nimport { IdentityApi } from \"../api/identityApi\";\nimport { LoginApi } from \"../api/loginApi\";\nimport { LoginUriApi } from \"../api/loginUriApi\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\nimport { Cipher } from \"../domain/cipher\";\n\nimport { AttachmentRequest } from \"./attachmentRequest\";\nimport { PasswordHistoryRequest } from \"./passwordHistoryRequest\";\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string };\n attachments2: { [id: string]: AttachmentRequest };\n lastKnownRevisionDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n this.reprompt = cipher.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate =\n cipher.login.passwordRevisionDate != null\n ? cipher.login.passwordRevisionDate.toISOString()\n : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n this.login.autofillOnPageLoad = cipher.login.autofillOnPageLoad;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map((u) => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName =\n cipher.card.cardholderName != null ? cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth =\n cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear =\n cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title =\n cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName =\n cipher.identity.firstName != null ? cipher.identity.firstName.encryptedString : null;\n this.identity.middleName =\n cipher.identity.middleName != null ? cipher.identity.middleName.encryptedString : null;\n this.identity.lastName =\n cipher.identity.lastName != null ? cipher.identity.lastName.encryptedString : null;\n this.identity.address1 =\n cipher.identity.address1 != null ? cipher.identity.address1.encryptedString : null;\n this.identity.address2 =\n cipher.identity.address2 != null ? cipher.identity.address2.encryptedString : null;\n this.identity.address3 =\n cipher.identity.address3 != null ? cipher.identity.address3.encryptedString : null;\n this.identity.city =\n cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state =\n cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode =\n cipher.identity.postalCode != null ? cipher.identity.postalCode.encryptedString : null;\n this.identity.country =\n cipher.identity.country != null ? cipher.identity.country.encryptedString : null;\n this.identity.company =\n cipher.identity.company != null ? cipher.identity.company.encryptedString : null;\n this.identity.email =\n cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone =\n cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn =\n cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username =\n cipher.identity.username != null ? cipher.identity.username.encryptedString : null;\n this.identity.passportNumber =\n cipher.identity.passportNumber != null\n ? cipher.identity.passportNumber.encryptedString\n : null;\n this.identity.licenseNumber =\n cipher.identity.licenseNumber != null\n ? cipher.identity.licenseNumber.encryptedString\n : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map((f) => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n field.linkedId = f.linkedId;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach((ph) => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach((attachment) => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { Cipher } from \"../domain/cipher\";\n\nimport { CipherRequest } from \"./cipherRequest\";\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Collection } from \"../domain/collection\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { PlatformUtilsService } from \"../../abstractions/platformUtils.service\";\nimport { DeviceType } from \"../../enums/deviceType\";\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","import { EmailTokenRequest } from \"./emailTokenRequest\";\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class EmailTokenRequest extends SecretVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { Folder } from \"../domain/folder\";\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import { Folder } from \"../domain/folder\";\n\nimport { FolderRequest } from \"./folderRequest\";\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class ApiTokenRequest extends TokenRequest {\n constructor(\n public clientId: string,\n public clientSecret: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken() {\n const obj = super.toIdentityToken(this.clientId);\n\n obj.scope = this.clientId.startsWith(\"organization\") ? \"api.organization\" : \"api\";\n obj.grant_type = \"client_credentials\";\n obj.client_secret = this.clientSecret;\n\n return obj;\n }\n}\n","import { ClientType } from \"../../../enums/clientType\";\nimport { Utils } from \"../../../misc/utils\";\nimport { CaptchaProtectedRequest } from \"../captchaProtectedRequest\";\nimport { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class PasswordTokenRequest extends TokenRequest implements CaptchaProtectedRequest {\n constructor(\n public email: string,\n public masterPasswordHash: string,\n public captchaResponse: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken(clientId: ClientType) {\n const obj = super.toIdentityToken(clientId);\n\n obj.grant_type = \"password\";\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n\n if (this.captchaResponse != null) {\n obj.captchaResponse = this.captchaResponse;\n }\n\n return obj;\n }\n\n alterIdentityTokenHeaders(headers: Headers) {\n headers.set(\"Auth-Email\", Utils.fromUtf8ToUrlB64(this.email));\n }\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequest } from \"./tokenRequest\";\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport class SsoTokenRequest extends TokenRequest {\n constructor(\n public code: string,\n public codeVerifier: string,\n public redirectUri: string,\n protected twoFactor: TokenRequestTwoFactor,\n device?: DeviceRequest\n ) {\n super(twoFactor, device);\n }\n\n toIdentityToken(clientId: string) {\n const obj = super.toIdentityToken(clientId);\n\n obj.grant_type = \"authorization_code\";\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n\n return obj;\n }\n}\n","import { DeviceRequest } from \"../deviceRequest\";\n\nimport { TokenRequestTwoFactor } from \"./tokenRequestTwoFactor\";\n\nexport abstract class TokenRequest {\n protected device?: DeviceRequest;\n\n constructor(protected twoFactor: TokenRequestTwoFactor, device?: DeviceRequest) {\n this.device = device != null ? device : null;\n }\n\n // eslint-disable-next-line\n alterIdentityTokenHeaders(headers: Headers) {\n // Implemented in subclass if required\n }\n\n setTwoFactor(twoFactor: TokenRequestTwoFactor) {\n this.twoFactor = twoFactor;\n }\n\n protected toIdentityToken(clientId: string) {\n const obj: any = {\n scope: \"api offline_access\",\n client_id: clientId,\n };\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.twoFactor.token && this.twoFactor.provider != null) {\n obj.twoFactorToken = this.twoFactor.token;\n obj.twoFactorProvider = this.twoFactor.provider;\n obj.twoFactorRemember = this.twoFactor.remember ? \"1\" : \"0\";\n }\n\n return obj;\n }\n}\n","import { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nexport class TokenRequestTwoFactor {\n constructor(\n public provider: TwoFactorProviderType = null,\n public token: string = null,\n public remember: boolean = false\n ) {}\n}\n","import { CipherRequest } from \"./cipherRequest\";\nimport { FolderRequest } from \"./folderRequest\";\nimport { KvpRequest } from \"./kvpRequest\";\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from \"./cipherRequest\";\nimport { CollectionRequest } from \"./collectionRequest\";\nimport { KvpRequest } from \"./kvpRequest\";\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { PasswordRequest } from \"./passwordRequest\";\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class KeyConnectorUserKeyRequest {\n key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { PlanSponsorshipType } from \"../../../enums/planSponsorshipType\";\n\nexport class OrganizationSponsorshipRedeemRequest {\n planSponsorshipType: PlanSponsorshipType;\n sponsoredOrganizationId: string;\n}\n","import { SsoConfigApi } from \"../../api/ssoConfigApi\";\n\nexport class OrganizationSsoRequest {\n enabled = false;\n data: SsoConfigApi;\n}\n","import { OrganizationApiKeyType } from \"../../enums/organizationApiKeyType\";\n\nimport { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class OrganizationApiKeyRequest extends SecretVerificationRequest {\n type: OrganizationApiKeyType = OrganizationApiKeyType.Default;\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\n\nimport { BillingSyncConfigRequest } from \"./billingSyncConfigRequest\";\n\n/**API request config types for OrganizationConnectionRequest */\nexport type OrganizationConnectionRequestConfigs = BillingSyncConfigRequest;\n\nexport class OrganizationConnectionRequest {\n constructor(\n public organizationId: string,\n public type: OrganizationConnectionType,\n public enabled: boolean,\n public config: OrganizationConnectionRequestConfigs\n ) {}\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { PlanType } from \"../../enums/planType\";\n\nimport { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n keys: OrganizationKeysRequest;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n maxAutoscaleSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { KeysRequest } from \"./keysRequest\";\n\nexport class OrganizationKeysRequest extends KeysRequest {\n constructor(publicKey: string, encryptedPrivateKey: string) {\n super(publicKey, encryptedPrivateKey);\n }\n}\n","export class OrganizationSubscriptionUpdateRequest {\n constructor(public seatAdjustment: number, public maxAutoscaleSeats?: number) {}\n}\n","import { TaxInfoUpdateRequest } from \"./taxInfoUpdateRequest\";\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","import { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n keys: OrganizationKeysRequest;\n}\n","import { PlanType } from \"../../enums/planType\";\n\nimport { OrganizationKeysRequest } from \"./organizationKeysRequest\";\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n keys: OrganizationKeysRequest;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","type OrganizationUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class OrganizationUserBulkConfirmRequest {\n keys: OrganizationUserBulkRequestEntry[];\n\n constructor(keys: OrganizationUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","export class OrganizationUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserResetPasswordEnrollmentRequest {\n resetPasswordKey: string;\n}\n","export class OrganizationUserResetPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","import { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { SelectionReadOnlyRequest } from \"./selectionReadOnlyRequest\";\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class PasswordRequest extends SecretVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../request/organizationTaxInfoUpdateRequest\";\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","import { PolicyType } from \"../../enums/policyType\";\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","export class ProviderAddOrganizationRequest {\n organizationId: string;\n key: string;\n}\n","import { OrganizationCreateRequest } from \"../organizationCreateRequest\";\n\nexport class ProviderOrganizationCreateRequest {\n constructor(\n public clientOwnerEmail: string,\n public organizationCreateRequest: OrganizationCreateRequest\n ) {}\n}\n","export class ProviderSetupRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n token: string;\n key: string;\n}\n","export class ProviderUpdateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n}\n","export class ProviderUserAcceptRequest {\n token: string;\n}\n","type ProviderUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class ProviderUserBulkConfirmRequest {\n keys: ProviderUserBulkRequestEntry[];\n\n constructor(keys: ProviderUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","export class ProviderUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","export class ProviderUserConfirmRequest {\n key: string;\n}\n","import { ProviderUserType } from \"../../../enums/providerUserType\";\n\nexport class ProviderUserInviteRequest {\n emails: string[] = [];\n type: ProviderUserType;\n}\n","import { ProviderUserType } from \"../../../enums/providerUserType\";\n\nexport class ProviderUserUpdateRequest {\n type: ProviderUserType;\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { CaptchaProtectedRequest } from \"./captchaProtectedRequest\";\nimport { KeysRequest } from \"./keysRequest\";\nimport { ReferenceEventRequest } from \"./referenceEventRequest\";\n\nexport class RegisterRequest implements CaptchaProtectedRequest {\n masterPasswordHint: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n\n constructor(\n public email: string,\n public name: string,\n public masterPasswordHash: string,\n masterPasswordHint: string,\n public key: string,\n public kdf: KdfType,\n public kdfIterations: number,\n public referenceData: ReferenceEventRequest,\n public captchaResponse: string\n ) {\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","export class SecretVerificationRequest {\n masterPasswordHash: string;\n otp: string;\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\nimport { Send } from \"../domain/send\";\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n this.hideEmail = send.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { Send } from \"../domain/send\";\n\nimport { SendRequest } from \"./sendRequest\";\n\nexport class SendWithIdRequest extends SendRequest {\n id: string;\n\n constructor(send: Send) {\n super(send);\n this.id = send.id;\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { KeysRequest } from \"./keysRequest\";\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(\n masterPasswordHash: string,\n key: string,\n masterPasswordHint: string,\n kdf: KdfType,\n kdfIterations: number,\n orgIdentifier: string,\n keys: KeysRequest\n ) {\n this.masterPasswordHash = masterPasswordHash;\n this.key = key;\n this.masterPasswordHint = masterPasswordHint;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorEmailRequest extends SecretVerificationRequest {\n email: string;\n deviceIdentifier: string;\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorProviderRequest extends SecretVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class TwoFactorRecoveryRequest extends SecretVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import { CipherWithIdRequest } from \"./cipherWithIdRequest\";\nimport { FolderWithIdRequest } from \"./folderWithIdRequest\";\nimport { SendWithIdRequest } from \"./sendWithIdRequest\";\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n sends: SendWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = \"en-US\"; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { OrganizationUserResetPasswordRequest } from \"./organizationUserResetPasswordRequest\";\n\nexport class UpdateTempPasswordRequest extends OrganizationUserResetPasswordRequest {\n masterPasswordHint: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorAuthenticatorRequest extends SecretVerificationRequest {\n token: string;\n key: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorDuoRequest extends SecretVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorEmailRequest extends SecretVerificationRequest {\n token: string;\n email: string;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorWebAuthnDeleteRequest extends SecretVerificationRequest {\n id: number;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorWebAuthnRequest extends SecretVerificationRequest {\n deviceResponse: PublicKeyCredential;\n name: string;\n id: number;\n}\n","import { SecretVerificationRequest } from \"./secretVerificationRequest\";\n\nexport class UpdateTwoFactorYubioOtpRequest extends SecretVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty(\"ApiKey\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.url = this.getResponseProperty(\"Url\");\n this.fileName = this.getResponseProperty(\"FileName\");\n this.key = this.getResponseProperty(\"Key\");\n this.size = this.getResponseProperty(\"Size\");\n this.sizeName = this.getResponseProperty(\"SizeName\");\n }\n}\n","import { FileUploadType } from \"../../enums/fileUploadType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\n\nexport class AttachmentUploadDataResponse extends BaseResponse {\n attachmentId: string;\n fileUploadType: FileUploadType;\n cipherResponse: CipherResponse;\n cipherMiniResponse: CipherResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.attachmentId = this.getResponseProperty(\"AttachmentId\");\n this.fileUploadType = this.getResponseProperty(\"FileUploadType\");\n const cipherResponse = this.getResponseProperty(\"CipherResponse\");\n const cipherMiniResponse = this.getResponseProperty(\"CipherMiniResponse\");\n this.cipherResponse = cipherResponse == null ? null : new CipherResponse(cipherResponse);\n this.cipherMiniResponse =\n cipherMiniResponse == null ? null : new CipherResponse(cipherMiniResponse);\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(\n propertyName: string,\n response: any = null,\n exactName = false\n ): any {\n if (propertyName == null || propertyName === \"\") {\n throw new Error(\"propertyName must not be null/empty.\");\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { BillingInvoiceResponse, BillingTransactionResponse } from \"./billingResponse\";\n\nexport class BillingHistoryResponse extends BaseResponse {\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const transactions = this.getResponseProperty(\"Transactions\");\n const invoices = this.getResponseProperty(\"Invoices\");\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n\n get hasNoHistory() {\n return this.invoices.length == 0 && this.transactions.length == 0;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { BillingSourceResponse } from \"./billingResponse\";\n\nexport class BillingPaymentResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty(\"Balance\");\n const paymentSource = this.getResponseProperty(\"PaymentSource\");\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n }\n}\n","import { PaymentMethodType } from \"../../enums/paymentMethodType\";\nimport { TransactionType } from \"../../enums/transactionType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty(\"Balance\");\n const paymentSource = this.getResponseProperty(\"PaymentSource\");\n const transactions = this.getResponseProperty(\"Transactions\");\n const invoices = this.getResponseProperty(\"Invoices\");\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.cardBrand = this.getResponseProperty(\"CardBrand\");\n this.description = this.getResponseProperty(\"Description\");\n this.needsVerification = this.getResponseProperty(\"NeedsVerification\");\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty(\"Url\");\n this.pdfUrl = this.getResponseProperty(\"PdfUrl\");\n this.number = this.getResponseProperty(\"Number\");\n this.paid = this.getResponseProperty(\"Paid\");\n this.date = this.getResponseProperty(\"Date\");\n this.amount = this.getResponseProperty(\"Amount\");\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty(\"CreatedDate\");\n this.amount = this.getResponseProperty(\"Amount\");\n this.refunded = this.getResponseProperty(\"Refunded\");\n this.partiallyRefunded = this.getResponseProperty(\"PartiallyRefunded\");\n this.refundedAmount = this.getResponseProperty(\"RefundedAmount\");\n this.type = this.getResponseProperty(\"Type\");\n this.paymentMethodType = this.getResponseProperty(\"PaymentMethodType\");\n this.details = this.getResponseProperty(\"Details\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty(\"AddedDate\");\n this.breachDate = this.getResponseProperty(\"BreachDate\");\n this.dataClasses = this.getResponseProperty(\"DataClasses\");\n this.description = this.getResponseProperty(\"Description\");\n this.domain = this.getResponseProperty(\"Domain\");\n this.isActive = this.getResponseProperty(\"IsActive\");\n this.isVerified = this.getResponseProperty(\"IsVerified\");\n this.logoPath = this.getResponseProperty(\"LogoPath\");\n this.modifiedDate = this.getResponseProperty(\"ModifiedDate\");\n this.name = this.getResponseProperty(\"Name\");\n this.pwnCount = this.getResponseProperty(\"PwnCount\");\n this.title = this.getResponseProperty(\"Title\");\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CardApi } from \"../api/cardApi\";\nimport { FieldApi } from \"../api/fieldApi\";\nimport { IdentityApi } from \"../api/identityApi\";\nimport { LoginApi } from \"../api/loginApi\";\nimport { SecureNoteApi } from \"../api/secureNoteApi\";\n\nimport { AttachmentResponse } from \"./attachmentResponse\";\nimport { BaseResponse } from \"./baseResponse\";\nimport { PasswordHistoryResponse } from \"./passwordHistoryResponse\";\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.folderId = this.getResponseProperty(\"FolderId\") || null;\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.notes = this.getResponseProperty(\"Notes\");\n this.favorite = this.getResponseProperty(\"Favorite\") || false;\n this.edit = !!this.getResponseProperty(\"Edit\");\n if (this.getResponseProperty(\"ViewPassword\") == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty(\"ViewPassword\");\n }\n this.organizationUseTotp = this.getResponseProperty(\"OrganizationUseTotp\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n this.collectionIds = this.getResponseProperty(\"CollectionIds\");\n this.deletedDate = this.getResponseProperty(\"DeletedDate\");\n\n const login = this.getResponseProperty(\"Login\");\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty(\"Card\");\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty(\"Identity\");\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty(\"SecureNote\");\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty(\"Fields\");\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty(\"Attachments\");\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty(\"PasswordHistory\");\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n\n this.reprompt = this.getResponseProperty(\"Reprompt\") || CipherRepromptType.None;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.name = this.getResponseProperty(\"Name\");\n this.externalId = this.getResponseProperty(\"ExternalId\");\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty(\"ReadOnly\") || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty(\"Groups\");\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { GlobalDomainResponse } from \"./globalDomainResponse\";\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty(\"EquivalentDomains\");\n const globalEquivalentDomains = this.getResponseProperty(\"GlobalEquivalentDomains\");\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map(\n (d: any) => new GlobalDomainResponse(d)\n );\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { EmergencyAccessStatusType } from \"../../enums/emergencyAccessStatusType\";\nimport { EmergencyAccessType } from \"../../enums/emergencyAccessType\";\nimport { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.granteeId = this.getResponseProperty(\"GranteeId\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.waitTimeDays = this.getResponseProperty(\"WaitTimeDays\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.grantorId = this.getResponseProperty(\"GrantorId\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.waitTimeDays = this.getResponseProperty(\"WaitTimeDays\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty(\"KeyEncrypted\");\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty(\"KeyEncrypted\");\n\n const ciphers = this.getResponseProperty(\"Ciphers\");\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import { Utils } from \"../../misc/utils\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[] };\n statusCode: number;\n captchaRequired: boolean;\n captchaSiteKey: string;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty(\"ErrorModel\");\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty(\"Message\", errorModel);\n this.validationErrors = this.getResponseProperty(\"ValidationErrors\", errorModel);\n this.captchaSiteKey = this.validationErrors?.HCaptcha_SiteKey?.[0];\n this.captchaRequired = !Utils.isNullOrWhitespace(this.captchaSiteKey);\n } else {\n if (status === 429) {\n this.message = \"Rate limit exceeded. Try again later.\";\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n // eslint-disable-next-line\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n // eslint-disable-next-line\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = \"\";\n if (key.indexOf(\"[\") > -1 && key.indexOf(\"]\") > -1) {\n const lastSep = key.lastIndexOf(\".\");\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + \": \";\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import { DeviceType } from \"../../enums/deviceType\";\nimport { EventType } from \"../../enums/eventType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n providerId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n providerUserId: string;\n providerOrganizationId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n installationId: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.cipherId = this.getResponseProperty(\"CipherId\");\n this.collectionId = this.getResponseProperty(\"CollectionId\");\n this.groupId = this.getResponseProperty(\"GroupId\");\n this.policyId = this.getResponseProperty(\"PolicyId\");\n this.organizationUserId = this.getResponseProperty(\"OrganizationUserId\");\n this.providerUserId = this.getResponseProperty(\"ProviderUserId\");\n this.providerOrganizationId = this.getResponseProperty(\"ProviderOrganizationId\");\n this.actingUserId = this.getResponseProperty(\"ActingUserId\");\n this.date = this.getResponseProperty(\"Date\");\n this.deviceType = this.getResponseProperty(\"DeviceType\");\n this.ipAddress = this.getResponseProperty(\"IpAddress\");\n this.installationId = this.getResponseProperty(\"InstallationId\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.domains = this.getResponseProperty(\"Domains\");\n this.excluded = this.getResponseProperty(\"Excluded\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.name = this.getResponseProperty(\"Name\");\n this.accessAll = this.getResponseProperty(\"AccessAll\");\n this.externalId = this.getResponseProperty(\"ExternalId\");\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityCaptchaResponse extends BaseResponse {\n siteKey: string;\n\n constructor(response: any) {\n super(response);\n this.siteKey = this.getResponseProperty(\"HCaptcha_SiteKey\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n forcePasswordReset: boolean;\n apiUseKeyConnector: boolean;\n keyConnectorUrl: string;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty(\"ResetMasterPassword\");\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.key = this.getResponseProperty(\"Key\");\n this.twoFactorToken = this.getResponseProperty(\"TwoFactorToken\");\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n this.forcePasswordReset = this.getResponseProperty(\"ForcePasswordReset\");\n this.apiUseKeyConnector = this.getResponseProperty(\"ApiUseKeyConnector\");\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n captchaToken: string;\n\n constructor(response: any) {\n super(response);\n this.captchaToken = this.getResponseProperty(\"CaptchaBypassToken\");\n this.twoFactorProviders = this.getResponseProperty(\"TwoFactorProviders\");\n const twoFactorProviders2 = this.getResponseProperty(\"TwoFactorProviders2\");\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n // eslint-disable-next-line\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class KeyConnectorUserKeyResponse extends BaseResponse {\n key: string;\n\n constructor(response: any) {\n super(response);\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class KeysResponse extends BaseResponse {\n privateKey: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.publicKey = this.getResponseProperty(\"PublicKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty(\"Data\");\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty(\"ContinuationToken\");\n }\n}\n","import { NotificationType } from \"../../enums/notificationType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty(\"ContextId\");\n this.type = this.getResponseProperty(\"Type\");\n\n const payload = this.getResponseProperty(\"Payload\");\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n break;\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.collectionIds = this.getResponseProperty(\"CollectionIds\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty(\"UserId\");\n this.date = new Date(this.getResponseProperty(\"Date\"));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.revisionDate = new Date(this.getResponseProperty(\"RevisionDate\"));\n }\n}\n","import { SsoConfigApi } from \"../../api/ssoConfigApi\";\nimport { BaseResponse } from \"../baseResponse\";\n\nexport class OrganizationSsoResponse extends BaseResponse {\n enabled: boolean;\n data: SsoConfigApi;\n urls: SsoUrls;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.data =\n this.getResponseProperty(\"Data\") != null\n ? new SsoConfigApi(this.getResponseProperty(\"Data\"))\n : null;\n this.urls = new SsoUrls(this.getResponseProperty(\"Urls\"));\n }\n}\n\nclass SsoUrls extends BaseResponse {\n callbackPath: string;\n signedOutCallbackPath: string;\n spEntityId: string;\n spMetadataUrl: string;\n spAcsUrl: string;\n\n constructor(response: any) {\n super(response);\n this.callbackPath = this.getResponseProperty(\"CallbackPath\");\n this.signedOutCallbackPath = this.getResponseProperty(\"SignedOutCallbackPath\");\n this.spEntityId = this.getResponseProperty(\"SpEntityId\");\n this.spMetadataUrl = this.getResponseProperty(\"SpMetadataUrl\");\n this.spAcsUrl = this.getResponseProperty(\"SpAcsUrl\");\n }\n}\n","import { OrganizationApiKeyType } from \"../../enums/organizationApiKeyType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationApiKeyInformationResponse extends BaseResponse {\n keyType: OrganizationApiKeyType;\n\n constructor(response: any) {\n super(response);\n this.keyType = this.getResponseProperty(\"KeyType\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationAutoEnrollStatusResponse extends BaseResponse {\n id: string;\n resetPasswordEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.resetPasswordEnabled = this.getResponseProperty(\"ResetPasswordEnabled\");\n }\n}\n","import { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\n\nimport { BillingSyncConfigApi } from \"../api/billingSyncConfigApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\n/**API response config types for OrganizationConnectionResponse */\nexport type OrganizationConnectionConfigApis = BillingSyncConfigApi;\n\nexport class OrganizationConnectionResponse<\n TConfig extends OrganizationConnectionConfigApis\n> extends BaseResponse {\n id: string;\n type: OrganizationConnectionType;\n organizationId: string;\n enabled: boolean;\n config: TConfig;\n\n constructor(response: any, configType: { new (response: any): TConfig }) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.type = this.getResponseProperty(\"Type\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n const rawConfig = this.getResponseProperty(\"Config\");\n this.config = rawConfig == null ? null : new configType(rawConfig);\n }\n}\n","import { KeysResponse } from \"./keysResponse\";\n\nexport class OrganizationKeysResponse extends KeysResponse {\n constructor(response: any) {\n super(response);\n }\n}\n","import { PlanType } from \"../../enums/planType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { PlanResponse } from \"./planResponse\";\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxAutoscaleSeats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useResetPassword: boolean;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.identifier = this.getResponseProperty(\"Identifier\");\n this.name = this.getResponseProperty(\"Name\");\n this.businessName = this.getResponseProperty(\"BusinessName\");\n this.businessAddress1 = this.getResponseProperty(\"BusinessAddress1\");\n this.businessAddress2 = this.getResponseProperty(\"BusinessAddress2\");\n this.businessAddress3 = this.getResponseProperty(\"BusinessAddress3\");\n this.businessCountry = this.getResponseProperty(\"BusinessCountry\");\n this.businessTaxNumber = this.getResponseProperty(\"BusinessTaxNumber\");\n this.billingEmail = this.getResponseProperty(\"BillingEmail\");\n const plan = this.getResponseProperty(\"Plan\");\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty(\"PlanType\");\n this.seats = this.getResponseProperty(\"Seats\");\n this.maxAutoscaleSeats = this.getResponseProperty(\"MaxAutoscaleSeats\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.useGroups = this.getResponseProperty(\"UseGroups\");\n this.useDirectory = this.getResponseProperty(\"UseDirectory\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n this.useTotp = this.getResponseProperty(\"UseTotp\");\n this.use2fa = this.getResponseProperty(\"Use2fa\");\n this.useApi = this.getResponseProperty(\"UseApi\");\n this.useResetPassword = this.getResponseProperty(\"UseResetPassword\");\n this.hasPublicAndPrivateKeys = this.getResponseProperty(\"HasPublicAndPrivateKeys\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationSponsorshipSyncStatusResponse extends BaseResponse {\n lastSyncDate?: Date;\n\n constructor(response: any) {\n super(response);\n const lastSyncDate = this.getResponseProperty(\"LastSyncDate\");\n if (lastSyncDate) {\n this.lastSyncDate = new Date(lastSyncDate);\n }\n }\n}\n","import { OrganizationResponse } from \"./organizationResponse\";\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from \"./subscriptionResponse\";\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty(\"StorageName\");\n this.storageGb = this.getResponseProperty(\"StorageGb\");\n const subscription = this.getResponseProperty(\"Subscription\");\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty(\"UpcomingInvoice\");\n this.upcomingInvoice =\n upcomingInvoice == null\n ? null\n : new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty(\"Expiration\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationUserBulkPublicKeyResponse extends BaseResponse {\n id: string;\n userId: string;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class OrganizationUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.error = this.getResponseProperty(\"Error\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\nimport { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { SelectionReadOnlyResponse } from \"./selectionReadOnlyResponse\";\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"Permissions\"));\n this.accessAll = this.getResponseProperty(\"AccessAll\");\n this.resetPasswordEnrolled = this.getResponseProperty(\"ResetPasswordEnrolled\");\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n usesKeyConnector: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.twoFactorEnabled = this.getResponseProperty(\"TwoFactorEnabled\");\n this.usesKeyConnector = this.getResponseProperty(\"UsesKeyConnector\") ?? false;\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n\nexport class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n resetPasswordKey: string;\n encryptedPrivateKey: string;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n this.resetPasswordKey = this.getResponseProperty(\"ResetPasswordKey\");\n this.encryptedPrivateKey = this.getResponseProperty(\"EncryptedPrivateKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty(\"Password\");\n this.lastUsedDate = this.getResponseProperty(\"LastUsedDate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { ProfileResponse } from \"./profileResponse\";\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty(\"UserProfile\");\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty(\"PaymentIntentClientSecret\");\n this.success = this.getResponseProperty(\"Success\");\n }\n}\n","import { PlanType } from \"../../enums/planType\";\nimport { ProductType } from \"../../enums/productType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n hasResetPassword: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty(\"Type\");\n this.product = this.getResponseProperty(\"Product\");\n this.name = this.getResponseProperty(\"Name\");\n this.isAnnual = this.getResponseProperty(\"IsAnnual\");\n this.nameLocalizationKey = this.getResponseProperty(\"NameLocalizationKey\");\n this.descriptionLocalizationKey = this.getResponseProperty(\"DescriptionLocalizationKey\");\n this.canBeUsedByBusiness = this.getResponseProperty(\"CanBeUsedByBusiness\");\n this.baseSeats = this.getResponseProperty(\"BaseSeats\");\n this.baseStorageGb = this.getResponseProperty(\"BaseStorageGb\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxUsers = this.getResponseProperty(\"MaxUsers\");\n this.hasAdditionalSeatsOption = this.getResponseProperty(\"HasAdditionalSeatsOption\");\n this.maxAdditionalSeats = this.getResponseProperty(\"MaxAdditionalSeats\");\n this.hasAdditionalStorageOption = this.getResponseProperty(\"HasAdditionalStorageOption\");\n this.maxAdditionalStorage = this.getResponseProperty(\"MaxAdditionalStorage\");\n this.hasPremiumAccessOption = this.getResponseProperty(\"HasPremiumAccessOption\");\n this.trialPeriodDays = this.getResponseProperty(\"TrialPeriodDays\");\n this.hasSelfHost = this.getResponseProperty(\"HasSelfHost\");\n this.hasPolicies = this.getResponseProperty(\"HasPolicies\");\n this.hasGroups = this.getResponseProperty(\"HasGroups\");\n this.hasDirectory = this.getResponseProperty(\"HasDirectory\");\n this.hasEvents = this.getResponseProperty(\"HasEvents\");\n this.hasTotp = this.getResponseProperty(\"HasTotp\");\n this.has2fa = this.getResponseProperty(\"Has2fa\");\n this.hasApi = this.getResponseProperty(\"HasApi\");\n this.hasSso = this.getResponseProperty(\"HasSso\");\n this.hasResetPassword = this.getResponseProperty(\"HasResetPassword\");\n this.usersGetPremium = this.getResponseProperty(\"UsersGetPremium\");\n this.upgradeSortOrder = this.getResponseProperty(\"UpgradeSortOrder\");\n this.displaySortOrder = this.getResponseProperty(\"SortOrder\");\n this.legacyYear = this.getResponseProperty(\"LegacyYear\");\n this.disabled = this.getResponseProperty(\"Disabled\");\n this.stripePlanId = this.getResponseProperty(\"StripePlanId\");\n this.stripeSeatPlanId = this.getResponseProperty(\"StripeSeatPlanId\");\n this.stripeStoragePlanId = this.getResponseProperty(\"StripeStoragePlanId\");\n this.stripePremiumAccessPlanId = this.getResponseProperty(\"StripePremiumAccessPlanId\");\n this.basePrice = this.getResponseProperty(\"BasePrice\");\n this.seatPrice = this.getResponseProperty(\"SeatPrice\");\n this.additionalStoragePricePerGb = this.getResponseProperty(\"AdditionalStoragePricePerGb\");\n this.premiumAccessOptionPrice = this.getResponseProperty(\"PremiumAccessOptionPrice\");\n }\n}\n","import { PolicyType } from \"../../enums/policyType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.type = this.getResponseProperty(\"Type\");\n this.data = this.getResponseProperty(\"Data\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n }\n}\n","import { KdfType } from \"../../enums/kdfType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty(\"Kdf\");\n this.kdfIterations = this.getResponseProperty(\"KdfIterations\");\n }\n}\n","import { OrganizationUserStatusType } from \"../../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../../enums/organizationUserType\";\nimport { ProductType } from \"../../enums/productType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n providerId: string;\n providerName: string;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n familySponsorshipLastSyncDate?: Date;\n familySponsorshipValidUntil?: Date;\n familySponsorshipToDelete?: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.usePolicies = this.getResponseProperty(\"UsePolicies\");\n this.useGroups = this.getResponseProperty(\"UseGroups\");\n this.useDirectory = this.getResponseProperty(\"UseDirectory\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n this.useTotp = this.getResponseProperty(\"UseTotp\");\n this.use2fa = this.getResponseProperty(\"Use2fa\");\n this.useApi = this.getResponseProperty(\"UseApi\");\n this.useSso = this.getResponseProperty(\"UseSso\");\n this.useKeyConnector = this.getResponseProperty(\"UseKeyConnector\") ?? false;\n this.useResetPassword = this.getResponseProperty(\"UseResetPassword\");\n this.selfHost = this.getResponseProperty(\"SelfHost\");\n this.usersGetPremium = this.getResponseProperty(\"UsersGetPremium\");\n this.seats = this.getResponseProperty(\"Seats\");\n this.maxCollections = this.getResponseProperty(\"MaxCollections\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.key = this.getResponseProperty(\"Key\");\n this.hasPublicAndPrivateKeys = this.getResponseProperty(\"HasPublicAndPrivateKeys\");\n this.status = this.getResponseProperty(\"Status\");\n this.type = this.getResponseProperty(\"Type\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.ssoBound = this.getResponseProperty(\"SsoBound\");\n this.identifier = this.getResponseProperty(\"Identifier\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"permissions\"));\n this.resetPasswordEnrolled = this.getResponseProperty(\"ResetPasswordEnrolled\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.providerName = this.getResponseProperty(\"ProviderName\");\n this.familySponsorshipFriendlyName = this.getResponseProperty(\"FamilySponsorshipFriendlyName\");\n this.familySponsorshipAvailable = this.getResponseProperty(\"FamilySponsorshipAvailable\");\n this.planProductType = this.getResponseProperty(\"PlanProductType\");\n this.keyConnectorEnabled = this.getResponseProperty(\"KeyConnectorEnabled\") ?? false;\n this.keyConnectorUrl = this.getResponseProperty(\"KeyConnectorUrl\");\n const familySponsorshipLastSyncDateString = this.getResponseProperty(\n \"FamilySponsorshipLastSyncDate\"\n );\n if (familySponsorshipLastSyncDateString) {\n this.familySponsorshipLastSyncDate = new Date(familySponsorshipLastSyncDateString);\n }\n const familySponsorshipValidUntilString = this.getResponseProperty(\n \"FamilySponsorshipValidUntil\"\n );\n if (familySponsorshipValidUntilString) {\n this.familySponsorshipValidUntil = new Date(familySponsorshipValidUntilString);\n }\n this.familySponsorshipToDelete = this.getResponseProperty(\"FamilySponsorshipToDelete\");\n }\n}\n","import { ProfileOrganizationResponse } from \"./profileOrganizationResponse\";\n\nexport class ProfileProviderOrganizationResponse extends ProfileOrganizationResponse {\n constructor(response: any) {\n super(response);\n this.keyConnectorEnabled = false;\n }\n}\n","import { ProviderUserStatusType } from \"../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../enums/providerUserType\";\nimport { PermissionsApi } from \"../api/permissionsApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class ProfileProviderResponse extends BaseResponse {\n id: string;\n name: string;\n key: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n permissions: PermissionsApi;\n userId: string;\n useEvents: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.key = this.getResponseProperty(\"Key\");\n this.status = this.getResponseProperty(\"Status\");\n this.type = this.getResponseProperty(\"Type\");\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"permissions\"));\n this.userId = this.getResponseProperty(\"UserId\");\n this.useEvents = this.getResponseProperty(\"UseEvents\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { ProfileOrganizationResponse } from \"./profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"./profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"./profileProviderResponse\";\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n forcePasswordReset: boolean;\n usesKeyConnector: boolean;\n organizations: ProfileOrganizationResponse[] = [];\n providers: ProfileProviderResponse[] = [];\n providerOrganizations: ProfileProviderOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n this.emailVerified = this.getResponseProperty(\"EmailVerified\");\n this.masterPasswordHint = this.getResponseProperty(\"MasterPasswordHint\");\n this.premium = this.getResponseProperty(\"Premium\");\n this.culture = this.getResponseProperty(\"Culture\");\n this.twoFactorEnabled = this.getResponseProperty(\"TwoFactorEnabled\");\n this.key = this.getResponseProperty(\"Key\");\n this.privateKey = this.getResponseProperty(\"PrivateKey\");\n this.securityStamp = this.getResponseProperty(\"SecurityStamp\");\n this.forcePasswordReset = this.getResponseProperty(\"ForcePasswordReset\") ?? false;\n this.usesKeyConnector = this.getResponseProperty(\"UsesKeyConnector\") ?? false;\n\n const organizations = this.getResponseProperty(\"Organizations\");\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n const providers = this.getResponseProperty(\"Providers\");\n if (providers != null) {\n this.providers = providers.map((o: any) => new ProfileProviderResponse(o));\n }\n const providerOrganizations = this.getResponseProperty(\"ProviderOrganizations\");\n if (providerOrganizations != null) {\n this.providerOrganizations = providerOrganizations.map(\n (o: any) => new ProfileProviderOrganizationResponse(o)\n );\n }\n }\n}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderOrganizationResponse extends BaseResponse {\n id: string;\n providerId: string;\n organizationId: string;\n key: string;\n settings: string;\n creationDate: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.providerId = this.getResponseProperty(\"ProviderId\");\n this.organizationId = this.getResponseProperty(\"OrganizationId\");\n this.key = this.getResponseProperty(\"Key\");\n this.settings = this.getResponseProperty(\"Settings\");\n this.creationDate = this.getResponseProperty(\"CreationDate\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n }\n}\n\nexport class ProviderOrganizationOrganizationDetailsResponse extends ProviderOrganizationResponse {\n organizationName: string;\n\n constructor(response: any) {\n super(response);\n this.organizationName = this.getResponseProperty(\"OrganizationName\");\n }\n}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderResponse extends BaseResponse {\n id: string;\n name: string;\n businessName: string;\n billingEmail: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.name = this.getResponseProperty(\"Name\");\n this.businessName = this.getResponseProperty(\"BusinessName\");\n this.billingEmail = this.getResponseProperty(\"BillingEmail\");\n }\n}\n","import { OrganizationUserBulkPublicKeyResponse } from \"../organizationUserBulkPublicKeyResponse\";\n\nexport class ProviderUserBulkPublicKeyResponse extends OrganizationUserBulkPublicKeyResponse {}\n","import { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.error = this.getResponseProperty(\"Error\");\n }\n}\n","import { ProviderUserStatusType } from \"../../../enums/providerUserStatusType\";\nimport { ProviderUserType } from \"../../../enums/providerUserType\";\nimport { PermissionsApi } from \"../../api/permissionsApi\";\nimport { BaseResponse } from \"../baseResponse\";\n\nexport class ProviderUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: ProviderUserType;\n status: ProviderUserStatusType;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.userId = this.getResponseProperty(\"UserId\");\n this.type = this.getResponseProperty(\"Type\");\n this.status = this.getResponseProperty(\"Status\");\n this.permissions = new PermissionsApi(this.getResponseProperty(\"Permissions\"));\n }\n}\n\nexport class ProviderUserUserDetailsResponse extends ProviderUserResponse {\n name: string;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.email = this.getResponseProperty(\"Email\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.readOnly = this.getResponseProperty(\"ReadOnly\");\n this.hidePasswords = this.getResponseProperty(\"HidePasswords\");\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n\n const text = this.getResponseProperty(\"Text\");\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty(\"File\");\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty(\"ExpirationDate\");\n this.creatorIdentifier = this.getResponseProperty(\"CreatorIdentifier\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","import { FileUploadType } from \"../../enums/fileUploadType\";\n\nimport { BaseResponse } from \"./baseResponse\";\nimport { SendResponse } from \"./sendResponse\";\n\nexport class SendFileUploadDataResponse extends BaseResponse {\n fileUploadType: FileUploadType;\n sendResponse: SendResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.fileUploadType = this.getResponseProperty(\"FileUploadType\");\n const sendResponse = this.getResponseProperty(\"SendResponse\");\n this.sendResponse = sendResponse == null ? null : new SendResponse(sendResponse);\n this.url = this.getResponseProperty(\"Url\");\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendFileApi } from \"../api/sendFileApi\";\nimport { SendTextApi } from \"../api/sendTextApi\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n hideEmail: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.accessId = this.getResponseProperty(\"AccessId\");\n this.type = this.getResponseProperty(\"Type\");\n this.name = this.getResponseProperty(\"Name\");\n this.notes = this.getResponseProperty(\"Notes\");\n this.key = this.getResponseProperty(\"Key\");\n this.maxAccessCount = this.getResponseProperty(\"MaxAccessCount\");\n this.accessCount = this.getResponseProperty(\"AccessCount\");\n this.revisionDate = this.getResponseProperty(\"RevisionDate\");\n this.expirationDate = this.getResponseProperty(\"ExpirationDate\");\n this.deletionDate = this.getResponseProperty(\"DeletionDate\");\n this.password = this.getResponseProperty(\"Password\");\n this.disable = this.getResponseProperty(\"Disabled\") || false;\n this.hideEmail = this.getResponseProperty(\"HideEmail\") || false;\n\n const text = this.getResponseProperty(\"Text\");\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty(\"File\");\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty(\"StorageName\");\n this.storageGb = this.getResponseProperty(\"StorageGb\");\n this.maxStorageGb = this.getResponseProperty(\"MaxStorageGb\");\n this.license = this.getResponseProperty(\"License\");\n this.expiration = this.getResponseProperty(\"Expiration\");\n this.usingInAppPurchase = this.getResponseProperty(\"UsingInAppPurchase\");\n const subscription = this.getResponseProperty(\"Subscription\");\n const upcomingInvoice = this.getResponseProperty(\"UpcomingInvoice\");\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice =\n upcomingInvoice == null\n ? null\n : new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty(\"TrialStartDate\");\n this.trialEndDate = this.getResponseProperty(\"TrialEndDate\");\n this.periodStartDate = this.getResponseProperty(\"PeriodStartDate\");\n this.periodEndDate = this.getResponseProperty(\"PeriodEndDate\");\n this.cancelledDate = this.getResponseProperty(\"CancelledDate\");\n this.cancelAtEndDate = this.getResponseProperty(\"CancelAtEndDate\");\n this.status = this.getResponseProperty(\"Status\");\n this.cancelled = this.getResponseProperty(\"Cancelled\");\n const items = this.getResponseProperty(\"Items\");\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n sponsoredSubscriptionItem: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.amount = this.getResponseProperty(\"Amount\");\n this.quantity = this.getResponseProperty(\"Quantity\");\n this.interval = this.getResponseProperty(\"Interval\");\n this.sponsoredSubscriptionItem = this.getResponseProperty(\"SponsoredSubscriptionItem\");\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty(\"Date\");\n this.amount = this.getResponseProperty(\"Amount\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\nimport { CipherResponse } from \"./cipherResponse\";\nimport { CollectionDetailsResponse } from \"./collectionResponse\";\nimport { DomainsResponse } from \"./domainsResponse\";\nimport { FolderResponse } from \"./folderResponse\";\nimport { PolicyResponse } from \"./policyResponse\";\nimport { ProfileResponse } from \"./profileResponse\";\nimport { SendResponse } from \"./sendResponse\";\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty(\"Profile\");\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty(\"Folders\");\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty(\"Collections\");\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty(\"Ciphers\");\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty(\"Domains\");\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty(\"Policies\");\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty(\"Sends\");\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty(\"TaxIdNumber\");\n this.taxIdType = this.getResponseProperty(\"TaxIdType\");\n this.line1 = this.getResponseProperty(\"Line1\");\n this.line2 = this.getResponseProperty(\"Line2\");\n this.city = this.getResponseProperty(\"City\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.country = this.getResponseProperty(\"Country\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty(\"Id\");\n this.country = this.getResponseProperty(\"Country\");\n this.state = this.getResponseProperty(\"State\");\n this.postalCode = this.getResponseProperty(\"PostalCode\");\n this.rate = this.getResponseProperty(\"Rate\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.key = this.getResponseProperty(\"Key\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.host = this.getResponseProperty(\"Host\");\n this.secretKey = this.getResponseProperty(\"SecretKey\");\n this.integrationKey = this.getResponseProperty(\"IntegrationKey\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.email = this.getResponseProperty(\"Email\");\n }\n}\n","import { TwoFactorProviderType } from \"../../enums/twoFactorProviderType\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.type = this.getResponseProperty(\"Type\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty(\"Code\");\n }\n}\n","import { Utils } from \"../../misc/utils\";\n\nimport { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorWebAuthnResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n const keys = this.getResponseProperty(\"Keys\");\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n migrated: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty(\"Name\");\n this.id = this.getResponseProperty(\"Id\");\n this.migrated = this.getResponseProperty(\"Migrated\");\n }\n}\n\nexport class ChallengeResponse extends BaseResponse implements PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n\n constructor(response: any) {\n super(response);\n this.attestation = this.getResponseProperty(\"attestation\");\n this.authenticatorSelection = this.getResponseProperty(\"authenticatorSelection\");\n this.challenge = Utils.fromUrlB64ToArray(this.getResponseProperty(\"challenge\"));\n this.excludeCredentials = this.getResponseProperty(\"excludeCredentials\").map((c: any) => {\n c.id = Utils.fromUrlB64ToArray(c.id).buffer;\n return c;\n });\n this.extensions = this.getResponseProperty(\"extensions\");\n this.pubKeyCredParams = this.getResponseProperty(\"pubKeyCredParams\");\n this.rp = this.getResponseProperty(\"rp\");\n this.timeout = this.getResponseProperty(\"timeout\");\n\n const user = this.getResponseProperty(\"user\");\n user.id = Utils.fromUrlB64ToArray(user.id);\n\n this.user = user;\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty(\"Enabled\");\n this.key1 = this.getResponseProperty(\"Key1\");\n this.key2 = this.getResponseProperty(\"Key2\");\n this.key3 = this.getResponseProperty(\"Key3\");\n this.key4 = this.getResponseProperty(\"Key4\");\n this.key5 = this.getResponseProperty(\"Key5\");\n this.nfc = this.getResponseProperty(\"Nfc\");\n }\n}\n","import { BaseResponse } from \"./baseResponse\";\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty(\"UserId\");\n this.publicKey = this.getResponseProperty(\"PublicKey\");\n }\n}\n","import { Attachment } from \"../domain/attachment\";\nimport { SymmetricCryptoKey } from \"../domain/symmetricCryptoKey\";\n\nimport { View } from \"./view\";\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","import { CardLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class CardView extends ItemView {\n @linkedFieldOption(LinkedId.CardholderName)\n cardholderName: string = null;\n @linkedFieldOption(LinkedId.ExpMonth, \"expirationMonth\")\n expMonth: string = null;\n @linkedFieldOption(LinkedId.ExpYear, \"expirationYear\")\n expYear: string = null;\n @linkedFieldOption(LinkedId.Code, \"securityCode\")\n code: string = null;\n\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n\n constructor() {\n super();\n }\n\n get maskedCode(): string {\n return this.code != null ? \"•\".repeat(this.code.length) : null;\n }\n\n get maskedNumber(): string {\n return this.number != null ? \"•\".repeat(this.number.length) : null;\n }\n\n @linkedFieldOption(LinkedId.Brand)\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.Number)\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== \"\") {\n this._subTitle += \", \";\n } else {\n this._subTitle = \"\";\n }\n\n // Show last 5 on amex, last 4 for all others\n const count =\n this.number.length >= 5 && this.number.match(new RegExp(\"^3[47]\")) != null ? 5 : 4;\n this._subTitle += \"*\" + this.number.substr(this.number.length - count);\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? (\"0\" + this.expMonth).slice(-2) : \"__\";\n exp += \" / \" + (this.expYear != null ? this.formatYear(this.expYear) : \"____\");\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? \"20\" + year : year;\n }\n}\n","import { CipherRepromptType } from \"../../enums/cipherRepromptType\";\nimport { CipherType } from \"../../enums/cipherType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { Cipher } from \"../domain/cipher\";\n\nimport { AttachmentView } from \"./attachmentView\";\nimport { CardView } from \"./cardView\";\nimport { FieldView } from \"./fieldView\";\nimport { IdentityView } from \"./identityView\";\nimport { LoginView } from \"./loginView\";\nimport { PasswordHistoryView } from \"./passwordHistoryView\";\nimport { SecureNoteView } from \"./secureNoteView\";\nimport { View } from \"./view\";\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n reprompt: CipherRepromptType = CipherRepromptType.None;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n // Old locally stored ciphers might have reprompt == null. If so set it to None.\n this.reprompt = c.reprompt ?? CipherRepromptType.None;\n }\n\n private get item() {\n switch (this.type) {\n case CipherType.Login:\n return this.login;\n case CipherType.SecureNote:\n return this.secureNote;\n case CipherType.Card:\n return this.card;\n case CipherType.Identity:\n return this.identity;\n default:\n break;\n }\n\n return null;\n }\n\n get subTitle(): string {\n return this.item.subTitle;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === \"\") {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n\n get linkedFieldOptions() {\n return this.item.linkedFieldOptions;\n }\n\n linkedFieldValue(id: LinkedIdType) {\n const linkedFieldOption = this.linkedFieldOptions?.get(id);\n if (linkedFieldOption == null) {\n return null;\n }\n\n const item = this.item;\n return this.item[linkedFieldOption.propertyKey as keyof typeof item];\n }\n\n linkedFieldI18nKey(id: LinkedIdType): string {\n return this.linkedFieldOptions.get(id)?.i18nKey;\n }\n}\n","import { Collection } from \"../domain/collection\";\nimport { ITreeNodeObject } from \"../domain/treeNode\";\nimport { CollectionGroupDetailsResponse } from \"../response/collectionResponse\";\n\nimport { View } from \"./view\";\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","import { EventType } from \"../../enums/eventType\";\n\nexport class EventView {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: EventType;\n installationId: string;\n\n constructor(data: Required) {\n this.message = data.message;\n this.humanReadableMessage = data.humanReadableMessage;\n this.appIcon = data.appIcon;\n this.appName = data.appName;\n this.userId = data.userId;\n this.userName = data.userName;\n this.userEmail = data.userEmail;\n this.date = data.date;\n this.ip = data.ip;\n this.type = data.type;\n this.installationId = data.installationId;\n }\n}\n","import { FieldType } from \"../../enums/fieldType\";\nimport { LinkedIdType } from \"../../enums/linkedIdType\";\nimport { Field } from \"../domain/field\";\n\nimport { View } from \"./view\";\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField = false; // Marks if the field is new and hasn't been saved\n showValue = false;\n showCount = false;\n linkedId: LinkedIdType = null;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n this.linkedId = f.linkedId;\n }\n\n get maskedValue(): string {\n return this.value != null ? \"••••••••\" : null;\n }\n}\n","import { Folder } from \"../domain/folder\";\nimport { ITreeNodeObject } from \"../domain/treeNode\";\n\nimport { View } from \"./view\";\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import { IdentityLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\nimport { Utils } from \"../../misc/utils\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class IdentityView extends ItemView {\n @linkedFieldOption(LinkedId.Title)\n title: string = null;\n @linkedFieldOption(LinkedId.MiddleName)\n middleName: string = null;\n @linkedFieldOption(LinkedId.Address1)\n address1: string = null;\n @linkedFieldOption(LinkedId.Address2)\n address2: string = null;\n @linkedFieldOption(LinkedId.Address3)\n address3: string = null;\n @linkedFieldOption(LinkedId.City, \"cityTown\")\n city: string = null;\n @linkedFieldOption(LinkedId.State, \"stateProvince\")\n state: string = null;\n @linkedFieldOption(LinkedId.PostalCode, \"zipPostalCode\")\n postalCode: string = null;\n @linkedFieldOption(LinkedId.Country)\n country: string = null;\n @linkedFieldOption(LinkedId.Company)\n company: string = null;\n @linkedFieldOption(LinkedId.Email)\n email: string = null;\n @linkedFieldOption(LinkedId.Phone)\n phone: string = null;\n @linkedFieldOption(LinkedId.Ssn)\n ssn: string = null;\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.PassportNumber)\n passportNumber: string = null;\n @linkedFieldOption(LinkedId.LicenseNumber)\n licenseNumber: string = null;\n\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n\n constructor() {\n super();\n }\n\n @linkedFieldOption(LinkedId.FirstName)\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.LastName)\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = \"\";\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== \"\") {\n this._subTitle += \" \";\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n @linkedFieldOption(LinkedId.FullName)\n get fullName(): string {\n if (\n this.title != null ||\n this.firstName != null ||\n this.middleName != null ||\n this.lastName != null\n ) {\n let name = \"\";\n if (this.title != null) {\n name += this.title + \" \";\n }\n if (this.firstName != null) {\n name += this.firstName + \" \";\n }\n if (this.middleName != null) {\n name += this.middleName + \" \";\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += \", \";\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += \", \";\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || \"-\";\n const state = this.state;\n const postalCode = this.postalCode || \"-\";\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += \", \" + state;\n }\n addressPart2 += \", \" + postalCode;\n return addressPart2;\n }\n}\n","import { LinkedMetadata } from \"../../misc/linkedFieldOption.decorator\";\n\nimport { View } from \"./view\";\n\nexport abstract class ItemView implements View {\n linkedFieldOptions: Map;\n abstract get subTitle(): string;\n}\n","import { UriMatchType } from \"../../enums/uriMatchType\";\nimport { Utils } from \"../../misc/utils\";\nimport { LoginUri } from \"../domain/loginUri\";\n\nimport { View } from \"./view\";\n\nconst CanLaunchWhitelist = [\n \"https://\",\n \"http://\",\n \"ssh://\",\n \"ftp://\",\n \"sftp://\",\n \"irc://\",\n \"vnc://\",\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n \"rdp://\", // Legacy RDP URI scheme\n \"ms-rd:\", // Preferred RDP URI scheme\n \"chrome://\",\n \"iosapp://\",\n \"androidapp://\",\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === \"\") {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === \"\") {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === \"\") {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return (\n this.uri != null &&\n (this.uri.indexOf(\"http://\") === 0 ||\n this.uri.indexOf(\"https://\") === 0 ||\n (this.uri.indexOf(\"://\") < 0 && Utils.tldEndingRegex.test(this.uri)))\n );\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf(\"://\") < 0 && Utils.tldEndingRegex.test(this.uri)\n ? \"http://\" + this.uri\n : this.uri;\n }\n}\n","import { LoginLinkedId as LinkedId } from \"../../enums/linkedIdType\";\nimport { linkedFieldOption } from \"../../misc/linkedFieldOption.decorator\";\nimport { Utils } from \"../../misc/utils\";\nimport { Login } from \"../domain/login\";\n\nimport { ItemView } from \"./itemView\";\nimport { LoginUriView } from \"./loginUriView\";\n\nexport class LoginView extends ItemView {\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.Password)\n password: string = null;\n\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n autofillOnPageLoad: boolean = null;\n\n constructor(l?: Login) {\n super();\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n this.autofillOnPageLoad = l.autofillOnPageLoad;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? \"••••••••\" : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some((u) => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find((u) => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","import { Password } from \"../domain/password\";\n\nimport { View } from \"./view\";\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import { SecureNoteType } from \"../../enums/secureNoteType\";\nimport { SecureNote } from \"../domain/secureNote\";\n\nimport { ItemView } from \"./itemView\";\n\nexport class SecureNoteView extends ItemView {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n super();\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { SendAccess } from \"../domain/sendAccess\";\n\nimport { SendFileView } from \"./sendFileView\";\nimport { SendTextView } from \"./sendTextView\";\nimport { View } from \"./view\";\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","import { SendFile } from \"../domain/sendFile\";\n\nimport { View } from \"./view\";\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","import { SendText } from \"../domain/sendText\";\n\nimport { View } from \"./view\";\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? \"••••••••\" : null;\n }\n}\n","import { SendType } from \"../../enums/sendType\";\nimport { Utils } from \"../../misc/utils\";\nimport { Send } from \"../domain/send\";\nimport { SymmetricCryptoKey } from \"../domain/symmetricCryptoKey\";\n\nimport { SendFileView } from \"./sendFileView\";\nimport { SendTextView } from \"./sendTextView\";\nimport { View } from \"./view\";\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled = false;\n hideEmail = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n this.hideEmail = s.hideEmail;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import {\n OpenIdConnectRedirectBehavior,\n Saml2BindingType,\n Saml2NameIdFormat,\n Saml2SigningBehavior,\n SsoType,\n} from \"../../enums/ssoEnums\";\nimport { SsoConfigApi } from \"../api/ssoConfigApi\";\n\nimport { View } from \"./view\";\n\nexport class SsoConfigView extends View {\n configType: SsoType;\n\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n openId: {\n authority: string;\n clientId: string;\n clientSecret: string;\n metadataAddress: string;\n redirectBehavior: OpenIdConnectRedirectBehavior;\n getClaimsFromUserInfoEndpoint: boolean;\n additionalScopes: string;\n additionalUserIdClaimTypes: string;\n additionalEmailClaimTypes: string;\n additionalNameClaimTypes: string;\n acrValues: string;\n expectedReturnAcrValue: string;\n };\n\n saml: {\n spNameIdFormat: Saml2NameIdFormat;\n spOutboundSigningAlgorithm: string;\n spSigningBehavior: Saml2SigningBehavior;\n spMinIncomingSigningAlgorithm: boolean;\n spWantAssertionsSigned: boolean;\n spValidateCertificates: boolean;\n\n idpEntityId: string;\n idpBindingType: Saml2BindingType;\n idpSingleSignOnServiceUrl: string;\n idpSingleLogoutServiceUrl: string;\n idpX509PublicCert: string;\n idpOutboundSigningAlgorithm: string;\n idpAllowUnsolicitedAuthnResponse: boolean;\n idpAllowOutboundLogoutRequests: boolean;\n idpWantAuthnRequestsSigned: boolean;\n };\n\n constructor(api: SsoConfigApi) {\n super();\n if (api == null) {\n return;\n }\n\n this.configType = api.configType;\n\n this.keyConnectorEnabled = api.keyConnectorEnabled;\n this.keyConnectorUrl = api.keyConnectorUrl;\n\n if (this.configType === SsoType.OpenIdConnect) {\n this.openId = {\n authority: api.authority,\n clientId: api.clientId,\n clientSecret: api.clientSecret,\n metadataAddress: api.metadataAddress,\n redirectBehavior: api.redirectBehavior,\n getClaimsFromUserInfoEndpoint: api.getClaimsFromUserInfoEndpoint,\n additionalScopes: api.additionalScopes,\n additionalUserIdClaimTypes: api.additionalUserIdClaimTypes,\n additionalEmailClaimTypes: api.additionalEmailClaimTypes,\n additionalNameClaimTypes: api.additionalNameClaimTypes,\n acrValues: api.acrValues,\n expectedReturnAcrValue: api.expectedReturnAcrValue,\n };\n } else if (this.configType === SsoType.Saml2) {\n this.saml = {\n spNameIdFormat: api.spNameIdFormat,\n spOutboundSigningAlgorithm: api.spOutboundSigningAlgorithm,\n spSigningBehavior: api.spSigningBehavior,\n spMinIncomingSigningAlgorithm: api.spMinIncomingSigningAlgorithm,\n spWantAssertionsSigned: api.spWantAssertionsSigned,\n spValidateCertificates: api.spValidateCertificates,\n\n idpEntityId: api.idpEntityId,\n idpBindingType: api.idpBindingType,\n idpSingleSignOnServiceUrl: api.idpSingleSignOnServiceUrl,\n idpSingleLogoutServiceUrl: api.idpSingleLogoutServiceUrl,\n idpX509PublicCert: api.idpX509PublicCert,\n idpOutboundSigningAlgorithm: api.idpOutboundSigningAlgorithm,\n idpAllowUnsolicitedAuthnResponse: api.idpAllowUnsolicitedAuthnResponse,\n idpWantAuthnRequestsSigned: api.idpWantAuthnRequestsSigned,\n\n // Value is inverted in the view model (allow instead of disable)\n idpAllowOutboundLogoutRequests:\n api.idpDisableOutboundLogoutRequests == null\n ? null\n : !api.idpDisableOutboundLogoutRequests,\n };\n }\n }\n}\n","export class View {}\n","import { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { DeviceRequest } from \"jslib-common/models/request/deviceRequest\";\nimport { TokenRequestTwoFactor } from \"jslib-common/models/request/identityToken/tokenRequestTwoFactor\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\nimport {\n OrganizationConnectionConfigApis,\n OrganizationConnectionResponse,\n} from \"jslib-common/models/response/organizationConnectionResponse\";\n\nimport { ApiService as ApiServiceAbstraction } from \"../abstractions/api.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { DeviceType } from \"../enums/deviceType\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { Utils } from \"../misc/utils\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { BitPayInvoiceRequest } from \"../models/request/bitPayInvoiceRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { DeleteRecoverRequest } from \"../models/request/deleteRecoverRequest\";\nimport { EmailRequest } from \"../models/request/emailRequest\";\nimport { EmailTokenRequest } from \"../models/request/emailTokenRequest\";\nimport { EmergencyAccessAcceptRequest } from \"../models/request/emergencyAccessAcceptRequest\";\nimport { EmergencyAccessConfirmRequest } from \"../models/request/emergencyAccessConfirmRequest\";\nimport { EmergencyAccessInviteRequest } from \"../models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessPasswordRequest } from \"../models/request/emergencyAccessPasswordRequest\";\nimport { EmergencyAccessUpdateRequest } from \"../models/request/emergencyAccessUpdateRequest\";\nimport { EventRequest } from \"../models/request/eventRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { GroupRequest } from \"../models/request/groupRequest\";\nimport { IapCheckRequest } from \"../models/request/iapCheckRequest\";\nimport { ApiTokenRequest } from \"../models/request/identityToken/apiTokenRequest\";\nimport { PasswordTokenRequest } from \"../models/request/identityToken/passwordTokenRequest\";\nimport { SsoTokenRequest } from \"../models/request/identityToken/ssoTokenRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportDirectoryRequest } from \"../models/request/importDirectoryRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KdfRequest } from \"../models/request/kdfRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { OrganizationSponsorshipCreateRequest } from \"../models/request/organization/organizationSponsorshipCreateRequest\";\nimport { OrganizationSponsorshipRedeemRequest } from \"../models/request/organization/organizationSponsorshipRedeemRequest\";\nimport { OrganizationSsoRequest } from \"../models/request/organization/organizationSsoRequest\";\nimport { OrganizationApiKeyRequest } from \"../models/request/organizationApiKeyRequest\";\nimport { OrganizationCreateRequest } from \"../models/request/organizationCreateRequest\";\nimport { OrganizationImportRequest } from \"../models/request/organizationImportRequest\";\nimport { OrganizationKeysRequest } from \"../models/request/organizationKeysRequest\";\nimport { OrganizationSubscriptionUpdateRequest } from \"../models/request/organizationSubscriptionUpdateRequest\";\nimport { OrganizationTaxInfoUpdateRequest } from \"../models/request/organizationTaxInfoUpdateRequest\";\nimport { OrganizationUpdateRequest } from \"../models/request/organizationUpdateRequest\";\nimport { OrganizationUpgradeRequest } from \"../models/request/organizationUpgradeRequest\";\nimport { OrganizationUserAcceptRequest } from \"../models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserBulkConfirmRequest } from \"../models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"../models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"../models/request/organizationUserConfirmRequest\";\nimport { OrganizationUserInviteRequest } from \"../models/request/organizationUserInviteRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"../models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { OrganizationUserResetPasswordRequest } from \"../models/request/organizationUserResetPasswordRequest\";\nimport { OrganizationUserUpdateGroupsRequest } from \"../models/request/organizationUserUpdateGroupsRequest\";\nimport { OrganizationUserUpdateRequest } from \"../models/request/organizationUserUpdateRequest\";\nimport { PasswordHintRequest } from \"../models/request/passwordHintRequest\";\nimport { PasswordRequest } from \"../models/request/passwordRequest\";\nimport { PaymentRequest } from \"../models/request/paymentRequest\";\nimport { PolicyRequest } from \"../models/request/policyRequest\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ProviderAddOrganizationRequest } from \"../models/request/provider/providerAddOrganizationRequest\";\nimport { ProviderOrganizationCreateRequest } from \"../models/request/provider/providerOrganizationCreateRequest\";\nimport { ProviderSetupRequest } from \"../models/request/provider/providerSetupRequest\";\nimport { ProviderUpdateRequest } from \"../models/request/provider/providerUpdateRequest\";\nimport { ProviderUserAcceptRequest } from \"../models/request/provider/providerUserAcceptRequest\";\nimport { ProviderUserBulkConfirmRequest } from \"../models/request/provider/providerUserBulkConfirmRequest\";\nimport { ProviderUserBulkRequest } from \"../models/request/provider/providerUserBulkRequest\";\nimport { ProviderUserConfirmRequest } from \"../models/request/provider/providerUserConfirmRequest\";\nimport { ProviderUserInviteRequest } from \"../models/request/provider/providerUserInviteRequest\";\nimport { ProviderUserUpdateRequest } from \"../models/request/provider/providerUserUpdateRequest\";\nimport { RegisterRequest } from \"../models/request/registerRequest\";\nimport { SeatRequest } from \"../models/request/seatRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { SelectionReadOnlyRequest } from \"../models/request/selectionReadOnlyRequest\";\nimport { SendAccessRequest } from \"../models/request/sendAccessRequest\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { SetPasswordRequest } from \"../models/request/setPasswordRequest\";\nimport { StorageRequest } from \"../models/request/storageRequest\";\nimport { TaxInfoUpdateRequest } from \"../models/request/taxInfoUpdateRequest\";\nimport { TwoFactorEmailRequest } from \"../models/request/twoFactorEmailRequest\";\nimport { TwoFactorProviderRequest } from \"../models/request/twoFactorProviderRequest\";\nimport { TwoFactorRecoveryRequest } from \"../models/request/twoFactorRecoveryRequest\";\nimport { UpdateDomainsRequest } from \"../models/request/updateDomainsRequest\";\nimport { UpdateKeyRequest } from \"../models/request/updateKeyRequest\";\nimport { UpdateProfileRequest } from \"../models/request/updateProfileRequest\";\nimport { UpdateTempPasswordRequest } from \"../models/request/updateTempPasswordRequest\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"../models/request/updateTwoFactorAuthenticatorRequest\";\nimport { UpdateTwoFactorDuoRequest } from \"../models/request/updateTwoFactorDuoRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"../models/request/updateTwoFactorEmailRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"../models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"../models/request/updateTwoFactorWebAuthnRequest\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"../models/request/updateTwoFactorYubioOtpRequest\";\nimport { VerifyBankRequest } from \"../models/request/verifyBankRequest\";\nimport { VerifyDeleteRecoverRequest } from \"../models/request/verifyDeleteRecoverRequest\";\nimport { VerifyEmailRequest } from \"../models/request/verifyEmailRequest\";\nimport { ApiKeyResponse } from \"../models/response/apiKeyResponse\";\nimport { AttachmentResponse } from \"../models/response/attachmentResponse\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { BillingResponse } from \"../models/response/billingResponse\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse,\n} from \"../models/response/emergencyAccessResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { EventResponse } from \"../models/response/eventResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { GroupDetailsResponse, GroupResponse } from \"../models/response/groupResponse\";\nimport { IdentityCaptchaResponse } from \"../models/response/identityCaptchaResponse\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\nimport { KeyConnectorUserKeyResponse } from \"../models/response/keyConnectorUserKeyResponse\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { OrganizationSsoResponse } from \"../models/response/organization/organizationSsoResponse\";\nimport { OrganizationApiKeyInformationResponse } from \"../models/response/organizationApiKeyInformationResponse\";\nimport { OrganizationAutoEnrollStatusResponse } from \"../models/response/organizationAutoEnrollStatusResponse\";\nimport { OrganizationKeysResponse } from \"../models/response/organizationKeysResponse\";\nimport { OrganizationResponse } from \"../models/response/organizationResponse\";\nimport { OrganizationSponsorshipSyncStatusResponse } from \"../models/response/organizationSponsorshipSyncStatusResponse\";\nimport { OrganizationSubscriptionResponse } from \"../models/response/organizationSubscriptionResponse\";\nimport { OrganizationUserBulkPublicKeyResponse } from \"../models/response/organizationUserBulkPublicKeyResponse\";\nimport { OrganizationUserBulkResponse } from \"../models/response/organizationUserBulkResponse\";\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from \"../models/response/organizationUserResponse\";\nimport { PaymentResponse } from \"../models/response/paymentResponse\";\nimport { PlanResponse } from \"../models/response/planResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { PreloginResponse } from \"../models/response/preloginResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport {\n ProviderOrganizationOrganizationDetailsResponse,\n ProviderOrganizationResponse,\n} from \"../models/response/provider/providerOrganizationResponse\";\nimport { ProviderResponse } from \"../models/response/provider/providerResponse\";\nimport { ProviderUserBulkPublicKeyResponse } from \"../models/response/provider/providerUserBulkPublicKeyResponse\";\nimport { ProviderUserBulkResponse } from \"../models/response/provider/providerUserBulkResponse\";\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse,\n} from \"../models/response/provider/providerUserResponse\";\nimport { SelectionReadOnlyResponse } from \"../models/response/selectionReadOnlyResponse\";\nimport { SendAccessResponse } from \"../models/response/sendAccessResponse\";\nimport { SendFileDownloadDataResponse } from \"../models/response/sendFileDownloadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SubscriptionResponse } from \"../models/response/subscriptionResponse\";\nimport { SyncResponse } from \"../models/response/syncResponse\";\nimport { TaxInfoResponse } from \"../models/response/taxInfoResponse\";\nimport { TaxRateResponse } from \"../models/response/taxRateResponse\";\nimport { TwoFactorAuthenticatorResponse } from \"../models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"../models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"../models/response/twoFactorEmailResponse\";\nimport { TwoFactorProviderResponse } from \"../models/response/twoFactorProviderResponse\";\nimport { TwoFactorRecoverResponse } from \"../models/response/twoFactorRescoverResponse\";\nimport {\n TwoFactorWebAuthnResponse,\n ChallengeResponse,\n} from \"../models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"../models/response/twoFactorYubiKeyResponse\";\nimport { UserKeyResponse } from \"../models/response/userKeyResponse\";\nimport { SendAccessView } from \"../models/view/sendAccessView\";\n\nexport class ApiService implements ApiServiceAbstraction {\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n\n constructor(\n private tokenService: TokenService,\n private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService,\n private appIdService: AppIdService,\n private logoutCallback: (expired: boolean) => Promise,\n private customUserAgent: string = null\n ) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient =\n this.device === DeviceType.IEBrowser ||\n this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser ||\n this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser ||\n this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser ||\n this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient =\n this.device === DeviceType.WindowsDesktop ||\n this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n // Auth APIs\n\n async postIdentityToken(\n request: ApiTokenRequest | PasswordTokenRequest | SsoTokenRequest\n ): Promise {\n const headers = new Headers({\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n request.alterIdentityTokenHeaders(headers);\n\n const identityToken =\n request instanceof ApiTokenRequest\n ? request.toIdentityToken()\n : request.toIdentityToken(this.platformUtilsService.getClientType());\n\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + \"/connect/token\", {\n body: this.qsStringify(identityToken),\n credentials: this.getCredentials(),\n cache: \"no-store\",\n headers: headers,\n method: \"POST\",\n })\n );\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (\n response.status === 400 &&\n responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length\n ) {\n await this.tokenService.clearTwoFactorToken();\n return new IdentityTwoFactorResponse(responseJson);\n } else if (\n response.status === 400 &&\n responseJson.HCaptcha_SiteKey &&\n Object.keys(responseJson.HCaptcha_SiteKey).length\n ) {\n return new IdentityCaptchaResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doAuthRefresh();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send(\"GET\", \"/accounts/profile\", null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send(\"GET\", \"/accounts/subscription\", null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send(\"GET\", \"/accounts/tax\", null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send(\"PUT\", \"/accounts/profile\", request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send(\"PUT\", \"/accounts/tax\", request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send(\n \"POST\",\n \"/accounts/prelogin\",\n request,\n false,\n true,\n this.platformUtilsService.isDev()\n ? this.environmentService.getIdentityUrl()\n : this.environmentService.getApiUrl()\n );\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send(\"POST\", \"/accounts/email-token\", request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send(\"POST\", \"/accounts/email\", request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send(\"POST\", \"/accounts/password\", request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send(\"POST\", \"/accounts/set-password\", request, true, false);\n }\n\n postSetKeyConnectorKey(request: SetKeyConnectorKeyRequest): Promise {\n return this.send(\"POST\", \"/accounts/set-key-connector-key\", request, true, false);\n }\n\n postSecurityStamp(request: SecretVerificationRequest): Promise {\n return this.send(\"POST\", \"/accounts/security-stamp\", request, true, false);\n }\n\n deleteAccount(request: SecretVerificationRequest): Promise {\n return this.send(\"DELETE\", \"/accounts\", request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send(\"GET\", \"/accounts/revision-date\", null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send(\"POST\", \"/accounts/password-hint\", request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send(\n \"POST\",\n \"/accounts/register\",\n request,\n false,\n false,\n this.platformUtilsService.isDev()\n ? this.environmentService.getIdentityUrl()\n : this.environmentService.getApiUrl()\n );\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/accounts/premium\", data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send(\"POST\", \"/accounts/iap-check\", request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send(\"POST\", \"/accounts/reinstate-premium\", null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send(\"POST\", \"/accounts/cancel-premium\", null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send(\"POST\", \"/accounts/storage\", request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send(\"POST\", \"/accounts/payment\", request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send(\"POST\", \"/accounts/license\", data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send(\"POST\", \"/accounts/keys\", request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send(\"POST\", \"/accounts/key\", request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send(\"POST\", \"/accounts/verify-email\", null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-email-token\", request, false, false);\n }\n\n postAccountVerifyPassword(request: SecretVerificationRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-password\", request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send(\"POST\", \"/accounts/delete-recover\", request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send(\"POST\", \"/accounts/delete-recover-token\", request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send(\"POST\", \"/accounts/kdf\", request, true, false);\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send(\"DELETE\", \"/accounts/sso/\" + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send(\"GET\", \"/accounts/sso/user-identifier\", null, true, true);\n }\n\n async postUserApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/accounts/api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(\n id: string,\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/accounts/rotate-api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n putUpdateTempPassword(request: UpdateTempPasswordRequest): Promise {\n return this.send(\"PUT\", \"/accounts/update-temp-password\", request, true, false);\n }\n\n postAccountRequestOTP(): Promise {\n return this.send(\"POST\", \"/accounts/request-otp\", null, true, false);\n }\n\n postAccountVerifyOTP(request: VerifyOTPRequest): Promise {\n return this.send(\"POST\", \"/accounts/verify-otp\", request, true, false);\n }\n\n postConvertToKeyConnector(): Promise {\n return this.send(\"POST\", \"/accounts/convert-to-key-connector\", null, true, false);\n }\n\n // Account Billing APIs\n\n async getUserBillingHistory(): Promise {\n const r = await this.send(\"GET\", \"/accounts/billing/history\", null, true, true);\n return new BillingHistoryResponse(r);\n }\n\n async getUserBillingPayment(): Promise {\n const r = await this.send(\"GET\", \"/accounts/billing/payment-method\", null, true, true);\n return new BillingPaymentResponse(r);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send(\"GET\", \"/folders/\" + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send(\"POST\", \"/folders\", request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send(\"PUT\", \"/folders/\" + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send(\"DELETE\", \"/folders/\" + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send(\"GET\", \"/sends/\" + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(\n id: string,\n request: SendAccessRequest,\n apiUrl?: string\n ): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set(\"Send-Id\", id);\n };\n const r = await this.send(\n \"POST\",\n \"/sends/access/\" + id,\n request,\n false,\n true,\n apiUrl,\n addSendIdHeader\n );\n return new SendAccessResponse(r);\n }\n\n async getSendFileDownloadData(\n send: SendAccessView,\n request: SendAccessRequest,\n apiUrl?: string\n ): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set(\"Send-Id\", send.id);\n };\n const r = await this.send(\n \"POST\",\n \"/sends/\" + send.id + \"/access/file/\" + send.file.id,\n request,\n false,\n true,\n apiUrl,\n addSendIdHeader\n );\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send(\"GET\", \"/sends\", null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send(\"POST\", \"/sends\", request, true, true);\n return new SendResponse(r);\n }\n\n async postFileTypeSend(request: SendRequest): Promise {\n const r = await this.send(\"POST\", \"/sends/file/v2\", request, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n async renewSendFileUploadUrl(\n sendId: string,\n fileId: string\n ): Promise {\n const r = await this.send(\"GET\", \"/sends/\" + sendId + \"/file/\" + fileId, null, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n postSendFile(sendId: string, fileId: string, data: FormData): Promise {\n return this.send(\"POST\", \"/sends/\" + sendId + \"/file/\" + fileId, data, true, false);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postSendFileLegacy(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/sends/file\", data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send(\"PUT\", \"/sends/\" + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send(\"PUT\", \"/sends/\" + id + \"/remove-password\", null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send(\"DELETE\", \"/sends/\" + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send(\"GET\", \"/ciphers/\" + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send(\"GET\", \"/ciphers/\" + id + \"/admin\", null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/ciphers/organization-details?organizationId=\" + organizationId,\n null,\n true,\n true\n );\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers\", request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers/create\", request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/ciphers/admin\", request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/admin\", request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id + \"/admin\", null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"DELETE\", \"/ciphers\", request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"DELETE\", \"/ciphers/admin\", request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/move\", request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/share\", request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/share\", request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/collections\", request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/collections-admin\", request, true, false);\n }\n\n postPurgeCiphers(\n request: SecretVerificationRequest,\n organizationId: string = null\n ): Promise {\n let path = \"/ciphers/purge\";\n if (organizationId != null) {\n path += \"?organizationId=\" + organizationId;\n }\n return this.send(\"POST\", path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send(\"POST\", \"/ciphers/import\", request, true, false);\n }\n\n postImportOrganizationCiphers(\n organizationId: string,\n request: ImportOrganizationCiphersRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/ciphers/import-organization?organizationId=\" + organizationId,\n request,\n true,\n false\n );\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/delete\", null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send(\"PUT\", \"/ciphers/\" + id + \"/delete-admin\", null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/delete\", request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send(\"PUT\", \"/ciphers/delete-admin\", request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/restore\", null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send(\"PUT\", \"/ciphers/\" + id + \"/restore-admin\", null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(\n request: CipherBulkDeleteRequest\n ): Promise> {\n const r = await this.send(\"PUT\", \"/ciphers/restore\", request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async getAttachmentData(\n cipherId: string,\n attachmentId: string,\n emergencyAccessId?: string\n ): Promise {\n const path =\n (emergencyAccessId != null ? \"/emergency-access/\" + emergencyAccessId + \"/\" : \"/ciphers/\") +\n cipherId +\n \"/attachment/\" +\n attachmentId;\n const r = await this.send(\"GET\", path, null, true, true);\n return new AttachmentResponse(r);\n }\n\n async postCipherAttachment(\n id: string,\n request: AttachmentRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment/v2\", request, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentLegacy(id: string, data: FormData): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment\", data, true, true);\n return new CipherResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentAdminLegacy(id: string, data: FormData): Promise {\n const r = await this.send(\"POST\", \"/ciphers/\" + id + \"/attachment-admin\", data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send(\"DELETE\", \"/ciphers/\" + id + \"/attachment/\" + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send(\n \"DELETE\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/admin\",\n null,\n true,\n false\n );\n }\n\n postShareCipherAttachment(\n id: string,\n attachmentId: string,\n data: FormData,\n organizationId: string\n ): Promise {\n return this.send(\n \"POST\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/share?organizationId=\" + organizationId,\n data,\n true,\n false\n );\n }\n\n async renewAttachmentUploadUrl(\n id: string,\n attachmentId: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/ciphers/\" + id + \"/attachment/\" + attachmentId + \"/renew\",\n null,\n true,\n true\n );\n return new AttachmentUploadDataResponse(r);\n }\n\n postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise {\n return this.send(\"POST\", \"/ciphers/\" + id + \"/attachment/\" + attachmentId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/details\",\n null,\n true,\n true\n );\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send(\"GET\", \"/collections\", null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections\",\n null,\n true,\n true\n );\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/users\",\n null,\n true,\n true\n );\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(\n organizationId: string,\n request: CollectionRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/collections\",\n request,\n true,\n true\n );\n return new CollectionResponse(r);\n }\n\n async putCollection(\n organizationId: string,\n id: string,\n request: CollectionRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/collections/\" + id,\n request,\n true,\n true\n );\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(\n organizationId: string,\n id: string,\n request: SelectionReadOnlyRequest[]\n ): Promise {\n await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/users\",\n request,\n true,\n false\n );\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/collections/\" + id,\n null,\n true,\n false\n );\n }\n\n deleteCollectionUser(\n organizationId: string,\n id: string,\n organizationUserId: string\n ): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/collections/\" + id + \"/user/\" + organizationUserId,\n null,\n true,\n false\n );\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/details\",\n null,\n true,\n true\n );\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups\",\n null,\n true,\n true\n );\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/users\",\n null,\n true,\n true\n );\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/groups\",\n request,\n true,\n true\n );\n return new GroupResponse(r);\n }\n\n async putGroup(\n organizationId: string,\n id: string,\n request: GroupRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/groups/\" + id,\n request,\n true,\n true\n );\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/users\",\n request,\n true,\n false\n );\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/groups/\" + id,\n null,\n true,\n false\n );\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/groups/\" + id + \"/user/\" + organizationUserId,\n null,\n true,\n false\n );\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies/\" + type,\n null,\n true,\n true\n );\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies\",\n null,\n true,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(\n organizationId: string,\n token: string,\n email: string,\n organizationUserId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" +\n organizationId +\n \"/policies/token?\" +\n \"token=\" +\n encodeURIComponent(token) +\n \"&email=\" +\n encodeURIComponent(email) +\n \"&organizationUserId=\" +\n organizationUserId,\n null,\n false,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByInvitedUser(\n organizationId: string,\n userId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies/invited-user?\" + \"userId=\" + userId,\n null,\n false,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(\n organizationId: string,\n type: PolicyType,\n request: PolicyRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/policies/\" + type,\n request,\n true,\n true\n );\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n null,\n true,\n true\n );\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/groups\",\n null,\n true,\n true\n );\n return r;\n }\n\n async getOrganizationUsers(\n organizationId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users\",\n null,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n async getOrganizationUserResetPasswordDetails(\n organizationId: string,\n id: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reset-password-details\",\n null,\n true,\n true\n );\n return new OrganizationUserResetPasswordDetailsReponse(r);\n }\n\n async getOrganizationAutoEnrollStatus(\n identifier: string\n ): Promise {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + identifier + \"/auto-enroll-status\",\n null,\n true,\n true\n );\n return new OrganizationAutoEnrollStatusResponse(r);\n }\n\n postOrganizationUserInvite(\n organizationId: string,\n request: OrganizationUserInviteRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/invite\",\n request,\n true,\n false\n );\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reinvite\",\n null,\n true,\n false\n );\n }\n\n async postManyOrganizationUserReinvite(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/reinvite\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n postOrganizationUserAccept(\n organizationId: string,\n id: string,\n request: OrganizationUserAcceptRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/accept\",\n request,\n true,\n false\n );\n }\n\n postOrganizationUserConfirm(\n organizationId: string,\n id: string,\n request: OrganizationUserConfirmRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/confirm\",\n request,\n true,\n false\n );\n }\n\n async postOrganizationUsersPublicKey(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/public-keys\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkPublicKeyResponse);\n }\n\n async postOrganizationUserBulkConfirm(\n organizationId: string,\n request: OrganizationUserBulkConfirmRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/users/confirm\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n putOrganizationUser(\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n request,\n true,\n false\n );\n }\n\n putOrganizationUserGroups(\n organizationId: string,\n id: string,\n request: OrganizationUserUpdateGroupsRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/groups\",\n request,\n true,\n false\n );\n }\n\n putOrganizationUserResetPasswordEnrollment(\n organizationId: string,\n userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + userId + \"/reset-password-enrollment\",\n request,\n true,\n false\n );\n }\n\n putOrganizationUserResetPassword(\n organizationId: string,\n id: string,\n request: OrganizationUserResetPasswordRequest\n ): Promise {\n return this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/reset-password\",\n request,\n true,\n false\n );\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/users/\" + id,\n null,\n true,\n false\n );\n }\n\n async deleteManyOrganizationUsers(\n organizationId: string,\n request: OrganizationUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"DELETE\",\n \"/organizations/\" + organizationId + \"/users\",\n request,\n true,\n true\n );\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send(\"GET\", \"/plans/\", null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + organizationId + \"/import\", request, true, false);\n }\n\n async postPublicImportDirectory(request: OrganizationImportRequest): Promise {\n return this.send(\"POST\", \"/public/organization/import\", request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send(\"GET\", \"/plans/sales-tax-rates/\", null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send(\"GET\", \"/settings/domains\", null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send(\"PUT\", \"/settings/domains\", request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? \"/sync?excludeDomains=true\" : \"/sync\";\n const r = await this.send(\"GET\", path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send(\"GET\", \"/two-factor\", null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(\n organizationId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/two-factor\",\n null,\n true,\n true\n );\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-authenticator\", request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-email\", request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-duo\", request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(\n organizationId: string,\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + organizationId + \"/two-factor/get-duo\",\n request,\n true,\n true\n );\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-yubikey\", request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorWebAuthn(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-webauthn\", request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async getTwoFactorWebAuthnChallenge(\n request: SecretVerificationRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-webauthn-challenge\", request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: SecretVerificationRequest): Promise {\n const r = await this.send(\"POST\", \"/two-factor/get-recover\", request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/authenticator\", request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/email\", request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/duo\", request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(\n organizationId: string,\n request: UpdateTwoFactorDuoRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/two-factor/duo\",\n request,\n true,\n true\n );\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(\n request: UpdateTwoFactorYubioOtpRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/yubikey\", request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorWebAuthn(\n request: UpdateTwoFactorWebAuthnRequest\n ): Promise {\n const response = request.deviceResponse.response as AuthenticatorAttestationResponse;\n const data: any = Object.assign({}, request);\n\n data.deviceResponse = {\n id: request.deviceResponse.id,\n rawId: btoa(request.deviceResponse.id),\n type: request.deviceResponse.type,\n extensions: request.deviceResponse.getClientExtensionResults(),\n response: {\n AttestationObject: Utils.fromBufferToB64(response.attestationObject),\n clientDataJson: Utils.fromBufferToB64(response.clientDataJSON),\n },\n };\n\n const r = await this.send(\"PUT\", \"/two-factor/webauthn\", data, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async deleteTwoFactorWebAuthn(\n request: UpdateTwoFactorWebAuthnDeleteRequest\n ): Promise {\n const r = await this.send(\"DELETE\", \"/two-factor/webauthn\", request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send(\"PUT\", \"/two-factor/disable\", request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(\n organizationId: string,\n request: TwoFactorProviderRequest\n ): Promise {\n const r = await this.send(\n \"PUT\",\n \"/organizations/\" + organizationId + \"/two-factor/disable\",\n request,\n true,\n true\n );\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send(\"POST\", \"/two-factor/recover\", request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send(\"POST\", \"/two-factor/send-email\", request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send(\"POST\", \"/two-factor/send-email-login\", request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/trusted\", null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/granted\", null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send(\"GET\", \"/emergency-access/\" + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send(\"GET\", \"/emergency-access/\" + id + \"/policies\", null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send(\"PUT\", \"/emergency-access/\" + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send(\"DELETE\", \"/emergency-access/\" + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/invite\", request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/reinvite\", null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/accept\", request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/confirm\", request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/initiate\", null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/approve\", null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send(\"POST\", \"/emergency-access/\" + id + \"/reject\", null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send(\"POST\", \"/emergency-access/\" + id + \"/takeover\", null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(\n id: string,\n request: EmergencyAccessPasswordRequest\n ): Promise {\n await this.send(\"POST\", \"/emergency-access/\" + id + \"/password\", request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send(\"POST\", \"/emergency-access/\" + id + \"/view\", null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/billing\", null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/subscription\", null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getCloudCommunicationsEnabled(): Promise {\n const r = await this.send(\"GET\", \"/organizations/connections/enabled\", null, true, true);\n return r as boolean;\n }\n\n async getOrganizationConnection(\n id: string,\n type: OrganizationConnectionType,\n configType: { new (response: any): TConfig }\n ): Promise> {\n const r = await this.send(\"GET\", `/organizations/connections/${id}/${type}`, null, true, true);\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async createOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig }\n ): Promise> {\n const r = await this.send(\"POST\", \"/organizations/connections/\", request, true, true);\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async updateOrganizationConnection(\n request: OrganizationConnectionRequest,\n configType: { new (response: any): TConfig },\n organizationConnectionId?: string\n ): Promise> {\n const r = await this.send(\n \"PUT\",\n \"/organizations/connections/\" + organizationConnectionId,\n request,\n true,\n true\n );\n return new OrganizationConnectionResponse(r, configType);\n }\n\n async deleteOrganizationConnection(id: string): Promise {\n return this.send(\"DELETE\", \"/organizations/connections/\" + id, null, true, false);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send(\n \"GET\",\n \"/organizations/\" + id + \"/license?installationId=\" + installationId,\n null,\n true,\n true\n );\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/tax\", null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async getOrganizationSso(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/sso\", null, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations\", request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(\n id: string,\n request: OrganizationUpdateRequest\n ): Promise {\n const r = await this.send(\"PUT\", \"/organizations/\" + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(\n id: string,\n request: OrganizationTaxInfoUpdateRequest\n ): Promise {\n return this.send(\"PUT\", \"/organizations/\" + id + \"/tax\", request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/leave\", null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send(\"POST\", \"/organizations/license\", data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/license\", data, true, false);\n }\n\n async postOrganizationApiKey(\n id: string,\n request: OrganizationApiKeyRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/api-key\", request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async getOrganizationApiKeyInformation(\n id: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + id + \"/api-key-information\",\n null,\n true,\n true\n );\n return new ListResponse(r, OrganizationApiKeyInformationResponse);\n }\n\n async postOrganizationRotateApiKey(\n id: string,\n request: OrganizationApiKeyRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/organizations/\" + id + \"/rotate-api-key\",\n request,\n true,\n true\n );\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationSso(\n id: string,\n request: OrganizationSsoRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/sso\", request, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganizationUpgrade(\n id: string,\n request: OrganizationUpgradeRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/upgrade\", request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationUpdateSubscription(\n id: string,\n request: OrganizationSubscriptionUpdateRequest\n ): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/subscription\", request, true, false);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/seat\", request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/storage\", request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/payment\", request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/verify-bank\", request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/cancel\", null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send(\"POST\", \"/organizations/\" + id + \"/reinstate\", null, true, false);\n }\n\n deleteOrganization(id: string, request: SecretVerificationRequest): Promise {\n return this.send(\"DELETE\", \"/organizations/\" + id, request, true, false);\n }\n\n async getOrganizationKeys(id: string): Promise {\n const r = await this.send(\"GET\", \"/organizations/\" + id + \"/keys\", null, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n async postOrganizationKeys(\n id: string,\n request: OrganizationKeysRequest\n ): Promise {\n const r = await this.send(\"POST\", \"/organizations/\" + id + \"/keys\", request, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n // Provider APIs\n\n async postProviderSetup(id: string, request: ProviderSetupRequest) {\n const r = await this.send(\"POST\", \"/providers/\" + id + \"/setup\", request, true, true);\n return new ProviderResponse(r);\n }\n\n async getProvider(id: string) {\n const r = await this.send(\"GET\", \"/providers/\" + id, null, true, true);\n return new ProviderResponse(r);\n }\n\n async putProvider(id: string, request: ProviderUpdateRequest) {\n const r = await this.send(\"PUT\", \"/providers/\" + id, request, true, true);\n return new ProviderResponse(r);\n }\n\n // Provider User APIs\n\n async getProviderUsers(\n providerId: string\n ): Promise> {\n const r = await this.send(\"GET\", \"/providers/\" + providerId + \"/users\", null, true, true);\n return new ListResponse(r, ProviderUserUserDetailsResponse);\n }\n\n async getProviderUser(providerId: string, id: string): Promise {\n const r = await this.send(\"GET\", \"/providers/\" + providerId + \"/users/\" + id, null, true, true);\n return new ProviderUserResponse(r);\n }\n\n postProviderUserInvite(providerId: string, request: ProviderUserInviteRequest): Promise {\n return this.send(\"POST\", \"/providers/\" + providerId + \"/users/invite\", request, true, false);\n }\n\n postProviderUserReinvite(providerId: string, id: string): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/reinvite\",\n null,\n true,\n false\n );\n }\n\n async postManyProviderUserReinvite(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/reinvite\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async postProviderUserBulkConfirm(\n providerId: string,\n request: ProviderUserBulkConfirmRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/confirm\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async deleteManyProviderUsers(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\"DELETE\", \"/providers/\" + providerId + \"/users\", request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n postProviderUserAccept(\n providerId: string,\n id: string,\n request: ProviderUserAcceptRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/accept\",\n request,\n true,\n false\n );\n }\n\n postProviderUserConfirm(\n providerId: string,\n id: string,\n request: ProviderUserConfirmRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/\" + id + \"/confirm\",\n request,\n true,\n false\n );\n }\n\n async postProviderUsersPublicKey(\n providerId: string,\n request: ProviderUserBulkRequest\n ): Promise> {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/users/public-keys\",\n request,\n true,\n true\n );\n return new ListResponse(r, ProviderUserBulkPublicKeyResponse);\n }\n\n putProviderUser(\n providerId: string,\n id: string,\n request: ProviderUserUpdateRequest\n ): Promise {\n return this.send(\"PUT\", \"/providers/\" + providerId + \"/users/\" + id, request, true, false);\n }\n\n deleteProviderUser(providerId: string, id: string): Promise {\n return this.send(\"DELETE\", \"/providers/\" + providerId + \"/users/\" + id, null, true, false);\n }\n\n // Provider Organization APIs\n\n async getProviderClients(\n providerId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/providers/\" + providerId + \"/organizations\",\n null,\n true,\n true\n );\n return new ListResponse(r, ProviderOrganizationOrganizationDetailsResponse);\n }\n\n postProviderAddOrganization(\n providerId: string,\n request: ProviderAddOrganizationRequest\n ): Promise {\n return this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/organizations/add\",\n request,\n true,\n false\n );\n }\n\n async postProviderCreateOrganization(\n providerId: string,\n request: ProviderOrganizationCreateRequest\n ): Promise {\n const r = await this.send(\n \"POST\",\n \"/providers/\" + providerId + \"/organizations\",\n request,\n true,\n true\n );\n return new ProviderOrganizationResponse(r);\n }\n\n deleteProviderOrganization(providerId: string, id: string): Promise {\n return this.send(\n \"DELETE\",\n \"/providers/\" + providerId + \"/organizations/\" + id,\n null,\n true,\n false\n );\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/ciphers/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/organizations/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(\n organizationId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\n \"/organizations/\" + organizationId + \"/users/\" + id + \"/events\",\n start,\n end,\n token\n ),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProvider(\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\"/providers/\" + id + \"/events\", start, end, token),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProviderUser(\n providerId: string,\n id: string,\n start: string,\n end: string,\n token: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n this.addEventParameters(\n \"/providers/\" + providerId + \"/users/\" + id + \"/events\",\n start,\n end,\n token\n ),\n null,\n true,\n true\n );\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n \"Device-Type\": this.deviceType,\n Authorization: \"Bearer \" + authHeader,\n \"Content-Type\": \"application/json; charset=utf-8\",\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n const response = await this.fetch(\n new Request(this.environmentService.getEventsUrl() + \"/collect\", {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n method: \"POST\",\n body: JSON.stringify(request),\n headers: headers,\n })\n );\n if (response.status !== 200) {\n return Promise.reject(\"Event post failed.\");\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send(\"GET\", \"/users/\" + id + \"/public-key\", null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send(\"GET\", \"/hibp/breach?username=\" + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send(\"POST\", \"/bitpay-invoice\", request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send(\"POST\", \"/setup-payment\", null, true, true);\n return r as string;\n }\n\n // Key Connector\n\n async getUserKeyFromKeyConnector(keyConnectorUrl: string): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/user-keys\", {\n cache: \"no-store\",\n method: \"GET\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: \"Bearer \" + authHeader,\n }),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n\n return new KeyConnectorUserKeyResponse(await response.json());\n }\n\n async postUserKeyToKeyConnector(\n keyConnectorUrl: string,\n request: KeyConnectorUserKeyRequest\n ): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/user-keys\", {\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: \"Bearer \" + authHeader,\n \"Content-Type\": \"application/json; charset=utf-8\",\n }),\n body: JSON.stringify(request),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async getKeyConnectorAlive(keyConnectorUrl: string) {\n const response = await this.fetch(\n new Request(keyConnectorUrl + \"/alive\", {\n cache: \"no-store\",\n method: \"GET\",\n headers: new Headers({\n Accept: \"application/json\",\n \"Content-Type\": \"application/json; charset=utf-8\",\n }),\n })\n );\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (await this.tokenService.tokenNeedsRefresh()) {\n await this.doAuthRefresh();\n accessToken = await this.tokenService.getToken();\n }\n return accessToken;\n }\n\n async fetch(request: Request): Promise {\n if (request.method === \"GET\") {\n request.headers.set(\"Cache-Control\", \"no-store\");\n request.headers.set(\"Pragma\", \"no-cache\");\n }\n request.headers.set(\"Bitwarden-Client-Name\", this.platformUtilsService.getClientType());\n request.headers.set(\n \"Bitwarden-Client-Version\",\n await this.platformUtilsService.getApplicationVersion()\n );\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === \"\") {\n throw new Error(\"Organization Identifier was not provided.\");\n }\n const headers = new Headers({\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + path, {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n headers: headers,\n method: \"GET\",\n })\n );\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async postCreateSponsorship(\n sponsoredOrgId: string,\n request: OrganizationSponsorshipCreateRequest\n ): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/\" +\n (this.platformUtilsService.isSelfHost() ? \"self-hosted/\" : \"\") +\n sponsoredOrgId +\n \"/families-for-enterprise\",\n request,\n true,\n false\n );\n }\n\n async getSponsorshipSyncStatus(\n sponsoredOrgId: string\n ): Promise {\n const response = await this.send(\n \"GET\",\n \"/organization/sponsorship/\" + sponsoredOrgId + \"/sync-status\",\n null,\n true,\n true\n );\n return new OrganizationSponsorshipSyncStatusResponse(response);\n }\n\n async deleteRevokeSponsorship(sponsoringOrganizationId: string): Promise {\n return await this.send(\n \"DELETE\",\n \"/organization/sponsorship/\" +\n (this.platformUtilsService.isSelfHost() ? \"self-hosted/\" : \"\") +\n sponsoringOrganizationId,\n null,\n true,\n false\n );\n }\n\n async deleteRemoveSponsorship(sponsoringOrgId: string): Promise {\n return await this.send(\n \"DELETE\",\n \"/organization/sponsorship/sponsored/\" + sponsoringOrgId,\n null,\n true,\n false\n );\n }\n\n async postPreValidateSponsorshipToken(sponsorshipToken: string): Promise {\n const r = await this.send(\n \"POST\",\n \"/organization/sponsorship/validate-token?sponsorshipToken=\" +\n encodeURIComponent(sponsorshipToken),\n null,\n true,\n true\n );\n return r as boolean;\n }\n\n async postRedeemSponsorship(\n sponsorshipToken: string,\n request: OrganizationSponsorshipRedeemRequest\n ): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/redeem?sponsorshipToken=\" + encodeURIComponent(sponsorshipToken),\n request,\n true,\n false\n );\n }\n\n async postResendSponsorshipOffer(sponsoringOrgId: string): Promise {\n return await this.send(\n \"POST\",\n \"/organization/sponsorship/\" + sponsoringOrgId + \"/families-for-enterprise/resend\",\n null,\n true,\n false\n );\n }\n\n protected async doAuthRefresh(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken != null && refreshToken !== \"\") {\n return this.doRefreshToken();\n }\n\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (!Utils.isNullOrWhitespace(clientId) && !Utils.isNullOrWhitespace(clientSecret)) {\n return this.doApiTokenRefresh();\n }\n\n throw new Error(\"Cannot refresh token, no refresh token or api keys are stored\");\n }\n\n protected async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === \"\") {\n throw new Error();\n }\n const headers = new Headers({\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\n Accept: \"application/json\",\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const decodedToken = await this.tokenService.decodeToken();\n const response = await this.fetch(\n new Request(this.environmentService.getIdentityUrl() + \"/connect/token\", {\n body: this.qsStringify({\n grant_type: \"refresh_token\",\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: \"no-store\",\n credentials: this.getCredentials(),\n headers: headers,\n method: \"POST\",\n })\n );\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(\n tokenResponse.accessToken,\n tokenResponse.refreshToken,\n null\n );\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n protected async doApiTokenRefresh(): Promise {\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n const tokenRequest = new ApiTokenRequest(\n clientId,\n clientSecret,\n new TokenRequestTwoFactor(),\n deviceRequest\n );\n\n const response = await this.postIdentityToken(tokenRequest);\n if (!(response instanceof IdentityTokenResponse)) {\n throw new Error(\"Invalid response received when refreshing api token\");\n }\n\n await this.tokenService.setToken(response.accessToken);\n }\n\n private async send(\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\n path: string,\n body: any,\n authed: boolean,\n hasResponse: boolean,\n apiUrl?: string,\n alterHeaders?: (headers: Headers) => void\n ): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.environmentService.getApiUrl() : apiUrl;\n\n const requestUrl = apiUrl + path;\n // Prevent directory traversal from malicious paths\n if (new URL(requestUrl).href !== requestUrl) {\n return Promise.reject(\"Invalid request url path.\");\n }\n\n const headers = new Headers({\n \"Device-Type\": this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set(\"User-Agent\", this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: \"no-store\",\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set(\"Authorization\", \"Bearer \" + authHeader);\n }\n if (body != null) {\n if (typeof body === \"string\") {\n requestInit.body = body;\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded; charset=utf-8\");\n } else if (typeof body === \"object\") {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set(\"Accept\", \"application/json\");\n }\n if (alterHeaders != null) {\n alterHeaders(headers);\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(requestUrl, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(\n response: Response,\n tokenError: boolean,\n authed: boolean\n ): Promise {\n if (\n authed &&\n ((tokenError && response.status === 400) ||\n response.status === 401 ||\n response.status === 403)\n ) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = { Message: await response.text() };\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n })\n .join(\"&\");\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.environmentService.hasBaseUrl()) {\n return \"include\";\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += \"?start=\" + start;\n }\n if (end != null) {\n base += base.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n base += \"end=\" + end;\n }\n if (token != null) {\n base += base.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n base += \"continuationToken=\" + token;\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get(\"content-type\");\n return typeHeader != null && typeHeader.indexOf(\"application/json\") > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get(\"content-type\");\n return typeHeader != null && typeHeader.indexOf(\"text\") > -1;\n }\n}\n","import { AppIdService as AppIdServiceAbstraction } from \"../abstractions/appId.service\";\nimport { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { Utils } from \"../misc/utils\";\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {}\n\n getAppId(): Promise {\n return this.makeAndGetAppId(\"appId\");\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId(\"anonymousAppId\");\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key, {\n htmlStorageLocation: HtmlStorageLocation.Local,\n });\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid, {\n htmlStorageLocation: HtmlStorageLocation.Local,\n });\n return guid;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { AuditService as AuditServiceAbstraction } from \"../abstractions/audit.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { throttle } from \"../misc/throttle\";\nimport { Utils } from \"../misc/utils\";\nimport { BreachAccountResponse } from \"../models/response/breachAccountResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\n\nconst PwnedPasswordsApi = \"https://api.pwnedpasswords.com/range/\";\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService\n ) {}\n\n @throttle(100, () => \"passwordLeaked\")\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, \"sha1\");\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find((v) => {\n return v.split(\":\")[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(\":\")[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { AppIdService } from \"../abstractions/appId.service\";\nimport { AuthService as AuthServiceAbstraction } from \"../abstractions/auth.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { TwoFactorService } from \"../abstractions/twoFactor.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { AuthenticationType } from \"../enums/authenticationType\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { ApiLogInStrategy } from \"../misc/logInStrategies/apiLogin.strategy\";\nimport { PasswordLogInStrategy } from \"../misc/logInStrategies/passwordLogin.strategy\";\nimport { SsoLogInStrategy } from \"../misc/logInStrategies/ssoLogin.strategy\";\nimport { AuthResult } from \"../models/domain/authResult\";\nimport {\n ApiLogInCredentials,\n PasswordLogInCredentials,\n SsoLogInCredentials,\n} from \"../models/domain/logInCredentials\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TokenRequestTwoFactor } from \"../models/request/identityToken/tokenRequestTwoFactor\";\nimport { PreloginRequest } from \"../models/request/preloginRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\n\nconst sessionTimeoutLength = 2 * 60 * 1000; // 2 minutes\n\nexport class AuthService implements AuthServiceAbstraction {\n get email(): string {\n return this.logInStrategy instanceof PasswordLogInStrategy ? this.logInStrategy.email : null;\n }\n\n get masterPasswordHash(): string {\n return this.logInStrategy instanceof PasswordLogInStrategy\n ? this.logInStrategy.masterPasswordHash\n : null;\n }\n\n private logInStrategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy;\n private sessionTimeout: any;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n protected tokenService: TokenService,\n protected appIdService: AppIdService,\n protected platformUtilsService: PlatformUtilsService,\n protected messagingService: MessagingService,\n protected logService: LogService,\n protected keyConnectorService: KeyConnectorService,\n protected environmentService: EnvironmentService,\n protected stateService: StateService,\n protected twoFactorService: TwoFactorService,\n protected i18nService: I18nService\n ) {}\n\n async logIn(\n credentials: ApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials\n ): Promise {\n this.clearState();\n\n let strategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy;\n\n if (credentials.type === AuthenticationType.Password) {\n strategy = new PasswordLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this\n );\n } else if (credentials.type === AuthenticationType.Sso) {\n strategy = new SsoLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this.keyConnectorService\n );\n } else if (credentials.type === AuthenticationType.Api) {\n strategy = new ApiLogInStrategy(\n this.cryptoService,\n this.apiService,\n this.tokenService,\n this.appIdService,\n this.platformUtilsService,\n this.messagingService,\n this.logService,\n this.stateService,\n this.twoFactorService,\n this.environmentService,\n this.keyConnectorService\n );\n }\n\n const result = await strategy.logIn(credentials as any);\n\n if (result?.requiresTwoFactor) {\n this.saveState(strategy);\n }\n return result;\n }\n\n async logInTwoFactor(\n twoFactor: TokenRequestTwoFactor,\n captchaResponse: string\n ): Promise {\n if (this.logInStrategy == null) {\n throw new Error(this.i18nService.t(\"sessionTimeout\"));\n }\n\n try {\n const result = await this.logInStrategy.logInTwoFactor(twoFactor, captchaResponse);\n\n // Only clear state if 2FA token has been accepted, otherwise we need to be able to try again\n if (!result.requiresTwoFactor && !result.requiresCaptcha) {\n this.clearState();\n }\n return result;\n } catch (e) {\n // API exceptions are okay, but if there are any unhandled client-side errors then clear state to be safe\n if (!(e instanceof ErrorResponse)) {\n this.clearState();\n }\n throw e;\n }\n }\n\n logOut(callback: () => void) {\n callback();\n this.messagingService.send(\"loggedOut\");\n }\n\n authingWithApiKey(): boolean {\n return this.logInStrategy instanceof ApiLogInStrategy;\n }\n\n authingWithSso(): boolean {\n return this.logInStrategy instanceof SsoLogInStrategy;\n }\n\n authingWithPassword(): boolean {\n return this.logInStrategy instanceof PasswordLogInStrategy;\n }\n\n async getAuthStatus(userId?: string): Promise {\n const isAuthenticated = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!isAuthenticated) {\n return AuthenticationStatus.LoggedOut;\n }\n\n // Keys aren't stored for a device that is locked or logged out\n // Make sure we're logged in before checking this, otherwise we could mix up those states\n const neverLock =\n (await this.cryptoService.hasKeyStored(KeySuffixOptions.Auto, userId)) &&\n !(await this.stateService.getEverBeenUnlocked({ userId: userId }));\n if (neverLock) {\n // TODO: This also _sets_ the key so when we check memory in the next line it finds a key.\n // We should refactor here.\n await this.cryptoService.getKey(KeySuffixOptions.Auto, userId);\n }\n\n const hasKeyInMemory = await this.cryptoService.hasKeyInMemory(userId);\n if (!hasKeyInMemory) {\n return AuthenticationStatus.Locked;\n }\n\n return AuthenticationStatus.Unlocked;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n private saveState(strategy: ApiLogInStrategy | PasswordLogInStrategy | SsoLogInStrategy) {\n this.logInStrategy = strategy;\n this.startSessionTimeout();\n }\n\n private clearState() {\n this.logInStrategy = null;\n this.clearSessionTimeout();\n }\n\n private startSessionTimeout() {\n this.clearSessionTimeout();\n this.sessionTimeout = setTimeout(() => this.clearState(), sessionTimeoutLength);\n }\n\n private clearSessionTimeout() {\n if (this.sessionTimeout != null) {\n clearTimeout(this.sessionTimeout);\n }\n }\n}\n","import { LogService } from \"../abstractions/log.service\";\nimport { Utils } from \"../misc/utils\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\n\nconst MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB\nconst MAX_BLOCKS_PER_BLOB = 50000;\n\nexport class AzureFileUploadService {\n constructor(private logService: LogService) {}\n\n async upload(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n if (data.buffer.byteLength <= MAX_SINGLE_BLOB_UPLOAD_SIZE) {\n return await this.azureUploadBlob(url, data);\n } else {\n return await this.azureUploadBlocks(url, data, renewalCallback);\n }\n }\n private async azureUploadBlob(url: string, data: EncArrayBuffer) {\n const urlObject = Utils.getUrl(url);\n const headers = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": urlObject.searchParams.get(\"sv\"),\n \"Content-Length\": data.buffer.byteLength.toString(),\n \"x-ms-blob-type\": \"BlockBlob\",\n });\n\n const request = new Request(url, {\n body: data.buffer,\n cache: \"no-store\",\n method: \"PUT\",\n headers: headers,\n });\n\n const blobResponse = await fetch(request);\n\n if (blobResponse.status !== 201) {\n throw new Error(`Failed to create Azure blob: ${blobResponse.status}`);\n }\n }\n private async azureUploadBlocks(\n url: string,\n data: EncArrayBuffer,\n renewalCallback: () => Promise\n ) {\n const baseUrl = Utils.getUrl(url);\n const blockSize = this.getMaxBlockSize(baseUrl.searchParams.get(\"sv\"));\n let blockIndex = 0;\n const numBlocks = Math.ceil(data.buffer.byteLength / blockSize);\n const blocksStaged: string[] = [];\n\n if (numBlocks > MAX_BLOCKS_PER_BLOB) {\n throw new Error(\n `Cannot upload file, exceeds maximum size of ${blockSize * MAX_BLOCKS_PER_BLOB}`\n );\n }\n\n // eslint-disable-next-line\n try {\n while (blockIndex < numBlocks) {\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockUrl = Utils.getUrl(url);\n const blockId = this.encodedBlockId(blockIndex);\n blockUrl.searchParams.append(\"comp\", \"block\");\n blockUrl.searchParams.append(\"blockid\", blockId);\n const start = blockIndex * blockSize;\n const blockData = data.buffer.slice(start, start + blockSize);\n const blockHeaders = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": blockUrl.searchParams.get(\"sv\"),\n \"Content-Length\": blockData.byteLength.toString(),\n });\n\n const blockRequest = new Request(blockUrl.toString(), {\n body: blockData,\n cache: \"no-store\",\n method: \"PUT\",\n headers: blockHeaders,\n });\n\n const blockResponse = await fetch(blockRequest);\n\n if (blockResponse.status !== 201) {\n const message = `Unsuccessful block PUT. Received status ${blockResponse.status}`;\n this.logService.error(message + \"\\n\" + (await blockResponse.json()));\n throw new Error(message);\n }\n\n blocksStaged.push(blockId);\n blockIndex++;\n }\n\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockListUrl = Utils.getUrl(url);\n const blockListXml = this.blockListXml(blocksStaged);\n blockListUrl.searchParams.append(\"comp\", \"blocklist\");\n const headers = new Headers({\n \"x-ms-date\": new Date().toUTCString(),\n \"x-ms-version\": blockListUrl.searchParams.get(\"sv\"),\n \"Content-Length\": blockListXml.length.toString(),\n });\n\n const request = new Request(blockListUrl.toString(), {\n body: blockListXml,\n cache: \"no-store\",\n method: \"PUT\",\n headers: headers,\n });\n\n const response = await fetch(request);\n\n if (response.status !== 201) {\n const message = `Unsuccessful block list PUT. Received status ${response.status}`;\n this.logService.error(message + \"\\n\" + (await response.json()));\n throw new Error(message);\n }\n } catch (e) {\n throw e;\n }\n }\n\n private async renewUrlIfNecessary(\n url: string,\n renewalCallback: () => Promise\n ): Promise {\n const urlObject = Utils.getUrl(url);\n const expiry = new Date(urlObject.searchParams.get(\"se\") ?? \"\");\n\n if (isNaN(expiry.getTime())) {\n expiry.setTime(Date.now() + 3600000);\n }\n\n if (expiry.getTime() < Date.now() + 1000) {\n return await renewalCallback();\n }\n return url;\n }\n\n private encodedBlockId(blockIndex: number) {\n // Encoded blockId max size is 64, so pre-encoding max size is 48\n const utfBlockId = (\n \"000000000000000000000000000000000000000000000000\" + blockIndex.toString()\n ).slice(-48);\n return Utils.fromUtf8ToB64(utfBlockId);\n }\n\n private blockListXml(blockIdList: string[]) {\n let xml = '';\n blockIdList.forEach((blockId) => {\n xml += `${blockId}`;\n });\n xml += \"\";\n return xml;\n }\n\n private getMaxBlockSize(version: string) {\n if (Version.compare(version, \"2019-12-12\") >= 0) {\n return 4000 * 1024 * 1024; // 4000 MiB\n } else if (Version.compare(version, \"2016-05-31\") >= 0) {\n return 100 * 1024 * 1024; // 100 MiB\n } else {\n return 4 * 1024 * 1024; // 4 MiB\n }\n }\n}\n\nclass Version {\n /**\n * Compares two Azure Versions against each other\n * @param a Version to compare\n * @param b Version to compare\n * @returns a number less than zero if b is newer than a, 0 if equal,\n * and greater than zero if a is newer than b\n */\n static compare(a: Required | string, b: Required | string) {\n if (typeof a === \"string\") {\n a = new Version(a);\n }\n\n if (typeof b === \"string\") {\n b = new Version(b);\n }\n\n return a.year !== b.year\n ? a.year - b.year\n : a.month !== b.month\n ? a.month - b.month\n : a.day !== b.day\n ? a.day - b.day\n : 0;\n }\n year = 0;\n month = 0;\n day = 0;\n\n constructor(version: string) {\n try {\n const parts = version.split(\"-\").map((v) => Number.parseInt(v, 10));\n this.year = parts[0];\n this.month = parts[1];\n this.day = parts[2];\n } catch {\n // Ignore error\n }\n }\n /**\n * Compares two Azure Versions against each other\n * @param compareTo Version to compare against\n * @returns a number less than zero if compareTo is newer, 0 if equal,\n * and greater than zero if this is greater than compareTo\n */\n compare(compareTo: Required | string) {\n return Version.compare(this, compareTo);\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { Utils } from \"../misc/utils\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\n\nexport class BitwardenFileUploadService {\n constructor(private apiService: ApiService) {}\n\n async upload(\n encryptedFileName: string,\n encryptedFileData: EncArrayBuffer,\n apiCall: (fd: FormData) => Promise\n ) {\n const fd = new FormData();\n try {\n const blob = new Blob([encryptedFileData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"data\", blob, encryptedFileName);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\n \"data\",\n Buffer.from(encryptedFileData.buffer) as any,\n {\n filepath: encryptedFileName,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n await apiCall(fd);\n }\n}\n","import { BroadcasterService as BroadcasterServiceAbstraction } from \"../abstractions/broadcaster.service\";\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach((value) => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService as CipherServiceAbstraction } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FileUploadService } from \"../abstractions/fileUpload.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { SearchService } from \"../abstractions/search.service\";\nimport { SettingsService } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { Attachment } from \"../models/domain/attachment\";\nimport { Card } from \"../models/domain/card\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport Domain from \"../models/domain/domainBase\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { Field } from \"../models/domain/field\";\nimport { Identity } from \"../models/domain/identity\";\nimport { Login } from \"../models/domain/login\";\nimport { LoginUri } from \"../models/domain/loginUri\";\nimport { Password } from \"../models/domain/password\";\nimport { SecureNote } from \"../models/domain/secureNote\";\nimport { SortedCiphersCache } from \"../models/domain/sortedCiphersCache\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { AttachmentRequest } from \"../models/request/attachmentRequest\";\nimport { CipherBulkDeleteRequest } from \"../models/request/cipherBulkDeleteRequest\";\nimport { CipherBulkMoveRequest } from \"../models/request/cipherBulkMoveRequest\";\nimport { CipherBulkRestoreRequest } from \"../models/request/cipherBulkRestoreRequest\";\nimport { CipherBulkShareRequest } from \"../models/request/cipherBulkShareRequest\";\nimport { CipherCollectionsRequest } from \"../models/request/cipherCollectionsRequest\";\nimport { CipherCreateRequest } from \"../models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CipherShareRequest } from \"../models/request/cipherShareRequest\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { AttachmentView } from \"../models/view/attachmentView\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { FieldView } from \"../models/view/fieldView\";\nimport { PasswordHistoryView } from \"../models/view/passwordHistoryView\";\nimport { View } from \"../models/view/view\";\n\nconst DomainMatchBlacklist = new Map>([\n [\"google.com\", new Set([\"script.google.com\"])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(\n this.sortCiphersByLastUsed\n );\n\n constructor(\n private cryptoService: CryptoService,\n private settingsService: SettingsService,\n private apiService: ApiService,\n private fileUploadService: FileUploadService,\n private i18nService: I18nService,\n private searchService: () => SearchService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async getDecryptedCipherCache(): Promise {\n const decryptedCiphers = await this.stateService.getDecryptedCiphers();\n return decryptedCiphers;\n }\n\n async setDecryptedCipherCache(value: CipherView[]) {\n await this.stateService.setDecryptedCiphers(value);\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n async clearCache(userId?: string): Promise {\n await this.clearDecryptedCiphersState(userId);\n }\n\n async encrypt(\n model: CipherView,\n key?: SymmetricCryptoKey,\n originalCipher: Cipher = null\n ): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (\n existingCipher.login.password != null &&\n existingCipher.login.password !== \"\" &&\n existingCipher.login.password !== model.login.password\n ) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(\n (f) =>\n f.type === FieldType.Hidden &&\n f.name != null &&\n f.name !== \"\" &&\n f.value != null &&\n f.value !== \"\"\n );\n const hiddenFields =\n model.fields == null\n ? []\n : model.fields.filter(\n (f) => f.type === FieldType.Hidden && f.name != null && f.name !== \"\"\n );\n existingHiddenFields.forEach((ef) => {\n const matchedField = hiddenFields.find((f) => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + \": \" + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n cipher.reprompt = model.reprompt;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error(\"Cannot encrypt cipher for organization. No key.\");\n }\n }\n await Promise.all([\n this.encryptObjProperty(\n model,\n cipher,\n {\n name: null,\n notes: null,\n },\n key\n ),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then((fields) => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then((ph) => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then((attachments) => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(\n attachmentsModel: AttachmentView[],\n key: SymmetricCryptoKey\n ): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async (model) => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(\n model,\n attachment,\n {\n fileName: null,\n },\n key\n ).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce(async (promise, field) => {\n await promise;\n const encField = await self.encryptField(field, key);\n encFields.push(encField);\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n field.linkedId = fieldModel.linkedId;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== \"true\") {\n fieldModel.value = \"false\";\n }\n\n await this.encryptObjProperty(\n fieldModel,\n field,\n {\n name: null,\n value: null,\n },\n key\n );\n\n return field;\n }\n\n async encryptPasswordHistories(\n phModels: PasswordHistoryView[],\n key: SymmetricCryptoKey\n ): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce(async (promise, ph) => {\n await promise;\n const encPh = await self.encryptPasswordHistory(ph, key);\n encPhs.push(encPh);\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(\n phModel: PasswordHistoryView,\n key: SymmetricCryptoKey\n ): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(\n phModel,\n ph,\n {\n password: null,\n },\n key\n );\n\n return ph;\n }\n\n async get(id: string): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n // eslint-disable-next-line\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n const localData = await this.stateService.getLocalData();\n return new Cipher(ciphers[id], localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const localData = await this.stateService.getLocalData();\n const ciphers = await this.stateService.getEncryptedCiphers();\n const response: Cipher[] = [];\n for (const id in ciphers) {\n // eslint-disable-next-line\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => \"getAllDecrypted\")\n async getAllDecrypted(): Promise {\n const userId = await this.stateService.getUserId();\n if ((await this.getDecryptedCipherCache()) != null) {\n if (\n this.searchService != null &&\n (this.searchService().indexedEntityId ?? userId) !== userId\n ) {\n await this.searchService().indexCiphers(userId, await this.getDecryptedCipherCache());\n }\n return await this.getDecryptedCipherCache();\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(async (cipher) => {\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n await this.setDecryptedCipherCache(decCiphers);\n return decCiphers;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter((cipher) => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (\n !folder &&\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(groupingId) > -1\n ) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(\n url: string,\n includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null\n ): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise =\n domain == null\n ? Promise.resolve([])\n : this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach((eqDomain) => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.stateService.getDefaultUriMatch();\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter((cipher) => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host: {\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n }\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, \"i\");\n if (regex.test(url)) {\n return true;\n }\n } catch (e) {\n this.logService.error(e);\n }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach((r) => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then((c) => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string, autofillOnPageLoad = false): Promise {\n return this.getCipherForUrl(url, true, false, autofillOnPageLoad);\n }\n\n async getLastLaunchedForUrl(url: string, autofillOnPageLoad = false): Promise {\n return this.getCipherForUrl(url, false, true, autofillOnPageLoad);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.stateService.getLocalData();\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.stateService.setLocalData(ciphersLocalData);\n\n const decryptedCipherCache = await this.stateService.getDecryptedCiphers();\n if (!decryptedCipherCache) {\n return;\n }\n\n for (let i = 0; i < decryptedCipherCache.length; i++) {\n const cached = decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n await this.stateService.setDecryptedCiphers(decryptedCipherCache);\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.stateService.getLocalData();\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.stateService.setLocalData(ciphersLocalData);\n\n const decryptedCipherCache = await this.stateService.getDecryptedCiphers();\n if (!decryptedCipherCache) {\n return;\n }\n\n for (let i = 0; i < decryptedCipherCache.length; i++) {\n const cached = decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n await this.stateService.setDecryptedCiphers(decryptedCipherCache);\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.stateService.getNeverDomains();\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.stateService.setNeverDomains(domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const data = new CipherData(response, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(\n cipher: CipherView,\n organizationId: string,\n collectionIds: string[]\n ): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach((attachment) => {\n if (attachment.key == null) {\n attachmentPromises.push(\n this.shareAttachmentWithServer(attachment, cipher.id, organizationId)\n );\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const data = new CipherData(response, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(\n ciphers: CipherView[],\n organizationId: string,\n collectionIds: string[]\n ): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(\n this.encrypt(cipher).then((c) => {\n encCiphers.push(c);\n })\n );\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n try {\n await this.apiService.putShareCiphers(request);\n } catch (e) {\n for (const cipher of ciphers) {\n cipher.organizationId = null;\n cipher.collectionIds = null;\n }\n throw e;\n }\n await this.upsert(encCiphers.map((c) => c.toCipherData()));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(\n cipher,\n unencryptedFile.name,\n evt.target.result,\n admin\n );\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = () => {\n reject(\"Error reading file.\");\n };\n });\n }\n\n async saveAttachmentRawWithServer(\n cipher: Cipher,\n filename: string,\n data: ArrayBuffer,\n admin = false\n ): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const request: AttachmentRequest = {\n key: dataEncKey[1].encryptedString,\n fileName: encFileName.encryptedString,\n fileSize: encData.buffer.byteLength,\n adminRequest: admin,\n };\n\n let response: CipherResponse;\n try {\n const uploadDataResponse = await this.apiService.postCipherAttachment(cipher.id, request);\n response = admin ? uploadDataResponse.cipherMiniResponse : uploadDataResponse.cipherResponse;\n await this.fileUploadService.uploadCipherAttachment(\n admin,\n uploadDataResponse,\n encFileName,\n encData\n );\n } catch (e) {\n if (\n (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) ||\n (e as ErrorResponse).statusCode === 405\n ) {\n response = await this.legacyServerAttachmentFileUpload(\n admin,\n cipher.id,\n encFileName,\n encData,\n dataEncKey[1]\n );\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n const cData = new CipherData(response, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerAttachmentFileUpload(\n admin: boolean,\n cipherId: string,\n encFileName: EncString,\n encData: EncArrayBuffer,\n key: EncString\n ) {\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"key\", key.encryptedString);\n fd.append(\"data\", blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"key\", key.encryptedString);\n fd.append(\n \"data\",\n Buffer.from(encData.buffer) as any,\n {\n filepath: encFileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdminLegacy(cipherId, fd);\n } else {\n response = await this.apiService.postCipherAttachmentLegacy(cipherId, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n return response;\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const data = cipher.toCipherData();\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n let ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach((c) => {\n ciphers[c.id] = c;\n });\n }\n\n await this.replace(ciphers);\n }\n\n async replace(ciphers: { [id: string]: CipherData }): Promise {\n await this.clearDecryptedCiphersState();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async clear(userId?: string): Promise {\n await this.clearEncryptedCiphersState(userId);\n await this.clearCache(userId);\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n let ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach((id) => {\n // eslint-disable-next-line\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async delete(id: string | string[]): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach((i) => {\n delete ciphers[i];\n });\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n\n // eslint-disable-next-line\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed =\n a.localData && a.localData.lastUsedDate ? (a.localData.lastUsedDate as number) : null;\n const bLastUsed =\n b.localData && b.localData.lastUsedDate ? (b.localData.lastUsedDate as number) : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator\n ? this.i18nService.collator.compare(aName, bName)\n : aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator\n ? this.i18nService.collator.compare(aName, bName)\n : aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === \"string\") {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(\n cipher: { id: string; revisionDate: string } | { id: string; revisionDate: string }[]\n ) {\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string; revisionDate: string }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n if (cipher.constructor.name === Array.name) {\n (cipher as { id: string; revisionDate: string }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string; revisionDate: string });\n }\n\n await this.clearCache();\n await this.stateService.setEncryptedCiphers(ciphers);\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string; revisionDate: string }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(\n attachmentView: AttachmentView,\n cipherId: string,\n organizationId: string\n ): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: \"no-store\" })\n );\n if (attachmentResponse.status !== 200) {\n throw Error(\"Failed to download attachment: \" + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: \"application/octet-stream\" });\n fd.append(\"key\", dataEncKey[1].encryptedString);\n fd.append(\"data\", blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"key\", dataEncKey[1].encryptedString);\n fd.append(\n \"data\",\n Buffer.from(encData.buffer) as any,\n {\n filepath: encFileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(\n cipherId,\n attachmentView.id,\n fd,\n organizationId\n );\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(\n model: V,\n obj: D,\n map: any,\n key: SymmetricCryptoKey\n ): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n // eslint-disable-next-line\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n (function (theProp, theObj) {\n const p = Promise.resolve()\n .then(() => {\n const modelProp = (model as any)[map[theProp] || theProp];\n if (modelProp && modelProp !== \"\") {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n })\n .then((val: EncString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n cipher.login.autofillOnPageLoad = model.login.autofillOnPageLoad;\n await this.encryptObjProperty(\n model.login,\n cipher.login,\n {\n username: null,\n password: null,\n totp: null,\n },\n key\n );\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(\n model.login.uris[i],\n loginUri,\n {\n uri: null,\n },\n key\n );\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(\n model.card,\n cipher.card,\n {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n },\n key\n );\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(\n model.identity,\n cipher.identity,\n {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n },\n key\n );\n return;\n default:\n throw new Error(\"Unknown cipher type.\");\n }\n }\n\n private async getCipherForUrl(\n url: string,\n lastUsed: boolean,\n lastLaunched: boolean,\n autofillOnPageLoad: boolean\n ): Promise {\n const cacheKey = autofillOnPageLoad ? \"autofillOnPageLoad-\" + url : url;\n\n if (!this.sortedCiphersCache.isCached(cacheKey)) {\n let ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n\n if (autofillOnPageLoad) {\n const autofillOnPageLoadDefault = await this.stateService.getAutoFillOnPageLoadDefault();\n ciphers = ciphers.filter(\n (cipher) =>\n cipher.login.autofillOnPageLoad ||\n (cipher.login.autofillOnPageLoad == null && autofillOnPageLoadDefault !== false)\n );\n if (ciphers.length === 0) {\n return null;\n }\n }\n\n this.sortedCiphersCache.addCiphers(cacheKey, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(cacheKey);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(cacheKey);\n } else {\n return this.sortedCiphersCache.getNext(cacheKey);\n }\n }\n\n private async clearEncryptedCiphersState(userId?: string) {\n await this.stateService.setEncryptedCiphers(null, { userId: userId });\n }\n\n private async clearDecryptedCiphersState(userId?: string) {\n await this.stateService.setDecryptedCiphers(null, { userId: userId });\n this.clearSortedCiphers();\n }\n\n private clearSortedCiphers() {\n this.sortedCiphersCache.clear();\n }\n}\n","import { CollectionService as CollectionServiceAbstraction } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ServiceUtils } from \"../misc/serviceUtils\";\nimport { Utils } from \"../misc/utils\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { Collection } from \"../models/domain/collection\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { CollectionView } from \"../models/view/collectionView\";\n\nconst NestingDelimiter = \"/\";\n\nexport class CollectionService implements CollectionServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private i18nService: I18nService,\n private stateService: StateService\n ) {}\n\n async clearCache(userId?: string): Promise {\n await this.stateService.setDecryptedCollections(null, { userId: userId });\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error(\"Collection has no organization id.\");\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error(\"No key for this collection's organization.\");\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach((collection) => {\n promises.push(collection.decrypt().then((c) => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n async get(id: string): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n // eslint-disable-next-line\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n const response: Collection[] = [];\n for (const id in collections) {\n // eslint-disable-next-line\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n let decryptedCollections = await this.stateService.getDecryptedCollections();\n if (decryptedCollections != null) {\n return decryptedCollections;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const collections = await this.getAll();\n decryptedCollections = await this.decryptMany(collections);\n await this.stateService.setDecryptedCollections(decryptedCollections);\n return decryptedCollections;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach((c) => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, \"\").split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n let collections = await this.stateService.getEncryptedCollections();\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach((c) => {\n collections[c.id] = c;\n });\n }\n\n await this.replace(collections);\n }\n\n async replace(collections: { [id: string]: CollectionData }): Promise {\n await this.clearCache();\n await this.stateService.setEncryptedCollections(collections);\n }\n\n async clear(userId?: string): Promise {\n await this.clearCache(userId);\n await this.stateService.setEncryptedCollections(null, { userId: userId });\n }\n\n async delete(id: string | string[]): Promise {\n const collections = await this.stateService.getEncryptedCollections();\n if (collections == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n delete collections[id];\n } else {\n (id as string[]).forEach((i) => {\n delete collections[i];\n });\n }\n\n await this.replace(collections);\n }\n}\n","import * as hrtime from \"browser-hrtime\";\n\nimport { LogService as LogServiceAbstraction } from \"../abstractions/log.service\";\nimport { LogLevelType } from \"../enums/logLevelType\";\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(\n protected isDev: boolean,\n protected filter: (level: LogLevelType) => boolean = null\n ) {}\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // eslint-disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // eslint-disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // eslint-disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // eslint-disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label = \"default\") {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label = \"default\"): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","import { CryptoService } from \"../abstractions/crypto.service\";\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {}\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from \"big-integer\";\n\nimport { CryptoService as CryptoServiceAbstraction } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EncryptionType } from \"../enums/encryptionType\";\nimport { HashPurpose } from \"../enums/hashPurpose\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { KeySuffixOptions } from \"../enums/keySuffixOptions\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { Utils } from \"../misc/utils\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EncryptedObject } from \"../models/domain/encryptedObject\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { ProfileOrganizationResponse } from \"../models/response/profileOrganizationResponse\";\nimport { ProfileProviderOrganizationResponse } from \"../models/response/profileProviderOrganizationResponse\";\nimport { ProfileProviderResponse } from \"../models/response/profileProviderResponse\";\n\nexport class CryptoService implements CryptoServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n protected platformUtilService: PlatformUtilsService,\n protected logService: LogService,\n protected stateService: StateService\n ) {}\n\n async setKey(key: SymmetricCryptoKey, userId?: string): Promise {\n await this.stateService.setCryptoMasterKey(key, { userId: userId });\n await this.storeKey(key, userId);\n }\n\n async setKeyHash(keyHash: string): Promise {\n await this.stateService.setKeyHash(keyHash);\n }\n\n async setEncKey(encKey: string): Promise {\n if (encKey == null) {\n return;\n }\n\n await this.stateService.setDecryptedCryptoSymmetricKey(null);\n await this.stateService.setEncryptedCryptoSymmetricKey(encKey);\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.stateService.setDecryptedPrivateKey(null);\n await this.stateService.setEncryptedPrivateKey(encPrivateKey);\n }\n\n async setOrgKeys(\n orgs: ProfileOrganizationResponse[],\n providerOrgs: ProfileProviderOrganizationResponse[]\n ): Promise {\n const orgKeys: any = {};\n orgs.forEach((org) => {\n orgKeys[org.id] = org.key;\n });\n\n for (const providerOrg of providerOrgs) {\n // Convert provider encrypted keys to user encrypted.\n const providerKey = await this.getProviderKey(providerOrg.providerId);\n const decValue = await this.decryptToBytes(new EncString(providerOrg.key), providerKey);\n orgKeys[providerOrg.id] = (await this.rsaEncrypt(decValue)).encryptedString;\n }\n\n await this.stateService.setDecryptedOrganizationKeys(null);\n return await this.stateService.setEncryptedOrganizationKeys(orgKeys);\n }\n\n async setProviderKeys(providers: ProfileProviderResponse[]): Promise {\n const providerKeys: any = {};\n providers.forEach((provider) => {\n providerKeys[provider.id] = provider.key;\n });\n\n await this.stateService.setDecryptedProviderKeys(null);\n return await this.stateService.setEncryptedProviderKeys(providerKeys);\n }\n\n async getKey(keySuffix?: KeySuffixOptions, userId?: string): Promise {\n const inMemoryKey = await this.stateService.getCryptoMasterKey({ userId: userId });\n\n if (inMemoryKey != null) {\n return inMemoryKey;\n }\n\n keySuffix ||= KeySuffixOptions.Auto;\n const symmetricKey = await this.getKeyFromStorage(keySuffix, userId);\n\n if (symmetricKey != null) {\n // TODO: Refactor here so get key doesn't also set key\n this.setKey(symmetricKey, userId);\n }\n\n return symmetricKey;\n }\n\n async getKeyFromStorage(\n keySuffix: KeySuffixOptions,\n userId?: string\n ): Promise {\n const key = await this.retrieveKeyFromStorage(keySuffix, userId);\n if (key != null) {\n const symmetricKey = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n\n if (!(await this.validateKey(symmetricKey))) {\n this.logService.warning(\"Wrong key, throwing away stored key\");\n await this.clearSecretKeyStore(userId);\n return null;\n }\n\n return symmetricKey;\n }\n return null;\n }\n\n async getKeyHash(): Promise {\n return await this.stateService.getKeyHash();\n }\n\n async compareAndUpdateKeyHash(masterPassword: string, key: SymmetricCryptoKey): Promise {\n const storedKeyHash = await this.getKeyHash();\n if (masterPassword != null && storedKeyHash != null) {\n const localKeyHash = await this.hashPassword(\n masterPassword,\n key,\n HashPurpose.LocalAuthorization\n );\n if (localKeyHash != null && storedKeyHash === localKeyHash) {\n return true;\n }\n\n // TODO: remove serverKeyHash check in 1-2 releases after everyone's keyHash has been updated\n const serverKeyHash = await this.hashPassword(\n masterPassword,\n key,\n HashPurpose.ServerAuthorization\n );\n if (serverKeyHash != null && storedKeyHash === serverKeyHash) {\n await this.setKeyHash(localKeyHash);\n return true;\n }\n }\n\n return false;\n }\n\n @sequentialize(() => \"getEncKey\")\n getEncKey(key: SymmetricCryptoKey = null): Promise {\n return this.getEncKeyHelper(key);\n }\n\n async getPublicKey(): Promise {\n const inMemoryPublicKey = await this.stateService.getPublicKey();\n if (inMemoryPublicKey != null) {\n return inMemoryPublicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n const publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n await this.stateService.setPublicKey(publicKey);\n return publicKey;\n }\n\n async getPrivateKey(): Promise {\n const decryptedPrivateKey = await this.stateService.getDecryptedPrivateKey();\n if (decryptedPrivateKey != null) {\n return decryptedPrivateKey;\n }\n\n const encPrivateKey = await this.stateService.getEncryptedPrivateKey();\n if (encPrivateKey == null) {\n return null;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), null);\n await this.stateService.setDecryptedPrivateKey(privateKey);\n return privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error(\"No public key available.\");\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, \"sha256\");\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(\n keyFingerprint,\n userId,\n 32,\n \"sha256\"\n );\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => \"getOrgKeys\")\n async getOrgKeys(): Promise> {\n const orgKeys: Map = new Map();\n const decryptedOrganizationKeys = await this.stateService.getDecryptedOrganizationKeys();\n if (decryptedOrganizationKeys != null && decryptedOrganizationKeys.size > 0) {\n return decryptedOrganizationKeys;\n }\n\n const encOrgKeys = await this.stateService.getEncryptedOrganizationKeys();\n if (encOrgKeys == null) {\n return null;\n }\n\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n // eslint-disable-next-line\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n await this.stateService.setDecryptedOrganizationKeys(orgKeys);\n }\n\n return orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n @sequentialize(() => \"getProviderKeys\")\n async getProviderKeys(): Promise> {\n const providerKeys: Map = new Map();\n const decryptedProviderKeys = await this.stateService.getDecryptedProviderKeys();\n if (decryptedProviderKeys != null && decryptedProviderKeys.size > 0) {\n return decryptedProviderKeys;\n }\n\n const encProviderKeys = await this.stateService.getEncryptedProviderKeys();\n if (encProviderKeys == null) {\n return null;\n }\n\n let setKey = false;\n\n for (const orgId in encProviderKeys) {\n // eslint-disable-next-line\n if (!encProviderKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encProviderKeys[orgId]);\n providerKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n await this.stateService.setDecryptedProviderKeys(providerKeys);\n }\n\n return providerKeys;\n }\n\n async getProviderKey(providerId: string): Promise {\n if (providerId == null) {\n return null;\n }\n\n const providerKeys = await this.getProviderKeys();\n if (providerKeys == null || !providerKeys.has(providerId)) {\n return null;\n }\n\n return providerKeys.get(providerId);\n }\n\n async hasKey(): Promise {\n return (\n (await this.hasKeyInMemory()) ||\n (await this.hasKeyStored(KeySuffixOptions.Auto)) ||\n (await this.hasKeyStored(KeySuffixOptions.Biometric))\n );\n }\n\n async hasKeyInMemory(userId?: string): Promise {\n return (await this.stateService.getCryptoMasterKey({ userId: userId })) != null;\n }\n\n async hasKeyStored(keySuffix: KeySuffixOptions, userId?: string): Promise {\n switch (keySuffix) {\n case KeySuffixOptions.Auto:\n return (await this.stateService.getCryptoMasterKeyAuto({ userId: userId })) != null;\n case KeySuffixOptions.Biometric:\n return (await this.stateService.hasCryptoMasterKeyBiometric({ userId: userId })) === true;\n default:\n return false;\n }\n }\n\n async hasEncKey(): Promise {\n return (await this.stateService.getEncryptedCryptoSymmetricKey()) != null;\n }\n\n async clearKey(clearSecretStorage = true, userId?: string): Promise {\n await this.stateService.setCryptoMasterKey(null, { userId: userId });\n await this.stateService.setLegacyEtmKey(null, { userId: userId });\n if (clearSecretStorage) {\n await this.clearSecretKeyStore(userId);\n }\n }\n\n async clearStoredKey(keySuffix: KeySuffixOptions) {\n keySuffix === KeySuffixOptions.Auto\n ? await this.stateService.setCryptoMasterKeyAuto(null)\n : await this.stateService.setCryptoMasterKeyBiometric(null);\n }\n\n async clearKeyHash(userId?: string): Promise {\n return await this.stateService.setKeyHash(null, { userId: userId });\n }\n\n async clearEncKey(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedCryptoSymmetricKey(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedCryptoSymmetricKey(null, { userId: userId });\n }\n }\n\n async clearKeyPair(memoryOnly?: boolean, userId?: string): Promise {\n const keysToClear: Promise[] = [\n this.stateService.setDecryptedPrivateKey(null, { userId: userId }),\n this.stateService.setPublicKey(null, { userId: userId }),\n ];\n if (!memoryOnly) {\n keysToClear.push(this.stateService.setEncryptedPrivateKey(null, { userId: userId }));\n }\n return Promise.all(keysToClear);\n }\n\n async clearOrgKeys(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedOrganizationKeys(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedOrganizationKeys(null, { userId: userId });\n }\n }\n\n async clearProviderKeys(memoryOnly?: boolean, userId?: string): Promise {\n await this.stateService.setDecryptedProviderKeys(null, { userId: userId });\n if (!memoryOnly) {\n await this.stateService.setEncryptedProviderKeys(null, { userId: userId });\n }\n }\n\n async clearPinProtectedKey(userId?: string): Promise {\n return await this.stateService.setEncryptedPinProtected(null, { userId: userId });\n }\n\n async clearKeys(userId?: string): Promise {\n await this.clearKey(true, userId);\n await this.clearKeyHash(userId);\n await this.clearOrgKeys(false, userId);\n await this.clearProviderKeys(false, userId);\n await this.clearEncKey(false, userId);\n await this.clearKeyPair(false, userId);\n await this.clearPinProtectedKey(userId);\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n\n await this.setKey(key);\n }\n\n async makeKey(\n password: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ): Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error(\"PBKDF2 iteration minimum is 5000.\");\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, \"sha256\", kdfIterations);\n } else {\n throw new Error(\"Unknown Kdf.\");\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number,\n protectedKeyCs: EncString = null\n ): Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.stateService.getEncryptedPinProtected();\n if (pinProtectedKey == null) {\n throw new Error(\"No PIN protected key found.\");\n }\n protectedKeyCs = new EncString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[EncString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, EncString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(\n pin: string,\n salt: string,\n kdf: KdfType,\n kdfIterations: number\n ): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(\n keyMaterial,\n \"bitwarden-send\",\n \"send\",\n 64,\n \"sha256\"\n );\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(\n password: string,\n key: SymmetricCryptoKey,\n hashPurpose?: HashPurpose\n ): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error(\"Invalid parameters.\");\n }\n\n const iterations = hashPurpose === HashPurpose.LocalAuthorization ? 2 : 1;\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, \"sha256\", iterations);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(\n key: SymmetricCryptoKey,\n encKey?: SymmetricCryptoKey\n ): Promise<[SymmetricCryptoKey, EncString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof plainValue === \"string\") {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new EncString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return new EncArrayBuffer(encBytes.buffer);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error(\"Public key unavailable.\");\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, \"sha1\");\n return new EncString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string, privateKeyValue?: ArrayBuffer): Promise {\n const headerPieces = encValue.split(\".\");\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split(\"|\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64: // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error(\"encType unavailable.\");\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error(\"encPieces unavailable.\");\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = privateKeyValue ?? (await this.getPrivateKey());\n if (privateKey == null) {\n throw new Error(\"No private key.\");\n }\n\n let alg: \"sha1\" | \"sha256\" = \"sha1\";\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = \"sha256\";\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error(\"encType unavailable.\");\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(encString: EncString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(encString.iv).buffer;\n const data = Utils.fromB64ToArray(encString.data).buffer;\n const mac = encString.mac ? Utils.fromB64ToArray(encString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(encString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(encString: EncString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(\n encString.encryptionType,\n encString.data,\n encString.iv,\n encString.mac,\n key\n );\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error(\"no encBuf.\");\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) {\n // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) {\n // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(\n encType,\n ctBytes.buffer,\n ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null,\n key\n );\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error(\"We cannot generate numbers larger than 53 bits.\");\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n async validateKey(key: SymmetricCryptoKey) {\n try {\n const encPrivateKey = await this.stateService.getEncryptedPrivateKey();\n const encKey = await this.getEncKeyHelper(key);\n if (encPrivateKey == null || encKey == null) {\n return false;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), encKey);\n await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n // Helpers\n protected async storeKey(key: SymmetricCryptoKey, userId?: string) {\n if (await this.shouldStoreKey(KeySuffixOptions.Auto, userId)) {\n await this.stateService.setCryptoMasterKeyAuto(key.keyB64, { userId: userId });\n } else if (await this.shouldStoreKey(KeySuffixOptions.Biometric, userId)) {\n await this.stateService.setCryptoMasterKeyBiometric(key.keyB64, { userId: userId });\n } else {\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.stateService.setCryptoMasterKeyBiometric(null, { userId: userId });\n }\n }\n\n protected async shouldStoreKey(keySuffix: KeySuffixOptions, userId?: string) {\n let shouldStoreKey = false;\n if (keySuffix === KeySuffixOptions.Auto) {\n const vaultTimeout = await this.stateService.getVaultTimeout({ userId: userId });\n shouldStoreKey = vaultTimeout == null;\n } else if (keySuffix === KeySuffixOptions.Biometric) {\n const biometricUnlock = await this.stateService.getBiometricUnlock({ userId: userId });\n shouldStoreKey = biometricUnlock && this.platformUtilService.supportsSecureStorage();\n }\n return shouldStoreKey;\n }\n\n protected async retrieveKeyFromStorage(keySuffix: KeySuffixOptions, userId?: string) {\n return keySuffix === KeySuffixOptions.Auto\n ? await this.stateService.getCryptoMasterKeyAuto({ userId: userId })\n : await this.stateService.getCryptoMasterKeyBiometric({ userId: userId });\n }\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, \"sha256\");\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(\n encType: EncryptionType,\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = await this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error(\"mac required.\");\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error(\"encType unavailable.\");\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(\n fastParams.macData,\n fastParams.macKey,\n \"sha256\"\n );\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error(\"mac failed.\");\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(\n encType: EncryptionType,\n data: ArrayBuffer,\n iv: ArrayBuffer,\n mac: ArrayBuffer,\n key: SymmetricCryptoKey\n ): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = await this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(\n macData.buffer,\n theKey.macKey,\n \"sha256\"\n );\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error(\"mac failed.\");\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private async resolveLegacyKey(\n encType: EncryptionType,\n key: SymmetricCryptoKey\n ): Promise {\n if (\n encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64\n ) {\n // Old encrypt-then-mac scheme, make a new key\n let legacyKey = await this.stateService.getLegacyEtmKey();\n if (legacyKey == null) {\n legacyKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n await this.stateService.setLegacyEtmKey(legacyKey);\n }\n return legacyKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, \"enc\", 32, \"sha256\");\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, \"mac\", 32, \"sha256\");\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error(\"Output entropy of hash function is too small\");\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(\n key: SymmetricCryptoKey,\n encKey: ArrayBuffer\n ): Promise<[SymmetricCryptoKey, EncString]> {\n let encKeyEnc: EncString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error(\"Invalid key size.\");\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n\n private async clearSecretKeyStore(userId?: string): Promise {\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.stateService.setCryptoMasterKeyBiometric(null, { userId: userId });\n }\n\n private async getEncKeyHelper(key: SymmetricCryptoKey = null): Promise {\n const inMemoryKey = await this.stateService.getDecryptedCryptoSymmetricKey();\n if (inMemoryKey != null) {\n return inMemoryKey;\n }\n\n const encKey = await this.stateService.getEncryptedCryptoSymmetricKey();\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new EncString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error(\"Unsupported encKey type.\");\n }\n if (decEncKey == null) {\n return null;\n }\n const symmetricCryptoKey = new SymmetricCryptoKey(decEncKey);\n await this.stateService.setDecryptedCryptoSymmetricKey(symmetricCryptoKey);\n return symmetricCryptoKey;\n }\n}\n","import { Observable, Subject } from \"rxjs\";\n\nimport {\n EnvironmentService as EnvironmentServiceAbstraction,\n Urls,\n} from \"../abstractions/environment.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n private readonly urlsSubject = new Subject();\n urls: Observable = this.urlsSubject;\n\n private baseUrl: string;\n private webVaultUrl: string;\n private apiUrl: string;\n private identityUrl: string;\n private iconsUrl: string;\n private notificationsUrl: string;\n private eventsUrl: string;\n private keyConnectorUrl: string;\n\n constructor(private stateService: StateService) {\n this.stateService.activeAccount.subscribe(async () => {\n await this.setUrlsFromStorage();\n });\n }\n\n hasBaseUrl() {\n return this.baseUrl != null;\n }\n\n getNotificationsUrl() {\n if (this.notificationsUrl != null) {\n return this.notificationsUrl;\n }\n\n if (this.baseUrl != null) {\n return this.baseUrl + \"/notifications\";\n }\n\n return \"https://notifications.bitwarden.com\";\n }\n\n getWebVaultUrl() {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl;\n }\n return \"https://vault.bitwarden.com\";\n }\n\n getSendUrl() {\n return this.getWebVaultUrl() === \"https://vault.bitwarden.com\"\n ? \"https://send.bitwarden.com/#\"\n : this.getWebVaultUrl() + \"/#/send/\";\n }\n\n getIconsUrl() {\n if (this.iconsUrl != null) {\n return this.iconsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/icons\";\n }\n\n return \"https://icons.bitwarden.net\";\n }\n\n getApiUrl() {\n if (this.apiUrl != null) {\n return this.apiUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/api\";\n }\n\n return \"https://api.bitwarden.com\";\n }\n\n getIdentityUrl() {\n if (this.identityUrl != null) {\n return this.identityUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/identity\";\n }\n\n return \"https://identity.bitwarden.com\";\n }\n\n getEventsUrl() {\n if (this.eventsUrl != null) {\n return this.eventsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + \"/events\";\n }\n\n return \"https://events.bitwarden.com\";\n }\n\n getKeyConnectorUrl() {\n return this.keyConnectorUrl;\n }\n\n async setUrlsFromStorage(): Promise {\n const urls: any = await this.stateService.getEnvironmentUrls();\n const envUrls = new EnvironmentUrls();\n\n this.baseUrl = envUrls.base = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n }\n\n async setUrls(urls: Urls): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.keyConnector = this.formatUrl(urls.keyConnector);\n\n await this.stateService.setEnvironmentUrls({\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n keyConnector: urls.keyConnector,\n });\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n\n this.urlsSubject.next(urls);\n\n return urls;\n }\n\n getUrls() {\n return {\n base: this.baseUrl,\n webVault: this.webVaultUrl,\n api: this.apiUrl,\n identity: this.identityUrl,\n icons: this.iconsUrl,\n notifications: this.notificationsUrl,\n events: this.eventsUrl,\n keyConnector: this.keyConnectorUrl,\n };\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === \"\") {\n return null;\n }\n\n url = url.replace(/\\/+$/g, \"\");\n if (!url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n url = \"https://\" + url;\n }\n\n return url.trim();\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { EventService as EventServiceAbstraction } from \"../abstractions/event.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { EventType } from \"../enums/eventType\";\nimport { EventData } from \"../models/data/eventData\";\nimport { EventRequest } from \"../models/request/eventRequest\";\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(\n private apiService: ApiService,\n private cipherService: CipherService,\n private stateService: StateService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(\n eventType: EventType,\n cipherId: string = null,\n uploadImmediately = false\n ): Promise {\n const authed = await this.stateService.getIsAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.organizationService.getAll();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter((o) => o.useEvents).map((o) => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.stateService.getEventCollection();\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.stateService.setEventCollection(eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(userId?: string): Promise {\n const authed = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!authed) {\n return;\n }\n const eventCollection = await this.stateService.getEventCollection({ userId: userId });\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map((e) => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents(userId);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async clearEvents(userId?: string): Promise {\n await this.stateService.setEventCollection(null, { userId: userId });\n }\n}\n","import * as papa from \"papaparse\";\n\nimport { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport {\n ExportFormat,\n ExportService as ExportServiceAbstraction,\n} from \"../abstractions/export.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { DEFAULT_KDF_ITERATIONS, KdfType } from \"../enums/kdfType\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { Cipher } from \"../models/domain/cipher\";\nimport { Collection } from \"../models/domain/collection\";\nimport { Folder } from \"../models/domain/folder\";\nimport { CipherWithIdExport as CipherExport } from \"../models/export/cipherWithIdsExport\";\nimport { CollectionWithIdExport as CollectionExport } from \"../models/export/collectionWithIdExport\";\nimport { EventExport } from \"../models/export/eventExport\";\nimport { FolderWithIdExport as FolderExport } from \"../models/export/folderWithIdExport\";\nimport { CollectionDetailsResponse } from \"../models/response/collectionResponse\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { EventView } from \"../models/view/eventView\";\nimport { FolderView } from \"../models/view/folderView\";\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(\n private folderService: FolderService,\n private cipherService: CipherService,\n private apiService: ApiService,\n private cryptoService: CryptoService,\n private cryptoFunctionService: CryptoFunctionService\n ) {}\n\n async getExport(format: ExportFormat = \"csv\", organizationId?: string): Promise {\n if (organizationId) {\n return await this.getOrganizationExport(organizationId, format);\n }\n\n if (format === \"encrypted_json\") {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getPasswordProtectedExport(password: string, organizationId?: string): Promise {\n const clearText = organizationId\n ? await this.getOrganizationExport(organizationId, \"json\")\n : await this.getExport(\"json\");\n\n const salt = Utils.fromBufferToB64(await this.cryptoFunctionService.randomBytes(16));\n const kdfIterations = DEFAULT_KDF_ITERATIONS;\n const key = await this.cryptoService.makePinKey(\n password,\n salt,\n KdfType.PBKDF2_SHA256,\n kdfIterations\n );\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), key);\n const encText = await this.cryptoService.encrypt(clearText, key);\n\n const jsonDoc: any = {\n encrypted: true,\n passwordProtected: true,\n salt: salt,\n kdfIterations: kdfIterations,\n kdfType: KdfType.PBKDF2_SHA256,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n data: encText.encryptedString,\n };\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n async getOrganizationExport(\n organizationId: string,\n format: ExportFormat = \"csv\"\n ): Promise {\n if (format === \"encrypted_json\") {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n async getEventExport(events: EventView[]): Promise {\n return papa.unparse(events.map((e) => new EventExport(e)));\n }\n\n getFileName(prefix: string = null, extension = \"csv\"): string {\n const now = new Date();\n const dateString =\n now.getFullYear() +\n \"\" +\n this.padNumber(now.getMonth() + 1, 2) +\n \"\" +\n this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) +\n \"\" +\n this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return \"bitwarden\" + (prefix ? \"_\" + prefix : \"\") + \"_export_\" + dateString + \".\" + extension;\n }\n\n private async getDecryptedExport(format: \"json\" | \"csv\"): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(\n this.folderService.getAllDecrypted().then((folders) => {\n decFolders = folders;\n })\n );\n\n promises.push(\n this.cipherService.getAllDecrypted().then((ciphers) => {\n decCiphers = ciphers.filter((f) => f.deletedDate == null);\n })\n );\n\n await Promise.all(promises);\n\n if (format === \"csv\") {\n const foldersMap = new Map();\n decFolders.forEach((f) => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder =\n c.folderId != null && foldersMap.has(c.folderId) ? foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach((f) => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach((c) => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(\n this.folderService.getAll().then((f) => {\n folders = f;\n })\n );\n\n promises.push(\n this.cipherService.getAll().then((c) => {\n ciphers = c.filter((f) => f.deletedDate == null);\n })\n );\n\n await Promise.all(promises);\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid());\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n folders: [],\n items: [],\n };\n\n folders.forEach((f) => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach((c) => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n private async getOrganizationDecryptedExport(\n organizationId: string,\n format: \"json\" | \"csv\"\n ): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(\n this.apiService.getCollections(organizationId).then((collections) => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach((c) => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(\n collection.decrypt().then((decCol) => {\n decCollections.push(decCol);\n })\n );\n });\n }\n return Promise.all(collectionPromises);\n })\n );\n\n promises.push(\n this.apiService.getCiphersOrganization(organizationId).then((ciphers) => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data\n .filter((c) => c.deletedDate === null)\n .forEach((c) => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(\n cipher.decrypt().then((decCipher) => {\n decCiphers.push(decCipher);\n })\n );\n });\n }\n return Promise.all(cipherPromises);\n })\n );\n\n await Promise.all(promises);\n\n if (format === \"csv\") {\n const collectionsMap = new Map();\n decCollections.forEach((c) => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach((c) => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds\n .filter((id) => collectionsMap.has(id))\n .map((id) => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach((c) => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach((c) => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, \" \");\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(\n this.apiService.getCollections(organizationId).then((c) => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach((r) => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n })\n );\n\n promises.push(\n this.apiService.getCiphersOrganization(organizationId).then((c) => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data\n .filter((item) => item.deletedDate === null)\n .forEach((item) => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n })\n );\n\n await Promise.all(promises);\n\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), orgKey);\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n collections: [],\n items: [],\n };\n\n collections.forEach((c) => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach((c) => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, \" \");\n }\n\n private padNumber(num: number, width: number, padCharacter = \"0\"): string {\n const numString = num.toString();\n return numString.length >= width\n ? numString\n : new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n cipher.reprompt = c.reprompt;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = \"\";\n } else {\n cipher.fields += \"\\n\";\n }\n\n cipher.fields += (f.name || \"\") + \": \" + f.value;\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = \"login\";\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach((u) => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = \"note\";\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { FileUploadService as FileUploadServiceAbstraction } from \"../abstractions/fileUpload.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { FileUploadType } from \"../enums/fileUploadType\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { AttachmentUploadDataResponse } from \"../models/response/attachmentUploadDataResponse\";\nimport { SendFileUploadDataResponse } from \"../models/response/sendFileUploadDataResponse\";\n\nimport { AzureFileUploadService } from \"./azureFileUpload.service\";\nimport { BitwardenFileUploadService } from \"./bitwardenFileUpload.service\";\n\nexport class FileUploadService implements FileUploadServiceAbstraction {\n private azureFileUploadService: AzureFileUploadService;\n private bitwardenFileUploadService: BitwardenFileUploadService;\n\n constructor(private logService: LogService, private apiService: ApiService) {\n this.azureFileUploadService = new AzureFileUploadService(logService);\n this.bitwardenFileUploadService = new BitwardenFileUploadService(apiService);\n }\n\n async uploadSendFile(\n uploadData: SendFileUploadDataResponse,\n fileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) {\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(\n fileName.encryptedString,\n encryptedFileData,\n (fd) =>\n this.apiService.postSendFile(\n uploadData.sendResponse.id,\n uploadData.sendResponse.file.id,\n fd\n )\n );\n break;\n case FileUploadType.Azure: {\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewSendFileUploadUrl(\n uploadData.sendResponse.id,\n uploadData.sendResponse.file.id\n );\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(\n uploadData.url,\n encryptedFileData,\n renewalCallback\n );\n break;\n }\n default:\n throw new Error(\"Unknown file upload type\");\n }\n } catch (e) {\n await this.apiService.deleteSend(uploadData.sendResponse.id);\n throw e;\n }\n }\n\n async uploadCipherAttachment(\n admin: boolean,\n uploadData: AttachmentUploadDataResponse,\n encryptedFileName: EncString,\n encryptedFileData: EncArrayBuffer\n ) {\n const response = admin ? uploadData.cipherMiniResponse : uploadData.cipherResponse;\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(\n encryptedFileName.encryptedString,\n encryptedFileData,\n (fd) => this.apiService.postAttachmentFile(response.id, uploadData.attachmentId, fd)\n );\n break;\n case FileUploadType.Azure: {\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewAttachmentUploadUrl(\n response.id,\n uploadData.attachmentId\n );\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(\n uploadData.url,\n encryptedFileData,\n renewalCallback\n );\n break;\n }\n default:\n throw new Error(\"Unknown file upload type.\");\n }\n } catch (e) {\n if (admin) {\n await this.apiService.deleteCipherAttachmentAdmin(response.id, uploadData.attachmentId);\n } else {\n await this.apiService.deleteCipherAttachment(response.id, uploadData.attachmentId);\n }\n throw e;\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService as FolderServiceAbstraction } from \"../abstractions/folder.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ServiceUtils } from \"../misc/serviceUtils\";\nimport { Utils } from \"../misc/utils\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { Folder } from \"../models/domain/folder\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { TreeNode } from \"../models/domain/treeNode\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport { FolderView } from \"../models/view/folderView\";\n\nconst NestingDelimiter = \"/\";\n\nexport class FolderService implements FolderServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private cipherService: CipherService,\n private stateService: StateService\n ) {}\n\n async clearCache(userId?: string): Promise {\n await this.stateService.setDecryptedFolders(null, { userId: userId });\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n // eslint-disable-next-line\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n const response: Folder[] = [];\n for (const id in folders) {\n // eslint-disable-next-line\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n const decryptedFolders = await this.stateService.getDecryptedFolders();\n if (decryptedFolders != null) {\n return decryptedFolders;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach((folder) => {\n promises.push(folder.decrypt().then((f) => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t(\"noneFolder\");\n decFolders.push(noneFolder);\n\n await this.stateService.setDecryptedFolders(decFolders);\n return decFolders;\n }\n\n async getAllNested(folders?: FolderView[]): Promise[]> {\n folders = folders ?? (await this.getAllDecrypted());\n const nodes: TreeNode[] = [];\n folders.forEach((f) => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, \"\").split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const data = new FolderData(response);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n let folders = await this.stateService.getEncryptedFolders();\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach((f) => {\n folders[f.id] = f;\n });\n }\n\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n }\n\n async replace(folders: { [id: string]: FolderData }): Promise {\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setDecryptedFolders(null, { userId: userId });\n await this.stateService.setEncryptedFolders(null, { userId: userId });\n }\n\n async delete(id: string | string[]): Promise {\n const folders = await this.stateService.getEncryptedFolders();\n if (folders == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach((i) => {\n delete folders[i];\n });\n }\n\n await this.stateService.setDecryptedFolders(null);\n await this.stateService.setEncryptedFolders(folders);\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.stateService.getEncryptedCiphers();\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { I18nService as I18nServiceAbstraction } from \"../abstractions/i18n.service\";\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = [\"en\"];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n [\"af\", \"Afrikaans\"],\n [\"az\", \"Azərbaycanca\"],\n [\"be\", \"Беларуская\"],\n [\"bg\", \"български\"],\n [\"bn\", \"বাংলা\"],\n [\"bs\", \"bosanski jezik\"],\n [\"ca\", \"català\"],\n [\"cs\", \"čeština\"],\n [\"da\", \"dansk\"],\n [\"de\", \"Deutsch\"],\n [\"el\", \"Ελληνικά\"],\n [\"en\", \"English\"],\n [\"en-GB\", \"English (British)\"],\n [\"en-IN\", \"English (India)\"],\n [\"eo\", \"Esperanto\"],\n [\"es\", \"español\"],\n [\"et\", \"eesti\"],\n [\"fa\", \"فارسی\"],\n [\"fi\", \"suomi\"],\n [\"fil\", \"Wikang Filipino\"],\n [\"fr\", \"français\"],\n [\"he\", \"עברית\"],\n [\"hi\", \"हिन्दी\"],\n [\"hr\", \"hrvatski\"],\n [\"hu\", \"magyar\"],\n [\"id\", \"Bahasa Indonesia\"],\n [\"it\", \"italiano\"],\n [\"ja\", \"日本語\"],\n [\"ka\", \"ქართული\"],\n [\"km\", \"ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ\"],\n [\"kn\", \"ಕನ್ನಡ\"],\n [\"ko\", \"한국어\"],\n [\"lt\", \"lietuvių kalba\"],\n [\"lv\", \"Latvietis\"],\n [\"me\", \"црногорски\"],\n [\"ml\", \"മലയാളം\"],\n [\"nb\", \"norsk (bokmål)\"],\n [\"nl\", \"Nederlands\"],\n [\"nn\", \"Norsk Nynorsk\"],\n [\"pl\", \"polski\"],\n [\"pt-BR\", \"português do Brasil\"],\n [\"pt-PT\", \"português\"],\n [\"ro\", \"română\"],\n [\"ru\", \"русский\"],\n [\"si\", \"සිංහල\"],\n [\"sk\", \"slovenčina\"],\n [\"sl\", \"Slovenski jezik, Slovenščina\"],\n [\"sr\", \"Српски\"],\n [\"sv\", \"svenska\"],\n [\"th\", \"ไทย\"],\n [\"tr\", \"Türkçe\"],\n [\"uk\", \"українська\"],\n [\"vi\", \"Tiếng Việt\"],\n [\"zh-CN\", \"中文(中国大陆)\"],\n [\"zh-TW\", \"中文(台灣)\"],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(\n protected systemLanguage: string,\n protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise\n ) {\n this.systemLanguage = systemLanguage.replace(\"_\", \"-\");\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error(\"i18n already initialized.\");\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error(\"supportedTranslationLocales not set.\");\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: \"base\" });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n // eslint-disable-next-line\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n // eslint-disable-next-line\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = \"\";\n }\n\n if (result !== \"\") {\n if (p1 != null) {\n result = result.split(\"__$1__\").join(p1);\n }\n if (p2 != null) {\n result = result.split(\"__$2__\").join(p2);\n }\n if (p3 != null) {\n result = result.split(\"__$3__\").join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace(\"-\", \"_\");\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n // eslint-disable-next-line\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (\n !locales[prop].placeholders.hasOwnProperty(placeProp) || // eslint-disable-line\n !locales[prop].placeholders[placeProp].content\n ) {\n continue;\n }\n\n const replaceToken = \"\\\\$\" + placeProp.toUpperCase() + \"\\\\$\";\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === \"$1\" || replaceContent === \"$2\" || replaceContent === \"$3\") {\n replaceContent = \"__$\" + replaceContent + \"__\";\n }\n messagesObj[prop] = messagesObj[prop].replace(\n new RegExp(replaceToken, \"g\"),\n replaceContent\n );\n }\n }\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { ImportService as ImportServiceAbstraction } from \"../abstractions/import.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport {\n featuredImportOptions,\n ImportOption,\n ImportType,\n regularImportOptions,\n} from \"../enums/importOptions\";\nimport { AscendoCsvImporter } from \"../importers/ascendoCsvImporter\";\nimport { AvastCsvImporter } from \"../importers/avastCsvImporter\";\nimport { AvastJsonImporter } from \"../importers/avastJsonImporter\";\nimport { AviraCsvImporter } from \"../importers/aviraCsvImporter\";\nimport { BitwardenCsvImporter } from \"../importers/bitwardenCsvImporter\";\nimport { BitwardenJsonImporter } from \"../importers/bitwardenJsonImporter\";\nimport { BitwardenPasswordProtectedImporter } from \"../importers/bitwardenPasswordProtectedImporter\";\nimport { BlackBerryCsvImporter } from \"../importers/blackBerryCsvImporter\";\nimport { BlurCsvImporter } from \"../importers/blurCsvImporter\";\nimport { ButtercupCsvImporter } from \"../importers/buttercupCsvImporter\";\nimport { ChromeCsvImporter } from \"../importers/chromeCsvImporter\";\nimport { ClipperzHtmlImporter } from \"../importers/clipperzHtmlImporter\";\nimport { CodebookCsvImporter } from \"../importers/codebookCsvImporter\";\nimport { DashlaneCsvImporter } from \"../importers/dashlaneImporters/dashlaneCsvImporter\";\nimport { DashlaneJsonImporter } from \"../importers/dashlaneImporters/dashlaneJsonImporter\";\nimport { EncryptrCsvImporter } from \"../importers/encryptrCsvImporter\";\nimport { EnpassCsvImporter } from \"../importers/enpassCsvImporter\";\nimport { EnpassJsonImporter } from \"../importers/enpassJsonImporter\";\nimport { FirefoxCsvImporter } from \"../importers/firefoxCsvImporter\";\nimport { FSecureFskImporter } from \"../importers/fsecureFskImporter\";\nimport { GnomeJsonImporter } from \"../importers/gnomeJsonImporter\";\nimport { ImportError } from \"../importers/importError\";\nimport { Importer } from \"../importers/importer\";\nimport { KasperskyTxtImporter } from \"../importers/kasperskyTxtImporter\";\nimport { KeePass2XmlImporter } from \"../importers/keepass2XmlImporter\";\nimport { KeePassXCsvImporter } from \"../importers/keepassxCsvImporter\";\nimport { KeeperCsvImporter } from \"../importers/keeperImporters/keeperCsvImporter\";\nimport { LastPassCsvImporter } from \"../importers/lastpassCsvImporter\";\nimport { LogMeOnceCsvImporter } from \"../importers/logMeOnceCsvImporter\";\nimport { MeldiumCsvImporter } from \"../importers/meldiumCsvImporter\";\nimport { MSecureCsvImporter } from \"../importers/msecureCsvImporter\";\nimport { MykiCsvImporter } from \"../importers/mykiCsvImporter\";\nimport { NordPassCsvImporter } from \"../importers/nordpassCsvImporter\";\nimport { OnePassword1PifImporter } from \"../importers/onepasswordImporters/onepassword1PifImporter\";\nimport { OnePassword1PuxImporter } from \"../importers/onepasswordImporters/onepassword1PuxImporter\";\nimport { OnePasswordMacCsvImporter } from \"../importers/onepasswordImporters/onepasswordMacCsvImporter\";\nimport { OnePasswordWinCsvImporter } from \"../importers/onepasswordImporters/onepasswordWinCsvImporter\";\nimport { PadlockCsvImporter } from \"../importers/padlockCsvImporter\";\nimport { PassKeepCsvImporter } from \"../importers/passkeepCsvImporter\";\nimport { PassmanJsonImporter } from \"../importers/passmanJsonImporter\";\nimport { PasspackCsvImporter } from \"../importers/passpackCsvImporter\";\nimport { PasswordAgentCsvImporter } from \"../importers/passwordAgentCsvImporter\";\nimport { PasswordBossJsonImporter } from \"../importers/passwordBossJsonImporter\";\nimport { PasswordDragonXmlImporter } from \"../importers/passwordDragonXmlImporter\";\nimport { PasswordSafeXmlImporter } from \"../importers/passwordSafeXmlImporter\";\nimport { PasswordWalletTxtImporter } from \"../importers/passwordWalletTxtImporter\";\nimport { RememBearCsvImporter } from \"../importers/rememBearCsvImporter\";\nimport { RoboFormCsvImporter } from \"../importers/roboformCsvImporter\";\nimport { SafariCsvImporter } from \"../importers/safariCsvImporter\";\nimport { SafeInCloudXmlImporter } from \"../importers/safeInCloudXmlImporter\";\nimport { SaferPassCsvImporter } from \"../importers/saferpassCsvImport\";\nimport { SecureSafeCsvImporter } from \"../importers/secureSafeCsvImporter\";\nimport { SplashIdCsvImporter } from \"../importers/splashIdCsvImporter\";\nimport { StickyPasswordXmlImporter } from \"../importers/stickyPasswordXmlImporter\";\nimport { TrueKeyCsvImporter } from \"../importers/truekeyCsvImporter\";\nimport { UpmCsvImporter } from \"../importers/upmCsvImporter\";\nimport { YotiCsvImporter } from \"../importers/yotiCsvImporter\";\nimport { ZohoVaultCsvImporter } from \"../importers/zohoVaultCsvImporter\";\nimport { Utils } from \"../misc/utils\";\nimport { ImportResult } from \"../models/domain/importResult\";\nimport { CipherRequest } from \"../models/request/cipherRequest\";\nimport { CollectionRequest } from \"../models/request/collectionRequest\";\nimport { FolderRequest } from \"../models/request/folderRequest\";\nimport { ImportCiphersRequest } from \"../models/request/importCiphersRequest\";\nimport { ImportOrganizationCiphersRequest } from \"../models/request/importOrganizationCiphersRequest\";\nimport { KvpRequest } from \"../models/request/kvpRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { CipherView } from \"../models/view/cipherView\";\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = featuredImportOptions as readonly ImportOption[];\n\n regularImportOptions = regularImportOptions as readonly ImportOption[];\n\n constructor(\n private cipherService: CipherService,\n private folderService: FolderService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService\n ) {}\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(\n importer: Importer,\n fileContents: string,\n organizationId: string = null\n ): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new ImportError(this.i18nService.t(\"importNothingError\"));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (\n this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])\n ) {\n return new ImportError(this.i18nService.t(\"importFormatError\"));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n if (!Utils.isNullOrWhitespace(importResult.errorMessage)) {\n return new ImportError(importResult.errorMessage, importResult.missingPassword);\n } else {\n return new ImportError(\n this.i18nService.t(\"importFormatError\"),\n importResult.missingPassword\n );\n }\n }\n }\n\n getImporter(\n format: ImportType | \"bitwardenpasswordprotected\",\n organizationId: string = null,\n password: string = null\n ): Importer {\n const importer = this.getImporterInstance(format, password);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: ImportType | \"bitwardenpasswordprotected\", password: string) {\n if (format == null) {\n return null;\n }\n\n switch (format) {\n case \"bitwardencsv\":\n return new BitwardenCsvImporter();\n case \"bitwardenjson\":\n return new BitwardenJsonImporter(this.cryptoService, this.i18nService);\n case \"bitwardenpasswordprotected\":\n return new BitwardenPasswordProtectedImporter(\n this.cryptoService,\n this.i18nService,\n password\n );\n case \"lastpasscsv\":\n case \"passboltcsv\":\n return new LastPassCsvImporter();\n case \"keepassxcsv\":\n return new KeePassXCsvImporter();\n case \"aviracsv\":\n return new AviraCsvImporter();\n case \"blurcsv\":\n return new BlurCsvImporter();\n case \"safeincloudxml\":\n return new SafeInCloudXmlImporter();\n case \"padlockcsv\":\n return new PadlockCsvImporter();\n case \"keepass2xml\":\n return new KeePass2XmlImporter();\n case \"chromecsv\":\n case \"operacsv\":\n case \"vivaldicsv\":\n return new ChromeCsvImporter();\n case \"firefoxcsv\":\n return new FirefoxCsvImporter();\n case \"upmcsv\":\n return new UpmCsvImporter();\n case \"saferpasscsv\":\n return new SaferPassCsvImporter();\n case \"safaricsv\":\n return new SafariCsvImporter();\n case \"meldiumcsv\":\n return new MeldiumCsvImporter();\n case \"1password1pif\":\n return new OnePassword1PifImporter();\n case \"1password1pux\":\n return new OnePassword1PuxImporter();\n case \"1passwordwincsv\":\n return new OnePasswordWinCsvImporter();\n case \"1passwordmaccsv\":\n return new OnePasswordMacCsvImporter();\n case \"keepercsv\":\n return new KeeperCsvImporter();\n // case \"keeperjson\":\n // return new KeeperJsonImporter();\n case \"passworddragonxml\":\n return new PasswordDragonXmlImporter();\n case \"enpasscsv\":\n return new EnpassCsvImporter();\n case \"enpassjson\":\n return new EnpassJsonImporter();\n case \"pwsafexml\":\n return new PasswordSafeXmlImporter();\n case \"dashlanecsv\":\n return new DashlaneCsvImporter();\n case \"dashlanejson\":\n return new DashlaneJsonImporter();\n case \"msecurecsv\":\n return new MSecureCsvImporter();\n case \"stickypasswordxml\":\n return new StickyPasswordXmlImporter();\n case \"truekeycsv\":\n return new TrueKeyCsvImporter();\n case \"clipperzhtml\":\n return new ClipperzHtmlImporter();\n case \"roboformcsv\":\n return new RoboFormCsvImporter();\n case \"ascendocsv\":\n return new AscendoCsvImporter();\n case \"passwordbossjson\":\n return new PasswordBossJsonImporter();\n case \"zohovaultcsv\":\n return new ZohoVaultCsvImporter();\n case \"splashidcsv\":\n return new SplashIdCsvImporter();\n case \"passkeepcsv\":\n return new PassKeepCsvImporter();\n case \"gnomejson\":\n return new GnomeJsonImporter();\n case \"passwordagentcsv\":\n return new PasswordAgentCsvImporter();\n case \"passpackcsv\":\n return new PasspackCsvImporter();\n case \"passmanjson\":\n return new PassmanJsonImporter();\n case \"avastcsv\":\n return new AvastCsvImporter();\n case \"avastjson\":\n return new AvastJsonImporter();\n case \"fsecurefsk\":\n return new FSecureFskImporter();\n case \"kasperskytxt\":\n return new KasperskyTxtImporter();\n case \"remembearcsv\":\n return new RememBearCsvImporter();\n case \"passwordwallettxt\":\n return new PasswordWalletTxtImporter();\n case \"mykicsv\":\n return new MykiCsvImporter();\n case \"securesafecsv\":\n return new SecureSafeCsvImporter();\n case \"logmeoncecsv\":\n return new LogMeOnceCsvImporter();\n case \"blackberrycsv\":\n return new BlackBerryCsvImporter();\n case \"buttercupcsv\":\n return new ButtercupCsvImporter();\n case \"codebookcsv\":\n return new CodebookCsvImporter();\n case \"encryptrcsv\":\n return new EncryptrCsvImporter();\n case \"yoticsv\":\n return new YotiCsvImporter();\n case \"nordpasscsv\":\n return new NordPassCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach((r) =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1]))\n );\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach((r) =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1]))\n );\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (\n (c.name == null || c.name === \"--\") &&\n c.type === CipherType.Login &&\n c.login != null &&\n Utils.isNullOrWhitespace(c.login.password)\n );\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): ImportError {\n if (errorResponse.validationErrors == null) {\n return new ImportError(errorResponse.message);\n }\n\n let errorMessage = \"\";\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case \"Ciphers\":\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case \"Folders\":\n item = importResult.folders[i];\n itemType = \"Folder\";\n break;\n case \"Collections\":\n item = importResult.collections[i];\n itemType = \"Collection\";\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += \"\\n\\n\";\n }\n\n if (itemType !== \"Folder\" && itemType !== \"Collection\") {\n errorMessage += \"[\" + (i + 1) + \"] \";\n }\n\n errorMessage += \"[\" + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new ImportError(errorMessage);\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { OrganizationUserType } from \"../enums/organizationUserType\";\nimport { Utils } from \"../misc/utils\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SetKeyConnectorKeyRequest } from \"../models/request/account/setKeyConnectorKeyRequest\";\nimport { KeyConnectorUserKeyRequest } from \"../models/request/keyConnectorUserKeyRequest\";\nimport { KeysRequest } from \"../models/request/keysRequest\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport class KeyConnectorService implements KeyConnectorServiceAbstraction {\n constructor(\n private stateService: StateService,\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private tokenService: TokenService,\n private logService: LogService,\n private organizationService: OrganizationService,\n private cryptoFunctionService: CryptoFunctionService,\n private logoutCallback: (expired: boolean, userId?: string) => void\n ) {}\n\n setUsesKeyConnector(usesKeyConnector: boolean) {\n return this.stateService.setUsesKeyConnector(usesKeyConnector);\n }\n\n async getUsesKeyConnector(): Promise {\n return await this.stateService.getUsesKeyConnector();\n }\n\n async userNeedsMigration() {\n const loggedInUsingSso = await this.tokenService.getIsExternal();\n const requiredByOrganization = (await this.getManagingOrganization()) != null;\n const userIsNotUsingKeyConnector = !(await this.getUsesKeyConnector());\n\n return loggedInUsingSso && requiredByOrganization && userIsNotUsingKeyConnector;\n }\n\n async migrateUser() {\n const organization = await this.getManagingOrganization();\n const key = await this.cryptoService.getKey();\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(key.encKeyB64);\n\n try {\n await this.apiService.postUserKeyToKeyConnector(\n organization.keyConnectorUrl,\n keyConnectorRequest\n );\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n\n await this.apiService.postConvertToKeyConnector();\n }\n\n async getAndSetKey(url: string) {\n try {\n const userKeyResponse = await this.apiService.getUserKeyFromKeyConnector(url);\n const keyArr = Utils.fromB64ToArray(userKeyResponse.key);\n const k = new SymmetricCryptoKey(keyArr);\n await this.cryptoService.setKey(k);\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n }\n\n async getManagingOrganization() {\n const orgs = await this.organizationService.getAll();\n return orgs.find(\n (o) =>\n o.keyConnectorEnabled &&\n o.type !== OrganizationUserType.Admin &&\n o.type !== OrganizationUserType.Owner &&\n !o.isProviderUser\n );\n }\n\n async convertNewSsoUserToKeyConnector(tokenResponse: IdentityTokenResponse, orgId: string) {\n const { kdf, kdfIterations, keyConnectorUrl } = tokenResponse;\n const password = await this.cryptoFunctionService.randomBytes(64);\n\n const k = await this.cryptoService.makeKey(\n Utils.fromBufferToB64(password),\n await this.tokenService.getEmail(),\n kdf,\n kdfIterations\n );\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(k.encKeyB64);\n await this.cryptoService.setKey(k);\n\n const encKey = await this.cryptoService.makeEncKey(k);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n\n const [pubKey, privKey] = await this.cryptoService.makeKeyPair();\n\n try {\n await this.apiService.postUserKeyToKeyConnector(keyConnectorUrl, keyConnectorRequest);\n } catch (e) {\n this.handleKeyConnectorError(e);\n }\n\n const keys = new KeysRequest(pubKey, privKey.encryptedString);\n const setPasswordRequest = new SetKeyConnectorKeyRequest(\n encKey[1].encryptedString,\n kdf,\n kdfIterations,\n orgId,\n keys\n );\n await this.apiService.postSetKeyConnectorKey(setPasswordRequest);\n }\n\n async setConvertAccountRequired(status: boolean) {\n await this.stateService.setConvertAccountToKeyConnector(status);\n }\n\n async getConvertAccountRequired(): Promise {\n return await this.stateService.getConvertAccountToKeyConnector();\n }\n\n async removeConvertAccountRequired() {\n await this.stateService.setConvertAccountToKeyConnector(null);\n }\n\n async clear() {\n await this.removeConvertAccountRequired();\n }\n\n private handleKeyConnectorError(e: any) {\n this.logService.error(e);\n if (this.logoutCallback != null) {\n this.logoutCallback(false);\n }\n throw new Error(\"Key Connector error\");\n }\n}\n","import * as signalR from \"@microsoft/signalr\";\nimport * as signalRMsgPack from \"@microsoft/signalr-protocol-msgpack\";\n\nimport { ApiService } from \"../abstractions/api.service\";\nimport { AppIdService } from \"../abstractions/appId.service\";\nimport { AuthService } from \"../abstractions/auth.service\";\nimport { EnvironmentService } from \"../abstractions/environment.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"../abstractions/notifications.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SyncService } from \"../abstractions/sync.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { NotificationType } from \"../enums/notificationType\";\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(\n private syncService: SyncService,\n private appIdService: AppIdService,\n private apiService: ApiService,\n private environmentService: EnvironmentService,\n private logoutCallback: (expired: boolean) => Promise,\n private logService: LogService,\n private stateService: StateService,\n private authService: AuthService\n ) {\n this.environmentService.urls.subscribe(() => {\n if (!this.inited) {\n return;\n }\n\n this.init();\n });\n }\n\n async init(): Promise {\n this.inited = false;\n this.url = this.environmentService.getNotificationsUrl();\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === \"https://-\") {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off(\"ReceiveMessage\");\n this.signalrConnection.off(\"Heartbeat\");\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + \"/hub\", {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol() as signalR.IHubProtocol)\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on(\"ReceiveMessage\", (data: any) =>\n this.processNotification(new NotificationResponse(data))\n );\n // eslint-disable-next-line\n this.signalrConnection.on(\"Heartbeat\", (data: any) => {\n /*console.log('Heartbeat!');*/\n });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.stateService.getIsAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.stateService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(\n notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate\n );\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(\n notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate\n );\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback(true);\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(\n notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate\n );\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n break;\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n const authStatus = await this.authService.getAuthStatus();\n return authStatus >= AuthenticationStatus.Unlocked;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { OrganizationService as OrganizationServiceAbstraction } from \"../abstractions/organization.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { Organization } from \"../models/domain/organization\";\n\nexport class OrganizationService implements OrganizationServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async get(id: string): Promise {\n const organizations = await this.stateService.getOrganizations();\n // eslint-disable-next-line\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getByIdentifier(identifier: string): Promise {\n const organizations = await this.getAll();\n if (organizations == null || organizations.length === 0) {\n return null;\n }\n\n return organizations.find((o) => o.identifier === identifier);\n }\n\n async getAll(userId?: string): Promise {\n const organizations = await this.stateService.getOrganizations({ userId: userId });\n const response: Organization[] = [];\n for (const id in organizations) {\n // eslint-disable-next-line\n if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async save(organizations: { [id: string]: OrganizationData }) {\n return await this.stateService.setOrganizations(organizations);\n }\n\n async canManageSponsorships(): Promise {\n const orgs = await this.getAll();\n return orgs.some(\n (o) => o.familySponsorshipAvailable || o.familySponsorshipFriendlyName !== null\n );\n }\n\n async hasOrganizations(userId?: string): Promise {\n const organizations = await this.getAll(userId);\n return organizations.length > 0;\n }\n}\n","import * as zxcvbn from \"zxcvbn\";\n\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { PasswordGenerationService as PasswordGenerationServiceAbstraction } from \"../abstractions/passwordGeneration.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\nimport { EncString } from \"../models/domain/encString\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { PasswordGeneratorPolicyOptions } from \"../models/domain/passwordGeneratorPolicyOptions\";\nimport { Policy } from \"../models/domain/policy\";\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: \"password\",\n numWords: 3,\n wordSeparator: \"-\",\n capitalize: false,\n includeNumber: false,\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private stateService: StateService\n ) {}\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === \"passphrase\") {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push(\"l\");\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push(\"u\");\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push(\"n\");\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push(\"s\");\n }\n }\n while (positions.length < o.length) {\n positions.push(\"a\");\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = \"\";\n\n let lowercaseCharSet = \"abcdefghijkmnopqrstuvwxyz\";\n if (o.ambiguous) {\n lowercaseCharSet += \"l\";\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = \"ABCDEFGHJKLMNPQRSTUVWXYZ\";\n if (o.ambiguous) {\n uppercaseCharSet += \"IO\";\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = \"23456789\";\n if (o.ambiguous) {\n numberCharSet += \"01\";\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = \"!@#$%^&*\";\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = \"\";\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case \"l\":\n positionChars = lowercaseCharSet;\n break;\n case \"u\":\n positionChars = uppercaseCharSet;\n break;\n case \"n\":\n positionChars = numberCharSet;\n break;\n case \"s\":\n positionChars = specialCharSet;\n break;\n case \"a\":\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = \" \";\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let options = await this.stateService.getPasswordGenerationOptions();\n if (options == null) {\n options = Object.assign({}, DefaultOptions);\n } else {\n options = Object.assign({}, DefaultOptions, options);\n }\n await this.stateService.setPasswordGenerationOptions(options);\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(options);\n options = enforcedOptions[0];\n return [options, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(\n options: any\n ): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (\n enforcedPolicyOptions.defaultType === \"password\" ||\n enforcedPolicyOptions.defaultType === \"passphrase\"\n ) {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else {\n // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] =\n this.policyService == null\n ? null\n : await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== \"password\") {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (\n currentPolicy.data.minLength != null &&\n currentPolicy.data.minLength > enforcedOptions.minLength\n ) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (\n currentPolicy.data.minNumbers != null &&\n currentPolicy.data.minNumbers > enforcedOptions.numberCount\n ) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (\n currentPolicy.data.minSpecial != null &&\n currentPolicy.data.minSpecial > enforcedOptions.specialCount\n ) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (\n currentPolicy.data.minNumberWords != null &&\n currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords\n ) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.stateService.setPasswordGenerationOptions(options);\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if ((await this.stateService.getDecryptedPasswordGenerationHistory()) == null) {\n const encrypted = await this.stateService.getEncryptedPasswordGenerationHistory();\n const decrypted = await this.decryptHistory(encrypted);\n await this.stateService.setDecryptedPasswordGenerationHistory(decrypted);\n }\n\n const passwordGenerationHistory =\n await this.stateService.getDecryptedPasswordGenerationHistory();\n return passwordGenerationHistory != null\n ? passwordGenerationHistory\n : new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.stateService.setEncryptedPasswordGenerationHistory(newHistory);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setEncryptedPasswordGenerationHistory(null, { userId: userId });\n await this.stateService.setDecryptedPasswordGenerationHistory(null, { userId: userId });\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = [\"bitwarden\", \"bit\", \"warden\"];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(\n history: GeneratedPasswordHistory[]\n ): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(\n history: GeneratedPasswordHistory[]\n ): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async (item) => {\n const decrypted = await this.cryptoService.decryptToUtf8(new EncString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { PolicyService as PolicyServiceAbstraction } from \"../abstractions/policy.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { OrganizationUserStatusType } from \"../enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"../enums/organizationUserType\";\nimport { PolicyType } from \"../enums/policyType\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"../models/domain/masterPasswordPolicyOptions\";\nimport { Organization } from \"../models/domain/organization\";\nimport { Policy } from \"../models/domain/policy\";\nimport { ResetPasswordPolicyOptions } from \"../models/domain/resetPasswordPolicyOptions\";\nimport { ListResponse } from \"../models/response/listResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(\n private stateService: StateService,\n private organizationService: OrganizationService,\n private apiService: ApiService\n ) {}\n\n async clearCache(): Promise {\n await this.stateService.setDecryptedPolicies(null);\n }\n\n async getAll(type?: PolicyType, userId?: string): Promise {\n let response: Policy[] = [];\n const decryptedPolicies = await this.stateService.getDecryptedPolicies({ userId: userId });\n if (decryptedPolicies != null) {\n response = decryptedPolicies;\n } else {\n const diskPolicies = await this.stateService.getEncryptedPolicies({ userId: userId });\n for (const id in diskPolicies) {\n // eslint-disable-next-line\n if (diskPolicies.hasOwnProperty(id)) {\n response.push(new Policy(diskPolicies[id]));\n }\n }\n await this.stateService.setDecryptedPolicies(response, { userId: userId });\n }\n if (type != null) {\n return response.filter((policy) => policy.type === type);\n } else {\n return response;\n }\n }\n\n async getPolicyForOrganization(policyType: PolicyType, organizationId: string): Promise {\n const org = await this.organizationService.get(organizationId);\n if (org?.isProviderUser) {\n const orgPolicies = await this.apiService.getPolicies(organizationId);\n const policy = orgPolicies.data.find((p) => p.organizationId === organizationId);\n\n if (policy == null) {\n return null;\n }\n\n return new Policy(new PolicyData(policy));\n }\n\n const policies = await this.getAll(policyType);\n return policies.find((p) => p.organizationId === organizationId);\n }\n\n async replace(policies: { [id: string]: PolicyData }): Promise {\n await this.stateService.setDecryptedPolicies(null);\n await this.stateService.setEncryptedPolicies(policies);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setDecryptedPolicies(null, { userId: userId });\n await this.stateService.setEncryptedPolicies(null, { userId: userId });\n }\n\n async getMasterPasswordPoliciesForInvitedUsers(\n orgId: string\n ): Promise {\n const userId = await this.stateService.getUserId();\n const response = await this.apiService.getPoliciesByInvitedUser(orgId, userId);\n const policies = await this.mapPoliciesFromToken(response);\n return this.getMasterPasswordPolicyOptions(policies);\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter((p) => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach((currentPolicy) => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (\n currentPolicy.data.minComplexity != null &&\n currentPolicy.data.minComplexity > enforcedOptions.minComplexity\n ) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (\n currentPolicy.data.minLength != null &&\n currentPolicy.data.minLength > enforcedOptions.minLength\n ) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(\n passwordStrength: number,\n newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions\n ): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (\n enforcedPolicyOptions.minComplexity > 0 &&\n enforcedPolicyOptions.minComplexity > passwordStrength\n ) {\n return false;\n }\n\n if (\n enforcedPolicyOptions.minLength > 0 &&\n enforcedPolicyOptions.minLength > newPassword.length\n ) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !/[0-9]/.test(newPassword)) {\n return false;\n }\n\n // eslint-disable-next-line\n if (enforcedPolicyOptions.requireSpecial && !/[!@#$%\\^&*]/g.test(newPassword)) {\n return false;\n }\n\n return true;\n }\n\n getResetPasswordPolicyOptions(\n policies: Policy[],\n orgId: string\n ): [ResetPasswordPolicyOptions, boolean] {\n const resetPasswordPolicyOptions = new ResetPasswordPolicyOptions();\n\n if (policies == null || orgId == null) {\n return [resetPasswordPolicyOptions, false];\n }\n\n const policy = policies.find(\n (p) => p.organizationId === orgId && p.type === PolicyType.ResetPassword && p.enabled\n );\n resetPasswordPolicyOptions.autoEnrollEnabled = policy?.data?.autoEnrollEnabled ?? false;\n\n return [resetPasswordPolicyOptions, policy?.enabled ?? false];\n }\n\n mapPoliciesFromToken(policiesResponse: ListResponse): Policy[] {\n if (policiesResponse == null || policiesResponse.data == null) {\n return null;\n }\n\n const policiesData = policiesResponse.data.map((p) => new PolicyData(p));\n return policiesData.map((p) => new Policy(p));\n }\n\n async policyAppliesToUser(\n policyType: PolicyType,\n policyFilter?: (policy: Policy) => boolean,\n userId?: string\n ) {\n const policies = await this.getAll(policyType, userId);\n const organizations = await this.organizationService.getAll(userId);\n let filteredPolicies;\n\n if (policyFilter != null) {\n filteredPolicies = policies.filter((p) => p.enabled && policyFilter(p));\n } else {\n filteredPolicies = policies.filter((p) => p.enabled);\n }\n\n const policySet = new Set(filteredPolicies.map((p) => p.organizationId));\n\n return organizations.some(\n (o) =>\n o.enabled &&\n o.status >= OrganizationUserStatusType.Accepted &&\n o.usePolicies &&\n !this.isExcemptFromPolicies(o, policyType) &&\n policySet.has(o.id)\n );\n }\n\n private isExcemptFromPolicies(organization: Organization, policyType: PolicyType) {\n if (policyType === PolicyType.MaximumVaultTimeout) {\n return organization.type === OrganizationUserType.Owner;\n }\n\n return organization.isExemptFromPolicies;\n }\n}\n","import { ProviderService as ProviderServiceAbstraction } from \"../abstractions/provider.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { Provider } from \"../models/domain/provider\";\n\nexport class ProviderService implements ProviderServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async get(id: string): Promise {\n const providers = await this.stateService.getProviders();\n // eslint-disable-next-line\n if (providers == null || !providers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Provider(providers[id]);\n }\n\n async getAll(): Promise {\n const providers = await this.stateService.getProviders();\n const response: Provider[] = [];\n for (const id in providers) {\n // eslint-disable-next-line\n if (providers.hasOwnProperty(id)) {\n response.push(new Provider(providers[id]));\n }\n }\n return response;\n }\n\n async save(providers: { [id: string]: ProviderData }) {\n await this.stateService.setProviders(providers);\n }\n}\n","import * as lunr from \"lunr\";\n\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { SearchService as SearchServiceAbstraction } from \"../abstractions/search.service\";\nimport { CipherType } from \"../enums/cipherType\";\nimport { FieldType } from \"../enums/fieldType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport class SearchService implements SearchServiceAbstraction {\n indexedEntityId?: string = null;\n private indexing = false;\n private index: lunr.Index = null;\n private searchableMinLength = 2;\n\n constructor(\n private cipherService: CipherService,\n private logService: LogService,\n private i18nService: I18nService\n ) {\n if ([\"zh-CN\", \"zh-TW\"].indexOf(i18nService.locale) !== -1) {\n this.searchableMinLength = 1;\n }\n }\n\n clearIndex(): void {\n this.indexedEntityId = null;\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable =\n query == null ||\n (this.index == null && query.length < this.searchableMinLength) ||\n (this.index != null && query.length < this.searchableMinLength && query.indexOf(\">\") !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(indexedEntityId?: string, ciphers?: CipherView[]): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time(\"search indexing\");\n this.indexing = true;\n this.indexedEntityId = indexedEntityId;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref(\"id\");\n builder.field(\"shortid\", { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field(\"name\", { boost: 10 });\n builder.field(\"subtitle\", {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, \"\");\n }\n return c.subTitle;\n },\n });\n builder.field(\"notes\");\n builder.field(\"login.username\", {\n extractor: (c: CipherView) =>\n c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field(\"login.uris\", { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field(\"fields\", { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field(\"fields_joined\", { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field(\"attachments\", {\n extractor: (c: CipherView) => this.attachmentExtractor(c, false),\n });\n builder.field(\"attachments_joined\", {\n extractor: (c: CipherView) => this.attachmentExtractor(c, true),\n });\n builder.field(\"organizationid\", { extractor: (c: CipherView) => c.organizationId });\n ciphers = ciphers || (await this.cipherService.getAllDecrypted());\n ciphers.forEach((c) => builder.add(c));\n this.index = builder.build();\n\n this.indexing = false;\n\n this.logService.timeEnd(\"search indexing\");\n }\n\n async searchCiphers(\n query: string,\n filter: ((cipher: CipherView) => boolean) | ((cipher: CipherView) => boolean)[] = null,\n ciphers: CipherView[] = null\n ): Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === \"\") {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter((c) => filter.every((f) => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise((r) => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach((c) => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf(\">\") === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query((q) => {\n lunr.tokenizer(query).forEach((token) => {\n const t = token.toString();\n q.term(t, { fields: [\"name\"], wildcard: soWild });\n q.term(t, { fields: [\"subtitle\"], wildcard: soWild });\n q.term(t, { fields: [\"login.uris\"], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach((r) => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter((c) => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter((s) => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (\n query.length >= 8 &&\n (s.id.startsWith(query) ||\n s.accessId.toLocaleLowerCase().startsWith(query) ||\n (s.file?.id != null && s.file.id.startsWith(query)))\n ) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach((f) => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter((f) => f.trim() !== \"\");\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(\" \") : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach((a) => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf(\".\") > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf(\".\")));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter((f) => f.trim() !== \"\");\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(\" \") : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach((u) => {\n if (u.uri == null || u.uri === \"\") {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf(\"://\");\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { FileUploadService } from \"../abstractions/fileUpload.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { SendService as SendServiceAbstraction } from \"../abstractions/send.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SEND_KDF_ITERATIONS } from \"../enums/kdfType\";\nimport { SendType } from \"../enums/sendType\";\nimport { Utils } from \"../misc/utils\";\nimport { SendData } from \"../models/data/sendData\";\nimport { EncArrayBuffer } from \"../models/domain/encArrayBuffer\";\nimport { EncString } from \"../models/domain/encString\";\nimport { Send } from \"../models/domain/send\";\nimport { SendFile } from \"../models/domain/sendFile\";\nimport { SendText } from \"../models/domain/sendText\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { SendRequest } from \"../models/request/sendRequest\";\nimport { ErrorResponse } from \"../models/response/errorResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\nimport { SendView } from \"../models/view/sendView\";\n\nexport class SendService implements SendServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private apiService: ApiService,\n private fileUploadService: FileUploadService,\n private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService,\n private stateService: StateService\n ) {}\n\n async clearCache(): Promise {\n await this.stateService.setDecryptedSends(null);\n }\n\n async encrypt(\n model: SendView,\n file: File | ArrayBuffer,\n password: string,\n key?: SymmetricCryptoKey\n ): Promise<[Send, EncArrayBuffer]> {\n let fileData: EncArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.hideEmail = model.hideEmail;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(\n password,\n model.key,\n \"sha256\",\n SEND_KDF_ITERATIONS\n );\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(\n model.file.fileName,\n file,\n model.cryptoKey\n );\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const sends = await this.stateService.getEncryptedSends();\n // eslint-disable-next-line\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const sends = await this.stateService.getEncryptedSends();\n const response: Send[] = [];\n for (const id in sends) {\n // eslint-disable-next-line\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n let decSends = await this.stateService.getDecryptedSends();\n if (decSends != null) {\n return decSends;\n }\n\n decSends = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error(\"No key.\");\n }\n\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach((send) => {\n promises.push(send.decrypt().then((f) => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n await this.stateService.setDecryptedSends(decSends);\n return decSends;\n }\n\n async saveWithServer(sendData: [Send, EncArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n try {\n const uploadDataResponse = await this.apiService.postFileTypeSend(request);\n response = uploadDataResponse.sendResponse;\n\n await this.fileUploadService.uploadSendFile(\n uploadDataResponse,\n sendData[0].file.fileName,\n sendData[1]\n );\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n response = await this.legacyServerSendFileUpload(sendData, request);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const data = new SendData(response);\n await this.upsert(data);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerSendFileUpload(\n sendData: [Send, EncArrayBuffer],\n request: SendRequest\n ): Promise {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1].buffer], { type: \"application/octet-stream\" });\n fd.append(\"model\", JSON.stringify(request));\n fd.append(\"data\", blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append(\"model\", JSON.stringify(request));\n fd.append(\n \"data\",\n Buffer.from(sendData[1].buffer) as any,\n {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: \"application/octet-stream\",\n } as any\n );\n } else {\n throw e;\n }\n }\n return await this.apiService.postSendFileLegacy(fd);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n let sends = await this.stateService.getEncryptedSends();\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach((s) => {\n sends[s.id] = s;\n });\n }\n\n await this.replace(sends);\n }\n\n async replace(sends: { [id: string]: SendData }): Promise {\n await this.stateService.setDecryptedSends(null);\n await this.stateService.setEncryptedSends(sends);\n }\n\n async clear(): Promise {\n await this.stateService.setDecryptedSends(null);\n await this.stateService.setEncryptedSends(null);\n }\n\n async delete(id: string | string[]): Promise {\n const sends = await this.stateService.getEncryptedSends();\n if (sends == null) {\n return;\n }\n\n if (typeof id === \"string\") {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach((i) => {\n delete sends[i];\n });\n }\n\n await this.replace(sends);\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const data = new SendData(response);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async (evt) => {\n try {\n const [name, data] = await this.encryptFileData(\n file.name,\n evt.target.result as ArrayBuffer,\n key\n );\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = () => {\n reject(\"Error reading file.\");\n };\n });\n }\n\n private async encryptFileData(\n fileName: string,\n data: ArrayBuffer,\n key: SymmetricCryptoKey\n ): Promise<[EncString, EncArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\n\nconst Keys = {\n settingsPrefix: \"settings_\",\n equivalentDomains: \"equivalentDomains\",\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n constructor(private stateService: StateService) {}\n\n async clearCache(): Promise {\n await this.stateService.setSettings(null);\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setSettings(null, { userId: userId });\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n const settings = await this.stateService.getSettings();\n if (settings == null) {\n // eslint-disable-next-line\n const userId = await this.stateService.getUserId();\n }\n return settings;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.stateService.setSettings(settings);\n }\n}\n","import { BehaviorSubject } from \"rxjs\";\n\nimport { LogService } from \"../abstractions/log.service\";\nimport { StateService as StateServiceAbstraction } from \"../abstractions/state.service\";\nimport { StateMigrationService } from \"../abstractions/stateMigration.service\";\nimport { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { StorageLocation } from \"../enums/storageLocation\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { UriMatchType } from \"../enums/uriMatchType\";\nimport { StateFactory } from \"../factories/stateFactory\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account, AccountData } from \"../models/domain/account\";\nimport { EncString } from \"../models/domain/encString\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { GlobalState } from \"../models/domain/globalState\";\nimport { Policy } from \"../models/domain/policy\";\nimport { State } from \"../models/domain/state\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\nimport { WindowState } from \"../models/domain/windowState\";\nimport { CipherView } from \"../models/view/cipherView\";\nimport { CollectionView } from \"../models/view/collectionView\";\nimport { FolderView } from \"../models/view/folderView\";\nimport { SendView } from \"../models/view/sendView\";\n\nconst keys = {\n global: \"global\",\n authenticatedAccounts: \"authenticatedAccounts\",\n activeUserId: \"activeUserId\",\n tempAccountSettings: \"tempAccountSettings\", // used to hold account specific settings (i.e clear clipboard) between initial migration and first account authentication\n accountActivity: \"accountActivity\",\n};\n\nconst partialKeys = {\n autoKey: \"_masterkey_auto\",\n biometricKey: \"_masterkey_biometric\",\n masterKey: \"_masterkey\",\n};\n\nexport class StateService<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> implements StateServiceAbstraction\n{\n accounts = new BehaviorSubject<{ [userId: string]: TAccount }>({});\n activeAccount = new BehaviorSubject(null);\n\n protected state: State = new State(\n this.createGlobals()\n );\n\n private hasBeenInited = false;\n\n private accountDiskCache: Map;\n\n constructor(\n protected storageService: StorageService,\n protected secureStorageService: StorageService,\n protected logService: LogService,\n protected stateMigrationService: StateMigrationService,\n protected stateFactory: StateFactory,\n protected useAccountCache: boolean = true\n ) {\n this.accountDiskCache = new Map();\n }\n\n async init(): Promise {\n if (this.hasBeenInited) {\n return;\n }\n\n if (await this.stateMigrationService.needsMigration()) {\n await this.stateMigrationService.migrate();\n }\n\n await this.initAccountState();\n this.hasBeenInited = true;\n }\n\n async initAccountState() {\n this.state.authenticatedAccounts =\n (await this.storageService.get(keys.authenticatedAccounts)) ?? [];\n for (const i in this.state.authenticatedAccounts) {\n if (i != null) {\n await this.syncAccountFromDisk(this.state.authenticatedAccounts[i]);\n }\n }\n const storedActiveUser = await this.storageService.get(keys.activeUserId);\n if (storedActiveUser != null) {\n this.state.activeUserId = storedActiveUser;\n }\n await this.pushAccounts();\n this.activeAccount.next(this.state.activeUserId);\n }\n\n async syncAccountFromDisk(userId: string) {\n if (userId == null) {\n return;\n }\n this.state.accounts[userId] = this.createAccount();\n const diskAccount = await this.getAccountFromDisk({ userId: userId });\n this.state.accounts[userId].profile = diskAccount.profile;\n }\n\n async addAccount(account: TAccount) {\n account = await this.setAccountEnvironmentUrls(account);\n this.state.authenticatedAccounts.push(account.profile.userId);\n await this.storageService.save(keys.authenticatedAccounts, this.state.authenticatedAccounts);\n this.state.accounts[account.profile.userId] = account;\n await this.scaffoldNewAccountStorage(account);\n await this.setLastActive(new Date().getTime(), { userId: account.profile.userId });\n await this.setActiveUser(account.profile.userId);\n this.activeAccount.next(account.profile.userId);\n }\n\n async setActiveUser(userId: string): Promise {\n this.clearDecryptedDataForActiveUser();\n this.state.activeUserId = userId;\n await this.storageService.save(keys.activeUserId, userId);\n this.activeAccount.next(this.state.activeUserId);\n await this.pushAccounts();\n }\n\n async clean(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n await this.deAuthenticateAccount(options.userId);\n if (options.userId === this.state.activeUserId) {\n await this.dynamicallySetActiveUser();\n }\n\n await this.removeAccountFromDisk(options?.userId);\n this.removeAccountFromMemory(options?.userId);\n await this.pushAccounts();\n }\n\n async getAccessToken(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.tokens?.accessToken;\n }\n\n async setAccessToken(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.tokens.accessToken = value;\n await this.saveAccount(account, options);\n }\n\n async getAddEditCipherInfo(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.addEditCipherInfo;\n }\n\n async setAddEditCipherInfo(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.addEditCipherInfo = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getAlwaysShowDock(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.alwaysShowDock ?? false\n );\n }\n\n async setAlwaysShowDock(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.alwaysShowDock = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getApiKeyClientId(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.profile?.apiKeyClientId;\n }\n\n async setApiKeyClientId(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.profile.apiKeyClientId = value;\n await this.saveAccount(account, options);\n }\n\n async getApiKeyClientSecret(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.keys?.apiKeyClientSecret;\n }\n\n async setApiKeyClientSecret(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.keys.apiKeyClientSecret = value;\n await this.saveAccount(account, options);\n }\n\n async getAutoConfirmFingerPrints(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.autoConfirmFingerPrints ?? false\n );\n }\n\n async setAutoConfirmFingerprints(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.autoConfirmFingerPrints = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getAutoFillOnPageLoadDefault(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.autoFillOnPageLoadDefault ?? true\n );\n }\n\n async setAutoFillOnPageLoadDefault(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.autoFillOnPageLoadDefault = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricAwaitingAcceptance(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.biometricAwaitingAcceptance ?? false\n );\n }\n\n async setBiometricAwaitingAcceptance(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricAwaitingAcceptance = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricFingerprintValidated(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.biometricFingerprintValidated ?? false\n );\n }\n\n async setBiometricFingerprintValidated(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricFingerprintValidated = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricLocked(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.settings\n ?.biometricLocked ?? false\n );\n }\n\n async setBiometricLocked(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.settings.biometricLocked = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getBiometricText(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.biometricText;\n }\n\n async setBiometricText(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.biometricText = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getBiometricUnlock(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.biometricUnlock ?? false\n );\n }\n\n async setBiometricUnlock(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.biometricUnlock = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getCanAccessPremium(options?: StorageOptions): Promise {\n if (!(await this.getIsAuthenticated(options))) {\n return false;\n }\n\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n if (account.profile.hasPremiumPersonally) {\n return true;\n }\n\n const organizations = await this.getOrganizations(options);\n if (organizations == null) {\n return false;\n }\n\n for (const id of Object.keys(organizations)) {\n const o = organizations[id];\n if (o.enabled && o.usersGetPremium && !o.isProviderUser) {\n return true;\n }\n }\n\n return false;\n }\n\n async getClearClipboard(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.clearClipboard ?? null\n );\n }\n\n async setClearClipboard(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.clearClipboard = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getCollapsedGroupings(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.collapsedGroupings;\n }\n\n async setCollapsedGroupings(value: string[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.collapsedGroupings = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getConvertAccountToKeyConnector(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.convertAccountToKeyConnector;\n }\n\n async setConvertAccountToKeyConnector(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.convertAccountToKeyConnector = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getCryptoMasterKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.cryptoMasterKey;\n }\n\n async setCryptoMasterKey(value: SymmetricCryptoKey, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.cryptoMasterKey = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getCryptoMasterKeyAuto(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"auto\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(`${options.userId}${partialKeys.autoKey}`, options);\n }\n\n async setCryptoMasterKeyAuto(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"auto\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.autoKey, value, options);\n }\n\n async getCryptoMasterKeyB64(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultSecureStorageOptions());\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(\n `${options?.userId}${partialKeys.masterKey}`,\n options\n );\n }\n\n async setCryptoMasterKeyB64(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultSecureStorageOptions());\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.masterKey, value, options);\n }\n\n async getCryptoMasterKeyBiometric(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return null;\n }\n return await this.secureStorageService.get(\n `${options.userId}${partialKeys.biometricKey}`,\n options\n );\n }\n\n async hasCryptoMasterKeyBiometric(options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return false;\n }\n return await this.secureStorageService.has(\n `${options.userId}${partialKeys.biometricKey}`,\n options\n );\n }\n\n async setCryptoMasterKeyBiometric(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(\n this.reconcileOptions(options, { keySuffix: \"biometric\" }),\n await this.defaultSecureStorageOptions()\n );\n if (options?.userId == null) {\n return;\n }\n await this.saveSecureStorageKey(partialKeys.biometricKey, value, options);\n }\n\n async getDecodedToken(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.tokens?.decodedToken;\n }\n\n async setDecodedToken(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.tokens.decodedToken = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCiphers(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.ciphers?.decrypted;\n }\n\n async setDecryptedCiphers(value: CipherView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.ciphers.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCollections(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.collections?.decrypted;\n }\n\n async setDecryptedCollections(value: CollectionView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.collections.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedCryptoSymmetricKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.cryptoSymmetricKey?.decrypted;\n }\n\n async setDecryptedCryptoSymmetricKey(\n value: SymmetricCryptoKey,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.cryptoSymmetricKey.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedFolders(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.folders?.decrypted;\n }\n\n async setDecryptedFolders(value: FolderView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.folders.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedOrganizationKeys(\n options?: StorageOptions\n ): Promise> {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.organizationKeys?.decrypted;\n }\n\n async setDecryptedOrganizationKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.organizationKeys.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPasswordGenerationHistory(\n options?: StorageOptions\n ): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.passwordGenerationHistory?.decrypted;\n }\n\n async setDecryptedPasswordGenerationHistory(\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.passwordGenerationHistory.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPinProtected(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.settings?.pinProtected?.decrypted;\n }\n\n async setDecryptedPinProtected(value: EncString, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.settings.pinProtected.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPolicies(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.policies?.decrypted;\n }\n\n async setDecryptedPolicies(value: Policy[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.policies.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedPrivateKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.privateKey?.decrypted;\n }\n\n async setDecryptedPrivateKey(value: ArrayBuffer, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.privateKey.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedProviderKeys(\n options?: StorageOptions\n ): Promise> {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.providerKeys?.decrypted;\n }\n\n async setDecryptedProviderKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.providerKeys.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDecryptedSends(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.data?.sends?.decrypted;\n }\n\n async setDecryptedSends(value: SendView[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.data.sends.decrypted = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getDefaultUriMatch(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.defaultUriMatch;\n }\n\n async setDefaultUriMatch(value: UriMatchType, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.defaultUriMatch = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAddLoginNotification(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAddLoginNotification ?? false\n );\n }\n\n async setDisableAddLoginNotification(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAddLoginNotification = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAutoBiometricsPrompt(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAutoBiometricsPrompt ?? false\n );\n }\n\n async setDisableAutoBiometricsPrompt(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAutoBiometricsPrompt = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableAutoTotpCopy(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableAutoTotpCopy ?? false\n );\n }\n\n async setDisableAutoTotpCopy(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableAutoTotpCopy = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableBadgeCounter(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableBadgeCounter ?? false\n );\n }\n\n async setDisableBadgeCounter(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableBadgeCounter = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableChangedPasswordNotification(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableChangedPasswordNotification ?? false\n );\n }\n\n async setDisableChangedPasswordNotification(\n value: boolean,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableChangedPasswordNotification = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableContextMenuItem(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableContextMenuItem ?? false\n );\n }\n\n async setDisableContextMenuItem(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableContextMenuItem = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDisableFavicon(options?: StorageOptions): Promise {\n return (\n (\n await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.disableFavicon ?? false\n );\n }\n\n async setDisableFavicon(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.disableFavicon = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getDisableGa(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.disableGa ?? false\n );\n }\n\n async setDisableGa(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.disableGa = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDontShowCardsCurrentTab(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.dontShowCardsCurrentTab ?? false\n );\n }\n\n async setDontShowCardsCurrentTab(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.dontShowCardsCurrentTab = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getDontShowIdentitiesCurrentTab(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.dontShowIdentitiesCurrentTab ?? false\n );\n }\n\n async setDontShowIdentitiesCurrentTab(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.dontShowIdentitiesCurrentTab = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEmail(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.profile?.email;\n }\n\n async setEmail(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.email = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getEmailVerified(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.profile.emailVerified ?? false\n );\n }\n\n async setEmailVerified(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.emailVerified = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableAlwaysOnTop(options?: StorageOptions): Promise {\n const accountPreference = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.enableAlwaysOnTop;\n const globalPreference = (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.enableAlwaysOnTop;\n return accountPreference ?? globalPreference ?? false;\n }\n\n async setEnableAlwaysOnTop(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.enableAlwaysOnTop = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableAlwaysOnTop = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableAutoFillOnPageLoad(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.enableAutoFillOnPageLoad ?? false\n );\n }\n\n async setEnableAutoFillOnPageLoad(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.enableAutoFillOnPageLoad = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBiometric(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBiometrics ?? false\n );\n }\n\n async setEnableBiometric(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBiometrics = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBrowserIntegration(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBrowserIntegration ?? false\n );\n }\n\n async setEnableBrowserIntegration(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBrowserIntegration = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableBrowserIntegrationFingerprint(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableBrowserIntegrationFingerprint ?? false\n );\n }\n\n async setEnableBrowserIntegrationFingerprint(\n value: boolean,\n options?: StorageOptions\n ): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableBrowserIntegrationFingerprint = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableCloseToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableCloseToTray ?? false\n );\n }\n\n async setEnableCloseToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableCloseToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableFullWidth(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.enableFullWidth ?? false\n );\n }\n\n async setEnableFullWidth(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.enableFullWidth = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnableGravitars(options?: StorageOptions): Promise {\n return (\n (\n await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n )\n )?.settings?.enableGravitars ?? false\n );\n }\n\n async setEnableGravitars(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.enableGravitars = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnableMinimizeToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableMinimizeToTray ?? false\n );\n }\n\n async setEnableMinimizeToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableMinimizeToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableStartToTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableStartToTray ?? false\n );\n }\n\n async setEnableStartToTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableStartToTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEnableTray(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.enableTray ?? false\n );\n }\n\n async setEnableTray(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.enableTray = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.ciphers?.encrypted;\n }\n\n async setEncryptedCiphers(\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.ciphers.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedCollections(\n options?: StorageOptions\n ): Promise<{ [id: string]: CollectionData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.collections?.encrypted;\n }\n\n async setEncryptedCollections(\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.collections.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedCryptoSymmetricKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys.cryptoSymmetricKey.encrypted;\n }\n\n async setEncryptedCryptoSymmetricKey(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.cryptoSymmetricKey.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.folders?.encrypted;\n }\n\n async setEncryptedFolders(\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.folders.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEncryptedOrganizationKeys(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.organizationKeys.encrypted;\n }\n\n async setEncryptedOrganizationKeys(\n value: Map,\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.organizationKeys.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPasswordGenerationHistory(\n options?: StorageOptions\n ): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.passwordGenerationHistory?.encrypted;\n }\n\n async setEncryptedPasswordGenerationHistory(\n value: GeneratedPasswordHistory[],\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.passwordGenerationHistory.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPinProtected(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.pinProtected?.encrypted;\n }\n\n async setEncryptedPinProtected(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.pinProtected.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPolicies(options?: StorageOptions): Promise<{ [id: string]: PolicyData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.policies?.encrypted;\n }\n\n async setEncryptedPolicies(\n value: { [id: string]: PolicyData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.policies.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedPrivateKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.privateKey?.encrypted;\n }\n\n async setEncryptedPrivateKey(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.privateKey.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedProviderKeys(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.providerKeys?.encrypted;\n }\n\n async setEncryptedProviderKeys(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.providerKeys.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.data?.sends.encrypted;\n }\n\n async setEncryptedSends(\n value: { [id: string]: SendData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.data.sends.encrypted = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getEntityId(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.profile?.entityId;\n }\n\n async setEntityId(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.profile.entityId = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEntityType(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.profile?.entityType;\n }\n\n async setEntityType(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.profile.entityType = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEnvironmentUrls(options?: StorageOptions): Promise {\n if (this.state.activeUserId == null) {\n return await this.getGlobalEnvironmentUrls(options);\n }\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n return (await this.getAccount(options))?.settings?.environmentUrls ?? new EnvironmentUrls();\n }\n\n async setEnvironmentUrls(value: EnvironmentUrls, options?: StorageOptions): Promise {\n // Global values are set on each change and the current global settings are passed to any newly authed accounts.\n // This is to allow setting environement values before an account is active, while still allowing individual accounts to have their own environments.\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.environmentUrls = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEquivalentDomains(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.equivalentDomains;\n }\n\n async setEquivalentDomains(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.equivalentDomains = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEventCollection(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.eventCollection;\n }\n\n async setEventCollection(value: EventData[], options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.eventCollection = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getEverBeenUnlocked(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.profile\n ?.everBeenUnlocked ?? false\n );\n }\n\n async setEverBeenUnlocked(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.everBeenUnlocked = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getForcePasswordReset(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))?.profile\n ?.forcePasswordReset ?? false\n );\n }\n\n async setForcePasswordReset(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.profile.forcePasswordReset = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getInstalledVersion(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.installedVersion;\n }\n\n async setInstalledVersion(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.installedVersion = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getIsAuthenticated(options?: StorageOptions): Promise {\n return (await this.getAccessToken(options)) != null && (await this.getUserId(options)) != null;\n }\n\n async getKdfIterations(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.kdfIterations;\n }\n\n async setKdfIterations(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.kdfIterations = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getKdfType(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.kdfType;\n }\n\n async setKdfType(value: KdfType, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.kdfType = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getKeyHash(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.keyHash;\n }\n\n async setKeyHash(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.keyHash = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getLastActive(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n\n const accountActivity = await this.storageService.get<{ [userId: string]: number }>(\n keys.accountActivity,\n options\n );\n\n if (accountActivity == null || Object.keys(accountActivity).length < 1) {\n return null;\n }\n\n return accountActivity[options.userId];\n }\n\n async setLastActive(value: number, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n if (options.userId == null) {\n return;\n }\n const accountActivity =\n (await this.storageService.get<{ [userId: string]: number }>(\n keys.accountActivity,\n options\n )) ?? {};\n accountActivity[options.userId] = value;\n await this.storageService.save(keys.accountActivity, accountActivity, options);\n }\n\n async getLastSync(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.profile?.lastSync;\n }\n\n async setLastSync(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.profile.lastSync = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getLegacyEtmKey(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.keys?.legacyEtmKey;\n }\n\n async setLegacyEtmKey(value: SymmetricCryptoKey, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.keys.legacyEtmKey = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getLocalData(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.data?.localData;\n }\n async setLocalData(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.data.localData = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getLocale(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.locale;\n }\n\n async setLocale(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.locale = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getMainWindowSize(options?: StorageOptions): Promise {\n return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.mainWindowSize;\n }\n\n async setMainWindowSize(value: number, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n globals.mainWindowSize = value;\n await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getMinimizeOnCopyToClipboard(options?: StorageOptions): Promise {\n return (\n (await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.settings?.minimizeOnCopyToClipboard ?? false\n );\n }\n\n async setMinimizeOnCopyToClipboard(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.minimizeOnCopyToClipboard = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNeverDomains(options?: StorageOptions): Promise<{ [id: string]: any }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.neverDomains;\n }\n\n async setNeverDomains(value: { [id: string]: any }, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.neverDomains = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNoAutoPromptBiometrics(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.noAutoPromptBiometrics ?? false\n );\n }\n\n async setNoAutoPromptBiometrics(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.noAutoPromptBiometrics = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getNoAutoPromptBiometricsText(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.noAutoPromptBiometricsText;\n }\n\n async setNoAutoPromptBiometricsText(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.noAutoPromptBiometricsText = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getOpenAtLogin(options?: StorageOptions): Promise {\n return (\n (await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions())))\n ?.openAtLogin ?? false\n );\n }\n\n async setOpenAtLogin(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.openAtLogin = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getOrganizationInvitation(options?: StorageOptions): Promise {\n return (await this.getGlobals(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.organizationInvitation;\n }\n\n async setOrganizationInvitation(value: any, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n globals.organizationInvitation = value;\n await this.saveGlobals(globals, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getOrganizations(options?: StorageOptions): Promise<{ [id: string]: OrganizationData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.organizations;\n }\n\n async setOrganizations(\n value: { [id: string]: OrganizationData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.organizations = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getPasswordGenerationOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.passwordGenerationOptions;\n }\n\n async setPasswordGenerationOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.passwordGenerationOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getUsernameGenerationOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.usernameGenerationOptions;\n }\n\n async setUsernameGenerationOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.usernameGenerationOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getGeneratorOptions(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.generatorOptions;\n }\n\n async setGeneratorOptions(value: any, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.generatorOptions = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getProtectedPin(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.settings?.protectedPin;\n }\n\n async setProtectedPin(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.settings.protectedPin = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getProviders(options?: StorageOptions): Promise<{ [id: string]: ProviderData }> {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.data?.providers;\n }\n\n async setProviders(\n value: { [id: string]: ProviderData },\n options?: StorageOptions\n ): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.data.providers = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getPublicKey(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.keys?.publicKey;\n }\n\n async setPublicKey(value: ArrayBuffer, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.keys.publicKey = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getRefreshToken(options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n return (await this.getAccount(options))?.tokens?.refreshToken;\n }\n\n async setRefreshToken(value: string, options?: StorageOptions): Promise {\n options = await this.getTimeoutBasedStorageOptions(options);\n const account = await this.getAccount(options);\n account.tokens.refreshToken = value;\n await this.saveAccount(account, options);\n }\n\n async getRememberedEmail(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.rememberedEmail;\n }\n\n async setRememberedEmail(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.rememberedEmail = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getSecurityStamp(options?: StorageOptions): Promise {\n return (await this.getAccount(this.reconcileOptions(options, this.defaultInMemoryOptions)))\n ?.tokens?.securityStamp;\n }\n\n async setSecurityStamp(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, this.defaultInMemoryOptions)\n );\n account.tokens.securityStamp = value;\n await this.saveAccount(account, this.reconcileOptions(options, this.defaultInMemoryOptions));\n }\n\n async getSettings(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions()))\n )?.settings?.settings;\n }\n\n async setSettings(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n account.settings.settings = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskMemoryOptions())\n );\n }\n\n async getSsoCodeVerifier(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.ssoCodeVerifier;\n }\n\n async setSsoCodeVerifier(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.ssoCodeVerifier = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getSsoOrgIdentifier(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.ssoOrganizationIdentifier;\n }\n\n async setSsoOrganizationIdentifier(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.ssoOrganizationIdentifier = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getSsoState(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.ssoState;\n }\n\n async setSsoState(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.ssoState = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getTheme(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.theme;\n }\n\n async setTheme(value: ThemeType, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.theme = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getTwoFactorToken(options?: StorageOptions): Promise {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.twoFactorToken;\n }\n\n async setTwoFactorToken(value: string, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.twoFactorToken = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getUserId(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.userId;\n }\n\n async getUsesKeyConnector(options?: StorageOptions): Promise {\n return (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskOptions()))\n )?.profile?.usesKeyConnector;\n }\n\n async setUsesKeyConnector(value: boolean, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n account.profile.usesKeyConnector = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n async getVaultTimeout(options?: StorageOptions): Promise {\n const accountVaultTimeout = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.vaultTimeout;\n return accountVaultTimeout;\n }\n\n async setVaultTimeout(value: number, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.vaultTimeout = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getVaultTimeoutAction(options?: StorageOptions): Promise {\n const accountVaultTimeoutAction = (\n await this.getAccount(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.settings?.vaultTimeoutAction;\n const globalVaultTimeoutAction = (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.vaultTimeoutAction;\n return accountVaultTimeoutAction ?? globalVaultTimeoutAction;\n }\n\n async setVaultTimeoutAction(value: string, options?: StorageOptions): Promise {\n const account = await this.getAccount(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n account.settings.vaultTimeoutAction = value;\n await this.saveAccount(\n account,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getStateVersion(): Promise {\n return (await this.getGlobals(await this.defaultOnDiskLocalOptions())).stateVersion ?? 1;\n }\n\n async setStateVersion(value: number): Promise {\n const globals = await this.getGlobals(await this.defaultOnDiskOptions());\n globals.stateVersion = value;\n await this.saveGlobals(globals, await this.defaultOnDiskOptions());\n }\n\n async getWindow(): Promise {\n const globals = await this.getGlobals(await this.defaultOnDiskOptions());\n return globals?.window != null && Object.keys(globals.window).length > 0\n ? globals.window\n : new WindowState();\n }\n\n async setWindow(value: WindowState, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n globals.window = value;\n return await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskOptions())\n );\n }\n\n protected async getGlobals(options: StorageOptions): Promise {\n let globals: TGlobalState;\n if (this.useMemory(options.storageLocation)) {\n globals = this.getGlobalsFromMemory();\n }\n\n if (this.useDisk && globals == null) {\n globals = await this.getGlobalsFromDisk(options);\n }\n\n return globals ?? this.createGlobals();\n }\n\n protected async saveGlobals(globals: TGlobalState, options: StorageOptions) {\n return this.useMemory(options.storageLocation)\n ? this.saveGlobalsToMemory(globals)\n : await this.saveGlobalsToDisk(globals, options);\n }\n\n protected getGlobalsFromMemory(): TGlobalState {\n return this.state.globals;\n }\n\n protected async getGlobalsFromDisk(options: StorageOptions): Promise {\n return await this.storageService.get(keys.global, options);\n }\n\n protected saveGlobalsToMemory(globals: TGlobalState): void {\n this.state.globals = globals;\n }\n\n protected async saveGlobalsToDisk(globals: TGlobalState, options: StorageOptions): Promise {\n if (options.useSecureStorage) {\n await this.secureStorageService.save(keys.global, globals, options);\n } else {\n await this.storageService.save(keys.global, globals, options);\n }\n }\n\n protected async getAccount(options: StorageOptions): Promise {\n try {\n let account: TAccount;\n if (this.useMemory(options.storageLocation)) {\n account = this.getAccountFromMemory(options);\n }\n\n if (this.useDisk(options.storageLocation) && account == null) {\n account = await this.getAccountFromDisk(options);\n }\n\n return account;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected getAccountFromMemory(options: StorageOptions): TAccount {\n if (this.state.accounts == null) {\n return null;\n }\n return this.state.accounts[this.getUserIdFromMemory(options)];\n }\n\n protected getUserIdFromMemory(options: StorageOptions): string {\n return options?.userId != null\n ? this.state.accounts[options.userId]?.profile?.userId\n : this.state.activeUserId;\n }\n\n protected async getAccountFromDisk(options: StorageOptions): Promise {\n if (options?.userId == null && this.state.activeUserId == null) {\n return null;\n }\n\n if (this.useAccountCache) {\n const cachedAccount = this.accountDiskCache.get(options.userId);\n if (cachedAccount != null) {\n return cachedAccount;\n }\n }\n\n const account = options?.useSecureStorage\n ? (await this.secureStorageService.get(options.userId, options)) ??\n (await this.storageService.get(\n options.userId,\n this.reconcileOptions(options, { htmlStorageLocation: HtmlStorageLocation.Local })\n ))\n : await this.storageService.get(options.userId, options);\n\n if (this.useAccountCache) {\n this.accountDiskCache.set(options.userId, account);\n }\n return account;\n }\n\n protected useMemory(storageLocation: StorageLocation) {\n return storageLocation === StorageLocation.Memory || storageLocation === StorageLocation.Both;\n }\n\n protected useDisk(storageLocation: StorageLocation) {\n return storageLocation === StorageLocation.Disk || storageLocation === StorageLocation.Both;\n }\n\n protected async saveAccount(\n account: TAccount,\n options: StorageOptions = {\n storageLocation: StorageLocation.Both,\n useSecureStorage: false,\n }\n ) {\n return this.useMemory(options.storageLocation)\n ? await this.saveAccountToMemory(account)\n : await this.saveAccountToDisk(account, options);\n }\n\n protected async saveAccountToDisk(account: TAccount, options: StorageOptions): Promise {\n const storageLocation = options.useSecureStorage\n ? this.secureStorageService\n : this.storageService;\n\n await storageLocation.save(`${options.userId}`, account, options);\n\n if (this.useAccountCache) {\n this.accountDiskCache.delete(options.userId);\n }\n }\n\n protected async saveAccountToMemory(account: TAccount): Promise {\n if (this.getAccountFromMemory({ userId: account.profile.userId }) !== null) {\n this.state.accounts[account.profile.userId] = account;\n }\n await this.pushAccounts();\n }\n\n protected async scaffoldNewAccountStorage(account: TAccount): Promise {\n // We don't want to manipulate the referenced in memory account\n const deepClone = JSON.parse(JSON.stringify(account));\n await this.scaffoldNewAccountLocalStorage(deepClone);\n await this.scaffoldNewAccountSessionStorage(deepClone);\n await this.scaffoldNewAccountMemoryStorage(deepClone);\n }\n\n // TODO: There is a tech debt item for splitting up these methods - only Web uses multiple storage locations in its storageService.\n // For now these methods exist with some redundancy to facilitate this special web requirement.\n protected async scaffoldNewAccountLocalStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskLocalOptions()\n )\n );\n // EnvironmentUrls are set before authenticating and should override whatever is stored from any previous session\n const environmentUrls = account.settings.environmentUrls;\n if (storedAccount?.settings != null) {\n account.settings = storedAccount.settings;\n } else if (await this.storageService.has(keys.tempAccountSettings)) {\n account.settings = await this.storageService.get(keys.tempAccountSettings);\n await this.storageService.remove(keys.tempAccountSettings);\n }\n account.settings.environmentUrls = environmentUrls;\n if (account.settings.vaultTimeoutAction === \"logOut\" && account.settings.vaultTimeout != null) {\n account.tokens.accessToken = null;\n account.tokens.refreshToken = null;\n account.profile.apiKeyClientId = null;\n account.keys.apiKeyClientSecret = null;\n }\n await this.saveAccount(\n account,\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskLocalOptions()\n )\n );\n }\n\n protected async scaffoldNewAccountMemoryStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskMemoryOptions()\n )\n );\n if (storedAccount?.settings != null) {\n storedAccount.settings.environmentUrls = account.settings.environmentUrls;\n account.settings = storedAccount.settings;\n }\n await this.storageService.save(\n account.profile.userId,\n account,\n await this.defaultOnDiskMemoryOptions()\n );\n await this.saveAccount(\n account,\n this.reconcileOptions(\n { userId: account.profile.userId },\n await this.defaultOnDiskMemoryOptions()\n )\n );\n }\n\n protected async scaffoldNewAccountSessionStorage(account: TAccount): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: account.profile.userId }, await this.defaultOnDiskOptions())\n );\n if (storedAccount?.settings != null) {\n storedAccount.settings.environmentUrls = account.settings.environmentUrls;\n account.settings = storedAccount.settings;\n }\n await this.storageService.save(\n account.profile.userId,\n account,\n await this.defaultOnDiskMemoryOptions()\n );\n await this.saveAccount(\n account,\n this.reconcileOptions({ userId: account.profile.userId }, await this.defaultOnDiskOptions())\n );\n }\n //\n\n protected async pushAccounts(): Promise {\n await this.pruneInMemoryAccounts();\n if (this.state?.accounts == null || Object.keys(this.state.accounts).length < 1) {\n this.accounts.next(null);\n return;\n }\n\n this.accounts.next(this.state.accounts);\n }\n\n protected reconcileOptions(\n requestedOptions: StorageOptions,\n defaultOptions: StorageOptions\n ): StorageOptions {\n if (requestedOptions == null) {\n return defaultOptions;\n }\n requestedOptions.userId = requestedOptions?.userId ?? defaultOptions.userId;\n requestedOptions.storageLocation =\n requestedOptions?.storageLocation ?? defaultOptions.storageLocation;\n requestedOptions.useSecureStorage =\n requestedOptions?.useSecureStorage ?? defaultOptions.useSecureStorage;\n requestedOptions.htmlStorageLocation =\n requestedOptions?.htmlStorageLocation ?? defaultOptions.htmlStorageLocation;\n requestedOptions.keySuffix = requestedOptions?.keySuffix ?? defaultOptions.keySuffix;\n return requestedOptions;\n }\n\n protected get defaultInMemoryOptions(): StorageOptions {\n return { storageLocation: StorageLocation.Memory, userId: this.state.activeUserId };\n }\n\n protected async defaultOnDiskOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Session,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultOnDiskLocalOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Local,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultOnDiskMemoryOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n htmlStorageLocation: HtmlStorageLocation.Memory,\n userId: this.state.activeUserId ?? (await this.getUserId()),\n useSecureStorage: false,\n };\n }\n\n protected async defaultSecureStorageOptions(): Promise {\n return {\n storageLocation: StorageLocation.Disk,\n useSecureStorage: true,\n userId: this.state.activeUserId ?? (await this.getActiveUserIdFromStorage()),\n };\n }\n\n protected async getActiveUserIdFromStorage(): Promise {\n return await this.storageService.get(keys.activeUserId);\n }\n\n protected async removeAccountFromLocalStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskLocalOptions())\n );\n await this.saveAccount(\n this.resetAccount(storedAccount),\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskLocalOptions())\n );\n }\n\n protected async removeAccountFromSessionStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n const storedAccount = await this.getAccount(\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskOptions())\n );\n await this.saveAccount(\n this.resetAccount(storedAccount),\n this.reconcileOptions({ userId: userId }, await this.defaultOnDiskOptions())\n );\n }\n\n protected async removeAccountFromSecureStorage(\n userId: string = this.state.activeUserId\n ): Promise {\n await this.setCryptoMasterKeyAuto(null, { userId: userId });\n await this.setCryptoMasterKeyBiometric(null, { userId: userId });\n await this.setCryptoMasterKeyB64(null, { userId: userId });\n }\n\n protected removeAccountFromMemory(userId: string = this.state.activeUserId): void {\n delete this.state.accounts[userId];\n if (this.useAccountCache) {\n this.accountDiskCache.delete(userId);\n }\n }\n\n protected async pruneInMemoryAccounts() {\n // We preserve settings for logged out accounts, but we don't want to consider them when thinking about active account state\n for (const userId in this.state.accounts) {\n if (!(await this.getIsAuthenticated({ userId: userId }))) {\n this.removeAccountFromMemory(userId);\n }\n }\n }\n\n // settings persist even on reset, and are not effected by this method\n protected resetAccount(account: TAccount) {\n const persistentAccountInformation = { settings: account.settings };\n return Object.assign(this.createAccount(), persistentAccountInformation);\n }\n\n protected async setAccountEnvironmentUrls(account: TAccount): Promise {\n account.settings.environmentUrls = await this.getGlobalEnvironmentUrls();\n return account;\n }\n\n protected async getGlobalEnvironmentUrls(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, await this.defaultOnDiskOptions());\n return (await this.getGlobals(options)).environmentUrls ?? new EnvironmentUrls();\n }\n\n protected clearDecryptedDataForActiveUser() {\n const userId = this.state.activeUserId;\n if (userId == null || this.state?.accounts[userId]?.data == null) {\n return;\n }\n this.state.accounts[userId].data = new AccountData();\n }\n\n protected createAccount(init: Partial = null): TAccount {\n return this.stateFactory.createAccount(init);\n }\n\n protected createGlobals(init: Partial = null): TGlobalState {\n return this.stateFactory.createGlobal(init);\n }\n\n protected async deAuthenticateAccount(userId: string) {\n await this.setAccessToken(null, { userId: userId });\n await this.setLastActive(null, { userId: userId });\n this.state.authenticatedAccounts = this.state.authenticatedAccounts.filter(\n (activeUserId) => activeUserId !== userId\n );\n await this.storageService.save(keys.authenticatedAccounts, this.state.authenticatedAccounts);\n }\n\n protected async removeAccountFromDisk(userId: string) {\n await this.removeAccountFromSessionStorage(userId);\n await this.removeAccountFromLocalStorage(userId);\n await this.removeAccountFromSecureStorage(userId);\n }\n\n protected async dynamicallySetActiveUser() {\n if (this.state.accounts == null || Object.keys(this.state.accounts).length < 1) {\n await this.setActiveUser(null);\n return;\n }\n for (const userId in this.state.accounts) {\n if (userId == null) {\n continue;\n }\n if (await this.getIsAuthenticated({ userId: userId })) {\n await this.setActiveUser(userId);\n break;\n }\n await this.setActiveUser(null);\n }\n }\n\n private async getTimeoutBasedStorageOptions(options?: StorageOptions): Promise {\n const timeoutAction = await this.getVaultTimeoutAction({ userId: options?.userId });\n const timeout = await this.getVaultTimeout({ userId: options?.userId });\n const defaultOptions =\n timeoutAction === \"logOut\" && timeout != null\n ? this.defaultInMemoryOptions\n : await this.defaultOnDiskOptions();\n return this.reconcileOptions(options, defaultOptions);\n }\n\n private async saveSecureStorageKey(key: string, value: string, options?: StorageOptions) {\n return value == null\n ? await this.secureStorageService.remove(`${options.userId}${key}`, options)\n : await this.secureStorageService.save(`${options.userId}${key}`, value, options);\n }\n}\n","import { StorageService } from \"../abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"../enums/htmlStorageLocation\";\nimport { KdfType } from \"../enums/kdfType\";\nimport { StateVersion } from \"../enums/stateVersion\";\nimport { ThemeType } from \"../enums/themeType\";\nimport { StateFactory } from \"../factories/stateFactory\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { EventData } from \"../models/data/eventData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { Account, AccountSettings } from \"../models/domain/account\";\nimport { EnvironmentUrls } from \"../models/domain/environmentUrls\";\nimport { GeneratedPasswordHistory } from \"../models/domain/generatedPasswordHistory\";\nimport { GlobalState } from \"../models/domain/globalState\";\nimport { StorageOptions } from \"../models/domain/storageOptions\";\n\nimport { TokenService } from \"./token.service\";\n\n// Originally (before January 2022) storage was handled as a flat key/value pair store.\n// With the move to a typed object for state storage these keys should no longer be in use anywhere outside of this migration.\nconst v1Keys: { [key: string]: string } = {\n accessToken: \"accessToken\",\n alwaysShowDock: \"alwaysShowDock\",\n autoConfirmFingerprints: \"autoConfirmFingerprints\",\n autoFillOnPageLoadDefault: \"autoFillOnPageLoadDefault\",\n biometricAwaitingAcceptance: \"biometricAwaitingAcceptance\",\n biometricFingerprintValidated: \"biometricFingerprintValidated\",\n biometricText: \"biometricText\",\n biometricUnlock: \"biometric\",\n clearClipboard: \"clearClipboardKey\",\n clientId: \"apikey_clientId\",\n clientSecret: \"apikey_clientSecret\",\n collapsedGroupings: \"collapsedGroupings\",\n convertAccountToKeyConnector: \"convertAccountToKeyConnector\",\n defaultUriMatch: \"defaultUriMatch\",\n disableAddLoginNotification: \"disableAddLoginNotification\",\n disableAutoBiometricsPrompt: \"noAutoPromptBiometrics\",\n disableAutoTotpCopy: \"disableAutoTotpCopy\",\n disableBadgeCounter: \"disableBadgeCounter\",\n disableChangedPasswordNotification: \"disableChangedPasswordNotification\",\n disableContextMenuItem: \"disableContextMenuItem\",\n disableFavicon: \"disableFavicon\",\n disableGa: \"disableGa\",\n dontShowCardsCurrentTab: \"dontShowCardsCurrentTab\",\n dontShowIdentitiesCurrentTab: \"dontShowIdentitiesCurrentTab\",\n emailVerified: \"emailVerified\",\n enableAlwaysOnTop: \"enableAlwaysOnTopKey\",\n enableAutoFillOnPageLoad: \"enableAutoFillOnPageLoad\",\n enableBiometric: \"enabledBiometric\",\n enableBrowserIntegration: \"enableBrowserIntegration\",\n enableBrowserIntegrationFingerprint: \"enableBrowserIntegrationFingerprint\",\n enableCloseToTray: \"enableCloseToTray\",\n enableFullWidth: \"enableFullWidth\",\n enableGravatars: \"enableGravatars\",\n enableMinimizeToTray: \"enableMinimizeToTray\",\n enableStartToTray: \"enableStartToTrayKey\",\n enableTray: \"enableTray\",\n encKey: \"encKey\", // Generated Symmetric Key\n encOrgKeys: \"encOrgKeys\",\n encPrivate: \"encPrivateKey\",\n encProviderKeys: \"encProviderKeys\",\n entityId: \"entityId\",\n entityType: \"entityType\",\n environmentUrls: \"environmentUrls\",\n equivalentDomains: \"equivalentDomains\",\n eventCollection: \"eventCollection\",\n forcePasswordReset: \"forcePasswordReset\",\n history: \"generatedPasswordHistory\",\n installedVersion: \"installedVersion\",\n kdf: \"kdf\",\n kdfIterations: \"kdfIterations\",\n key: \"key\", // Master Key\n keyHash: \"keyHash\",\n lastActive: \"lastActive\",\n localData: \"sitesLocalData\",\n locale: \"locale\",\n mainWindowSize: \"mainWindowSize\",\n minimizeOnCopyToClipboard: \"minimizeOnCopyToClipboardKey\",\n neverDomains: \"neverDomains\",\n noAutoPromptBiometricsText: \"noAutoPromptBiometricsText\",\n openAtLogin: \"openAtLogin\",\n passwordGenerationOptions: \"passwordGenerationOptions\",\n pinProtected: \"pinProtectedKey\",\n protectedPin: \"protectedPin\",\n refreshToken: \"refreshToken\",\n ssoCodeVerifier: \"ssoCodeVerifier\",\n ssoIdentifier: \"ssoOrgIdentifier\",\n ssoState: \"ssoState\",\n stamp: \"securityStamp\",\n theme: \"theme\",\n userEmail: \"userEmail\",\n userId: \"userId\",\n usesConnector: \"usesKeyConnector\",\n vaultTimeoutAction: \"vaultTimeoutAction\",\n vaultTimeout: \"lockOption\",\n rememberedEmail: \"rememberedEmail\",\n};\n\nconst v1KeyPrefixes: { [key: string]: string } = {\n ciphers: \"ciphers_\",\n collections: \"collections_\",\n folders: \"folders_\",\n lastSync: \"lastSync_\",\n policies: \"policies_\",\n twoFactorToken: \"twoFactorToken_\",\n organizations: \"organizations_\",\n providers: \"providers_\",\n sends: \"sends_\",\n settings: \"settings_\",\n};\n\nconst keys = {\n global: \"global\",\n authenticatedAccounts: \"authenticatedAccounts\",\n activeUserId: \"activeUserId\",\n tempAccountSettings: \"tempAccountSettings\", // used to hold account specific settings (i.e clear clipboard) between initial migration and first account authentication\n accountActivity: \"accountActivity\",\n};\n\nconst partialKeys = {\n autoKey: \"_masterkey_auto\",\n biometricKey: \"_masterkey_biometric\",\n masterKey: \"_masterkey\",\n};\n\nexport class StateMigrationService<\n TGlobalState extends GlobalState = GlobalState,\n TAccount extends Account = Account\n> {\n constructor(\n protected storageService: StorageService,\n protected secureStorageService: StorageService,\n protected stateFactory: StateFactory\n ) {}\n\n async needsMigration(): Promise {\n const currentStateVersion = await this.getCurrentStateVersion();\n return currentStateVersion == null || currentStateVersion < StateVersion.Latest;\n }\n\n async migrate(): Promise {\n let currentStateVersion = await this.getCurrentStateVersion();\n while (currentStateVersion < StateVersion.Latest) {\n switch (currentStateVersion) {\n case StateVersion.One:\n await this.migrateStateFrom1To2();\n break;\n case StateVersion.Two:\n await this.migrateStateFrom2To3();\n break;\n case StateVersion.Three:\n await this.migrateStateFrom3To4();\n break;\n }\n\n currentStateVersion += 1;\n }\n }\n\n protected async migrateStateFrom1To2(): Promise {\n const clearV1Keys = async (clearingUserId?: string) => {\n for (const key in v1Keys) {\n if (key == null) {\n continue;\n }\n await this.set(v1Keys[key], null);\n }\n if (clearingUserId != null) {\n for (const keyPrefix in v1KeyPrefixes) {\n if (keyPrefix == null) {\n continue;\n }\n await this.set(v1KeyPrefixes[keyPrefix] + userId, null);\n }\n }\n };\n\n // Some processes, like biometrics, may have already defined a value before migrations are run.\n // We don't want to null out those values if they don't exist in the old storage scheme (like for new installs)\n // So, the OOO for migration is that we:\n // 1. Check for an existing storage value from the old storage structure OR\n // 2. Check for a value already set by processes that run before migration OR\n // 3. Assign the default value\n const globals =\n (await this.get(keys.global)) ?? this.stateFactory.createGlobal(null);\n globals.stateVersion = StateVersion.Two;\n globals.environmentUrls =\n (await this.get(v1Keys.environmentUrls)) ?? globals.environmentUrls;\n globals.locale = (await this.get(v1Keys.locale)) ?? globals.locale;\n globals.noAutoPromptBiometrics =\n (await this.get(v1Keys.disableAutoBiometricsPrompt)) ??\n globals.noAutoPromptBiometrics;\n globals.noAutoPromptBiometricsText =\n (await this.get(v1Keys.noAutoPromptBiometricsText)) ??\n globals.noAutoPromptBiometricsText;\n globals.ssoCodeVerifier =\n (await this.get(v1Keys.ssoCodeVerifier)) ?? globals.ssoCodeVerifier;\n globals.ssoOrganizationIdentifier =\n (await this.get(v1Keys.ssoIdentifier)) ?? globals.ssoOrganizationIdentifier;\n globals.ssoState = (await this.get(v1Keys.ssoState)) ?? globals.ssoState;\n globals.rememberedEmail =\n (await this.get(v1Keys.rememberedEmail)) ?? globals.rememberedEmail;\n globals.theme = (await this.get(v1Keys.theme)) ?? globals.theme;\n globals.vaultTimeout = (await this.get(v1Keys.vaultTimeout)) ?? globals.vaultTimeout;\n globals.vaultTimeoutAction =\n (await this.get(v1Keys.vaultTimeoutAction)) ?? globals.vaultTimeoutAction;\n globals.window = (await this.get(v1Keys.mainWindowSize)) ?? globals.window;\n globals.enableTray = (await this.get(v1Keys.enableTray)) ?? globals.enableTray;\n globals.enableMinimizeToTray =\n (await this.get(v1Keys.enableMinimizeToTray)) ?? globals.enableMinimizeToTray;\n globals.enableCloseToTray =\n (await this.get(v1Keys.enableCloseToTray)) ?? globals.enableCloseToTray;\n globals.enableStartToTray =\n (await this.get(v1Keys.enableStartToTray)) ?? globals.enableStartToTray;\n globals.openAtLogin = (await this.get(v1Keys.openAtLogin)) ?? globals.openAtLogin;\n globals.alwaysShowDock =\n (await this.get(v1Keys.alwaysShowDock)) ?? globals.alwaysShowDock;\n globals.enableBrowserIntegration =\n (await this.get(v1Keys.enableBrowserIntegration)) ??\n globals.enableBrowserIntegration;\n globals.enableBrowserIntegrationFingerprint =\n (await this.get(v1Keys.enableBrowserIntegrationFingerprint)) ??\n globals.enableBrowserIntegrationFingerprint;\n\n const userId =\n (await this.get(v1Keys.userId)) ?? (await this.get(v1Keys.entityId));\n\n const defaultAccount = this.stateFactory.createAccount(null);\n const accountSettings: AccountSettings = {\n autoConfirmFingerPrints:\n (await this.get(v1Keys.autoConfirmFingerprints)) ??\n defaultAccount.settings.autoConfirmFingerPrints,\n autoFillOnPageLoadDefault:\n (await this.get(v1Keys.autoFillOnPageLoadDefault)) ??\n defaultAccount.settings.autoFillOnPageLoadDefault,\n biometricLocked: null,\n biometricUnlock:\n (await this.get(v1Keys.biometricUnlock)) ??\n defaultAccount.settings.biometricUnlock,\n clearClipboard:\n (await this.get(v1Keys.clearClipboard)) ?? defaultAccount.settings.clearClipboard,\n defaultUriMatch:\n (await this.get(v1Keys.defaultUriMatch)) ?? defaultAccount.settings.defaultUriMatch,\n disableAddLoginNotification:\n (await this.get(v1Keys.disableAddLoginNotification)) ??\n defaultAccount.settings.disableAddLoginNotification,\n disableAutoBiometricsPrompt:\n (await this.get(v1Keys.disableAutoBiometricsPrompt)) ??\n defaultAccount.settings.disableAutoBiometricsPrompt,\n disableAutoTotpCopy:\n (await this.get(v1Keys.disableAutoTotpCopy)) ??\n defaultAccount.settings.disableAutoTotpCopy,\n disableBadgeCounter:\n (await this.get(v1Keys.disableBadgeCounter)) ??\n defaultAccount.settings.disableBadgeCounter,\n disableChangedPasswordNotification:\n (await this.get(v1Keys.disableChangedPasswordNotification)) ??\n defaultAccount.settings.disableChangedPasswordNotification,\n disableContextMenuItem:\n (await this.get(v1Keys.disableContextMenuItem)) ??\n defaultAccount.settings.disableContextMenuItem,\n disableGa: (await this.get(v1Keys.disableGa)) ?? defaultAccount.settings.disableGa,\n dontShowCardsCurrentTab:\n (await this.get(v1Keys.dontShowCardsCurrentTab)) ??\n defaultAccount.settings.dontShowCardsCurrentTab,\n dontShowIdentitiesCurrentTab:\n (await this.get(v1Keys.dontShowIdentitiesCurrentTab)) ??\n defaultAccount.settings.dontShowIdentitiesCurrentTab,\n enableAlwaysOnTop:\n (await this.get(v1Keys.enableAlwaysOnTop)) ??\n defaultAccount.settings.enableAlwaysOnTop,\n enableAutoFillOnPageLoad:\n (await this.get(v1Keys.enableAutoFillOnPageLoad)) ??\n defaultAccount.settings.enableAutoFillOnPageLoad,\n enableBiometric:\n (await this.get(v1Keys.enableBiometric)) ??\n defaultAccount.settings.enableBiometric,\n enableFullWidth:\n (await this.get(v1Keys.enableFullWidth)) ??\n defaultAccount.settings.enableFullWidth,\n enableGravitars:\n (await this.get(v1Keys.enableGravatars)) ??\n defaultAccount.settings.enableGravitars,\n environmentUrls: globals.environmentUrls ?? defaultAccount.settings.environmentUrls,\n equivalentDomains:\n (await this.get(v1Keys.equivalentDomains)) ??\n defaultAccount.settings.equivalentDomains,\n minimizeOnCopyToClipboard:\n (await this.get(v1Keys.minimizeOnCopyToClipboard)) ??\n defaultAccount.settings.minimizeOnCopyToClipboard,\n neverDomains:\n (await this.get(v1Keys.neverDomains)) ?? defaultAccount.settings.neverDomains,\n passwordGenerationOptions:\n (await this.get(v1Keys.passwordGenerationOptions)) ??\n defaultAccount.settings.passwordGenerationOptions,\n pinProtected: {\n decrypted: null,\n encrypted: await this.get(v1Keys.pinProtected),\n },\n protectedPin: await this.get(v1Keys.protectedPin),\n settings: userId == null ? null : await this.get(v1KeyPrefixes.settings + userId),\n vaultTimeout:\n (await this.get(v1Keys.vaultTimeout)) ?? defaultAccount.settings.vaultTimeout,\n vaultTimeoutAction:\n (await this.get(v1Keys.vaultTimeoutAction)) ??\n defaultAccount.settings.vaultTimeoutAction,\n };\n\n // (userId == null) = no logged in user (so no known userId) and we need to temporarily store account specific settings in state to migrate on first auth\n // (userId != null) = we have a currently authed user (so known userId) with encrypted data and other key settings we can move, no need to temporarily store account settings\n if (userId == null) {\n await this.set(keys.tempAccountSettings, accountSettings);\n await this.set(keys.global, globals);\n await this.set(keys.authenticatedAccounts, []);\n await this.set(keys.activeUserId, null);\n await clearV1Keys();\n return;\n }\n\n globals.twoFactorToken = await this.get(v1KeyPrefixes.twoFactorToken + userId);\n await this.set(keys.global, globals);\n await this.set(userId, {\n data: {\n addEditCipherInfo: null,\n ciphers: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: CipherData }>(v1KeyPrefixes.ciphers + userId),\n },\n collapsedGroupings: null,\n collections: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: CollectionData }>(\n v1KeyPrefixes.collections + userId\n ),\n },\n eventCollection: await this.get(v1Keys.eventCollection),\n folders: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: FolderData }>(v1KeyPrefixes.folders + userId),\n },\n localData: null,\n organizations: await this.get<{ [id: string]: OrganizationData }>(\n v1KeyPrefixes.organizations + userId\n ),\n passwordGenerationHistory: {\n decrypted: null,\n encrypted: await this.get(v1Keys.history),\n },\n policies: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: PolicyData }>(v1KeyPrefixes.policies + userId),\n },\n providers: await this.get<{ [id: string]: ProviderData }>(v1KeyPrefixes.providers + userId),\n sends: {\n decrypted: null,\n encrypted: await this.get<{ [id: string]: SendData }>(v1KeyPrefixes.sends + userId),\n },\n },\n keys: {\n apiKeyClientSecret: await this.get(v1Keys.clientSecret),\n cryptoMasterKey: null,\n cryptoMasterKeyAuto: null,\n cryptoMasterKeyB64: null,\n cryptoMasterKeyBiometric: null,\n cryptoSymmetricKey: {\n encrypted: await this.get(v1Keys.encKey),\n decrypted: null,\n },\n legacyEtmKey: null,\n organizationKeys: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encOrgKeys),\n },\n privateKey: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encPrivate),\n },\n providerKeys: {\n decrypted: null,\n encrypted: await this.get(v1Keys.encProviderKeys),\n },\n publicKey: null,\n },\n profile: {\n apiKeyClientId: await this.get(v1Keys.clientId),\n authenticationStatus: null,\n convertAccountToKeyConnector: await this.get(v1Keys.convertAccountToKeyConnector),\n email: await this.get(v1Keys.userEmail),\n emailVerified: await this.get(v1Keys.emailVerified),\n entityId: null,\n entityType: null,\n everBeenUnlocked: null,\n forcePasswordReset: null,\n hasPremiumPersonally: null,\n kdfIterations: await this.get(v1Keys.kdfIterations),\n kdfType: await this.get(v1Keys.kdf),\n keyHash: await this.get(v1Keys.keyHash),\n lastSync: null,\n userId: userId,\n usesKeyConnector: null,\n },\n settings: accountSettings,\n tokens: {\n accessToken: await this.get(v1Keys.accessToken),\n decodedToken: null,\n refreshToken: await this.get(v1Keys.refreshToken),\n securityStamp: null,\n },\n });\n\n await this.set(keys.authenticatedAccounts, [userId]);\n await this.set(keys.activeUserId, userId);\n\n const accountActivity: { [userId: string]: number } = {\n [userId]: await this.get(v1Keys.lastActive),\n };\n accountActivity[userId] = await this.get(v1Keys.lastActive);\n await this.set(keys.accountActivity, accountActivity);\n\n await clearV1Keys(userId);\n\n if (await this.secureStorageService.has(v1Keys.key, { keySuffix: \"biometric\" })) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.biometricKey}`,\n await this.secureStorageService.get(v1Keys.key, { keySuffix: \"biometric\" }),\n { keySuffix: \"biometric\" }\n );\n await this.secureStorageService.remove(v1Keys.key, { keySuffix: \"biometric\" });\n }\n\n if (await this.secureStorageService.has(v1Keys.key, { keySuffix: \"auto\" })) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.autoKey}`,\n await this.secureStorageService.get(v1Keys.key, { keySuffix: \"auto\" }),\n { keySuffix: \"auto\" }\n );\n await this.secureStorageService.remove(v1Keys.key, { keySuffix: \"auto\" });\n }\n\n if (await this.secureStorageService.has(v1Keys.key)) {\n await this.secureStorageService.save(\n `${userId}${partialKeys.masterKey}`,\n await this.secureStorageService.get(v1Keys.key)\n );\n await this.secureStorageService.remove(v1Keys.key);\n }\n }\n\n protected async migrateStateFrom2To3(): Promise {\n const authenticatedUserIds = await this.get(keys.authenticatedAccounts);\n await Promise.all(\n authenticatedUserIds.map(async (userId) => {\n const account = await this.get(userId);\n if (\n account?.profile?.hasPremiumPersonally === null &&\n account.tokens?.accessToken != null\n ) {\n const decodedToken = await TokenService.decodeToken(account.tokens.accessToken);\n account.profile.hasPremiumPersonally = decodedToken.premium;\n await this.set(userId, account);\n }\n })\n );\n\n const globals = await this.getGlobals();\n globals.stateVersion = StateVersion.Three;\n await this.set(keys.global, globals);\n }\n\n protected async migrateStateFrom3To4(): Promise {\n const authenticatedUserIds = await this.get(keys.authenticatedAccounts);\n await Promise.all(\n authenticatedUserIds.map(async (userId) => {\n const account = await this.get(userId);\n if (account?.profile?.everBeenUnlocked != null) {\n delete account.profile.everBeenUnlocked;\n return this.set(userId, account);\n }\n })\n );\n\n const globals = await this.getGlobals();\n globals.stateVersion = StateVersion.Four;\n await this.set(keys.global, globals);\n }\n\n protected get options(): StorageOptions {\n return { htmlStorageLocation: HtmlStorageLocation.Local };\n }\n\n protected get(key: string): Promise {\n return this.storageService.get(key, this.options);\n }\n\n protected set(key: string, value: any): Promise {\n if (value == null) {\n return this.storageService.remove(key, this.options);\n }\n return this.storageService.save(key, value, this.options);\n }\n\n protected async getGlobals(): Promise {\n return await this.get(keys.global);\n }\n\n protected async getCurrentStateVersion(): Promise {\n return (await this.getGlobals())?.stateVersion ?? StateVersion.One;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { OrganizationService } from \"../abstractions/organization.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { ProviderService } from \"../abstractions/provider.service\";\nimport { SendService } from \"../abstractions/send.service\";\nimport { SettingsService } from \"../abstractions/settings.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { SyncService as SyncServiceAbstraction } from \"../abstractions/sync.service\";\nimport { sequentialize } from \"../misc/sequentialize\";\nimport { CipherData } from \"../models/data/cipherData\";\nimport { CollectionData } from \"../models/data/collectionData\";\nimport { FolderData } from \"../models/data/folderData\";\nimport { OrganizationData } from \"../models/data/organizationData\";\nimport { PolicyData } from \"../models/data/policyData\";\nimport { ProviderData } from \"../models/data/providerData\";\nimport { SendData } from \"../models/data/sendData\";\nimport { CipherResponse } from \"../models/response/cipherResponse\";\nimport { CollectionDetailsResponse } from \"../models/response/collectionResponse\";\nimport { DomainsResponse } from \"../models/response/domainsResponse\";\nimport { FolderResponse } from \"../models/response/folderResponse\";\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from \"../models/response/notificationResponse\";\nimport { PolicyResponse } from \"../models/response/policyResponse\";\nimport { ProfileResponse } from \"../models/response/profileResponse\";\nimport { SendResponse } from \"../models/response/sendResponse\";\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress = false;\n\n constructor(\n private apiService: ApiService,\n private settingsService: SettingsService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private cryptoService: CryptoService,\n private collectionService: CollectionService,\n private messagingService: MessagingService,\n private policyService: PolicyService,\n private sendService: SendService,\n private logService: LogService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private organizationService: OrganizationService,\n private providerService: ProviderService,\n private logoutCallback: (expired: boolean) => Promise\n ) {}\n\n async getLastSync(): Promise {\n if ((await this.stateService.getUserId()) == null) {\n return null;\n }\n\n const lastSync = await this.stateService.getLastSync();\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date, userId?: string): Promise {\n await this.stateService.setLastSync(date.toJSON(), { userId: userId });\n }\n\n @sequentialize(() => \"fullSync\")\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.stateService.getIsAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n try {\n await this.apiService.refreshIdentityToken();\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(response.ciphers);\n await this.syncSends(response.sends);\n await this.syncSettings(response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if (\n (!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)\n ) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n await this.folderService.upsert(new FolderData(remoteFolder));\n this.messagingService.send(\"syncedUpsertedFolder\", { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedFolder\", { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (\n !shouldUpdate &&\n checkCollections &&\n notification.organizationId != null &&\n notification.collectionIds != null &&\n notification.collectionIds.length > 0\n ) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n await this.cipherService.upsert(new CipherData(remoteCipher));\n this.messagingService.send(\"syncedUpsertedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedCipher\", { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if (\n (!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)\n ) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n await this.sendService.upsert(new SendData(remoteSend));\n this.messagingService.send(\"syncedUpsertedSend\", { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.stateService.getIsAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send(\"syncedDeletedSend\", { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send(\"syncStarted\");\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send(\"syncCompleted\", { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.stateService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error(\"Stamp has changed\");\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setProviderKeys(response.providers);\n await this.cryptoService.setOrgKeys(response.organizations, response.providerOrganizations);\n await this.stateService.setSecurityStamp(response.securityStamp);\n await this.stateService.setEmailVerified(response.emailVerified);\n await this.stateService.setForcePasswordReset(response.forcePasswordReset);\n await this.keyConnectorService.setUsesKeyConnector(response.usesKeyConnector);\n\n const organizations: { [id: string]: OrganizationData } = {};\n response.organizations.forEach((o) => {\n organizations[o.id] = new OrganizationData(o);\n });\n\n const providers: { [id: string]: ProviderData } = {};\n response.providers.forEach((p) => {\n providers[p.id] = new ProviderData(p);\n });\n\n response.providerOrganizations.forEach((o) => {\n if (organizations[o.id] == null) {\n organizations[o.id] = new OrganizationData(o);\n organizations[o.id].isProviderUser = true;\n }\n });\n\n await this.organizationService.save(organizations);\n await this.providerService.save(providers);\n\n if (await this.keyConnectorService.userNeedsMigration()) {\n await this.keyConnectorService.setConvertAccountRequired(true);\n this.messagingService.send(\"convertAccountToKeyConnector\");\n } else {\n this.keyConnectorService.removeConvertAccountRequired();\n }\n }\n\n private async syncFolders(response: FolderResponse[]) {\n const folders: { [id: string]: FolderData } = {};\n response.forEach((f) => {\n folders[f.id] = new FolderData(f);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData } = {};\n response.forEach((c) => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData } = {};\n response.forEach((c) => {\n ciphers[c.id] = new CipherData(c);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(response: SendResponse[]) {\n const sends: { [id: string]: SendData } = {};\n response.forEach((s) => {\n sends[s.id] = new SendData(s);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach((global) => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData } = {};\n if (response != null) {\n response.forEach((p) => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { StateService } from \"../abstractions/state.service\";\nimport { TokenService as TokenServiceAbstraction } from \"../abstractions/token.service\";\nimport { Utils } from \"../misc/utils\";\nimport { IdentityTokenResponse } from \"../models/response/identityTokenResponse\";\n\nexport class TokenService implements TokenServiceAbstraction {\n static decodeToken(token: string): Promise {\n if (token == null) {\n throw new Error(\"Token not provided.\");\n }\n\n const parts = token.split(\".\");\n if (parts.length !== 3) {\n throw new Error(\"JWT must have 3 parts\");\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error(\"Cannot decode the token\");\n }\n\n const decodedToken = JSON.parse(decoded);\n return decodedToken;\n }\n\n constructor(private stateService: StateService) {}\n\n async setTokens(\n accessToken: string,\n refreshToken: string,\n clientIdClientSecret: [string, string]\n ): Promise {\n await this.setToken(accessToken);\n await this.setRefreshToken(refreshToken);\n if (clientIdClientSecret != null) {\n await this.setClientId(clientIdClientSecret[0]);\n await this.setClientSecret(clientIdClientSecret[1]);\n }\n }\n\n async setClientId(clientId: string): Promise {\n return await this.stateService.setApiKeyClientId(clientId);\n }\n\n async getClientId(): Promise {\n return await this.stateService.getApiKeyClientId();\n }\n\n async setClientSecret(clientSecret: string): Promise {\n return await this.stateService.setApiKeyClientSecret(clientSecret);\n }\n\n async getClientSecret(): Promise {\n return await this.stateService.getApiKeyClientSecret();\n }\n\n async setToken(token: string): Promise {\n await this.stateService.setAccessToken(token);\n }\n\n async getToken(): Promise {\n return await this.stateService.getAccessToken();\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n return await this.stateService.setRefreshToken(refreshToken);\n }\n\n async getRefreshToken(): Promise {\n return await this.stateService.getRefreshToken();\n }\n\n async setTwoFactorToken(tokenResponse: IdentityTokenResponse): Promise {\n return await this.stateService.setTwoFactorToken(tokenResponse.twoFactorToken);\n }\n\n async getTwoFactorToken(): Promise {\n return await this.stateService.getTwoFactorToken();\n }\n\n async clearTwoFactorToken(): Promise {\n return await this.stateService.setTwoFactorToken(null);\n }\n\n async clearToken(userId?: string): Promise {\n await this.stateService.setAccessToken(null, { userId: userId });\n await this.stateService.setRefreshToken(null, { userId: userId });\n await this.stateService.setApiKeyClientId(null, { userId: userId });\n await this.stateService.setApiKeyClientSecret(null, { userId: userId });\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n async decodeToken(token?: string): Promise {\n const storedToken = await this.stateService.getDecodedToken();\n if (token === null && storedToken != null) {\n return storedToken;\n }\n\n token = token ?? (await this.stateService.getAccessToken());\n\n if (token == null) {\n throw new Error(\"Token not found.\");\n }\n\n return TokenService.decodeToken(token);\n }\n\n async getTokenExpirationDate(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.exp === \"undefined\") {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n async tokenSecondsRemaining(offsetSeconds = 0): Promise {\n const d = await this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + offsetSeconds * 1000);\n return Math.round(msRemaining / 1000);\n }\n\n async tokenNeedsRefresh(minutes = 5): Promise {\n const sRemaining = await this.tokenSecondsRemaining();\n return sRemaining < 60 * minutes;\n }\n\n async getUserId(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.sub === \"undefined\") {\n throw new Error(\"No user id found\");\n }\n\n return decoded.sub as string;\n }\n\n async getEmail(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.email === \"undefined\") {\n throw new Error(\"No email found\");\n }\n\n return decoded.email as string;\n }\n\n async getEmailVerified(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.email_verified === \"undefined\") {\n throw new Error(\"No email verification found\");\n }\n\n return decoded.email_verified as boolean;\n }\n\n async getName(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.name === \"undefined\") {\n return null;\n }\n\n return decoded.name as string;\n }\n\n async getPremium(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.premium === \"undefined\") {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n async getIssuer(): Promise {\n const decoded = await this.decodeToken();\n if (typeof decoded.iss === \"undefined\") {\n throw new Error(\"No issuer found\");\n }\n\n return decoded.iss as string;\n }\n\n async getIsExternal(): Promise {\n const decoded = await this.decodeToken();\n\n return Array.isArray(decoded.amr) && decoded.amr.includes(\"external\");\n }\n}\n","import { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { LogService } from \"../abstractions/log.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TotpService as TotpServiceAbstraction } from \"../abstractions/totp.service\";\nimport { Utils } from \"../misc/utils\";\n\nconst B32Chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nconst SteamChars = \"23456789BCDFGHJKMNPQRTVWXY\";\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(\n private cryptoFunctionService: CryptoFunctionService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: \"sha1\" | \"sha256\" | \"sha512\" = \"sha1\";\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf(\"otpauth://\") === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf(\"steam://\") === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has(\"digits\") && params.get(\"digits\") != null) {\n try {\n const digitParams = parseInt(params.get(\"digits\").trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch {\n this.logService.error(\"Invalid digits param.\");\n }\n }\n if (params.has(\"period\") && params.get(\"period\") != null) {\n try {\n const periodParam = parseInt(params.get(\"period\").trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch {\n this.logService.error(\"Invalid period param.\");\n }\n }\n if (params.has(\"secret\") && params.get(\"secret\") != null) {\n keyB32 = params.get(\"secret\");\n }\n if (params.has(\"algorithm\") && params.get(\"algorithm\") != null) {\n const algParam = params.get(\"algorithm\").toLowerCase();\n if (algParam === \"sha1\" || algParam === \"sha256\" || algParam === \"sha512\") {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr(\"steam://\".length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, \"0\");\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n const offset = hash[hash.length - 1] & 0xf;\n const binary =\n ((hash[offset] & 0x7f) << 24) |\n ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) |\n (hash[offset + 3] & 0xff);\n\n let otp = \"\";\n if (isSteamAuth) {\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, \"0\");\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf(\"otpauth://\") === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has(\"period\") && params.get(\"period\") != null) {\n try {\n period = parseInt(params.get(\"period\").trim(), null);\n } catch {\n this.logService.error(\"Invalid period param.\");\n }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.stateService.getDisableAutoTotpCopy());\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? \"0\" : \"\") + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = \"\";\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = \"\";\n let hex = \"\";\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, \"0\");\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(\n keyBytes: Uint8Array,\n timeBytes: Uint8Array,\n alg: \"sha1\" | \"sha256\" | \"sha512\"\n ) {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { I18nService } from \"../abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport {\n TwoFactorProviderDetails,\n TwoFactorService as TwoFactorServiceAbstraction,\n} from \"../abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"../enums/twoFactorProviderType\";\nimport { IdentityTwoFactorResponse } from \"../models/response/identityTwoFactorResponse\";\n\nexport const TwoFactorProviders: Partial> =\n {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: \"Duo\",\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: \"Duo (Organization)\",\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n [TwoFactorProviderType.WebAuthn]: {\n type: TwoFactorProviderType.WebAuthn,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n };\n\nexport class TwoFactorService implements TwoFactorServiceAbstraction {\n private twoFactorProvidersData: Map;\n private selectedTwoFactorProviderType: TwoFactorProviderType = null;\n\n constructor(\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t(\"emailTitle\");\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t(\"emailDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name =\n this.i18nService.t(\"authenticatorAppTitle\");\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t(\"authenticatorAppDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t(\"duoDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n \"Duo (\" + this.i18nService.t(\"organization\") + \")\";\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t(\"duoOrganizationDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].name = this.i18nService.t(\"webAuthnTitle\");\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].description =\n this.i18nService.t(\"webAuthnDesc\");\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t(\"yubiKeyTitle\");\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description =\n this.i18nService.t(\"yubiKeyDesc\");\n }\n\n getSupportedProviders(win: Window): TwoFactorProviderDetails[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) &&\n this.platformUtilsService.supportsDuo()\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (\n this.twoFactorProvidersData.has(TwoFactorProviderType.WebAuthn) &&\n this.platformUtilsService.supportsWebAuthn(win)\n ) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.WebAuthn]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultProvider(webAuthnSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (\n this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)\n ) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((_value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.WebAuthn && !webAuthnSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n setSelectedProvider(type: TwoFactorProviderType) {\n this.selectedTwoFactorProviderType = type;\n }\n\n clearSelectedProvider() {\n this.selectedTwoFactorProviderType = null;\n }\n\n setProviders(response: IdentityTwoFactorResponse) {\n this.twoFactorProvidersData = response.twoFactorProviders2;\n }\n\n clearProviders() {\n this.twoFactorProvidersData = null;\n }\n\n getProviders() {\n return this.twoFactorProvidersData;\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { I18nService } from \"../abstractions/i18n.service\";\nimport { UserVerificationService as UserVerificationServiceAbstraction } from \"../abstractions/userVerification.service\";\nimport { VerificationType } from \"../enums/verificationType\";\nimport { VerifyOTPRequest } from \"../models/request/account/verifyOTPRequest\";\nimport { SecretVerificationRequest } from \"../models/request/secretVerificationRequest\";\nimport { Verification } from \"../types/verification\";\n\n/**\n * Used for general-purpose user verification throughout the app.\n * Use it to verify the input collected by UserVerificationComponent.\n */\nexport class UserVerificationService implements UserVerificationServiceAbstraction {\n constructor(\n private cryptoService: CryptoService,\n private i18nService: I18nService,\n private apiService: ApiService\n ) {}\n\n /**\n * Create a new request model to be used for server-side verification\n * @param verification User-supplied verification data (Master Password or OTP)\n * @param requestClass The request model to create\n * @param alreadyHashed Whether the master password is already hashed\n */\n async buildRequest(\n verification: Verification,\n requestClass?: new () => T,\n alreadyHashed?: boolean\n ) {\n this.validateInput(verification);\n\n const request =\n requestClass != null ? new requestClass() : (new SecretVerificationRequest() as T);\n\n if (verification.type === VerificationType.OTP) {\n request.otp = verification.secret;\n } else {\n request.masterPasswordHash = alreadyHashed\n ? verification.secret\n : await this.cryptoService.hashPassword(verification.secret, null);\n }\n\n return request;\n }\n\n /**\n * Used to verify the Master Password client-side, or send the OTP to the server for verification (with no other data)\n * Generally used for client-side verification only.\n * @param verification User-supplied verification data (Master Password or OTP)\n */\n async verifyUser(verification: Verification): Promise {\n this.validateInput(verification);\n\n if (verification.type === VerificationType.OTP) {\n const request = new VerifyOTPRequest(verification.secret);\n try {\n await this.apiService.postAccountVerifyOTP(request);\n } catch (e) {\n throw new Error(this.i18nService.t(\"invalidVerificationCode\"));\n }\n } else {\n const passwordValid = await this.cryptoService.compareAndUpdateKeyHash(\n verification.secret,\n null\n );\n if (!passwordValid) {\n throw new Error(this.i18nService.t(\"invalidMasterPassword\"));\n }\n }\n return true;\n }\n\n async requestOTP() {\n await this.apiService.postAccountRequestOTP();\n }\n\n private validateInput(verification: Verification) {\n if (verification?.secret == null || verification.secret === \"\") {\n if (verification.type === VerificationType.OTP) {\n throw new Error(this.i18nService.t(\"verificationCodeRequired\"));\n } else {\n throw new Error(this.i18nService.t(\"masterPassRequired\"));\n }\n }\n }\n}\n","import { ApiService } from \"../abstractions/api.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { UsernameGenerationService as BaseUsernameGenerationService } from \"../abstractions/usernameGeneration.service\";\nimport { EEFLongWordList } from \"../misc/wordlist\";\n\nconst DefaultOptions = {\n type: \"word\",\n wordCapitalize: true,\n wordIncludeNumber: true,\n subaddressType: \"random\",\n catchallType: \"random\",\n forwardedService: \"simplelogin\",\n forwardedAnonAddyDomain: \"anonaddy.me\",\n};\n\nexport class UsernameGenerationService implements BaseUsernameGenerationService {\n constructor(\n private cryptoService: CryptoService,\n private stateService: StateService,\n private apiService: ApiService\n ) {}\n\n generateUsername(options: any): Promise {\n if (options.type === \"catchall\") {\n return this.generateCatchall(options);\n } else if (options.type === \"subaddress\") {\n return this.generateSubaddress(options);\n } else if (options.type === \"forwarded\") {\n return this.generateForwarded(options);\n } else {\n return this.generateWord(options);\n }\n }\n\n async generateWord(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.wordCapitalize == null) {\n o.wordCapitalize = true;\n }\n if (o.wordIncludeNumber == null) {\n o.wordIncludeNumber = true;\n }\n\n const wordIndex = await this.cryptoService.randomNumber(0, EEFLongWordList.length - 1);\n let word = EEFLongWordList[wordIndex];\n if (o.wordCapitalize) {\n word = word.charAt(0).toUpperCase() + word.slice(1);\n }\n if (o.wordIncludeNumber) {\n const num = await this.cryptoService.randomNumber(1, 9999);\n word = word + this.zeroPad(num.toString(), 4);\n }\n return word;\n }\n\n async generateSubaddress(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n const subaddressEmail = o.subaddressEmail;\n if (subaddressEmail == null || subaddressEmail.length < 3) {\n return o.subaddressEmail;\n }\n const atIndex = subaddressEmail.indexOf(\"@\");\n if (atIndex < 1 || atIndex >= subaddressEmail.length - 1) {\n return subaddressEmail;\n }\n if (o.subaddressType == null) {\n o.subaddressType = \"random\";\n }\n\n const emailBeginning = subaddressEmail.substr(0, atIndex);\n const emailEnding = subaddressEmail.substr(atIndex + 1, subaddressEmail.length);\n\n let subaddressString = \"\";\n if (o.subaddressType === \"random\") {\n subaddressString = await this.randomString(8);\n } else if (o.subaddressType === \"website-name\") {\n subaddressString = o.website;\n }\n return emailBeginning + \"+\" + subaddressString + \"@\" + emailEnding;\n }\n\n async generateCatchall(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.catchallDomain == null || o.catchallDomain === \"\") {\n return null;\n }\n if (o.catchallType == null) {\n o.catchallType = \"random\";\n }\n\n let startString = \"\";\n if (o.catchallType === \"random\") {\n startString = await this.randomString(8);\n } else if (o.catchallType === \"website-name\") {\n startString = o.website;\n }\n return startString + \"@\" + o.catchallDomain;\n }\n\n async generateForwarded(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.forwardedService == null) {\n return null;\n }\n\n if (o.forwardedService === \"simplelogin\") {\n if (o.forwardedSimpleLoginApiKey == null || o.forwardedSimpleLoginApiKey === \"\") {\n return null;\n }\n return this.generateSimpleLoginAlias(o.forwardedSimpleLoginApiKey, o.website);\n } else if (o.forwardedService === \"anonaddy\") {\n if (\n o.forwardedAnonAddyApiToken == null ||\n o.forwardedAnonAddyApiToken === \"\" ||\n o.forwardedAnonAddyDomain == null ||\n o.forwardedAnonAddyDomain == \"\"\n ) {\n return null;\n }\n return this.generateAnonAddyAlias(\n o.forwardedAnonAddyApiToken,\n o.forwardedAnonAddyDomain,\n o.website\n );\n } else if (o.forwardedService === \"firefoxrelay\") {\n if (o.forwardedFirefoxApiToken == null || o.forwardedFirefoxApiToken === \"\") {\n return null;\n }\n return this.generateFirefoxRelayAlias(o.forwardedFirefoxApiToken, o.website);\n }\n\n return null;\n }\n\n async getOptions(): Promise {\n let options = await this.stateService.getUsernameGenerationOptions();\n if (options == null) {\n options = Object.assign({}, DefaultOptions);\n } else {\n options = Object.assign({}, DefaultOptions, options);\n }\n await this.stateService.setUsernameGenerationOptions(options);\n return options;\n }\n\n async saveOptions(options: any) {\n await this.stateService.setUsernameGenerationOptions(options);\n }\n\n private async randomString(length: number) {\n let str = \"\";\n const charSet = \"abcdefghijklmnopqrstuvwxyz1234567890\";\n for (let i = 0; i < length; i++) {\n const randomCharIndex = await this.cryptoService.randomNumber(0, charSet.length - 1);\n str += charSet.charAt(randomCharIndex);\n }\n return str;\n }\n\n // ref: https://stackoverflow.com/a/10073788\n private zeroPad(number: string, width: number) {\n return number.length >= width\n ? number\n : new Array(width - number.length + 1).join(\"0\") + number;\n }\n\n private async generateSimpleLoginAlias(apiKey: string, website: string): Promise {\n if (apiKey == null || apiKey === \"\") {\n throw \"Invalid SimpleLogin API key.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authentication: apiKey,\n \"Content-Type\": \"application/json\",\n }),\n };\n let url = \"https://app.simplelogin.io/api/alias/random/new\";\n if (website != null) {\n url += \"?hostname=\" + website;\n }\n requestInit.body = JSON.stringify({\n note: (website != null ? \"Website: \" + website + \". \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json.alias;\n }\n if (response.status === 401) {\n throw \"Invalid SimpleLogin API key.\";\n }\n try {\n const json = await response.json();\n if (json?.error != null) {\n throw \"SimpleLogin error:\" + json.error;\n }\n } catch {\n // Do nothing...\n }\n throw \"Unknown SimpleLogin error occurred.\";\n }\n\n private async generateAnonAddyAlias(\n apiToken: string,\n domain: string,\n websiteNote: string\n ): Promise {\n if (apiToken == null || apiToken === \"\") {\n throw \"Invalid AnonAddy API token.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authorization: \"Bearer \" + apiToken,\n \"Content-Type\": \"application/json\",\n }),\n };\n const url = \"https://app.anonaddy.com/api/v1/aliases\";\n requestInit.body = JSON.stringify({\n domain: domain,\n description:\n (websiteNote != null ? \"Website: \" + websiteNote + \". \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json?.data?.email;\n }\n if (response.status === 401) {\n throw \"Invalid AnonAddy API token.\";\n }\n throw \"Unknown AnonAddy error occurred.\";\n }\n\n private async generateFirefoxRelayAlias(apiToken: string, website: string): Promise {\n if (apiToken == null || apiToken === \"\") {\n throw \"Invalid Firefox Relay API token.\";\n }\n const requestInit: RequestInit = {\n redirect: \"manual\",\n cache: \"no-store\",\n method: \"POST\",\n headers: new Headers({\n Authorization: \"Token \" + apiToken,\n \"Content-Type\": \"application/json\",\n }),\n };\n const url = \"https://relay.firefox.com/api/v1/relayaddresses/\";\n requestInit.body = JSON.stringify({\n enabled: true,\n generated_for: website,\n description: (website != null ? website + \" - \" : \"\") + \"Generated by Bitwarden.\",\n });\n const request = new Request(url, requestInit);\n const response = await this.apiService.nativeFetch(request);\n if (response.status === 200 || response.status === 201) {\n const json = await response.json();\n return json?.full_address;\n }\n if (response.status === 401) {\n throw \"Invalid Firefox Relay API token.\";\n }\n throw \"Unknown Firefox Relay error occurred.\";\n }\n}\n","import { AuthService } from \"../abstractions/auth.service\";\nimport { CipherService } from \"../abstractions/cipher.service\";\nimport { CollectionService } from \"../abstractions/collection.service\";\nimport { CryptoService } from \"../abstractions/crypto.service\";\nimport { FolderService } from \"../abstractions/folder.service\";\nimport { KeyConnectorService } from \"../abstractions/keyConnector.service\";\nimport { MessagingService } from \"../abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"../abstractions/platformUtils.service\";\nimport { PolicyService } from \"../abstractions/policy.service\";\nimport { SearchService } from \"../abstractions/search.service\";\nimport { StateService } from \"../abstractions/state.service\";\nimport { TokenService } from \"../abstractions/token.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"../abstractions/vaultTimeout.service\";\nimport { AuthenticationStatus } from \"../enums/authenticationStatus\";\nimport { PolicyType } from \"../enums/policyType\";\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n private inited = false;\n\n constructor(\n private cipherService: CipherService,\n private folderService: FolderService,\n private collectionService: CollectionService,\n private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService,\n private searchService: SearchService,\n private tokenService: TokenService,\n private policyService: PolicyService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private authService: AuthService,\n private lockedCallback: (userId?: string) => Promise = null,\n private loggedOutCallback: (expired: boolean, userId?: string) => Promise = null\n ) {}\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n return;\n }\n\n for (const userId in this.stateService.accounts.getValue()) {\n if (userId != null && (await this.shouldLock(userId))) {\n await this.executeTimeoutAction(userId);\n }\n }\n }\n\n async lock(allowSoftLock = false, userId?: string): Promise {\n const authed = await this.stateService.getIsAuthenticated({ userId: userId });\n if (!authed) {\n return;\n }\n\n if (await this.keyConnectorService.getUsesKeyConnector()) {\n const pinSet = await this.isPinLockSet();\n const pinLock =\n (pinSet[0] && (await this.stateService.getDecryptedPinProtected()) != null) || pinSet[1];\n\n if (!pinLock && !(await this.isBiometricLockSet())) {\n await this.logOut(userId);\n }\n }\n\n if (userId == null || userId === (await this.stateService.getUserId())) {\n this.searchService.clearIndex();\n }\n\n await this.stateService.setEverBeenUnlocked(true, { userId: userId });\n await this.stateService.setBiometricLocked(true, { userId: userId });\n await this.stateService.setCryptoMasterKeyAuto(null, { userId: userId });\n\n await this.cryptoService.clearKey(false, userId);\n await this.cryptoService.clearOrgKeys(true, userId);\n await this.cryptoService.clearKeyPair(true, userId);\n await this.cryptoService.clearEncKey(true, userId);\n\n await this.folderService.clearCache(userId);\n await this.cipherService.clearCache(userId);\n await this.collectionService.clearCache(userId);\n\n this.messagingService.send(\"locked\", { userId: userId });\n\n if (this.lockedCallback != null) {\n await this.lockedCallback(userId);\n }\n }\n\n async logOut(userId?: string): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback(false, userId);\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.stateService.setVaultTimeout(timeout);\n\n // We swap these tokens from being on disk for lock actions, and in memory for logout actions\n // Get them here to set them to their new location after changing the timeout action and clearing if needed\n const token = await this.tokenService.getToken();\n const refreshToken = await this.tokenService.getRefreshToken();\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n\n const currentAction = await this.stateService.getVaultTimeoutAction();\n if ((timeout != null || timeout === 0) && action === \"logOut\" && action !== currentAction) {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.tokenService.clearToken();\n }\n\n await this.stateService.setVaultTimeoutAction(action);\n\n await this.tokenService.setToken(token);\n await this.tokenService.setRefreshToken(refreshToken);\n await this.tokenService.setClientId(clientId);\n await this.tokenService.setClientSecret(clientSecret);\n\n await this.cryptoService.toggleKey();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.stateService.getProtectedPin();\n const pinProtectedKey = await this.stateService.getEncryptedPinProtected();\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.stateService.getBiometricUnlock();\n }\n\n async getVaultTimeout(userId?: string): Promise {\n const vaultTimeout = await this.stateService.getVaultTimeout({ userId: userId });\n\n if (\n await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout, null, userId)\n ) {\n const policy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout, userId);\n // Remove negative values, and ensure it's smaller than maximum allowed value according to policy\n let timeout = Math.min(vaultTimeout, policy[0].data.minutes);\n\n if (vaultTimeout == null || timeout < 0) {\n timeout = policy[0].data.minutes;\n }\n\n // We really shouldn't need to set the value here, but multiple services relies on this value being correct.\n if (vaultTimeout !== timeout) {\n await this.stateService.setVaultTimeout(timeout, { userId: userId });\n }\n\n return timeout;\n }\n\n return vaultTimeout;\n }\n\n async clear(userId?: string): Promise {\n await this.stateService.setEverBeenUnlocked(false, { userId: userId });\n await this.stateService.setDecryptedPinProtected(null, { userId: userId });\n await this.stateService.setProtectedPin(null, { userId: userId });\n }\n\n private async shouldLock(userId: string): Promise {\n const authStatus = await this.authService.getAuthStatus(userId);\n if (\n authStatus === AuthenticationStatus.Locked ||\n authStatus === AuthenticationStatus.LoggedOut\n ) {\n return false;\n }\n\n const vaultTimeout = await this.getVaultTimeout(userId);\n if (vaultTimeout == null || vaultTimeout < 0) {\n return false;\n }\n\n const lastActive = await this.stateService.getLastActive({ userId: userId });\n if (lastActive == null) {\n return false;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = (new Date().getTime() - lastActive) / 1000;\n return diffSeconds >= vaultTimeoutSeconds;\n }\n\n private async executeTimeoutAction(userId: string): Promise {\n const timeoutAction = await this.stateService.getVaultTimeoutAction({ userId: userId });\n timeoutAction === \"logOut\" ? await this.logOut(userId) : await this.lock(true, userId);\n }\n}\n","import * as forge from \"node-forge\";\n\nimport { CryptoFunctionService } from \"../abstractions/cryptoFunction.service\";\nimport { Utils } from \"../misc/utils\";\nimport { DecryptParameters } from \"../models/domain/decryptParameters\";\nimport { SymmetricCryptoKey } from \"../models/domain/symmetricCryptoKey\";\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n\n constructor(win: Window) {\n this.crypto = typeof win.crypto !== \"undefined\" ? win.crypto : null;\n this.subtle =\n !!this.crypto && typeof win.crypto.subtle !== \"undefined\" ? win.crypto.subtle : null;\n }\n\n async pbkdf2(\n password: string | ArrayBuffer,\n salt: string | ArrayBuffer,\n algorithm: \"sha256\" | \"sha512\",\n iterations: number\n ): Promise {\n const wcLen = algorithm === \"sha256\" ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: \"PBKDF2\",\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\n \"raw\",\n passwordBuf,\n { name: \"PBKDF2\" } as any,\n false,\n [\"deriveBits\"]\n );\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(\n ikm: ArrayBuffer,\n salt: string | ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: \"HKDF\",\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\"raw\", ikm, { name: \"HKDF\" } as any, false, [\n \"deriveBits\",\n ]);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(\n prk: ArrayBuffer,\n info: string | ArrayBuffer,\n outputByteSize: number,\n algorithm: \"sha256\" | \"sha512\"\n ): Promise {\n const hashLen = algorithm === \"sha256\" ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error(\"outputByteSize is too large.\");\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error(\"prk is too small.\");\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(\n value: string | ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"\n ): Promise {\n if (algorithm === \"md5\") {\n const md = algorithm === \"md5\" ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, \"raw\");\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(\n value: ArrayBuffer,\n key: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\" | \"sha512\"\n ): Promise {\n const signingAlgorithm = {\n name: \"HMAC\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey(\"raw\", key, signingAlgorithm, false, [\"sign\"]);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: \"HMAC\",\n hash: { name: \"SHA-256\" },\n };\n const impKey = await this.subtle.importKey(\"raw\", macKey, signingAlgorithm, false, [\"sign\"]);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: \"sha1\" | \"sha256\" | \"sha512\"): Promise {\n const hmac = forge.hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = forge.hmac.create();\n hmac.start(\"sha256\", macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" } as any, false, [\n \"encrypt\",\n ]);\n return await this.subtle.encrypt({ name: \"AES-CBC\", iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(\n data: string,\n iv: string,\n mac: string,\n key: SymmetricCryptoKey\n ): DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = forge.util.createBuffer(parameters.data);\n const decipher = forge.cipher.createDecipher(\"AES-CBC\", parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString();\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey(\"raw\", key, { name: \"AES-CBC\" } as any, false, [\n \"decrypt\",\n ]);\n return await this.subtle.decrypt({ name: \"AES-CBC\", iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(\n data: ArrayBuffer,\n publicKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: \"RSA-OAEP\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey(\"spki\", publicKey, rsaParams, false, [\"encrypt\"]);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(\n data: ArrayBuffer,\n privateKey: ArrayBuffer,\n algorithm: \"sha1\" | \"sha256\"\n ): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: \"RSA-OAEP\",\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey(\"pkcs8\", privateKey, rsaParams, false, [\"decrypt\"]);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: \"RSA-OAEP\",\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm(\"sha1\") },\n };\n const impPrivateKey = await this.subtle.importKey(\"pkcs8\", privateKey, rsaParams, true, [\n \"decrypt\",\n ]);\n const jwkPrivateKey = await this.subtle.exportKey(\"jwk\", impPrivateKey);\n const jwkPublicKeyParams = {\n kty: \"RSA\",\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: \"RSA-OAEP\",\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey(\"jwk\", jwkPublicKeyParams, rsaParams, true, [\n \"encrypt\",\n ]);\n return await this.subtle.exportKey(\"spki\", impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: \"RSA-OAEP\",\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm(\"sha1\") },\n };\n const keyPair = (await this.subtle.generateKey(rsaParams, true, [\n \"encrypt\",\n \"decrypt\",\n ])) as CryptoKeyPair;\n const publicKey = await this.subtle.exportKey(\"spki\", keyPair.publicKey);\n const privateKey = await this.subtle.exportKey(\"pkcs8\", keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof value === \"string\") {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof value === \"string\") {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: \"sha1\" | \"sha256\" | \"sha512\" | \"md5\"): string {\n if (algorithm === \"md5\") {\n throw new Error(\"MD5 is not supported in WebCrypto.\");\n }\n return algorithm === \"sha1\" ? \"SHA-1\" : algorithm === \"sha256\" ? \"SHA-256\" : \"SHA-512\";\n }\n}\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from \"@angular/core\";\n\ntype BadgeTypes = \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\" | \"info\";\n\nconst styles: Record = {\n primary: [\"tw-bg-primary-500\"],\n secondary: [\"tw-bg-text-muted\"],\n success: [\"tw-bg-success-500\"],\n danger: [\"tw-bg-danger-500\"],\n warning: [\"tw-bg-warning-500\"],\n info: [\"tw-bg-info-500\"],\n};\n\nconst hoverStyles: Record = {\n primary: [\"hover:tw-bg-primary-700\"],\n secondary: [\"hover:tw-bg-secondary-700\"],\n success: [\"hover:tw-bg-success-700\"],\n danger: [\"hover:tw-bg-danger-700\"],\n warning: [\"hover:tw-bg-warning-700\"],\n info: [\"hover:tw-bg-info-700\"],\n};\n\n@Directive({\n selector: \"span[bit-badge], a[bit-badge], button[bit-badge]\",\n})\nexport class BadgeComponent implements OnInit, OnChanges {\n @HostBinding(\"class\") @Input(\"class\") classList = \"\";\n\n @Input() badgeType: BadgeTypes = \"primary\";\n\n private isSpan = false;\n\n constructor(private el: ElementRef) {\n this.isSpan = el?.nativeElement?.nodeName == \"SPAN\";\n }\n\n ngOnInit(): void {\n this.classList = this.classes.join(\" \");\n }\n\n ngOnChanges() {\n this.ngOnInit();\n }\n\n get classes() {\n return [\n \"tw-inline-block\",\n \"tw-py-1\",\n \"tw-px-1.5\",\n \"tw-font-bold\",\n \"tw-leading-none\",\n \"tw-text-center\",\n \"!tw-text-contrast\",\n \"tw-rounded\",\n \"tw-border-none\",\n \"tw-box-border\",\n \"tw-whitespace-no-wrap\",\n \"tw-text-xs\",\n \"hover:tw-no-underline\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n ]\n .concat(styles[this.badgeType])\n .concat(this.isSpan ? [] : hoverStyles[this.badgeType]);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { BadgeComponent } from \"./badge.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [BadgeComponent],\n declarations: [BadgeComponent],\n})\nexport class BadgeModule {}\n","export * from \"./badge.component\";\nexport * from \"./badge.module\";\n","import { Component, Input, OnInit, Output, EventEmitter } from \"@angular/core\";\n\ntype BannerTypes = \"premium\" | \"info\" | \"warning\" | \"danger\";\n\nconst defaultIcon: Record = {\n premium: \"bwi-star\",\n info: \"bwi-info-circle\",\n warning: \"bwi-exclamation-triangle\",\n danger: \"bwi-error\",\n};\n\n@Component({\n selector: \"bit-banner\",\n templateUrl: \"./banner.component.html\",\n})\nexport class BannerComponent implements OnInit {\n @Input(\"bannerType\") bannerType: BannerTypes = \"info\";\n @Input() icon: string;\n @Input() useAlertRole = true;\n\n @Output() onClose = new EventEmitter();\n\n ngOnInit(): void {\n this.icon ??= defaultIcon[this.bannerType];\n }\n\n get bannerClass() {\n switch (this.bannerType) {\n case \"danger\":\n return \"tw-bg-danger-500\";\n case \"info\":\n return \"tw-bg-info-500\";\n case \"premium\":\n return \"tw-bg-success-500\";\n case \"warning\":\n return \"tw-bg-warning-500\";\n }\n }\n}\n","\n \n \n \n \n \n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { BannerComponent } from \"./banner.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [BannerComponent],\n declarations: [BannerComponent],\n})\nexport class BannerModule {}\n","export * from \"./banner.component\";\nexport * from \"./banner.module\";\n","import { Input, HostBinding, OnChanges, Directive, OnInit } from \"@angular/core\";\n\nexport type ButtonTypes = \"primary\" | \"secondary\" | \"danger\";\n\nconst buttonStyles: Record = {\n primary: [\n \"tw-border-primary-500\",\n \"tw-bg-primary-500\",\n \"!tw-text-contrast\",\n \"hover:tw-bg-primary-700\",\n \"hover:tw-border-primary-700\",\n \"focus:tw-bg-primary-700\",\n \"focus:tw-border-primary-700\",\n ].join(\" \"),\n secondary: [\n \"tw-bg-transparent\",\n \"tw-border-text-muted\",\n \"!tw-text-muted\",\n \"hover:tw-bg-secondary-500\",\n \"hover:tw-border-secondary-500\",\n \"hover:!tw-text-contrast\",\n \"focus:tw-bg-secondary-500\",\n \"focus:tw-border-secondary-500\",\n \"focus:!tw-text-contrast\",\n ].join(\" \"),\n danger: [\n \"tw-bg-transparent\",\n \"tw-border-danger-500\",\n \"!tw-text-danger\",\n \"hover:tw-bg-danger-500\",\n \"hover:tw-border-danger-500\",\n \"hover:!tw-text-contrast\",\n \"focus:tw-bg-danger-500\",\n \"focus:tw-border-danger-500\",\n \"focus:!tw-text-contrast\",\n ].join(\" \"),\n};\n\n@Directive({\n selector: \"button[bit-button], a[bit-button]\",\n})\nexport class ButtonComponent implements OnInit, OnChanges {\n @HostBinding(\"class\") @Input() classList = \"\";\n\n @Input()\n buttonType: ButtonTypes = \"secondary\";\n\n @Input()\n block = false;\n\n ngOnInit(): void {\n this.classList = this.classes.join(\" \");\n }\n\n ngOnChanges() {\n this.ngOnInit();\n }\n\n get classes(): string[] {\n return [\n \"tw-font-semibold\",\n \"tw-py-1.5\",\n \"tw-px-3\",\n \"tw-rounded\",\n \"tw-transition\",\n \"tw-border\",\n \"tw-border-solid\",\n \"tw-text-center\",\n \"hover:tw-no-underline\",\n \"disabled:tw-bg-secondary-100\",\n \"disabled:tw-border-secondary-100\",\n \"disabled:!tw-text-main\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n this.block ? \"tw-w-full tw-block\" : \"tw-inline-block\",\n buttonStyles[this.buttonType ?? \"secondary\"],\n ];\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { ButtonComponent } from \"./button.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [ButtonComponent],\n declarations: [ButtonComponent],\n})\nexport class ButtonModule {}\n","export * from \"./button.component\";\nexport * from \"./button.module\";\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\ntype CalloutTypes = \"success\" | \"info\" | \"warning\" | \"danger\";\n\nconst defaultIcon: Record = {\n success: \"bwi-check\",\n info: \"bwi-info-circle\",\n warning: \"bwi-exclamation-triangle\",\n danger: \"bwi-error\",\n};\n\nconst defaultI18n: Partial> = {\n warning: \"warning\",\n danger: \"error\",\n};\n\n@Component({\n selector: \"bit-callout\",\n templateUrl: \"callout.component.html\",\n})\nexport class CalloutComponent implements OnInit {\n @Input() type: CalloutTypes = \"info\";\n @Input() icon: string;\n @Input() title: string;\n @Input() useAlertRole = false;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit() {\n this.icon ??= defaultIcon[this.type];\n if (this.title == null && defaultI18n[this.type] != null) {\n this.title = this.i18nService.t(defaultI18n[this.type]);\n }\n }\n\n get calloutClass() {\n switch (this.type) {\n case \"danger\":\n return \"tw-border-l-danger-500\";\n case \"info\":\n return \"tw-border-l-info-500\";\n case \"success\":\n return \"tw-border-l-success-500\";\n case \"warning\":\n return \"tw-border-l-warning-500\";\n }\n }\n\n get headerClass() {\n switch (this.type) {\n case \"danger\":\n return \"!tw-text-danger\";\n case \"info\":\n return \"!tw-text-info\";\n case \"success\":\n return \"!tw-text-success\";\n case \"warning\":\n return \"!tw-text-warning\";\n }\n }\n}\n","\n \n \n {{ title }}\n \n \n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { CalloutComponent } from \"./callout.component\";\n\n@NgModule({\n imports: [CommonModule],\n exports: [CalloutComponent],\n declarations: [CalloutComponent],\n})\nexport class CalloutModule {}\n","export * from \"./callout.module\";\nexport * from \"./callout.component\";\n","export * from \"./badge\";\nexport * from \"./banner\";\nexport * from \"./button\";\nexport * from \"./callout\";\nexport * from \"./menu\";\n","export * from \"./menu.module\";\nexport * from \"./menu.component\";\nexport * from \"./menu-trigger-for.directive\";\nexport * from \"./menu-item.component\";\nexport * from \"./menu-divider.component\";\n","import { Component } from \"@angular/core\";\n\n@Component({\n selector: \"bit-menu-divider\",\n templateUrl: \"./menu-divider.component.html\",\n})\nexport class MenuDividerComponent {}\n","\n","import { FocusableOption } from \"@angular/cdk/a11y\";\nimport { Component, ElementRef, HostBinding } from \"@angular/core\";\n\n@Component({\n selector: \"[bit-menu-item]\",\n template: ``,\n})\nexport class MenuItemComponent implements FocusableOption {\n @HostBinding(\"class\") classList = [\n \"tw-block\",\n \"tw-py-1\",\n \"tw-px-4\",\n \"!tw-text-main\",\n \"!tw-no-underline\",\n \"tw-cursor-pointer\",\n \"tw-border-none\",\n \"tw-bg-background\",\n \"tw-text-left\",\n \"hover:tw-bg-secondary-100\",\n \"focus:tw-bg-secondary-100\",\n \"focus:tw-z-50\",\n \"focus:tw-outline-none\",\n \"focus:tw-ring\",\n \"focus:tw-ring-offset-2\",\n \"focus:tw-ring-primary-700\",\n \"active:!tw-ring-0\",\n \"active:!tw-ring-offset-0\",\n ].join(\" \");\n @HostBinding(\"attr.role\") role = \"menuitem\";\n @HostBinding(\"tabIndex\") tabIndex = \"-1\";\n\n constructor(private elementRef: ElementRef) {}\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\nimport {\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { Observable, Subscription } from \"rxjs\";\nimport { filter, mergeWith } from \"rxjs/operators\";\n\nimport { MenuComponent } from \"./menu.component\";\n\n@Directive({\n selector: \"[bitMenuTriggerFor]\",\n})\nexport class MenuTriggerForDirective implements OnDestroy {\n @HostBinding(\"attr.aria-expanded\") isOpen = false;\n @HostBinding(\"attr.aria-haspopup\") hasPopup = \"menu\";\n @HostBinding(\"attr.role\") role = \"button\";\n\n @Input(\"bitMenuTriggerFor\") menu: MenuComponent;\n\n private overlayRef: OverlayRef;\n private defaultMenuConfig: OverlayConfig = {\n panelClass: \"bit-menu-panel\",\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions([\n {\n originX: \"start\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n },\n {\n originX: \"end\",\n originY: \"bottom\",\n overlayX: \"end\",\n overlayY: \"top\",\n },\n ])\n .withLockedPosition(true)\n .withFlexibleDimensions(false)\n .withPush(false),\n };\n private closedEventsSub: Subscription;\n private keyDownEventsSub: Subscription;\n\n constructor(\n private elementRef: ElementRef,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay\n ) {}\n\n @HostListener(\"click\") toggleMenu() {\n this.isOpen ? this.destroyMenu() : this.openMenu();\n }\n\n ngOnDestroy() {\n this.disposeAll();\n }\n\n private openMenu() {\n if (this.menu == null) {\n throw new Error(\"Cannot find bit-menu element\");\n }\n\n this.isOpen = true;\n this.overlayRef = this.overlay.create(this.defaultMenuConfig);\n\n const templatePortal = new TemplatePortal(this.menu.templateRef, this.viewContainerRef);\n this.overlayRef.attach(templatePortal);\n\n this.closedEventsSub = this.getClosedEvents().subscribe((event: KeyboardEvent | undefined) => {\n if (event?.key === \"Tab\") {\n // Required to ensure tab order resumes correctly\n this.elementRef.nativeElement.focus();\n }\n this.destroyMenu();\n });\n this.keyDownEventsSub = this.overlayRef\n .keydownEvents()\n .subscribe((event: KeyboardEvent) => this.menu.keyManager.onKeydown(event));\n }\n\n private destroyMenu() {\n if (this.overlayRef == null || !this.isOpen) {\n return;\n }\n\n this.isOpen = false;\n this.disposeAll();\n }\n\n private getClosedEvents(): Observable {\n const detachments = this.overlayRef.detachments();\n const escKey = this.overlayRef\n .keydownEvents()\n .pipe(filter((event: KeyboardEvent) => event.key === \"Escape\" || event.key === \"Tab\"));\n const backdrop = this.overlayRef.backdropClick();\n const menuClosed = this.menu.closed;\n\n return detachments.pipe(mergeWith(escKey, backdrop, menuClosed));\n }\n\n private disposeAll() {\n this.closedEventsSub?.unsubscribe();\n this.overlayRef?.dispose();\n this.keyDownEventsSub?.unsubscribe();\n }\n}\n","import { FocusKeyManager } from \"@angular/cdk/a11y\";\nimport {\n Component,\n Output,\n TemplateRef,\n ViewChild,\n EventEmitter,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from \"@angular/core\";\n\nimport { MenuItemComponent } from \"./menu-item.component\";\n\n@Component({\n selector: \"bit-menu\",\n templateUrl: \"./menu.component.html\",\n exportAs: \"menuComponent\",\n})\nexport class MenuComponent implements AfterContentInit {\n @ViewChild(TemplateRef) templateRef: TemplateRef;\n @Output() closed = new EventEmitter();\n @ContentChildren(MenuItemComponent, { descendants: true })\n menuItems: QueryList;\n keyManager: FocusKeyManager;\n\n ngAfterContentInit() {\n this.keyManager = new FocusKeyManager(this.menuItems).withWrap();\n }\n}\n","\n \n \n \n\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { MenuDividerComponent } from \"./menu-divider.component\";\nimport { MenuItemComponent } from \"./menu-item.component\";\nimport { MenuTriggerForDirective } from \"./menu-trigger-for.directive\";\nimport { MenuComponent } from \"./menu.component\";\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [MenuComponent, MenuTriggerForDirective, MenuItemComponent, MenuDividerComponent],\n exports: [MenuComponent, MenuTriggerForDirective, MenuItemComponent, MenuDividerComponent],\n})\nexport class MenuModule {}\n","import { StateService as BaseStateService } from \"jslib-common/abstractions/state.service\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\n\nimport { Account } from \"src/models/account\";\n\nexport abstract class StateService extends BaseStateService {\n getRememberEmail: (options?: StorageOptions) => Promise;\n setRememberEmail: (value: boolean, options?: StorageOptions) => Promise;\n}\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { EmergencyAccessAcceptRequest } from \"jslib-common/models/request/emergencyAccessAcceptRequest\";\n\nimport { BaseAcceptComponent } from \"../common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-emergency\",\n templateUrl: \"accept-emergency.component.html\",\n})\nexport class AcceptEmergencyComponent extends BaseAcceptComponent {\n name: string;\n\n protected requiredParameters: string[] = [\"id\", \"name\", \"email\", \"token\"];\n protected failedShortMessage = \"emergencyInviteAcceptFailedShort\";\n protected failedMessage = \"emergencyInviteAcceptFailed\";\n\n constructor(\n router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n route: ActivatedRoute,\n private apiService: ApiService,\n stateService: StateService\n ) {\n super(router, platformUtilsService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"emergencyInviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, \" \");\n }\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"emergencyAccess\" | i18n }}

\n
\n
\n

\n {{ name }}\n

\n

{{ \"acceptEmergencyAccess\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { OrganizationUserAcceptRequest } from \"jslib-common/models/request/organizationUserAcceptRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\n\nimport { BaseAcceptComponent } from \"../common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-organization\",\n templateUrl: \"accept-organization.component.html\",\n})\nexport class AcceptOrganizationComponent extends BaseAcceptComponent {\n orgName: string;\n\n protected requiredParameters: string[] = [\"organizationId\", \"organizationUserId\", \"token\"];\n\n constructor(\n router: Router,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n route: ActivatedRoute,\n private apiService: ApiService,\n stateService: StateService,\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private logService: LogService\n ) {\n super(router, platformUtilsService, i18nService, route, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n if (await this.performResetPasswordAutoEnroll(qParams)) {\n this.actionPromise = this.apiService\n .postOrganizationUserAccept(qParams.organizationId, qParams.organizationUserId, request)\n .then(() => {\n // Retrieve Public Key\n return this.apiService.getOrganizationKeys(qParams.organizationId);\n })\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create request and execute enrollment\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n qParams.organizationId,\n await this.stateService.getUserId(),\n resetRequest\n );\n });\n } else {\n this.actionPromise = this.apiService.postOrganizationUserAccept(\n qParams.organizationId,\n qParams.organizationUserId,\n request\n );\n }\n\n await this.actionPromise;\n this.platformUtilService.showToast(\n \"success\",\n this.i18nService.t(\"inviteAccepted\"),\n this.i18nService.t(\"inviteAcceptedDesc\"),\n { timeout: 10000 }\n );\n\n await this.stateService.setOrganizationInvitation(null);\n this.router.navigate([\"/vault\"]);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, \" \");\n }\n await this.stateService.setOrganizationInvitation(qParams);\n }\n\n private async performResetPasswordAutoEnroll(qParams: any): Promise {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(\n qParams.organizationId,\n qParams.token,\n qParams.email,\n qParams.organizationUserId\n );\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(\n policyList,\n qParams.organizationId\n );\n // Return true if policy enabled and auto-enroll enabled\n return result[1] && result[0].autoEnrollEnabled;\n }\n\n return false;\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"joinOrganization\" | i18n }}

\n
\n
\n

\n {{ orgName }}\n {{ email }}\n

\n

{{ \"joinOrganizationDesc\" | i18n }}

\n
\n
\n \n {{ \"logIn\" | i18n }}\n \n \n {{ \"createAccount\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { HintComponent as BaseHintComponent } from \"jslib-angular/components/hint.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-hint\",\n templateUrl: \"hint.component.html\",\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n apiService: ApiService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService\n ) {\n super(router, i18nService, apiService, platformUtilsService, logService);\n }\n}\n","\n
\n
\n

{{ \"passwordHint\" | i18n }}

\n
\n
\n
\n \n \n {{ \"enterEmailToGetHint\" | i18n }}\n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n\n","import { Component, NgZone } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { LockComponent as BaseLockComponent } from \"jslib-angular/components/lock.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\n\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-lock\",\n templateUrl: \"lock.component.html\",\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n messagingService: MessagingService,\n cryptoService: CryptoService,\n vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService,\n private routerService: RouterService,\n stateService: StateService,\n apiService: ApiService,\n logService: LogService,\n keyConnectorService: KeyConnectorService,\n ngZone: NgZone\n ) {\n super(\n router,\n i18nService,\n platformUtilsService,\n messagingService,\n cryptoService,\n vaultTimeoutService,\n environmentService,\n stateService,\n apiService,\n logService,\n keyConnectorService,\n ngZone\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.onSuccessfulSubmit = async () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl && previousUrl !== \"/\" && previousUrl.indexOf(\"lock\") === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigateByUrl(this.successRoute);\n };\n }\n}\n","
\n
\n
\n

\n \n

\n

{{ \"yourVaultIsLocked\" | i18n }}

\n
\n
\n
\n \n
\n \n \n \n \n
\n \n {{ \"loggedInAsEmailOn\" | i18n: email:webVaultHostname }}\n \n
\n
\n
\n \n {{ \"unlock\" | i18n }} \n \n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, NgZone } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { LoginComponent as BaseLoginComponent } from \"jslib-angular/components/login.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { StateService } from \"../../abstractions/state.service\";\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-login\",\n templateUrl: \"login.component.html\",\n})\nexport class LoginComponent extends BaseLoginComponent {\n showResetPasswordAutoEnrollWarning = false;\n enforcedPasswordPolicyOptions: MasterPasswordPolicyOptions;\n policies: ListResponse;\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService,\n cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService,\n private policyService: PolicyService,\n logService: LogService,\n ngZone: NgZone,\n protected stateService: StateService,\n private messagingService: MessagingService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n platformUtilsService,\n i18nService,\n stateService,\n environmentService,\n passwordGenerationService,\n cryptoFunctionService,\n logService,\n ngZone\n );\n this.onSuccessfulLogin = async () => {\n this.messagingService.send(\"setFullWidth\");\n };\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.email != null && qParams.email.indexOf(\"@\") > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.routerService.setPreviousUrl(\"/settings/premium\");\n } else if (qParams.org != null) {\n const route = this.router.createUrlTree([\"create-organization\"], {\n queryParams: { plan: qParams.org },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n const route = this.router.createUrlTree([\"setup/families-for-enterprise\"], {\n queryParams: { token: qParams.sponsorshipToken },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n await super.ngOnInit();\n this.rememberEmail = await this.stateService.getRememberEmail();\n });\n\n const invite = await this.stateService.getOrganizationInvitation();\n if (invite != null) {\n let policyList: Policy[] = null;\n try {\n this.policies = await this.apiService.getPoliciesByToken(\n invite.organizationId,\n invite.token,\n invite.email,\n invite.organizationUserId\n );\n policyList = this.policyService.mapPoliciesFromToken(this.policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const resetPasswordPolicy = this.policyService.getResetPasswordPolicyOptions(\n policyList,\n invite.organizationId\n );\n // Set to true if policy enabled and auto-enroll enabled\n this.showResetPasswordAutoEnrollWarning =\n resetPasswordPolicy[1] && resetPasswordPolicy[0].autoEnrollEnabled;\n\n this.enforcedPasswordPolicyOptions =\n await this.policyService.getMasterPasswordPolicyOptions(policyList);\n }\n }\n }\n\n async goAfterLogIn() {\n // Check master password against policy\n if (this.enforcedPasswordPolicyOptions != null) {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.masterPassword,\n this.getPasswordStrengthUserInput()\n );\n const masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n\n // If invalid, save policies and require update\n if (\n !this.policyService.evaluateMasterPassword(\n masterPasswordScore,\n this.masterPassword,\n this.enforcedPasswordPolicyOptions\n )\n ) {\n const policiesData: { [id: string]: PolicyData } = {};\n this.policies.data.map((p) => (policiesData[p.id] = new PolicyData(p)));\n await this.policyService.replace(policiesData);\n this.router.navigate([\"update-password\"]);\n return;\n }\n }\n\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl) {\n this.router.navigateByUrl(previousUrl);\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n\n async submit() {\n await this.stateService.setRememberEmail(this.rememberEmail);\n if (!this.rememberEmail) {\n await this.stateService.setRememberedEmail(null);\n }\n await super.submit();\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n return userInput;\n }\n}\n","
\n
\n
\n \"Bitwarden\"\n

{{ \"loginOrCreateNewAccount\" | i18n }}

\n
\n
\n \n {{ \"resetPasswordAutoEnrollInviteWarning\" | i18n }}\n \n
\n \n \n
\n
\n \n
\n \n \n \n \n
\n \n {{ \"getMasterPasswordHint\" | i18n }}\n \n
\n
\n \n \n
\n
\n \n
\n
\n
\n \n {{ \"logIn\" | i18n }} \n \n \n \n \n {{ \"createAccount\" | i18n }}\n \n
\n \n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { DeleteRecoverRequest } from \"jslib-common/models/request/deleteRecoverRequest\";\n\n@Component({\n selector: \"app-recover-delete\",\n templateUrl: \"recover-delete.component.html\",\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deleteRecoverEmailSent\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"deleteAccount\" | i18n }}

\n
\n
\n

{{ \"deleteRecoverDesc\" | i18n }}

\n
\n \n \n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorRecoveryRequest } from \"jslib-common/models/request/twoFactorRecoveryRequest\";\n\n@Component({\n selector: \"app-recover-two-factor\",\n templateUrl: \"recover-two-factor.component.html\",\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private cryptoService: CryptoService,\n private authService: AuthService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, \"\").toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"twoStepRecoverDisabled\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"recoverAccountTwoStep\" | i18n }}

\n
\n
\n

\n {{ \"recoverAccountTwoStepDesc\" | i18n }}\n {{ \"learnMore\" | i18n }}\n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { RegisterComponent as BaseRegisterComponent } from \"jslib-angular/components/register.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { ReferenceEventRequest } from \"jslib-common/models/request/referenceEventRequest\";\n\nimport { RouterService } from \"../services/router.service\";\n\n@Component({\n selector: \"app-register\",\n templateUrl: \"register.component.html\",\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = \"\";\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n cryptoService: CryptoService,\n apiService: ApiService,\n private route: ActivatedRoute,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService,\n environmentService: EnvironmentService,\n logService: LogService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n i18nService,\n cryptoService,\n apiService,\n stateService,\n platformUtilsService,\n passwordGenerationService,\n environmentService,\n logService\n );\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe((qParams) => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf(\"@\") > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.routerService.setPreviousUrl(\"/settings/premium\");\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n const route = this.router.createUrlTree([\"create-organization\"], {\n queryParams: { plan: qParams.org },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = (\"; \" + document.cookie)\n .split(\"; reference=\")\n .pop()\n .split(\";\")\n .shift();\n }\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n // After logging in redirect them to setup the families sponsorship\n const route = this.router.createUrlTree([\"setup/families-for-enterprise\"], {\n queryParams: { plan: qParams.sponsorshipToken },\n });\n this.routerService.setPreviousUrl(route.toString());\n }\n if (this.referenceData.id === \"\") {\n this.referenceData.id = null;\n }\n });\n const invite = await this.stateService.getOrganizationInvitation();\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(\n invite.organizationId,\n invite.token,\n invite.email,\n invite.organizationUserId\n );\n if (policies.data != null) {\n const policiesData = policies.data.map((p) => new PolicyData(p));\n this.policies = policiesData.map((p) => new Policy(p));\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(\n this.policies\n );\n }\n\n await super.ngOnInit();\n }\n\n async submit() {\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n this.masterPasswordScore,\n this.masterPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return;\n }\n\n await super.submit();\n }\n}\n","
\n \n \n
\n
\n
\n
\n
\n
\n \n\n
\n
\n
\n
\n \n \n

The Bitwarden Password Manager

\n

\n Trusted by millions of individuals, teams, and organizations worldwide for secure\n password storage and sharing.\n

\n

Store logins, secure notes, and more

\n

Collaborate and share securely

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

\n Start Your Teams
Enterprise Free Trial Now\n

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Collaborate and share securely

\n

Deploy and manage quickly and easily

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

\n Start Your Teams
Enterprise Free Trial Now\n

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Collaborate and share securely

\n

Deploy and manage quickly and easily

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n\n \n
\n

Start Your Premium Account Now

\n

\n Millions of individuals, teams, and organizations worldwide trust Bitwarden for secure\n password storage and sharing.\n

\n

Store logins, secure notes, and more

\n

Secure your account with advanced two-step login

\n

Access anywhere on any device

\n

Create your account to get started

\n
\n
\n
\n
\n
\n
\n

{{ \"createAccount\" | i18n }}

\n
\n
\n \n {{ \"createOrganizationCreatePersonalAccount\" | i18n }}\n \n
\n \n \n {{ \"emailAddressDesc\" | i18n }}\n
\n
\n \n \n {{ \"yourNameDesc\" | i18n }}\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n {{ \"masterPassDesc\" | i18n }}\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n {{ \"submit\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n \n
\n
\n \"No more excuses; start using Bitwarden today. The identity you save could be your\n own. The money definitely will be.\"\n
\n
\n
\n\n \n
\n
\n \n \n \n
\n
\n “Bitwarden boasts the backing of some of the world's best security experts and an\n attractive, easy-to-use interface”\n
\n
\n
\n \n \n \n \n \n \n \n \n \n\n","import { Component } from \"@angular/core\";\n\nimport { RemovePasswordComponent as BaseRemovePasswordComponent } from \"jslib-angular/components/remove-password.component\";\n\n@Component({\n selector: \"app-remove-password\",\n templateUrl: \"remove-password.component.html\",\n})\nexport class RemovePasswordComponent extends BaseRemovePasswordComponent {}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n
\n
\n
\n

{{ \"removeMasterPassword\" | i18n }}

\n
\n
\n
\n

{{ \"convertOrganizationEncryptionDesc\" | i18n: organization.name }}

\n\n \n \n {{ \"removeMasterPassword\" | i18n }}\n \n \n \n {{ \"leaveOrganization\" | i18n }}\n \n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { SetPasswordComponent as BaseSetPasswordComponent } from \"jslib-angular/components/set-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\n\n@Component({\n selector: \"app-set-password\",\n templateUrl: \"set-password.component.html\",\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n router: Router,\n syncService: SyncService,\n route: ActivatedRoute,\n stateService: StateService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n router,\n apiService,\n syncService,\n route,\n stateService\n );\n }\n}\n","
\n
\n
\n

{{ \"setMasterPassword\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n {{ \"ssoCompleteRegistration\" | i18n }}\n \n {{ \"resetPasswordAutoEnrollInviteWarning\" | i18n }}\n \n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n {{ \"masterPassDesc\" | i18n }}\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SsoComponent as BaseSsoComponent } from \"jslib-angular/components/sso.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-sso\",\n templateUrl: \"sso.component.html\",\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n route: ActivatedRoute,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService,\n environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService,\n logService: LogService\n ) {\n super(\n authService,\n router,\n i18nService,\n route,\n stateService,\n platformUtilsService,\n apiService,\n cryptoFunctionService,\n environmentService,\n passwordGenerationService,\n logService\n );\n this.redirectUri = window.location.origin + \"/sso-connector.html\";\n this.clientId = \"web\";\n }\n\n async ngOnInit() {\n super.ngOnInit();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.stateService.getSsoOrgIdentifier();\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n });\n }\n\n async submit() {\n await this.stateService.setSsoOrganizationIdentifier(this.identifier);\n if (this.clientId === \"browser\") {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t(\"ssoHandOff\")};SameSite=strict`;\n }\n super.submit();\n }\n}\n","\n
\n
\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ \"ssoLogInWithOrgIdentifier\" | i18n }}

\n
\n \n \n
\n
\n
\n \n {{ \"logIn\" | i18n }} \n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from \"jslib-angular/components/two-factor-options.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\n\n@Component({\n selector: \"app-two-factor-options\",\n templateUrl: \"two-factor-options.component.html\",\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(\n twoFactorService: TwoFactorService,\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService\n ) {\n super(twoFactorService, router, i18nService, platformUtilsService, window);\n }\n}\n","
\n
\n
\n
\n

{{ \"twoStepOptions\" | i18n }}

\n \n ×\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n

{{ p.name }}

\n {{ p.description }}\n
\n
\n \n {{ \"select\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n \"rc\n
\n
\n

{{ \"recoveryCodeTitle\" | i18n }}

\n {{ \"recoveryCodeDesc\" | i18n }}\n
\n
\n \n {{ \"select\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from \"jslib-angular/components/two-factor.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AppIdService } from \"jslib-common/abstractions/appId.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService } from \"jslib-common/abstractions/twoFactor.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nimport { RouterService } from \"../services/router.service\";\n\nimport { TwoFactorOptionsComponent } from \"./two-factor-options.component\";\n\n@Component({\n selector: \"app-two-factor\",\n templateUrl: \"two-factor.component.html\",\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild(\"twoFactorOptions\", { read: ViewContainerRef, static: true })\n twoFactorOptionsModal: ViewContainerRef;\n\n constructor(\n authService: AuthService,\n router: Router,\n i18nService: I18nService,\n apiService: ApiService,\n platformUtilsService: PlatformUtilsService,\n stateService: StateService,\n environmentService: EnvironmentService,\n private modalService: ModalService,\n route: ActivatedRoute,\n logService: LogService,\n twoFactorService: TwoFactorService,\n appIdService: AppIdService,\n private routerService: RouterService\n ) {\n super(\n authService,\n router,\n i18nService,\n apiService,\n platformUtilsService,\n window,\n environmentService,\n stateService,\n route,\n logService,\n twoFactorService,\n appIdService\n );\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async anotherMethod() {\n const [modal] = await this.modalService.openViewRef(\n TwoFactorOptionsComponent,\n this.twoFactorOptionsModal,\n (comp) => {\n comp.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n comp.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async goAfterLogIn() {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl) {\n this.router.navigateByUrl(previousUrl);\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n}\n","\n
\n \n

{{ title }}

\n
\n
\n \n

\n {{ \"enterVerificationCodeApp\" | i18n }}\n

\n

\n {{ \"enterVerificationCodeEmail\" | i18n: twoFactorEmail }}\n

\n
\n \n \n \n \n {{ \"sendVerificationCodeEmailAgain\" | i18n }}\n \n \n
\n \n \n

{{ \"insertYubiKey\" | i18n }}

\n \n \n \n \"\"\n \n
\n \n \n
\n
\n \n
\n \n
\n
\n \n
\n \n
\n \n \n
\n \n \n
\n \n

{{ \"noTwoStepProviders\" | i18n }}

\n

{{ \"noTwoStepProviders2\" | i18n }}

\n
\n
\n
\n \n
\n
\n \n \n {{ \"continue\" | i18n }}\n \n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n \n
\n
\n
\n \n\n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { UpdatePasswordComponent as BaseUpdatePasswordComponent } from \"jslib-angular/components/update-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\n@Component({\n selector: \"app-update-password\",\n templateUrl: \"update-password.component.html\",\n})\nexport class UpdatePasswordComponent extends BaseUpdatePasswordComponent {\n constructor(\n router: Router,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n apiService: ApiService,\n logService: LogService,\n stateService: StateService,\n userVerificationService: UserVerificationService\n ) {\n super(\n router,\n i18nService,\n platformUtilsService,\n passwordGenerationService,\n policyService,\n cryptoService,\n messagingService,\n apiService,\n stateService,\n userVerificationService,\n logService\n );\n }\n}\n","
\n
\n
\n

{{ \"updateMasterPassword\" | i18n }}

\n
\n
\n {{ \"masterPasswordInvalidWarning\" | i18n }} \n \n\n \n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from \"jslib-angular/components/update-temp-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\n\n@Component({\n selector: \"app-update-temp-password\",\n templateUrl: \"update-temp-password.component.html\",\n})\nexport class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent {\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService,\n policyService: PolicyService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n apiService: ApiService,\n logService: LogService,\n stateService: StateService,\n syncService: SyncService\n ) {\n super(\n i18nService,\n platformUtilsService,\n passwordGenerationService,\n policyService,\n cryptoService,\n messagingService,\n apiService,\n stateService,\n syncService,\n logService\n );\n }\n}\n","
\n
\n
\n

{{ \"updateMasterPassword\" | i18n }}

\n
\n
\n {{ \"updateMasterPasswordWarning\" | i18n }} \n
\n \n \n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n \n {{ \"masterPassHintDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n {{ \"logOut\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VerifyEmailRequest } from \"jslib-common/models/request/verifyEmailRequest\";\n\n@Component({\n selector: \"app-verify-email-token\",\n templateUrl: \"verify-email-token.component.html\",\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token)\n );\n if (await this.stateService.getIsAuthenticated()) {\n await this.apiService.refreshIdentityToken();\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"emailVerified\"));\n this.router.navigate([\"/\"]);\n return;\n } catch (e) {\n this.logService.error(e);\n }\n }\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"emailVerifiedFailed\"));\n this.router.navigate([\"/\"]);\n });\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { VerifyDeleteRecoverRequest } from \"jslib-common/models/request/verifyDeleteRecoverRequest\";\n\n@Component({\n selector: \"app-verify-recover-delete\",\n templateUrl: \"verify-recover-delete.component.html\",\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(\n private router: Router,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private logService: LogService\n ) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate([\"/\"]);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"accountDeleted\"),\n this.i18nService.t(\"accountDeletedDesc\")\n );\n this.router.navigate([\"/\"]);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n

{{ \"deleteAccount\" | i18n }}

\n
\n
\n {{ \"deleteAccountWarning\" | i18n }}\n

\n {{ email }}\n

\n

{{ \"deleteRecoverConfirmDesc\" | i18n }}

\n
\n
\n \n {{ \"deleteAccount\" | i18n }}\n \n \n \n {{ \"cancel\" | i18n }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, NgZone, OnDestroy, OnInit, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport * as jq from \"jquery\";\nimport { IndividualConfig, ToastrService } from \"ngx-toastr\";\nimport Swal from \"sweetalert2\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { NotificationsService } from \"jslib-common/abstractions/notifications.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SettingsService } from \"jslib-common/abstractions/settings.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\n\nimport { DisableSendPolicy } from \"./organizations/policies/disable-send.component\";\nimport { MasterPasswordPolicy } from \"./organizations/policies/master-password.component\";\nimport { PasswordGeneratorPolicy } from \"./organizations/policies/password-generator.component\";\nimport { PersonalOwnershipPolicy } from \"./organizations/policies/personal-ownership.component\";\nimport { RequireSsoPolicy } from \"./organizations/policies/require-sso.component\";\nimport { ResetPasswordPolicy } from \"./organizations/policies/reset-password.component\";\nimport { SendOptionsPolicy } from \"./organizations/policies/send-options.component\";\nimport { SingleOrgPolicy } from \"./organizations/policies/single-org.component\";\nimport { TwoFactorAuthenticationPolicy } from \"./organizations/policies/two-factor-authentication.component\";\nimport { PolicyListService } from \"./services/policy-list.service\";\nimport { RouterService } from \"./services/router.service\";\n\nconst BroadcasterSubscriptionId = \"AppComponent\";\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: \"app-root\",\n templateUrl: \"app.component.html\",\n})\nexport class AppComponent implements OnDestroy, OnInit {\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(\n private broadcasterService: BroadcasterService,\n private tokenService: TokenService,\n private folderService: FolderService,\n private settingsService: SettingsService,\n private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService,\n private cipherService: CipherService,\n private authService: AuthService,\n private router: Router,\n private toastrService: ToastrService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService,\n private cryptoService: CryptoService,\n private collectionService: CollectionService,\n private sanitizer: DomSanitizer,\n private searchService: SearchService,\n private notificationsService: NotificationsService,\n private routerService: RouterService,\n private stateService: StateService,\n private eventService: EventService,\n private policyService: PolicyService,\n protected policyListService: PolicyListService,\n private keyConnectorService: KeyConnectorService\n ) {}\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"loggedIn\":\n this.notificationsService.updateConnection(false);\n break;\n case \"loggedOut\":\n this.routerService.setPreviousUrl(null);\n this.notificationsService.updateConnection(false);\n break;\n case \"unlocked\":\n this.notificationsService.updateConnection(false);\n break;\n case \"authBlocked\":\n this.routerService.setPreviousUrl(message.url);\n this.router.navigate([\"/\"]);\n break;\n case \"logout\":\n this.logOut(!!message.expired);\n break;\n case \"lockVault\":\n await this.vaultTimeoutService.lock();\n break;\n case \"locked\":\n this.notificationsService.updateConnection(false);\n this.router.navigate([\"lock\"]);\n break;\n case \"lockedUrl\":\n this.routerService.setPreviousUrl(message.url);\n break;\n case \"syncStarted\":\n break;\n case \"syncCompleted\":\n break;\n case \"upgradeOrganization\": {\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"upgradeOrganizationDesc\"),\n this.i18nService.t(\"upgradeOrganization\"),\n this.i18nService.t(\"upgradeOrganization\"),\n this.i18nService.t(\"cancel\")\n );\n if (upgradeConfirmed) {\n this.router.navigate([\n \"organizations\",\n message.organizationId,\n \"settings\",\n \"billing\",\n ]);\n }\n break;\n }\n case \"premiumRequired\": {\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"premiumRequiredDesc\"),\n this.i18nService.t(\"premiumRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (premiumConfirmed) {\n this.router.navigate([\"settings/premium\"]);\n }\n break;\n }\n case \"emailVerificationRequired\": {\n const emailVerificationConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"emailVerificationRequiredDesc\"),\n this.i18nService.t(\"emailVerificationRequired\"),\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"cancel\")\n );\n if (emailVerificationConfirmed) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/create-bitwarden-account/\"\n );\n }\n break;\n }\n case \"showToast\":\n this.showToast(message);\n break;\n case \"setFullWidth\":\n this.setFullWidth();\n break;\n case \"convertAccountToKeyConnector\":\n this.router.navigate([\"/remove-password\"]);\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll(\".modal\"));\n for (const modal of modals) {\n (jq(modal) as any).modal(\"hide\");\n }\n\n if (document.querySelector(\".swal-modal\") != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.policyListService.addPolicies([\n new TwoFactorAuthenticationPolicy(),\n new MasterPasswordPolicy(),\n new PasswordGeneratorPolicy(),\n new SingleOrgPolicy(),\n new RequireSsoPolicy(),\n new PersonalOwnershipPolicy(),\n new DisableSendPolicy(),\n new SendOptionsPolicy(),\n new ResetPasswordPolicy(),\n ]);\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.stateService.getUserId();\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.cryptoService.clearKeys(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.keyConnectorService.clear(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n if (expired) {\n this.platformUtilsService.showToast(\n \"warning\",\n this.i18nService.t(\"loggedOut\"),\n this.i18nService.t(\"loginExpired\")\n );\n }\n\n await this.stateService.clean({ userId: userId });\n Swal.close();\n this.router.navigate([\"/\"]);\n });\n }\n\n private async recordActivity() {\n const now = new Date().getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.stateService.setLastActive(now);\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n let message = \"\";\n\n const options: Partial = {};\n\n if (typeof msg.text === \"string\") {\n message = msg.text;\n } else if (msg.text.length === 1) {\n message = msg.text[0];\n } else {\n msg.text.forEach(\n (t: string) =>\n (message += \"

\" + this.sanitizer.sanitize(SecurityContext.HTML, t) + \"

\")\n );\n options.enableHtml = true;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n options.enableHtml = true;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n options.timeOut = msg.options.timeout;\n }\n }\n\n this.toastrService.show(message, msg.title, options, \"toast-\" + msg.type);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.stateService.getEnableFullWidth();\n if (enableFullWidth) {\n document.body.classList.add(\"full-width\");\n } else {\n document.body.classList.remove(\"full-width\");\n }\n }\n}\n","import { Directive, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Directive()\nexport abstract class BaseAcceptComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n actionPromise: Promise;\n\n protected requiredParameters: string[] = [];\n protected failedShortMessage = \"inviteAcceptFailedShort\";\n protected failedMessage = \"inviteAcceptFailed\";\n\n constructor(\n protected router: Router,\n protected platformUtilService: PlatformUtilsService,\n protected i18nService: I18nService,\n protected route: ActivatedRoute,\n protected stateService: StateService\n ) {}\n\n abstract authedHandler(qParams: any): Promise;\n abstract unauthedHandler(qParams: any): Promise;\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n let error = this.requiredParameters.some((e) => qParams?.[e] == null || qParams[e] === \"\");\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.stateService.getIsAuthenticated();\n\n if (this.authed) {\n try {\n await this.authedHandler(qParams);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n this.email = qParams.email;\n await this.unauthedHandler(qParams);\n }\n }\n\n if (error) {\n const message =\n errorMessage != null\n ? this.i18nService.t(this.failedShortMessage, errorMessage)\n : this.i18nService.t(this.failedMessage);\n this.platformUtilService.showToast(\"error\", null, message, { timeout: 10000 });\n this.router.navigate([\"/\"]);\n }\n\n this.loading = false;\n });\n }\n}\n","import { Directive } from \"@angular/core\";\n\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { EventView } from \"jslib-common/models/view/eventView\";\n\nimport { EventService } from \"src/app/services/event.service\";\n\n@Directive()\nexport abstract class BaseEventsComponent {\n loading = true;\n loaded = false;\n events: EventView[];\n start: string;\n end: string;\n dirtyDates = true;\n continuationToken: string;\n refreshPromise: Promise;\n exportPromise: Promise;\n morePromise: Promise;\n\n abstract readonly exportFileName: string;\n\n constructor(\n protected eventService: EventService,\n protected i18nService: I18nService,\n protected exportService: ExportService,\n protected platformUtilsService: PlatformUtilsService,\n protected logService: LogService\n ) {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n }\n\n async exportEvents() {\n if (this.appApiPromiseUnfulfilled() || this.dirtyDates) {\n return;\n }\n\n this.loading = true;\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n try {\n this.exportPromise = this.export(dates[0], dates[1]);\n\n await this.exportPromise;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n this.exportPromise = null;\n this.loading = false;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.appApiPromiseUnfulfilled()) {\n return;\n }\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n this.loading = true;\n let events: EventView[] = [];\n try {\n const promise = this.loadAndParseEvents(\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n const result = await promise;\n this.continuationToken = result.continuationToken;\n events = result.events;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.dirtyDates = false;\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n\n protected abstract requestEvents(\n startDate: string,\n endDate: string,\n continuationToken: string\n ): Promise>;\n protected abstract getUserName(r: EventResponse, userId: string): { name: string; email: string };\n\n protected async loadAndParseEvents(\n startDate: string,\n endDate: string,\n continuationToken: string\n ) {\n const response = await this.requestEvents(startDate, endDate, continuationToken);\n\n const events = await Promise.all(\n response.data.map(async (r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.getUserName(r, userId);\n const userName = user != null ? user.name : this.i18nService.t(\"unknown\");\n\n return new EventView({\n message: eventInfo.message,\n humanReadableMessage: eventInfo.humanReadableMessage,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: r.installationId != null ? `Installation: ${r.installationId}` : userName,\n userEmail: user != null ? user.email : \"\",\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n installationId: r.installationId,\n });\n })\n );\n return { continuationToken: response.continuationToken, events: events };\n }\n\n protected parseDates() {\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidDateRange\")\n );\n return null;\n }\n return dates;\n }\n\n protected appApiPromiseUnfulfilled() {\n return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null;\n }\n\n private async export(start: string, end: string) {\n let continuationToken = this.continuationToken;\n let events = [].concat(this.events);\n\n while (continuationToken != null) {\n const result = await this.loadAndParseEvents(start, end, continuationToken);\n continuationToken = result.continuationToken;\n events = events.concat(result.events);\n }\n\n const data = await this.exportService.getEventExport(events);\n const fileName = this.exportService.getFileName(this.exportFileName, \"csv\");\n this.platformUtilsService.saveFile(window, data, { type: \"text/plain\" }, fileName);\n }\n}\n","import { Directive, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\nimport { ProviderUserType } from \"jslib-common/enums/providerUserType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\nimport { ProviderUserUserDetailsResponse } from \"jslib-common/models/response/provider/providerUserResponse\";\n\nimport { UserConfirmComponent } from \"../organizations/manage/user-confirm.component\";\n\ntype StatusType = OrganizationUserStatusType | ProviderUserStatusType;\n\nconst MaxCheckedCount = 500;\n\n@Directive()\nexport abstract class BasePeopleComponent<\n UserType extends ProviderUserUserDetailsResponse | OrganizationUserUserDetailsResponse\n> {\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(this.userStatusType.Invited)\n ? this.statusMap.get(this.userStatusType.Invited).length\n : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(this.userStatusType.Accepted)\n ? this.statusMap.get(this.userStatusType.Accepted).length\n : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(this.userStatusType.Confirmed)\n ? this.statusMap.get(this.userStatusType.Confirmed).length\n : 0;\n }\n\n get showConfirmUsers(): boolean {\n return (\n this.allUsers != null &&\n this.statusMap != null &&\n this.allUsers.length > 1 &&\n this.confirmedCount > 0 &&\n this.confirmedCount < 3 &&\n this.acceptedCount > 0\n );\n }\n\n get showBulkConfirmUsers(): boolean {\n return this.acceptedCount > 0;\n }\n\n abstract userType: typeof OrganizationUserType | typeof ProviderUserType;\n abstract userStatusType: typeof OrganizationUserStatusType | typeof ProviderUserStatusType;\n\n loading = true;\n statusMap = new Map();\n status: StatusType;\n users: UserType[] = [];\n pagedUsers: UserType[] = [];\n searchText: string;\n actionPromise: Promise;\n\n protected allUsers: UserType[] = [];\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n\n constructor(\n protected apiService: ApiService,\n private searchService: SearchService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected cryptoService: CryptoService,\n protected validationService: ValidationService,\n protected modalService: ModalService,\n private logService: LogService,\n private searchPipe: SearchPipe,\n protected userNamePipe: UserNamePipe,\n protected stateService: StateService\n ) {}\n\n abstract edit(user: UserType): void;\n abstract getUsers(): Promise>;\n abstract deleteUser(id: string): Promise;\n abstract reinviteUser(id: string): Promise;\n abstract confirmUser(user: UserType, publicKey: Uint8Array): Promise;\n\n async load() {\n const response = await this.getUsers();\n this.statusMap.clear();\n for (const status of Utils.iterateEnum(this.userStatusType)) {\n this.statusMap.set(status, []);\n }\n\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, \"email\"));\n this.allUsers.forEach((u) => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: StatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n // Reset checkbox selecton\n this.selectAll(false);\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(\n this.users.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) {\n (user as any).checked = select == null ? !(user as any).checked : select;\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n\n const filteredUsers = this.searchPipe.transform(\n this.users,\n this.searchText,\n \"name\",\n \"email\",\n \"id\"\n );\n\n const selectCount =\n select && filteredUsers.length > MaxCheckedCount ? MaxCheckedCount : filteredUsers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkUser(filteredUsers[i], select);\n }\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n invite() {\n this.edit(null);\n }\n\n async remove(user: UserType) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.deleteWarningMessage(user),\n this.userNamePipe.transform(user),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.deleteUser(user.id);\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.userNamePipe.transform(user))\n );\n this.removeUser(user);\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async reinvite(user: UserType) {\n if (this.actionPromise != null) {\n return;\n }\n\n this.actionPromise = this.reinviteUser(user.id);\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenReinvited\", this.userNamePipe.transform(user))\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async confirm(user: UserType) {\n function updateUser(self: BasePeopleComponent) {\n user.status = self.userStatusType.Confirmed;\n const mapIndex = self.statusMap.get(self.userStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(self.userStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(self.userStatusType.Confirmed).push(user);\n }\n }\n\n const confirmUser = async (publicKey: Uint8Array) => {\n try {\n this.actionPromise = this.confirmUser(user, publicKey);\n await this.actionPromise;\n updateUser(this);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(user))\n );\n } catch (e) {\n this.validationService.showError(e);\n throw e;\n } finally {\n this.actionPromise = null;\n }\n };\n\n if (this.actionPromise != null) {\n return;\n }\n\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const autoConfirm = await this.stateService.getAutoConfirmFingerPrints();\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(\n UserConfirmComponent,\n this.confirmModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.userId = user != null ? user.userId : null;\n comp.publicKey = publicKey;\n comp.onConfirmedUser.subscribe(async () => {\n try {\n comp.formPromise = confirmUser(publicKey);\n await comp.formPromise;\n modal.close();\n } catch (e) {\n this.logService.error(e);\n }\n });\n }\n );\n return;\n }\n\n try {\n const fingerprint = await this.cryptoService.getFingerprint(user.userId, publicKey.buffer);\n this.logService.info(`User's fingerprint: ${fingerprint.join(\"-\")}`);\n } catch (e) {\n this.logService.error(e);\n }\n await confirmUser(publicKey);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n protected deleteWarningMessage(user: UserType): string {\n return this.i18nService.t(\"removeUserConfirmation\");\n }\n\n protected getCheckedUsers() {\n return this.users.filter((u) => (u as any).checked);\n }\n\n protected removeUser(user: UserType) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(user.status)) {\n index = this.statusMap.get(user.status).indexOf(user);\n if (index > -1) {\n this.statusMap.get(user.status).splice(index, 1);\n }\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-nested-checkbox\",\n templateUrl: \"nested-checkbox.component.html\",\n})\nexport class NestedCheckboxComponent {\n @Input() parentId: string;\n @Input() checkboxes: { id: string; get: () => boolean; set: (v: boolean) => void }[];\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n get parentIndeterminate() {\n return !this.parentChecked && this.checkboxes.some((c) => c.get());\n }\n\n get parentChecked() {\n return this.checkboxes.every((c) => c.get());\n }\n\n set parentChecked(value: boolean) {\n this.checkboxes.forEach((c) => {\n c.set(value);\n });\n }\n\n pascalize(s: string) {\n return Utils.camelToPascalCase(s);\n }\n}\n","
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { NavigationPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\n@Component({\n selector: \"app-organization-switcher\",\n templateUrl: \"organization-switcher.component.html\",\n})\nexport class OrganizationSwitcherComponent implements OnInit {\n constructor(private organizationService: OrganizationService, private i18nService: I18nService) {}\n\n @Input() activeOrganization: Organization = null;\n organizations: Organization[] = [];\n\n loaded = false;\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const orgs = await this.organizationService.getAll();\n this.organizations = orgs\n .filter((org) => NavigationPermissionsService.canAccessAdmin(org))\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n\n this.loaded = true;\n }\n}\n","
\n \n \n
\n
\n {{ activeOrganization.name }}\n {{ \"organization\" | i18n }}\n
\n
\n \n
\n
\n \n
\n \n
\n \n {{ \"organizationIsDisabled\" | i18n }}\n
\n
\n \n
\n \n {{ \"accessingUsingProvider\" | i18n: activeOrganization.providerName }}\n
\n
\n \n\n \n \n \n\n","import { Component } from \"@angular/core\";\n\nimport { PasswordRepromptComponent as BasePasswordRepromptComponent } from \"jslib-angular/components/password-reprompt.component\";\n\n@Component({\n templateUrl: \"password-reprompt.component.html\",\n})\nexport class PasswordRepromptComponent extends BasePasswordRepromptComponent {}\n","
\n
\n
\n
\n

\n {{ \"passwordConfirmation\" | i18n }}\n

\n \n
\n
\n {{ \"passwordConfirmationDesc\" | i18n }}\n\n
\n \n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, Input, OnChanges } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-password-strength\",\n templateUrl: \"password-strength.component.html\",\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = \"bg-danger\";\n text: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = \"bg-success\";\n this.text = this.i18nService.t(\"strong\");\n break;\n case 3:\n this.color = \"bg-primary\";\n this.text = this.i18nService.t(\"good\");\n break;\n case 2:\n this.color = \"bg-warning\";\n this.text = this.i18nService.t(\"weak\");\n break;\n default:\n this.color = \"bg-danger\";\n this.text = this.score != null ? this.i18nService.t(\"weak\") : null;\n break;\n }\n }\n}\n","
\n \n \n {{ text }}\n \n
\n\n","import { Component } from \"@angular/core\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\n\n@Component({\n selector: \"app-premium-badge\",\n template: `\n \n `,\n})\nexport class PremiumBadgeComponent {\n constructor(private messagingService: MessagingService) {}\n\n premiumRequired() {\n this.messagingService.send(\"premiumRequired\");\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router } from \"@angular/router\";\n\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { AuthenticationStatus } from \"jslib-common/enums/authenticationStatus\";\n\n@Injectable()\nexport class HomeGuard implements CanActivate {\n constructor(private router: Router, private authService: AuthService) {}\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const authStatus = await this.authService.getAuthStatus();\n\n if (authStatus === AuthenticationStatus.LoggedOut) {\n return this.router.createUrlTree([\"/login\"], { queryParams: route.queryParams });\n }\n if (authStatus === AuthenticationStatus.Locked) {\n return this.router.createUrlTree([\"/lock\"], { queryParams: route.queryParams });\n }\n return this.router.createUrlTree([\"/vault\"], { queryParams: route.queryParams });\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-footer\",\n templateUrl: \"footer.component.html\",\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year = \"2015\";\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n }\n}\n","
\n
\n
© {{ year }}, Bitwarden Inc.
\n
\n
\n {{ \"versionNumber\" | i18n: version }}\n
\n
\n
\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-frontend-layout\",\n templateUrl: \"frontend-layout.component.html\",\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year = \"2015\";\n\n constructor(private platformUtilsService: PlatformUtilsService) {}\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n document.body.classList.add(\"layout_frontend\");\n }\n\n ngOnDestroy() {\n document.body.classList.remove(\"layout_frontend\");\n }\n}\n","\n
\n © {{ year }}, Bitwarden Inc.
\n {{ \"versionNumber\" | i18n: version }}\n
\n","import { Component, NgZone, OnInit } from \"@angular/core\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\nimport { NavigationPermissionsService as OrgNavigationPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\n@Component({\n selector: \"app-navbar\",\n templateUrl: \"navbar.component.html\",\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n providers: Provider[] = [];\n organizations: Organization[] = [];\n\n constructor(\n private messagingService: MessagingService,\n private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService,\n private providerService: ProviderService,\n private syncService: SyncService,\n private organizationService: OrganizationService,\n private i18nService: I18nService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone\n ) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === \"\") {\n this.name = this.email;\n }\n\n // Ensure providers and organizations are loaded\n if ((await this.syncService.getLastSync()) == null) {\n await this.syncService.fullSync(false);\n }\n this.providers = await this.providerService.getAll();\n\n this.organizations = await this.buildOrganizations();\n\n this.broadcasterService.subscribe(this.constructor.name, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"organizationCreated\":\n if (this.organizations.length < 1) {\n this.organizations = await this.buildOrganizations();\n }\n break;\n }\n });\n });\n }\n\n async buildOrganizations() {\n const allOrgs = await this.organizationService.getAll();\n return allOrgs\n .filter((org) => OrgNavigationPermissionsService.canAccessAdmin(org))\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n\n lock() {\n this.messagingService.send(\"lockVault\");\n }\n\n logOut() {\n this.messagingService.send(\"logout\");\n }\n}\n","
\n","import { Component, OnInit } from \"@angular/core\";\n\n@Component({\n selector: \"app-user-layout\",\n templateUrl: \"user-layout.component.html\",\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n }\n}\n","\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { UserVerificationComponent } from \"jslib-angular/components/user-verification.component\";\n\nimport { AcceptEmergencyComponent } from \"../accounts/accept-emergency.component\";\nimport { AcceptOrganizationComponent } from \"../accounts/accept-organization.component\";\nimport { HintComponent } from \"../accounts/hint.component\";\nimport { LockComponent } from \"../accounts/lock.component\";\nimport { LoginComponent } from \"../accounts/login.component\";\nimport { RecoverDeleteComponent } from \"../accounts/recover-delete.component\";\nimport { RecoverTwoFactorComponent } from \"../accounts/recover-two-factor.component\";\nimport { RegisterComponent } from \"../accounts/register.component\";\nimport { RemovePasswordComponent } from \"../accounts/remove-password.component\";\nimport { SetPasswordComponent } from \"../accounts/set-password.component\";\nimport { SsoComponent } from \"../accounts/sso.component\";\nimport { TwoFactorOptionsComponent } from \"../accounts/two-factor-options.component\";\nimport { TwoFactorComponent } from \"../accounts/two-factor.component\";\nimport { UpdatePasswordComponent } from \"../accounts/update-password.component\";\nimport { UpdateTempPasswordComponent } from \"../accounts/update-temp-password.component\";\nimport { VerifyEmailTokenComponent } from \"../accounts/verify-email-token.component\";\nimport { VerifyRecoverDeleteComponent } from \"../accounts/verify-recover-delete.component\";\nimport { NestedCheckboxComponent } from \"../components/nested-checkbox.component\";\nimport { OrganizationSwitcherComponent } from \"../components/organization-switcher.component\";\nimport { PasswordRepromptComponent } from \"../components/password-reprompt.component\";\nimport { PasswordStrengthComponent } from \"../components/password-strength.component\";\nimport { PremiumBadgeComponent } from \"../components/premium-badge.component\";\nimport { FooterComponent } from \"../layouts/footer.component\";\nimport { FrontendLayoutComponent } from \"../layouts/frontend-layout.component\";\nimport { NavbarComponent } from \"../layouts/navbar.component\";\nimport { UserLayoutComponent } from \"../layouts/user-layout.component\";\nimport { OrganizationLayoutComponent } from \"../organizations/layouts/organization-layout.component\";\nimport { BulkConfirmComponent as OrgBulkConfirmComponent } from \"../organizations/manage/bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent as OrgBulkRemoveComponent } from \"../organizations/manage/bulk/bulk-remove.component\";\nimport { BulkStatusComponent as OrgBulkStatusComponent } from \"../organizations/manage/bulk/bulk-status.component\";\nimport { CollectionAddEditComponent as OrgCollectionAddEditComponent } from \"../organizations/manage/collection-add-edit.component\";\nimport { CollectionsComponent as OrgManageCollectionsComponent } from \"../organizations/manage/collections.component\";\nimport { EntityEventsComponent as OrgEntityEventsComponent } from \"../organizations/manage/entity-events.component\";\nimport { EntityUsersComponent as OrgEntityUsersComponent } from \"../organizations/manage/entity-users.component\";\nimport { EventsComponent as OrgEventsComponent } from \"../organizations/manage/events.component\";\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from \"../organizations/manage/group-add-edit.component\";\nimport { GroupsComponent as OrgGroupsComponent } from \"../organizations/manage/groups.component\";\nimport { ManageComponent as OrgManageComponent } from \"../organizations/manage/manage.component\";\nimport { PeopleComponent as OrgPeopleComponent } from \"../organizations/manage/people.component\";\nimport { PoliciesComponent as OrgPoliciesComponent } from \"../organizations/manage/policies.component\";\nimport { PolicyEditComponent as OrgPolicyEditComponent } from \"../organizations/manage/policy-edit.component\";\nimport { ResetPasswordComponent as OrgResetPasswordComponent } from \"../organizations/manage/reset-password.component\";\nimport { UserAddEditComponent as OrgUserAddEditComponent } from \"../organizations/manage/user-add-edit.component\";\nimport { UserConfirmComponent as OrgUserConfirmComponent } from \"../organizations/manage/user-confirm.component\";\nimport { UserGroupsComponent as OrgUserGroupsComponent } from \"../organizations/manage/user-groups.component\";\nimport { DisableSendPolicyComponent } from \"../organizations/policies/disable-send.component\";\nimport { MasterPasswordPolicyComponent } from \"../organizations/policies/master-password.component\";\nimport { PasswordGeneratorPolicyComponent } from \"../organizations/policies/password-generator.component\";\nimport { PersonalOwnershipPolicyComponent } from \"../organizations/policies/personal-ownership.component\";\nimport { RequireSsoPolicyComponent } from \"../organizations/policies/require-sso.component\";\nimport { ResetPasswordPolicyComponent } from \"../organizations/policies/reset-password.component\";\nimport { SendOptionsPolicyComponent } from \"../organizations/policies/send-options.component\";\nimport { SingleOrgPolicyComponent } from \"../organizations/policies/single-org.component\";\nimport { TwoFactorAuthenticationPolicyComponent } from \"../organizations/policies/two-factor-authentication.component\";\nimport { AccountComponent as OrgAccountComponent } from \"../organizations/settings/account.component\";\nimport { AdjustSubscription } from \"../organizations/settings/adjust-subscription.component\";\nimport { BillingSyncApiKeyComponent } from \"../organizations/settings/billing-sync-api-key.component\";\nimport { ChangePlanComponent } from \"../organizations/settings/change-plan.component\";\nimport { DeleteOrganizationComponent } from \"../organizations/settings/delete-organization.component\";\nimport { DownloadLicenseComponent } from \"../organizations/settings/download-license.component\";\nimport { ImageSubscriptionHiddenComponent as OrgSubscriptionHiddenComponent } from \"../organizations/settings/image-subscription-hidden.component\";\nimport { OrganizationBillingComponent } from \"../organizations/settings/organization-billing.component\";\nimport { OrganizationSubscriptionComponent } from \"../organizations/settings/organization-subscription.component\";\nimport { SettingsComponent as OrgSettingComponent } from \"../organizations/settings/settings.component\";\nimport { TwoFactorSetupComponent as OrgTwoFactorSetupComponent } from \"../organizations/settings/two-factor-setup.component\";\nimport { AcceptFamilySponsorshipComponent } from \"../organizations/sponsorships/accept-family-sponsorship.component\";\nimport { FamiliesForEnterpriseSetupComponent } from \"../organizations/sponsorships/families-for-enterprise-setup.component\";\nimport { ExportComponent as OrgExportComponent } from \"../organizations/tools/export.component\";\nimport { ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent } from \"../organizations/tools/exposed-passwords-report.component\";\nimport { ImportComponent as OrgImportComponent } from \"../organizations/tools/import.component\";\nimport { InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent } from \"../organizations/tools/inactive-two-factor-report.component\";\nimport { ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent } from \"../organizations/tools/reused-passwords-report.component\";\nimport { ToolsComponent as OrgToolsComponent } from \"../organizations/tools/tools.component\";\nimport { UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent } from \"../organizations/tools/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent } from \"../organizations/tools/weak-passwords-report.component\";\nimport { AddEditComponent as OrgAddEditComponent } from \"../organizations/vault/add-edit.component\";\nimport { AttachmentsComponent as OrgAttachmentsComponent } from \"../organizations/vault/attachments.component\";\nimport { CiphersComponent as OrgCiphersComponent } from \"../organizations/vault/ciphers.component\";\nimport { CollectionsComponent as OrgCollectionsComponent } from \"../organizations/vault/collections.component\";\nimport { ProvidersComponent } from \"../providers/providers.component\";\nimport { BreachReportComponent } from \"../reports/breach-report.component\";\nimport { ExposedPasswordsReportComponent } from \"../reports/exposed-passwords-report.component\";\nimport { InactiveTwoFactorReportComponent } from \"../reports/inactive-two-factor-report.component\";\nimport { ReportCardComponent } from \"../reports/report-card.component\";\nimport { ReportListComponent } from \"../reports/report-list.component\";\nimport { ReportsComponent } from \"../reports/reports.component\";\nimport { ReusedPasswordsReportComponent } from \"../reports/reused-passwords-report.component\";\nimport { UnsecuredWebsitesReportComponent } from \"../reports/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"../reports/weak-passwords-report.component\";\nimport { AccessComponent } from \"../send/access.component\";\nimport { AddEditComponent as SendAddEditComponent } from \"../send/add-edit.component\";\nimport { EffluxDatesComponent as SendEffluxDatesComponent } from \"../send/efflux-dates.component\";\nimport { SendComponent } from \"../send/send.component\";\nimport { AccountComponent } from \"../settings/account.component\";\nimport { AddCreditComponent } from \"../settings/add-credit.component\";\nimport { AdjustPaymentComponent } from \"../settings/adjust-payment.component\";\nimport { AdjustStorageComponent } from \"../settings/adjust-storage.component\";\nimport { ApiKeyComponent } from \"../settings/api-key.component\";\nimport { BillingSyncKeyComponent } from \"../settings/billing-sync-key.component\";\nimport { ChangeEmailComponent } from \"../settings/change-email.component\";\nimport { ChangeKdfComponent } from \"../settings/change-kdf.component\";\nimport { ChangePasswordComponent } from \"../settings/change-password.component\";\nimport { CreateOrganizationComponent } from \"../settings/create-organization.component\";\nimport { DeauthorizeSessionsComponent } from \"../settings/deauthorize-sessions.component\";\nimport { DeleteAccountComponent } from \"../settings/delete-account.component\";\nimport { DomainRulesComponent } from \"../settings/domain-rules.component\";\nimport { EmergencyAccessAddEditComponent } from \"../settings/emergency-access-add-edit.component\";\nimport { EmergencyAccessAttachmentsComponent } from \"../settings/emergency-access-attachments.component\";\nimport { EmergencyAccessConfirmComponent } from \"../settings/emergency-access-confirm.component\";\nimport { EmergencyAccessTakeoverComponent } from \"../settings/emergency-access-takeover.component\";\nimport { EmergencyAccessViewComponent } from \"../settings/emergency-access-view.component\";\nimport { EmergencyAccessComponent } from \"../settings/emergency-access.component\";\nimport { EmergencyAddEditComponent } from \"../settings/emergency-add-edit.component\";\nimport { OrganizationPlansComponent } from \"../settings/organization-plans.component\";\nimport { PaymentMethodComponent } from \"../settings/payment-method.component\";\nimport { PaymentComponent } from \"../settings/payment.component\";\nimport { PreferencesComponent } from \"../settings/preferences.component\";\nimport { PremiumComponent } from \"../settings/premium.component\";\nimport { ProfileComponent } from \"../settings/profile.component\";\nimport { PurgeVaultComponent } from \"../settings/purge-vault.component\";\nimport { SecurityKeysComponent } from \"../settings/security-keys.component\";\nimport { SecurityComponent } from \"../settings/security.component\";\nimport { SettingsComponent } from \"../settings/settings.component\";\nimport { SponsoredFamiliesComponent } from \"../settings/sponsored-families.component\";\nimport { SponsoringOrgRowComponent } from \"../settings/sponsoring-org-row.component\";\nimport { SubscriptionComponent } from \"../settings/subscription.component\";\nimport { TaxInfoComponent } from \"../settings/tax-info.component\";\nimport { TwoFactorAuthenticatorComponent } from \"../settings/two-factor-authenticator.component\";\nimport { TwoFactorDuoComponent } from \"../settings/two-factor-duo.component\";\nimport { TwoFactorEmailComponent } from \"../settings/two-factor-email.component\";\nimport { TwoFactorRecoveryComponent } from \"../settings/two-factor-recovery.component\";\nimport { TwoFactorSetupComponent } from \"../settings/two-factor-setup.component\";\nimport { TwoFactorVerifyComponent } from \"../settings/two-factor-verify.component\";\nimport { TwoFactorWebAuthnComponent } from \"../settings/two-factor-webauthn.component\";\nimport { TwoFactorYubiKeyComponent } from \"../settings/two-factor-yubikey.component\";\nimport { UpdateKeyComponent } from \"../settings/update-key.component\";\nimport { UpdateLicenseComponent } from \"../settings/update-license.component\";\nimport { UserBillingHistoryComponent } from \"../settings/user-billing-history.component\";\nimport { UserSubscriptionComponent } from \"../settings/user-subscription.component\";\nimport { VaultTimeoutInputComponent } from \"../settings/vault-timeout-input.component\";\nimport { VerifyEmailComponent } from \"../settings/verify-email.component\";\nimport { ExportComponent } from \"../tools/export.component\";\nimport { GeneratorComponent } from \"../tools/generator.component\";\nimport { ImportComponent } from \"../tools/import.component\";\nimport { PasswordGeneratorHistoryComponent } from \"../tools/password-generator-history.component\";\nimport { ToolsComponent } from \"../tools/tools.component\";\nimport { AddEditCustomFieldsComponent } from \"../vault/add-edit-custom-fields.component\";\nimport { AddEditComponent } from \"../vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../vault/attachments.component\";\nimport { BulkActionsComponent } from \"../vault/bulk-actions.component\";\nimport { BulkDeleteComponent } from \"../vault/bulk-delete.component\";\nimport { BulkMoveComponent } from \"../vault/bulk-move.component\";\nimport { BulkRestoreComponent } from \"../vault/bulk-restore.component\";\nimport { BulkShareComponent } from \"../vault/bulk-share.component\";\nimport { CiphersComponent } from \"../vault/ciphers.component\";\nimport { CollectionsComponent } from \"../vault/collections.component\";\nimport { FolderAddEditComponent } from \"../vault/folder-add-edit.component\";\nimport { ShareComponent } from \"../vault/share.component\";\n\nimport { PipesModule } from \"./pipes/pipes.module\";\nimport { SharedModule } from \"./shared.module\";\nimport { VaultFilterModule } from \"./vault-filter/vault-filter.module\";\nimport { OrganizationBadgeModule } from \"./vault/modules/organization-badge/organization-badge.module\";\n\n// Please do not add to this list of declarations - we should refactor these into modules when doing so makes sense until there are none left.\n// If you are building new functionality, please create or extend a feature module instead.\n@NgModule({\n imports: [SharedModule, VaultFilterModule, OrganizationBadgeModule, PipesModule],\n declarations: [\n PremiumBadgeComponent,\n AcceptEmergencyComponent,\n AcceptFamilySponsorshipComponent,\n AcceptOrganizationComponent,\n AccessComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AddEditCustomFieldsComponent,\n AddEditCustomFieldsComponent,\n AdjustPaymentComponent,\n AdjustStorageComponent,\n AdjustSubscription,\n ApiKeyComponent,\n AttachmentsComponent,\n BillingSyncApiKeyComponent,\n BillingSyncKeyComponent,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DisableSendPolicyComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FamiliesForEnterpriseSetupComponent,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n HintComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n LockComponent,\n LoginComponent,\n MasterPasswordPolicyComponent,\n NavbarComponent,\n NestedCheckboxComponent,\n OrganizationSwitcherComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationLayoutComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgBulkStatusComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupsComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPoliciesComponent,\n OrgPolicyEditComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgSubscriptionHiddenComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrgWeakPasswordsReportComponent,\n GeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordGeneratorPolicyComponent,\n PasswordRepromptComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PaymentMethodComponent,\n PersonalOwnershipPolicyComponent,\n PreferencesComponent,\n PremiumBadgeComponent,\n PremiumComponent,\n ProfileComponent,\n ProvidersComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n RemovePasswordComponent,\n ReportCardComponent,\n ReportListComponent,\n ReportsComponent,\n RequireSsoPolicyComponent,\n ResetPasswordPolicyComponent,\n ReusedPasswordsReportComponent,\n SecurityComponent,\n SecurityKeysComponent,\n SendAddEditComponent,\n SendComponent,\n SendEffluxDatesComponent,\n SendOptionsPolicyComponent,\n SetPasswordComponent,\n SettingsComponent,\n ShareComponent,\n SingleOrgPolicyComponent,\n SponsoredFamiliesComponent,\n SponsoringOrgRowComponent,\n SsoComponent,\n SubscriptionComponent,\n TaxInfoComponent,\n ToolsComponent,\n TwoFactorAuthenticationPolicyComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdatePasswordComponent,\n UpdateTempPasswordComponent,\n UserBillingHistoryComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserVerificationComponent,\n VaultTimeoutInputComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n exports: [\n PremiumBadgeComponent,\n AcceptEmergencyComponent,\n AcceptOrganizationComponent,\n AccessComponent,\n AccountComponent,\n AddCreditComponent,\n AddEditComponent,\n AddEditCustomFieldsComponent,\n AddEditCustomFieldsComponent,\n AdjustPaymentComponent,\n AdjustStorageComponent,\n AdjustSubscription,\n ApiKeyComponent,\n AttachmentsComponent,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DisableSendPolicyComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FamiliesForEnterpriseSetupComponent,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n HintComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n LockComponent,\n LoginComponent,\n MasterPasswordPolicyComponent,\n NavbarComponent,\n NestedCheckboxComponent,\n OrganizationSwitcherComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationLayoutComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgBulkStatusComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupsComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPoliciesComponent,\n OrgPolicyEditComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrgWeakPasswordsReportComponent,\n GeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordGeneratorPolicyComponent,\n PasswordRepromptComponent,\n PasswordStrengthComponent,\n PaymentComponent,\n PaymentMethodComponent,\n PersonalOwnershipPolicyComponent,\n PreferencesComponent,\n PremiumBadgeComponent,\n PremiumComponent,\n ProfileComponent,\n ProvidersComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n RemovePasswordComponent,\n ReportCardComponent,\n ReportListComponent,\n ReportsComponent,\n RequireSsoPolicyComponent,\n ResetPasswordPolicyComponent,\n ReusedPasswordsReportComponent,\n SecurityComponent,\n SecurityKeysComponent,\n SendAddEditComponent,\n SendComponent,\n SendEffluxDatesComponent,\n SendOptionsPolicyComponent,\n SetPasswordComponent,\n SettingsComponent,\n ShareComponent,\n SingleOrgPolicyComponent,\n SponsoredFamiliesComponent,\n SponsoringOrgRowComponent,\n SsoComponent,\n SubscriptionComponent,\n TaxInfoComponent,\n ToolsComponent,\n TwoFactorAuthenticationPolicyComponent,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdatePasswordComponent,\n UpdateTempPasswordComponent,\n UserBillingHistoryComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserVerificationComponent,\n VaultTimeoutInputComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ],\n})\nexport class LooseComponentsModule {}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Pipe({\n name: \"orgNameFromId\",\n pure: true,\n})\nexport class GetOrgNameFromIdPipe implements PipeTransform {\n transform(value: string, organizations: Organization[]) {\n const orgName = organizations.find((o) => o.id === value)?.name;\n return orgName;\n }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { GetOrgNameFromIdPipe } from \"./get-organization-name.pipe\";\n\n@NgModule({\n imports: [],\n declarations: [GetOrgNameFromIdPipe],\n exports: [GetOrgNameFromIdPipe],\n})\nexport class PipesModule {}\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { DatePipe, registerLocaleData, CommonModule } from \"@angular/common\";\nimport localeAf from \"@angular/common/locales/af\";\nimport localeAz from \"@angular/common/locales/az\";\nimport localeBe from \"@angular/common/locales/be\";\nimport localeBg from \"@angular/common/locales/bg\";\nimport localeBn from \"@angular/common/locales/bn\";\nimport localeBs from \"@angular/common/locales/bs\";\nimport localeCa from \"@angular/common/locales/ca\";\nimport localeCs from \"@angular/common/locales/cs\";\nimport localeDa from \"@angular/common/locales/da\";\nimport localeDe from \"@angular/common/locales/de\";\nimport localeEl from \"@angular/common/locales/el\";\nimport localeEnGb from \"@angular/common/locales/en-GB\";\nimport localeEnIn from \"@angular/common/locales/en-IN\";\nimport localeEo from \"@angular/common/locales/eo\";\nimport localeEs from \"@angular/common/locales/es\";\nimport localeEt from \"@angular/common/locales/et\";\nimport localeFi from \"@angular/common/locales/fi\";\nimport localeFil from \"@angular/common/locales/fil\";\nimport localeFr from \"@angular/common/locales/fr\";\nimport localeHe from \"@angular/common/locales/he\";\nimport localeHi from \"@angular/common/locales/hi\";\nimport localeHr from \"@angular/common/locales/hr\";\nimport localeHu from \"@angular/common/locales/hu\";\nimport localeId from \"@angular/common/locales/id\";\nimport localeIt from \"@angular/common/locales/it\";\nimport localeJa from \"@angular/common/locales/ja\";\nimport localeKa from \"@angular/common/locales/ka\";\nimport localeKm from \"@angular/common/locales/km\";\nimport localeKn from \"@angular/common/locales/kn\";\nimport localeKo from \"@angular/common/locales/ko\";\nimport localeLv from \"@angular/common/locales/lv\";\nimport localeMl from \"@angular/common/locales/ml\";\nimport localeNb from \"@angular/common/locales/nb\";\nimport localeNl from \"@angular/common/locales/nl\";\nimport localeNn from \"@angular/common/locales/nn\";\nimport localePl from \"@angular/common/locales/pl\";\nimport localePtBr from \"@angular/common/locales/pt\";\nimport localePtPt from \"@angular/common/locales/pt-PT\";\nimport localeRo from \"@angular/common/locales/ro\";\nimport localeRu from \"@angular/common/locales/ru\";\nimport localeSi from \"@angular/common/locales/si\";\nimport localeSk from \"@angular/common/locales/sk\";\nimport localeSl from \"@angular/common/locales/sl\";\nimport localeSr from \"@angular/common/locales/sr\";\nimport localeSv from \"@angular/common/locales/sv\";\nimport localeTr from \"@angular/common/locales/tr\";\nimport localeUk from \"@angular/common/locales/uk\";\nimport localeVi from \"@angular/common/locales/vi\";\nimport localeZhCn from \"@angular/common/locales/zh-Hans\";\nimport localeZhTw from \"@angular/common/locales/zh-Hant\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { RouterModule } from \"@angular/router\";\nimport { BadgeModule, ButtonModule, CalloutModule, MenuModule } from \"@bitwarden/components\";\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\nimport { ToastrModule } from \"ngx-toastr\";\n\nimport { JslibModule } from \"jslib-angular/jslib.module\";\n\nregisterLocaleData(localeAf, \"af\");\nregisterLocaleData(localeAz, \"az\");\nregisterLocaleData(localeBe, \"be\");\nregisterLocaleData(localeBg, \"bg\");\nregisterLocaleData(localeBn, \"bn\");\nregisterLocaleData(localeBs, \"bs\");\nregisterLocaleData(localeCa, \"ca\");\nregisterLocaleData(localeCs, \"cs\");\nregisterLocaleData(localeDa, \"da\");\nregisterLocaleData(localeDe, \"de\");\nregisterLocaleData(localeEl, \"el\");\nregisterLocaleData(localeEnGb, \"en-GB\");\nregisterLocaleData(localeEnIn, \"en-IN\");\nregisterLocaleData(localeEo, \"eo\");\nregisterLocaleData(localeEs, \"es\");\nregisterLocaleData(localeEt, \"et\");\nregisterLocaleData(localeFi, \"fi\");\nregisterLocaleData(localeFil, \"fil\");\nregisterLocaleData(localeFr, \"fr\");\nregisterLocaleData(localeHe, \"he\");\nregisterLocaleData(localeHi, \"hi\");\nregisterLocaleData(localeHr, \"hr\");\nregisterLocaleData(localeHu, \"hu\");\nregisterLocaleData(localeId, \"id\");\nregisterLocaleData(localeIt, \"it\");\nregisterLocaleData(localeJa, \"ja\");\nregisterLocaleData(localeKa, \"ka\");\nregisterLocaleData(localeKm, \"km\");\nregisterLocaleData(localeKn, \"kn\");\nregisterLocaleData(localeKo, \"ko\");\nregisterLocaleData(localeLv, \"lv\");\nregisterLocaleData(localeMl, \"ml\");\nregisterLocaleData(localeNb, \"nb\");\nregisterLocaleData(localeNl, \"nl\");\nregisterLocaleData(localeNn, \"nn\");\nregisterLocaleData(localePl, \"pl\");\nregisterLocaleData(localePtBr, \"pt-BR\");\nregisterLocaleData(localePtPt, \"pt-PT\");\nregisterLocaleData(localeRo, \"ro\");\nregisterLocaleData(localeRu, \"ru\");\nregisterLocaleData(localeSi, \"si\");\nregisterLocaleData(localeSk, \"sk\");\nregisterLocaleData(localeSl, \"sl\");\nregisterLocaleData(localeSr, \"sr\");\nregisterLocaleData(localeSv, \"sv\");\nregisterLocaleData(localeTr, \"tr\");\nregisterLocaleData(localeUk, \"uk\");\nregisterLocaleData(localeVi, \"vi\");\nregisterLocaleData(localeZhCn, \"zh-CN\");\nregisterLocaleData(localeZhTw, \"zh-TW\");\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n FormsModule,\n InfiniteScrollModule,\n JslibModule,\n ReactiveFormsModule,\n RouterModule,\n BadgeModule,\n ButtonModule,\n CalloutModule,\n ToastrModule,\n BadgeModule,\n ButtonModule,\n MenuModule,\n ],\n exports: [\n CommonModule,\n DragDropModule,\n FormsModule,\n InfiniteScrollModule,\n JslibModule,\n ReactiveFormsModule,\n RouterModule,\n BadgeModule,\n ButtonModule,\n CalloutModule,\n ToastrModule,\n BadgeModule,\n ButtonModule,\n MenuModule,\n ],\n providers: [DatePipe],\n bootstrap: [],\n})\nexport class SharedModule {}\n","import { Component } from \"@angular/core\";\n\nimport { CollectionFilterComponent as BaseCollectionFilterComponent } from \"jslib-angular/modules/vault-filter/components/collection-filter.component\";\n\n@Component({\n selector: \"app-collection-filter\",\n templateUrl: \"collection-filter.component.html\",\n})\nexport class CollectionFilterComponent extends BaseCollectionFilterComponent {}\n","\n
\n \n \n \n

 {{ collectionsGrouping.name | i18n }}

\n
\n
    \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n\n","import { Component } from \"@angular/core\";\n\nimport { FolderFilterComponent as BaseFolderFilterComponent } from \"jslib-angular/modules/vault-filter/components/folder-filter.component\";\n\n@Component({\n selector: \"app-folder-filter\",\n templateUrl: \"folder-filter.component.html\",\n})\nexport class FolderFilterComponent extends BaseFolderFilterComponent {}\n","\n
\n \n \n \n

 {{ \"folders\" | i18n }}

\n \n \n \n
\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n
\n \n\n","import { AfterContentInit, Component, Input } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { SsoComponent } from \"jslib-angular/components/sso.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuthService } from \"jslib-common/abstractions/auth.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-link-sso\",\n templateUrl: \"link-sso.component.html\",\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri = \"/settings/organizations\";\n\n constructor(\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n apiService: ApiService,\n authService: AuthService,\n router: Router,\n route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService,\n passwordGenerationService: PasswordGenerationService,\n stateService: StateService,\n environmentService: EnvironmentService,\n logService: LogService\n ) {\n super(\n authService,\n router,\n i18nService,\n route,\n stateService,\n platformUtilsService,\n apiService,\n cryptoFunctionService,\n environmentService,\n passwordGenerationService,\n logService\n );\n\n this.returnUri = \"/settings/organizations\";\n this.redirectUri = window.location.origin + \"/sso-connector.html\";\n this.clientId = \"web\";\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n","\n \n {{ \"linkSso\" | i18n }}\n\n","import { Component } from \"@angular/core\";\n\nimport { OrganizationFilterComponent as BaseOrganizationFilterComponent } from \"jslib-angular/modules/vault-filter/components/organization-filter.component\";\n\n@Component({\n selector: \"app-organization-filter\",\n templateUrl: \"organization-filter.component.html\",\n})\nexport class OrganizationFilterComponent extends BaseOrganizationFilterComponent {\n displayText = \"allVaults\";\n}\n","\n \n \n \n \n \n
\n \n \n \n \n  {{ organizationGrouping.name | i18n }}\n \n
\n \n \n \n
\n \n
\n
\n \n
\n \n \n \n \n  {{ organizationGrouping.name | i18n }}\n \n
\n \n
\n \n
\n\n","import { Component, Input } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\n\n@Component({\n selector: \"app-organization-options\",\n templateUrl: \"organization-options.component.html\",\n})\nexport class OrganizationOptionsComponent {\n actionPromise: Promise;\n policies: Policy[];\n loaded = false;\n\n @Input() organization: Organization;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private apiService: ApiService,\n private syncService: SyncService,\n private cryptoService: CryptoService,\n private policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.loaded = true;\n }\n\n allowEnrollmentChanges(org: Organization): boolean {\n if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) {\n const policy = this.policies.find((p) => p.organizationId === org.id);\n if (policy != null && policy.enabled) {\n return org.resetPasswordEnrolled && policy.data.autoEnrollEnabled ? false : true;\n }\n }\n\n return false;\n }\n\n showEnrolledStatus(org: Organization): boolean {\n return (\n org.useResetPassword &&\n org.resetPasswordEnrolled &&\n this.policies.some((p) => p.organizationId === org.id && p.enabled)\n );\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"unlinkSsoConfirmation\"),\n org.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, \"Unlinked SSO\");\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"leaveOrganizationConfirmation\"),\n org.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"leftOrganization\"));\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n\n async toggleResetPasswordEnrollment(org: Organization) {\n // Set variables\n let keyString: string = null;\n let toastStringRef = \"withdrawPasswordResetSuccess\";\n\n // Enrolling\n if (!org.resetPasswordEnrolled) {\n // Alert user about enrollment\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"resetPasswordEnrollmentWarning\"),\n null,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n // Retrieve Public Key\n this.actionPromise = this.apiService\n .getOrganizationKeys(org.id)\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n keyString = encryptedKey.encryptedString;\n toastStringRef = \"enrollPasswordResetSuccess\";\n\n // Create request and execute enrollment\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n return this.apiService.putOrganizationUserResetPasswordEnrollment(\n org.id,\n org.userId,\n request\n );\n })\n .then(() => {\n return this.syncService.fullSync(true);\n });\n } else {\n // Withdrawal\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n this.actionPromise = this.apiService\n .putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request)\n .then(() => {\n return this.syncService.fullSync(true);\n });\n }\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(toastStringRef));\n await this.load();\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", this.i18nService.t(\"errorOccurred\"), e.message);\n this.logService.error(e);\n }\n }\n}\n","\n \n {{ \"loading\" | i18n }}\n\n
\n \n \n {{ \"enrollPasswordReset\" | i18n }}\n \n \n \n {{ \"withdrawPasswordReset\" | i18n }}\n \n \n \n \n {{ \"unlinkSso\" | i18n }}\n \n \n \n \n \n \n
\n","import { Component } from \"@angular/core\";\n\nimport { StatusFilterComponent as BaseStatusFilterComponent } from \"jslib-angular/modules/vault-filter/components/status-filter.component\";\n\n@Component({\n selector: \"app-status-filter\",\n templateUrl: \"status-filter.component.html\",\n})\nexport class StatusFilterComponent extends BaseStatusFilterComponent {}\n","\n
    \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n \n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { TypeFilterComponent as BaseTypeFilterComponent } from \"jslib-angular/modules/vault-filter/components/type-filter.component\";\n\n@Component({\n selector: \"app-type-filter\",\n templateUrl: \"type-filter.component.html\",\n})\nexport class TypeFilterComponent extends BaseTypeFilterComponent {}\n","
\n \n \n \n

 {{ \"types\" | i18n }}

\n
\n
    \n \n \n \n \n \n
  • \n \n \n \n
  • \n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { VaultFilterComponent } from \"./vault-filter.component\";\n\n@Component({\n selector: \"app-organization-vault-filter\",\n templateUrl: \"vault-filter.component.html\",\n})\nexport class OrganizationVaultFilterComponent extends VaultFilterComponent {\n hideOrganizations = true;\n hideFavorites = true;\n hideFolders = true;\n\n organization: Organization;\n\n async initCollections() {\n if (this.organization.canEditAnyCollection) {\n return await this.vaultFilterService.buildAdminCollections(this.organization.id);\n }\n return await this.vaultFilterService.buildCollections(this.organization.id);\n }\n\n async reloadCollectionsAndFolders() {\n this.collections = await this.initCollections();\n }\n}\n","
\n
\n \n
\n
\n
\n {{ \"filters\" | i18n }}\n \n \n \n
\n
\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, EventEmitter, Output } from \"@angular/core\";\n\nimport { VaultFilterComponent as BaseVaultFilterComponent } from \"jslib-angular/modules/vault-filter/vault-filter.component\";\n\nimport { VaultFilterService } from \"./vault-filter.service\";\n\n@Component({\n selector: \"app-vault-filter\",\n templateUrl: \"vault-filter.component.html\",\n})\nexport class VaultFilterComponent extends BaseVaultFilterComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchPlaceholder: string;\n searchText = \"\";\n\n constructor(protected vaultFilterService: VaultFilterService) {\n // This empty constructor is required to provide the web vaultFilterService subclass to super()\n // TODO: refactor this to use proper dependency injection\n super(vaultFilterService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n\n // This method exists because the vault component gets its data mixed up during the initial sync on first login. It looks for data before the sync is complete.\n // It should be removed as soon as doing so makes sense.\n async reloadOrganizations() {\n this.organizations = await this.vaultFilterService.buildOrganizations();\n this.activePersonalOwnershipPolicy =\n await this.vaultFilterService.checkForPersonalOwnershipPolicy();\n this.activeSingleOrganizationPolicy =\n await this.vaultFilterService.checkForSingleOrganizationPolicy();\n }\n}\n","import { NgModule } from \"@angular/core\";\n\nimport { SharedModule } from \"../shared.module\";\n\nimport { CollectionFilterComponent } from \"./components/collection-filter.component\";\nimport { FolderFilterComponent } from \"./components/folder-filter.component\";\nimport { LinkSsoComponent } from \"./components/link-sso.component\";\nimport { OrganizationFilterComponent } from \"./components/organization-filter.component\";\nimport { OrganizationOptionsComponent } from \"./components/organization-options.component\";\nimport { StatusFilterComponent } from \"./components/status-filter.component\";\nimport { TypeFilterComponent } from \"./components/type-filter.component\";\nimport { OrganizationVaultFilterComponent } from \"./organization-vault-filter.component\";\nimport { VaultFilterComponent } from \"./vault-filter.component\";\nimport { VaultFilterService } from \"./vault-filter.service\";\n\n@NgModule({\n imports: [SharedModule],\n declarations: [\n VaultFilterComponent,\n CollectionFilterComponent,\n FolderFilterComponent,\n OrganizationFilterComponent,\n OrganizationOptionsComponent,\n StatusFilterComponent,\n TypeFilterComponent,\n OrganizationVaultFilterComponent,\n LinkSsoComponent,\n ],\n exports: [VaultFilterComponent, OrganizationVaultFilterComponent],\n providers: [VaultFilterService],\n})\nexport class VaultFilterModule {}\n","import { Injectable } from \"@angular/core\";\n\nimport { DynamicTreeNode } from \"jslib-angular/modules/vault-filter/models/dynamic-tree-node.model\";\nimport { VaultFilterService as BaseVaultFilterService } from \"jslib-angular/modules/vault-filter/vault-filter.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { CollectionDetailsResponse } from \"jslib-common/models/response/collectionResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Injectable()\nexport class VaultFilterService extends BaseVaultFilterService {\n constructor(\n stateService: StateService,\n organizationService: OrganizationService,\n folderService: FolderService,\n cipherService: CipherService,\n collectionService: CollectionService,\n policyService: PolicyService,\n protected apiService: ApiService\n ) {\n super(\n stateService,\n organizationService,\n folderService,\n cipherService,\n collectionService,\n policyService\n );\n }\n\n async buildAdminCollections(organizationId: string) {\n let result: CollectionView[] = [];\n const collectionResponse = await this.apiService.getCollections(organizationId);\n if (collectionResponse?.data != null && collectionResponse.data.length) {\n const collectionDomains = collectionResponse.data.map(\n (r: CollectionDetailsResponse) => new Collection(new CollectionData(r))\n );\n result = await this.collectionService.decryptMany(collectionDomains);\n }\n\n const nestedCollections = await this.collectionService.getAllNested(result);\n return new DynamicTreeNode({\n fullList: result,\n nestedList: nestedCollections,\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { IndividualVaultComponent } from \"./individual-vault.component\";\nconst routes: Routes = [\n {\n path: \"\",\n component: IndividualVaultComponent,\n data: { titleId: \"vaults\" },\n },\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class IndividualVaultRoutingModule {}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { UpdateKeyComponent } from \"../../../../settings/update-key.component\";\nimport { AddEditComponent } from \"../../../../vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../../../../vault/attachments.component\";\nimport { CiphersComponent } from \"../../../../vault/ciphers.component\";\nimport { CollectionsComponent } from \"../../../../vault/collections.component\";\nimport { FolderAddEditComponent } from \"../../../../vault/folder-add-edit.component\";\nimport { ShareComponent } from \"../../../../vault/share.component\";\nimport { VaultFilterComponent } from \"../../../vault-filter/vault-filter.component\";\nimport { VaultService } from \"../../vault.service\";\n\nconst BroadcasterSubscriptionId = \"VaultComponent\";\n\n@Component({\n selector: \"app-vault\",\n templateUrl: \"individual-vault.component.html\",\n})\nexport class IndividualVaultComponent implements OnInit, OnDestroy {\n @ViewChild(\"vaultFilter\", { static: true }) filterComponent: VaultFilterComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n @ViewChild(\"folderAddEdit\", { read: ViewContainerRef, static: true })\n folderAddEditModalRef: ViewContainerRef;\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"share\", { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild(\"collections\", { read: ViewContainerRef, static: true })\n collectionsModalRef: ViewContainerRef;\n @ViewChild(\"updateKeyTemplate\", { read: ViewContainerRef, static: true })\n updateKeyModalRef: ViewContainerRef;\n\n favorites = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n organizationId: string = null;\n myVaultOnly = false;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n deleted = false;\n trashCleanupWarning: string = null;\n activeFilter: VaultFilter = new VaultFilter();\n\n constructor(\n private syncService: SyncService,\n private route: ActivatedRoute,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService,\n private modalService: ModalService,\n private tokenService: TokenService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private platformUtilsService: PlatformUtilsService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private stateService: StateService,\n private organizationService: OrganizationService,\n private vaultService: VaultService,\n private cipherService: CipherService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf(\"MSIE\") !== -1;\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost()\n ? \"trashCleanupWarningSelfHosted\"\n : \"trashCleanupWarning\"\n );\n\n this.route.queryParams.pipe(first()).subscribe(async (params) => {\n await this.syncService.fullSync(false);\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n this.showPremiumCallout =\n !this.showVerifyEmail && !canAccessPremium && !this.platformUtilsService.isSelfHost();\n\n this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n this.filterComponent.reloadOrganizations();\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n\n if (params.cipherId) {\n const cipherView = new CipherView();\n cipherView.id = params.cipherId;\n if (params.action === \"clone\") {\n await this.cloneCipher(cipherView);\n } else if (params.action === \"edit\") {\n await this.editCipher(cipherView);\n }\n }\n await this.ciphersComponent.reload();\n\n this.route.queryParams.subscribe(async (params) => {\n if (params.cipherId) {\n if ((await this.cipherService.get(params.cipherId)) != null) {\n this.editCipherId(params.cipherId);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unknownCipher\")\n );\n this.router.navigate([], {\n queryParams: { cipherId: null },\n queryParamsHandling: \"merge\",\n });\n }\n }\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await Promise.all([\n this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),\n this.filterComponent.reloadOrganizations(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n });\n }\n\n get isShowingCards() {\n return (\n this.showBrowserOutdated ||\n this.showPremiumCallout ||\n this.showUpdateKey ||\n this.showVerifyEmail\n );\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async applyVaultFilter(vaultFilter: VaultFilter) {\n this.ciphersComponent.showAddNew = vaultFilter.status !== \"trash\";\n this.activeFilter = vaultFilter;\n await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === \"trash\");\n this.filterComponent.searchPlaceholder = this.vaultService.calculateSearchBarLocalizationString(\n this.activeFilter\n );\n this.go();\n }\n\n async applyOrganizationFilter(orgId: string) {\n if (orgId == null) {\n this.activeFilter.resetOrganization();\n this.activeFilter.myVaultOnly = true;\n } else {\n this.activeFilter.selectedOrganizationId = orgId;\n }\n await this.applyVaultFilter(this.activeFilter);\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n private buildFilter(): (cipher: CipherView) => boolean {\n return (cipher) => {\n let cipherPassesFilter = true;\n if (this.activeFilter.status === \"favorites\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.favorite;\n }\n if (this.activeFilter.status === \"trash\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.isDeleted;\n }\n if (this.activeFilter.cipherType != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.type === this.activeFilter.cipherType;\n }\n if (\n this.activeFilter.selectedFolder &&\n this.activeFilter.selectedFolderId != \"none\" &&\n cipherPassesFilter\n ) {\n cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) {\n cipherPassesFilter =\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1;\n }\n if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId;\n }\n if (this.activeFilter.myVaultOnly && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === null;\n }\n return cipherPassesFilter;\n };\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.stateService.getCanAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.organizationService.get(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send(\"upgradeOrganization\", {\n organizationId: cipher.organizationId,\n });\n return;\n }\n }\n\n let madeAttachmentChanges = false;\n const [modal] = await this.modalService.openViewRef(\n AttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onReuploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n }\n );\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async shareCipher(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n ShareComponent,\n this.shareModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onSharedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n CollectionsComponent,\n this.collectionsModalRef,\n (comp) => {\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async addFolder() {\n const [modal] = await this.modalService.openViewRef(\n FolderAddEditComponent,\n this.folderAddEditModalRef,\n (comp) => {\n comp.folderId = null;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n }\n );\n }\n\n async editFolder(folderId: string) {\n const [modal] = await this.modalService.openViewRef(\n FolderAddEditComponent,\n this.folderAddEditModalRef,\n (comp) => {\n comp.folderId = folderId;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n comp.onDeletedFolder.subscribe(async () => {\n modal.close();\n await this.filterComponent.reloadCollectionsAndFolders(this.activeFilter);\n });\n }\n );\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === \"none\" ? null : this.folderId;\n if (this.activeFilter.selectedCollectionId != null) {\n const collection = this.filterComponent.collections.fullList.filter(\n (c) => c.id === this.activeFilter.selectedCollectionId\n );\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.activeFilter.selectedCollectionId];\n }\n }\n if (this.activeFilter.selectedFolderId && this.activeFilter.selectedFolder) {\n component.folderId = this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedOrganizationId) {\n component.organizationId = this.activeFilter.selectedOrganizationId;\n }\n }\n\n async editCipher(cipher: CipherView) {\n return this.editCipherId(cipher?.id);\n }\n\n async editCipherId(id: string) {\n const cipher = await this.cipherService.get(id);\n if (cipher != null && cipher.reprompt != 0) {\n if (!(await this.passwordRepromptService.showPasswordPrompt())) {\n this.go({ cipherId: null });\n return;\n }\n }\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.cipherId = id;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n\n modal.onClosedPromise().then(() => {\n this.go({ cipherId: null });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n async updateKey() {\n await this.modalService.openViewRef(UpdateKeyComponent, this.updateKeyModalRef);\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: \"merge\",\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n {{ \"vaultItems\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n \n \n {{ \"addItem\" | i18n }}\n \n
\n
\n \n {{ trashCleanupWarning }}\n \n \n \n
\n
\n
\n
\n \n {{ \"updateKeyTitle\" | i18n }}\n
\n
\n

{{ \"updateEncryptionKeyShortDesc\" | i18n }}

\n \n
\n
\n \n
\n
\n \n {{ \"updateBrowser\" | i18n }}\n
\n
\n

{{ \"updateBrowserDesc\" | i18n }}

\n \n {{ \"updateBrowser\" | i18n }}\n \n
\n
\n
\n
\n {{ \"goPremium\" | i18n }}\n
\n
\n

{{ \"premiumUpgradeUnlockFeatures\" | i18n }}

\n \n {{ \"goPremium\" | i18n }}\n \n
\n
\n
\n
\n
\n\n\n\n\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { VaultModule } from \"../../vault.module\";\n\nimport { IndividualVaultRoutingModule } from \"./individual-vault-routing.module\";\nimport { IndividualVaultComponent } from \"./individual-vault.component\";\n\n@NgModule({\n imports: [VaultModule, IndividualVaultRoutingModule],\n declarations: [IndividualVaultComponent],\n exports: [IndividualVaultComponent],\n})\nexport class IndividualVaultModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { SharedModule } from \"../../../shared.module\";\n\nimport { OrganizationNameBadgeComponent } from \"./organization-name-badge.component\";\n\n@NgModule({\n imports: [SharedModule],\n declarations: [OrganizationNameBadgeComponent],\n exports: [OrganizationNameBadgeComponent],\n})\nexport class OrganizationBadgeModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-org-badge\",\n templateUrl: \"organization-name-badge.component.html\",\n})\nexport class OrganizationNameBadgeComponent implements OnInit {\n @Input() organizationName: string;\n @Input() profileName: string;\n\n @Output() onOrganizationClicked = new EventEmitter();\n\n color: string;\n textColor: string;\n\n constructor(private i18nService: I18nService) {}\n\n ngOnInit(): void {\n if (this.organizationName == null || this.organizationName === \"\") {\n this.organizationName = this.i18nService.t(\"me\");\n this.color = this.stringToColor(this.profileName.toUpperCase());\n }\n if (this.color == null) {\n this.color = this.stringToColor(this.organizationName.toUpperCase());\n }\n this.textColor = this.pickTextColorBasedOnBgColor();\n }\n\n // This value currently isn't stored anywhere, only calculated in the app-avatar component\n // Once we are allowing org colors to be changed and saved, change this out\n private stringToColor(str: string): string {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n let color = \"#\";\n for (let i = 0; i < 3; i++) {\n const value = (hash >> (i * 8)) & 0xff;\n color += (\"00\" + value.toString(16)).substr(-2);\n }\n return color;\n }\n\n // There are a few ways to calculate text color for contrast, this one seems to fit accessibility guidelines best.\n // https://stackoverflow.com/a/3943023/6869691\n private pickTextColorBasedOnBgColor() {\n const color = this.color.charAt(0) === \"#\" ? this.color.substring(1, 7) : this.color;\n const r = parseInt(color.substring(0, 2), 16); // hexToR\n const g = parseInt(color.substring(2, 4), 16); // hexToG\n const b = parseInt(color.substring(4, 6), 16); // hexToB\n return r * 0.299 + g * 0.587 + b * 0.114 > 186 ? \"black !important\" : \"white !important\";\n }\n\n emitOnOrganizationClicked() {\n this.onOrganizationClicked.emit();\n }\n}\n","\n {{ organizationName | ellipsis: 13 }}\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { OrganizationVaultComponent } from \"./organization-vault.component\";\nconst routes: Routes = [\n {\n path: \"\",\n component: OrganizationVaultComponent,\n data: { titleId: \"vaults\" },\n },\n];\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationVaultRoutingModule {}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { EntityEventsComponent } from \"../../../../organizations/manage/entity-events.component\";\nimport { AddEditComponent } from \"../../../../organizations/vault/add-edit.component\";\nimport { AttachmentsComponent } from \"../../../../organizations/vault/attachments.component\";\nimport { CiphersComponent } from \"../../../../organizations/vault/ciphers.component\";\nimport { CollectionsComponent } from \"../../../../organizations/vault/collections.component\";\nimport { OrganizationVaultFilterComponent } from \"../../../vault-filter/organization-vault-filter.component\";\nimport { VaultService } from \"../../vault.service\";\n\nconst BroadcasterSubscriptionId = \"OrgVaultComponent\";\n\n@Component({\n selector: \"app-org-vault\",\n templateUrl: \"organization-vault.component.html\",\n})\nexport class OrganizationVaultComponent implements OnInit, OnDestroy {\n @ViewChild(\"vaultFilter\", { static: true })\n vaultFilterComponent: OrganizationVaultFilterComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"collections\", { read: ViewContainerRef, static: true })\n collectionsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted = false;\n trashCleanupWarning: string = null;\n activeFilter: VaultFilter = new VaultFilter();\n\n // This is a hack to avoid redundant api calls that fetch OrganizationVaultFilterComponent collections\n // When it makes sense to do so we should leverage some other communication method for change events that isn't directly tied to the query param for organizationId\n // i.e. exposing the VaultFiltersService to the OrganizationSwitcherComponent to make relevant updates from a change event instead of just depending on the router\n firstLoaded = true;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private router: Router,\n private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private messagingService: MessagingService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService,\n private vaultService: VaultService,\n private cipherService: CipherService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n ngOnInit() {\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost()\n ? \"trashCleanupWarningSelfHosted\"\n : \"trashCleanupWarning\"\n );\n this.route.parent.params.subscribe(async (params: any) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.vaultFilterComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.ciphersComponent.searchText = this.vaultFilterComponent.searchText = qParams.search;\n if (!this.organization.canViewAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await Promise.all([\n this.vaultFilterComponent.reloadCollectionsAndFolders(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n\n if (!this.firstLoaded) {\n await this.vaultFilterComponent.reloadCollectionsAndFolders();\n }\n this.firstLoaded = false;\n\n await this.ciphersComponent.reload();\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter((c) => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n this.route.queryParams.subscribe(async (params) => {\n if (params.cipherId) {\n if (\n // Handle users with implicit collection access since they use the admin endpoint\n this.organization.canEditAnyCollection ||\n (await this.cipherService.get(params.cipherId)) != null\n ) {\n this.editCipherId(params.cipherId);\n } else {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unknownCipher\")\n );\n this.router.navigate([], {\n queryParams: { cipherId: null },\n queryParamsHandling: \"merge\",\n });\n }\n }\n });\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async applyVaultFilter(vaultFilter: VaultFilter) {\n this.ciphersComponent.showAddNew = vaultFilter.status !== \"trash\";\n this.activeFilter = vaultFilter;\n await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === \"trash\");\n this.vaultFilterComponent.searchPlaceholder =\n this.vaultService.calculateSearchBarLocalizationString(this.activeFilter);\n this.go();\n }\n\n private buildFilter(): (cipher: CipherView) => boolean {\n return (cipher) => {\n let cipherPassesFilter = true;\n if (this.activeFilter.status === \"favorites\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.favorite;\n }\n if (this.activeFilter.status === \"trash\" && cipherPassesFilter) {\n cipherPassesFilter = cipher.isDeleted;\n }\n if (this.activeFilter.cipherType != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.type === this.activeFilter.cipherType;\n }\n if (\n this.activeFilter.selectedFolder != null &&\n this.activeFilter.selectedFolderId != \"none\" &&\n cipherPassesFilter\n ) {\n cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId;\n }\n if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) {\n cipherPassesFilter =\n cipher.collectionIds != null &&\n cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1;\n }\n if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId;\n }\n if (this.activeFilter.myVaultOnly && cipherPassesFilter) {\n cipherPassesFilter = cipher.organizationId === null;\n }\n return cipherPassesFilter;\n };\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: cipher.organizationId });\n return;\n }\n\n let madeAttachmentChanges = false;\n\n const [modal] = await this.modalService.openViewRef(\n AttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => (madeAttachmentChanges = true));\n comp.onDeletedAttachment.subscribe(() => (madeAttachmentChanges = true));\n }\n );\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(\n CollectionsComponent,\n this.collectionsModalRef,\n (comp) => {\n if (this.organization.canEditAnyCollection) {\n comp.collectionIds = cipher.collectionIds;\n comp.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n async editCipher(cipher: CipherView) {\n return this.editCipherId(cipher?.id);\n }\n\n async editCipherId(cipherId: string) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher != null && cipher.reprompt != 0) {\n if (!(await this.passwordRepromptService.showPasswordPrompt())) {\n this.go({ cipherId: null });\n return;\n }\n }\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.organization = this.organization;\n comp.cipherId = cipherId;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n\n modal.onClosedPromise().then(() => {\n this.go({ cipherId: null });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.vaultFilterComponent.collections.fullList.filter(\n (c) => !c.readOnly\n );\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = cipher.name;\n comp.organizationId = this.organization.id;\n comp.entityId = cipher.id;\n comp.showUser = true;\n comp.entity = \"cipher\";\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: \"merge\",\n replaceUrl: true,\n });\n }\n}\n","
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n

\n {{ \"vaultItems\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n \n \n {{ \"addItem\" | i18n }}\n \n
\n
\n \n {{ trashCleanupWarning }}\n \n \n \n
\n
\n
\n\n\n\n\n","import { NgModule } from \"@angular/core\";\n\nimport { VaultModule } from \"../../vault.module\";\n\nimport { OrganizationVaultRoutingModule } from \"./organization-vault-routing.module\";\nimport { OrganizationVaultComponent } from \"./organization-vault.component\";\n\n@NgModule({\n imports: [VaultModule, OrganizationVaultRoutingModule],\n declarations: [OrganizationVaultComponent],\n exports: [OrganizationVaultComponent],\n})\nexport class OrganizationVaultModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { LooseComponentsModule } from \"../loose-components.module\";\nimport { SharedModule } from \"../shared.module\";\nimport { VaultFilterModule } from \"../vault-filter/vault-filter.module\";\n\nimport { VaultService } from \"./vault.service\";\n\n@NgModule({\n imports: [SharedModule, VaultFilterModule, LooseComponentsModule],\n exports: [SharedModule, VaultFilterModule, LooseComponentsModule],\n providers: [\n {\n provide: VaultService,\n useClass: VaultService,\n },\n ],\n})\nexport class VaultModule {}\n","import { VaultFilter } from \"jslib-angular/modules/vault-filter/models/vault-filter.model\";\n\nexport class VaultService {\n calculateSearchBarLocalizationString(vaultFilter: VaultFilter): string {\n if (vaultFilter.status === \"favorites\") {\n return \"searchFavorites\";\n }\n if (vaultFilter.status === \"trash\") {\n return \"searchTrash\";\n }\n if (vaultFilter.cipherType != null) {\n return \"searchType\";\n }\n if (vaultFilter.selectedFolderId != null && vaultFilter.selectedFolderId != \"none\") {\n return \"searchFolder\";\n }\n if (vaultFilter.selectedCollectionId != null) {\n return \"searchCollection\";\n }\n if (vaultFilter.selectedOrganizationId != null) {\n return \"searchOrganization\";\n }\n if (vaultFilter.myVaultOnly) {\n return \"searchMyVault\";\n }\n\n return \"searchVault\";\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\n@Injectable()\nexport class PermissionsGuard implements CanActivate {\n constructor(\n private router: Router,\n private organizationService: OrganizationService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private syncService: SyncService\n ) {}\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // TODO: We need to fix this issue once and for all.\n if ((await this.syncService.getLastSync()) == null) {\n await this.syncService.fullSync(false);\n }\n\n const org = await this.organizationService.get(route.params.organizationId);\n if (org == null) {\n return this.router.createUrlTree([\"/\"]);\n }\n\n if (!org.isOwner && !org.enabled) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"organizationIsDisabled\")\n );\n return this.router.createUrlTree([\"/\"]);\n }\n\n const permissions = route.data == null ? [] : (route.data.permissions as Permissions[]);\n if (permissions != null && !org.hasAnyPermission(permissions)) {\n // Handle linkable ciphers for organizations the user only has view access to\n // https://bitwarden.atlassian.net/browse/EC-203\n if (state.root.queryParamMap.has(\"cipherId\")) {\n return this.router.createUrlTree([\"/vault\"], {\n queryParams: {\n cipherId: state.root.queryParamMap.get(\"cipherId\"),\n },\n });\n }\n\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"accessDenied\"));\n return this.router.createUrlTree([\"/\"]);\n }\n\n return true;\n }\n}\n","import { Component, NgZone, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { NavigationPermissionsService } from \"../services/navigation-permissions.service\";\n\nconst BroadcasterSubscriptionId = \"OrganizationLayoutComponent\";\n\n@Component({\n selector: \"app-organization-layout\",\n templateUrl: \"organization-layout.component.html\",\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone\n ) {}\n\n ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.params.subscribe(async (params: any) => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"updatedOrgLicense\":\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n }\n\n get showManageTab(): boolean {\n return NavigationPermissionsService.canAccessManage(this.organization);\n }\n\n get showToolsTab(): boolean {\n return NavigationPermissionsService.canAccessTools(this.organization);\n }\n\n get showSettingsTab(): boolean {\n return NavigationPermissionsService.canAccessSettings(this.organization);\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport\n ? \"tools/import\"\n : \"tools/exposed-passwords-report\";\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = \"manage/people\";\n break;\n case this.organization.canViewAssignedCollections || this.organization.canViewAllCollections:\n route = \"manage/collections\";\n break;\n case this.organization.canManageGroups:\n route = \"manage/groups\";\n break;\n case this.organization.canManagePolicies:\n route = \"manage/policies\";\n break;\n case this.organization.canAccessEventLogs:\n route = \"manage/events\";\n break;\n }\n return route;\n }\n}\n","\n\n\n\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { OrganizationUserBulkConfirmRequest } from \"jslib-common/models/request/organizationUserBulkConfirmRequest\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\n\nimport { BulkUserDetails } from \"./bulk-status.component\";\n\n@Component({\n selector: \"app-bulk-confirm\",\n templateUrl: \"bulk-confirm.component.html\",\n})\nexport class BulkConfirmComponent implements OnInit {\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n excludedUsers: BulkUserDetails[];\n filteredUsers: BulkUserDetails[];\n publicKeys: Map = new Map();\n fingerprints: Map = new Map();\n statuses: Map = new Map();\n\n loading = true;\n done = false;\n error: string;\n\n constructor(\n protected cryptoService: CryptoService,\n protected apiService: ApiService,\n private i18nService: I18nService\n ) {}\n\n async ngOnInit() {\n this.excludedUsers = this.users.filter((u) => !this.isAccepted(u));\n this.filteredUsers = this.users.filter((u) => this.isAccepted(u));\n\n if (this.filteredUsers.length <= 0) {\n this.done = true;\n }\n\n const response = await this.getPublicKeys();\n\n for (const entry of response.data) {\n const publicKey = Utils.fromB64ToArray(entry.key);\n const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.publicKeys.set(entry.id, publicKey);\n this.fingerprints.set(entry.id, fingerprint.join(\"-\"));\n }\n }\n\n this.loading = false;\n }\n\n async submit() {\n this.loading = true;\n try {\n const key = await this.getCryptoKey();\n const userIdsWithKeys: any[] = [];\n for (const user of this.filteredUsers) {\n const publicKey = this.publicKeys.get(user.id);\n if (publicKey == null) {\n continue;\n }\n const encryptedKey = await this.cryptoService.rsaEncrypt(key.key, publicKey.buffer);\n userIdsWithKeys.push({\n id: user.id,\n key: encryptedKey.encryptedString,\n });\n }\n const response = await this.postConfirmRequest(userIdsWithKeys);\n\n response.data.forEach((entry) => {\n const error = entry.error !== \"\" ? entry.error : this.i18nService.t(\"bulkConfirmMessage\");\n this.statuses.set(entry.id, error);\n });\n\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n this.loading = false;\n }\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === OrganizationUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new OrganizationUserBulkRequest(this.filteredUsers.map((user) => user.id));\n return await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getOrgKey(this.organizationId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request);\n }\n}\n","import { Component, Input } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\n\nimport { BulkUserDetails } from \"./bulk-status.component\";\n\n@Component({\n selector: \"app-bulk-remove\",\n templateUrl: \"bulk-remove.component.html\",\n})\nexport class BulkRemoveComponent {\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n statuses: Map = new Map();\n\n loading = false;\n done = false;\n error: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService) {}\n\n async submit() {\n this.loading = true;\n try {\n const response = await this.deleteUsers();\n\n response.data.forEach((entry) => {\n const error = entry.error !== \"\" ? entry.error : this.i18nService.t(\"bulkRemovedMessage\");\n this.statuses.set(entry.id, error);\n });\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n\n this.loading = false;\n }\n\n protected async deleteUsers() {\n const request = new OrganizationUserBulkRequest(this.users.map((user) => user.id));\n return await this.apiService.deleteManyOrganizationUsers(this.organizationId, request);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"bulkConfirmStatus\" | i18n }}\n

\n \n ×\n \n
\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"user\" | i18n }}{{ \"status\" | i18n }}
\n \n \n {{ item.user.email }}\n {{ item.user.name }}\n \n {{ item.message }}\n \n {{ item.message }}\n
\n
\n
\n \n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { ProviderUserStatusType } from \"jslib-common/enums/providerUserStatusType\";\n\nexport interface BulkUserDetails {\n id: string;\n name: string;\n email: string;\n status: OrganizationUserStatusType | ProviderUserStatusType;\n}\n\ntype BulkStatusEntry = {\n user: BulkUserDetails;\n error: boolean;\n message: string;\n};\n\n@Component({\n selector: \"app-bulk-status\",\n templateUrl: \"bulk-status.component.html\",\n})\nexport class BulkStatusComponent {\n users: BulkStatusEntry[];\n loading = false;\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { CollectionRequest } from \"jslib-common/models/request/collectionRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\n@Component({\n selector: \"app-collection-add-edit\",\n templateUrl: \"collection-add-edit.component.html\",\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Input() canSave: boolean;\n @Input() canDelete: boolean;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode = false;\n accessGroups = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n const organization = await this.organizationService.get(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data\n .map((r) => r)\n .sort(Utils.getSortFunction(this.i18nService, \"name\"));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editCollection\");\n try {\n const collection = await this.apiService.getCollectionDetails(\n this.organizationId,\n this.collectionId\n );\n this.name = await this.cryptoService.decryptToUtf8(\n new EncString(collection.name),\n this.orgKey\n );\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach((s) => {\n const group = this.groups.filter((g) => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"addCollection\");\n }\n\n this.groups.forEach((g) => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error(\"No encryption key for this organization.\");\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups\n .filter((g) => (g as any).checked && !g.accessAll)\n .map(\n (g) => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords)\n );\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(\n this.organizationId,\n this.collectionId,\n request\n );\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedCollectionId\" : \"createdCollectionId\", this.name)\n );\n this.onSavedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteCollectionConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedCollectionId\", this.name)\n );\n this.onDeletedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"externalIdDesc\" | i18n }}\n
\n \n

\n {{ \"groupAccess\" | i18n }}\n
\n \n \n
\n

\n
\n {{ \"noGroupsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 {{ \"name\" | i18n }}{{ \"hidePasswords\" | i18n }}{{ \"readOnly\" | i18n }}
\n \n \n {{ g.name }}\n \n \n {{ \"groupAccessAllItems\" | i18n }}\n \n \n \n \n \n
\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from \"jslib-common/models/response/collectionResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\nimport { CollectionAddEditComponent } from \"./collection-add-edit.component\";\nimport { EntityUsersComponent } from \"./entity-users.component\";\n\n@Component({\n selector: \"app-org-manage-collections\",\n templateUrl: \"collections.component.html\",\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"usersTemplate\", { read: ViewContainerRef, static: true })\n usersModalRef: ViewContainerRef;\n\n loading = true;\n organization: Organization;\n canCreate = false;\n organizationId: string;\n collections: CollectionView[];\n assignedCollections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private collectionService: CollectionService,\n private modalService: ModalService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private searchService: SearchService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n this.organization = await this.organizationService.get(this.organizationId);\n this.canCreate = this.organization.canCreateNewCollections;\n\n const decryptCollections = async (r: ListResponse) => {\n const collections = r.data\n .filter((c) => c.organizationId === this.organizationId)\n .map((d) => new Collection(new CollectionData(d as CollectionDetailsResponse)));\n return await this.collectionService.decryptMany(collections);\n };\n\n if (this.organization.canViewAssignedCollections) {\n const response = await this.apiService.getUserCollections();\n this.assignedCollections = await decryptCollections(response);\n }\n\n if (this.organization.canViewAllCollections) {\n const response = await this.apiService.getCollections(this.organizationId);\n this.collections = await decryptCollections(response);\n } else {\n this.collections = this.assignedCollections;\n }\n\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections = this.pagedCollections.concat(\n this.collections.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n async edit(collection: CollectionView) {\n const canCreate = collection == null && this.canCreate;\n const canEdit = collection != null && this.canEdit(collection);\n const canDelete = collection != null && this.canDelete(collection);\n\n if (!(canCreate || canEdit || canDelete)) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingPermissions\"));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n CollectionAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.collectionId = collection != null ? collection.id : null;\n comp.canSave = canCreate || canEdit;\n comp.canDelete = canDelete;\n comp.onSavedCollection.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedCollection.subscribe(() => {\n modal.close();\n this.removeCollection(collection);\n });\n }\n );\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteCollectionConfirmation\"),\n collection.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedCollectionId\", collection.name)\n );\n this.removeCollection(collection);\n } catch (e) {\n this.logService.error(e);\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingPermissions\"));\n }\n }\n\n async users(collection: CollectionView) {\n const [modal] = await this.modalService.openViewRef(\n EntityUsersComponent,\n this.usersModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.entity = \"collection\";\n comp.entityId = collection.id;\n comp.entityName = collection.name;\n\n comp.onEditedUsers.subscribe(() => {\n this.load();\n modal.close();\n });\n }\n );\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n canEdit(collection: CollectionView) {\n if (this.organization.canEditAnyCollection) {\n return true;\n }\n\n if (\n this.organization.canEditAssignedCollections &&\n this.assignedCollections.some((c) => c.id === collection.id)\n ) {\n return true;\n }\n return false;\n }\n\n canDelete(collection: CollectionView) {\n if (this.organization.canDeleteAnyCollection) {\n return true;\n }\n\n if (\n this.organization.canDeleteAssignedCollections &&\n this.assignedCollections.some((c) => c.id === collection.id)\n ) {\n return true;\n }\n return false;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{ \"collections\" | i18n }}

\n
\n
\n \n \n
\n \n \n {{ \"newCollection\" | i18n }}\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noCollectionsInList\" | i18n }}

\n \n \n \n \n {{ c.name }}\n \n \n
\n \n \n \n
\n \n \n {{ \"users\" | i18n }}\n \n \n \n {{ \"delete\" | i18n }}\n \n
\n
\n \n \n \n \n\n\n\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\n\nimport { EventService } from \"../../services/event.service\";\n\n@Component({\n selector: \"app-entity-events\",\n templateUrl: \"entity-events.component.html\",\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: \"user\" | \"cipher\";\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() providerId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private eventService: EventService,\n private platformUtilsService: PlatformUtilsService,\n private userNamePipe: UserNamePipe,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"invalidDateRange\")\n );\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === \"user\" && this.providerId) {\n promise = this.apiService.getEventsProviderUser(\n this.providerId,\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n } else if (this.entity === \"user\") {\n promise = this.apiService.getEventsOrganizationUser(\n this.organizationId,\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n } else {\n promise = this.apiService.getEventsCipher(\n this.entityId,\n dates[0],\n dates[1],\n clearExisting ? null : this.continuationToken\n );\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.continuationToken = response.continuationToken;\n const events = await Promise.all(\n response.data.map(async (r) => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user =\n this.showUser && userId != null && this.orgUsersUserIdMap.has(userId)\n ? this.orgUsersUserIdMap.get(userId)\n : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t(\"unknown\") : null,\n userEmail: user != null ? user.email : this.showUser ? \"\" : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n })\n );\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"eventLogs\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n
\n \n \n -\n \n \n
\n \n \n {{ \"refresh\" | i18n }}\n \n
\n
\n
\n {{ \"noEventsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n
\n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\n\n@Component({\n selector: \"app-entity-users\",\n templateUrl: \"entity-users.component.html\",\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: \"group\" | \"collection\";\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter((u) => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map((r) => r).sort(Utils.getSortFunction(this.i18nService, \"email\"));\n if (this.entity === \"group\") {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === \"collection\") {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach((s) => {\n const user = users.data.filter((u) => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach((u) => {\n if (this.entity === \"collection\" && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === \"collection\" && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === \"collection\") {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === \"group\") {\n const selections = this.users.filter((u) => (u as any).checked).map((u) => u.id);\n this.formPromise = this.apiService.putGroupUsers(\n this.organizationId,\n this.entityId,\n selections\n );\n } else {\n const selections = this.users\n .filter((u) => (u as any).checked && !u.accessAll)\n .map(\n (u) =>\n new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords)\n );\n this.formPromise = this.apiService.putCollectionUsers(\n this.organizationId,\n this.entityId,\n selections\n );\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"updatedUsers\"));\n this.onEditedUsers.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"userAccess\" | i18n }}\n {{ entityName }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n \n
\n
\n \n \n
\n
\n \n {{ \"all\" | i18n }}\n \n \n {{ \"selected\" | i18n }}\n {{\n selectedCount\n }}\n \n
\n
\n \n
\n {{ \"noUsersInList\" | i18n }}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
  {{ \"name\" | i18n }} {{ \"userType\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n \n {{ \"readOnly\" | i18n }}\n
\n \n \n \n \n \n {{ u.email }}\n {{ \"invited\" | i18n }}\n {{ \"accepted\" | i18n }}\n {{ u.name }}\n \n \n \n {{ \"userAccessAllItems\" | i18n }}\n \n \n {{ \"owner\" | i18n }}\n {{ \"admin\" | i18n }}\n {{\n \"manager\" | i18n\n }}\n {{ \"user\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n \n \n
\n
\n
\n
\n \n \n
\n \n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\nimport { BaseEventsComponent } from \"../../common/base.events.component\";\nimport { EventService } from \"../../services/event.service\";\n\n@Component({\n selector: \"app-org-events\",\n templateUrl: \"events.component.html\",\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName = \"org-events\";\n organizationId: string;\n organization: Organization;\n\n private orgUsersUserIdMap = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n eventService: EventService,\n i18nService: I18nService,\n exportService: ExportService,\n platformUtilsService: PlatformUtilsService,\n private router: Router,\n logService: LogService,\n private userNamePipe: UserNamePipe,\n private organizationService: OrganizationService,\n private providerService: ProviderService\n ) {\n super(eventService, i18nService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.organization = await this.organizationService.get(this.organizationId);\n if (this.organization == null || !this.organization.useEvents) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n\n if (this.organization.providerId != null) {\n try {\n const provider = await this.providerService.get(this.organization.providerId);\n if (\n provider != null &&\n (await this.providerService.get(this.organization.providerId)).canManageUsers\n ) {\n const providerUsersResponse = await this.apiService.getProviderUsers(\n this.organization.providerId\n );\n providerUsersResponse.data.forEach((u) => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, {\n name: `${name} (${this.organization.providerName})`,\n email: u.email,\n });\n });\n }\n } catch (e) {\n this.logService.warning(e);\n }\n }\n\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsOrganization(\n this.organizationId,\n startDate,\n endDate,\n continuationToken\n );\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n if (userId == null) {\n return null;\n }\n\n if (this.orgUsersUserIdMap.has(userId)) {\n return this.orgUsersUserIdMap.get(userId);\n }\n\n if (r.providerId != null && r.providerId === this.organization.providerId) {\n return {\n name: this.organization.providerName,\n };\n }\n\n return null;\n }\n}\n","
\n

{{ \"eventLogs\" | i18n }}

\n
\n
\n \n \n -\n \n \n
\n
\n \n \n {{ \"refresh\" | i18n }}\n \n \n
\n \n \n {{ \"export\" | i18n }}\n \n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noEventsInList\" | i18n }}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"timestamp\" | i18n }}\n {{ \"device\" | i18n }}\n {{ \"user\" | i18n }}{{ \"event\" | i18n }}
{{ e.date | date: \"medium\" }}\n \n {{ e.appName }}, {{ e.ip }}\n \n {{ e.userName }}\n
\n \n \n {{ \"loadMore\" | i18n }}\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { GroupRequest } from \"jslib-common/models/request/groupRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { CollectionDetailsResponse } from \"jslib-common/models/response/collectionResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-group-add-edit\",\n templateUrl: \"group-add-edit.component.html\",\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n name: string;\n externalId: string;\n access: \"all\" | \"selected\" = \"selected\";\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editGroup\");\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? \"all\" : \"selected\";\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"addGroup\");\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(\n (r) => new Collection(new CollectionData(r as CollectionDetailsResponse))\n );\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === \"all\";\n if (!request.accessAll) {\n request.collections = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedGroupId\" : \"createdGroupId\", this.name)\n );\n this.onSavedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteGroupConfirmation\"),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedGroupId\", this.name)\n );\n this.onDeletedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"externalIdDesc\" | i18n }}\n
\n

\n
\n {{ \"accessControl\" | i18n }}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n  \n {{ \"name\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n {{ \"readOnly\" | i18n }}\n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\nimport { EntityUsersComponent } from \"./entity-users.component\";\nimport { GroupAddEditComponent } from \"./group-add-edit.component\";\n\n@Component({\n selector: \"app-org-groups\",\n templateUrl: \"groups.component.html\",\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"usersTemplate\", { read: ViewContainerRef, static: true })\n usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private i18nService: I18nService,\n private modalService: ModalService,\n private platformUtilsService: PlatformUtilsService,\n private router: Router,\n private searchService: SearchService,\n private logService: LogService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.organizationService.get(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(\n this.groups.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n async edit(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(\n GroupAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.groupId = group != null ? group.id : null;\n comp.onSavedGroup.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedGroup.subscribe(() => {\n modal.close();\n this.removeGroup(group);\n });\n }\n );\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"deleteGroupConfirmation\"),\n group.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"deletedGroupId\", group.name)\n );\n this.removeGroup(group);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async users(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(\n EntityUsersComponent,\n this.usersModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.entity = \"group\";\n comp.entityId = group.id;\n comp.entityName = group.name;\n\n comp.onEditedUsers.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","
\n

{{ \"groups\" | i18n }}

\n
\n
\n \n \n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noGroupsInList\" | i18n }}

\n \n \n \n \n {{ g.name }}\n \n \n \n \n \n \n \n\n\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-org-manage\",\n templateUrl: \"manage.component.html\",\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n accessSso = false;\n\n constructor(private route: ActivatedRoute, private organizationService: OrganizationService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessSso = this.organization.useSso;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"manage\" | i18n }}
\n
\n \n {{ \"people\" | i18n }}\n \n \n {{ \"collections\" | i18n }}\n \n \n {{ \"groups\" | i18n }}\n \n \n {{ \"policies\" | i18n }}\n \n \n {{ \"singleSignOn\" | i18n }}\n \n \n {{ \"eventLogs\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { SearchPipe } from \"jslib-angular/pipes/search.pipe\";\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { OrganizationUserStatusType } from \"jslib-common/enums/organizationUserStatusType\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUserBulkRequest } from \"jslib-common/models/request/organizationUserBulkRequest\";\nimport { OrganizationUserConfirmRequest } from \"jslib-common/models/request/organizationUserConfirmRequest\";\nimport { ListResponse } from \"jslib-common/models/response/listResponse\";\nimport { OrganizationUserBulkResponse } from \"jslib-common/models/response/organizationUserBulkResponse\";\nimport { OrganizationUserUserDetailsResponse } from \"jslib-common/models/response/organizationUserResponse\";\n\nimport { BasePeopleComponent } from \"../../common/base.people.component\";\n\nimport { BulkConfirmComponent } from \"./bulk/bulk-confirm.component\";\nimport { BulkRemoveComponent } from \"./bulk/bulk-remove.component\";\nimport { BulkStatusComponent } from \"./bulk/bulk-status.component\";\nimport { EntityEventsComponent } from \"./entity-events.component\";\nimport { ResetPasswordComponent } from \"./reset-password.component\";\nimport { UserAddEditComponent } from \"./user-add-edit.component\";\nimport { UserGroupsComponent } from \"./user-groups.component\";\n\n@Component({\n selector: \"app-org-people\",\n templateUrl: \"people.component.html\",\n})\nexport class PeopleComponent\n extends BasePeopleComponent\n implements OnInit\n{\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"groupsTemplate\", { read: ViewContainerRef, static: true })\n groupsModalRef: ViewContainerRef;\n @ViewChild(\"eventsTemplate\", { read: ViewContainerRef, static: true })\n eventsModalRef: ViewContainerRef;\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n @ViewChild(\"resetPasswordTemplate\", { read: ViewContainerRef, static: true })\n resetPasswordModalRef: ViewContainerRef;\n @ViewChild(\"bulkStatusTemplate\", { read: ViewContainerRef, static: true })\n bulkStatusModalRef: ViewContainerRef;\n @ViewChild(\"bulkConfirmTemplate\", { read: ViewContainerRef, static: true })\n bulkConfirmModalRef: ViewContainerRef;\n @ViewChild(\"bulkRemoveTemplate\", { read: ViewContainerRef, static: true })\n bulkRemoveModalRef: ViewContainerRef;\n\n userType = OrganizationUserType;\n userStatusType = OrganizationUserStatusType;\n\n organizationId: string;\n status: OrganizationUserStatusType = null;\n accessEvents = false;\n accessGroups = false;\n canResetPassword = false; // User permission (admin/custom)\n orgUseResetPassword = false; // Org plan ability\n orgHasKeys = false; // Org public/private keys\n orgResetPasswordPolicyEnabled = false;\n callingUserType: OrganizationUserType = null;\n\n constructor(\n apiService: ApiService,\n private route: ActivatedRoute,\n i18nService: I18nService,\n modalService: ModalService,\n platformUtilsService: PlatformUtilsService,\n cryptoService: CryptoService,\n private router: Router,\n searchService: SearchService,\n validationService: ValidationService,\n private policyService: PolicyService,\n logService: LogService,\n searchPipe: SearchPipe,\n userNamePipe: UserNamePipe,\n private syncService: SyncService,\n stateService: StateService,\n private organizationService: OrganizationService\n ) {\n super(\n apiService,\n searchService,\n i18nService,\n platformUtilsService,\n cryptoService,\n validationService,\n modalService,\n logService,\n searchPipe,\n userNamePipe,\n stateService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n const organization = await this.organizationService.get(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate([\"../collections\"], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n this.canResetPassword = organization.canManageUsersPassword;\n this.orgUseResetPassword = organization.useResetPassword;\n this.callingUserType = organization.type;\n this.orgHasKeys = organization.hasPublicAndPrivateKeys;\n\n // Backfill pub/priv key if necessary\n if (this.canResetPassword && !this.orgHasKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n const response = await this.apiService.postOrganizationKeys(this.organizationId, request);\n if (response != null) {\n this.orgHasKeys = response.publicKey != null && response.privateKey != null;\n await this.syncService.fullSync(true); // Replace oganizations with new data\n } else {\n throw new Error(this.i18nService.t(\"resetPasswordOrgKeysError\"));\n }\n }\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter((u) => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n });\n });\n }\n\n async load() {\n const resetPasswordPolicy = await this.policyService.getPolicyForOrganization(\n PolicyType.ResetPassword,\n this.organizationId\n );\n this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled;\n super.load();\n }\n\n getUsers(): Promise> {\n return this.apiService.getOrganizationUsers(this.organizationId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteOrganizationUser(this.organizationId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postOrganizationUserReinvite(this.organizationId, id);\n }\n\n async confirmUser(\n user: OrganizationUserUserDetailsResponse,\n publicKey: Uint8Array\n ): Promise {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean {\n // Hierarchy check\n let callingUserHasPermission = false;\n\n switch (this.callingUserType) {\n case OrganizationUserType.Owner:\n callingUserHasPermission = true;\n break;\n case OrganizationUserType.Admin:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner;\n break;\n case OrganizationUserType.Custom:\n callingUserHasPermission =\n orgUser.type !== OrganizationUserType.Owner &&\n orgUser.type !== OrganizationUserType.Admin;\n break;\n }\n\n // Final\n return (\n this.canResetPassword &&\n callingUserHasPermission &&\n this.orgUseResetPassword &&\n this.orgHasKeys &&\n orgUser.resetPasswordEnrolled &&\n this.orgResetPasswordPolicyEnabled &&\n orgUser.status === OrganizationUserStatusType.Confirmed\n );\n }\n\n showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean {\n return (\n this.orgUseResetPassword &&\n orgUser.resetPasswordEnrolled &&\n this.orgResetPasswordPolicyEnabled\n );\n }\n\n async edit(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.usesKeyConnector = user?.usesKeyConnector;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n }\n );\n }\n\n async groups(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n UserGroupsComponent,\n this.groupsModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n });\n }\n );\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRemoveComponent,\n this.bulkRemoveModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter((u) => u.status === OrganizationUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"noSelectedUsersApplicable\")\n );\n return;\n }\n\n try {\n const request = new OrganizationUserBulkRequest(filteredUsers.map((user) => user.id));\n const response = this.apiService.postManyOrganizationUserReinvite(\n this.organizationId,\n request\n );\n this.showBulkStatus(\n users,\n filteredUsers,\n response,\n this.i18nService.t(\"bulkReinviteMessage\")\n );\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkConfirmComponent,\n this.bulkConfirmModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n }\n );\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = \"user\";\n });\n }\n\n async resetPassword(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n ResetPasswordComponent,\n this.resetPasswordModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(user);\n comp.email = user != null ? user.email : null;\n comp.organizationId = this.organizationId;\n comp.id = user != null ? user.id : null;\n\n comp.onPasswordReset.subscribe(() => {\n modal.close();\n this.load();\n });\n }\n );\n }\n\n protected deleteWarningMessage(user: OrganizationUserUserDetailsResponse): string {\n if (user.usesKeyConnector) {\n return this.i18nService.t(\"removeUserConfirmationKeyConnector\");\n }\n\n return super.deleteWarningMessage(user);\n }\n\n private async showBulkStatus(\n users: OrganizationUserUserDetailsResponse[],\n filteredUsers: OrganizationUserUserDetailsResponse[],\n request: Promise>,\n successfullMessage: string\n ) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n BulkStatusComponent,\n this.bulkStatusModalRef,\n (comp) => {\n comp.loading = true;\n }\n );\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data\n .filter((r) => r.error !== \"\")\n .reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map((user) => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n // eslint-disable-next-line\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t(\"bulkFilteredMessage\");\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id), // eslint-disable-line\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","
\n

{{ \"people\" | i18n }}

\n
\n
\n \n {{ \"all\" | i18n }}\n {{ allCount }}\n \n \n {{ \"invited\" | i18n }}\n {{ invitedCount }}\n \n \n {{ \"accepted\" | i18n }}\n {{\n acceptedCount\n }}\n \n
\n
\n \n \n
\n
\n \n \n \n
\n \n \n \n {{ \"confirmSelected\" | i18n }}\n \n \n
\n \n \n
\n
\n \n
\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"noUsersInList\" | i18n }}

\n \n \n {{ \"usersNeedConfirmed\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ u.email }}\n {{\n \"invited\" | i18n\n }}\n {{\n \"accepted\" | i18n\n }}\n {{ u.name }}\n \n \n \n \n {{ \"userUsingTwoStep\" | i18n }}\n \n \n \n {{ \"enrolledPasswordReset\" | i18n }}\n \n \n \n {{ \"owner\" | i18n }}\n {{ \"admin\" | i18n }}\n {{ \"manager\" | i18n }}\n {{ \"user\" | i18n }}\n {{ \"custom\" | i18n }}\n \n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"groups\" | i18n }}\n \n \n \n {{ \"eventLogs\" | i18n }}\n \n \n \n {{ \"resetPassword\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n \n \n \n \n
\n\n\n\n\n\n\n\n\n\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { PolicyListService } from \"../../services/policy-list.service\";\nimport { BasePolicy } from \"../policies/base-policy.component\";\n\nimport { PolicyEditComponent } from \"./policy-edit.component\";\n\n@Component({\n selector: \"app-org-policies\",\n templateUrl: \"policies.component.html\",\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild(\"editTemplate\", { read: ViewContainerRef, static: true })\n editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: BasePolicy[];\n organization: Organization;\n\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private modalService: ModalService,\n private organizationService: OrganizationService,\n private policyListService: PolicyListService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.organization = await this.organizationService.get(this.organizationId);\n if (this.organization == null || !this.organization.usePolicies) {\n this.router.navigate([\"/organizations\", this.organizationId]);\n return;\n }\n\n this.policies = this.policyListService.getPolicies();\n\n await this.load();\n\n // Handle policies component launch from Event message\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach((op) => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n\n this.loading = false;\n }\n\n async edit(policy: BasePolicy) {\n const [modal] = await this.modalService.openViewRef(\n PolicyEditComponent,\n this.editModalRef,\n (comp) => {\n comp.policy = policy;\n comp.organizationId = this.organizationId;\n comp.policiesEnabledMap = this.policiesEnabledMap;\n comp.onSavedPolicy.subscribe(() => {\n modal.close();\n this.load();\n });\n }\n );\n }\n}\n","
\n

{{ \"policies\" | i18n }}

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n \n \n \n \n \n
\n {{ p.name | i18n }}\n {{\n \"enabled\" | i18n\n }}\n {{ p.description | i18n }}\n
\n\n","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n} from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nimport { BasePolicy, BasePolicyComponent } from \"../policies/base-policy.component\";\n\n@Component({\n selector: \"app-policy-edit\",\n templateUrl: \"policy-edit.component.html\",\n})\nexport class PolicyEditComponent {\n @Input() policy: BasePolicy;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n @ViewChild(\"policyForm\", { read: ViewContainerRef, static: true })\n policyFormRef: ViewContainerRef;\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n defaultTypes: any[];\n policyComponent: BasePolicyComponent;\n\n private policyResponse: PolicyResponse;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef,\n private logService: LogService\n ) {}\n\n async ngAfterViewInit() {\n await this.load();\n this.loading = false;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.policy.component);\n this.policyComponent = this.policyFormRef.createComponent(factory)\n .instance as BasePolicyComponent;\n this.policyComponent.policy = this.policy;\n this.policyComponent.policyResponse = this.policyResponse;\n\n this.cdr.detectChanges();\n }\n\n async load() {\n try {\n this.policyResponse = await this.apiService.getPolicy(this.organizationId, this.policy.type);\n } catch (e) {\n if (e.statusCode === 404) {\n this.policyResponse = new PolicyResponse({ Enabled: false });\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n let request: PolicyRequest;\n try {\n request = await this.policyComponent.buildRequest(this.policiesEnabledMap);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, e.message);\n return;\n }\n\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.policy.type, request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"editedPolicyId\", this.i18nService.t(this.policy.name))\n );\n this.onSavedPolicy.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"editPolicy\" | i18n }} - {{ policy.name | i18n }}\n

\n \n ×\n \n
\n\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ policy.description | i18n }}

\n \n
\n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { MasterPasswordPolicyOptions } from \"jslib-common/models/domain/masterPasswordPolicyOptions\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { OrganizationUserResetPasswordRequest } from \"jslib-common/models/request/organizationUserResetPasswordRequest\";\n\n@Component({\n selector: \"app-reset-password\",\n templateUrl: \"reset-password.component.html\",\n})\nexport class ResetPasswordComponent implements OnInit {\n @Input() name: string;\n @Input() email: string;\n @Input() id: string;\n @Input() organizationId: string;\n @Output() onPasswordReset = new EventEmitter();\n\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n newPassword: string = null;\n showPassword = false;\n masterPasswordScore: number;\n formPromise: Promise;\n private newPasswordStrengthTimeout: any;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService,\n private cryptoService: CryptoService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n // Get Enforced Policy Options\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n get loggedOutWarningName() {\n return this.name != null ? this.name : this.i18nService.t(\"thisUser\");\n }\n\n async generatePassword() {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.newPassword = await this.passwordGenerationService.generatePassword(options);\n this.updatePasswordStrength();\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(\"newPassword\").focus();\n }\n\n copy(value: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"password\"))\n );\n }\n\n async submit() {\n // Validation\n if (this.newPassword == null || this.newPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n if (this.newPassword.length < 8) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassLength\")\n );\n return false;\n }\n\n if (\n this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n this.masterPasswordScore,\n this.newPassword,\n this.enforcedPolicyOptions\n )\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPasswordPolicyRequirementsNotMet\")\n );\n return;\n }\n\n if (this.masterPasswordScore < 3) {\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"weakMasterPasswordDesc\"),\n this.i18nService.t(\"weakMasterPassword\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n return false;\n }\n }\n\n // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password\n try {\n this.formPromise = this.apiService\n .getOrganizationUserResetPasswordDetails(this.organizationId, this.id)\n .then(async (response) => {\n if (response == null) {\n throw new Error(this.i18nService.t(\"resetPasswordDetailsError\"));\n }\n\n const kdfType = response.kdf;\n const kdfIterations = response.kdfIterations;\n const resetPasswordKey = response.resetPasswordKey;\n const encryptedPrivateKey = response.encryptedPrivateKey;\n\n // Decrypt Organization's encrypted Private Key with org key\n const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId);\n const decPrivateKey = await this.cryptoService.decryptToBytes(\n new EncString(encryptedPrivateKey),\n orgSymKey\n );\n\n // Decrypt User's Reset Password Key to get EncKey\n const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey);\n const userEncKey = new SymmetricCryptoKey(decValue);\n\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(\n this.newPassword,\n this.email.trim().toLowerCase(),\n kdfType,\n kdfIterations\n );\n const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey);\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n // Create request\n const request = new OrganizationUserResetPasswordRequest();\n request.key = newEncKey[1].encryptedString;\n request.newMasterPasswordHash = newPasswordHash;\n\n // Change user's password\n return this.apiService.putOrganizationUserResetPassword(\n this.organizationId,\n this.id,\n request\n );\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"resetPasswordSuccess\")\n );\n this.onPasswordReset.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n updatePasswordStrength() {\n if (this.newPasswordStrengthTimeout != null) {\n clearTimeout(this.newPasswordStrengthTimeout);\n }\n this.newPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(\n this.newPassword,\n this.getPasswordStrengthUserInput()\n );\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput.concat(\n this.email\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n );\n }\n if (this.name != null && this.name !== \"\") {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(\" \"));\n }\n return userInput;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"resetPassword\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n {{ \"resetPasswordLoggedOutWarning\" | i18n: loggedOutWarningName }}\n \n \n \n
\n
\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationUserType } from \"jslib-common/enums/organizationUserType\";\nimport { PermissionsApi } from \"jslib-common/models/api/permissionsApi\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { Collection } from \"jslib-common/models/domain/collection\";\nimport { OrganizationUserInviteRequest } from \"jslib-common/models/request/organizationUserInviteRequest\";\nimport { OrganizationUserUpdateRequest } from \"jslib-common/models/request/organizationUserUpdateRequest\";\nimport { SelectionReadOnlyRequest } from \"jslib-common/models/request/selectionReadOnlyRequest\";\nimport { CollectionDetailsResponse } from \"jslib-common/models/response/collectionResponse\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-user-add-edit\",\n templateUrl: \"user-add-edit.component.html\",\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Input() usesKeyConnector = false;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: \"all\" | \"selected\" = \"selected\";\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n manageAllCollectionsCheckboxes = [\n {\n id: \"createNewCollections\",\n get: () => this.permissions.createNewCollections,\n set: (v: boolean) => (this.permissions.createNewCollections = v),\n },\n {\n id: \"editAnyCollection\",\n get: () => this.permissions.editAnyCollection,\n set: (v: boolean) => (this.permissions.editAnyCollection = v),\n },\n {\n id: \"deleteAnyCollection\",\n get: () => this.permissions.deleteAnyCollection,\n set: (v: boolean) => (this.permissions.deleteAnyCollection = v),\n },\n ];\n\n manageAssignedCollectionsCheckboxes = [\n {\n id: \"editAssignedCollections\",\n get: () => this.permissions.editAssignedCollections,\n set: (v: boolean) => (this.permissions.editAssignedCollections = v),\n },\n {\n id: \"deleteAssignedCollections\",\n get: () => this.permissions.deleteAssignedCollections,\n set: (v: boolean) => (this.permissions.deleteAssignedCollections = v),\n },\n ];\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editUser\");\n try {\n const user = await this.apiService.getOrganizationUser(\n this.organizationId,\n this.organizationUserId\n );\n this.access = user.accessAll ? \"all\" : \"selected\";\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach((s) => {\n const collection = this.collections.filter((c) => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteUser\");\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(\n (r) => new Collection(new CollectionData(r as CollectionDetailsResponse))\n );\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n Object.assign(p, clearPermissions ? new PermissionsApi() : this.permissions);\n return p;\n }\n\n handleDependentPermissions() {\n // Manage Password Reset must have Manage Users enabled\n if (this.permissions.manageResetPassword && !this.permissions.manageUsers) {\n this.permissions.manageUsers = true;\n (document.getElementById(\"manageUsers\") as HTMLInputElement).checked = true;\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"resetPasswordManageUsers\")\n );\n }\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== \"all\") {\n collections = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === \"all\";\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(\n request.permissions ?? new PermissionsApi(),\n request.type !== OrganizationUserType.Custom\n );\n this.formPromise = this.apiService.putOrganizationUser(\n this.organizationId,\n this.organizationUserId,\n request\n );\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === \"all\";\n request.type = this.type;\n request.permissions = this.setRequestPermissions(\n request.permissions ?? new PermissionsApi(),\n request.type !== OrganizationUserType.Custom\n );\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const message = this.usesKeyConnector\n ? \"removeUserConfirmationKeyConnector\"\n : \"removeUserConfirmation\";\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(message),\n this.name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(\n this.organizationId,\n this.organizationUserId\n );\n await this.deletePromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.name)\n );\n this.onDeletedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"inviteUserDesc\" | i18n }}

\n
\n \n \n {{ \"inviteMultipleEmailDesc\" | i18n: \"20\" }}\n
\n
\n

\n {{ \"userType\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n

\n {{ \"permissions\" | i18n }}\n

\n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

\n
\n {{ \"accessControl\" | i18n }}\n \n \n \n
\n
\n \n \n
\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n  \n {{ \"name\" | i18n }}\n {{ \"hidePasswords\" | i18n }}\n {{ \"readOnly\" | i18n }}\n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-user-confirm\",\n templateUrl: \"user-confirm.component.html\",\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() publicKey: Uint8Array;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n formPromise: Promise;\n\n constructor(\n private cryptoService: CryptoService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n try {\n if (this.publicKey != null) {\n const fingerprint = await this.cryptoService.getFingerprint(\n this.userId,\n this.publicKey.buffer\n );\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.stateService.setAutoConfirmFingerprints(true);\n }\n\n this.onConfirmedUser.emit();\n }\n}\n","
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { OrganizationUserUpdateGroupsRequest } from \"jslib-common/models/request/organizationUserUpdateGroupsRequest\";\nimport { GroupResponse } from \"jslib-common/models/response/groupResponse\";\n\n@Component({\n selector: \"app-user-groups\",\n templateUrl: \"user-groups.component.html\",\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map((r) => r);\n groups.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId,\n this.organizationUserId\n );\n if (userGroups != null && this.groups != null) {\n userGroups.forEach((ug) => {\n const group = this.groups.filter((g) => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach((g) => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter((g) => (g as any).checked).map((g) => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(\n this.organizationId,\n this.organizationUserId,\n request\n );\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"editedGroupsForUser\", this.name)\n );\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"groupAccess\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n

{{ \"groupAccessUserDesc\" | i18n }}

\n
\n {{ \"noGroupsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ g.name }}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { Permissions } from \"jslib-common/enums/permissions\";\n\nimport { PermissionsGuard } from \"./guards/permissions.guard\";\nimport { OrganizationLayoutComponent } from \"./layouts/organization-layout.component\";\nimport { CollectionsComponent } from \"./manage/collections.component\";\nimport { EventsComponent } from \"./manage/events.component\";\nimport { GroupsComponent } from \"./manage/groups.component\";\nimport { ManageComponent } from \"./manage/manage.component\";\nimport { PeopleComponent } from \"./manage/people.component\";\nimport { PoliciesComponent } from \"./manage/policies.component\";\nimport { NavigationPermissionsService } from \"./services/navigation-permissions.service\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { OrganizationBillingComponent } from \"./settings/organization-billing.component\";\nimport { OrganizationSubscriptionComponent } from \"./settings/organization-subscription.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { TwoFactorSetupComponent } from \"./settings/two-factor-setup.component\";\nimport { ExportComponent } from \"./tools/export.component\";\nimport { ExposedPasswordsReportComponent } from \"./tools/exposed-passwords-report.component\";\nimport { ImportComponent } from \"./tools/import.component\";\nimport { InactiveTwoFactorReportComponent } from \"./tools/inactive-two-factor-report.component\";\nimport { ReusedPasswordsReportComponent } from \"./tools/reused-passwords-report.component\";\nimport { ToolsComponent } from \"./tools/tools.component\";\nimport { UnsecuredWebsitesReportComponent } from \"./tools/unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"./tools/weak-passwords-report.component\";\n\nconst routes: Routes = [\n {\n path: \":organizationId\",\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuard, PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"admin\"),\n },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"vault\" },\n {\n path: \"vault\",\n loadChildren: async () =>\n (await import(\"../modules/vault/modules/organization-vault/organization-vault.module\"))\n .OrganizationVaultModule,\n },\n {\n path: \"tools\",\n component: ToolsComponent,\n canActivate: [PermissionsGuard],\n data: { permissions: NavigationPermissionsService.getPermissions(\"tools\") },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"import\",\n },\n {\n path: \"import\",\n component: ImportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"importData\",\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: \"export\",\n component: ExportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"exportVault\",\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: \"exposed-passwords-report\",\n component: ExposedPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"exposedPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"inactive-two-factor-report\",\n component: InactiveTwoFactorReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"inactive2faReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"reused-passwords-report\",\n component: ReusedPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"reusedPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"unsecured-websites-report\",\n component: UnsecuredWebsitesReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"unsecuredWebsitesReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: \"weak-passwords-report\",\n component: WeakPasswordsReportComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"weakPasswordsReport\",\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: \"manage\",\n component: ManageComponent,\n canActivate: [PermissionsGuard],\n data: {\n permissions: NavigationPermissionsService.getPermissions(\"manage\"),\n },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n redirectTo: \"people\",\n },\n {\n path: \"collections\",\n component: CollectionsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"collections\",\n permissions: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n ],\n },\n },\n {\n path: \"events\",\n component: EventsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"eventLogs\",\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: \"groups\",\n component: GroupsComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"groups\",\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: \"people\",\n component: PeopleComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"people\",\n permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword],\n },\n },\n {\n path: \"policies\",\n component: PoliciesComponent,\n canActivate: [PermissionsGuard],\n data: {\n titleId: \"policies\",\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n canActivate: [PermissionsGuard],\n data: { permissions: NavigationPermissionsService.getPermissions(\"settings\") },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"account\" },\n { path: \"account\", component: AccountComponent, data: { titleId: \"myOrganization\" } },\n {\n path: \"two-factor\",\n component: TwoFactorSetupComponent,\n data: { titleId: \"twoStepLogin\" },\n },\n {\n path: \"billing\",\n component: OrganizationBillingComponent,\n canActivate: [PermissionsGuard],\n data: { titleId: \"billing\", permissions: [Permissions.ManageBilling] },\n },\n {\n path: \"subscription\",\n component: OrganizationSubscriptionComponent,\n data: { titleId: \"subscription\" },\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class OrganizationsRoutingModule {}\n","import { Directive, Input, OnInit } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\nexport abstract class BasePolicy {\n abstract name: string;\n abstract description: string;\n abstract type: PolicyType;\n abstract component: any;\n\n display(organization: Organization) {\n return true;\n }\n}\n\n@Directive()\nexport abstract class BasePolicyComponent implements OnInit {\n @Input() policyResponse: PolicyResponse;\n @Input() policy: BasePolicy;\n\n enabled = new FormControl(false);\n data: FormGroup = null;\n\n ngOnInit(): void {\n this.enabled.setValue(this.policyResponse.enabled);\n\n if (this.policyResponse.data != null) {\n this.loadData();\n }\n }\n\n loadData() {\n this.data.patchValue(this.policyResponse.data ?? {});\n }\n\n buildRequestData() {\n if (this.data != null) {\n return this.data.value;\n }\n\n return null;\n }\n\n buildRequest(policiesEnabledMap: Map) {\n const request = new PolicyRequest();\n request.enabled = this.enabled.value;\n request.type = this.policy.type;\n request.data = this.buildRequestData();\n\n return Promise.resolve(request);\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class DisableSendPolicy extends BasePolicy {\n name = \"disableSend\";\n description = \"disableSendPolicyDesc\";\n type = PolicyType.DisableSend;\n component = DisableSendPolicyComponent;\n}\n\n@Component({\n selector: \"policy-disable-send\",\n templateUrl: \"disable-send.component.html\",\n})\nexport class DisableSendPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"disableSendExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class MasterPasswordPolicy extends BasePolicy {\n name = \"masterPass\";\n description = \"masterPassPolicyDesc\";\n type = PolicyType.MasterPassword;\n component = MasterPasswordPolicyComponent;\n}\n\n@Component({\n selector: \"policy-master-password\",\n templateUrl: \"master-password.component.html\",\n})\nexport class MasterPasswordPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n minComplexity: [null],\n minLength: [null],\n requireUpper: [null],\n requireLower: [null],\n requireNumbers: [null],\n requireSpecial: [null],\n });\n\n passwordScores: { name: string; value: number }[];\n showKeyConnectorInfo = false;\n\n constructor(\n private formBuilder: FormBuilder,\n i18nService: I18nService,\n private organizationService: OrganizationService\n ) {\n super();\n\n this.passwordScores = [\n { name: \"-- \" + i18nService.t(\"select\") + \" --\", value: null },\n { name: i18nService.t(\"weak\") + \" (0)\", value: 0 },\n { name: i18nService.t(\"weak\") + \" (1)\", value: 1 },\n { name: i18nService.t(\"weak\") + \" (2)\", value: 2 },\n { name: i18nService.t(\"good\") + \" (3)\", value: 3 },\n { name: i18nService.t(\"strong\") + \" (4)\", value: 4 },\n ];\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.organizationService.get(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n","\n {{ \"keyConnectorPolicyRestriction\" | i18n }}\n\n\n
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class PasswordGeneratorPolicy extends BasePolicy {\n name = \"passwordGenerator\";\n description = \"passwordGeneratorPolicyDesc\";\n type = PolicyType.PasswordGenerator;\n component = PasswordGeneratorPolicyComponent;\n}\n\n@Component({\n selector: \"policy-password-generator\",\n templateUrl: \"password-generator.component.html\",\n})\nexport class PasswordGeneratorPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n defaultType: [null],\n minLength: [null],\n useUpper: [null],\n useLower: [null],\n useNumbers: [null],\n useSpecial: [null],\n minNumbers: [null],\n minSpecial: [null],\n minNumberWords: [null],\n capitalize: [null],\n includeNumber: [null],\n });\n\n defaultTypes: { name: string; value: string }[];\n\n constructor(private formBuilder: FormBuilder, i18nService: I18nService) {\n super();\n\n this.defaultTypes = [\n { name: i18nService.t(\"userPreference\"), value: null },\n { name: i18nService.t(\"password\"), value: \"password\" },\n { name: i18nService.t(\"passphrase\"), value: \"passphrase\" },\n ];\n }\n}\n","
\n
\n
\n \n \n
\n
\n\n
\n
\n \n \n \n \n
\n
\n

{{ \"password\" | i18n }}

\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n

{{ \"passphrase\" | i18n }}

\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class PersonalOwnershipPolicy extends BasePolicy {\n name = \"personalOwnership\";\n description = \"personalOwnershipPolicyDesc\";\n type = PolicyType.PersonalOwnership;\n component = PersonalOwnershipPolicyComponent;\n}\n\n@Component({\n selector: \"policy-personal-ownership\",\n templateUrl: \"personal-ownership.component.html\",\n})\nexport class PersonalOwnershipPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"personalOwnershipExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class RequireSsoPolicy extends BasePolicy {\n name = \"requireSso\";\n description = \"requireSsoPolicyDesc\";\n type = PolicyType.RequireSso;\n component = RequireSsoPolicyComponent;\n\n display(organization: Organization) {\n return organization.useSso;\n }\n}\n\n@Component({\n selector: \"policy-require-sso\",\n templateUrl: \"require-sso.component.html\",\n})\nexport class RequireSsoPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t(\"requireSsoPolicyReqError\"));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"requireSsoPolicyReq\" | i18n }}\n\n\n {{ \"requireSsoExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class ResetPasswordPolicy extends BasePolicy {\n name = \"resetPasswordPolicy\";\n description = \"resetPasswordPolicyDescription\";\n type = PolicyType.ResetPassword;\n component = ResetPasswordPolicyComponent;\n\n display(organization: Organization) {\n return organization.useResetPassword;\n }\n}\n\n@Component({\n selector: \"policy-reset-password\",\n templateUrl: \"reset-password.component.html\",\n})\nexport class ResetPasswordPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n autoEnrollEnabled: false,\n });\n\n defaultTypes: { name: string; value: string }[];\n showKeyConnectorInfo = false;\n\n constructor(private formBuilder: FormBuilder, private organizationService: OrganizationService) {\n super();\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.organizationService.get(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n","\n {{ \"keyConnectorPolicyRestriction\" | i18n }}\n\n\n\n {{ \"resetPasswordPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n

{{ \"resetPasswordPolicyAutoEnroll\" | i18n }}

\n

{{ \"resetPasswordPolicyAutoEnrollDescription\" | i18n }}

\n \n {{ \"resetPasswordPolicyAutoEnrollWarning\" | i18n }}\n \n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class SendOptionsPolicy extends BasePolicy {\n name = \"sendOptions\";\n description = \"sendOptionsPolicyDesc\";\n type = PolicyType.SendOptions;\n component = SendOptionsPolicyComponent;\n}\n\n@Component({\n selector: \"policy-send-options\",\n templateUrl: \"send-options.component.html\",\n})\nexport class SendOptionsPolicyComponent extends BasePolicyComponent {\n data = this.formBuilder.group({\n disableHideEmail: false,\n });\n\n constructor(private formBuilder: FormBuilder) {\n super();\n }\n}\n","\n {{ \"sendOptionsExemption\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n\n
\n

{{ \"options\" | i18n }}

\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { PolicyRequest } from \"jslib-common/models/request/policyRequest\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class SingleOrgPolicy extends BasePolicy {\n name = \"singleOrg\";\n description = \"singleOrgDesc\";\n type = PolicyType.SingleOrg;\n component = SingleOrgPolicyComponent;\n}\n\n@Component({\n selector: \"policy-single-org\",\n templateUrl: \"single-org.component.html\",\n})\nexport class SingleOrgPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n if (!this.enabled.value) {\n if (policiesEnabledMap.get(PolicyType.RequireSso) ?? false) {\n throw new Error(\n this.i18nService.t(\"disableRequiredError\", this.i18nService.t(\"requireSso\"))\n );\n }\n\n if (policiesEnabledMap.get(PolicyType.MaximumVaultTimeout) ?? false) {\n throw new Error(\n this.i18nService.t(\"disableRequiredError\", this.i18nService.t(\"maximumVaultTimeoutLabel\"))\n );\n }\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n","\n {{ \"singleOrgPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\nimport { BasePolicy, BasePolicyComponent } from \"./base-policy.component\";\n\nexport class TwoFactorAuthenticationPolicy extends BasePolicy {\n name = \"twoStepLogin\";\n description = \"twoStepLoginPolicyDesc\";\n type = PolicyType.TwoFactorAuthentication;\n component = TwoFactorAuthenticationPolicyComponent;\n}\n\n@Component({\n selector: \"policy-two-factor-authentication\",\n templateUrl: \"two-factor-authentication.component.html\",\n})\nexport class TwoFactorAuthenticationPolicyComponent extends BasePolicyComponent {}\n","\n {{ \"twoStepLoginPolicyWarning\" | i18n }}\n\n\n
\n
\n \n \n
\n
\n","import { Permissions } from \"jslib-common/enums/permissions\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nconst permissions = {\n manage: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n tools: [Permissions.AccessImportExport, Permissions.AccessReports],\n settings: [Permissions.ManageOrganization],\n};\n\nexport class NavigationPermissionsService {\n static getPermissions(route: keyof typeof permissions | \"admin\") {\n if (route === \"admin\") {\n return Object.values(permissions).reduce((previous, current) => previous.concat(current), []);\n }\n\n return permissions[route];\n }\n\n static canAccessAdmin(organization: Organization): boolean {\n return (\n this.canAccessTools(organization) ||\n this.canAccessSettings(organization) ||\n this.canAccessManage(organization)\n );\n }\n\n static canAccessTools(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"tools\"));\n }\n\n static canAccessSettings(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"settings\"));\n }\n\n static canAccessManage(organization: Organization): boolean {\n return organization.hasAnyPermission(NavigationPermissionsService.getPermissions(\"manage\"));\n }\n}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUpdateRequest } from \"jslib-common/models/request/organizationUpdateRequest\";\nimport { OrganizationResponse } from \"jslib-common/models/response/organizationResponse\";\n\nimport { ApiKeyComponent } from \"../../settings/api-key.component\";\nimport { PurgeVaultComponent } from \"../../settings/purge-vault.component\";\nimport { TaxInfoComponent } from \"../../settings/tax-info.component\";\n\nimport { DeleteOrganizationComponent } from \"./delete-organization.component\";\n\n@Component({\n selector: \"app-org-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n @ViewChild(\"deleteOrganizationTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n @ViewChild(\"purgeOrganizationTemplate\", { read: ViewContainerRef, static: true })\n purgeModalRef: ViewContainerRef;\n @ViewChild(\"apiKeyTemplate\", { read: ViewContainerRef, static: true })\n apiKeyModalRef: ViewContainerRef;\n @ViewChild(\"rotateApiKeyTemplate\", { read: ViewContainerRef, static: true })\n rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n canManageBilling = true;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n\n constructor(\n private modalService: ModalService,\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private router: Router,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.canManageBilling = (\n await this.organizationService.get(this.organizationId)\n ).canManageBilling;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch (e) {\n this.logService.error(e);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n\n // Backfill pub/priv key if necessary\n if (!this.org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationUpdated\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"taxInfoUpdated\"));\n }\n\n async deleteOrganization() {\n await this.modalService.openViewRef(\n DeleteOrganizationComponent,\n this.deleteModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.onSuccess.subscribe(() => {\n this.router.navigate([\"/\"]);\n });\n }\n );\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef, (comp) => {\n comp.organizationId = this.organizationId;\n });\n }\n\n async viewApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.apiKeyModalRef, (comp) => {\n comp.keyType = \"organization\";\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n comp.scope = \"api.organization\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"apiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyDesc\";\n });\n }\n\n async rotateApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateApiKeyModalRef, (comp) => {\n comp.keyType = \"organization\";\n comp.isRotation = true;\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n comp.scope = \"api.organization\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"apiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyRotateDesc\";\n });\n }\n}\n","
\n

{{ \"myOrganization\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n\n\n
\n

{{ \"apiKey\" | i18n }}

\n
\n

\n {{ \"apiKeyDesc\" | i18n }}\n \n {{ \"learnMore\" | i18n }}\n \n

\n \n \n\n
\n

{{ \"taxInformation\" | i18n }}

\n
\n

{{ \"taxInformationDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n\n \n \n\n
\n

{{ \"dangerZone\" | i18n }}

\n
\n
\n
\n

{{ \"dangerZoneDesc\" | i18n }}

\n \n \n
\n
\n\n\n\n\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationSubscriptionUpdateRequest } from \"jslib-common/models/request/organizationSubscriptionUpdateRequest\";\n\n@Component({\n selector: \"app-adjust-subscription\",\n templateUrl: \"adjust-subscription.component.html\",\n})\nexport class AdjustSubscription {\n @Input() organizationId: string;\n @Input() maxAutoscaleSeats: number;\n @Input() currentSeatCount: number;\n @Input() seatPrice = 0;\n @Input() interval = \"year\";\n @Output() onAdjusted = new EventEmitter();\n\n formPromise: Promise;\n limitSubscription: boolean;\n newSeatCount: number;\n newMaxSeats: number;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n ngOnInit() {\n this.limitSubscription = this.maxAutoscaleSeats != null;\n this.newSeatCount = this.currentSeatCount;\n this.newMaxSeats = this.maxAutoscaleSeats;\n }\n\n async submit() {\n try {\n const seatAdjustment = this.newSeatCount - this.currentSeatCount;\n const request = new OrganizationSubscriptionUpdateRequest(seatAdjustment, this.newMaxSeats);\n this.formPromise = this.apiService.postOrganizationUpdateSubscription(\n this.organizationId,\n request\n );\n\n await this.formPromise;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"subscriptionUpdated\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n this.onAdjusted.emit();\n }\n\n limitSubscriptionChanged() {\n if (!this.limitSubscription) {\n this.newMaxSeats = null;\n }\n }\n\n get adjustedSeatTotal(): number {\n return this.newSeatCount * this.seatPrice;\n }\n\n get maxSeatTotal(): number {\n return this.newMaxSeats * this.seatPrice;\n }\n}\n","
\n
\n
\n
\n \n \n \n {{ \"total\" | i18n }}: {{ newSeatCount || 0 }} ×\n {{ seatPrice | currency: \"$\" }} = {{ adjustedSeatTotal | currency: \"$\" }} /\n {{ interval | i18n }}\n \n
\n
\n
\n
\n
\n \n \n
\n {{ \"limitSubscriptionDesc\" | i18n }}\n
\n
\n
\n
\n \n \n \n {{ \"maxSeatCost\" | i18n }}: {{ newMaxSeats || 0 }} ×\n {{ seatPrice | currency: \"$\" }} = {{ maxSeatTotal | currency: \"$\" }} /\n {{ interval | i18n }}\n \n
\n
\n \n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { OrganizationApiKeyType } from \"jslib-common/enums/organizationApiKeyType\";\nimport { OrganizationApiKeyRequest } from \"jslib-common/models/request/organizationApiKeyRequest\";\nimport { ApiKeyResponse } from \"jslib-common/models/response/apiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-billing-sync-api-key\",\n templateUrl: \"billing-sync-api-key.component.html\",\n})\nexport class BillingSyncApiKeyComponent {\n organizationId: string;\n hasBillingToken: boolean;\n\n showRotateScreen: boolean;\n masterPassword: Verification;\n formPromise: Promise;\n clientSecret?: string;\n keyRevisionDate?: Date;\n lastSyncDate?: Date = null;\n\n constructor(\n private userVerificationService: UserVerificationService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n copy() {\n this.platformUtilsService.copyToClipboard(this.clientSecret);\n }\n\n async submit() {\n if (this.showRotateScreen) {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword, OrganizationApiKeyRequest)\n .then((request) => {\n request.type = OrganizationApiKeyType.BillingSync;\n return this.apiService.postOrganizationRotateApiKey(this.organizationId, request);\n });\n const response = await this.formPromise;\n await this.load(response);\n this.showRotateScreen = false;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"billingSyncApiKeyRotated\")\n );\n } else {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword, OrganizationApiKeyRequest)\n .then((request) => {\n request.type = OrganizationApiKeyType.BillingSync;\n return this.apiService.postOrganizationApiKey(this.organizationId, request);\n });\n const response = await this.formPromise;\n await this.load(response);\n }\n }\n\n async load(response: ApiKeyResponse) {\n this.clientSecret = response.apiKey;\n this.keyRevisionDate = response.revisionDate;\n this.hasBillingToken = true;\n const syncStatus = await this.apiService.getSponsorshipSyncStatus(this.organizationId);\n this.lastSyncDate = syncStatus.lastSyncDate;\n }\n\n cancelRotate() {\n this.showRotateScreen = false;\n }\n\n rotateToken() {\n this.showRotateScreen = true;\n }\n\n private dayDiff(date1: Date, date2: Date): number {\n const diffTime = Math.abs(date2.getTime() - date1.getTime());\n return Math.round(diffTime / (1000 * 60 * 60 * 24));\n }\n\n get submitButtonText(): string {\n if (this.showRotateScreen) {\n return this.i18nService.t(\"rotateToken\");\n }\n\n return this.i18nService.t(this.hasBillingToken ? \"continue\" : \"generateToken\");\n }\n\n get showLastSyncText(): boolean {\n // If the keyRevisionDate is later than the lastSyncDate we need to show\n // a warning that they need to put the billing sync key in their self hosted install\n return this.lastSyncDate && this.lastSyncDate > this.keyRevisionDate;\n }\n\n get showAwaitingSyncText(): boolean {\n return this.lastSyncDate && this.lastSyncDate <= this.keyRevisionDate;\n }\n\n get daysBetween(): number {\n return this.dayDiff(this.keyRevisionDate, new Date());\n }\n}\n","
\n
\n \n
\n

\n {{ (hasBillingToken ? \"viewBillingSyncToken\" : \"generateBillingSyncToken\") | i18n }}\n

\n \n ×\n \n
\n
\n \n \n \n

{{ \"rotateBillingSyncTokenTitle\" | i18n }}

\n \n {{ \"rotateBillingSyncTokenWarning\" | i18n }}\n \n
\n\n
\n

{{ \"copyPasteBillingSync\" | i18n }}

\n \n
\n \n
\n \n \n \n
\n
\n
\n {{ \"lastSync\" | i18n }}:\n {{ lastSyncDate | date: \"medium\" }}\n
\n
\n \n {{\n (daysBetween === 1 ? \"awaitingSyncSingular\" : \"awaitingSyncPlural\")\n | i18n: daysBetween\n }}\n
\n
\n
\n
\n \n \n \n {{ submitButtonText }}\n \n \n \n {{ \"close\" | i18n }}\n \n \n {{ \"cancel\" | i18n }}\n \n \n {{ \"rotateToken\" | i18n }}\n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\n\n@Component({\n selector: \"app-change-plan\",\n templateUrl: \"change-plan.component.html\",\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private logService: LogService) {}\n\n async submit() {\n try {\n this.onChanged.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{ \"changeBillingPlan\" | i18n }}

\n

{{ \"changeBillingPlanUpgrade\" | i18n }}

\n \n \n
\n
\n","import { Component, EventEmitter, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { Verification } from \"jslib-common/types/verification\";\n\nclass CountBasedLocalizationKey {\n singular: string;\n plural: string;\n\n getKey(count: number) {\n return count == 1 ? this.singular : this.plural;\n }\n\n constructor(singular: string, plural: string) {\n this.singular = singular;\n this.plural = plural;\n }\n}\n\nclass OrganizationContentSummaryItem {\n count: number;\n get localizationKey(): string {\n return this.localizationKeyOptions.getKey(this.count);\n }\n private localizationKeyOptions: CountBasedLocalizationKey;\n constructor(count: number, localizationKeyOptions: CountBasedLocalizationKey) {\n this.count = count;\n this.localizationKeyOptions = localizationKeyOptions;\n }\n}\n\nclass OrganizationContentSummary {\n totalItemCount = 0;\n itemCountByType: OrganizationContentSummaryItem[] = [];\n}\n\n@Component({\n selector: \"app-delete-organization\",\n templateUrl: \"delete-organization.component.html\",\n})\nexport class DeleteOrganizationComponent implements OnInit {\n organizationId: string;\n loaded: boolean;\n deleteOrganizationRequestType: \"InvalidFamiliesForEnterprise\" | \"RegularDelete\" = \"RegularDelete\";\n organizationName: string;\n organizationContentSummary: OrganizationContentSummary = new OrganizationContentSummary();\n @Output() onSuccess: EventEmitter = new EventEmitter();\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private logService: LogService,\n private cipherService: CipherService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit(): Promise {\n await this.load();\n }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.deleteOrganization(this.organizationId, request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"organizationDeleted\"),\n this.i18nService.t(\"organizationDeletedDesc\")\n );\n this.onSuccess.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async load() {\n this.organizationName = (await this.organizationService.get(this.organizationId)).name;\n this.organizationContentSummary = await this.buildOrganizationContentSummary();\n this.loaded = true;\n }\n\n private async buildOrganizationContentSummary(): Promise {\n const organizationContentSummary = new OrganizationContentSummary();\n const organizationItems = (\n await this.cipherService.getAllFromApiForOrganization(this.organizationId)\n ).filter((item) => item.deletedDate == null);\n\n if (organizationItems.length < 1) {\n return organizationContentSummary;\n }\n\n organizationContentSummary.totalItemCount = organizationItems.length;\n for (const cipherType of Utils.iterateEnum(CipherType)) {\n const count = this.getOrganizationItemCountByType(organizationItems, cipherType);\n if (count > 0) {\n organizationContentSummary.itemCountByType.push(\n new OrganizationContentSummaryItem(\n count,\n this.getOrganizationItemLocalizationKeysByType(CipherType[cipherType])\n )\n );\n }\n }\n\n return organizationContentSummary;\n }\n\n private getOrganizationItemCountByType(items: CipherView[], type: CipherType) {\n return items.filter((item) => item.type == type).length;\n }\n\n private getOrganizationItemLocalizationKeysByType(type: string): CountBasedLocalizationKey {\n return new CountBasedLocalizationKey(`type${type}`, `type${type}Plural`);\n }\n}\n","
\n
\n \n
\n

{{ \"deleteOrganization\" | i18n }}

\n \n ×\n \n
\n
\n {{\n \"deletingOrganizationIsPermanentWarning\" | i18n: organizationName\n }}\n

\n \n {{ \"orgCreatedSponsorshipInvalid\" | i18n }}\n \n \n 0\">\n {{ \"deletingOrganizationContentWarning\" | i18n: organizationName }}\n

    \n
  • \n {{ type.count }} {{ type.localizationKey | i18n }}\n
  • \n
\n {{ \"deletingOrganizationActiveUserAccountsWarning\" | i18n }}\n \n \n

\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-download-license\",\n templateUrl: \"download-license.component.html\",\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n if (this.installationId == null || this.installationId === \"\") {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(\n this.organizationId,\n this.installationId\n );\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(\n window,\n licenseString,\n null,\n \"bitwarden_organization_license.json\"\n );\n this.onDownloaded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n

{{ \"downloadLicense\" | i18n }}

\n
\n
\n
\n \n \n \n \n
\n \n
\n
\n \n \n
\n
\n","import { Component } from \"@angular/core\";\n\n// Component is used so that the SVG can embed CSS color variables\n@Component({\n selector: \"app-image-org-subscription-hidden\",\n templateUrl: \"image-subscription-hidden.component.svg\",\n})\nexport class ImageSubscriptionHiddenComponent {}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { TransactionType } from \"jslib-common/enums/transactionType\";\nimport { VerifyBankRequest } from \"jslib-common/models/request/verifyBankRequest\";\nimport { BillingResponse } from \"jslib-common/models/response/billingResponse\";\n\n@Component({\n selector: \"app-org-billing\",\n templateUrl: \"./organization-billing.component.html\",\n})\nexport class OrganizationBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n // TODO - Make sure to properly split out the billing/invoice and payment method/account during org admin refresh\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(\n this.organizationId,\n request\n );\n await this.verifyBankPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"verifiedBankAccount\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"addCredit\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"changePaymentMethod\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return (\n this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp)\n );\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","
\n

\n {{ \"billing\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ (isCreditBalance ? \"accountCredit\" : \"accountBalance\") | i18n }}

\n

\n {{ creditOrBalance | currency: \"$\" }}\n

\n

{{ \"creditAppliedDesc\" | i18n }}

\n \n {{ \"addCredit\" | i18n }}\n \n \n \n

{{ \"paymentMethod\" | i18n }}

\n

{{ \"noPaymentMethod\" | i18n }}

\n \n \n

{{ \"verifyBankAccountDesc\" | i18n }} {{ \"verifyBankAccountFailureWarning\" | i18n }}

\n \n \n
\n
\n
$0.
\n
\n \n
\n \n
\n
\n
$0.
\n
\n \n
\n \n \n {{ \"verifyBankAccount\" | i18n }}\n \n \n \n

\n \n {{ \"inAppPurchase\" | i18n }}\n {{ paymentSource.description }}\n

\n
\n \n {{ (paymentSource ? \"changePaymentMethod\" : \"addPaymentMethod\") | i18n }}\n \n \n \n

{{ \"invoices\" | i18n }}

\n

{{ \"noInvoices\" | i18n }}

\n \n \n \n \n \n \n \n \n \n
{{ i.date | date: \"mediumDate\" }}\n \n \n \n {{ \"invoiceNumber\" | i18n: i.number }}\n {{ i.amount | currency: \"$\" }}\n \n \n {{ \"paid\" | i18n }}\n \n \n \n {{ \"unpaid\" | i18n }}\n \n
\n

{{ \"transactions\" | i18n }}

\n

{{ \"noTransactions\" | i18n }}

\n \n \n \n \n \n \n \n {{ t.amount | currency: \"$\" }}\n \n \n \n
{{ t.createdDate | date: \"mediumDate\" }}\n \n {{ \"chargeNoun\" | i18n }}\n \n {{ \"refundNoun\" | i18n }}\n \n \n {{ t.details }}\n
\n * {{ \"chargesStatement\" | i18n: \"BITWARDEN\" }}\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { OrganizationApiKeyType } from \"jslib-common/enums/organizationApiKeyType\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { BillingSyncConfigApi } from \"jslib-common/models/api/billingSyncConfigApi\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationConnectionResponse } from \"jslib-common/models/response/organizationConnectionResponse\";\nimport { OrganizationSubscriptionResponse } from \"jslib-common/models/response/organizationSubscriptionResponse\";\n\nimport { BillingSyncKeyComponent } from \"src/app/settings/billing-sync-key.component\";\n\nimport { BillingSyncApiKeyComponent } from \"./billing-sync-api-key.component\";\n\n@Component({\n selector: \"app-org-subscription\",\n templateUrl: \"organization-subscription.component.html\",\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n @ViewChild(\"setupBillingSyncTemplate\", { read: ViewContainerRef, static: true })\n setupBillingSyncModalRef: ViewContainerRef;\n\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n showAdjustSeatAutoscale = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showBillingSyncKey = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n hasBillingSyncToken: boolean;\n\n userOrg: Organization;\n existingBillingSyncConnection: OrganizationConnectionResponse;\n\n removeSponsorshipPromise: Promise;\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n @ViewChild(\"rotateBillingSyncKeyTemplate\", { read: ViewContainerRef, static: true })\n billingSyncKeyViewContainerRef: ViewContainerRef;\n billingSyncKeyRef: [ModalRef, BillingSyncKeyComponent];\n\n constructor(\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private messagingService: MessagingService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private logService: LogService,\n private modalService: ModalService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n this.userOrg = await this.organizationService.get(this.organizationId);\n if (this.userOrg.canManageBilling) {\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n }\n const apiKeyResponse = await this.apiService.getOrganizationApiKeyInformation(\n this.organizationId\n );\n this.hasBillingSyncToken = apiKeyResponse.data.some(\n (i) => i.keyType === OrganizationApiKeyType.BillingSync\n );\n\n if (this.selfHosted) {\n this.showBillingSyncKey = await this.apiService.getCloudCommunicationsEnabled();\n }\n\n if (this.showBillingSyncKey) {\n this.existingBillingSyncConnection = await this.apiService.getOrganizationConnection(\n this.organizationId,\n OrganizationConnectionType.CloudBillingSync,\n BillingSyncConfigApi\n );\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"reinstateConfirmation\"),\n this.i18nService.t(\"reinstateSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\")\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reinstated\"));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"cancelConfirmation\"),\n this.i18nService.t(\"cancelSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"canceledSubscription\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async changePlan() {\n this.showChangePlan = !this.showChangePlan;\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n async manageBillingSync() {\n const [ref] = await this.modalService.openViewRef(\n BillingSyncApiKeyComponent,\n this.setupBillingSyncModalRef,\n (comp) => {\n comp.organizationId = this.organizationId;\n comp.hasBillingToken = this.hasBillingSyncToken;\n }\n );\n ref.onClosed.subscribe(async () => {\n await this.load();\n });\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send(\"updatedOrgLicense\");\n }\n }\n\n subscriptionAdjusted() {\n this.load();\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n async removeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeSponsorshipConfirmation\"),\n this.i18nService.t(\"removeSponsorship\"),\n this.i18nService.t(\"remove\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n\n if (!isConfirmed) {\n return;\n }\n\n try {\n this.removeSponsorshipPromise = this.apiService.deleteRemoveSponsorship(this.organizationId);\n await this.removeSponsorshipPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removeSponsorshipSuccess\")\n );\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async manageBillingSyncSelfHosted() {\n this.billingSyncKeyRef = await this.modalService.openViewRef(\n BillingSyncKeyComponent,\n this.billingSyncKeyViewContainerRef,\n (comp) => {\n comp.entityId = this.organizationId;\n comp.existingConnectionId = this.existingBillingSyncConnection?.id;\n comp.billingSyncKey = this.existingBillingSyncConnection?.config?.billingSyncKey;\n comp.setParentConnection = (\n connection: OrganizationConnectionResponse\n ) => {\n this.existingBillingSyncConnection = connection;\n this.billingSyncKeyRef[0].close();\n };\n }\n );\n }\n\n get isExpired() {\n return (\n this.sub != null && this.sub.expiration != null && new Date(this.sub.expiration) < new Date()\n );\n }\n\n get subscriptionMarkedForCancel() {\n return (\n this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate\n );\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb\n ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2)\n : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? \"month\" : \"year\";\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get seats() {\n return this.sub.seats;\n }\n\n get maxAutoscaleSeats() {\n return this.sub.maxAutoscaleSeats;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get isSponsoredSubscription(): boolean {\n return this.sub.subscription?.items.some((i) => i.sponsoredSubscriptionItem);\n }\n\n get canDownloadLicense() {\n return (\n (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled)\n );\n }\n\n get canManageBillingSync() {\n return (\n !this.selfHosted &&\n (this.sub.planType === PlanType.EnterpriseAnnually ||\n this.sub.planType === PlanType.EnterpriseMonthly ||\n this.sub.planType === PlanType.EnterpriseAnnually2019 ||\n this.sub.planType === PlanType.EnterpriseMonthly2019)\n );\n }\n\n get subscriptionDesc() {\n if (this.sub.planType === PlanType.Free) {\n return this.i18nService.t(\"subscriptionFreePlan\", this.sub.seats.toString());\n } else if (\n this.sub.planType === PlanType.FamiliesAnnually ||\n this.sub.planType === PlanType.FamiliesAnnually2019\n ) {\n if (this.isSponsoredSubscription) {\n return this.i18nService.t(\"subscriptionSponsoredFamiliesPlan\", this.sub.seats.toString());\n } else {\n return this.i18nService.t(\"subscriptionFamiliesPlan\", this.sub.seats.toString());\n }\n } else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {\n return this.i18nService.t(\"subscriptionMaxReached\", this.sub.seats.toString());\n } else if (this.sub.maxAutoscaleSeats == null) {\n return this.i18nService.t(\"subscriptionUserSeatsUnlimitedAutoscale\");\n } else {\n return this.i18nService.t(\n \"subscriptionUserSeatsLimitedAutoscale\",\n this.sub.maxAutoscaleSeats.toString()\n );\n }\n }\n\n get showChangePlanButton() {\n return this.subscription == null && this.sub.planType === PlanType.Free && !this.showChangePlan;\n }\n\n get billingSyncSetUp() {\n return this.existingBillingSyncConnection?.id != null;\n }\n}\n","
\n

\n {{ \"subscription\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n\n
\n \n

{{ \"billingManagedByProvider\" | i18n: this.userOrg.providerName }}

\n

{{ \"billingContactProviderForAssistance\" | i18n }}

\n
\n
\n\n\n \n {{ \"subscriptionCanceled\" | i18n }}\n \n

{{ \"subscriptionPendingCanceled\" | i18n }}

\n \n \n {{ \"reinstateSubscription\" | i18n }}\n \n \n \n
\n
\n
\n
{{ \"billingPlan\" | i18n }}
\n
{{ sub.plan.name }}
\n \n
{{ \"status\" | i18n }}
\n
\n {{\n isSponsoredSubscription ? \"sponsored\" : subscription.status || \"-\"\n }}\n {{\n \"pendingCancellation\" | i18n\n }}\n
\n
{{ \"nextCharge\" | i18n }}
\n
\n {{\n nextInvoice\n ? (nextInvoice.date | date: \"mediumDate\") +\n \", \" +\n (nextInvoice.amount | currency: \"$\")\n : \"-\"\n }}\n
\n
\n
\n
\n
\n {{ \"details\" | i18n }}\n \n \n \n \n \n \n \n
\n {{ i.name }} {{ i.quantity > 1 ? \"×\" + i.quantity : \"\" }} @\n {{ i.amount | currency: \"$\" }}\n {{ i.quantity * i.amount | currency: \"$\" }} /{{ i.interval | i18n }}
\n
\n \n
\n
\n
{{ \"provider\" | i18n }}
\n
{{ \"yourProviderIs\" | i18n: userOrg.providerName }}
\n
\n
\n
\n
\n \n \n {{ \"changeBillingPlan\" | i18n }}\n \n \n \n

{{ \"manageSubscription\" | i18n }}

\n

{{ subscriptionDesc }}

\n \n
\n \n \n
\n
\n \n \n {{ \"removeSponsorship\" | i18n }}\n \n

{{ \"storage\" | i18n }}

\n

{{ \"subscriptionStorage\" | i18n: sub.maxStorageGb || 0:sub.storageName || \"0 MB\" }}

\n
\n \n {{ storagePercentage / 100 | percent }}\n
\n \n \n
\n
\n \n \n {{ \"removeStorage\" | i18n }}\n \n
\n \n
\n
\n \n

{{ \"selfHostingTitle\" | i18n }}

\n

\n {{ \"selfHostingEnterpriseOrganizationSectionCopy\" | i18n }}\n

\n
\n \n {{ \"downloadLicense\" | i18n }}\n \n \n {{ (hasBillingSyncToken ? \"manageBillingSync\" : \"setUpBillingSync\") | i18n }}\n \n
\n
\n \n
\n

{{ \"additionalOptions\" | i18n }}

\n

\n {{ \"additionalOptionsDesc\" | i18n }}\n

\n
\n \n \n {{ \"cancelSubscription\" | i18n }}\n \n
\n
\n \n
\n
{{ \"billingPlan\" | i18n }}
\n
{{ sub.plan.name }}
\n
{{ \"expiration\" | i18n }}
\n
\n {{ sub.expiration | date: \"mediumDate\" }}\n \n \n {{ \"licenseIsExpired\" | i18n }}\n \n
\n
{{ \"neverExpires\" | i18n }}
\n
\n
\n \n \n {{ \"manageSubscription\" | i18n }}\n \n
\n
\n
\n \n ×\n \n

{{ \"updateLicense\" | i18n }}

\n \n
\n
\n
\n

\n {{ \"billingSync\" | i18n }}\n

\n

\n {{ \"billingSyncDesc\" | i18n }}\n

\n \n {{ \"manageBillingSync\" | i18n }}\n \n \n {{ \"lastSync\" | i18n }}:\n \n {{ userOrg.familySponsorshipLastSyncDate | date: \"medium\" }}\n \n \n {{ \"never\" | i18n | lowercase }}\n \n \n
\n
\n\n\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-org-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent {\n access2fa = false;\n showBilling: boolean;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n const organization = await this.organizationService.get(params.organizationId);\n this.showBilling = !this.platformUtilsService.isSelfHost() && organization.canManageBilling;\n this.access2fa = organization.use2fa;\n });\n }\n}\n","
\n
\n
\n
\n
{{ \"settings\" | i18n }}
\n
\n \n {{ \"myOrganization\" | i18n }}\n \n \n {{ \"subscription\" | i18n }}\n \n \n {{ \"billing\" | i18n }}\n \n \n {{ \"twoStepLogin\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\n\nimport { TwoFactorDuoComponent } from \"../../settings/two-factor-duo.component\";\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from \"../../settings/two-factor-setup.component\";\n\n@Component({\n selector: \"app-two-factor-setup\",\n templateUrl: \"../../settings/two-factor-setup.component.html\",\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(\n apiService: ApiService,\n modalService: ModalService,\n messagingService: MessagingService,\n policyService: PolicyService,\n private route: ActivatedRoute,\n stateService: StateService\n ) {\n super(apiService, modalService, messagingService, policyService, stateService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo: {\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n }\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","
\n

{{ \"twoStepLogin\" | i18n }}

\n
\n

{{ \"twoStepLoginDesc\" | i18n }}

\n

{{ \"twoStepLoginOrganizationDesc\" | i18n }}

\n\n

{{ \"twoStepLoginRecoveryWarning\" | i18n }}

\n \n
\n

\n {{ \"providers\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n\n {{ \"twoStepLoginPolicyUserWarning\" | i18n }}\n\n
    \n
  • \n
    \n \n
    \n
    \n

    \n {{ p.name }}\n \n \n {{ \"enabled\" | i18n }}\n \n \n

    \n {{ p.description }}\n
    \n
    \n \n {{ \"manage\" | i18n }}\n \n
    \n
  • \n
\n\n\n\n\n\n\n\n","import { Component } from \"@angular/core\";\n\nimport { BaseAcceptComponent } from \"src/app/common/base.accept.component\";\n\n@Component({\n selector: \"app-accept-family-sponsorship\",\n templateUrl: \"accept-family-sponsorship.component.html\",\n})\nexport class AcceptFamilySponsorshipComponent extends BaseAcceptComponent {\n failedShortMessage = \"inviteAcceptFailedShort\";\n failedMessage = \"inviteAcceptFailed\";\n\n requiredParameters = [\"email\", \"token\"];\n\n async authedHandler(qParams: any) {\n this.router.navigate([\"/setup/families-for-enterprise\"], { queryParams: qParams });\n }\n\n async unauthedHandler(qParams: any) {\n if (!qParams.register) {\n this.router.navigate([\"/login\"], { queryParams: { email: qParams.email } });\n } else {\n this.router.navigate([\"/register\"], { queryParams: { email: qParams.email } });\n }\n }\n}\n","
\n
\n \"Bitwarden\"\n

\n \n {{ \"loading\" | i18n }}\n

\n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ValidationService } from \"jslib-angular/services/validation.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PlanSponsorshipType } from \"jslib-common/enums/planSponsorshipType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { OrganizationSponsorshipRedeemRequest } from \"jslib-common/models/request/organization/organizationSponsorshipRedeemRequest\";\n\nimport { DeleteOrganizationComponent } from \"src/app/organizations/settings/delete-organization.component\";\nimport { OrganizationPlansComponent } from \"src/app/settings/organization-plans.component\";\n\n@Component({\n selector: \"families-for-enterprise-setup\",\n templateUrl: \"families-for-enterprise-setup.component.html\",\n})\nexport class FamiliesForEnterpriseSetupComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: false })\n set organizationPlansComponent(value: OrganizationPlansComponent) {\n if (!value) {\n return;\n }\n\n value.plan = PlanType.FamiliesAnnually;\n value.product = ProductType.Families;\n value.acceptingSponsorship = true;\n value.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this));\n }\n\n @ViewChild(\"deleteOrganizationTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n\n loading = true;\n badToken = false;\n formPromise: Promise;\n\n token: string;\n existingFamilyOrganizations: Organization[];\n\n showNewOrganization = false;\n _organizationPlansComponent: OrganizationPlansComponent;\n _selectedFamilyOrganizationId = \"\";\n\n constructor(\n private router: Router,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private syncService: SyncService,\n private validationService: ValidationService,\n private organizationService: OrganizationService,\n private modalService: ModalService\n ) {}\n\n async ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n const error = qParams.token == null;\n if (error) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"sponsoredFamiliesAcceptFailed\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"/\"]);\n return;\n }\n\n this.token = qParams.token;\n\n await this.syncService.fullSync(true);\n this.badToken = !(await this.apiService.postPreValidateSponsorshipToken(this.token));\n this.loading = false;\n\n this.existingFamilyOrganizations = (await this.organizationService.getAll()).filter(\n (o) => o.planProductType === ProductType.Families\n );\n\n if (this.existingFamilyOrganizations.length === 0) {\n this.selectedFamilyOrganizationId = \"createNew\";\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit(this._selectedFamilyOrganizationId);\n await this.formPromise;\n this.formPromise = null;\n }\n\n get selectedFamilyOrganizationId() {\n return this._selectedFamilyOrganizationId;\n }\n\n set selectedFamilyOrganizationId(value: string) {\n this._selectedFamilyOrganizationId = value;\n this.showNewOrganization = value === \"createNew\";\n }\n\n private async doSubmit(organizationId: string) {\n try {\n const request = new OrganizationSponsorshipRedeemRequest();\n request.planSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise;\n request.sponsoredOrganizationId = organizationId;\n\n await this.apiService.postRedeemSponsorship(this.token, request);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"sponsoredFamiliesOfferRedeemed\")\n );\n await this.syncService.fullSync(true);\n\n this.router.navigate([\"/\"]);\n } catch (e) {\n if (this.showNewOrganization) {\n await this.modalService.openViewRef(\n DeleteOrganizationComponent,\n this.deleteModalRef,\n (comp) => {\n comp.organizationId = organizationId;\n comp.deleteOrganizationRequestType = \"InvalidFamiliesForEnterprise\";\n comp.onSuccess.subscribe(() => {\n this.router.navigate([\"/\"]);\n });\n }\n );\n }\n this.validationService.showError(this.i18nService.t(\"sponsorshipTokenHasExpired\"));\n }\n }\n\n private async onOrganizationCreateSuccess(value: any) {\n // Use newly created organization id\n await this.doSubmit(value.organizationId);\n }\n}\n","
\n
\n

{{ \"sponsoredFamiliesOffer\" | i18n }}

\n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n {{ \"badToken\" | i18n }}\n
\n \n

\n {{ \"acceptBitwardenFamiliesHelp\" | i18n }}\n

\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n \n
\n\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\nimport { ExportComponent as BaseExportComponent } from \"../../tools/export.component\";\n\n@Component({\n selector: \"app-org-export\",\n templateUrl: \"../../tools/export.component.html\",\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(\n cryptoService: CryptoService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n exportService: ExportService,\n eventService: EventService,\n private route: ActivatedRoute,\n policyService: PolicyService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n formBuilder: FormBuilder\n ) {\n super(\n cryptoService,\n i18nService,\n platformUtilsService,\n exportService,\n eventService,\n policyService,\n logService,\n userVerificationService,\n formBuilder\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n });\n await super.ngOnInit();\n }\n\n async checkExportDisabled() {\n return;\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName(\"org\");\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","\n
\n

{{ \"exportVault\" | i18n }}

\n
\n\n \n {{ \"personalVaultExportPolicyInEffect\" | i18n }}\n \n \n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n {{ \"exportVault\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent } from \"../../reports/exposed-passwords-report.component\";\n\n@Component({\n selector: \"app-org-exposed-passwords-report\",\n templateUrl: \"../../reports/exposed-passwords-report.component.html\",\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n auditService: AuditService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private organizationService: OrganizationService,\n private route: ActivatedRoute,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n auditService,\n modalService,\n messagingService,\n stateService,\n passwordRepromptService\n );\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await this.checkAccess();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

{{ \"exposedPasswordsReport\" | i18n }}

\n
\n

{{ \"exposedPasswordsReportDesc\" | i18n }}

\n\n \n {{ \"checkExposedPasswords\" | i18n }}\n\n
\n \n {{ \"noExposedPasswords\" | i18n }}\n \n \n \n {{ \"exposedPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"exposedXTimes\" | i18n: (exposedPasswordMap.get(c.id) | number) }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\n\nimport { ImportComponent as BaseImportComponent } from \"../../tools/import.component\";\n\n@Component({\n selector: \"app-org-import\",\n templateUrl: \"../../tools/import.component.html\",\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(\n i18nService: I18nService,\n importService: ImportService,\n router: Router,\n private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private organizationService: OrganizationService,\n logService: LogService\n ) {\n super(i18nService, importService, router, platformUtilsService, policyService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n this.successNavigate = [\"organizations\", this.organizationId, \"vault\"];\n await super.ngOnInit();\n this.importBlockedByPolicy = false;\n });\n const organization = await this.organizationService.get(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"importWarning\", this.organizationName),\n this.i18nService.t(\"warning\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","
\n

{{ \"importData\" | i18n }}

\n
\n\n {{ \"personalOwnershipPolicyInEffectImports\" | i18n }}\n\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/export-your-data/\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-lastpass/\n \n \n Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and\n save the CSV file.\n \n \n In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the\n CSV file.\n \n \n In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export\n Data\", then click \"Export CSV\" for your \"Accounts\".\n \n \n Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\"\n and save the XML file.\n \n \n Using the Padlock desktop application, click the hamburger icon in the top left corner and\n navigate to \"Settings\" → \"Export\" button and save the file \"As CSV\".\n \n \n Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the\n \"KeePass XML (2.x)\" option.\n \n \n Using the Universal Password Manager desktop application, navigate to \"Database\" →\n \"Export\" and save the CSV file.\n \n \n Using the SaferPass browser extension, click the hamburger icon in the top left corner and\n navigate to \"Settings\". Click the \"Export accounts\" button to save the CSV file.\n \n \n Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and\n click \"Show me my data\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Click on your \"account email\" (top\n right) and select \"Settings\". Go to \"Export\" and find the \"Export to .csv File\" option. Click\n \"Export\" to save the CSV file.\n \n \n Log into the Keeper web vault (keepersecurity.com/vault). Click on your \"account email\" (top\n right) and select \"Settings\". Go to \"Export\" and find the \"Export to .json File\" option. Click\n \"Export\" to save the JSON file.\n \n \n \n The process is exactly the same as importing from Google Chrome.\n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-chrome/\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-firefox/.\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-safari/.\n \n \n See detailed instructions on our help site at\n \n https://bitwarden.com/help/import-from-1password/.\n \n \n Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To\n XML\". In the dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\"\n button and save the XML file.\n \n \n Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\".\n Select \"OK\" to the warning alert and save the CSV file. Note that the importer only supports\n files exported while Enpass is set to the English language, so adjust your settings\n accordingly.\n \n \n Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" →\n \"Export\". Select the \".json\" file format option and save the JSON file.\n \n \n Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML\n format...\" and save the XML file.\n \n \n Log in to Dashlane, click on \"My Account\" → \"Settings\" → \"Export file\" and select\n \"Export as a CSV file\". This will download a zip archive containing various CSV files. Unzip\n the archive and import each CSV file individually.\n \n \n Dashlane no longer supports the JSON format. Only use this if you have an existing JSON for\n import. Use the CSV importer when creating new exports.\n \n \n Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\"\n and save the CSV file.\n \n \n Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\"\n → \"Export all\". Select the unencrypted format XML option and save the XML file.\n \n \n Using the True Key desktop application, click the gear icon (top right) and then navigate to\n \"App Settings\". Click the \"Export\" button, enter your password and save the CSV file.\n \n \n Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the\n top right to expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the\n \"download HTML+JSON\" button to save the HTML file.\n \n \n Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) →\n \"Options\" → \"Account & Data\" and click the \"Export\" button. Select all of your data,\n change the \"Format\" to \"CSV file\" and then click the \"Export\" button to save the CSV file.\n Note: RoboForm only allows you to export Logins. Other items will not be exported.\n \n \n Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the\n passwords you would like to export and click the \"Export\" button at the top of the listing.\n Choose the \"csv (lastpass)\" export format and click the \"Export\" button.\n \n \n Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the\n dialog that pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save\n the CSV file.\n \n \n Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" →\n \"Password Boss JSON - not encrypted\" and save the JSON file.\n \n \n Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\".\n Select \"All Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data\n from the textarea. Open a text editor like Notepad and paste the data. Save the data from the\n text editor as\n zoho_export.csv.\n \n \n Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top\n right corner. Navigate to \"Export\" → \"Export as CSV\" and save the CSV file.\n \n \n Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\"\n section and click \"Backup to CSV\" to save the CSV file.\n \n \n Make sure you have python-keyring and python-gnomekeyring installed. Save the\n GNOME Keyring Import/Export\n python script to your desktop as pw_helper.py. Open terminal and run\n chmod +rx Desktop/pw_helper.py and then\n python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the\n resulting my_passwords.json file here to Bitwarden.\n \n \n Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the\n \"Fields to export\" button and check all of the fields, change the \"Output format\" to \"CSV\",\n and then click the \"Start\" button to save the CSV file.\n \n \n Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the\n \"Download\" button to save the CSV file.\n \n \n Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\"\n window switch to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your\n vault's passphrase and click the \"Export\" button to save the JSON file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export\n data\". Select the \"Export\" button for the \"Export to CSV file\" option to save the CSV file.\n \n \n Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export\n data\". Select the \"Export\" button for the \"Export to JSON file\" option to save the JSON file.\n \n \n Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export\n Passwords\". Select the \"Export\" button, enter your master password, and save the FSK file.\n \n \n Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" →\n \"Import/Export\". Locate the \"Export to text file\" section and select the \"Export\" button to\n save the TXT file.\n \n \n Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" →\n \"Export\". Enter your master password and select the \"Export Anyway\" button to save the CSV\n file.\n \n \n Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" →\n \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT\n file.\n \n \n Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\"\n and then scan the QR code with your mobile device. Various CSV files will then be saved to\n your computer's downloads folder.\n \n \n Export your SecureSafe password safe to a CSV file with a comma delimiter.\n \n \n Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and\n select \"CSV File\" to save the CSV file.\n \n \n Open the BlackBerry Password Keeper application, then navigate to \"Settings\" →\n \"Import/Export\". Select \"Export Passwords\" and follow the instructions on screen to save the\n unencrypted CSV file.\n \n \n Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon\n and select \"Export\" to save the CSV file.\n \n \n Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then\n click \"Yes\" on the dialog and save the CSV file.\n \n \n Open the newest version of the Encryptr desktop application and allow all of your data to\n sync. Once syncing of your data is complete, the download icon in the top right corner will\n turn pink. Click the download icon and save the CSV file.\n \n \n From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the\n CSV file.\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n {{ \"importData\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent } from \"../../reports/inactive-two-factor-report.component\";\n\n@Component({\n selector: \"app-inactive-two-factor-report\",\n templateUrl: \"../../reports/inactive-two-factor-report.component.html\",\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService,\n private organizationService: OrganizationService\n ) {\n super(\n cipherService,\n modalService,\n messagingService,\n stateService,\n logService,\n passwordRepromptService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","
\n

\n {{ \"inactive2faReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"inactive2faReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noInactive2fa\" | i18n }}\n \n \n \n {{ \"inactive2faFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"instructions\" | i18n }}\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent } from \"../../reports/reused-passwords-report.component\";\n\n@Component({\n selector: \"app-reused-passwords-report\",\n templateUrl: \"../../reports/reused-passwords-report.component.html\",\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(cipherService, modalService, messagingService, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

\n {{ \"reusedPasswordsReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"reusedPasswordsReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noReusedPasswords\" | i18n }}\n \n \n \n {{ \"reusedPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ \"reusedXTimes\" | i18n: passwordUseMap.get(c.login.password) }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-org-tools\",\n templateUrl: \"tools.component.html\",\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n private messagingService: MessagingService\n ) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: this.organization.id });\n }\n}\n","
\n \n \n {{ \"loading\" | i18n }}\n \n \n
\n
\n \n
\n
\n {{ \"reports\" | i18n }}\n
\n \n {{ \"upgrade\" | i18n }}\n \n
\n
\n
\n \n {{ \"exposedPasswordsReport\" | i18n }}\n \n \n {{ \"reusedPasswordsReport\" | i18n }}\n \n \n {{ \"weakPasswordsReport\" | i18n }}\n \n \n {{ \"unsecuredWebsitesReport\" | i18n }}\n \n \n {{ \"inactive2faReport\" | i18n }}\n \n
\n
\n
\n
\n \n
\n
\n \n
\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent } from \"../../reports/unsecured-websites-report.component\";\n\n@Component({\n selector: \"app-unsecured-websites-report\",\n templateUrl: \"../../reports/unsecured-websites-report.component.html\",\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(\n cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(cipherService, modalService, messagingService, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","
\n

\n {{ \"unsecuredWebsitesReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"unsecuredWebsitesReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noUnsecuredWebsites\" | i18n }}\n \n \n \n {{ \"unsecuredWebsitesFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n
\n
\n\n","import { Component } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent } from \"../../reports/weak-passwords-report.component\";\n\n@Component({\n selector: \"app-weak-passwords-report\",\n templateUrl: \"../../reports/weak-passwords-report.component.html\",\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(\n cipherService: CipherService,\n passwordGenerationService: PasswordGenerationService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private route: ActivatedRoute,\n private organizationService: OrganizationService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n passwordGenerationService,\n modalService,\n messagingService,\n stateService,\n passwordRepromptService\n );\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organization = await this.organizationService.get(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some((x) => x.id === c.id);\n }\n}\n","
\n

\n {{ \"weakPasswordsReport\" | i18n }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n
\n

{{ \"weakPasswordsReportDesc\" | i18n }}

\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n {{ \"noWeakPasswords\" | i18n }}\n \n \n \n {{ \"weakPasswordsFoundDesc\" | i18n: (ciphers.length | number) }}\n \n \n \n \n \n \n \n \n \n
\n \n \n \n {{\n c.name\n }}\n \n \n {{ c.name }}\n \n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n {{ passwordStrengthMap.get(c.id)[0] | i18n }}\n \n
\n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherCreateRequest } from \"jslib-common/models/request/cipherCreateRequest\";\nimport { CipherRequest } from \"jslib-common/models/request/cipherRequest\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"../../vault/add-edit.component\";\n\n@Component({\n selector: \"app-org-vault-add-edit\",\n templateUrl: \"../../vault/add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n totpService: TotpService,\n passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService,\n messagingService: MessagingService,\n eventService: EventService,\n policyService: PolicyService,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService,\n organizationService: OrganizationService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n totpService,\n passwordGenerationService,\n messagingService,\n eventService,\n policyService,\n organizationService,\n logService,\n passwordRepromptService\n );\n }\n\n protected allowOwnershipAssignment() {\n if (\n this.ownershipOptions != null &&\n (this.ownershipOptions.length > 1 || !this.allowPersonal)\n ) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canEditAnyCollection;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canEditAnyCollection) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canEditAnyCollection || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted\n ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"personalOwnershipPolicyInEffect\" | i18n }}\n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n
\n
\n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n \n {{ \"upgrade\" | i18n }}\n \n
\n
\n \n {{ totpSec }}\n \n \n \n \n \n \n \n {{\n totpCodeFormatted\n }}\n \n \n \n
\n
\n
\n \n \n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n \n {{ \"newUri\" | i18n }}\n \n \n \n \n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n \n

{{ \"ownership\" | i18n }}

\n
\n
\n \n \n \n \n
\n
\n
\n \n

{{ \"collections\" | i18n }}

\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n
\n \n \n
\n
\n
\n \n
\n
\n {{ \"dateUpdated\" | i18n }}:\n {{ cipher.revisionDate | date: \"medium\" }}\n
\n
\n {{ \"datePasswordUpdated\" | i18n }}:\n {{ cipher.passwordRevisionDisplayDate | date: \"medium\" }}\n
\n
\n {{ \"passwordHistory\" | i18n }}:\n \n {{ cipher.passwordHistory.length }}\n \n
\n
\n
\n {{ ph.lastUsedDate | date: \"short\" }} -\n {{ ph.password }}\n
\n
\n
\n
\n \n

{{ \"options\" | i18n }}

\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n {{ (cipher?.isDeleted ? \"restore\" : \"save\") | i18n }}\n \n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"../../vault/attachments.component\";\n\n@Component({\n selector: \"app-org-vault-attachments\",\n templateUrl: \"../../vault/attachments.component.html\",\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n stateService,\n platformUtilsService,\n apiService,\n logService\n );\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canEditAnyCollection && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(\n this.cipherDomain,\n file,\n this.organization.canEditAnyCollection\n );\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canEditAnyCollection;\n }\n}\n","
\n
\n \n
\n

\n {{ \"attachments\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n {{ a.fileName }}\n
\n \n \n {{ \"attachmentFixDesc\" | i18n }}\n \n {{ \"fix\" | i18n }}\n \n
\n
\n {{ a.sizeName }}\n
\n \n \n \n \n
\n
\n

{{ \"newAttachment\" | i18n }}

\n \n \n {{ \"maxFileSize\" | i18n }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CiphersComponent as BaseCiphersComponent } from \"../../vault/ciphers.component\";\n\n@Component({\n selector: \"app-org-vault-ciphers\",\n templateUrl: \"../../vault/ciphers.component.html\",\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(\n searchService: SearchService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n cipherService: CipherService,\n eventService: EventService,\n totpService: TotpService,\n passwordRepromptService: PasswordRepromptService,\n logService: LogService,\n stateService: StateService,\n organizationService: OrganizationService,\n tokenService: TokenService,\n private apiService: ApiService\n ) {\n super(\n searchService,\n i18nService,\n platformUtilsService,\n cipherService,\n eventService,\n totpService,\n stateService,\n passwordRepromptService,\n logService,\n organizationService,\n tokenService\n );\n }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n this.deleted = deleted || false;\n if (this.organization.canEditAnyCollection) {\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n } else {\n this.allCiphers = (await this.cipherService.getAllDecrypted()).filter(\n (c) => c.organizationId === this.organization.id\n );\n }\n await this.searchService.indexCiphers(this.organization.id, this.allCiphers);\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canViewAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) =>\n c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n await super.search(timeout, this.allCiphers);\n }\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted\n ? this.apiService.deleteCipherAdmin(id)\n : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canEditAnyCollection && c.hasOldAttachments;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n \n {{ c.name }}\n \n \n {{ \"attachments\" | i18n }}\n \n \n {{ \"attachmentsNeedFix\" | i18n }}\n \n \n
\n {{ c.subTitle }}\n \n 0 && !organization\" class=\"tw-w-28\">\n \n \n \n \n \n \n \n \n \n \n \n \n {{ \"copyPassword\" | i18n }}\n \n \n \n {{ \"copyVerificationCode\" | i18n }}\n \n \n \n \n \n \n {{ \"clone\" | i18n }}\n \n \n \n {{ \"moveToOrganization\" | i18n }}\n \n \n \n \n \n \n \n \n \n \n
\n \n \n {{ \"loading\" | i18n }}\n \n \n

{{ \"noItemsInList\" | i18n }}

\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherCollectionsRequest } from \"jslib-common/models/request/cipherCollectionsRequest\";\n\nimport { CollectionsComponent as BaseCollectionsComponent } from \"../../vault/collections.component\";\n\n@Component({\n selector: \"app-org-vault-collections\",\n templateUrl: \"../../vault/collections.component.html\",\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n private apiService: ApiService,\n logService: LogService\n ) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canViewAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canEditAnyCollection) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"collections\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n

{{ \"collectionsDesc\" | i18n }}

\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\nimport { LockGuard } from \"jslib-angular/guards/lock.guard\";\nimport { UnauthGuard } from \"jslib-angular/guards/unauth.guard\";\n\nimport { AcceptEmergencyComponent } from \"./accounts/accept-emergency.component\";\nimport { AcceptOrganizationComponent } from \"./accounts/accept-organization.component\";\nimport { HintComponent } from \"./accounts/hint.component\";\nimport { LockComponent } from \"./accounts/lock.component\";\nimport { LoginComponent } from \"./accounts/login.component\";\nimport { RecoverDeleteComponent } from \"./accounts/recover-delete.component\";\nimport { RecoverTwoFactorComponent } from \"./accounts/recover-two-factor.component\";\nimport { RegisterComponent } from \"./accounts/register.component\";\nimport { RemovePasswordComponent } from \"./accounts/remove-password.component\";\nimport { SetPasswordComponent } from \"./accounts/set-password.component\";\nimport { SsoComponent } from \"./accounts/sso.component\";\nimport { TwoFactorComponent } from \"./accounts/two-factor.component\";\nimport { UpdatePasswordComponent } from \"./accounts/update-password.component\";\nimport { UpdateTempPasswordComponent } from \"./accounts/update-temp-password.component\";\nimport { VerifyEmailTokenComponent } from \"./accounts/verify-email-token.component\";\nimport { VerifyRecoverDeleteComponent } from \"./accounts/verify-recover-delete.component\";\nimport { HomeGuard } from \"./guards/home.guard\";\nimport { FrontendLayoutComponent } from \"./layouts/frontend-layout.component\";\nimport { UserLayoutComponent } from \"./layouts/user-layout.component\";\nimport { AcceptFamilySponsorshipComponent } from \"./organizations/sponsorships/accept-family-sponsorship.component\";\nimport { FamiliesForEnterpriseSetupComponent } from \"./organizations/sponsorships/families-for-enterprise-setup.component\";\nimport { AccessComponent } from \"./send/access.component\";\nimport { SendComponent } from \"./send/send.component\";\nimport { AccountComponent } from \"./settings/account.component\";\nimport { CreateOrganizationComponent } from \"./settings/create-organization.component\";\nimport { DomainRulesComponent } from \"./settings/domain-rules.component\";\nimport { EmergencyAccessViewComponent } from \"./settings/emergency-access-view.component\";\nimport { EmergencyAccessComponent } from \"./settings/emergency-access.component\";\nimport { PreferencesComponent } from \"./settings/preferences.component\";\nimport { SettingsComponent } from \"./settings/settings.component\";\nimport { SponsoredFamiliesComponent } from \"./settings/sponsored-families.component\";\nimport { ExportComponent } from \"./tools/export.component\";\nimport { GeneratorComponent } from \"./tools/generator.component\";\nimport { ImportComponent } from \"./tools/import.component\";\nimport { ToolsComponent } from \"./tools/tools.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: FrontendLayoutComponent,\n data: { doNotSaveUrl: true },\n children: [\n {\n path: \"\",\n pathMatch: \"full\",\n children: [], // Children lets us have an empty component.\n canActivate: [HomeGuard], // Redirects either to vault, login or lock page.\n },\n { path: \"login\", component: LoginComponent, canActivate: [UnauthGuard] },\n { path: \"2fa\", component: TwoFactorComponent, canActivate: [UnauthGuard] },\n {\n path: \"register\",\n component: RegisterComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"createAccount\" },\n },\n {\n path: \"sso\",\n component: SsoComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"enterpriseSingleSignOn\" },\n },\n {\n path: \"set-password\",\n component: SetPasswordComponent,\n data: { titleId: \"setMasterPassword\" },\n },\n {\n path: \"hint\",\n component: HintComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"passwordHint\" },\n },\n {\n path: \"lock\",\n component: LockComponent,\n canActivate: [LockGuard],\n },\n { path: \"verify-email\", component: VerifyEmailTokenComponent },\n {\n path: \"accept-organization\",\n component: AcceptOrganizationComponent,\n data: { titleId: \"joinOrganization\", doNotSaveUrl: false },\n },\n {\n path: \"accept-emergency\",\n component: AcceptEmergencyComponent,\n data: { titleId: \"acceptEmergency\", doNotSaveUrl: false },\n },\n {\n path: \"accept-families-for-enterprise\",\n component: AcceptFamilySponsorshipComponent,\n data: { titleId: \"acceptFamilySponsorship\", doNotSaveUrl: false },\n },\n { path: \"recover\", pathMatch: \"full\", redirectTo: \"recover-2fa\" },\n {\n path: \"recover-2fa\",\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"recoverAccountTwoStep\" },\n },\n {\n path: \"recover-delete\",\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"deleteAccount\" },\n },\n {\n path: \"verify-recover-delete\",\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuard],\n data: { titleId: \"deleteAccount\" },\n },\n {\n path: \"send/:sendId/:key\",\n component: AccessComponent,\n data: { title: \"Bitwarden Send\" },\n },\n {\n path: \"update-temp-password\",\n component: UpdateTempPasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"updateTempPassword\" },\n },\n {\n path: \"update-password\",\n component: UpdatePasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"updatePassword\" },\n },\n {\n path: \"remove-password\",\n component: RemovePasswordComponent,\n canActivate: [AuthGuard],\n data: { titleId: \"removeMasterPassword\" },\n },\n ],\n },\n {\n path: \"\",\n component: UserLayoutComponent,\n canActivate: [AuthGuard],\n children: [\n {\n path: \"vault\",\n loadChildren: async () =>\n (await import(\"./modules/vault/modules/individual-vault/individual-vault.module\"))\n .IndividualVaultModule,\n },\n { path: \"sends\", component: SendComponent, data: { title: \"Send\" } },\n {\n path: \"create-organization\",\n component: CreateOrganizationComponent,\n data: { titleId: \"newOrganization\" },\n },\n {\n path: \"settings\",\n component: SettingsComponent,\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"account\" },\n { path: \"account\", component: AccountComponent, data: { titleId: \"myAccount\" } },\n {\n path: \"preferences\",\n component: PreferencesComponent,\n data: { titleId: \"preferences\" },\n },\n {\n path: \"security\",\n loadChildren: async () =>\n (await import(\"./settings/security-routing.module\")).SecurityRoutingModule,\n },\n {\n path: \"domain-rules\",\n component: DomainRulesComponent,\n data: { titleId: \"domainRules\" },\n },\n {\n path: \"subscription\",\n loadChildren: async () =>\n (await import(\"./settings/subscription-routing.module\")).SubscriptionRoutingModule,\n },\n {\n path: \"emergency-access\",\n children: [\n {\n path: \"\",\n component: EmergencyAccessComponent,\n data: { titleId: \"emergencyAccess\" },\n },\n {\n path: \":id\",\n component: EmergencyAccessViewComponent,\n data: { titleId: \"emergencyAccess\" },\n },\n ],\n },\n {\n path: \"sponsored-families\",\n component: SponsoredFamiliesComponent,\n data: { titleId: \"sponsoredFamilies\" },\n },\n ],\n },\n {\n path: \"tools\",\n component: ToolsComponent,\n canActivate: [AuthGuard],\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"generator\" },\n { path: \"import\", component: ImportComponent, data: { titleId: \"importData\" } },\n { path: \"export\", component: ExportComponent, data: { titleId: \"exportVault\" } },\n {\n path: \"generator\",\n component: GeneratorComponent,\n data: { titleId: \"generator\" },\n },\n ],\n },\n {\n path: \"reports\",\n loadChildren: async () =>\n (await import(\"./reports/reports-routing.module\")).ReportsRoutingModule,\n },\n { path: \"setup/families-for-enterprise\", component: FamiliesForEnterpriseSetupComponent },\n ],\n },\n {\n path: \"organizations\",\n loadChildren: () =>\n import(\"./organizations/organization-routing.module\").then(\n (m) => m.OrganizationsRoutingModule\n ),\n },\n];\n\n@NgModule({\n imports: [\n RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: \"always\",\n // enableTracing: true,\n }),\n ],\n exports: [RouterModule],\n})\nexport class OssRoutingModule {}\n","import { NgModule } from \"@angular/core\";\n\nimport { LooseComponentsModule } from \"./modules/loose-components.module\";\nimport { PipesModule } from \"./modules/pipes/pipes.module\";\nimport { SharedModule } from \"./modules/shared.module\";\nimport { VaultFilterModule } from \"./modules/vault-filter/vault-filter.module\";\nimport { OrganizationBadgeModule } from \"./modules/vault/modules/organization-badge/organization-badge.module\";\n\n@NgModule({\n imports: [\n SharedModule,\n LooseComponentsModule,\n VaultFilterModule,\n OrganizationBadgeModule,\n PipesModule,\n ],\n exports: [LooseComponentsModule, VaultFilterModule, OrganizationBadgeModule, PipesModule],\n bootstrap: [],\n})\nexport class OssModule {}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ProviderService } from \"jslib-common/abstractions/provider.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { Provider } from \"jslib-common/models/domain/provider\";\n\n@Component({\n selector: \"app-providers\",\n templateUrl: \"providers.component.html\",\n})\nexport class ProvidersComponent implements OnInit {\n providers: Provider[];\n loaded = false;\n actionPromise: Promise;\n\n constructor(private providerService: ProviderService, private i18nService: I18nService) {}\n\n async ngOnInit() {\n document.body.classList.remove(\"layout_frontend\");\n await this.load();\n }\n\n async load() {\n const providers = await this.providerService.getAll();\n providers.sort(Utils.getSortFunction(this.i18nService, \"name\"));\n this.providers = providers;\n this.loaded = true;\n }\n}\n","\n
\n
\n

{{ \"providers\" | i18n }}

\n
\n

\n \n {{ \"loading\" | i18n }}\n

\n \n \n \n \n \n \n \n \n
\n \n \n {{ p.name }}\n \n \n {{ \"providerIsDisabled\" | i18n }}\n \n
\n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { BreachAccountResponse } from \"jslib-common/models/response/breachAccountResponse\";\n\n@Component({\n selector: \"app-breach-report\",\n templateUrl: \"breach-report.component.html\",\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private stateService: StateService) {}\n\n async ngOnInit() {\n this.username = await this.stateService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","
\n

{{ \"dataBreachReport\" | i18n }}

\n
\n

{{ \"breachDesc\" | i18n }}

\n
\n
\n
\n \n \n {{ \"breachCheckUsernameEmail\" | i18n }}\n
\n
\n \n \n {{ \"checkBreaches\" | i18n }}\n \n\n
\n

{{ \"reportError\" | i18n }}...

\n \n \n {{ \"breachUsernameNotFound\" | i18n: checkedUsername }}\n \n \n {{ \"breachUsernameFound\" | i18n: checkedUsername:breachedAccounts.length }}\n \n
    \n
  • \n
    \n
    \n \"\"\n
    \n
    \n

    {{ a.title }}

    \n

    \n

    {{ \"compromisedData\" | i18n }}:

    \n
      \n
    • {{ d }}
    • \n
    \n
    \n
    \n
    \n
    {{ \"website\" | i18n }}
    \n
    {{ a.domain }}
    \n
    {{ \"affectedUsers\" | i18n }}
    \n
    {{ a.pwnCount | number }}
    \n
    {{ \"breachOccurred\" | i18n }}
    \n
    {{ a.breachDate | date: \"mediumDate\" }}
    \n
    {{ \"breachReported\" | i18n }}
    \n
    {{ a.addedDate | date: \"mediumDate\" }}
    \n
    \n
    \n
    \n
  • \n
\n
\n
\n","import { Directive, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { AddEditComponent as OrgAddEditComponent } from \"../organizations/vault/add-edit.component\";\nimport { AddEditComponent } from \"../vault/add-edit.component\";\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n constructor(\n private modalService: ModalService,\n protected messagingService: MessagingService,\n public requiresPaid: boolean,\n private stateService: StateService,\n protected passwordRepromptService: PasswordRepromptService\n ) {}\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n async selectCipher(cipher: CipherView) {\n if (!(await this.repromptCipher(cipher))) {\n return;\n }\n\n const type = this.organization != null ? OrgAddEditComponent : AddEditComponent;\n\n const [modal, childComponent] = await this.modalService.openViewRef(\n type,\n this.cipherAddEditModalRef,\n (comp: OrgAddEditComponent | AddEditComponent) => {\n if (this.organization != null) {\n (comp as OrgAddEditComponent).organization = this.organization;\n comp.organizationId = this.organization.id;\n }\n\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onDeletedCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onRestoredCipher.subscribe(async () => {\n modal.close();\n await this.load();\n });\n }\n );\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send(\"upgradeOrganization\", { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.stateService.getCanAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send(\"premiumRequired\");\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n\n protected async repromptCipher(c: CipherView) {\n return (\n c.reprompt === CipherRepromptType.None ||\n (await this.passwordRepromptService.showPasswordPrompt())\n );\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-exposed-passwords-report\",\n templateUrl: \"exposed-passwords-report.component.html\",\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(\n protected cipherService: CipherService,\n protected auditService: AuditService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then((exposedCount) => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-inactive-two-factor-report\",\n templateUrl: \"inactive-two-factor-report.component.html\",\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n private logService: LogService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch (e) {\n this.logService.error(e);\n }\n\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n (c.login.totp != null && c.login.totp !== \"\") ||\n !c.login.hasUris ||\n c.isDeleted\n ) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== \"\") {\n const uri = u.uri.replace(\"www.\", \"\");\n const domain = Utils.getDomain(uri);\n if (domain != null && this.services.has(domain)) {\n if (this.services.get(domain) != null) {\n docs.set(c.id, this.services.get(domain));\n }\n inactive2faCiphers.push(c);\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request(\"https://2fa.directory/api/v3/totp.json\"));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const service of responseJson) {\n const serviceData = service[1];\n if (serviceData.domain == null) {\n continue;\n }\n if (serviceData.documentation == null) {\n continue;\n }\n if (serviceData[\"additional-domains\"] != null) {\n for (const additionalDomain of serviceData[\"additional-domains\"]) {\n this.services.set(additionalDomain, serviceData.documentation);\n }\n }\n this.services.set(serviceData.domain, serviceData.documentation);\n }\n }\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nexport enum ReportTypes {\n \"exposedPasswords\" = \"exposedPasswords\",\n \"reusedPasswords\" = \"reusedPasswords\",\n \"weakPasswords\" = \"weakPasswords\",\n \"unsecuredWebsites\" = \"unsecuredWebsites\",\n \"inactive2fa\" = \"inactive2fa\",\n \"dataBreach\" = \"dataBreach\",\n}\n\ntype ReportEntry = {\n title: string;\n description: string;\n route: string;\n icon: string;\n requiresPremium: boolean;\n};\n\nconst reports: Record = {\n exposedPasswords: {\n title: \"exposedPasswordsReport\",\n description: \"exposedPasswordsReportDesc\",\n route: \"exposed-passwords-report\",\n icon: `\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n reusedPasswords: {\n title: \"reusedPasswordsReport\",\n description: \"reusedPasswordsReportDesc\",\n route: \"reused-passwords-report\",\n icon: `\n \n \n \n \n \n `,\n requiresPremium: true,\n },\n weakPasswords: {\n title: \"weakPasswordsReport\",\n description: \"weakPasswordsReportDesc\",\n route: \"weak-passwords-report\",\n icon: `\n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n unsecuredWebsites: {\n title: \"unsecuredWebsitesReport\",\n description: \"unsecuredWebsitesReportDesc\",\n route: \"unsecured-websites-report\",\n icon: `\n \n \n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n inactive2fa: {\n title: \"inactive2faReport\",\n description: \"inactive2faReportDesc\",\n route: \"inactive-two-factor-report\",\n icon: `\n \n \n \n \n \n \n `,\n requiresPremium: true,\n },\n dataBreach: {\n title: \"dataBreachReport\",\n description: \"breachDesc\",\n route: \"breach-report\",\n icon: `\n \n \n \n \n \n \n \n \n \n \n `,\n requiresPremium: false,\n },\n};\n\n@Component({\n selector: \"app-report-card\",\n templateUrl: \"report-card.component.html\",\n})\nexport class ReportCardComponent implements OnInit {\n @Input() type: ReportTypes;\n\n report: ReportEntry;\n\n hasPremium: boolean;\n\n constructor(\n private stateService: StateService,\n private messagingService: MessagingService,\n private sanitizer: DomSanitizer\n ) {}\n\n async ngOnInit() {\n this.report = reports[this.type];\n\n this.hasPremium = await this.stateService.getCanAccessPremium();\n }\n\n get premium() {\n return this.report.requiresPremium && !this.hasPremium;\n }\n\n get route() {\n if (this.premium) {\n return null;\n }\n\n return this.report.route;\n }\n\n get icon() {\n return this.sanitizer.bypassSecurityTrustHtml(this.report.icon);\n }\n\n click() {\n if (this.premium) {\n this.messagingService.send(\"premiumRequired\");\n }\n }\n}\n","\n
\n \n
\n
\n
\n

{{ report.title | i18n }}

\n

{{ report.description | i18n }}

\n
\n {{ \"premium\" | i18n }}\n \n\n","import { Component } from \"@angular/core\";\n\nimport { ReportTypes } from \"./report-card.component\";\n\n@Component({\n selector: \"app-report-list\",\n templateUrl: \"report-list.component.html\",\n})\nexport class ReportListComponent {\n reports = [\n ReportTypes.exposedPasswords,\n ReportTypes.reusedPasswords,\n ReportTypes.weakPasswords,\n ReportTypes.unsecuredWebsites,\n ReportTypes.inactive2fa,\n ReportTypes.dataBreach,\n ];\n}\n","
\n

{{ \"reports\" | i18n }}

\n
\n\n

{{ \"reportsDesc\" | i18n }}

\n\n
\n
\n \n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { AuthGuard } from \"jslib-angular/guards/auth.guard\";\n\nimport { BreachReportComponent } from \"./breach-report.component\";\nimport { ExposedPasswordsReportComponent } from \"./exposed-passwords-report.component\";\nimport { InactiveTwoFactorReportComponent } from \"./inactive-two-factor-report.component\";\nimport { ReportListComponent } from \"./report-list.component\";\nimport { ReportsComponent } from \"./reports.component\";\nimport { ReusedPasswordsReportComponent } from \"./reused-passwords-report.component\";\nimport { UnsecuredWebsitesReportComponent } from \"./unsecured-websites-report.component\";\nimport { WeakPasswordsReportComponent } from \"./weak-passwords-report.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: ReportsComponent,\n canActivate: [AuthGuard],\n children: [\n { path: \"\", pathMatch: \"full\", component: ReportListComponent, data: { homepage: true } },\n {\n path: \"breach-report\",\n component: BreachReportComponent,\n data: { titleId: \"dataBreachReport\" },\n },\n {\n path: \"reused-passwords-report\",\n component: ReusedPasswordsReportComponent,\n data: { titleId: \"reusedPasswordsReport\" },\n },\n {\n path: \"unsecured-websites-report\",\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: \"unsecuredWebsitesReport\" },\n },\n {\n path: \"weak-passwords-report\",\n component: WeakPasswordsReportComponent,\n data: { titleId: \"weakPasswordsReport\" },\n },\n {\n path: \"exposed-passwords-report\",\n component: ExposedPasswordsReportComponent,\n data: { titleId: \"exposedPasswordsReport\" },\n },\n {\n path: \"inactive-two-factor-report\",\n component: InactiveTwoFactorReportComponent,\n data: { titleId: \"inactive2faReport\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ReportsRoutingModule {}\n","import { Component, OnDestroy } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { Subscription } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\n@Component({\n selector: \"app-reports\",\n templateUrl: \"reports.component.html\",\n})\nexport class ReportsComponent implements OnDestroy {\n homepage = true;\n subscription: Subscription;\n\n constructor(router: Router) {\n this.subscription = router.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((event) => {\n this.homepage = (event as NavigationEnd).url == \"/reports\";\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-reused-passwords-report\",\n templateUrl: \"reused-passwords-report.component.html\",\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(\n (c) =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1\n );\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-unsecured-websites-report\",\n templateUrl: \"unsecured-websites-report.component.html\",\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(\n protected cipherService: CipherService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter((c) => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some((u) => u.uri != null && u.uri.indexOf(\"http://\") === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { CipherReportComponent } from \"./cipher-report.component\";\n\n@Component({\n selector: \"app-weak-passwords-report\",\n templateUrl: \"weak-passwords-report.component.html\",\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(\n protected cipherService: CipherService,\n protected passwordGenerationService: PasswordGenerationService,\n modalService: ModalService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(modalService, messagingService, true, stateService, passwordRepromptService);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n const isUserNameNotEmpty = (c: CipherView): boolean => {\n return c.login.username != null && c.login.username.trim() !== \"\";\n };\n const getCacheKey = (c: CipherView): string => {\n return c.login.password + \"_____\" + (isUserNameNotEmpty(c) ? c.login.username : \"\");\n };\n\n allCiphers.forEach((c) => {\n if (\n c.type !== CipherType.Login ||\n c.login.password == null ||\n c.login.password === \"\" ||\n c.isDeleted\n ) {\n return;\n }\n const hasUserName = isUserNameNotEmpty(c);\n const cacheKey = getCacheKey(c);\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUserName) {\n const atPosition = c.login.username.indexOf(\"@\");\n if (atPosition > -1) {\n userInput = userInput\n .concat(\n c.login.username\n .substr(0, atPosition)\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n )\n .filter((i) => i.length >= 3);\n } else {\n userInput = c.login.username\n .trim()\n .toLowerCase()\n .split(/[^A-Za-z0-9]/)\n .filter((i) => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(\n c.login.password,\n userInput.length > 0 ? userInput : null\n );\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n weakPasswordCiphers.sort((a, b) => {\n return (\n this.passwordStrengthCache.get(getCacheKey(a)) -\n this.passwordStrengthCache.get(getCacheKey(b))\n );\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return [\"strong\", \"success\"];\n case 3:\n return [\"good\", \"primary\"];\n case 2:\n return [\"weak\", \"warning\"];\n default:\n return [\"veryWeak\", \"danger\"];\n }\n }\n}\n","import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { CryptoFunctionService } from \"jslib-common/abstractions/cryptoFunction.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SEND_KDF_ITERATIONS } from \"jslib-common/enums/kdfType\";\nimport { SendType } from \"jslib-common/enums/sendType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { SendAccess } from \"jslib-common/models/domain/sendAccess\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { SendAccessRequest } from \"jslib-common/models/request/sendAccessRequest\";\nimport { ErrorResponse } from \"jslib-common/models/response/errorResponse\";\nimport { SendAccessResponse } from \"jslib-common/models/response/sendAccessResponse\";\nimport { SendAccessView } from \"jslib-common/models/view/sendAccessView\";\n\n@Component({\n selector: \"app-send-access\",\n templateUrl: \"access.component.html\",\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n hideEmail = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(\n private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute,\n private cryptoService: CryptoService\n ) {}\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async (params) => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n const downloadData = await this.apiService.getSendFileDownloadData(\n this.send,\n this.accessRequest\n );\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"missingSendFile\"));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: \"no-store\" }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(\"sendTypeText\"))\n );\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n this.hideEmail = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(\n this.password,\n keyArray,\n \"sha256\",\n SEND_KDF_ITERATIONS\n );\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n this.hideEmail =\n this.creatorIdentifier == null &&\n !this.passwordRequired &&\n !this.loading &&\n !this.unavailable;\n }\n}\n","
\n
\n
\n

Bitwarden Send

\n
\n
\n

{{ \"sendCreatorIdentifier\" | i18n: creatorIdentifier }}

\n
\n
\n \n {{ \"viewSendHiddenEmailWarning\" | i18n }}\n {{\n \"learnMore\" | i18n\n }}.\n \n
\n
\n \n
\n","import { DatePipe } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"jslib-angular/components/send/add-edit.component\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-send-add-edit\",\n templateUrl: \"add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n datePipe: DatePipe,\n sendService: SendService,\n stateService: StateService,\n messagingService: MessagingService,\n policyService: PolicyService,\n logService: LogService\n ) {\n super(\n i18nService,\n platformUtilsService,\n environmentService,\n datePipe,\n sendService,\n messagingService,\n policyService,\n logService,\n stateService\n );\n }\n\n async copyLinkToClipboard(link: string): Promise {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n return new Promise((resolve) => {\n window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500);\n });\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n {{ \"sendDisabledWarning\" | i18n }}\n \n \n {{ \"sendOptionsPolicyInEffect\" | i18n }}\n
    \n
  • {{ \"sendDisableHideEmailInEffect\" | i18n }}
  • \n
\n
\n
\n
\n \n \n {{ \"sendNameDesc\" | i18n }}\n
\n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n {{ \"sendTextDesc\" | i18n }}\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n {{ \"file\" | i18n }}\n {{ send.file.fileName }} ({{ send.file.sizeName }})\n
\n
\n \n \n {{ \"sendFileDesc\" | i18n }} {{ \"maxFileSize\" | i18n }}\n
\n
\n
\n

{{ \"share\" | i18n }}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n

{{ \"options\" | i18n }}

\n \n \n \n
\n
\n \n \n
\n
\n \n \n
{{ \"maxAccessCountDesc\" | i18n }}
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n \n \n \n
\n
\n
{{ \"sendPasswordDesc\" | i18n }}
\n
\n
\n
\n \n \n
{{ \"sendNotesDesc\" | i18n }}
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n\n","import { DatePipe } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { ControlContainer, NgForm } from \"@angular/forms\";\n\nimport { EffluxDatesComponent as BaseEffluxDatesComponent } from \"jslib-angular/components/send/efflux-dates.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-send-efflux-dates\",\n templateUrl: \"efflux-dates.component.html\",\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class EffluxDatesComponent extends BaseEffluxDatesComponent {\n constructor(\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe\n ) {\n super(i18nService, platformUtilsService, datePipe);\n }\n}\n","
\n
\n \n \n \n \n
\n \n \n
\n
\n \n
\n \n \n \n {{ o.twelveHour }}\n \n \n
\n
\n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
{{ \"deletionDateDesc\" | i18n }}
\n
\n
\n
\n \n \n {{ \"clear\" | i18n }}\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n {{ o.twelveHour }}\n \n \n
\n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
{{ \"expirationDateDesc\" | i18n }}
\n
\n
\n","import { Component, NgZone, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { SendComponent as BaseSendComponent } from \"jslib-angular/components/send/send.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { EnvironmentService } from \"jslib-common/abstractions/environment.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { SendView } from \"jslib-common/models/view/sendView\";\n\nimport { AddEditComponent } from \"./add-edit.component\";\n\nconst BroadcasterSubscriptionId = \"SendComponent\";\n\n@Component({\n selector: \"app-send\",\n templateUrl: \"send.component.html\",\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild(\"sendAddEdit\", { read: ViewContainerRef, static: true })\n sendAddEditModalRef: ViewContainerRef;\n\n constructor(\n sendService: SendService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService,\n ngZone: NgZone,\n searchService: SearchService,\n policyService: PolicyService,\n private modalService: ModalService,\n private broadcasterService: BroadcasterService,\n logService: LogService\n ) {\n super(\n sendService,\n i18nService,\n platformUtilsService,\n environmentService,\n ngZone,\n searchService,\n policyService,\n logService\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"syncCompleted\":\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = await this.editSend(null);\n component.type = this.type;\n }\n\n async editSend(send: SendView) {\n const [modal, childComponent] = await this.modalService.openViewRef(\n AddEditComponent,\n this.sendAddEditModalRef,\n (comp) => {\n comp.sendId = send == null ? null : send.id;\n comp.onSavedSend.subscribe(async () => {\n modal.close();\n await this.load();\n });\n comp.onDeletedSend.subscribe(async () => {\n modal.close();\n await this.load();\n });\n }\n );\n\n return childComponent;\n }\n}\n","
\n \n {{ \"sendDisabledWarning\" | i18n }}\n \n
\n
\n
\n
\n {{ \"filters\" | i18n }}\n
\n
\n \n
\n
    \n
  • \n \n \n \n
  • \n
\n
\n
\n
\n

{{ \"types\" | i18n }}

\n
\n
    \n
  • \n \n \n {{ \"sendTypeText\" | i18n }}\n \n \n
  • \n
  • \n \n \n {{ \"sendTypeFile\" | i18n }}\n \n \n
  • \n
\n
\n
\n
\n
\n
\n
\n

\n {{ \"send\" | i18n }}\n \n \n \n {{ \"loading\" | i18n }}\n \n \n

\n
\n \n {{ \"createSend\" | i18n }}\n \n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n \n \n
\n
\n {{ s.name }}\n \n \n {{ \"disabled\" | i18n }}\n \n \n \n {{ \"password\" | i18n }}\n \n \n \n {{ \"maxAccessCountReached\" | i18n }}\n \n \n \n {{ \"expired\" | i18n }}\n \n \n \n {{ \"pendingDeletion\" | i18n }}\n \n
\n {{ s.deletionDate | date: \"medium\" }}\n
\n \n \n \n \n \n \n \n {{ \"removePassword\" | i18n }}\n \n \n \n
\n
\n \n \n {{ \"loading\" | i18n }}\n \n \n

{{ \"noSendsInList\" | i18n }}

\n \n
\n
\n
\n
\n
\n\n","import { Injectable } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { DeviceType } from \"jslib-common/enums/deviceType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { EventResponse } from \"jslib-common/models/response/eventResponse\";\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService, private policyService: PolicyService) {}\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + \":59.999\");\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error(\"Invalid date range.\");\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise {\n const appInfo = this.getAppInfo(ev.deviceType);\n const { message, humanReadableMessage } = await this.getEventMessage(ev, options);\n return {\n message: message,\n humanReadableMessage: humanReadableMessage,\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private async getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = \"\";\n let humanReadableMsg = \"\";\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = humanReadableMsg = this.i18nService.t(\"loggedIn\");\n break;\n case EventType.User_ChangedPassword:\n msg = humanReadableMsg = this.i18nService.t(\"changedPassword\");\n break;\n case EventType.User_Updated2fa:\n msg = humanReadableMsg = this.i18nService.t(\"enabledUpdated2fa\");\n break;\n case EventType.User_Disabled2fa:\n msg = humanReadableMsg = this.i18nService.t(\"disabled2fa\");\n break;\n case EventType.User_Recovered2fa:\n msg = humanReadableMsg = this.i18nService.t(\"recovered2fa\");\n break;\n case EventType.User_FailedLogIn:\n msg = humanReadableMsg = this.i18nService.t(\"failedLogin\");\n break;\n case EventType.User_FailedLogIn2fa:\n msg = humanReadableMsg = this.i18nService.t(\"failedLogin2fa\");\n break;\n case EventType.User_ClientExportedVault:\n msg = humanReadableMsg = this.i18nService.t(\"exportedVault\");\n break;\n case EventType.User_UpdatedTempPassword:\n msg = humanReadableMsg = this.i18nService.t(\"updatedMasterPassword\");\n break;\n case EventType.User_MigratedKeyToKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"migratedKeyConnector\");\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t(\"createdItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"createdItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t(\"editedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"editedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t(\"permanentlyDeletedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"permanentlyDeletedItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t(\"deletedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"deletedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t(\"restoredItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"restoredItemId\", this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t(\"createdAttachmentForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"createdAttachmentForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t(\"deletedAttachmentForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"deletedAttachmentForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t(\"movedItemIdToOrg\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"movedItemIdToOrg\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t(\"viewedItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"viewedItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t(\"viewedPasswordItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"viewedPasswordItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t(\"viewedHiddenFieldItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"viewedHiddenFieldItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t(\"viewedSecurityCodeItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"viewedSecurityCodeItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t(\"copiedHiddenFieldItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"copiedHiddenFieldItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t(\"copiedPasswordItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"copiedPasswordItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t(\"copiedSecurityCodeItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"copiedSecurityCodeItemId\",\n this.getShortId(ev.cipherId)\n );\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t(\"autofilledItemId\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\"autofilledItemId\", this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t(\"editedCollectionsForItem\", this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t(\n \"editedCollectionsForItem\",\n this.getShortId(ev.cipherId)\n );\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t(\"createdCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"createdCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t(\"editedCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t(\"deletedCollectionId\", this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t(\n \"deletedCollectionId\",\n this.getShortId(ev.collectionId)\n );\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t(\"createdGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"createdGroupId\", this.getShortId(ev.groupId));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t(\"editedGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"editedGroupId\", this.getShortId(ev.groupId));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t(\"deletedGroupId\", this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t(\"deletedGroupId\", this.getShortId(ev.groupId));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t(\"invitedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"invitedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t(\"confirmedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"confirmedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t(\"editedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t(\"removedUserId\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"removedUserId\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t(\"editedGroupsForUser\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"editedGroupsForUser\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t(\"unlinkedSsoUser\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"unlinkedSsoUser\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetPassword_Enroll:\n msg = this.i18nService.t(\"eventEnrollPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventEnrollPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetPassword_Withdraw:\n msg = this.i18nService.t(\"eventWithdrawPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventWithdrawPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_AdminResetPassword:\n msg = this.i18nService.t(\"eventAdminPasswordReset\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventAdminPasswordReset\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_ResetSsoLink:\n msg = this.i18nService.t(\"eventResetSsoLink\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"eventResetSsoLink\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n case EventType.OrganizationUser_FirstSsoLogin:\n msg = this.i18nService.t(\"firstSsoLogin\", this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"firstSsoLogin\",\n this.getShortId(ev.organizationUserId)\n );\n break;\n // Org\n case EventType.Organization_Updated:\n msg = humanReadableMsg = this.i18nService.t(\"editedOrgSettings\");\n break;\n case EventType.Organization_PurgedVault:\n msg = humanReadableMsg = this.i18nService.t(\"purgedOrganizationVault\");\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n case EventType.Organization_VaultAccessed:\n msg = humanReadableMsg = this.i18nService.t(\"vaultAccessedByProvider\");\n break;\n case EventType.Organization_EnabledSso:\n msg = humanReadableMsg = this.i18nService.t(\"enabledSso\");\n break;\n case EventType.Organization_DisabledSso:\n msg = humanReadableMsg = this.i18nService.t(\"disabledSso\");\n break;\n case EventType.Organization_EnabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"enabledKeyConnector\");\n break;\n case EventType.Organization_DisabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t(\"disabledKeyConnector\");\n break;\n case EventType.Organization_SponsorshipsSynced:\n msg = humanReadableMsg = this.i18nService.t(\"sponsorshipsSynced\");\n break;\n // Policies\n case EventType.Policy_Updated: {\n msg = this.i18nService.t(\"modifiedPolicyId\", this.formatPolicyId(ev));\n\n const policies = await this.policyService.getAll();\n const policy = policies.filter((p) => p.id === ev.policyId)[0];\n let p1 = this.getShortId(ev.policyId);\n if (policy != null) {\n p1 = PolicyType[policy.type];\n }\n\n humanReadableMsg = this.i18nService.t(\"modifiedPolicyId\", p1);\n break;\n }\n // Provider users:\n case EventType.ProviderUser_Invited:\n msg = this.i18nService.t(\"invitedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"invitedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Confirmed:\n msg = this.i18nService.t(\"confirmedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\n \"confirmedUserId\",\n this.getShortId(ev.providerUserId)\n );\n break;\n case EventType.ProviderUser_Updated:\n msg = this.i18nService.t(\"editedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"editedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Removed:\n msg = this.i18nService.t(\"removedUserId\", this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t(\"removedUserId\", this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderOrganization_Created:\n msg = this.i18nService.t(\"createdOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"createdOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_Added:\n msg = this.i18nService.t(\"addedOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"addedOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_Removed:\n msg = this.i18nService.t(\"removedOrganizationId\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"removedOrganizationId\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n case EventType.ProviderOrganization_VaultAccessed:\n msg = this.i18nService.t(\"accessedClientVault\", this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t(\n \"accessedClientVault\",\n this.getShortId(ev.providerOrganizationId)\n );\n break;\n default:\n break;\n }\n return {\n message: msg === \"\" ? null : msg,\n humanReadableMessage: humanReadableMsg === \"\" ? null : humanReadableMsg,\n };\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return [\"bwi-android\", this.i18nService.t(\"mobile\") + \" - Android\"];\n case DeviceType.iOS:\n return [\"bwi-apple\", this.i18nService.t(\"mobile\") + \" - iOS\"];\n case DeviceType.UWP:\n return [\"bwi-windows\", this.i18nService.t(\"mobile\") + \" - Windows\"];\n case DeviceType.ChromeExtension:\n return [\"bwi-chrome\", this.i18nService.t(\"extension\") + \" - Chrome\"];\n case DeviceType.FirefoxExtension:\n return [\"bwi-firefox\", this.i18nService.t(\"extension\") + \" - Firefox\"];\n case DeviceType.OperaExtension:\n return [\"bwi-opera\", this.i18nService.t(\"extension\") + \" - Opera\"];\n case DeviceType.EdgeExtension:\n return [\"bwi-edge\", this.i18nService.t(\"extension\") + \" - Edge\"];\n case DeviceType.VivaldiExtension:\n return [\"bwi-puzzle\", this.i18nService.t(\"extension\") + \" - Vivaldi\"];\n case DeviceType.SafariExtension:\n return [\"bwi-safari\", this.i18nService.t(\"extension\") + \" - Safari\"];\n case DeviceType.WindowsDesktop:\n return [\"bwi-windows\", this.i18nService.t(\"desktop\") + \" - Windows\"];\n case DeviceType.MacOsDesktop:\n return [\"bwi-apple\", this.i18nService.t(\"desktop\") + \" - macOS\"];\n case DeviceType.LinuxDesktop:\n return [\"bwi-linux\", this.i18nService.t(\"desktop\") + \" - Linux\"];\n case DeviceType.ChromeBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Chrome\"];\n case DeviceType.FirefoxBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Firefox\"];\n case DeviceType.OperaBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Opera\"];\n case DeviceType.SafariBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Safari\"];\n case DeviceType.VivaldiBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Vivaldi\"];\n case DeviceType.EdgeBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - Edge\"];\n case DeviceType.IEBrowser:\n return [\"bwi-globe\", this.i18nService.t(\"webVault\") + \" - IE\"];\n case DeviceType.UnknownBrowser:\n return [\n \"bwi-globe\",\n this.i18nService.t(\"webVault\") + \" - \" + this.i18nService.t(\"unknown\"),\n ];\n default:\n return [\"bwi-globe\", this.i18nService.t(\"unknown\")];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return \"\" + shortId + \"\";\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" +\n ev.organizationId +\n \"/vault?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.cipherId\n );\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/groups?search=\" + shortId\n );\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/collections?search=\" + shortId\n );\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" +\n ev.organizationId +\n \"/manage/people?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.organizationUserId\n );\n return a.outerHTML;\n }\n\n private formatProviderUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/providers/\" +\n ev.providerId +\n \"/manage/people?search=\" +\n shortId +\n \"&viewEvents=\" +\n ev.providerUserId\n );\n return a.outerHTML;\n }\n\n private formatProviderOrganizationId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerOrganizationId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\"href\", \"#/providers/\" + ev.providerId + \"/clients?search=\" + shortId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute(\n \"href\",\n \"#/organizations/\" + ev.organizationId + \"/manage/policies?policyId=\" + ev.policyId\n );\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement(\"a\");\n a.title = this.i18nService.t(\"view\");\n a.innerHTML = \"\" + shortId + \"\";\n return a;\n }\n\n private getShortId(id: string) {\n return id?.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return (\n date.getFullYear() +\n \"-\" +\n this.pad(date.getMonth() + 1) +\n \"-\" +\n this.pad(date.getDate()) +\n \"T\" +\n this.pad(date.getHours()) +\n \":\" +\n this.pad(date.getMinutes())\n );\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? \"0\" : \"\") + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { WINDOW } from \"jslib-angular/services/jslib-services.module\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport {\n EnvironmentService as EnvironmentServiceAbstraction,\n Urls,\n} from \"jslib-common/abstractions/environment.service\";\nimport { EventService as EventLoggingServiceAbstraction } from \"jslib-common/abstractions/event.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { NotificationsService as NotificationsServiceAbstraction } from \"jslib-common/abstractions/notifications.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService as StateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorService as TwoFactorServiceAbstraction } from \"jslib-common/abstractions/twoFactor.service\";\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\nimport { ContainerService } from \"jslib-common/services/container.service\";\nimport { EventService as EventLoggingService } from \"jslib-common/services/event.service\";\nimport { VaultTimeoutService as VaultTimeoutService } from \"jslib-common/services/vaultTimeout.service\";\n\nimport { I18nService as I18nService } from \"../../services/i18n.service\";\n\n@Injectable()\nexport class InitService {\n constructor(\n @Inject(WINDOW) private win: Window,\n private environmentService: EnvironmentServiceAbstraction,\n private notificationsService: NotificationsServiceAbstraction,\n private vaultTimeoutService: VaultTimeoutServiceAbstraction,\n private i18nService: I18nServiceAbstraction,\n private eventLoggingService: EventLoggingServiceAbstraction,\n private twoFactorService: TwoFactorServiceAbstraction,\n private stateService: StateServiceAbstraction,\n private platformUtilsService: PlatformUtilsServiceAbstraction,\n private cryptoService: CryptoServiceAbstraction\n ) {}\n\n init() {\n return async () => {\n await this.stateService.init();\n\n const urls = process.env.URLS as Urls;\n urls.base ??= this.win.location.origin;\n this.environmentService.setUrls(urls);\n\n setTimeout(() => this.notificationsService.init(), 3000);\n\n (this.vaultTimeoutService as VaultTimeoutService).init(true);\n const locale = await this.stateService.getLocale();\n await (this.i18nService as I18nService).init(locale);\n (this.eventLoggingService as EventLoggingService).init(true);\n this.twoFactorService.init();\n const htmlEl = this.win.document.documentElement;\n htmlEl.classList.add(\"locale_\" + this.i18nService.translationLocale);\n\n // Initial theme is set in index.html which must be updated if there are any changes to theming logic\n this.platformUtilsService.onDefaultSystemThemeChange(async (sysTheme) => {\n const bwTheme = await this.stateService.getTheme();\n if (bwTheme === ThemeType.System) {\n htmlEl.classList.remove(\"theme_\" + ThemeType.Light, \"theme_\" + ThemeType.Dark);\n htmlEl.classList.add(\"theme_\" + sysTheme);\n }\n });\n\n const containerService = new ContainerService(this.cryptoService);\n containerService.attachToWindow(this.win);\n };\n }\n}\n","import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector } from \"@angular/core\";\nimport * as jq from \"jquery\";\nimport { first } from \"rxjs/operators\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService as BaseModalService } from \"jslib-angular/services/modal.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Injectable()\nexport class ModalService extends BaseModalService {\n el: any = null;\n modalOpen = false;\n\n constructor(\n componentFactoryResolver: ComponentFactoryResolver,\n applicationRef: ApplicationRef,\n injector: Injector,\n private messagingService: MessagingService\n ) {\n super(componentFactoryResolver, applicationRef, injector);\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n modalRef.onCreated.pipe(first()).subscribe(() => {\n const modals = Array.from(document.querySelectorAll(\".modal\"));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal(\"show\");\n\n this.el.on(\"show.bs.modal\", () => {\n modalRef.show();\n this.messagingService.send(\"modalShow\");\n });\n this.el.on(\"shown.bs.modal\", () => {\n modalRef.shown();\n this.messagingService.send(\"modalShown\");\n if (!Utils.isMobileBrowser) {\n this.el.find(\"*[appAutoFocus]\").focus();\n }\n });\n this.el.on(\"hide.bs.modal\", () => {\n this.messagingService.send(\"modalClose\");\n });\n this.el.on(\"hidden.bs.modal\", () => {\n modalRef.closed();\n this.messagingService.send(\"modalClosed\");\n });\n }\n });\n\n modalRef.onClose.pipe(first()).subscribe(() => {\n if (this.el != null) {\n this.el.modal(\"hide\");\n }\n });\n }\n}\n","import { BasePolicy } from \"../organizations/policies/base-policy.component\";\n\nexport class PolicyListService {\n private policies: BasePolicy[] = [];\n\n addPolicies(policies: BasePolicy[]) {\n this.policies.push(...policies);\n }\n\n getPolicies(): BasePolicy[] {\n return this.policies;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Title } from \"@angular/platform-browser\";\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\nimport { filter } from \"rxjs\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private titleService: Title,\n i18nService: I18nService\n ) {\n this.currentUrl = this.router.url;\n\n router.events\n .pipe(filter((e) => e instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.currentUrl = event.url;\n\n let title = i18nService.t(\"pageTitle\", \"Bitwarden\");\n let child = this.activatedRoute.firstChild;\n while (child.firstChild) {\n child = child.firstChild;\n }\n\n const titleId: string = child?.snapshot?.data?.titleId;\n const rawTitle: string = child?.snapshot?.data?.title;\n const updateUrl = !child?.snapshot?.data?.doNotSaveUrl ?? true;\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== \"\") {\n title = newTitle + \" | \" + title;\n }\n }\n this.titleService.setTitle(title);\n if (updateUrl) {\n this.setPreviousUrl(this.currentUrl);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","import { APP_INITIALIZER, NgModule } from \"@angular/core\";\nimport { ToastrModule } from \"ngx-toastr\";\n\nimport {\n JslibServicesModule,\n SECURE_STORAGE,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n LOCALES_DIRECTORY,\n SYSTEM_LANGUAGE,\n} from \"jslib-angular/services/jslib-services.module\";\nimport { ModalService as ModalServiceAbstraction } from \"jslib-angular/services/modal.service\";\nimport { ApiService as ApiServiceAbstraction } from \"jslib-common/abstractions/api.service\";\nimport { CipherService as CipherServiceAbstraction } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService as CollectionServiceAbstraction } from \"jslib-common/abstractions/collection.service\";\nimport { CryptoService as CryptoServiceAbstraction } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService as FolderServiceAbstraction } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService as I18nServiceAbstraction } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService as ImportServiceAbstraction } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService as MessagingServiceAbstraction } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService as BaseStateServiceAbstraction } from \"jslib-common/abstractions/state.service\";\nimport { StateMigrationService as StateMigrationServiceAbstraction } from \"jslib-common/abstractions/stateMigration.service\";\nimport { StorageService as StorageServiceAbstraction } from \"jslib-common/abstractions/storage.service\";\nimport { StateFactory } from \"jslib-common/factories/stateFactory\";\nimport { ImportService } from \"jslib-common/services/import.service\";\n\nimport { StateService as StateServiceAbstraction } from \"../../abstractions/state.service\";\nimport { Account } from \"../../models/account\";\nimport { GlobalState } from \"../../models/globalState\";\nimport { BroadcasterMessagingService } from \"../../services/broadcasterMessaging.service\";\nimport { HtmlStorageService } from \"../../services/htmlStorage.service\";\nimport { I18nService } from \"../../services/i18n.service\";\nimport { MemoryStorageService } from \"../../services/memoryStorage.service\";\nimport { PasswordRepromptService } from \"../../services/passwordReprompt.service\";\nimport { StateService } from \"../../services/state.service\";\nimport { StateMigrationService } from \"../../services/stateMigration.service\";\nimport { WebPlatformUtilsService } from \"../../services/webPlatformUtils.service\";\nimport { HomeGuard } from \"../guards/home.guard\";\nimport { PermissionsGuard as OrgPermissionsGuard } from \"../organizations/guards/permissions.guard\";\nimport { NavigationPermissionsService as OrgPermissionsService } from \"../organizations/services/navigation-permissions.service\";\n\nimport { EventService } from \"./event.service\";\nimport { InitService } from \"./init.service\";\nimport { ModalService } from \"./modal.service\";\nimport { PolicyListService } from \"./policy-list.service\";\nimport { RouterService } from \"./router.service\";\n\n@NgModule({\n imports: [ToastrModule, JslibServicesModule],\n declarations: [],\n providers: [\n OrgPermissionsService,\n OrgPermissionsGuard,\n InitService,\n RouterService,\n EventService,\n PolicyListService,\n {\n provide: APP_INITIALIZER,\n useFactory: (initService: InitService) => initService.init(),\n deps: [InitService],\n multi: true,\n },\n {\n provide: STATE_FACTORY,\n useValue: new StateFactory(GlobalState, Account),\n },\n {\n provide: STATE_SERVICE_USE_CACHE,\n useValue: false,\n },\n {\n provide: I18nServiceAbstraction,\n useClass: I18nService,\n deps: [SYSTEM_LANGUAGE, LOCALES_DIRECTORY],\n },\n { provide: StorageServiceAbstraction, useClass: HtmlStorageService },\n {\n provide: SECURE_STORAGE,\n // TODO: platformUtilsService.isDev has a helper for this, but using that service here results in a circular dependency.\n // We have a tech debt item in the backlog to break up platformUtilsService, but in the meantime simply checking the environement here is less cumbersome.\n useClass: process.env.NODE_ENV === \"development\" ? HtmlStorageService : MemoryStorageService,\n },\n {\n provide: PlatformUtilsServiceAbstraction,\n useClass: WebPlatformUtilsService,\n },\n { provide: MessagingServiceAbstraction, useClass: BroadcasterMessagingService },\n { provide: ModalServiceAbstraction, useClass: ModalService },\n {\n provide: ImportServiceAbstraction,\n useClass: ImportService,\n deps: [\n CipherServiceAbstraction,\n FolderServiceAbstraction,\n ApiServiceAbstraction,\n I18nServiceAbstraction,\n CollectionServiceAbstraction,\n PlatformUtilsServiceAbstraction,\n CryptoServiceAbstraction,\n ],\n },\n {\n provide: StateMigrationServiceAbstraction,\n useClass: StateMigrationService,\n deps: [StorageServiceAbstraction, SECURE_STORAGE, STATE_FACTORY],\n },\n {\n provide: StateServiceAbstraction,\n useClass: StateService,\n deps: [\n StorageServiceAbstraction,\n SECURE_STORAGE,\n LogService,\n StateMigrationServiceAbstraction,\n STATE_FACTORY,\n STATE_SERVICE_USE_CACHE,\n ],\n },\n {\n provide: BaseStateServiceAbstraction,\n useExisting: StateServiceAbstraction,\n },\n {\n provide: PasswordRepromptServiceAbstraction,\n useClass: PasswordRepromptService,\n },\n HomeGuard,\n ],\n})\nexport class ServicesModule {}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nimport { DeauthorizeSessionsComponent } from \"./deauthorize-sessions.component\";\nimport { DeleteAccountComponent } from \"./delete-account.component\";\nimport { PurgeVaultComponent } from \"./purge-vault.component\";\n\n@Component({\n selector: \"app-account\",\n templateUrl: \"account.component.html\",\n})\nexport class AccountComponent {\n @ViewChild(\"deauthorizeSessionsTemplate\", { read: ViewContainerRef, static: true })\n deauthModalRef: ViewContainerRef;\n @ViewChild(\"purgeVaultTemplate\", { read: ViewContainerRef, static: true })\n purgeModalRef: ViewContainerRef;\n @ViewChild(\"deleteAccountTemplate\", { read: ViewContainerRef, static: true })\n deleteModalRef: ViewContainerRef;\n\n showChangeEmail = true;\n\n constructor(\n private modalService: ModalService,\n private apiService: ApiService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.showChangeEmail = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n\n async deauthorizeSessions() {\n await this.modalService.openViewRef(DeauthorizeSessionsComponent, this.deauthModalRef);\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef);\n }\n\n async deleteAccount() {\n await this.modalService.openViewRef(DeleteAccountComponent, this.deleteModalRef);\n }\n}\n","
\n

{{ \"myAccount\" | i18n }}

\n
\n\n\n
\n

{{ \"changeEmail\" | i18n }}

\n
\n \n
\n
\n

{{ \"dangerZone\" | i18n }}

\n
\n
\n
\n

{{ \"dangerZoneDesc\" | i18n }}

\n \n \n \n
\n
\n\n\n\n\n\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { PayPalConfig } from \"jslib-common/abstractions/environment.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { BitPayInvoiceRequest } from \"jslib-common/models/request/bitPayInvoiceRequest\";\n\n@Component({\n selector: \"app-add-credit\",\n templateUrl: \"add-credit.component.html\",\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(\"ppButtonForm\", { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction: string;\n ppButtonBusinessId: string;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(\n private stateService: StateService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private organizationService: OrganizationService,\n private logService: LogService\n ) {\n const payPalConfig = process.env.PAYPAL_CONFIG as PayPalConfig;\n this.ppButtonFormAction = payPalConfig.buttonAction;\n this.ppButtonBusinessId = payPalConfig.businessId;\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = \"20.00\";\n }\n this.ppButtonCustomField = \"organization_id:\" + this.organizationId;\n const org = await this.organizationService.get(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = \"10.00\";\n }\n this.userId = await this.stateService.getUserId();\n this.subject = await this.stateService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = \"user_id:\" + this.userId;\n }\n this.ppButtonCustomField += \",account_credit:1\";\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === \"\") {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch (e) {\n this.logService.error(e);\n }\n return;\n }\n try {\n this.onAdded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== \"\") {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2)\n .toString();\n return;\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.creditAmount = \"\";\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== \"\") {\n try {\n return parseFloat(this.creditAmount);\n } catch (e) {\n this.logService.error(e);\n }\n }\n return null;\n }\n}\n","
\n
\n \n

{{ \"addCredit\" | i18n }}

\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
$USD
\n \n
\n
\n
\n {{ \"creditDelayed\" | i18n }}\n
\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { PaymentRequest } from \"jslib-common/models/request/paymentRequest\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-adjust-payment\",\n templateUrl: \"adjust-payment.component.html\",\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then((result) => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"updatedPaymentMethod\")\n );\n this.onAdjusted.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === \"US\") {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","
\n
\n \n

\n {{ (currentType != null ? \"changePaymentMethod\" : \"addPaymentMethod\") | i18n }}\n

\n \n \n \n \n
\n
\n","import { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StorageRequest } from \"jslib-common/models/request/storageRequest\";\nimport { PaymentResponse } from \"jslib-common/models/response/paymentResponse\";\n\nimport { PaymentComponent } from \"./payment.component\";\n\n@Component({\n selector: \"app-adjust-storage\",\n templateUrl: \"adjust-storage.component.html\",\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = \"year\";\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(\n this.organizationId,\n request\n );\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(\n result.paymentIntentClientSecret,\n null\n );\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.platformUtilsService.showToast(\n \"warning\",\n null,\n this.i18nService.t(\"couldNotChargeCardPayInvoice\"),\n { timeout: 10000 }\n );\n this.router.navigate([\"../billing\"], { relativeTo: this.activatedRoute });\n } else {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"adjustedStorage\", request.storageGbAdjustment.toString())\n );\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","
\n
\n \n

{{ (add ? \"addStorage\" : \"removeStorage\") | i18n }}

\n
\n
\n \n \n
\n
\n
\n {{ \"total\" | i18n }}: {{ storageAdjustment || 0 }} GB ×\n {{ storageGbPrice | currency: \"$\" }} = {{ adjustedStorageTotal | currency: \"$\" }} /{{\n interval | i18n\n }}\n
\n \n \n \n {{ (add ? \"storageAddNote\" : \"storageRemoveNote\") | i18n }}\n \n
\n
\n\n","import { Component } from \"@angular/core\";\n\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { ApiKeyResponse } from \"jslib-common/models/response/apiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-api-key\",\n templateUrl: \"api-key.component.html\",\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: SecretVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: Verification;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(\n private userVerificationService: UserVerificationService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.postKey(this.entityId, request));\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ apiKeyTitle | i18n }}

\n \n ×\n \n
\n
\n

{{ apiKeyDescription | i18n }}

\n \n \n\n {{ apiKeyWarning | i18n }}\n \n

\n client_id:
\n {{ clientId }}\n

\n

\n client_secret:
\n {{ clientSecret }}\n

\n

\n scope:
\n {{ scope }}\n

\n

\n grant_type:
\n {{ grantType }}\n

\n \n
\n
\n \n \n {{ (isRotation ? \"rotateApiKey\" : \"viewApiKey\") | i18n }}\n \n \n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationConnectionType } from \"jslib-common/enums/organizationConnectionType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { BillingSyncConfigApi } from \"jslib-common/models/api/billingSyncConfigApi\";\nimport { BillingSyncConfigRequest } from \"jslib-common/models/request/billingSyncConfigRequest\";\nimport { OrganizationConnectionRequest } from \"jslib-common/models/request/organizationConnectionRequest\";\nimport { OrganizationConnectionResponse } from \"jslib-common/models/response/organizationConnectionResponse\";\n\n@Component({\n selector: \"app-billing-sync-key\",\n templateUrl: \"billing-sync-key.component.html\",\n})\nexport class BillingSyncKeyComponent {\n entityId: string;\n existingConnectionId: string;\n billingSyncKey: string;\n setParentConnection: (connection: OrganizationConnectionResponse) => void;\n\n formPromise: Promise> | Promise;\n\n constructor(private apiService: ApiService, private logService: LogService) {}\n\n async submit() {\n try {\n const request = new OrganizationConnectionRequest(\n this.entityId,\n OrganizationConnectionType.CloudBillingSync,\n true,\n new BillingSyncConfigRequest(this.billingSyncKey)\n );\n if (this.existingConnectionId == null) {\n this.formPromise = this.apiService.createOrganizationConnection(\n request,\n BillingSyncConfigApi\n );\n } else {\n this.formPromise = this.apiService.updateOrganizationConnection(\n request,\n BillingSyncConfigApi,\n this.existingConnectionId\n );\n }\n const response = (await this\n .formPromise) as OrganizationConnectionResponse;\n this.existingConnectionId = response?.id;\n this.billingSyncKey = response?.config?.billingSyncKey;\n this.setParentConnection(response);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async deleteConnection() {\n this.formPromise = this.apiService.deleteOrganizationConnection(this.existingConnectionId);\n await this.formPromise;\n this.setParentConnection(null);\n }\n}\n","
\n
\n \n
\n

{{ \"manageBillingSync\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"billingSyncKeyDesc\" | i18n }}

\n
\n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { EmailRequest } from \"jslib-common/models/request/emailRequest\";\nimport { EmailTokenRequest } from \"jslib-common/models/request/emailTokenRequest\";\n\n@Component({\n selector: \"app-change-email\",\n templateUrl: \"change-email.component.html\",\n})\nexport class ChangeEmailComponent implements OnInit {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n showTwoFactorEmailWarning = false;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n const twoFactorProviders = await this.apiService.getTwoFactorProviders();\n this.showTwoFactorEmailWarning = twoFactorProviders.data.some(\n (p) => p.type === TwoFactorProviderType.Email && p.enabled\n );\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.stateService.getKdfType();\n const kdfIterations = await this.stateService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n this.newEmail,\n kdf,\n kdfIterations\n );\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n newKey\n );\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"emailChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","
\n \n {{ \"changeEmailTwoFactorWarning\" | i18n }}\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n

{{ \"changeEmailDesc\" | i18n: newEmail }}

\n {{ \"loggedOutWarning\" | i18n }}\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { DEFAULT_KDF_ITERATIONS, KdfType } from \"jslib-common/enums/kdfType\";\nimport { KdfRequest } from \"jslib-common/models/request/kdfRequest\";\n\n@Component({\n selector: \"app-change-kdf\",\n templateUrl: \"change-kdf.component.html\",\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n recommendedKdfIterations = DEFAULT_KDF_ITERATIONS;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {\n this.kdfOptions = [{ name: \"PBKDF2 SHA-256\", value: KdfType.PBKDF2_SHA256 }];\n }\n\n async ngOnInit() {\n this.kdf = await this.stateService.getKdfType();\n this.kdfIterations = await this.stateService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.stateService.getEmail();\n const newKey = await this.cryptoService.makeKey(\n this.masterPassword,\n email,\n this.kdf,\n this.kdfIterations\n );\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(\n this.masterPassword,\n newKey\n );\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"encKeySettingsChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n

{{ \"encKeySettings\" | i18n }}

\n
\n{{ \"loggedOutWarning\" | i18n }}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
\n

{{ \"kdfIterationsDesc\" | i18n: (recommendedKdfIterations | number) }}

\n {{ \"warning\" | i18n }}: {{ \"kdfIterationsWarning\" | i18n: (50000 | number) }}\n
\n
\n
\n
\n \n\n","import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from \"jslib-angular/components/change-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SendService } from \"jslib-common/abstractions/send.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EmergencyAccessStatusType } from \"jslib-common/enums/emergencyAccessStatusType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { CipherWithIdRequest } from \"jslib-common/models/request/cipherWithIdRequest\";\nimport { EmergencyAccessUpdateRequest } from \"jslib-common/models/request/emergencyAccessUpdateRequest\";\nimport { FolderWithIdRequest } from \"jslib-common/models/request/folderWithIdRequest\";\nimport { OrganizationUserResetPasswordEnrollmentRequest } from \"jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest\";\nimport { PasswordRequest } from \"jslib-common/models/request/passwordRequest\";\nimport { SendWithIdRequest } from \"jslib-common/models/request/sendWithIdRequest\";\nimport { UpdateKeyRequest } from \"jslib-common/models/request/updateKeyRequest\";\n\n@Component({\n selector: \"app-change-password\",\n templateUrl: \"change-password.component.html\",\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private syncService: SyncService,\n private apiService: ApiService,\n private sendService: SendService,\n private organizationService: OrganizationService,\n private keyConnectorService: KeyConnectorService,\n private router: Router\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n if (await this.keyConnectorService.getUsesKeyConnector()) {\n this.router.navigate([\"/settings/security/two-factor\"]);\n }\n await super.ngOnInit();\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"oldAttachmentsNeedFixDesc\"),\n null,\n this.i18nService.t(\"learnMore\"),\n this.i18nService.t(\"close\"),\n \"warning\"\n );\n if (learnMore) {\n this.platformUtilsService.launchUri(\n \"https://bitwarden.com/help/attachments/#add-storage-space\"\n );\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"updateEncryptionKeyWarning\") +\n \" \" +\n this.i18nService.t(\"updateEncryptionKeyExportWarning\") +\n \" \" +\n this.i18nService.t(\"rotateEncKeyConfirmation\"),\n this.i18nService.t(\"rotateEncKeyTitle\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"updateKey\"));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(\n newMasterPasswordHash: string,\n newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, EncString]\n ) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(\n this.currentMasterPassword,\n null\n );\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"masterPasswordChanged\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"errorOccurred\"));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n const sends = await this.sendService.getAll();\n await Promise.all(\n sends.map(async (send) => {\n const cryptoKey = await this.cryptoService.decryptToBytes(send.key, null);\n send.key = (await this.cryptoService.encrypt(cryptoKey, encKey[0])) ?? send.key;\n request.sends.push(new SendWithIdRequest(send));\n })\n );\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n\n await this.updateAllResetPasswordKeys(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n\n private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) {\n const orgs = await this.organizationService.getAll();\n\n for (const org of orgs) {\n // If not already enrolled, skip\n if (!org.resetPasswordEnrolled) {\n continue;\n }\n\n // Retrieve public key\n const response = await this.apiService.getOrganizationKeys(org.id);\n const publicKey = Utils.fromB64ToArray(response?.publicKey);\n\n // Re-enroll - encrpyt user's encKey.key with organization public key\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create/Execute request\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = encryptedKey.encryptedString;\n\n await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n }\n }\n}\n","
\n

{{ \"changeMasterPassword\" | i18n }}

\n
\n\n{{ \"loggedOutWarning\" | i18n }}\n\n\n\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n \n \n \n
\n
\n \n
\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { first } from \"rxjs/operators\";\n\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\n\nimport { OrganizationPlansComponent } from \"./organization-plans.component\";\n\n@Component({\n selector: \"app-create-organization\",\n templateUrl: \"create-organization.component.html\",\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true })\n orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) {}\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async (qParams) => {\n if (qParams.plan === \"families\") {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === \"teams\") {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === \"enterprise\") {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n });\n }\n}\n","
\n
\n
\n
\n

{{ \"newOrganization\" | i18n }}

\n
\n

{{ \"newOrganizationDesc\" | i18n }}

\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-deauthorize-sessions\",\n templateUrl: \"deauthorize-sessions.component.html\",\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private messagingService: MessagingService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.postSecurityStamp(request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"sessionsDeauthorized\"),\n this.i18nService.t(\"logBackIn\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"deauthorizeSessions\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"deauthorizeSessionsDesc\" | i18n }}

\n {{ \"deauthorizeSessionsWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-delete-account\",\n templateUrl: \"delete-account.component.html\",\n})\nexport class DeleteAccountComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private messagingService: MessagingService,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.deleteAccount(request));\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"accountDeleted\"),\n this.i18nService.t(\"accountDeletedDesc\")\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"deleteAccount\" | i18n }}

\n \n ×\n \n
\n
\n

{{ \"deleteAccountDesc\" | i18n }}

\n {{ \"deleteAccountWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UpdateDomainsRequest } from \"jslib-common/models/request/updateDomainsRequest\";\n\n@Component({\n selector: \"app-domain-rules\",\n templateUrl: \"domain-rules.component.html\",\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map((d) => d.join(\", \"));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map((d) => {\n return {\n domains: d.domains.join(\", \"),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push(\"\");\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global\n .filter((d) => d.excluded)\n .map((d) => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom\n .filter((d) => d != null && d.trim() !== \"\")\n .map((d) => d.split(\",\").map((d2) => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"domainsUpdated\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","
\n

{{ \"domainRules\" | i18n }}

\n
\n

{{ \"domainRulesDesc\" | i18n }}

\n
\n

{{ \"customEqDomains\" | i18n }}

\n

\n \n {{ \"loading\" | i18n }}\n

\n \n
\n
\n \n \n
\n \n \n \n
\n \n {{ \"newCustomDomainDesc\" | i18n }}\n
\n \n

{{ \"globalEqDomains\" | i18n }}

\n

\n \n {{ \"loading\" | i18n }}\n

\n 0\">\n \n \n \n \n \n \n
{{ d.domains }}\n
\n \n \n \n
\n \n \n {{ \"exclude\" | i18n }}\n \n \n \n {{ \"include\" | i18n }}\n \n \n \n {{ \"customize\" | i18n }}\n \n
\n
\n
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { EmergencyAccessType } from \"jslib-common/enums/emergencyAccessType\";\nimport { EmergencyAccessInviteRequest } from \"jslib-common/models/request/emergencyAccessInviteRequest\";\nimport { EmergencyAccessUpdateRequest } from \"jslib-common/models/request/emergencyAccessUpdateRequest\";\n\n@Component({\n selector: \"emergency-access-add-edit\",\n templateUrl: \"emergency-access-add-edit.component.html\",\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly = false;\n editMode = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number }[];\n waitTime: number;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t(\"oneDay\"), value: 1 },\n { name: this.i18nService.t(\"days\", \"2\"), value: 2 },\n { name: this.i18nService.t(\"days\", \"7\"), value: 7 },\n { name: this.i18nService.t(\"days\", \"14\"), value: 14 },\n { name: this.i18nService.t(\"days\", \"30\"), value: 30 },\n { name: this.i18nService.t(\"days\", \"90\"), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t(\"editEmergencyContact\");\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t(\"inviteEmergencyContact\");\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.editMode ? \"editedUserId\" : \"invitedUsers\", this.name)\n );\n this.onSaved.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","
\n
\n \n
\n

\n \n {{ title }}\n {{ name }}\n

\n \n ×\n \n
\n
\n \n {{ \"loading\" | i18n }}\n
\n
\n \n

{{ \"inviteEmergencyContactDesc\" | i18n }}

\n
\n \n \n
\n
\n

\n {{ \"userAccess\" | i18n }}\n \n \n \n

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n {{ \"waitTimeDesc\" | i18n }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"jslib-angular/components/attachments.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\n@Component({\n selector: \"emergency-access-attachments\",\n templateUrl: \"../vault/attachments.component.html\",\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n platformUtilsService,\n apiService,\n window,\n logService,\n stateService\n );\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"emergency-access-confirm\",\n templateUrl: \"emergency-access-confirm.component.html\",\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(\n private apiService: ApiService,\n private cryptoService: CryptoService,\n private stateService: StateService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.stateService.setAutoConfirmFingerprints(true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { ChangePasswordComponent } from \"jslib-angular/components/change-password.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { KdfType } from \"jslib-common/enums/kdfType\";\nimport { PolicyData } from \"jslib-common/models/data/policyData\";\nimport { Policy } from \"jslib-common/models/domain/policy\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { EmergencyAccessPasswordRequest } from \"jslib-common/models/request/emergencyAccessPasswordRequest\";\nimport { PolicyResponse } from \"jslib-common/models/response/policyResponse\";\n\n@Component({\n selector: \"emergency-access-takeover\",\n templateUrl: \"emergency-access-takeover.component.html\",\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(\n i18nService: I18nService,\n cryptoService: CryptoService,\n messagingService: MessagingService,\n stateService: StateService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n policyService: PolicyService,\n private apiService: ApiService,\n private logService: LogService\n ) {\n super(\n i18nService,\n cryptoService,\n messagingService,\n passwordGenerationService,\n platformUtilsService,\n policyService,\n stateService\n );\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map(\n (policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse))\n );\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(\n policies\n );\n }\n }\n\n async submit() {\n if (!(await this.strongPassword())) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(\n this.emergencyAccessId\n );\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"unexpectedError\")\n );\n return;\n }\n\n const key = await this.cryptoService.makeKey(\n this.masterPassword,\n this.email,\n takeoverResponse.kdf,\n takeoverResponse.kdfIterations\n );\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

\n {{ \"takeover\" | i18n }}\n {{ name }}\n

\n \n ×\n \n
\n
\n {{ \"loggedOutWarning\" | i18n }}\n \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { EmergencyAccessViewResponse } from \"jslib-common/models/response/emergencyAccessResponse\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nimport { EmergencyAccessAttachmentsComponent } from \"./emergency-access-attachments.component\";\nimport { EmergencyAddEditComponent } from \"./emergency-add-edit.component\";\n\n@Component({\n selector: \"emergency-access-view\",\n templateUrl: \"emergency-access-view.component.html\",\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild(\"cipherAddEdit\", { read: ViewContainerRef, static: true })\n cipherAddEditModalRef: ViewContainerRef;\n @ViewChild(\"attachments\", { read: ViewContainerRef, static: true })\n attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n loaded = false;\n\n constructor(\n private cipherService: CipherService,\n private cryptoService: CryptoService,\n private modalService: ModalService,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService\n ) {}\n\n ngOnInit() {\n this.route.params.subscribe((qParams) => {\n if (qParams.id == null) {\n return this.router.navigate([\"settings/emergency-access\"]);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n async selectCipher(cipher: CipherView) {\n // eslint-disable-next-line\n const [_, childComponent] = await this.modalService.openViewRef(\n EmergencyAddEditComponent,\n this.cipherAddEditModalRef,\n (comp) => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.cipher = cipher;\n }\n );\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n this.loaded = true;\n }\n\n async viewAttachments(cipher: CipherView) {\n await this.modalService.openViewRef(\n EmergencyAccessAttachmentsComponent,\n this.attachmentsModalRef,\n (comp) => {\n comp.cipher = cipher;\n comp.emergencyAccessId = this.id;\n }\n );\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach((cipherResponse) => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then((c) => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","
\n

{{ \"vault\" | i18n }}

\n
\n
\n \n \n \n \n \n \n \n \n \n
\n \n \n {{\n c.name\n }}\n \n \n {{ \"shared\" | i18n }}\n \n \n \n {{ \"attachments\" | i18n }}\n \n
\n {{ c.subTitle }}\n
\n \n
\n
\n \n \n {{ \"loading\" | i18n }}\n \n
\n\n\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { UserNamePipe } from \"jslib-angular/pipes/user-name.pipe\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { EmergencyAccessStatusType } from \"jslib-common/enums/emergencyAccessStatusType\";\nimport { EmergencyAccessType } from \"jslib-common/enums/emergencyAccessType\";\nimport { Utils } from \"jslib-common/misc/utils\";\nimport { EmergencyAccessConfirmRequest } from \"jslib-common/models/request/emergencyAccessConfirmRequest\";\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n} from \"jslib-common/models/response/emergencyAccessResponse\";\n\nimport { EmergencyAccessAddEditComponent } from \"./emergency-access-add-edit.component\";\nimport { EmergencyAccessConfirmComponent } from \"./emergency-access-confirm.component\";\nimport { EmergencyAccessTakeoverComponent } from \"./emergency-access-takeover.component\";\n\n@Component({\n selector: \"emergency-access\",\n templateUrl: \"emergency-access.component.html\",\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild(\"addEdit\", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild(\"takeoverTemplate\", { read: ViewContainerRef, static: true })\n takeoverModalRef: ViewContainerRef;\n @ViewChild(\"confirmTemplate\", { read: ViewContainerRef, static: true })\n confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private userNamePipe: UserNamePipe,\n private logService: LogService,\n private stateService: StateService,\n private organizationService: OrganizationService\n ) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n const orgs = await this.organizationService.getAll();\n this.isOrganizationOwner = orgs.some((o) => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n async edit(details: EmergencyAccessGranteeDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessAddEditComponent,\n this.addEditModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(details);\n comp.emergencyAccessId = details?.id;\n comp.readOnly = !this.canAccessPremium;\n comp.onSaved.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeleted.subscribe(() => {\n modal.close();\n this.remove(details);\n });\n }\n );\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenReinvited\", contact.email)\n );\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.stateService.getAutoConfirmFingerPrints();\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessConfirmComponent,\n this.confirmModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(contact);\n comp.emergencyAccessId = contact.id;\n comp.userId = contact?.granteeId;\n comp.onConfirmed.subscribe(async () => {\n modal.close();\n\n comp.formPromise = this.doConfirmation(contact);\n await comp.formPromise;\n\n updateUser();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(contact))\n );\n });\n }\n );\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"hasBeenConfirmed\", this.userNamePipe.transform(contact))\n );\n this.actionPromise = null;\n }\n\n async remove(\n details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse\n ) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeUserConfirmation\"),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"removedUserId\", this.userNamePipe.transform(details))\n );\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"requestAccessConfirmation\", details.waitTimeDays.toString()),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"requestAccess\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"requestSent\", this.userNamePipe.transform(details))\n );\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(\n details.type === EmergencyAccessType.View ? \"view\" : \"takeover\"\n );\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"approveAccessConfirmation\", this.userNamePipe.transform(details), type),\n this.userNamePipe.transform(details),\n this.i18nService.t(\"approve\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"emergencyApproved\", this.userNamePipe.transform(details))\n );\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"emergencyRejected\", this.userNamePipe.transform(details))\n );\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(\n EmergencyAccessTakeoverComponent,\n this.takeoverModalRef,\n (comp) => {\n comp.name = this.userNamePipe.transform(details);\n comp.email = details.email;\n comp.emergencyAccessId = details != null ? details.id : null;\n\n comp.onDone.subscribe(() => {\n modal.close();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"passwordResetFor\", this.userNamePipe.transform(details))\n );\n });\n }\n );\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n this.logService.debug(\n \"User's fingerprint: \" +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join(\"-\")\n );\n } catch {\n // Ignore errors since it's just a debug message\n }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","
\n

{{ \"emergencyAccess\" | i18n }}

\n
\n

\n {{ \"emergencyAccessDesc\" | i18n }}\n \n {{ \"learnMore\" | i18n }}.\n \n

\n\n

\n {{ \"warning\" | i18n }}: {{ \"emergencyAccessOwnerWarning\" | i18n }}\n

\n\n
\n

\n {{ \"trustedEmergencyContacts\" | i18n }}\n \n

\n
\n \n \n {{ \"addEmergencyContact\" | i18n }}\n \n
\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n \n {{ c.email }}\n {{ \"invited\" | i18n }}\n {{\n \"accepted\" | i18n\n }}\n {{ \"emergencyAccessRecoveryInitiated\" | i18n }}\n {{ \"emergencyAccessRecoveryApproved\" | i18n }}\n\n {{\n \"view\" | i18n\n }}\n {{\n \"takeover\" | i18n\n }}\n\n {{ c.name }}\n \n
\n \n \n \n
\n \n \n {{ \"resendInvitation\" | i18n }}\n \n \n \n {{ \"confirm\" | i18n }}\n \n \n \n {{ \"approve\" | i18n }}\n \n \n \n {{ \"reject\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n
\n\n

{{ \"noTrustedContacts\" | i18n }}

\n\n
\n

{{ \"designatedEmergencyContacts\" | i18n }}

\n
\n\n\n \n \n \n \n \n \n \n
\n \n \n \n {{ c.email }}\n {{ \"invited\" | i18n }}\n {{\n \"accepted\" | i18n\n }}\n {{ \"emergencyAccessRecoveryInitiated\" | i18n }}\n {{ \"emergencyAccessRecoveryApproved\" | i18n }}\n\n {{\n \"view\" | i18n\n }}\n {{\n \"takeover\" | i18n\n }}\n\n {{ c.name }}\n \n
\n \n \n \n
\n \n \n {{ \"requestAccess\" | i18n }}\n \n \n \n {{ \"takeover\" | i18n }}\n \n \n \n {{ \"view\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n
\n\n

{{ \"noGrantedAccess\" | i18n }}

\n\n\n\n\n","import { Component } from \"@angular/core\";\n\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { Cipher } from \"jslib-common/models/domain/cipher\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"../vault/add-edit.component\";\n\n@Component({\n selector: \"app-org-vault-add-edit\",\n templateUrl: \"../vault/add-edit.component.html\",\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n totpService: TotpService,\n passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService,\n eventService: EventService,\n policyService: PolicyService,\n passwordRepromptService: PasswordRepromptService,\n organizationService: OrganizationService,\n logService: LogService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n totpService,\n passwordGenerationService,\n messagingService,\n eventService,\n policyService,\n organizationService,\n logService,\n passwordRepromptService\n );\n }\n\n async load() {\n this.title = this.i18nService.t(\"viewItem\");\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { PlanType } from \"jslib-common/enums/planType\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { ProductType } from \"jslib-common/enums/productType\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { SymmetricCryptoKey } from \"jslib-common/models/domain/symmetricCryptoKey\";\nimport { OrganizationCreateRequest } from \"jslib-common/models/request/organizationCreateRequest\";\nimport { OrganizationKeysRequest } from \"jslib-common/models/request/organizationKeysRequest\";\nimport { OrganizationUpgradeRequest } from \"jslib-common/models/request/organizationUpgradeRequest\";\nimport { ProviderOrganizationCreateRequest } from \"jslib-common/models/request/provider/providerOrganizationCreateRequest\";\nimport { PlanResponse } from \"jslib-common/models/response/planResponse\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-organization-plans\",\n templateUrl: \"organization-plans.component.html\",\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() acceptingSponsorship = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Input() providerId: string;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading = true;\n selfHosted = false;\n ownedBusiness = false;\n premiumAccessAddon = false;\n additionalStorage = 0;\n additionalSeats = 0;\n name: string;\n billingEmail: string;\n clientOwnerEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock = false;\n discount = 0;\n\n plans: PlanResponse[];\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private router: Router,\n private syncService: SyncService,\n private policyService: PolicyService,\n private organizationService: OrganizationService,\n private logService: LogService,\n private messagingService: MessagingService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n\n if (this.providerId) {\n this.ownedBusiness = true;\n this.changedOwnedBusiness();\n }\n\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find((plan) => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual ? \"year\" : \"month\";\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter((plan) => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter((plan) => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter((plan) => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans.filter(\n (plan) =>\n !plan.legacyYear &&\n !plan.disabled &&\n (plan.isAnnual || plan.product === this.productTypes.Free)\n );\n\n if (this.acceptingSponsorship) {\n const familyPlan = this.plans.find((plan) => plan.type === PlanType.FamiliesAnnually);\n this.discount = familyPlan.basePrice;\n validPlans = [familyPlan];\n }\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(\n (plan) => !plan.legacyYear && !plan.disabled && plan.product === this.product\n );\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal - this.discount;\n }\n\n get freeTrial() {\n return this.selectedPlan.trialPeriodDays != null;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null\n ? (this.taxComponent.taxRate / 100) * this.subtotal\n : 0;\n }\n\n get total() {\n return this.subtotal + this.taxCharges || 0;\n }\n\n get paymentDesc() {\n if (this.acceptingSponsorship) {\n return this.i18nService.t(\"paymentSponsored\");\n } else if (this.freeTrial && this.createOrganization) {\n return this.i18nService.t(\"paymentChargedWithTrial\");\n } else {\n return this.i18nService.t(\"paymentCharged\", this.i18nService.t(this.selectedPlanInterval));\n }\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (\n !this.additionalSeats &&\n !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption\n ) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== \"US\";\n // Bank Account payments are only available for US customers\n if (\n this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount\n ) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy();\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n\n try {\n const doSubmit = async (): Promise => {\n let orgId: string = null;\n if (this.createOrganization) {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t(\"defaultCollection\"),\n shareKey[1]\n );\n const collectionCt = collection.encryptedString;\n const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]);\n\n if (this.selfHosted) {\n orgId = await this.createSelfHosted(key, collectionCt, orgKeys);\n } else {\n orgId = await this.createCloudHosted(key, collectionCt, orgKeys, shareKey[1]);\n }\n\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"organizationCreated\"),\n this.i18nService.t(\"organizationReadyToGo\")\n );\n } else {\n orgId = await this.updateOrganization(orgId);\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"organizationUpgraded\")\n );\n }\n\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (!this.acceptingSponsorship) {\n this.router.navigate([\"/organizations/\" + orgId]);\n }\n\n return orgId;\n };\n\n this.formPromise = doSubmit();\n const organizationId = await this.formPromise;\n this.onSuccess.emit({ organizationId: organizationId });\n this.messagingService.send(\"organizationCreated\", organizationId);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async userHasBlockingSingleOrgPolicy() {\n return this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n private async updateOrganization(orgId: string) {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon =\n this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n // Retrieve org info to backfill pub/priv key if necessary\n const org = await this.organizationService.get(this.organizationId);\n if (!org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n return this.organizationId;\n }\n\n private async createCloudHosted(\n key: string,\n collectionCt: string,\n orgKeys: [string, EncString],\n orgKey: SymmetricCryptoKey\n ) {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n const tokenResult = await this.paymentComponent.createPaymentToken();\n\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon =\n this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n\n if (this.providerId) {\n const providerRequest = new ProviderOrganizationCreateRequest(this.clientOwnerEmail, request);\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n providerRequest.organizationCreateRequest.key = (\n await this.cryptoService.encrypt(orgKey.key, providerKey)\n ).encryptedString;\n const orgId = (\n await this.apiService.postProviderCreateOrganization(this.providerId, providerRequest)\n ).organizationId;\n\n return orgId;\n } else {\n return (await this.apiService.postOrganization(request)).id;\n }\n }\n\n private async createSelfHosted(key: string, collectionCt: string, orgKeys: [string, EncString]) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n throw new Error(this.i18nService.t(\"selectFile\"));\n }\n\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n fd.append(\"key\", key);\n fd.append(\"collectionName\", collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n const orgId = response.id;\n\n // Org Keys live outside of the OrganizationLicense - add the keys to the org here\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n await this.apiService.postOrganizationKeys(orgId, request);\n\n return orgId;\n }\n}\n","\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"uploadLicenseFileOrg\" | i18n }}

\n
\n
\n \n \n {{\n \"licenseFileDesc\" | i18n: \"bitwarden_organization_license.json\"\n }}\n
\n \n
\n
\n\n

{{ \"generalInformation\" | i18n }}

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n {{ \"clientOwnerDesc\" | i18n: \"20\" }}\n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n

{{ \"chooseYourPlan\" | i18n }}

\n
\n \n \n
\n
\n \n

{{ \"users\" | i18n }}

\n
\n
\n \n \n {{ \"userSeatsHowManyDesc\" | i18n }}\n
\n
\n
\n

{{ \"addons\" | i18n }}

\n
\n
\n \n \n {{\n \"userSeatsAdditionalDesc\"\n | i18n: selectedPlan.baseSeats:(seatPriceMonthly(selectedPlan) | currency: \"$\")\n }}\n
\n
\n
\n
\n \n \n {{\n \"additionalStorageIntervalDesc\"\n | i18n\n : \"1 GB\"\n : (additionalStoragePriceMonthly(selectedPlan) | currency: \"$\")\n : (\"month\" | i18n)\n }}\n
\n
\n
\n
\n
\n \n \n
\n {{\n \"premiumAccessDesc\" | i18n: (3.33 | currency: \"$\"):(\"month\" | i18n)\n }}\n
\n
\n

{{ \"summary\" | i18n }}

\n
\n \n \n
\n
\n

\n {{ (createOrganization ? \"paymentInformation\" : \"billingInformation\") | i18n }}\n

\n \n {{ paymentDesc }}\n \n \n \n
\n
\n {{ \"planPrice\" | i18n }}: {{ subtotal | currency: \"USD $\" }}\n
\n \n {{ \"estimatedTax\" | i18n }}: {{ taxCharges | currency: \"USD $\" }}\n \n
\n
\n

\n {{ \"total\" | i18n }}: {{ total | currency: \"USD $\" }}/{{\n selectedPlanInterval | i18n\n }}\n

\n
\n \n \n \n
\n
\n {{ \"singleOrgBlockCreateMessage\" | i18n }}\n
\n
\n \n \n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { BillingPaymentResponse } from \"jslib-common/models/response/billingPaymentResponse\";\n\n@Component({\n selector: \"app-payment-method\",\n templateUrl: \"payment-method.component.html\",\n})\nexport class PaymentMethodComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingPaymentResponse;\n paymentMethodType = PaymentMethodType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n if (this.platformUtilsService.isSelfHost()) {\n this.router.navigate([\"/settings/subscription\"]);\n }\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.billing = await this.apiService.getUserBillingPayment();\n this.loading = false;\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"addCredit\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(\"changePaymentMethod\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return (\n this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp)\n );\n }\n}\n","
\n

\n {{ \"paymentMethod\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ (isCreditBalance ? \"accountCredit\" : \"accountBalance\") | i18n }}

\n

\n {{ creditOrBalance | currency: \"$\" }}\n

\n

{{ \"creditAppliedDesc\" | i18n }}

\n \n \n \n

{{ \"paymentMethod\" | i18n }}

\n

{{ \"noPaymentMethod\" | i18n }}

\n \n

\n \n {{ \"inAppPurchase\" | i18n }}\n {{ paymentSource.description }}\n

\n
\n \n \n \n
\n","import { Component, Input, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\n\nimport ThemeVariables from \"src/scss/export.module.scss\";\n\nconst lightInputColor = ThemeVariables.lightInputColor;\nconst lightInputPlaceholderColor = ThemeVariables.lightInputPlaceholderColor;\nconst darkInputColor = ThemeVariables.darkInputColor;\nconst darkInputPlaceholderColor = ThemeVariables.darkInputPlaceholderColor;\n\n@Component({\n selector: \"app-payment\",\n templateUrl: \"payment.component.html\",\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: \"\",\n currency: \"USD\",\n country: \"US\",\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n private StripeElementStyle: any;\n private StripeElementClasses: any;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private apiService: ApiService,\n private logService: LogService\n ) {\n this.stripeScript = window.document.createElement(\"script\");\n this.stripeScript.src = \"https://js.stripe.com/v3/\";\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(process.env.STRIPE_KEY);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement(\"script\");\n this.btScript.src = `scripts/dropin.js?cache=${process.env.CACHE_TAG}`;\n this.btScript.async = true;\n this.StripeElementStyle = {\n base: {\n color: null,\n fontFamily:\n '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: \"14px\",\n fontSmoothing: \"antialiased\",\n \"::placeholder\": {\n color: null,\n },\n },\n invalid: {\n color: null,\n },\n };\n this.StripeElementClasses = {\n focus: \"is-focused\",\n empty: \"is-empty\",\n invalid: \"is-invalid\",\n };\n }\n\n async ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n await this.setTheme();\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll(\"iframe\")).forEach((el) => {\n if (el.src != null && el.src.indexOf(\"stripe\") > -1) {\n try {\n window.document.body.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll(\"script\")).forEach((el) => {\n if (el.src != null && el.src.indexOf(\"paypal\") > -1) {\n try {\n window.document.head.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n const btStylesheet = window.document.head.querySelector(\"#braintree-dropin-stylesheet\");\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch (e) {\n this.logService.error(e);\n }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create(\n {\n authorization: process.env.BRAINTREE_KEY,\n container: \"#bt-dropin-container\",\n paymentOptionPriority: [\"paypal\"],\n paypal: {\n flow: \"vault\",\n buttonStyle: {\n label: \"pay\",\n size: \"medium\",\n shape: \"pill\",\n color: \"blue\",\n tagline: \"false\",\n },\n },\n },\n (createErr: any, instance: any) => {\n if (createErr != null) {\n // eslint-disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n }\n );\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance\n .requestPaymentMethod()\n .then((payload: any) => {\n resolve([payload.nonce, this.method]);\n })\n .catch((err: any) => {\n reject(err.message);\n });\n } else if (\n this.method === PaymentMethodType.Card ||\n this.method === PaymentMethodType.BankAccount\n ) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService\n .postSetupPayment()\n .then((clientSecret) =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement)\n )\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === \"succeeded\") {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken(\"bank_account\", this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () =>\n this.showMethods\n ? this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement)\n : this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === \"succeeded\") {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create(\"cardNumber\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: \"\",\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create(\"cardExpiry\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create(\"cardCvc\", {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: \"\",\n });\n }\n this.stripeCardNumberElement.mount(\"#stripe-card-number-element\");\n this.stripeCardExpiryElement.mount(\"#stripe-card-expiry-element\");\n this.stripeCardCvcElement.mount(\"#stripe-card-cvc-element\");\n }\n }, 50);\n }\n\n private async setTheme() {\n const theme = await this.platformUtilsService.getEffectiveTheme();\n if (theme === ThemeType.Dark) {\n this.StripeElementStyle.base.color = darkInputColor;\n this.StripeElementStyle.base[\"::placeholder\"].color = darkInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = darkInputColor;\n } else {\n this.StripeElementStyle.base.color = lightInputColor;\n this.StripeElementStyle.base[\"::placeholder\"].color = lightInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = lightInputColor;\n }\n }\n}\n","
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n\n \n {{ \"verifyBankAccountInitialDesc\" | i18n }} {{ \"verifyBankAccountFailureWarning\" | i18n }}\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n
\n
\n {{ \"paypalClickSubmit\" | i18n }}\n
\n
\n\n \n {{ \"makeSureEnoughCredit\" | i18n }}\n \n\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormControl } from \"@angular/forms\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { VaultTimeoutService } from \"jslib-common/abstractions/vaultTimeout.service\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\nimport { Utils } from \"jslib-common/misc/utils\";\n\n@Component({\n selector: \"app-preferences\",\n templateUrl: \"preferences.component.html\",\n})\nexport class PreferencesComponent implements OnInit {\n vaultTimeoutAction = \"lock\";\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n theme: ThemeType;\n locale: string;\n vaultTimeouts: { name: string; value: number }[];\n localeOptions: any[];\n themeOptions: any[];\n\n vaultTimeout: FormControl = new FormControl(null);\n\n private startingLocale: string;\n private startingTheme: ThemeType;\n\n constructor(\n private stateService: StateService,\n private i18nService: I18nService,\n private vaultTimeoutService: VaultTimeoutService,\n private platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService\n ) {\n this.vaultTimeouts = [\n { name: i18nService.t(\"oneMinute\"), value: 1 },\n { name: i18nService.t(\"fiveMinutes\"), value: 5 },\n { name: i18nService.t(\"fifteenMinutes\"), value: 15 },\n { name: i18nService.t(\"thirtyMinutes\"), value: 30 },\n { name: i18nService.t(\"oneHour\"), value: 60 },\n { name: i18nService.t(\"fourHours\"), value: 240 },\n { name: i18nService.t(\"onRefresh\"), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t(\"never\"), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach((locale) => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += \" - \" + i18nService.localeNames.get(locale);\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, \"name\"));\n localeOptions.splice(0, 0, { name: i18nService.t(\"default\"), value: null });\n this.localeOptions = localeOptions;\n this.themeOptions = [\n { name: i18nService.t(\"themeLight\"), value: ThemeType.Light },\n { name: i18nService.t(\"themeDark\"), value: ThemeType.Dark },\n { name: i18nService.t(\"themeSystem\"), value: ThemeType.System },\n ];\n }\n\n async ngOnInit() {\n this.vaultTimeout.setValue(await this.vaultTimeoutService.getVaultTimeout());\n this.vaultTimeoutAction = await this.stateService.getVaultTimeoutAction();\n this.disableIcons = await this.stateService.getDisableFavicon();\n this.enableGravatars = await this.stateService.getEnableGravitars();\n this.enableFullWidth = await this.stateService.getEnableFullWidth();\n\n this.locale = (await this.stateService.getLocale()) ?? null;\n this.startingLocale = this.locale;\n\n this.theme = await this.stateService.getTheme();\n this.startingTheme = this.theme;\n }\n\n async submit() {\n if (!this.vaultTimeout.valid) {\n this.platformUtilsService.showToast(\"error\", null, this.i18nService.t(\"vaultTimeoutToLarge\"));\n return;\n }\n\n await this.vaultTimeoutService.setVaultTimeoutOptions(\n this.vaultTimeout.value,\n this.vaultTimeoutAction\n );\n await this.stateService.setDisableFavicon(this.disableIcons);\n await this.stateService.setEnableGravitars(this.enableGravatars);\n await this.stateService.setEnableFullWidth(this.enableFullWidth);\n this.messagingService.send(\"setFullWidth\");\n if (this.theme !== this.startingTheme) {\n await this.stateService.setTheme(this.theme);\n this.startingTheme = this.theme;\n const effectiveTheme = await this.platformUtilsService.getEffectiveTheme();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.remove(\"theme_\" + ThemeType.Light, \"theme_\" + ThemeType.Dark);\n htmlEl.classList.add(\"theme_\" + effectiveTheme);\n }\n await this.stateService.setLocale(this.locale);\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"preferencesUpdated\")\n );\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === \"logOut\") {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"vaultTimeoutLogOutConfirmation\"),\n this.i18nService.t(\"vaultTimeoutLogOutConfirmationTitle\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n if (!confirmed) {\n this.vaultTimeoutAction = \"lock\";\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","
\n

{{ \"preferences\" | i18n }}

\n
\n

{{ \"preferencesDesc\" | i18n }}

\n
\n
\n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n \n \n
\n \n {{ \"languageDesc\" | i18n }}\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n {{ \"disableIconsDesc\" | i18n }}\n
\n
\n
\n \n \n \n \n \n
\n {{ \"enableGravatarsDesc\" | i18n }}\n
\n
\n
\n \n \n
\n {{ \"enableFullWidthDesc\" | i18n }}\n
\n
\n
\n
\n \n \n {{ \"themeDesc\" | i18n }}\n
\n
\n
\n \n
\n","import { Component, OnInit, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\nimport { PaymentComponent } from \"./payment.component\";\nimport { TaxInfoComponent } from \"./tax-info.component\";\n\n@Component({\n selector: \"app-premium\",\n templateUrl: \"premium.component.html\",\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService,\n private router: Router,\n private messagingService: MessagingService,\n private syncService: SyncService,\n private logService: LogService,\n private stateService: StateService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate([\"/settings/subscription/user-subscription\"]);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"verifyEmailFirst\")\n );\n return;\n }\n\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent\n .createPaymentToken()\n .then((result) => {\n const fd = new FormData();\n fd.append(\"paymentMethodType\", result[1].toString());\n if (result[0] != null) {\n fd.append(\"paymentToken\", result[0]);\n }\n fd.append(\"additionalStorageGb\", (this.additionalStorage || 0).toString());\n fd.append(\"country\", this.taxInfoComponent.taxInfo.country);\n fd.append(\"postalCode\", this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n })\n .then((paymentResponse) => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(\n paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium()\n );\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"premiumUpdated\"));\n this.messagingService.send(\"purchasedPremium\");\n this.router.navigate([\"/settings/subscription/user-subscription\"]);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null\n ? (this.taxInfoComponent.taxRate / 100) * this.subtotal\n : 0;\n }\n\n get total(): number {\n return this.subtotal + this.taxCharges || 0;\n }\n}\n","
\n

{{ \"subscription\" | i18n }}

\n
\n
\n

{{ \"goPremium\" | i18n }}

\n
\n\n {{ \"alreadyPremiumFromOrg\" | i18n }}\n\n\n

{{ \"premiumUpgradeUnlockFeatures\" | i18n }}

\n
    \n
  • \n \n {{ \"premiumSignUpStorage\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpTwoStep\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpEmergency\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpReports\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpTotp\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpSupport\" | i18n }}\n
  • \n
  • \n \n {{ \"premiumSignUpFuture\" | i18n }}\n
  • \n
\n

\n {{ \"premiumPrice\" | i18n: (premiumPrice | currency: \"$\") }}\n

\n \n {{ \"purchasePremium\" | i18n }}\n \n
\n\n

{{ \"uploadLicenseFilePremium\" | i18n }}

\n
\n
\n \n \n {{\n \"licenseFileDesc\" | i18n: \"bitwarden_premium_license.json\"\n }}\n
\n \n \n {{ \"submit\" | i18n }}\n \n \n
\n
\n

{{ \"addons\" | i18n }}

\n
\n
\n \n \n {{\n \"additionalStorageIntervalDesc\"\n | i18n: \"1 GB\":(storageGbPrice | currency: \"$\"):(\"year\" | i18n)\n }}\n
\n
\n

{{ \"summary\" | i18n }}

\n {{ \"premiumMembership\" | i18n }}: {{ premiumPrice | currency: \"$\" }}
\n {{ \"additionalStorageGb\" | i18n }}: {{ additionalStorage || 0 }} GB ×\n {{ storageGbPrice | currency: \"$\" }} =\n {{ additionalStorageTotal | currency: \"$\" }}\n
\n

{{ \"paymentInformation\" | i18n }}

\n \n \n
\n
\n {{ \"planPrice\" | i18n }}: {{ subtotal | currency: \"USD $\" }}\n
\n \n {{ \"estimatedTax\" | i18n }}: {{ taxCharges | currency: \"USD $\" }}\n \n
\n
\n

\n {{ \"total\" | i18n }}: {{ total | currency: \"USD $\" }}/{{ \"year\" | i18n }}\n

\n
\n {{ \"paymentChargedAnnually\" | i18n }}\n \n \n {{ \"submit\" | i18n }}\n \n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UpdateProfileRequest } from \"jslib-common/models/request/updateProfileRequest\";\nimport { ProfileResponse } from \"jslib-common/models/response/profileResponse\";\n\n@Component({\n selector: \"app-profile\",\n templateUrl: \"profile.component.html\",\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n hidePasswordHint = false;\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private logService: LogService,\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(\n await this.stateService.getUserId()\n );\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join(\"-\");\n }\n this.hidePasswordHint = await this.keyConnectorService.getUsesKeyConnector();\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"accountUpdated\"));\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n \n {{ \"loading\" | i18n }}\n
\n\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n

\n {{ \"yourAccountsFingerprint\" | i18n }}:\n \n
\n {{ fingerprint }}\n

\n
\n
\n \n\n","import { Component, Input } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { Verification } from \"jslib-common/types/verification\";\n\n@Component({\n selector: \"app-purge-vault\",\n templateUrl: \"purge-vault.component.html\",\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private userVerificationService: UserVerificationService,\n private router: Router,\n private logService: LogService\n ) {}\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService\n .buildRequest(this.masterPassword)\n .then((request) => this.apiService.postPurgeCiphers(request, this.organizationId));\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"vaultPurged\"));\n if (this.organizationId != null) {\n this.router.navigate([\"organizations\", this.organizationId, \"vault\"]);\n } else {\n this.router.navigate([\"vault\"]);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
\n
\n \n
\n

{{ \"purgeVault\" | i18n }}

\n \n ×\n \n
\n
\n

{{ (organizationId ? \"purgeOrgVaultDesc\" : \"purgeVaultDesc\") | i18n }}

\n {{ \"purgeVaultWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\nimport { ApiKeyComponent } from \"./api-key.component\";\n\n@Component({\n selector: \"app-security-keys\",\n templateUrl: \"security-keys.component.html\",\n})\nexport class SecurityKeysComponent implements OnInit {\n @ViewChild(\"viewUserApiKeyTemplate\", { read: ViewContainerRef, static: true })\n viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild(\"rotateUserApiKeyTemplate\", { read: ViewContainerRef, static: true })\n rotateUserApiKeyModalRef: ViewContainerRef;\n\n showChangeKdf = true;\n\n constructor(\n private keyConnectorService: KeyConnectorService,\n private stateService: StateService,\n private modalService: ModalService,\n private apiService: ApiService\n ) {}\n\n async ngOnInit() {\n this.showChangeKdf = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n\n async viewUserApiKey() {\n const entityId = await this.stateService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.viewUserApiKeyModalRef, (comp) => {\n comp.keyType = \"user\";\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n comp.scope = \"api\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"userApiKeyWarning\";\n comp.apiKeyDescription = \"userApiKeyDesc\";\n });\n }\n\n async rotateUserApiKey() {\n const entityId = await this.stateService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateUserApiKeyModalRef, (comp) => {\n comp.keyType = \"user\";\n comp.isRotation = true;\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n comp.scope = \"api\";\n comp.grantType = \"client_credentials\";\n comp.apiKeyTitle = \"apiKey\";\n comp.apiKeyWarning = \"userApiKeyWarning\";\n comp.apiKeyDescription = \"apiKeyRotateDesc\";\n });\n }\n}\n","\n\n

{{ \"apiKey\" | i18n }}

\n\n

\n {{ \"userApiKeyDesc\" | i18n }}\n

\n\n\n\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { ChangePasswordComponent } from \"./change-password.component\";\nimport { SecurityKeysComponent } from \"./security-keys.component\";\nimport { SecurityComponent } from \"./security.component\";\nimport { TwoFactorSetupComponent } from \"./two-factor-setup.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: SecurityComponent,\n data: { titleId: \"security\" },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"change-password\" },\n {\n path: \"change-password\",\n component: ChangePasswordComponent,\n data: { titleId: \"masterPassword\" },\n },\n {\n path: \"two-factor\",\n component: TwoFactorSetupComponent,\n data: { titleId: \"twoStepLogin\" },\n },\n {\n path: \"security-keys\",\n component: SecurityKeysComponent,\n data: { titleId: \"keys\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SecurityRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { KeyConnectorService } from \"jslib-common/abstractions/keyConnector.service\";\n\n@Component({\n selector: \"app-security\",\n templateUrl: \"security.component.html\",\n})\nexport class SecurityComponent {\n showChangePassword = true;\n\n constructor(private keyConnectorService: KeyConnectorService) {}\n\n async ngOnInit() {\n this.showChangePassword = !(await this.keyConnectorService.getUsesKeyConnector());\n }\n}\n","\n\n","import { Component, NgZone, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\nimport { StateService } from \"../../abstractions/state.service\";\n\nconst BroadcasterSubscriptionId = \"SettingsComponent\";\n\n@Component({\n selector: \"app-settings\",\n templateUrl: \"settings.component.html\",\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n hasFamilySponsorshipAvailable: boolean;\n hideSubscription: boolean;\n\n constructor(\n private tokenService: TokenService,\n private broadcasterService: BroadcasterService,\n private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService,\n private organizationService: OrganizationService,\n private stateService: StateService,\n private apiService: ApiService\n ) {}\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case \"purchasedPremium\":\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n this.hasFamilySponsorshipAvailable = await this.organizationService.canManageSponsorships();\n const hasPremiumFromOrg = await this.stateService.getCanAccessPremium();\n let billing = null;\n if (!this.selfHosted) {\n billing = await this.apiService.getUserBillingHistory();\n }\n this.hideSubscription =\n !this.premium && hasPremiumFromOrg && (this.selfHosted || billing?.hasNoHistory);\n }\n}\n","
\n
\n
\n
\n
{{ \"accountSettings\" | i18n }}
\n \n
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\n\nimport { notAllowedValueAsync } from \"jslib-angular/validators/notAllowedValueAsync.validator\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { PlanSponsorshipType } from \"jslib-common/enums/planSponsorshipType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"app-sponsored-families\",\n templateUrl: \"sponsored-families.component.html\",\n})\nexport class SponsoredFamiliesComponent implements OnInit {\n loading = false;\n\n availableSponsorshipOrgs: Organization[] = [];\n activeSponsorshipOrgs: Organization[] = [];\n\n // Conditional display properties\n formPromise: Promise;\n\n sponsorshipForm: FormGroup;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private syncService: SyncService,\n private organizationService: OrganizationService,\n private formBuilder: FormBuilder,\n private stateService: StateService\n ) {\n this.sponsorshipForm = this.formBuilder.group({\n selectedSponsorshipOrgId: [\n \"\",\n {\n validators: [Validators.required],\n },\n ],\n sponsorshipEmail: [\n \"\",\n {\n validators: [Validators.email],\n asyncValidators: [\n notAllowedValueAsync(async () => await this.stateService.getEmail(), true),\n ],\n updateOn: \"blur\",\n },\n ],\n });\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n async submit() {\n this.formPromise = this.apiService.postCreateSponsorship(\n this.sponsorshipForm.value.selectedSponsorshipOrgId,\n {\n sponsoredEmail: this.sponsorshipForm.value.sponsorshipEmail,\n planSponsorshipType: PlanSponsorshipType.FamiliesForEnterprise,\n friendlyName: this.sponsorshipForm.value.sponsorshipEmail,\n }\n );\n\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"sponsorshipCreated\"));\n this.formPromise = null;\n this.resetForm();\n await this.load(true);\n }\n\n async load(forceReload = false) {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n if (forceReload) {\n await this.syncService.fullSync(true);\n }\n\n const allOrgs = await this.organizationService.getAll();\n this.availableSponsorshipOrgs = allOrgs.filter((org) => org.familySponsorshipAvailable);\n\n this.activeSponsorshipOrgs = allOrgs.filter(\n (org) => org.familySponsorshipFriendlyName !== null\n );\n\n if (this.availableSponsorshipOrgs.length === 1) {\n this.sponsorshipForm.patchValue({\n selectedSponsorshipOrgId: this.availableSponsorshipOrgs[0].id,\n });\n }\n this.loading = false;\n }\n\n get sponsorshipEmailControl() {\n return this.sponsorshipForm.controls[\"sponsorshipEmail\"];\n }\n\n private async resetForm() {\n this.sponsorshipForm.reset();\n }\n\n get anyActiveSponsorships(): boolean {\n return this.activeSponsorshipOrgs.length > 0;\n }\n\n get anyOrgsAvailable(): boolean {\n return this.availableSponsorshipOrgs.length > 0;\n }\n\n get isSelfHosted(): boolean {\n return this.platformUtilsService.isSelfHost();\n }\n}\n","
\n

{{ \"sponsoredFamilies\" | i18n }}

\n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

\n {{ \"sponsoredFamiliesEligible\" | i18n }}\n

\n
\n {{ \"sponsoredFamiliesInclude\" | i18n }}:\n
    \n
  • {{ \"sponsoredFamiliesPremiumAccess\" | i18n }}
  • \n
  • {{ \"sponsoredFamiliesSharedCollections\" | i18n }}
  • \n
\n
\n \n
\n \n \n \n \n \n
\n
\n \n \n \n \n {{ \"cannotSponsorSelf\" | i18n }}\n \n \n \n {{ \"invalidEmail\" | i18n }}\n \n
\n
\n \n
\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ \"recipient\" | i18n }}{{ \"sponsoringOrg\" | i18n }}{{ \"status\" | i18n }}
\n
\n {{ \"sponsoredFamiliesLeaveCopy\" | i18n }}\n
\n\n","import { formatDate } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\n@Component({\n selector: \"[sponsoring-org-row]\",\n templateUrl: \"sponsoring-org-row.component.html\",\n})\nexport class SponsoringOrgRowComponent implements OnInit {\n @Input() sponsoringOrg: Organization = null;\n @Input() isSelfHosted = false;\n\n @Output() sponsorshipRemoved = new EventEmitter();\n\n statusMessage = \"loading\";\n statusClass: \"text-success\" | \"text-danger\" = \"text-success\";\n\n revokeSponsorshipPromise: Promise;\n resendEmailPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private logService: LogService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n ngOnInit(): void {\n this.setStatus(\n this.isSelfHosted,\n this.sponsoringOrg.familySponsorshipToDelete,\n this.sponsoringOrg.familySponsorshipValidUntil,\n this.sponsoringOrg.familySponsorshipLastSyncDate\n );\n }\n\n async revokeSponsorship() {\n try {\n this.revokeSponsorshipPromise = this.doRevokeSponsorship();\n await this.revokeSponsorshipPromise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.revokeSponsorshipPromise = null;\n }\n\n async resendEmail() {\n this.resendEmailPromise = this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id);\n await this.resendEmailPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"emailSent\"));\n this.resendEmailPromise = null;\n }\n\n get isSentAwaitingSync() {\n return this.isSelfHosted && !this.sponsoringOrg.familySponsorshipLastSyncDate;\n }\n\n private async doRevokeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"revokeSponsorshipConfirmation\"),\n `${this.i18nService.t(\"remove\")} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`,\n this.i18nService.t(\"remove\"),\n this.i18nService.t(\"cancel\"),\n \"warning\"\n );\n\n if (!isConfirmed) {\n return;\n }\n\n await this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reclaimedFreePlan\"));\n this.sponsorshipRemoved.emit();\n }\n\n private setStatus(\n selfHosted: boolean,\n toDelete?: boolean,\n validUntil?: Date,\n lastSyncDate?: Date\n ) {\n /*\n * Possible Statuses:\n * Requested (self-hosted only)\n * Sent\n * Active\n * RequestRevoke\n * RevokeWhenExpired\n */\n\n if (toDelete && validUntil) {\n // They want to delete but there is a valid until date which means there is an active sponsorship\n this.statusMessage = this.i18nService.t(\n \"revokeWhenExpired\",\n formatDate(validUntil, \"MM/dd/yyyy\", this.i18nService.locale)\n );\n this.statusClass = \"text-danger\";\n } else if (toDelete) {\n // They want to delete and we don't have a valid until date so we can\n // this should only happen on a self-hosted install\n this.statusMessage = this.i18nService.t(\"requestRemoved\");\n this.statusClass = \"text-danger\";\n } else if (validUntil) {\n // They don't want to delete and they have a valid until date\n // that means they are actively sponsoring someone\n this.statusMessage = this.i18nService.t(\"active\");\n this.statusClass = \"text-success\";\n } else if (selfHosted && lastSyncDate) {\n // We are on a self-hosted install and it has been synced but we have not gotten\n // a valid until date so we can't know if they are actively sponsoring someone\n this.statusMessage = this.i18nService.t(\"sent\");\n this.statusClass = \"text-success\";\n } else if (!selfHosted) {\n // We are in cloud and all other status checks have been false therefore we have\n // sent the request but it hasn't been accepted yet\n this.statusMessage = this.i18nService.t(\"sent\");\n this.statusClass = \"text-success\";\n } else {\n // We are on a self-hosted install and we have not synced yet\n this.statusMessage = this.i18nService.t(\"requested\");\n this.statusClass = \"text-success\";\n }\n }\n}\n","\n {{ sponsoringOrg.familySponsorshipFriendlyName }}\n\n{{ sponsoringOrg.name }}\n\n {{ statusMessage }}\n\n\n
\n \n \n \n
\n \n \n {{ \"resendEmail\" | i18n }}\n \n \n \n {{ \"remove\" | i18n }}\n \n
\n
\n\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nimport { PaymentMethodComponent } from \"./payment-method.component\";\nimport { PremiumComponent } from \"./premium.component\";\nimport { SubscriptionComponent } from \"./subscription.component\";\nimport { UserBillingHistoryComponent } from \"./user-billing-history.component\";\nimport { UserSubscriptionComponent } from \"./user-subscription.component\";\n\nconst routes: Routes = [\n {\n path: \"\",\n component: SubscriptionComponent,\n data: { titleId: \"subscription\" },\n children: [\n { path: \"\", pathMatch: \"full\", redirectTo: \"premium\" },\n {\n path: \"user-subscription\",\n component: UserSubscriptionComponent,\n data: { titleId: \"premiumMembership\" },\n },\n {\n path: \"premium\",\n component: PremiumComponent,\n data: { titleId: \"goPremium\" },\n },\n {\n path: \"payment-method\",\n component: PaymentMethodComponent,\n data: { titleId: \"paymentMethod\" },\n },\n {\n path: \"billing-history\",\n component: UserBillingHistoryComponent,\n data: { titleId: \"billingHistory\" },\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class SubscriptionRoutingModule {}\n","import { Component } from \"@angular/core\";\n\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\n\n@Component({\n selector: \"app-subscription\",\n templateUrl: \"subscription.component.html\",\n})\nexport class SubscriptionComponent {\n hasPremium: boolean;\n selfHosted: boolean;\n\n constructor(\n private tokenService: TokenService,\n private platformUtilsService: PlatformUtilsService\n ) {}\n\n async ngOnInit() {\n this.hasPremium = await this.tokenService.getPremium();\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n get subscriptionRoute(): string {\n return this.hasPremium ? \"user-subscription\" : \"premium\";\n }\n}\n","\n\n","import { Component, EventEmitter, Output } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationTaxInfoUpdateRequest } from \"jslib-common/models/request/organizationTaxInfoUpdateRequest\";\nimport { TaxInfoUpdateRequest } from \"jslib-common/models/request/taxInfoUpdateRequest\";\nimport { TaxRateResponse } from \"jslib-common/models/response/taxRateResponse\";\n\n@Component({\n selector: \"app-tax-info\",\n templateUrl: \"tax-info.component.html\",\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: \"US\",\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: \"US\",\n includeTaxId: false,\n };\n\n constructor(\n private apiService: ApiService,\n private route: ActivatedRoute,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async (params) => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || \"US\";\n this.taxInfo.includeTaxId =\n this.taxInfo.country !== \"US\" &&\n (!!taxInfo.taxId ||\n !!taxInfo.line1 ||\n !!taxInfo.line2 ||\n !!taxInfo.city ||\n !!taxInfo.state);\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n try {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || \"US\";\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== \"US\") {\n this.onCountryChanged.emit();\n }\n });\n\n try {\n const taxRates = await this.apiService.getTaxRates();\n if (taxRates) {\n this.taxRates = taxRates.data;\n }\n } catch (e) {\n this.logService.error(e);\n } finally {\n this.loading = false;\n }\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(\n (x) => x.country === this.taxInfo.country && x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise((resolve) => {\n resolve();\n });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId\n ? this.apiService.putOrganizationTaxInfo(\n this.organizationId,\n request as OrganizationTaxInfoUpdateRequest\n )\n : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === \"US\") {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n // eslint-disable-next-line\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorAuthenticatorRequest } from \"jslib-common/models/request/updateTwoFactorAuthenticatorRequest\";\nimport { TwoFactorAuthenticatorResponse } from \"jslib-common/models/response/twoFactorAuthenticatorResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-authenticator\",\n templateUrl: \"two-factor-authenticator.component.html\",\n})\nexport class TwoFactorAuthenticatorComponent\n extends TwoFactorBaseComponent\n implements OnInit, OnDestroy\n{\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n userVerificationService: UserVerificationService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n private stateService: StateService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n this.qrScript = window.document.createElement(\"script\");\n this.qrScript.src = \"scripts/qrious.min.js\";\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorAuthenticatorRequest);\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.stateService.getEmail();\n window.setTimeout(() => {\n new (window as any).QRious({\n element: document.getElementById(\"qr\"),\n value:\n \"otpauth://totp/Bitwarden:\" +\n encodeURIComponent(email) +\n \"?secret=\" +\n encodeURIComponent(this.key) +\n \"&issuer=Bitwarden\",\n size: 160,\n });\n }, 100);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"authenticatorAppTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n \"Authenticator\n

{{ \"twoStepAuthenticatorDesc\" | i18n }}

\n

\n 1. {{ \"twoStepAuthenticatorDownloadApp\" | i18n }}\n

\n
\n \n \n

{{ \"twoStepLoginProviderEnabled\" | i18n }}

\n {{ \"twoStepAuthenticatorReaddDesc\" | i18n }}\n
\n \"Authenticator\n

{{ \"twoStepAuthenticatorNeedApp\" | i18n }}

\n
\n
    \n
  • \n {{ \"iosDevices\" | i18n }}:\n Authy\n
  • \n
  • \n {{ \"androidDevices\" | i18n }}:\n Authy\n
  • \n
  • \n {{ \"windowsDevices\" | i18n }}:\n Microsoft Authenticator\n
  • \n
\n

{{ \"twoStepAuthenticatorAppsRecommended\" | i18n }}

\n

\n 2. {{ \"twoStepAuthenticatorScanCode\" | i18n }}\n

\n
\n

\n
\n {{ key }}\n

\n \n \n \n \n
\n
\n \n \n
\n \n
\n
\n
\n","import { Directive, EventEmitter, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { TwoFactorProviderRequest } from \"jslib-common/models/request/twoFactorProviderRequest\";\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected hashedSecret: string;\n protected verificationType: VerificationType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected logService: LogService,\n protected userVerificationService: UserVerificationService\n ) {}\n\n protected auth(authResponse: any) {\n this.hashedSecret = authResponse.secret;\n this.verificationType = authResponse.verificationType;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.onUpdated.emit(true);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"twoStepDisableDesc\"),\n this.i18nService.t(\"disable\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n const request = await this.buildRequestModel(TwoFactorProviderRequest);\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"twoStepDisabled\"));\n this.onUpdated.emit(false);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async buildRequestModel(\n requestClass: new () => T\n ) {\n return this.userVerificationService.buildRequest(\n {\n secret: this.hashedSecret,\n type: this.verificationType,\n },\n requestClass,\n true\n );\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorDuoRequest } from \"jslib-common/models/request/updateTwoFactorDuoRequest\";\nimport { TwoFactorDuoResponse } from \"jslib-common/models/response/twoFactorDuoResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-duo\",\n templateUrl: \"two-factor-duo.component.html\",\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorDuoRequest);\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(\n this.organizationId,\n request\n );\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n Duo\n

\n \n ×\n \n
\n \n \n \n
\n \n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \"Duo\n {{ \"twoFactorDuoIntegrationKey\" | i18n }}: {{ ikey }}\n
\n {{ \"twoFactorDuoSecretKey\" | i18n }}: {{ skey }}\n
\n {{ \"twoFactorDuoApiHostname\" | i18n }}: {{ host }}\n
\n \n \"Duo\n

{{ \"twoFactorDuoDesc\" | i18n }}

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorEmailRequest } from \"jslib-common/models/request/twoFactorEmailRequest\";\nimport { UpdateTwoFactorEmailRequest } from \"jslib-common/models/request/updateTwoFactorEmailRequest\";\nimport { TwoFactorEmailResponse } from \"jslib-common/models/response/twoFactorEmailResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-email\",\n templateUrl: \"two-factor-email.component.html\",\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n private stateService: StateService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = await this.buildRequestModel(TwoFactorEmailRequest);\n request.email = this.email;\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorEmailRequest);\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === \"\")) {\n this.email = await this.stateService.getEmail();\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"emailTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n {{ \"email\" | i18n }}: {{ email }}\n \n \n

\n {{ \"twoFactorEmailDesc\" | i18n }}\n \"Email\n

\n
\n \n \n
\n
\n \n \n {{ \"sendEmail\" | i18n }}\n \n \n {{ \"verificationCodeEmailSent\" | i18n: sentEmail }}\n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorRecoverResponse } from \"jslib-common/models/response/twoFactorRescoverResponse\";\n\n@Component({\n selector: \"app-two-factor-recovery\",\n templateUrl: \"two-factor-recovery.component.html\",\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) {}\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write(\n '
' +\n \"

\" +\n this.i18nService.t(\"twoFactorRecoveryYourCode\") +\n \":

\" +\n \"\" +\n this.code +\n \"
\" +\n '

' +\n new Date() +\n \"

\"\n );\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s\n .replace(/(.{4})/g, \"$1 \")\n .trim()\n .toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"recoveryCodeTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n

{{ \"twoFactorRecoveryYourCode\" | i18n }}:

\n {{ code }}\n
\n \n {{ \"twoFactorRecoveryNoCode\" | i18n }}\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component, OnInit, Type, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalRef } from \"jslib-angular/components/modal/modal.ref\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { TwoFactorProviders } from \"jslib-common/services/twoFactor.service\";\n\nimport { TwoFactorAuthenticatorComponent } from \"./two-factor-authenticator.component\";\nimport { TwoFactorDuoComponent } from \"./two-factor-duo.component\";\nimport { TwoFactorEmailComponent } from \"./two-factor-email.component\";\nimport { TwoFactorRecoveryComponent } from \"./two-factor-recovery.component\";\nimport { TwoFactorWebAuthnComponent } from \"./two-factor-webauthn.component\";\nimport { TwoFactorYubiKeyComponent } from \"./two-factor-yubikey.component\";\n\n@Component({\n selector: \"app-two-factor-setup\",\n templateUrl: \"two-factor-setup.component.html\",\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild(\"recoveryTemplate\", { read: ViewContainerRef, static: true })\n recoveryModalRef: ViewContainerRef;\n @ViewChild(\"authenticatorTemplate\", { read: ViewContainerRef, static: true })\n authenticatorModalRef: ViewContainerRef;\n @ViewChild(\"yubikeyTemplate\", { read: ViewContainerRef, static: true })\n yubikeyModalRef: ViewContainerRef;\n @ViewChild(\"duoTemplate\", { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild(\"emailTemplate\", { read: ViewContainerRef, static: true })\n emailModalRef: ViewContainerRef;\n @ViewChild(\"webAuthnTemplate\", { read: ViewContainerRef, static: true })\n webAuthnModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n modal: ModalRef;\n\n constructor(\n protected apiService: ApiService,\n protected modalService: ModalService,\n protected messagingService: MessagingService,\n protected policyService: PolicyService,\n private stateService: StateService\n ) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n\n for (const key in TwoFactorProviders) {\n // eslint-disable-next-line\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach((p) => {\n this.providers.forEach((p2) => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator: {\n const authComp = await this.openModal(\n this.authenticatorModalRef,\n TwoFactorAuthenticatorComponent\n );\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n }\n case TwoFactorProviderType.Yubikey: {\n const yubiComp = await this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n }\n case TwoFactorProviderType.Duo: {\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n }\n case TwoFactorProviderType.Email: {\n const emailComp = await this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n }\n case TwoFactorProviderType.WebAuthn: {\n const webAuthnComp = await this.openModal(\n this.webAuthnModalRef,\n TwoFactorWebAuthnComponent\n );\n webAuthnComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.WebAuthn);\n });\n break;\n }\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected async openModal(ref: ViewContainerRef, type: Type): Promise {\n const [modal, childComponent] = await this.modalService.openViewRef(type, ref);\n this.modal = modal;\n\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach((p) => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter((p) => p.enabled).length === 1) {\n this.showPolicyWarning = await this.policyService.policyAppliesToUser(\n PolicyType.TwoFactorAuthentication\n );\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { VerificationType } from \"jslib-common/enums/verificationType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { TwoFactorAuthenticatorResponse } from \"jslib-common/models/response/twoFactorAuthenticatorResponse\";\nimport { TwoFactorDuoResponse } from \"jslib-common/models/response/twoFactorDuoResponse\";\nimport { TwoFactorEmailResponse } from \"jslib-common/models/response/twoFactorEmailResponse\";\nimport { TwoFactorRecoverResponse } from \"jslib-common/models/response/twoFactorRescoverResponse\";\nimport { TwoFactorWebAuthnResponse } from \"jslib-common/models/response/twoFactorWebAuthnResponse\";\nimport { TwoFactorYubiKeyResponse } from \"jslib-common/models/response/twoFactorYubiKeyResponse\";\nimport { Verification } from \"jslib-common/types/verification\";\n\ntype TwoFactorResponse =\n | TwoFactorRecoverResponse\n | TwoFactorDuoResponse\n | TwoFactorEmailResponse\n | TwoFactorWebAuthnResponse\n | TwoFactorAuthenticatorResponse\n | TwoFactorYubiKeyResponse;\n\n@Component({\n selector: \"app-two-factor-verify\",\n templateUrl: \"two-factor-verify.component.html\",\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n secret: Verification;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private logService: LogService,\n private userVerificationService: UserVerificationService\n ) {}\n\n async submit() {\n let hashedSecret: string;\n\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.secret).then((request) => {\n hashedSecret =\n this.secret.type === VerificationType.MasterPassword\n ? request.masterPasswordHash\n : request.otp;\n return this.apiCall(request);\n });\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n secret: hashedSecret,\n verificationType: this.secret.type,\n });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private apiCall(request: SecretVerificationRequest): Promise {\n switch (this.type) {\n case -1 as TwoFactorProviderType:\n return this.apiService.getTwoFactorRecover(request);\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n return this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n return this.apiService.getTwoFactorDuo(request);\n }\n case TwoFactorProviderType.Email:\n return this.apiService.getTwoFactorEmail(request);\n case TwoFactorProviderType.WebAuthn:\n return this.apiService.getTwoFactorWebAuthn(request);\n case TwoFactorProviderType.Authenticator:\n return this.apiService.getTwoFactorAuthenticator(request);\n case TwoFactorProviderType.Yubikey:\n return this.apiService.getTwoFactorYubiKey(request);\n }\n }\n}\n","
\n
\n

{{ \"twoStepLoginAuthDesc\" | i18n }}

\n \n \n
\n
\n \n \n
\n
\n","import { Component, NgZone } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { SecretVerificationRequest } from \"jslib-common/models/request/secretVerificationRequest\";\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from \"jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest\";\nimport { UpdateTwoFactorWebAuthnRequest } from \"jslib-common/models/request/updateTwoFactorWebAuthnRequest\";\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from \"jslib-common/models/response/twoFactorWebAuthnResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-webauthn\",\n templateUrl: \"two-factor-webauthn.component.html\",\n})\nexport class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.WebAuthn;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n webAuthnError: boolean;\n webAuthnListening: boolean;\n webAuthnResponse: PublicKeyCredential;\n challengePromise: Promise;\n formPromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n if (this.webAuthnResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnRequest);\n request.deviceResponse = this.webAuthnResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorWebAuthn(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t(\"webAuthnkeyX\", key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"removeU2fConfirmation\"),\n name,\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnDeleteRequest);\n request.id = key.id;\n try {\n key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = await this.buildRequestModel(SecretVerificationRequest);\n try {\n this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private readDevice(webAuthnChallenge: ChallengeResponse) {\n // eslint-disable-next-line\n console.log(\"listening for key...\");\n this.resetWebAuthn(true);\n\n navigator.credentials\n .create({\n publicKey: webAuthnChallenge,\n })\n .then((data: PublicKeyCredential) => {\n this.ngZone.run(() => {\n this.webAuthnListening = false;\n this.webAuthnResponse = data;\n });\n })\n .catch((err) => {\n // eslint-disable-next-line\n console.error(err);\n this.resetWebAuthn(false);\n // TODO: Should we display the actual error?\n this.webAuthnError = true;\n });\n }\n\n private resetWebAuthn(listening = false) {\n this.webAuthnResponse = null;\n this.webAuthnError = false;\n this.webAuthnListening = listening;\n }\n\n private processResponse(response: TwoFactorWebAuthnResponse) {\n this.resetWebAuthn();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter((k) => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i,\n name: key[0].name,\n configured: true,\n migrated: key[0].migrated,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n {{ \"webAuthnTitle\" | i18n }}\n

\n \n ×\n \n
\n \n \n \n
\n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \n

{{ \"twoFactorWebAuthnWarning\" | i18n }}

\n
    \n
  • {{ \"twoFactorWebAuthnSupportWeb\" | i18n }}
  • \n
\n
\n \"FIDO2\n
    \n \n \n {{ \"webAuthnkeyX\" | i18n: i + 1 }}\n {{ k.name }}\n \n \n {{ \"webAuthnMigrated\" | i18n }}\n \n \n 1 && k.configured\">\n \n -\n {{ \"remove\" | i18n }}\n \n \n
\n
\n

{{ \"twoFactorWebAuthnAdd\" | i18n }}:

\n
    \n
  1. {{ \"twoFactorU2fGiveName\" | i18n }}
  2. \n
  3. {{ \"twoFactorU2fPlugInReadKey\" | i18n }}
  4. \n
  5. {{ \"twoFactorU2fTouchButton\" | i18n }}
  6. \n
  7. {{ \"twoFactorU2fSaveForm\" | i18n }}
  8. \n
\n
\n
\n \n \n
\n
\n \n {{ \"readKey\" | i18n }}\n \n \n \n \n \n \n \n {{ \"twoFactorU2fWaiting\" | i18n }}...\n \n \n \n {{ \"twoFactorU2fClickSave\" | i18n }}\n \n \n \n {{ \"twoFactorU2fProblemReadingTryAgain\" | i18n }}\n \n \n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n \n {{ \"disableAllKeys\" | i18n }}\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\nimport { TwoFactorProviderType } from \"jslib-common/enums/twoFactorProviderType\";\nimport { UpdateTwoFactorYubioOtpRequest } from \"jslib-common/models/request/updateTwoFactorYubioOtpRequest\";\nimport { TwoFactorYubiKeyResponse } from \"jslib-common/models/response/twoFactorYubiKeyResponse\";\n\nimport { TwoFactorBaseComponent } from \"./two-factor-base.component\";\n\n@Component({\n selector: \"app-two-factor-yubikey\",\n templateUrl: \"two-factor-yubikey.component.html\",\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(\n apiService: ApiService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService,\n userVerificationService: UserVerificationService\n ) {\n super(apiService, i18nService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n const request = await this.buildRequestModel(UpdateTwoFactorYubioOtpRequest);\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"yubikeysUpdated\"));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = \"•\", size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"twoStepLogin\" | i18n }}\n YubiKey\n

\n \n ×\n \n
\n \n \n \n
\n \n {{ \"twoStepLoginProviderEnabled\" | i18n }}\n \n \n

{{ \"twoFactorYubikeyWarning\" | i18n }}

\n
    \n
  • {{ \"twoFactorYubikeySupportUsb\" | i18n }}
  • \n
  • {{ \"twoFactorYubikeySupportMobile\" | i18n }}
  • \n
\n
\n \"YubiKey\n

{{ \"twoFactorYubikeyAdd\" | i18n }}:

\n
    \n
  1. {{ \"twoFactorYubikeyPlugIn\" | i18n }}
  2. \n
  3. {{ \"twoFactorYubikeySelectKey\" | i18n }}
  4. \n
  5. {{ \"twoFactorYubikeyTouchButton\" | i18n }}
  6. \n
  7. {{ \"twoFactorYubikeySaveForm\" | i18n }}
  8. \n
\n
\n
\n
\n \n \n
\n {{ k.existingKey }}\n \n \n \n
\n
\n
\n {{ \"nfcSupport\" | i18n }}\n
\n \n \n
\n {{ \"twoFactorYubikeySupportsNfcDesc\" | i18n }}\n
\n
\n \n \n \n {{ \"disableAllKeys\" | i18n }}\n \n \n
\n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SyncService } from \"jslib-common/abstractions/sync.service\";\nimport { EncString } from \"jslib-common/models/domain/encString\";\nimport { CipherWithIdRequest } from \"jslib-common/models/request/cipherWithIdRequest\";\nimport { FolderWithIdRequest } from \"jslib-common/models/request/folderWithIdRequest\";\nimport { UpdateKeyRequest } from \"jslib-common/models/request/updateKeyRequest\";\n\n@Component({\n selector: \"app-update-key\",\n templateUrl: \"update-key.component.html\",\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService,\n private messagingService: MessagingService,\n private syncService: SyncService,\n private folderService: FolderService,\n private cipherService: CipherService,\n private logService: LogService\n ) {}\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"masterPassRequired\")\n );\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then((request) => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n this.platformUtilsService.showToast(\n \"success\",\n this.i18nService.t(\"keyUpdated\"),\n this.i18nService.t(\"logBackInOthersToo\"),\n { timeout: 15000 }\n );\n this.messagingService.send(\"logout\");\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","
\n
\n \n
\n

{{ \"updateEncryptionKey\" | i18n }}

\n \n ×\n \n
\n
\n

\n {{ \"updateEncryptionKeyShortDesc\" | i18n }} {{ \"updateEncryptionKeyDesc\" | i18n }}\n {{ \"learnMore\" | i18n }}\n

\n {{ \"updateEncryptionKeyWarning\" | i18n }}\n \n \n
\n
\n \n \n
\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-update-license\",\n templateUrl: \"update-license.component.html\",\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async submit() {\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append(\"license\", files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"updatedLicense\"));\n this.onUpdated.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
\n
\n \n \n {{\n \"licenseFileDesc\"\n | i18n\n : (!organizationId\n ? \"bitwarden_premium_license.json\"\n : \"bitwarden_organization_license.json\")\n }}\n
\n \n \n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PaymentMethodType } from \"jslib-common/enums/paymentMethodType\";\nimport { TransactionType } from \"jslib-common/enums/transactionType\";\nimport { BillingHistoryResponse } from \"jslib-common/models/response/billingHistoryResponse\";\n\n@Component({\n selector: \"app-user-billing\",\n templateUrl: \"user-billing-history.component.html\",\n})\nexport class UserBillingHistoryComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n billing: BillingHistoryResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n\n constructor(\n protected apiService: ApiService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n private router: Router\n ) {}\n\n async ngOnInit() {\n if (this.platformUtilsService.isSelfHost()) {\n this.router.navigate([\"/settings/subscription\"]);\n }\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n this.billing = await this.apiService.getUserBillingHistory();\n this.loading = false;\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","
\n

\n {{ \"billingHistory\" | i18n }}\n

\n \n \n {{ \"refresh\" | i18n }}\n \n
\n\n \n {{ \"loading\" | i18n }}\n\n\n

{{ \"invoices\" | i18n }}

\n

{{ \"noInvoices\" | i18n }}

\n \n \n \n \n \n \n \n \n \n
{{ i.date | date: \"mediumDate\" }}\n \n \n \n {{ \"invoiceNumber\" | i18n: i.number }}\n {{ i.amount | currency: \"$\" }}\n \n \n {{ \"paid\" | i18n }}\n \n \n \n {{ \"unpaid\" | i18n }}\n \n
\n

{{ \"transactions\" | i18n }}

\n

{{ \"noTransactions\" | i18n }}

\n \n \n \n \n \n \n \n {{ t.amount | currency: \"$\" }}\n \n \n \n
{{ t.createdDate | date: \"mediumDate\" }}\n \n {{ \"chargeNoun\" | i18n }}\n \n {{ \"refundNoun\" | i18n }}\n \n \n {{ t.details }}\n
\n * {{ \"chargesStatement\" | i18n: \"BITWARDEN\" }}\n
\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { SubscriptionResponse } from \"jslib-common/models/response/subscriptionResponse\";\n\n@Component({\n selector: \"app-user-subscription\",\n templateUrl: \"user-subscription.component.html\",\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(\n private tokenService: TokenService,\n private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private router: Router,\n private logService: LogService\n ) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate([\"/settings/subscription/premium\"]);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"manageSubscriptionFromStore\"),\n this.i18nService.t(\"cancelSubscription\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"reinstateConfirmation\"),\n this.i18nService.t(\"reinstateSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"cancel\")\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"reinstated\"));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"manageSubscriptionFromStore\"),\n this.i18nService.t(\"cancelSubscription\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"cancelConfirmation\"),\n this.i18nService.t(\"cancelSubscription\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"canceledSubscription\")\n );\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(\n window,\n licenseString,\n null,\n \"bitwarden_premium_license.json\"\n );\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(\n this.i18nService.t(\"cannotPerformInAppPurchase\"),\n this.i18nService.t(add ? \"addStorage\" : \"removeStorage\"),\n null,\n null,\n \"warning\"\n );\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return (\n this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate\n );\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb\n ? +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2)\n : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n\n get title(): string {\n return this.i18nService.t(this.selfHosted ? \"subscription\" : \"premiumMembership\");\n }\n}\n","\n

\n {{ title }}\n \n \n {{ \"loading\" | i18n }}\n \n

\n\n\n \n {{ \"loading\" | i18n }}\n\n\n \n {{ \"subscriptionCanceled\" | i18n }}\n \n

{{ \"subscriptionPendingCanceled\" | i18n }}

\n \n \n {{ \"reinstateSubscription\" | i18n }}\n \n \n
\n
{{ \"expiration\" | i18n }}
\n
{{ sub.expiration | date: \"mediumDate\" }}
\n
{{ \"neverExpires\" | i18n }}
\n
\n
\n
\n
\n
{{ \"status\" | i18n }}
\n
\n {{ (subscription && subscription.status) || \"-\" }}\n {{\n \"pendingCancellation\" | i18n\n }}\n
\n
{{ \"nextCharge\" | i18n }}
\n
\n {{\n nextInvoice\n ? (nextInvoice.date | date: \"mediumDate\") +\n \", \" +\n (nextInvoice.amount | currency: \"$\")\n : \"-\"\n }}\n
\n
\n
\n
\n {{ \"details\" | i18n }}\n \n \n \n \n \n \n \n
\n {{ i.name }} {{ i.quantity > 1 ? \"×\" + i.quantity : \"\" }} @\n {{ i.amount | currency: \"$\" }}\n {{ i.quantity * i.amount | currency: \"$\" }} /{{ i.interval | i18n }}
\n
\n
\n \n
\n \n \n {{ \"manageSubscription\" | i18n }}\n \n
\n
\n
\n \n ×\n \n

{{ \"updateLicense\" | i18n }}

\n \n \n
\n
\n
\n \n
\n \n {{ \"downloadLicense\" | i18n }}\n \n \n \n {{ \"cancelSubscription\" | i18n }}\n \n
\n

{{ \"storage\" | i18n }}

\n

{{ \"subscriptionStorage\" | i18n: sub.maxStorageGb || 0:sub.storageName || \"0 MB\" }}

\n
\n \n {{ storagePercentage / 100 | percent }}\n
\n \n \n
\n
\n \n \n {{ \"removeStorage\" | i18n }}\n \n
\n \n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { VaultTimeoutInputComponent as VaultTimeoutInputComponentBase } from \"jslib-angular/components/settings/vault-timeout-input.component\";\n\n@Component({\n selector: \"app-vault-timeout-input\",\n templateUrl: \"vault-timeout-input.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n ],\n})\nexport class VaultTimeoutInputComponent extends VaultTimeoutInputComponentBase {}\n","\n {{ \"vaultTimeoutPolicyInEffect\" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }}\n\n\n
\n
\n \n \n \n \n {{ \"vaultTimeoutDesc\" | i18n }}\n
\n
\n \n
\n
\n \n {{ \"hours\" | i18n }}\n
\n
\n \n {{ \"minutes\" | i18n }}\n
\n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-verify-email\",\n templateUrl: \"verify-email.component.html\",\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(\n private apiService: ApiService,\n private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService,\n private logService: LogService\n ) {}\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"checkInboxForVerification\")\n );\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n}\n","
\n
\n {{ \"verifyEmail\" | i18n }}\n
\n
\n

{{ \"verifyEmailDesc\" | i18n }}

\n \n \n \n {{ \"sendEmail\" | i18n }}\n \n \n
\n
\n","import { Component } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\n\nimport { ExportComponent as BaseExportComponent } from \"jslib-angular/components/export.component\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { ExportService } from \"jslib-common/abstractions/export.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { UserVerificationService } from \"jslib-common/abstractions/userVerification.service\";\n\n@Component({\n selector: \"app-export\",\n templateUrl: \"export.component.html\",\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(\n cryptoService: CryptoService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n exportService: ExportService,\n eventService: EventService,\n policyService: PolicyService,\n logService: LogService,\n userVerificationService: UserVerificationService,\n formBuilder: FormBuilder\n ) {\n super(\n cryptoService,\n i18nService,\n platformUtilsService,\n exportService,\n eventService,\n policyService,\n window,\n logService,\n userVerificationService,\n formBuilder\n );\n }\n\n protected saved() {\n super.saved();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"exportSuccess\"));\n }\n}\n","import { Component, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { GeneratorComponent as BaseGeneratorComponent } from \"jslib-angular/components/generator.component\";\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { UsernameGenerationService } from \"jslib-common/abstractions/usernameGeneration.service\";\n\nimport { PasswordGeneratorHistoryComponent } from \"./password-generator-history.component\";\n\n@Component({\n selector: \"app-generator\",\n templateUrl: \"generator.component.html\",\n})\nexport class GeneratorComponent extends BaseGeneratorComponent {\n @ViewChild(\"historyTemplate\", { read: ViewContainerRef, static: true })\n historyModalRef: ViewContainerRef;\n\n constructor(\n passwordGenerationService: PasswordGenerationService,\n usernameGenerationService: UsernameGenerationService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n logService: LogService,\n route: ActivatedRoute,\n private modalService: ModalService\n ) {\n super(\n passwordGenerationService,\n usernameGenerationService,\n platformUtilsService,\n stateService,\n i18nService,\n logService,\n route,\n window\n );\n if (platformUtilsService.isSelfHost()) {\n // Cannot use Firefox Relay on self hosted web vaults due to CORS issues with Firefox Relay API\n this.forwardOptions.splice(\n this.forwardOptions.findIndex((o) => o.value === \"firefoxrelay\"),\n 1\n );\n }\n }\n\n async history() {\n await this.modalService.openViewRef(PasswordGeneratorHistoryComponent, this.historyModalRef);\n }\n\n lengthChanged() {\n document.getElementById(\"length\").focus();\n }\n\n minNumberChanged() {\n document.getElementById(\"min-number\").focus();\n }\n\n minSpecialChanged() {\n document.getElementById(\"min-special\").focus();\n }\n}\n","
\n

{{ \"generator\" | i18n }}

\n
\n\n {{ \"passwordGeneratorPolicyInEffect\" | i18n }}\n\n
\n
\n
\n
\n \n\n
\n \n
\n \n \n
\n
\n\n
\n \n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n \n
\n
\n
\n\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n
\n \n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n \n \n {{ \"regenerateUsername\" | i18n }}\n \n \n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport * as JSZip from \"jszip\";\nimport Swal, { SweetAlertIcon } from \"sweetalert2\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { ImportService } from \"jslib-common/abstractions/import.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { ImportOption, ImportType } from \"jslib-common/enums/importOptions\";\nimport { PolicyType } from \"jslib-common/enums/policyType\";\n\n@Component({\n selector: \"app-import\",\n templateUrl: \"import.component.html\",\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: ImportType = null;\n fileContents: string;\n formPromise: Promise;\n loading = false;\n importBlockedByPolicy = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = [\"vault\"];\n\n constructor(\n protected i18nService: I18nService,\n protected importService: ImportService,\n protected router: Router,\n protected platformUtilsService: PlatformUtilsService,\n protected policyService: PolicyService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.setImportOptions();\n\n this.importBlockedByPolicy = await this.policyService.policyAppliesToUser(\n PolicyType.PersonalOwnership\n );\n }\n\n async submit() {\n if (this.importBlockedByPolicy) {\n this.platformUtilsService.showToast(\n \"error\",\n null,\n this.i18nService.t(\"personalOwnershipPolicyInEffectImports\")\n );\n return;\n }\n\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFormat\")\n );\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById(\"file\") as HTMLInputElement;\n const files = fileEl.files;\n if (\n (files == null || files.length === 0) &&\n (this.fileContents == null || this.fileContents === \"\")\n ) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (fileContents == null || fileContents === \"\") {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"selectFile\")\n );\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"importSuccess\"));\n this.router.navigate(this.successNavigate);\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions\n .concat(this.importOptions)\n .filter((o) => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t(\"instructionsFor\", results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [\n {\n id: null,\n name: \"-- \" + this.i18nService.t(\"select\") + \" --\",\n },\n ...this.importService.featuredImportOptions,\n ];\n this.importOptions = [...this.importService.regularImportOptions].sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator\n ? this.i18nService.collator.compare(a.name, b.name)\n : a.name.localeCompare(b.name);\n });\n }\n\n private async error(error: Error) {\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: \"error\" as SweetAlertIcon,\n iconHtml: ``,\n input: \"textarea\",\n inputValue: error.message,\n inputAttributes: {\n readonly: \"true\",\n },\n titleText: this.i18nService.t(\"importError\"),\n text: this.i18nService.t(\"importErrorDesc\"),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t(\"ok\"),\n onOpen: (popupEl) => {\n popupEl.querySelector(\".swal2-textarea\").scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n if (this.format === \"1password1pux\") {\n return this.extract1PuxContent(file);\n }\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, \"utf-8\");\n reader.onload = (evt) => {\n if (this.format === \"lastpasscsv\" && file.type === \"text/html\") {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, \"text/html\");\n const pre = doc.querySelector(\"pre\");\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n\n private extract1PuxContent(file: File): Promise {\n return new JSZip()\n .loadAsync(file)\n .then((zip) => {\n return zip.file(\"export.data\").async(\"string\");\n })\n .then(\n function success(content) {\n return content;\n },\n function error(e) {\n return \"\";\n }\n );\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from \"jslib-angular/components/password-generator-history.component\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-password-generator-history\",\n templateUrl: \"password-generator-history.component.html\",\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService\n ) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","
\n
\n
\n
\n

{{ \"passwordHistory\" | i18n }}

\n \n ×\n \n
\n
\n
    \n
  • \n
    \n
    \n {{ h.date | date: \"medium\" }}\n
\n
\n \n \n \n
\n \n \n
\n
\n {{ \"noPasswordsInList\" | i18n }}\n
\n
\n \n
\n \n \n \n
\n
\n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\n\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\n\n@Component({\n selector: \"app-tools\",\n templateUrl: \"tools.component.html\",\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private stateService: StateService, private messagingService: MessagingService) {}\n\n async ngOnInit() {\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n}\n","
\n \n
\n","import { Component, Input } from \"@angular/core\";\n\nimport { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from \"jslib-angular/components/add-edit-custom-fields.component\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\n\n@Component({\n selector: \"app-vault-add-edit-custom-fields\",\n templateUrl: \"add-edit-custom-fields.component.html\",\n})\nexport class AddEditCustomFieldsComponent extends BaseAddEditCustomFieldsComponent {\n @Input() viewOnly: boolean;\n @Input() copy: (value: string, typeI18nKey: string, aType: string) => void;\n\n constructor(i18nService: I18nService, eventService: EventService) {\n super(i18nService, eventService);\n }\n}\n","\n

{{ \"customFields\" | i18n }}

\n
\n \n
\n
\n \n \n \n \n
\n \n
\n
\n \n
\n \n
\n \n
\n \n \n \n
\n
\n \n
\n \n
\n \n \n \n \n \n \n \n
\n
\n \n
\n \n \n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n
\n
\n \n \n \n {{ \"newCustomField\" | i18n }}\n \n
\n
\n \n \n
\n
\n
\n","import { Component } from \"@angular/core\";\n\nimport { AddEditComponent as BaseAddEditComponent } from \"jslib-angular/components/add-edit.component\";\nimport { AuditService } from \"jslib-common/abstractions/audit.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordGenerationService } from \"jslib-common/abstractions/passwordGeneration.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { PolicyService } from \"jslib-common/abstractions/policy.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { LoginUriView } from \"jslib-common/models/view/loginUriView\";\n\n@Component({\n selector: \"app-vault-add-edit\",\n templateUrl: \"add-edit.component.html\",\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(\n cipherService: CipherService,\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n auditService: AuditService,\n stateService: StateService,\n collectionService: CollectionService,\n protected totpService: TotpService,\n protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService,\n eventService: EventService,\n protected policyService: PolicyService,\n organizationService: OrganizationService,\n logService: LogService,\n passwordRepromptService: PasswordRepromptService\n ) {\n super(\n cipherService,\n folderService,\n i18nService,\n platformUtilsService,\n auditService,\n stateService,\n collectionService,\n messagingService,\n eventService,\n policyService,\n logService,\n passwordRepromptService,\n organizationService\n );\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.stateService.getCanAccessPremium();\n if (\n this.cipher.type === CipherType.Login &&\n this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)\n ) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(typeI18nKey))\n );\n\n if (this.editMode) {\n if (typeI18nKey === \"password\") {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === \"securityCode\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === \"H_Field\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send(\"premiumRequired\");\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send(\"upgradeOrganization\", {\n organizationId: this.cipher.organizationId,\n });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (\n this.cipher == null ||\n this.cipher.type !== CipherType.Login ||\n this.cipher.login.totp == null\n ) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted =\n this.totpCode.substring(0, half) + \" \" + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (\n (!this.editMode || this.cloneMode) &&\n this.ownershipOptions != null &&\n (this.ownershipOptions.length > 1 || !this.allowPersonal)\n );\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round(((78.6 / intervalSeconds) * mod + \"e+2\") as any) + \"e-2\");\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from \"jslib-angular/components/attachments.component\";\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CryptoService } from \"jslib-common/abstractions/crypto.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { AttachmentView } from \"jslib-common/models/view/attachmentView\";\n\n@Component({\n selector: \"app-vault-attachments\",\n templateUrl: \"attachments.component.html\",\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(\n cipherService: CipherService,\n i18nService: I18nService,\n cryptoService: CryptoService,\n stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n apiService: ApiService,\n logService: LogService\n ) {\n super(\n cipherService,\n i18nService,\n cryptoService,\n platformUtilsService,\n apiService,\n window,\n logService,\n stateService\n );\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","import { Component, Input, ViewChild, ViewContainerRef } from \"@angular/core\";\n\nimport { ModalService } from \"jslib-angular/services/modal.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\n\nimport { BulkDeleteComponent } from \"./bulk-delete.component\";\nimport { BulkMoveComponent } from \"./bulk-move.component\";\nimport { BulkRestoreComponent } from \"./bulk-restore.component\";\nimport { BulkShareComponent } from \"./bulk-share.component\";\nimport { CiphersComponent } from \"./ciphers.component\";\n\n@Component({\n selector: \"app-vault-bulk-actions\",\n templateUrl: \"bulk-actions.component.html\",\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild(\"bulkDeleteTemplate\", { read: ViewContainerRef, static: true })\n bulkDeleteModalRef: ViewContainerRef;\n @ViewChild(\"bulkRestoreTemplate\", { read: ViewContainerRef, static: true })\n bulkRestoreModalRef: ViewContainerRef;\n @ViewChild(\"bulkMoveTemplate\", { read: ViewContainerRef, static: true })\n bulkMoveModalRef: ViewContainerRef;\n @ViewChild(\"bulkShareTemplate\", { read: ViewContainerRef, static: true })\n bulkShareModalRef: ViewContainerRef;\n\n constructor(\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private modalService: ModalService,\n private passwordRepromptService: PasswordRepromptService\n ) {}\n\n async bulkDelete() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkDeleteComponent,\n this.bulkDeleteModalRef,\n (comp) => {\n comp.permanent = this.deleted;\n comp.cipherIds = selectedIds;\n comp.organization = this.organization;\n comp.onDeleted.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkRestore() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkRestoreComponent,\n this.bulkRestoreModalRef,\n (comp) => {\n comp.cipherIds = selectedIds;\n comp.onRestored.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkShare() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkShareComponent,\n this.bulkShareModalRef,\n (comp) => {\n comp.ciphers = selectedCiphers;\n comp.onShared.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n async bulkMove() {\n if (!(await this.promptPassword())) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.platformUtilsService.showToast(\n \"error\",\n this.i18nService.t(\"errorOccurred\"),\n this.i18nService.t(\"nothingSelected\")\n );\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(\n BulkMoveComponent,\n this.bulkMoveModalRef,\n (comp) => {\n comp.cipherIds = selectedIds;\n comp.onMoved.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n }\n );\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n private async promptPassword() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n const notProtected = !selectedCiphers.find(\n (cipher) => cipher.reprompt !== CipherRepromptType.None\n );\n\n return notProtected || (await this.passwordRepromptService.showPasswordPrompt());\n }\n}\n","
\n \n \n \n
\n \n \n {{ \"moveSelected\" | i18n }}\n \n \n \n {{ \"moveSelectedToOrg\" | i18n }}\n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { ApiService } from \"jslib-common/abstractions/api.service\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherBulkDeleteRequest } from \"jslib-common/models/request/cipherBulkDeleteRequest\";\n\n@Component({\n selector: \"app-vault-bulk-delete\",\n templateUrl: \"bulk-delete.component.html\",\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private apiService: ApiService\n ) {}\n\n async submit() {\n if (!this.organization || !this.organization.canEditAnyCollection) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(this.permanent ? \"permanentlyDeletedItems\" : \"deletedItems\")\n );\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","
\n
\n
\n
\n

\n {{ (permanent ? \"permanentlyDeleteSelected\" : \"deleteSelected\") | i18n }}\n

\n \n ×\n \n
\n
\n {{\n (permanent ? \"permanentlyDeleteSelectedItemsDesc\" : \"deleteSelectedItemsDesc\")\n | i18n: cipherIds.length\n }}\n
\n
\n \n \n {{ (permanent ? \"permanentlyDelete\" : \"delete\") | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { FolderView } from \"jslib-common/models/view/folderView\";\n\n@Component({\n selector: \"app-vault-bulk-move\",\n templateUrl: \"bulk-move.component.html\",\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private folderService: FolderService\n ) {}\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"movedItems\"));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveSelected\" | i18n }}\n

\n \n ×\n \n
\n
\n

{{ \"moveSelectedItemsDesc\" | i18n: cipherIds.length }}

\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-vault-bulk-restore\",\n templateUrl: \"bulk-restore.component.html\",\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService\n ) {}\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItems\"));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"restoreSelected\" | i18n }}\n

\n \n ×\n \n
\n
\n {{ \"restoreSelectedItemsDesc\" | i18n: cipherIds.length }}\n
\n
\n \n \n {{ \"restore\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-bulk-share\",\n templateUrl: \"bulk-share.component.html\",\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(\n private cipherService: CipherService,\n private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService,\n private collectionService: CollectionService,\n private organizationService: OrganizationService,\n private logService: LogService\n ) {}\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(\n (c) => !c.hasOldAttachments && c.organizationId == null\n );\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter((c) => !c.readOnly);\n this.organizations = await this.organizationService.getAll();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(\n (c) => c.organizationId === this.organizationId\n );\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections\n .filter((c) => (c as any).checked)\n .map((c) => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(\n this.shareableCiphers,\n this.organizationId,\n checkedCollectionIds\n );\n await this.formPromise;\n this.onShared.emit();\n const orgName =\n this.organizations.find((o) => o.id === this.organizationId)?.name ??\n this.i18nService.t(\"organization\");\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(\"movedItemsToOrg\", orgName)\n );\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n\n get canSave() {\n if (\n this.shareableCiphers != null &&\n this.shareableCiphers.length > 0 &&\n this.collections != null\n ) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveSelectedToOrg\" | i18n }}\n

\n \n ×\n \n
\n
\n

{{ \"moveManyToOrgDesc\" | i18n }}

\n

\n {{\n \"moveSelectedItemsCountDesc\"\n | i18n: this.ciphers.length:shareableCiphers.length:nonShareableCount\n }}\n

\n
\n \n \n \n \n
\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n
\n
\n
\n
\n","import { Component, EventEmitter, Input, OnDestroy, Output } from \"@angular/core\";\n\nimport { CiphersComponent as BaseCiphersComponent } from \"jslib-angular/components/ciphers.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { EventService } from \"jslib-common/abstractions/event.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PasswordRepromptService } from \"jslib-common/abstractions/passwordReprompt.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { SearchService } from \"jslib-common/abstractions/search.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { TokenService } from \"jslib-common/abstractions/token.service\";\nimport { TotpService } from \"jslib-common/abstractions/totp.service\";\nimport { CipherRepromptType } from \"jslib-common/enums/cipherRepromptType\";\nimport { CipherType } from \"jslib-common/enums/cipherType\";\nimport { EventType } from \"jslib-common/enums/eventType\";\nimport { Organization } from \"jslib-common/models/domain/organization\";\nimport { CipherView } from \"jslib-common/models/view/cipherView\";\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: \"app-vault-ciphers\",\n templateUrl: \"ciphers.component.html\",\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n @Output() onOrganzationBadgeClicked = new EventEmitter();\n\n pagedCiphers: CipherView[] = [];\n pageSize = 200;\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n organizations: Organization[] = [];\n profileName: string;\n\n private didScroll = false;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(\n searchService: SearchService,\n protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService,\n protected cipherService: CipherService,\n protected eventService: EventService,\n protected totpService: TotpService,\n protected stateService: StateService,\n protected passwordRepromptService: PasswordRepromptService,\n private logService: LogService,\n private organizationService: OrganizationService,\n private tokenService: TokenService\n ) {\n super(searchService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n // load() is called after the page loads and the first sync has completed.\n // Do not use ngOnInit() for anything that requires sync data.\n async load(filter: (cipher: CipherView) => boolean = null, deleted = false) {\n await super.load(filter, deleted);\n this.profileName = await this.tokenService.getName();\n this.organizations = await this.organizationService.getAll();\n this.userHasPremiumAccess = await this.stateService.getCanAccessPremium();\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(\n this.ciphers.slice(pagedLength, pagedLength + pagedSize)\n );\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n\n async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(\n this.searchText,\n [this.filter, this.deletedFilter],\n indexedCiphers\n );\n this.resetPaging();\n }\n\n launch(uri: string) {\n this.platformUtilsService.launchUri(uri);\n }\n\n async attachments(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onAttachmentsClicked.emit(c);\n }\n\n async share(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n async clone(c: CipherView) {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (!(await this.repromptCipher(c))) {\n return;\n }\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\n permanent ? \"permanentlyDeleteItemConfirmation\" : \"deleteItemConfirmation\"\n ),\n this.i18nService.t(permanent ? \"permanentlyDeleteItem\" : \"deleteItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.platformUtilsService.showToast(\n \"success\",\n null,\n this.i18nService.t(permanent ? \"permanentlyDeletedItem\" : \"deletedItem\")\n );\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(\"restoreItemConfirmation\"),\n this.i18nService.t(\"restoreItem\"),\n this.i18nService.t(\"yes\"),\n this.i18nService.t(\"no\"),\n \"warning\"\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.platformUtilsService.showToast(\"success\", null, this.i18nService.t(\"restoredItem\"));\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (\n this.passwordRepromptService.protectedFields().includes(aType) &&\n !(await this.repromptCipher(cipher))\n ) {\n return;\n }\n\n if (value == null || (aType === \"TOTP\" && !this.displayTotpCopyButton(cipher))) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n if (!cipher.viewPassword) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast(\n \"info\",\n null,\n this.i18nService.t(\"valueCopied\", this.i18nService.t(typeI18nKey))\n );\n\n if (typeI18nKey === \"password\" || typeI18nKey === \"verificationCodeTotp\") {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === \"securityCode\") {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount =\n select && this.ciphers.length > MaxCheckedCount ? MaxCheckedCount : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter((c) => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map((c) => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (\n (cipher?.login?.hasTotp ?? false) && (cipher.organizationUseTotp || this.userHasPremiumAccess)\n );\n }\n\n async selectCipher(cipher: CipherView) {\n if (await this.repromptCipher(cipher)) {\n super.selectCipher(cipher);\n }\n }\n\n onOrganizationClicked(organizationId: string) {\n this.onOrganzationBadgeClicked.emit(organizationId);\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent\n ? this.cipherService.deleteWithServer(id)\n : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n\n protected async repromptCipher(c: CipherView) {\n return (\n c.reprompt === CipherRepromptType.None ||\n (await this.passwordRepromptService.showPasswordPrompt())\n );\n }\n}\n","import { Component, OnDestroy } from \"@angular/core\";\n\nimport { CollectionsComponent as BaseCollectionsComponent } from \"jslib-angular/components/collections.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-collections\",\n templateUrl: \"collections.component.html\",\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n logService: LogService\n ) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach((c) => this.check(c, select));\n }\n}\n","import { Component } from \"@angular/core\";\n\nimport { FolderAddEditComponent as BaseFolderAddEditComponent } from \"jslib-angular/components/folder-add-edit.component\";\nimport { FolderService } from \"jslib-common/abstractions/folder.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\n\n@Component({\n selector: \"app-folder-add-edit\",\n templateUrl: \"folder-add-edit.component.html\",\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(\n folderService: FolderService,\n i18nService: I18nService,\n platformUtilsService: PlatformUtilsService,\n logService: LogService\n ) {\n super(folderService, i18nService, platformUtilsService, logService);\n }\n}\n","
\n
\n \n
\n

{{ title }}

\n \n ×\n \n
\n
\n \n \n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n
\n
\n","import { Component, OnDestroy } from \"@angular/core\";\n\nimport { ShareComponent as BaseShareComponent } from \"jslib-angular/components/share.component\";\nimport { CipherService } from \"jslib-common/abstractions/cipher.service\";\nimport { CollectionService } from \"jslib-common/abstractions/collection.service\";\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { OrganizationService } from \"jslib-common/abstractions/organization.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { CollectionView } from \"jslib-common/models/view/collectionView\";\n\n@Component({\n selector: \"app-vault-share\",\n templateUrl: \"share.component.html\",\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(\n collectionService: CollectionService,\n platformUtilsService: PlatformUtilsService,\n i18nService: I18nService,\n cipherService: CipherService,\n organizationService: OrganizationService,\n logService: LogService\n ) {\n super(\n collectionService,\n platformUtilsService,\n i18nService,\n cipherService,\n logService,\n organizationService\n );\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach((c) => this.check(c, select));\n }\n}\n","
\n
\n
\n
\n

\n {{ \"moveToOrganization\" | i18n }}\n {{ cipher.name }}\n

\n \n ×\n \n
\n
\n {{ \"noOrganizationsList\" | i18n }}\n
\n
\n

{{ \"moveToOrgDesc\" | i18n }}

\n
\n \n \n \n \n
\n
\n

{{ \"collections\" | i18n }}

\n
\n \n \n
\n
\n
\n {{ \"noCollectionsInList\" | i18n }}\n
\n \n \n \n \n \n \n \n
\n \n \n {{ c.name }}\n
\n
\n
\n \n \n {{ \"save\" | i18n }}\n \n \n {{ \"newOrganization\" | i18n }}\n \n \n
\n
\n
\n
\n","import { NgModule } from \"@angular/core\";\nimport { RouterModule, Routes } from \"@angular/router\";\n\nconst routes: Routes = [{ path: \"**\", redirectTo: \"\" }];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class WildcardRoutingModule {}\n","import {\n Account as BaseAccount,\n AccountSettings as BaseAccountSettings,\n} from \"jslib-common/models/domain/account\";\n\nexport class AccountSettings extends BaseAccountSettings {\n vaultTimeout: number = process.env.NODE_ENV === \"development\" ? null : 15;\n}\n\nexport class Account extends BaseAccount {\n settings?: AccountSettings = new AccountSettings();\n\n constructor(init: Partial) {\n super(init);\n Object.assign(this.settings, {\n ...new AccountSettings(),\n ...this.settings,\n });\n }\n}\n","import { ThemeType } from \"jslib-common/enums/themeType\";\nimport { GlobalState as BaseGlobalState } from \"jslib-common/models/domain/globalState\";\n\nexport class GlobalState extends BaseGlobalState {\n theme?: ThemeType = ThemeType.Light;\n rememberEmail = true;\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { BroadcasterService } from \"jslib-common/abstractions/broadcaster.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\n\n@Injectable()\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) {}\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { StorageService } from \"jslib-common/abstractions/storage.service\";\nimport { HtmlStorageLocation } from \"jslib-common/enums/htmlStorageLocation\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\n\n@Injectable()\nexport class HtmlStorageService implements StorageService {\n get defaultOptions(): StorageOptions {\n return { htmlStorageLocation: HtmlStorageLocation.Session };\n }\n\n get(key: string, options: StorageOptions = this.defaultOptions): Promise {\n let json: string = null;\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n json = window.localStorage.getItem(key);\n break;\n case HtmlStorageLocation.Session:\n default:\n json = window.sessionStorage.getItem(key);\n break;\n }\n\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string, options: StorageOptions = this.defaultOptions): Promise {\n return (await this.get(key, options)) != null;\n }\n\n save(key: string, obj: any, options: StorageOptions = this.defaultOptions): Promise {\n if (obj == null) {\n return this.remove(key, options);\n }\n\n if (obj instanceof Set) {\n obj = Array.from(obj);\n }\n\n const json = JSON.stringify(obj);\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n window.localStorage.setItem(key, json);\n break;\n case HtmlStorageLocation.Session:\n default:\n window.sessionStorage.setItem(key, json);\n break;\n }\n return Promise.resolve();\n }\n\n remove(key: string, options: StorageOptions = this.defaultOptions): Promise {\n switch (options.htmlStorageLocation) {\n case HtmlStorageLocation.Local:\n window.localStorage.removeItem(key);\n break;\n case HtmlStorageLocation.Session:\n default:\n window.sessionStorage.removeItem(key);\n break;\n }\n return Promise.resolve();\n }\n}\n","import { I18nService as BaseI18nService } from \"jslib-common/services/i18n.service\";\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || \"en-US\", localesDirectory, async (formattedLocale: string) => {\n const filePath =\n this.localesDirectory +\n \"/\" +\n formattedLocale +\n \"/messages.json?cache=\" +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n // Please leave 'en' where it is, as it's our fallback language in case no translation can be found\n this.supportedTranslationLocales = [\n \"en\",\n \"af\",\n \"az\",\n \"be\",\n \"bg\",\n \"bn\",\n \"bs\",\n \"ca\",\n \"cs\",\n \"da\",\n \"de\",\n \"el\",\n \"en-GB\",\n \"en-IN\",\n \"eo\",\n \"es\",\n \"et\",\n \"fi\",\n \"fil\",\n \"fr\",\n \"he\",\n \"hi\",\n \"hr\",\n \"hu\",\n \"id\",\n \"it\",\n \"ja\",\n \"ka\",\n \"km\",\n \"kn\",\n \"ko\",\n \"lv\",\n \"ml\",\n \"nb\",\n \"nl\",\n \"nn\",\n \"pl\",\n \"pt-PT\",\n \"pt-BR\",\n \"ro\",\n \"ru\",\n \"si\",\n \"sk\",\n \"sl\",\n \"sr\",\n \"sv\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"zh-CN\",\n \"zh-TW\",\n ];\n }\n}\n","import { StorageService } from \"jslib-common/abstractions/storage.service\";\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { PasswordRepromptService as BasePasswordRepromptService } from \"jslib-angular/services/passwordReprompt.service\";\n\nimport { PasswordRepromptComponent } from \"../app/components/password-reprompt.component\";\n\n@Injectable()\nexport class PasswordRepromptService extends BasePasswordRepromptService {\n component = PasswordRepromptComponent;\n}\n","import { CipherData } from \"jslib-common/models/data/cipherData\";\nimport { CollectionData } from \"jslib-common/models/data/collectionData\";\nimport { FolderData } from \"jslib-common/models/data/folderData\";\nimport { SendData } from \"jslib-common/models/data/sendData\";\nimport { StorageOptions } from \"jslib-common/models/domain/storageOptions\";\nimport { StateService as BaseStateService } from \"jslib-common/services/state.service\";\n\nimport { StateService as StateServiceAbstraction } from \"../abstractions/state.service\";\nimport { Account } from \"../models/account\";\nimport { GlobalState } from \"../models/globalState\";\n\nexport class StateService\n extends BaseStateService\n implements StateServiceAbstraction\n{\n async addAccount(account: Account) {\n // Apply web overides to default account values\n account = new Account(account);\n await super.addAccount(account);\n }\n\n async getRememberEmail(options?: StorageOptions) {\n return (\n await this.getGlobals(this.reconcileOptions(options, await this.defaultOnDiskLocalOptions()))\n )?.rememberEmail;\n }\n\n async setRememberEmail(value: boolean, options?: StorageOptions): Promise {\n const globals = await this.getGlobals(\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n globals.rememberEmail = value;\n await this.saveGlobals(\n globals,\n this.reconcileOptions(options, await this.defaultOnDiskLocalOptions())\n );\n }\n\n async getEncryptedCiphers(options?: StorageOptions): Promise<{ [id: string]: CipherData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedCiphers(options);\n }\n\n async setEncryptedCiphers(\n value: { [id: string]: CipherData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedCiphers(value, options);\n }\n\n async getEncryptedCollections(\n options?: StorageOptions\n ): Promise<{ [id: string]: CollectionData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedCollections(options);\n }\n\n async setEncryptedCollections(\n value: { [id: string]: CollectionData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedCollections(value, options);\n }\n\n async getEncryptedFolders(options?: StorageOptions): Promise<{ [id: string]: FolderData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedFolders(options);\n }\n\n async setEncryptedFolders(\n value: { [id: string]: FolderData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedFolders(value, options);\n }\n\n async getEncryptedSends(options?: StorageOptions): Promise<{ [id: string]: SendData }> {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getEncryptedSends(options);\n }\n\n async setEncryptedSends(\n value: { [id: string]: SendData },\n options?: StorageOptions\n ): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setEncryptedSends(value, options);\n }\n\n override async getLastSync(options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.getLastSync(options);\n }\n\n override async setLastSync(value: string, options?: StorageOptions): Promise {\n options = this.reconcileOptions(options, this.defaultInMemoryOptions);\n return await super.setLastSync(value, options);\n }\n}\n","import { StateMigrationService as BaseStateMigrationService } from \"jslib-common/services/stateMigration.service\";\n\nimport { Account } from \"../models/account\";\nimport { GlobalState } from \"../models/globalState\";\n\nexport class StateMigrationService extends BaseStateMigrationService {\n protected async migrationStateFrom1To2(): Promise {\n await super.migrateStateFrom1To2();\n const globals = (await this.get(\"global\")) ?? this.stateFactory.createGlobal(null);\n globals.rememberEmail = (await this.get(\"rememberEmail\")) ?? globals.rememberEmail;\n await this.set(\"global\", globals);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport Swal, { SweetAlertIcon } from \"sweetalert2\";\n\nimport { I18nService } from \"jslib-common/abstractions/i18n.service\";\nimport { LogService } from \"jslib-common/abstractions/log.service\";\nimport { MessagingService } from \"jslib-common/abstractions/messaging.service\";\nimport { PlatformUtilsService } from \"jslib-common/abstractions/platformUtils.service\";\nimport { StateService } from \"jslib-common/abstractions/state.service\";\nimport { ClientType } from \"jslib-common/enums/clientType\";\nimport { DeviceType } from \"jslib-common/enums/deviceType\";\nimport { ThemeType } from \"jslib-common/enums/themeType\";\n\n@Injectable()\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n private browserCache: DeviceType = null;\n private prefersColorSchemeDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n\n constructor(\n private i18nService: I18nService,\n private messagingService: MessagingService,\n private logService: LogService,\n private stateService: StateService\n ) {}\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (\n navigator.userAgent.indexOf(\" Firefox/\") !== -1 ||\n navigator.userAgent.indexOf(\" Gecko/\") !== -1\n ) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(\" OPR/\") >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(\" Edg/\") !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(\" Vivaldi/\") !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (\n navigator.userAgent.indexOf(\" Safari/\") !== -1 &&\n navigator.userAgent.indexOf(\"Chrome\") === -1\n ) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(\" Chrome/\") !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(\" Trident/\") !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace(\"browser\", \"\");\n }\n\n getClientType() {\n return ClientType.Web;\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement(\"a\");\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = \"_blank\";\n a.rel = \"noreferrer noopener\";\n }\n a.classList.add(\"d-none\");\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith(\".pdf\")) {\n type = \"application/pdf\";\n doDownload = false;\n } else if (fileNameLower.endsWith(\".xlsx\")) {\n type = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n } else if (fileNameLower.endsWith(\".docx\")) {\n type = \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\";\n } else if (fileNameLower.endsWith(\".pptx\")) {\n type = \"application/vnd.openxmlformats-officedocument.presentationml.presentation\";\n } else if (fileNameLower.endsWith(\".csv\")) {\n type = \"text/csv\";\n } else if (fileNameLower.endsWith(\".png\")) {\n type = \"image/png\";\n } else if (fileNameLower.endsWith(\".jpg\") || fileNameLower.endsWith(\".jpeg\")) {\n type = \"image/jpeg\";\n } else if (fileNameLower.endsWith(\".gif\")) {\n type = \"image/gif\";\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n\n const a = win.document.createElement(\"a\");\n if (doDownload) {\n a.download = fileName;\n } else if (!this.isSafari()) {\n a.target = \"_blank\";\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = \"fixed\";\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n\n getApplicationVersion(): Promise {\n return Promise.resolve(process.env.APPLICATION_VERSION || \"-\");\n }\n\n supportsWebAuthn(win: Window): boolean {\n return typeof PublicKeyCredential !== \"undefined\";\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(\n type: \"error\" | \"success\" | \"warning\" | \"info\",\n title: string,\n text: string | string[],\n options?: any\n ): void {\n this.messagingService.send(\"showToast\", {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(\n body: string,\n title?: string,\n confirmText?: string,\n cancelText?: string,\n type?: string,\n bodyIsHtml = false\n ) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case \"success\":\n iconClasses = \"bwi-check text-success\";\n break;\n case \"warning\":\n iconClasses = \"bwi-exclamation-triangle text-warning\";\n break;\n case \"error\":\n iconClasses = \"bwi-error text-danger\";\n break;\n case \"info\":\n iconClasses = \"bwi-info-circle text-info\";\n break;\n default:\n break;\n }\n }\n\n const bootstrapModal = document.querySelector(\"div.modal\");\n if (bootstrapModal != null) {\n bootstrapModal.removeAttribute(\"tabindex\");\n }\n\n const iconHtmlStr =\n iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n titleText: title,\n showCancelButton: cancelText != null,\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t(\"ok\") : confirmText,\n });\n\n if (bootstrapModal != null) {\n bootstrapModal.setAttribute(\"tabindex\", \"-1\");\n }\n\n return confirmed.value;\n }\n\n isDev(): boolean {\n return process.env.NODE_ENV === \"development\";\n }\n\n isSelfHost(): boolean {\n return process.env.ENV.toString() === \"selfhosted\";\n }\n\n copyToClipboard(text: string, options?: any): void | boolean {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData(\"Text\", text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported(\"copy\")) {\n const textarea = doc.createElement(\"textarea\");\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = \"fixed\";\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains(\"modal-open\")) {\n copyEl = doc.body.querySelector(\".modal\");\n }\n copyEl.appendChild(textarea);\n textarea.select();\n let success = false;\n try {\n // Security exception may be thrown by some browsers.\n success = doc.execCommand(\"copy\");\n if (!success) {\n this.logService.debug(\"Copy command unsupported or disabled.\");\n }\n } catch (e) {\n // eslint-disable-next-line\n console.warn(\"Copy to clipboard failed.\", e);\n } finally {\n copyEl.removeChild(textarea);\n }\n return success;\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error(\"Cannot read from clipboard on web.\");\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme(): Promise {\n return Promise.resolve(this.prefersColorSchemeDark.matches ? ThemeType.Dark : ThemeType.Light);\n }\n\n async getEffectiveTheme(): Promise {\n const theme = await this.stateService.getTheme();\n if (theme === ThemeType.Dark) {\n return ThemeType.Dark;\n } else if (theme === ThemeType.System) {\n return this.getDefaultSystemTheme();\n } else {\n return ThemeType.Light;\n }\n }\n\n onDefaultSystemThemeChange(callback: (theme: ThemeType.Light | ThemeType.Dark) => unknown) {\n try {\n this.prefersColorSchemeDark.addEventListener(\"change\", ({ matches }) => {\n callback(matches ? ThemeType.Dark : ThemeType.Light);\n });\n } catch (e) {\n // Safari older than v14\n this.prefersColorSchemeDark.addListener((ev) => {\n callback(ev.matches ? ThemeType.Dark : ThemeType.Light);\n });\n }\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"darkInputColor\":\"#fff\",\"darkInputPlaceholderColor\":\"#bac0ce\",\"lightInputColor\":\"#465057\",\"lightInputPlaceholderColor\":\"#b6b8b8\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t148: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_bitwarden_web_vault\"] = self[\"webpackChunk_bitwarden_web_vault\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [734], () => (__webpack_require__(22977)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","routes","path","loadChildren","ProvidersModule","AppRoutingModule","RouterModule","forChild","AppComponent","ngOnInit","super","this","policyListService","addPolicies","MaximumVaultTimeoutPolicy","DisablePersonalVaultExportPolicy","AppModule","OverlayModule","OssModule","JslibModule","BrowserAnimationsModule","FormsModule","ReactiveFormsModule","ServicesModule","InfiniteScrollModule","DragDropModule","OssRoutingModule","OrganizationsModule","WildcardRoutingModule","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","BaseCvaComponent","constructor","controlDir","internalControl","FormControl","onValueChangesInternal","value","onChange","valueAccessor","describedById","showDescribedBy","controlId","helperText","control","hasError","isRequired","hasValidator","Validators","required","dirtyRequired","valueChanges","subscribe","onBlurInternal","onTouched","writeValue","setValue","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","disable","enable","InputCheckboxComponent","InputTextReadOnlyComponent","platformUtilsService","showCopy","showLaunch","copy","copyToClipboard","launchUri","url","InputTextComponent","stripSpaces","transformValue","newValue","emitEvent","doStripSpaces","onValueChangeInternal","replace","disabled","SelectComponent","defaultSigningAlgorithm","SsoComponent","formBuilder","route","apiService","i18nService","organizationService","ssoType","SsoType","ssoTypeOptions","name","t","None","OpenIdConnect","Saml2","samlSigningAlgorithms","saml2SigningBehaviourOptions","Saml2SigningBehavior","IfIdpWantAuthnRequestsSigned","Always","Never","saml2BindingTypeOptions","Saml2BindingType","HttpRedirect","HttpPost","saml2NameIdFormatOptions","Saml2NameIdFormat","NotConfigured","Unspecified","EmailAddress","X509SubjectName","WindowsDomainQualifiedName","KerberosPrincipalName","EntityIdentifier","Persistent","Transient","connectRedirectOptions","OpenIdConnectRedirectBehavior","RedirectGet","FormPost","showOpenIdCustomizations","loading","haveTestedKeyConnector","enabled","openIdForm","group","authority","clientId","clientSecret","metadataAddress","redirectBehavior","getClaimsFromUserInfoEndpoint","additionalScopes","additionalUserIdClaimTypes","additionalEmailClaimTypes","additionalNameClaimTypes","acrValues","expectedReturnAcrValue","updateOn","samlForm","spNameIdFormat","spOutboundSigningAlgorithm","spSigningBehavior","spMinIncomingSigningAlgorithm","spWantAssertionsSigned","spValidateCertificates","idpEntityId","idpBindingType","idpSingleSignOnServiceUrl","idpSingleLogoutServiceUrl","idpX509PublicCert","idpOutboundSigningAlgorithm","idpAllowUnsolicitedAuthnResponse","idpAllowOutboundLogoutRequests","idpWantAuthnRequestsSigned","ssoConfigForm","configType","keyConnectorEnabled","keyConnectorUrl","openId","saml","get","newType","updateValueAndValidity","parent","params","organizationId","load","organization","ssoSettings","getOrganizationSso","populateForm","callbackPath","urls","signedOutCallbackPath","spEntityId","spMetadataUrl","spAcsUrl","submit","validateForm","validateKeyConnectorUrl","valid","readOutErrors","request","OrganizationSsoRequest","data","SsoConfigApi","fromView","formPromise","postOrganizationSso","response","showToast","markAsPending","getKeyConnectorAlive","setErrors","invalidUrl","toggleOpenIdCustomizations","getErrorCount","form","Object","values","controls","reduce","acc","FormGroup","errors","keys","length","enableTestKeyConnector","Utils","isNullOrWhitespace","samlSigningAlgorithmOptions","map","algorithm","forEach","markAsDirty","markAsTouched","ssoConfigView","SsoConfigView","patchValue","errorText","errorCount","errorCountText","toString","div","document","createElement","className","id","setAttribute","innerText","existing","getElementById","remove","body","append","component","OrganizationLayoutComponent","canActivate","AuthGuard","PermissionsGuard","children","ManageComponent","permissions","NavigationPermissionsService","getPermissions","concat","Permissions","ManageSso","OrganizationsRoutingModule","CommonModule","BasePolicy","description","type","PolicyType","DisablePersonalVaultExport","DisablePersonalVaultExportPolicyComponent","BasePolicyComponent","MaximumVaultTimeout","MaximumVaultTimeoutPolicyComponent","hours","minutes","loadData","policyResponse","Math","floor","buildRequestData","buildRequest","policiesEnabledMap","singleOrgEnabled","SingleOrg","Error","AddOrganizationComponent","providerService","webProviderService","validationService","onAddedOrganization","EventEmitter","providerId","provider","add","showDialog","addOrganizationToProvider","e","showError","emit","DisallowedPlanTypes","PlanType","Free","FamiliesAnnually2019","FamiliesAnnually","ClientsComponent","searchService","logService","modalService","manageOrganizations","showAddExisting","didScroll","pageSize","pagedClientsCount","queryParams","pipe","first","qParams","searchText","search","getProviderClients","clients","ProviderUserType","ProviderAdmin","candidateOrgs","getAll","filter","o","isOwner","allowedOrgsIds","Promise","all","getOrganization","then","orgs","includes","planType","addableOrganizations","isPaging","searching","isSearching","resetPaging","isSearchable","pagedClients","loadMore","pagedLength","pagedSize","slice","addExistingOrganization","modal","openViewRef","addModalRef","comp","organizations","close","error","organizationName","actionPromise","detachOrganizastion","ViewContainerRef","CreateOrganizationComponent","OrganizationPlansComponent","router","indexOf","AccessEventLogs","canAccessEventLogs","ManageProvider","isProviderAdmin","ManageUsers","canManageUsers","navigate","ProviderGuard","AcceptProviderComponent","BaseAcceptComponent","stateService","platformUtilService","failedMessage","requiredParameters","authedHandler","ProviderUserAcceptRequest","token","postProviderUserAccept","providerUserId","timeout","unauthedHandler","providerName","BulkConfirmComponent","isAccepted","user","status","ProviderUserStatusType","Accepted","getPublicKeys","ProviderUserBulkRequest","filteredUsers","postProviderUsersPublicKey","getCryptoKey","cryptoService","getProviderKey","postConfirmRequest","userIdsWithKeys","ProviderUserBulkConfirmRequest","postProviderUserBulkConfirm","BulkRemoveComponent","deleteUsers","users","deleteManyProviderUsers","EventsComponent","BaseEventsComponent","eventService","exportService","userNamePipe","exportFileName","providerUsersUserIdMap","Map","providerUsersIdMap","useEvents","getProviderUsers","u","transform","set","email","userId","loadEvents","loaded","requestEvents","startDate","endDate","continuationToken","getEventsProvider","getUserName","r","has","exportEvents","accessEvents","PeopleComponent","BasePeopleComponent","searchPipe","userType","userStatusType","viewEvents","Confirmed","events","relativeTo","getUsers","deleteUser","deleteProviderUser","reinviteUser","postProviderUserReinvite","confirmUser","publicKey","providerKey","key","rsaEncrypt","buffer","ProviderUserConfirmRequest","encryptedString","postProviderUserConfirm","edit","UserAddEditComponent","addEditModalRef","onSavedUser","onDeletedUser","removeUser","EntityEventsComponent","eventsModalRef","entityId","showUser","entity","bulkRemove","bulkRemoveModalRef","getCheckedUsers","onClosedPromise","bulkReinvite","Invited","postManyProviderUserReinvite","showBulkStatus","bulkConfirm","bulkConfirmModalRef","successfullMessage","childComponent","BulkStatusComponent","bulkStatusModalRef","onShown","keyedErrors","a","x","keyedFilteredUsers","message","hasOwnProperty","selectAll","invite","editMode","ServiceUser","PermissionsApi","showCustom","access","title","getProviderUser","ProviderUserUpdateRequest","putProviderUser","ProviderUserInviteRequest","emails","trim","split","postProviderUserInvite","delete","deletePromise","ProvidersLayoutComponent","classList","showMenuBar","showManageTab","showSettingsTab","manageRoute","ProvidersComponent","FrontendLayoutComponent","SetupProviderComponent","titleId","SetupComponent","pathMatch","redirectTo","SettingsComponent","AccountComponent","ProvidersRoutingModule","componentFactoryResolver","registerComponentFactoryResolver","WebProviderService","syncService","orgKey","getOrgKey","encryptedOrgKey","encrypt","ProviderAddOrganizationRequest","postProviderAddOrganization","fullSync","deleteProviderOrganization","selfHosted","isSelfHost","getProvider","ProviderUpdateRequest","businessName","billingEmail","putProvider","failedShortMessage","authed","replaceUrl","doSubmit","makeShareKey","ProviderSetupRequest","postProviderSetup","AddEditCustomFieldsComponent","addFieldType","FieldType","Text","linkedFieldOptions","cipherType","CipherType","fieldType","eventType","EventType","addFieldTypeOptions","Hidden","Boolean","addFieldLinkedTypeOption","Linked","ngOnChanges","changes","thisCipherType","setLinkedFieldOptions","firstChange","resetCipherLinkedFields","addField","cipher","fields","f","FieldView","newField","linkedId","push","removeField","field","i","splice","toggleFieldValue","showValue","collect","Cipher_ClientToggledHiddenFieldVisible","trackByFunction","index","item","drop","event","moveItemInArray","previousIndex","currentIndex","options","linkedFieldOption","i18nKey","sort","getSortFunction","AddEditComponent","cipherService","folderService","auditService","collectionService","messagingService","policyService","passwordRepromptService","cloneMode","folderId","onSavedCipher","onDeletedCipher","onRestoredCipher","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","onGenerateUsername","collections","showPassword","showCardNumber","showCardCode","ownershipOptions","currentDate","Date","allowPersonal","reprompt","canUseReprompt","typeOptions","Login","Card","Identity","SecureNote","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","uriMatchOptions","UriMatchType","Domain","Host","StartsWith","RegularExpression","Exact","autofillOnPageLoadOptions","init","policyAppliesToUser","PersonalOwnership","myEmail","getEmail","OrganizationUserStatusType","writeableCollections","loadCollections","cipherId","addEditCipherInfo","getAddEditCipherInfo","collectionIds","setAddEditCipherInfo","loadCipher","decrypt","CipherView","login","LoginView","uris","LoginUriView","card","CardView","identity","IdentityView","secureNote","SecureNoteView","SecureNoteType","Generic","CipherRepromptType","organizationChanged","c","checked","folders","getAllDecrypted","previousCipherId","Cipher_ClientViewed","isDeleted","restore","uri","encryptCipher","saveCipher","send","addUri","removeUri","cancel","attachments","share","editCollections","deleteCipher","restorePromise","restoreCipher","generateUsername","username","generatePassword","password","togglePassword","focus","Cipher_ClientToggledPasswordVisible","toggleCardNumber","Cipher_ClientToggledCardNumberVisible","toggleCardCode","Cipher_ClientToggledCardCodeVisible","toggleUriOptions","showOptions","match","loginUriMatchChanged","org","organizationUseTotp","useTotp","checkPassword","checkPasswordPromise","passwordLeaked","matches","repromptChanged","Password","readOnly","saveWithServer","deleteWithServer","softDeleteWithServer","restoreWithServer","AttachmentsComponent","win","onUploadedAttachment","onDeletedAttachment","onReuploadedAttachment","deletePromises","reuploadPromises","emergencyAccessId","hasUpdatedKey","fileEl","files","size","saveCipherAttachment","cipherDomain","attachment","deleteCipherAttachment","download","downloading","canAccessAttachments","getAttachmentData","ErrorResponse","statusCode","getSingleMessage","fetch","Request","cache","buf","arrayBuffer","decBuf","decryptFromBytes","saveFile","fileName","hasEncKey","canAccessPremium","getCanAccessPremium","reuploadCipherAttachment","admin","resolve","saveAttachmentRawWithServer","foundAttachment","a2","file","saveAttachmentWithServer","attachmentId","deleteAttachmentWithServer","Window","AvatarComponent","sanitizer","cryptoFunctionService","charCount","textColor","fontSize","fontWeight","dynamic","circle","generate","getEnableGravitars","hashBytes","hash","toLowerCase","fromBufferToHex","src","chars","upperData","toUpperCase","getFirstLetters","unicodeSafeSubstring","regexpEmojiPresentation","charObj","getCharText","color","stringToColor","svg","getSvg","appendChild","html","window","outerHTML","svgHtml","btoa","unescape","encodeURIComponent","str","charCodeAt","substr","count","parts","text","svgTag","style","backgroundColor","width","height","character","textTag","textContent","characters","join","CalloutComponent","useAlertRole","calloutStyle","undefined","enforcedPolicyMessage","icon","getPasswordScoreAlertDisplay","enforcedPolicyOptions","minComplexity","CaptchaProtectedComponent","environmentService","captchaSiteKey","captchaToken","setupCaptcha","webVaultUrl","getWebVaultUrl","captcha","CaptchaIFrame","info","showCaptcha","handleCaptchaRequired","ChangePasswordComponent","passwordGenerationService","getMasterPasswordPolicyOptions","strongPassword","setupSubmitActions","kdf","getKdfType","kdfIterations","getKdfIterations","makeKey","masterPassword","masterPasswordHash","hashPassword","encKey","getEncKey","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","score","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","setTimeout","masterPasswordScore","logOut","userInput","atPosition","CiphersComponent","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","ciphers","searchPlaceholder","deleted","searchPending","searchTimeout","deletedFilter","applyFilter","reload","refresh","indexedCiphers","doSearch","selectCipher","rightClickCipher","addCipher","addCipherOptions","searchCiphers","CollectionsComponent","allowSelectNone","onSavedCollections","loadCipherCollections","selectedCollectionIds","saveCollections","saveCollectionsWithServer","ExportScopeCalloutComponent","show","hasOrganizations","scopeConfig","scopeIdentifier","ExportComponent","userVerificationService","onSaved","disabledByPolicy","exportForm","format","secret","formatOptions","checkExportDisabled","encryptedFormat","warningDialog","verifyUser","getExportData","downloadFile","saved","collectEvent","getExport","getFileName","prefix","extension","User_ClientExportedVault","csv","FolderAddEditComponent","onSavedFolder","onDeletedFolder","folder","FolderView","GeneratorComponent","usernameGenerationService","comingFromAddEdit","onSelected","usernameOptions","passwordOptions","avoidAmbiguous","usernameWebsite","passTypeOptions","usernameTypeOptions","desc","subaddressOptions","catchallOptions","forwardOptions","passwordOptionsResponse","getOptions","enforcedPasswordPolicyOptions","ambiguous","subaddressEmail","subaddressType","catchallType","website","websiteOption","generatorOptions","getGeneratorOptions","regenerateWithoutButtonPress","regenerate","typeChanged","setGeneratorOptions","regeneratePassword","regenerateUsername","sliderChanged","savePasswordOptions","addHistory","sliderInput","normalizePasswordOptions","saveOptions","saveUsernameOptions","usernameGeneratingPromise","copyOptions","select","toggleOptions","uppercase","lowercase","number","special","querySelector","normalizeOptions","successRoute","postPasswordHint","PasswordHintRequest","onSuccessfulSubmit","cardIcons","Visa","Mastercard","Amex","Discover","JCB","Maestro","UnionPay","IconComponent","iconsUrl","getIconsUrl","image","fallbackImage","imageEnabled","getDisableFavicon","setLoginIcon","setCardIcon","hostnameUri","isWebsite","getHostname","brand","LockComponent","vaultTimeoutService","keyConnectorService","ngZone","pin","pinLock","webVaultHostname","invalidPinAttempts","activeAccount","failed","pinSet","makeKeyFromPin","getDecryptedPinProtected","protectedPin","getProtectedPin","decryptToUtf8","EncString","setKeyAndContinue","passwordValid","getKeyHash","compareAndUpdateKeyHash","SecretVerificationRequest","serverKeyHash","HashPurpose","ServerAuthorization","postAccountVerifyPassword","localKeyHash","LocalAuthorization","setKeyHash","decPin","pinKey","makePinKey","setDecryptedPinProtected","unlockBiometric","biometricLock","success","getKey","KeySuffixOptions","Biometric","doContinue","input","isStable","onStable","take","setKey","setBiometricLocked","setEverBeenUnlocked","disableFavicon","setDisableFavicon","isPinLockSet","supportsBiometric","isBiometricLockSet","hasKeyStored","supportsSecureStorage","biometricText","getBiometricText","usesKeyConnector","getUsesKeyConnector","hideInput","vaultUrl","LoginComponent","authService","rememberEmail","twoFactorRoute","forcePasswordResetRoute","alwaysRememberEmail","getRememberedEmail","isBrowser","isNode","focusInput","credentials","PasswordLogInCredentials","logIn","setRememberedEmail","requiresTwoFactor","onSuccessfulLoginTwoFactorNavigate","forcePasswordReset","onSuccessfulLoginForceResetNavigate","onSuccessfulLogin","onSuccessfulLoginNavigate","launchSsoBrowser","ssoRedirectUri","numbers","state","ssoCodeVerifier","codeVerifierHash","codeChallenge","fromBufferToUrlB64","setSsoState","setSsoCodeVerifier","webUrl","DynamicModalComponent","cd","el","focusTrapFactory","modalRef","ngAfterViewInit","loadChildComponent","childComponentType","setComponentParameters","componentRef","instance","detectChanges","created","nativeElement","focusTrap","create","focusFirstTabbableElementWhenReady","componentType","componentFactory","resolveComponentFactory","modalContentRef","clear","createComponent","ngOnDestroy","destroy","getFocus","autoFocusEl","_parentInjector","_additionalTokens","notFoundValue","flags","_onCreated","Subject","_onClose","_onClosed","_onShow","_onShown","onCreated","asObservable","onClose","onClosed","onShow","next","shown","result","lastResult","closed","toPromise","PasswordGeneratorHistoryComponent","history","getHistory","PasswordRepromptComponent","RegisterComponent","confirmMasterPassword","hint","showTerms","acceptPolicies","masterPasswordScoreWidth","masterPasswordScoreColor","masterPasswordScoreText","DEFAULT_KDF_TYPE","DEFAULT_KDF_ITERATIONS","hashedPassword","makeKeyPair","RegisterRequest","referenceData","KeysRequest","orgInvite","getOrganizationInvitation","organizationUserId","postRegister","confirmField","RemovePasswordComponent","continuing","leaving","getManagingOrganization","convert","migrateUser","removeConvertAccountRequired","leave","postLeaveOrganization","datePipe","sendService","onSavedSend","onDeletedSend","copyLink","disableSend","disableHideEmail","sendType","SendType","emailVerified","alertShown","File","sendLinkBaseUrl","getSendUrl","link","accessId","urlB64Key","isSafari","isDateTimeLocalSupported","isFirefox","sendId","setDates","deletionDate","expirationDate","DisableSend","SendOptions","p","getEmailVerified","loadSend","SendView","SendFileView","SendTextView","setDate","getDate","hasPassword","encryptSend","encSend","uploadPromise","copySuccess","copyLinkToClipboard","sendData","togglePasswordVisible","BrowserPath","DateField","DatePreset","EffluxDatesComponent","datesChanged","datesForm","selectedDeletionDatePreset","selectedExpirationDatePreset","defaultDeletionDateTime","defaultExpirationDateTime","fallbackDeletionDate","fallbackDeletionTime","fallbackExpirationDate","fallbackExpirationTime","deletionDatePresets","OneHour","OneDay","TwoDays","ThreeDays","SevenDays","ThirtyDays","Custom","expirationDatePresets","browserPath","Firefox","Safari","Default","formattedDeletionDate","now","miliseconds","setTime","getTime","formattedExpirationDate","safariDeletionTimePresetOptions","safariTimePresetOptions","DeletionDate","safariExpirationTimePresetOptions","ExpriationDate","nextWeek","setInitialFormValues","emitDates","onDeletionDatePresetSelect","clearExpiration","initialDeletionDate","toISOString","toTimeString","initialExpirationDate","twentyFourHour","noon","midnight","ams","pms","h","m","hour","midnightOption","twelveHour","noonOption","amOption","pmOption","validTimes","SendComponent","refreshing","expired","sends","filteredSends","hasSearched","onSuccessfulLoad","s","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","searchTextChanged","clearSelections","selectedAll","selectType","selectedType","searchSends","SetPasswordComponent","syncLoading","identifier","resetPasswordAutoEnroll","getOrganizationAutoEnrollStatus","orgId","resetPasswordEnabled","getMasterPasswordPoliciesForInvitedUsers","SetPasswordRequest","setPassword","onSetPasswordSuccess","getOrganizationKeys","getUserId","fromB64ToArray","userEncKey","encryptedKey","resetRequest","OrganizationUserResetPasswordEnrollmentRequest","resetPasswordKey","putOrganizationUserResetPasswordEnrollment","onSuccessfulChangePassword","setKdfType","setKdfIterations","setEncKey","setEncPrivateKey","VaultTimeoutInputComponent","vaultTimeout","custom","CUSTOM_VALUE","vaultTimeoutPolicy","vaultTimeoutPolicyHours","vaultTimeoutPolicyMinutes","vaultTimeouts","validatorChange","getVaultTimeout","current","max","every","validate","policyError","registerOnValidatorChange","ShareComponent","onSharedCipher","allCollections","filterCollections","cipherView","orgName","find","shareWithServer","canSave","loggingIn","changePasswordRoute","code","codeVerifier","getSsoCodeVerifier","getSsoState","checkState","getOrgIdentifierFromState","redirectUri","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","authorizeUrl","buildAuthorizeUrl","sameWindow","preValidateSso","getIdentityUrl","userIdentifier","getSsoUserIdentifier","orgIdFromState","SsoLogInCredentials","sso","resetMasterPassword","onSuccessfulLoginChangePasswordNavigate","stateSplit","checkStateSplit","BitwardenToast","toastrService","toastPackage","trigger","opacity","transition","animate","BitwardenToastGlobalConfig","DefaultNoComponentGlobalConfig","toastComponent","BitwardenToastModule","static","config","ngModule","providers","provide","TOAST_CONFIG","useValue","default","TwoFactorOptionsComponent","twoFactorService","onProviderSelected","onRecoverSelected","getSupportedProviders","choose","recover","TwoFactorComponent","appIdService","remember","webAuthnReady","webAuthnNewTab","TwoFactorProviders","providerType","TwoFactorProviderType","selectedProviderType","Authenticator","webAuthnSupported","webAuthn","twoFactorEmail","loginRoute","supportsWebAuthn","webAuthnAllow","authing","getProviders","needsLock","WebAuthnIFrame","getDefaultProvider","cleanupWebAuthn","providerData","WebAuthn","authWebAuthn","Duo","OrganizationDuo","DuoWebSDK","iframe","host","sig_request","Signature","submit_callback","sig","Email","sendEmail","stop","start","logInTwoFactor","TokenRequestTwoFactor","doToast","emailPromise","TwoFactorEmailRequest","deviceIdentifier","getAppId","postTwoFactorEmail","cleanup","authingWithPassword","authingWithSso","authingWithApiKey","UpdatePasswordComponent","setOrganizationInvitation","currentMasterPassword","VerificationType","MasterPassword","PasswordRequest","newMasterPasswordHash","postPassword","UpdateTempPasswordComponent","newKey","newPasswordHash","newEncKey","UpdateTempPasswordRequest","masterPasswordHint","putUpdateTempPassword","UserVerificationComponent","disableRequestOTP","sentCode","processChanges","requestOTP","obj","OTP","NG_VALUE_ACCESSOR","multi","useExisting","A11yInvalidDirective","formControlDirective","sub","statusChanges","unsubscribe","A11yTitleDirective","renderer","appA11yTitle","hasAttribute","ApiActionDirective","appApiAction","captchaRequired","AutofocusDirective","appAutofocus","condition","autofocus","isMobileBrowser","BlurClickDirective","onClick","blur","FallbackSrcDirective","onError","appFallbackSrc","InputStripSpacesDirective","onInput","InputVerbatimDirective","appInputVerbatim","disableComplete","NotPremiumDirective","templateRef","viewContainer","createEmbeddedView","SelectCopyDirective","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","substring","StopClickDirective","$event","preventDefault","StopPropDirective","stopPropagation","TrueFalseValueDirective","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","ev","target","setProperty","forwardRef","routerState","authStatus","getAuthStatus","AuthenticationStatus","LoggedOut","Locked","createUrlTree","promptBiometric","getConvertAccountRequired","LockGuard","homepage","loginpage","redirectUrl","UnauthGuard","CreditCardNumberPipe","DatePipe","I18nPipe","SearchPipe","UserNamePipe","forRoot","maxOpened","autoDismiss","closeButton","CollectionFilterComponent","hide","onNodeCollapseStateChange","onFilterChange","collectionsGrouping","collectionNodes","fullList","nestedCollections","nestedList","isCollapsed","node","collapsedFilterNodes","collection","activeFilter","resetFilter","selectedCollectionId","toggleCollapse","FolderFilterComponent","onAddFolder","onEditFolder","foldersGrouping","folderNodes","nestedFolders","selectedFolder","selectedFolderId","addFolder","editFolder","OrganizationFilterComponent","organizationGrouping","displayMode","activePersonalOwnershipPolicy","activeSingleOrganizationPolicy","hasActiveFilter","myVaultOnly","selectedOrganizationId","applyOrganizationFilter","refreshCollectionsAndFolders","applyMyVaultFilter","clearFilter","VaultFilter","StatusFilterComponent","hideFavorites","hideTrash","cipherStatus","TypeFilterComponent","selectedCipherType","typesNode","cipherTypeEnum","assign","hasId","resetOrganization","VaultFilterComponent","vaultFilterService","hideFolders","hideCollections","hideOrganizations","isLoaded","displayCollections","buildCollapsedFilterNodes","buildOrganizations","checkForPersonalOwnershipPolicy","checkForSingleOrganizationPolicy","buildFolders","initCollections","buildCollections","toggleFilterNodeCollapseState","storeCollapsedFilterNodes","reloadCollectionsAndFolders","pruneInvalidatedFilterSelections","reloadOrganizations","pruneInvalidFolderSelection","pruneInvalidCollectionSelection","VaultFilterService","setCollapsedGroupings","Array","from","Set","getCollapsedGroupings","storedFolders","orgCiphers","oc","getAllNested","DynamicTreeNode","storedCollections","ColorPasswordPipe","generateTemplate","templateGenerator","passwordArray","colorizedPassword","isSpecial","numberFormats","cardLength","blocks","Other","creditCardNumber","rules","matchingRule","chunks","total","EllipsisPipe","limit","completeWords","ellipsis","lastIndexOf","p1","p2","p3","items","prop1","prop2","prop3","BroadcasterService","WINDOW","InjectionToken","SECURE_STORAGE","STATE_FACTORY","STATE_SERVICE_USE_CACHE","LOGOUT_CALLBACK","LOCKED_CALLBACK","CLIENT_TYPE","LOCALES_DIRECTORY","SYSTEM_LANGUAGE","JslibServicesModule","ValidationService","ModalService","LOCALE_ID","useFactory","translationLocale","deps","I18nService","navigator","language","StateFactory","GlobalState","Account","MessagingService","AppIdService","useClass","StorageService","AuditService","CryptoFunctionService","ApiService","AuthService","CryptoService","TokenService","PlatformUtilsService","LogService","KeyConnectorService","EnvironmentService","StateService","TwoFactorService","CipherService","settingsService","fileUploadService","injector","SearchService","SettingsService","FileUploadService","Injector","FolderService","ConsoleLogService","CollectionService","TotpService","PasswordGenerationService","PolicyService","UsernameGenerationService","SyncService","SendService","OrganizationService","ProviderService","VaultTimeoutService","StateMigrationService","ExportService","NotificationsService","WebCryptoFunctionService","EventService","UserVerificationService","PasswordRepromptService","ModalConfig","allowMultipleModals","applicationRef","modalList","factoryResolvers","addEventListener","modalCount","topModal","viewContainerRef","modalComponentRef","openInternal","insert","hostView","open","attachToDom","createModalComponent","attachView","domElem","rootNodes","detachView","pop","setupHandlers","backdrop","modalEl","dialogEl","zIndex","prepend","modals","querySelectorAll","closeElement","ModalRef","WeakMap","ModalInjector","protectedFields","showPasswordPrompt","ref","defaultErrorMessage","validationErrors","getAllMessages","dirty","valueGetter","caseInsensitive","notAllowedValue","controlValue","indexedEntityId","AuthenticationType","ClientType","DeviceType","EmergencyAccessStatusType","EmergencyAccessType","EncryptionType","FileUploadType","HtmlStorageLocation","featuredImportOptions","regularImportOptions","KdfType","PBKDF2_SHA256","SEND_KDF_ITERATIONS","LoginLinkedId","CardLinkedId","IdentityLinkedId","LogLevelType","NotificationType","OrganizationApiKeyType","OrganizationConnectionType","OrganizationUserType","PaymentMethodType","PlanSponsorshipType","ProductType","StateVersion","StorageLocation","ThemeType","TransactionType","accountConstructor","args","globalStateConstructor","globalStateFactory","GlobalStateFactory","accountFactory","AccountFactory","createGlobal","createAccount","AscendoCsvImporter","BaseImporter","parse","ImportResult","results","parseCsv","initLoginCipher","notes","getValueOrDefault","val","fieldLower","passwordFieldNames","usernameFieldNames","uriFieldNames","makeUriArray","processKvp","convertToNoteIfNeeded","cleanupCipher","AvastCsvImporter","web","AvastJsonImporter","JSON","logins","custName","note","pwd","loginName","label","cards","cardholderName","holderName","cardNumber","cvv","getCardBrand","month","expMonth","year","expYear","AviraCsvImporter","nameFromUrl","secondary_username","newLineRegex","notesFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","doc","DOMParser","parseFromString","header","parseOptions","splitNewLine","papa","row","warning","parseSingleRowCsv","rowData","parsedRow","loginUri","fixUri","returnArr","hostname","startsWith","defaultValue","cardNum","re","RegExp","test","setCardExpiration","expiration","moveFoldersToCollections","folderRelationships","collectionRelationships","CollectionView","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","parentNode","favorite","processFolder","folderName","folderIndex","hasFolder","processFullName","fullName","nameParts","firstName","lastName","middleName","BitwardenCsvImporter","col","addCollection","collectionIndex","parseInt","console","delimPosition","totp","login_totp","login_username","login_password","login_uri","BitwardenJsonImporter","passwordProtected","missingPassword","errorMessage","encrypted","parseEncrypted","parseDecrypted","encKeyValidation_DO_NOT_EDIT","encKeyValidation","groupingsMap","CollectionWithIdExport","toDomain","view","FolderWithIdExport","CipherWithIdExport","passwordHistory","cId","toView","BitwardenPasswordProtectedImporter","parsedData","cannotParseFile","encData","clearTextData","jdoc","salt","kdfType","BlackBerryCsvImporter","grouping","fav","extra","BlurCsvImporter","domain","OfficialProps","ButtercupCsvImporter","URL","processingCustomFields","prop","ChromeCsvImporter","ClipperzHtmlImporter","textarea","entry","currentVersion","property","actionType","labelLower","CodebookCsvImporter","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","_mappedCredentialsColums","_mappedPersonalInfoAsIdentiyColumns","_mappedSecureNoteColumns","DashlaneCsvImporter","parsePersonalInformationRecordAsIdentity","rowKeys","category","parseCredentialsRecord","parsePaymentRecord","parseIdRecord","parsePersonalInformationRecord","parseSecureNoteRecords","otpSecret","importUnmappedFields","account_name","mappedValues","cc_number","expiration_month","expiration_year","account_holder","account_number","licenseNumber","passportNumber","ssn","first_name","middle_name","last_name","item_name","dataRow","phone","phone_number","address1","address","city","postalCode","zip","country","HandledResults","DashlaneJsonImporter","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","pseudo","addressName","addressFull","zipcode","bank","owner","nameProperty","EncryptrCsvImporter","Label","Notes","CVV","expiry","Expiry","expParts","EnpassCsvImporter","firstRow","containsField","fieldValue","fieldName","fieldNameLower","EnpassJsonImporter","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","some","sensitive","uuid","parent_uuid","titlePrefix","tree","FirefoxCsvImporter","FSecureFskImporter","service","creditNumber","creditCvv","creditExpiry","GnomeJsonImporter","keyRing","display_name","attributes","username_value","attr","ImportError","passwordRequired","NotesHeader","ApplicationsHeader","WebsitesHeader","Delimiter","KasperskyTxtImporter","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","n","w","nameKey","itemComment","itemCommentKey","l","colonIndex","KeePass2XmlImporter","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","KeePassXCsvImporter","Title","Group","KeeperCsvImporter","LastPassCsvImporter","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","company","address2","address3","charAt","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","Number","monthString","getMonth","isNaN","Company","State","Country","dataObj","processingNotes","extraPart","LogMeOnceCsvImporter","MeldiumCsvImporter","DisplayName","UserName","Url","MSecureCsvImporter","mappedBaseColumns","_mappedUserAccountColumns","_mappedCreditCardColumns","_mappedIdentityColumns","_mappedIdCardColumns","_mappedTwoFaColumns","_mappedUserNoteColumns","MykiCsvImporter","nickname","additionalInfo","twofaSecret","authToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","idType","idName","idCountry","idNumber","content","NordPassCsvImporter","record","recordType","evaluateType","cardholdername","cardnumber","cvc","expirydate","full_name","importRecord","lowerProperty","OnePassword1PifImporter","line","trashed","hmac","processStandardItem","processWinOpVaultItem","overview","URLs","details","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","location","secureContents","maxSize","time","b","ph","PasswordHistoryView","lastUsedDate","designationKey","valueKey","k","toUTCString","fieldDesignation","street","OnePassword1PuxImporter","accounts","vaults","vault","categoryUuid","CategoryEnum","Database","WirelessRouter","Server","API_Credential","CreditCard","BankAccount","SoftwareLicense","EmailAccount","MedicalRecord","DriversLicense","OutdoorLicense","Membership","Passport","RewardsProgram","SocialSecurityNumber","favIndex","processOverview","processLoginFields","processDetails","processSections","tags","capitalize","inputString","loginFields","loginField","designation","LoginFieldTypeEnum","CheckBox","parseSectionFields","anyField","getFieldName","extractValue","fillLogin","fillApiCredentials","fillCreditCard","fillBankAccount","fillIdentity","fillDriversLicense","fillOutdoorLicense","fillMembership","fillPassport","fillRewardsProgram","fillSSN","email_address","guarded","date","monthYear","historyItems","IgnoredProperties","OnePasswordCsvImporter","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","func","bind","readableDate","OnePasswordMacCsvImporter","OnePasswordWinCsvImporter","setIdentityAddress","expSplit","PadlockCsvImporter","headers","v","tag","PassKeepCsvImporter","getValue","PassmanJsonImporter","otp","custom_fields","customField","field_type","PasspackCsvImporter","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","PasswordAgentCsvImporter","newVersion","altFormat","PasswordBossJsonImporter","login_url","identifiers","valObj","expDate","getFullYear","cf","PasswordDragonXmlImporter","records","categoryText","accountName","tagName","PasswordSafeXmlImporter","passwordSafe","notesDelimiter","getAttribute","groupText","PasswordWalletTxtImporter","RememBearCsvImporter","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","RoboFormCsvImporter","Folder","Name","Pwd","Rf_fields","SafariCsvImporter","OTPAuth","SafeInCloudXmlImporter","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","candidates","choice","SaferPassCsvImporter","SecureSafeCsvImporter","Comment","SplashIdCsvImporter","parseFieldsToNotes","startIndex","StickyPasswordXmlImporter","loginNodes","loginNode","accountId","usernameText","passwordText","titleText","linkText","notesText","groupId","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","TrueKeyCsvImporter","memo","kind","expiryDate","document_content","UpmCsvImporter","YotiCsvImporter","ZohoVaultCsvImporter","ChamberName","parseData","SecretData","CustomData","IFrameComponent","successCallback","errorCallback","infoCallback","parsedMessage","siteKey","initComponent","createParams","locale","iframeId","parseFunction","parseMessage","connectorLink","sendMessage","contentWindow","postMessage","base64Encode","String","fromCharCode","removeEventListener","version","URLSearchParams","stringify","href","validMessage","origin","LinkedMetadata","propertyKey","_i18nKey","prototype","ApiLogInStrategy","LogInStrategy","tokenService","tokenResponse","apiUseKeyConnector","getKeyConnectorUrl","getAndSetKey","tokenRequest","ApiTokenRequest","buildTwoFactor","buildDeviceRequest","startLogIn","saveAccountInformation","setApiKeyClientId","setApiKeyClientSecret","captchaBypassToken","twoFactor","captchaResponse","setTwoFactor","clearSelectedProvider","postIdentityToken","IdentityTwoFactorResponse","processTwoFactorResponse","IdentityCaptchaResponse","processCaptchaResponse","IdentityTokenResponse","processTokenResponse","appId","DeviceRequest","userProvidedTwoFactor","storedTwoFactorToken","getTwoFactorToken","Remember","accountInformation","decodeToken","accessToken","addAccount","profile","AccountProfile","hasPremiumPersonally","premium","tokens","AccountTokens","refreshToken","AuthResult","twoFactorToken","setTwoFactorToken","privateKey","createKeyPairForOldAccount","twoFactorProviders","twoFactorProviders2","setProviders","postAccountKeys","PasswordLogInStrategy","localHashedPassword","makePreloginKey","PasswordTokenRequest","SsoLogInStrategy","newSsoUser","convertNewSsoUserToKeyConnector","SsoTokenRequest","cacheKey","descriptor","originalMethod","caches","getCache","argsCacheKey","onFinally","apply","catch","err","ServiceUtils","nodeTree","partIndex","delimiter","end","partName","TreeNode","nestedTraverse","newPartName","getTreeNodeObject","throttleKey","allThrottles","throttles","getThrottles","argsThrottleKey","queue","reject","exec","nodeURL","inited","process","release","isMobile","isAppleMobileBrowser","isAppleMobile","global","g","Uint8Array","Buffer","binaryString","atob","bytes","fromUrlB64ToB64","strUtf8","arr","binary","byteLength","fromB64toUrlB64","fromBufferToB64","b64Str","encodedString","decodeURIComponent","escape","call","urlB64Str","output","fromB64ToUtf8","utfStr","fromUtf8ToArray","random","uriString","getUrl","httpUrl","tldEndingRegex","getUrlObject","tldjs","isValid","validIpAddress","urlDomain","getDomain","pair","collator","compare","localeCompare","source","ipString","mobile","userAgent","vendor","opera","hasProtocol","anchor","btnText","allow","EEFLongWordList","BillingSyncConfigApi","BaseResponse","billingSyncKey","getResponseProperty","CardApi","FieldApi","IdentityApi","LoginApi","passwordRevisionDate","autofillOnPageLoad","LoginUriApi","accessEventLogs","accessImportExport","accessReports","manageAllCollections","manageAssignedCollections","createNewCollections","editAnyCollection","deleteAnyCollection","editAssignedCollections","deleteAssignedCollections","manageCiphers","manageGroups","manageSso","managePolicies","manageUsers","manageResetPassword","SecureNoteApi","SendFileApi","sizeName","SendTextApi","hidden","idpDisableOutboundLogoutRequests","api","viewPassword","revisionDate","deletedDate","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","PasswordHistoryData","externalId","LoginUriData","usePolicies","useGroups","useDirectory","use2fa","useApi","useSso","useKeyConnector","useResetPassword","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","resetPasswordEnrolled","hasPublicAndPrivateKeys","familySponsorshipFriendlyName","familySponsorshipAvailable","planProductType","familySponsorshipLastSyncDate","familySponsorshipValidUntil","familySponsorshipToDelete","maxAccessCount","accessCount","hideEmail","SendTextData","SendFileData","EncryptionPair","DataEncryptionPair","AccountData","policies","passwordGenerationHistory","AccountKeys","cryptoSymmetricKey","organizationKeys","providerKeys","AccountSettings","environmentUrls","EnvironmentUrls","pinProtected","vaultTimeoutAction","settings","Attachment","buildDomainModel","decryptObj","AttachmentView","containerService","bitwardenContainerService","getCryptoService","decValue","decryptToBytes","SymmetricCryptoKey","toAttachmentData","buildDataModel","requiresCaptcha","toCardData","Cipher","localData","Field","model","promise","decAttachment","decField","decPh","toCipherData","CipherData","toLoginData","toSecureNoteData","toIdentityData","toFieldData","toPasswordHistoryData","Collection","hidePasswords","notEncList","objProp","notEncStringList","viewModel","promises","self","theProp","mapProp","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","base","icons","notifications","webVault","keyConnector","theme","System","WindowState","stateVersion","One","Sso","Api","LoginUri","toLoginUriData","MasterPasswordPolicyOptions","minLength","requireUpper","requireLower","requireNumbers","requireSpecial","isProviderUser","canAccess","Owner","isManager","Manager","Admin","isAdmin","canAccessImportExport","canAccessReports","canCreateNewCollections","canEditAnyCollection","canDeleteAnyCollection","canViewAllCollections","canEditAssignedCollections","canDeleteAssignedCollections","canViewAssignedCollections","canManageGroups","canManageSso","canManagePolicies","canManageUsersPassword","isExemptFromPolicies","hasAnyPermission","AccessImportExport","AccessReports","CreateNewCollections","EditAnyCollection","DeleteAnyCollection","EditAssignedCollections","DeleteAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsersPassword","ManageBilling","canManageBilling","hasProvider","PasswordGeneratorPolicyOptions","defaultType","useUppercase","useLowercase","useNumbers","numberCount","useSpecial","specialCount","minNumberWords","includeNumber","inEffect","Policy","canCreateOrganizations","ResetPasswordPolicyOptions","autoEnrollEnabled","Send","SendText","SendFile","cryptoKey","makeSendKey","SendAccess","creatorIdentifier","SendAccessView","comparator","sortedCiphersByUrl","timeouts","isCached","addCiphers","Ciphers","resetTimer","getLastUsed","getLastLaunched","getNext","updateLastUsedIndex","lastUsedIndex","lastLaunched","y","valueOf","getNextIndex","globals","authenticatedAccounts","accountActivity","macKey","keyB64","encKeyB64","macKeyB64","CardExport","req","CipherExport","FieldExport","LoginExport","SecureNoteExport","IdentityExport","build","CollectionExport","humanReadableMessage","appIcon","appName","userName","userEmail","ip","installationId","FolderExport","LoginUriExport","orgIdentifier","ids","CipherWithIdRequest","CipherRequest","lastKnownRevisionDate","attachments2","attachmentRequest","AttachmentRequest","groups","getDevice","getDeviceString","pushToken","EmailRequest","EmailTokenRequest","FolderWithIdRequest","FolderRequest","TokenRequest","device","toIdentityToken","scope","grant_type","client_secret","alterIdentityTokenHeaders","fromUtf8ToUrlB64","code_verifier","redirect_uri","client_id","deviceType","deviceName","twoFactorProvider","twoFactorRemember","KdfRequest","encryptedPrivateKey","OrganizationApiKeyRequest","OrganizationKeysRequest","seatAdjustment","maxAutoscaleSeats","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","groupIds","PaymentRequest","clientOwnerEmail","organizationCreateRequest","fileLength","SendWithIdRequest","SendRequest","TwoFactorProviderRequest","TwoFactorRecoveryRequest","culture","OrganizationUserResetPasswordRequest","UpdateTwoFactorAuthenticatorRequest","UpdateTwoFactorDuoRequest","UpdateTwoFactorEmailRequest","UpdateTwoFactorWebAuthnDeleteRequest","UpdateTwoFactorWebAuthnRequest","UpdateTwoFactorYubioOtpRequest","ApiKeyResponse","apiKey","AttachmentResponse","AttachmentUploadDataResponse","fileUploadType","cipherResponse","cipherMiniResponse","CipherResponse","propertyName","exactName","otherCasePropertyName","BillingHistoryResponse","invoices","transactions","BillingTransactionResponse","BillingInvoiceResponse","hasNoHistory","BillingPaymentResponse","balance","paymentSource","BillingSourceResponse","BillingResponse","cardBrand","needsVerification","pdfUrl","paid","amount","createdDate","refunded","partiallyRefunded","refundedAmount","paymentMethodType","BreachAccountResponse","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","PasswordHistoryResponse","CollectionResponse","SelectionReadOnlyResponse","DomainsResponse","globalEquivalentDomains","equivalentDomains","d","GlobalDomainResponse","EmergencyAccessGranteeDetailsResponse","granteeId","waitTimeDays","creationDate","EmergencyAccessGrantorDetailsResponse","grantorId","EmergencyAccessTakeoverResponse","keyEncrypted","EmergencyAccessViewResponse","identityResponse","errorModel","responseErrorModel","HCaptcha_SiteKey","messages","lastSep","EventResponse","collectionId","policyId","providerOrganizationId","actingUserId","ipAddress","FolderResponse","domains","excluded","GroupResponse","accessAll","access_token","expiresIn","expires_in","refresh_token","tokenType","token_type","KeyConnectorUserKeyResponse","KeysResponse","ListResponse","dr","NotificationResponse","contextId","payload","SyncCipherCreate","SyncCipherDelete","SyncCipherUpdate","SyncLoginDelete","SyncCipherNotification","SyncFolderCreate","SyncFolderDelete","SyncFolderUpdate","SyncFolderNotification","SyncVault","SyncCiphers","SyncOrgKeys","SyncSettings","LogOut","UserNotification","SyncSendCreate","SyncSendUpdate","SyncSendDelete","SyncSendNotification","OrganizationSsoResponse","SsoUrls","OrganizationApiKeyInformationResponse","keyType","OrganizationAutoEnrollStatusResponse","OrganizationConnectionResponse","rawConfig","OrganizationKeysResponse","OrganizationResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","plan","PlanResponse","OrganizationSponsorshipSyncStatusResponse","lastSyncDate","OrganizationSubscriptionResponse","storageName","storageGb","subscription","BillingSubscriptionResponse","upcomingInvoice","BillingSubscriptionUpcomingInvoiceResponse","OrganizationUserBulkPublicKeyResponse","OrganizationUserBulkResponse","OrganizationUserResponse","twoFactorEnabled","OrganizationUserResetPasswordDetailsReponse","PaymentResponse","userProfile","ProfileResponse","paymentIntentClientSecret","product","isAnnual","nameLocalizationKey","descriptionLocalizationKey","canBeUsedByBusiness","baseSeats","baseStorageGb","maxUsers","hasAdditionalSeatsOption","maxAdditionalSeats","hasAdditionalStorageOption","maxAdditionalStorage","hasPremiumAccessOption","trialPeriodDays","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","hasTotp","has2fa","hasApi","hasSso","hasResetPassword","upgradeSortOrder","displaySortOrder","legacyYear","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","basePrice","seatPrice","additionalStoragePricePerGb","premiumAccessOptionPrice","PolicyResponse","PreloginResponse","ProfileOrganizationResponse","familySponsorshipLastSyncDateString","familySponsorshipValidUntilString","ProfileProviderOrganizationResponse","ProfileProviderResponse","providerOrganizations","securityStamp","ProviderOrganizationResponse","ProviderResponse","ProviderUserBulkPublicKeyResponse","ProviderUserBulkResponse","ProviderUserResponse","SendAccessResponse","SendFileDownloadDataResponse","SendFileUploadDataResponse","sendResponse","SendResponse","SubscriptionResponse","license","usingInAppPurchase","trialEndDate","periodStartDate","periodEndDate","cancelledDate","cancelAtEndDate","cancelled","BillingSubscriptionItemResponse","quantity","interval","sponsoredSubscriptionItem","SyncResponse","CollectionDetailsResponse","TaxInfoResponse","taxId","taxIdType","line1","line2","TaxRateResponse","rate","TwoFactorAuthenticatorResponse","TwoFactorDuoResponse","secretKey","integrationKey","TwoFactorEmailResponse","TwoFactorProviderResponse","TwoFactorRecoverResponse","TwoFactorWebAuthnResponse","KeyResponse","migrated","ChallengeResponse","attestation","authenticatorSelection","challenge","fromUrlB64ToArray","excludeCredentials","extensions","pubKeyCredParams","rp","TwoFactorYubiKeyResponse","key1","key2","key3","key4","key5","nfc","UserKeyResponse","fileSize","ItemView","_brand","_number","_subTitle","maskedCode","repeat","maskedNumber","subTitle","exp","formatYear","CardholderName","ExpMonth","ExpYear","Code","Brand","hasPasswordHistory","hasAttachments","hasOldAttachments","hasFields","passwordRevisionDisplayDate","linkedFieldValue","linkedFieldI18nKey","showCount","maskedValue","_firstName","_lastName","fullAddress","fullAddressPart2","addressPart2","MiddleName","Address1","Address2","Address3","City","PostalCode","Ssn","PassportNumber","LicenseNumber","FirstName","LastName","FullName","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","getHost","hostnameOrUri","hostOrUri","canLaunch","hasUris","maskedPassword","maskedText","maxAccessCountReached","pendingDelete","View","logoutCallback","customUserAgent","isWebClient","isDesktopClient","IEBrowser","ChromeBrowser","EdgeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","UnknownBrowser","VivaldiBrowser","WindowsDesktop","MacOsDesktop","LinuxDesktop","Headers","Accept","identityToken","getClientType","qsStringify","getCredentials","method","responseJson","isJsonResponse","json","TwoFactorProviders2","clearTwoFactorToken","refreshIdentityToken","doAuthRefresh","getProfile","getUserSubscription","getTaxInfo","putProfile","putTaxInfo","postPrelogin","isDev","getApiUrl","postEmailToken","postEmail","postSetKeyConnectorKey","postSecurityStamp","deleteAccount","getAccountRevisionDate","postPremium","postIapCheck","postReinstatePremium","postCancelPremium","postAccountStorage","postAccountPayment","postAccountLicense","postAccountKey","postAccountVerifyEmail","postAccountVerifyEmailToken","postAccountRecoverDelete","postAccountRecoverDeleteToken","postAccountKdf","deleteSsoUser","postUserApiKey","postUserRotateApiKey","postAccountRequestOTP","postAccountVerifyOTP","postConvertToKeyConnector","getUserBillingHistory","getUserBillingPayment","getFolder","postFolder","putFolder","deleteFolder","getSend","postSendAccess","apiUrl","getSendFileDownloadData","getSends","postSend","postFileTypeSend","renewSendFileUploadUrl","fileId","postSendFile","postSendFileLegacy","putSend","putSendRemovePassword","deleteSend","getCipher","getCipherAdmin","getCiphersOrganization","postCipher","postCipherCreate","postCipherAdmin","putCipher","putCipherAdmin","deleteCipherAdmin","deleteManyCiphers","deleteManyCiphersAdmin","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","putCipherCollectionsAdmin","postPurgeCiphers","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteCipherAdmin","putDeleteManyCiphers","putDeleteManyCiphersAdmin","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","postCipherAttachmentLegacy","postCipherAttachmentAdminLegacy","deleteCipherAttachmentAdmin","postShareCipherAttachment","renewAttachmentUploadUrl","postAttachmentFile","getCollectionDetails","CollectionGroupDetailsResponse","getUserCollections","getCollections","getCollectionUsers","postCollection","putCollection","putCollectionUsers","deleteCollection","deleteCollectionUser","getGroupDetails","GroupDetailsResponse","getGroups","getGroupUsers","postGroup","putGroup","putGroupUsers","deleteGroup","deleteGroupUser","getPolicy","getPolicies","getPoliciesByToken","getPoliciesByInvitedUser","putPolicy","getOrganizationUser","OrganizationUserDetailsResponse","getOrganizationUserGroups","getOrganizationUsers","OrganizationUserUserDetailsResponse","getOrganizationUserResetPasswordDetails","postOrganizationUserInvite","postOrganizationUserReinvite","postManyOrganizationUserReinvite","postOrganizationUserAccept","postOrganizationUserConfirm","postOrganizationUsersPublicKey","postOrganizationUserBulkConfirm","putOrganizationUser","putOrganizationUserGroups","putOrganizationUserResetPassword","deleteOrganizationUser","deleteManyOrganizationUsers","getPlans","postImportDirectory","postPublicImportDirectory","getTaxRates","getSettingsDomains","putSettingsDomains","getSync","getTwoFactorProviders","getTwoFactorOrganizationProviders","getTwoFactorAuthenticator","getTwoFactorEmail","getTwoFactorDuo","getTwoFactorOrganizationDuo","getTwoFactorYubiKey","getTwoFactorWebAuthn","getTwoFactorWebAuthnChallenge","getTwoFactorRecover","putTwoFactorAuthenticator","putTwoFactorEmail","putTwoFactorDuo","putTwoFactorOrganizationDuo","putTwoFactorYubiKey","putTwoFactorWebAuthn","deviceResponse","rawId","getClientExtensionResults","AttestationObject","attestationObject","clientDataJson","clientDataJSON","deleteTwoFactorWebAuthn","putTwoFactorDisable","putTwoFactorOrganizationDisable","postTwoFactorRecover","postTwoFactorEmailSetup","getEmergencyAccessTrusted","getEmergencyAccessGranted","getEmergencyAccess","getEmergencyGrantorPolicies","putEmergencyAccess","deleteEmergencyAccess","postEmergencyAccessInvite","postEmergencyAccessReinvite","postEmergencyAccessAccept","postEmergencyAccessConfirm","postEmergencyAccessInitiate","postEmergencyAccessApprove","postEmergencyAccessReject","postEmergencyAccessTakeover","postEmergencyAccessPassword","postEmergencyAccessView","getOrganizationBilling","getOrganizationSubscription","getCloudCommunicationsEnabled","getOrganizationConnection","createOrganizationConnection","updateOrganizationConnection","organizationConnectionId","deleteOrganizationConnection","getOrganizationLicense","getOrganizationTaxInfo","postOrganization","putOrganization","putOrganizationTaxInfo","postOrganizationLicense","postOrganizationLicenseUpdate","postOrganizationApiKey","getOrganizationApiKeyInformation","postOrganizationRotateApiKey","postOrganizationUpgrade","postOrganizationUpdateSubscription","postOrganizationSeat","postOrganizationStorage","postOrganizationPayment","postOrganizationVerifyBank","postOrganizationCancel","postOrganizationReinstate","deleteOrganization","postOrganizationKeys","ProviderUserUserDetailsResponse","ProviderOrganizationOrganizationDetailsResponse","postProviderCreateOrganization","getEvents","addEventParameters","getEventsCipher","getEventsOrganization","getEventsOrganizationUser","getEventsProviderUser","postEventsCollect","authHeader","getActiveBearerToken","Authorization","getEventsUrl","getUserPublicKey","getHibpBreach","postBitPayInvoice","postSetupPayment","getUserKeyFromKeyConnector","handleError","postUserKeyToKeyConnector","getToken","tokenNeedsRefresh","getApplicationVersion","nativeFetch","postCreateSponsorship","sponsoredOrgId","getSponsorshipSyncStatus","deleteRevokeSponsorship","sponsoringOrganizationId","deleteRemoveSponsorship","sponsoringOrgId","postPreValidateSponsorshipToken","sponsorshipToken","postRedeemSponsorship","postResendSponsorshipOffer","getRefreshToken","doRefreshToken","getClientId","getClientSecret","doApiTokenRefresh","decodedToken","setTokens","deviceRequest","setToken","hasResponse","alterHeaders","requestUrl","requestInit","FormData","tokenError","isTextResponse","Message","hasBaseUrl","typeHeader","storageService","makeAndGetAppId","getAnonymousAppId","existingId","htmlStorageLocation","Local","guid","newGuid","save","hashStart","hashEnding","breachedAccounts","throttle","logInStrategy","strategy","clearState","saveState","callback","getIsAuthenticated","Auto","getEverBeenUnlocked","hasKeyInMemory","Unlocked","preloginResponse","PreloginRequest","startSessionTimeout","clearSessionTimeout","sessionTimeout","upload","renewalCallback","azureUploadBlob","azureUploadBlocks","urlObject","searchParams","blobResponse","baseUrl","blockSize","getMaxBlockSize","blockIndex","numBlocks","ceil","blocksStaged","renewUrlIfNecessary","blockUrl","blockId","encodedBlockId","blockData","blockHeaders","blockRequest","blockResponse","blockListUrl","blockListXml","utfBlockId","fromUtf8ToB64","blockIdList","xml","Version","day","compareTo","encryptedFileName","encryptedFileData","apiCall","fd","blob","Blob","filepath","contentType","subscribers","messageCallback","DomainMatchBlacklist","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","getDecryptedCipherCache","getDecryptedCiphers","setDecryptedCipherCache","setDecryptedCiphers","clearIndex","indexCiphers","clearCache","clearDecryptedCiphersState","originalCipher","existingCipher","existingHiddenFields","hiddenFields","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encField","encryptField","fieldModel","phModels","encPhs","encPh","encryptPasswordHistory","phModel","getEncryptedCiphers","getLocalData","decCiphers","hasKey","getLocaleSortingFunction","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","eqDomain","matchingDomains","getDefaultUriMatch","domainUrlHost","urlHost","getAllFromApiForOrganization","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedDate","ciphersLocalData","setLocalData","decryptedCipherCache","cached","updateLastLaunchedDate","saveNeverDomain","getNeverDomains","setNeverDomains","CipherCreateRequest","upsert","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","shareManyWithServer","encCiphers","CipherBulkShareRequest","unencryptedFile","reader","FileReader","readAsArrayBuffer","onload","evt","cData","onerror","filename","encFileName","dataEncKey","encryptToBytes","adminRequest","uploadDataResponse","uploadCipherAttachment","legacyServerAttachmentFileUpload","CipherCollectionsRequest","setEncryptedCiphers","clearEncryptedCiphersState","moveManyWithServer","CipherBulkMoveRequest","deleteManyWithServer","CipherBulkDeleteRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","softDeleteManyWithServer","clearDeletedDate","restoreManyWithServer","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","autofillOnPageLoadDefault","getAutoFillOnPageLoadDefault","clearSortedCiphers","sequentialize","setDecryptedCollections","decryptMany","decCollections","getEncryptedCollections","decryptedCollections","getDecryptedCollections","nodes","collectionCopy","getNested","CollectionData","setEncryptedCollections","timersMap","debug","write","Debug","Info","Warning","level","log","warn","hrtime","timeEnd","elapsed","attachToWindow","attachToGlobal","setCryptoMasterKey","storeKey","keyHash","setDecryptedCryptoSymmetricKey","setEncryptedCryptoSymmetricKey","encPrivateKey","setDecryptedPrivateKey","setEncryptedPrivateKey","setOrgKeys","providerOrgs","orgKeys","providerOrg","setDecryptedOrganizationKeys","setEncryptedOrganizationKeys","setProviderKeys","setDecryptedProviderKeys","setEncryptedProviderKeys","keySuffix","inMemoryKey","getCryptoMasterKey","symmetricKey","getKeyFromStorage","retrieveKeyFromStorage","validateKey","clearSecretKeyStore","storedKeyHash","getEncKeyHelper","getPublicKey","inMemoryPublicKey","getPrivateKey","rsaExtractPublicKey","setPublicKey","decryptedPrivateKey","getDecryptedPrivateKey","getEncryptedPrivateKey","getFingerprint","keyFingerprint","userFingerprint","hkdfExpand","hashPhrase","getOrgKeys","decryptedOrganizationKeys","getDecryptedOrganizationKeys","encOrgKeys","getEncryptedOrganizationKeys","rsaDecrypt","getProviderKeys","decryptedProviderKeys","getDecryptedProviderKeys","encProviderKeys","getEncryptedProviderKeys","getCryptoMasterKeyAuto","hasCryptoMasterKeyBiometric","getEncryptedCryptoSymmetricKey","clearKey","clearSecretStorage","setLegacyEtmKey","clearStoredKey","setCryptoMasterKeyAuto","setCryptoMasterKeyBiometric","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","keysToClear","clearOrgKeys","clearProviderKeys","clearPinProtectedKey","setEncryptedPinProtected","clearKeys","toggleKey","pbkdf2","protectedKeyCs","pinProtectedKey","getEncryptedPinProtected","decKey","shareKey","randomBytes","keyPair","rsaGenerateKeyPair","stretchKey","keyMaterial","sendKey","hkdf","hashPurpose","iterations","theKey","getKeyForEncryption","buildEncKey","plainValue","plainBuf","encObj","aesEncrypt","encValue","macLen","encBytes","EncArrayBuffer","privateKeyValue","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","encString","decipher","aesDecryptToBytes","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","log2","bytesNeeded","mask","pow","byteArray","shouldStoreKey","getBiometricUnlock","getCryptoMasterKeyBiometric","EncryptedObject","macData","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","computedMac","hmacFast","compareFast","aesDecryptFast","aesDecrypt","legacyKey","getLegacyEtmKey","minimumEntropy","entropyPerWord","numWords","hashArr","phrase","hashNumber","bigInt","fromArray","remainder","mod","divide","encKeyEnc","getDecryptedCryptoSymmetricKey","decEncKey","encKeyCipher","symmetricCryptoKey","urlsSubject","setUrlsFromStorage","getNotificationsUrl","notificationsUrl","identityUrl","eventsUrl","getEnvironmentUrls","envUrls","setUrls","formatUrl","setEnvironmentUrls","getUrls","checkOnInterval","uploadEvents","setInterval","uploadImmediately","orgIds","eventCollection","getEventCollection","EventData","setEventCollection","EventRequest","clearEvents","getOrganizationExport","getEncryptedExport","getDecryptedExport","getPasswordProtectedExport","clearText","encText","jsonDoc","getOrganizationEncryptedExport","getOrganizationDecryptedExport","getEventExport","unparse","EventExport","padNumber","getHours","getMinutes","getSeconds","decFolders","exportCiphers","buildCommonCipher","collectionPromises","decCol","cipherPromises","decCipher","collectionsMap","num","padCharacter","numString","azureFileUploadService","AzureFileUploadService","bitwardenFileUploadService","BitwardenFileUploadService","uploadSendFile","uploadData","Direct","Azure","setDecryptedFolders","getEncryptedFolders","decryptedFolders","getDecryptedFolders","noneFolder","folderCopy","FolderData","setEncryptedFolders","updates","systemLanguage","localesDirectory","getLocalesJson","supportedTranslationLocales","localeNames","defaultMessages","localeMessages","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","getImportOptions","import","importer","fileContents","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporter","getImporterInstance","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","CollectionRequest","itemType","setUsesKeyConnector","userNeedsMigration","loggedInUsingSso","getIsExternal","requiredByOrganization","userIsNotUsingKeyConnector","keyConnectorRequest","KeyConnectorUserKeyRequest","handleKeyConnectorError","userKeyResponse","keyArr","pubKey","privKey","setPasswordRequest","SetKeyConnectorKeyRequest","setConvertAccountRequired","setConvertAccountToKeyConnector","getConvertAccountToKeyConnector","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","on","processNotification","onclose","reconnect","isAuthedAndUnlocked","updateConnection","sync","reconnectFromActivity","disconnectFromInactivity","notification","isAuthenticated","payloadUserId","UserId","myUserId","syncUpsertCipher","syncDeleteCipher","syncUpsertFolder","syncDeleteFolder","syncUpsertSend","syncDeleteSend","getOrganizations","Organization","getByIdentifier","setOrganizations","canManageSponsorships","DefaultOptions","minNumber","minUppercase","minLowercase","minSpecial","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","getPasswordGenerationOptions","setPasswordGenerationOptions","enforcedOptions","enforcePasswordGeneratorPoliciesOnOptions","getPasswordGeneratorPolicyOptions","PasswordGenerator","currentPolicy","useUpper","useLower","minNumbers","getDecryptedPasswordGenerationHistory","getEncryptedPasswordGenerationHistory","decrypted","decryptHistory","setDecryptedPasswordGenerationHistory","currentHistory","matchesPrevious","unshift","GeneratedPasswordHistory","newHistory","encryptHistory","setEncryptedPasswordGenerationHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","array","j","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","setDecryptedPolicies","decryptedPolicies","getDecryptedPolicies","diskPolicies","getEncryptedPolicies","policy","getPolicyForOrganization","policyType","PolicyData","setEncryptedPolicies","mapPoliciesFromToken","newPassword","toLocaleLowerCase","toLocaleUpperCase","getResetPasswordPolicyOptions","resetPasswordPolicyOptions","ResetPassword","policiesResponse","policyFilter","filteredPolicies","policySet","isExcemptFromPolicies","Provider","indexing","searchableMinLength","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","getIndexForSearch","searchCiphersBasic","ciphersMap","searchResults","soWild","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","setDecryptedSends","fileData","passwordHash","ArrayBuffer","encryptFileData","parseFile","getEncryptedSends","decSends","getDecryptedSends","legacyServerSendFileUpload","SendData","setEncryptedSends","Keys","setSettings","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","partialKeys","secureStorageService","stateMigrationService","stateFactory","useAccountCache","BehaviorSubject","createGlobals","hasBeenInited","accountDiskCache","needsMigration","migrate","initAccountState","syncAccountFromDisk","storedActiveUser","activeUserId","pushAccounts","diskAccount","getAccountFromDisk","setAccountEnvironmentUrls","scaffoldNewAccountStorage","setLastActive","setActiveUser","clearDecryptedDataForActiveUser","clean","reconcileOptions","defaultInMemoryOptions","deAuthenticateAccount","dynamicallySetActiveUser","removeAccountFromDisk","removeAccountFromMemory","getAccessToken","getTimeoutBasedStorageOptions","getAccount","setAccessToken","saveAccount","getAlwaysShowDock","getGlobals","defaultOnDiskOptions","alwaysShowDock","setAlwaysShowDock","saveGlobals","getApiKeyClientId","apiKeyClientId","getApiKeyClientSecret","apiKeyClientSecret","getAutoConfirmFingerPrints","autoConfirmFingerPrints","setAutoConfirmFingerprints","autoFillOnPageLoadDefault","setAutoFillOnPageLoadDefault","getBiometricAwaitingAcceptance","biometricAwaitingAcceptance","setBiometricAwaitingAcceptance","getBiometricFingerprintValidated","biometricFingerprintValidated","setBiometricFingerprintValidated","getBiometricLocked","biometricLocked","setBiometricText","biometricUnlock","setBiometricUnlock","getClearClipboard","defaultOnDiskLocalOptions","clearClipboard","setClearClipboard","collapsedGroupings","convertAccountToKeyConnector","cryptoMasterKey","defaultSecureStorageOptions","saveSecureStorageKey","getCryptoMasterKeyB64","setCryptoMasterKeyB64","getDecodedToken","setDecodedToken","defaultUriMatch","setDefaultUriMatch","getDisableAddLoginNotification","disableAddLoginNotification","setDisableAddLoginNotification","getDisableAutoBiometricsPrompt","disableAutoBiometricsPrompt","setDisableAutoBiometricsPrompt","getDisableAutoTotpCopy","disableAutoTotpCopy","setDisableAutoTotpCopy","getDisableBadgeCounter","disableBadgeCounter","setDisableBadgeCounter","getDisableChangedPasswordNotification","disableChangedPasswordNotification","setDisableChangedPasswordNotification","getDisableContextMenuItem","disableContextMenuItem","setDisableContextMenuItem","getDisableGa","disableGa","setDisableGa","getDontShowCardsCurrentTab","dontShowCardsCurrentTab","setDontShowCardsCurrentTab","getDontShowIdentitiesCurrentTab","dontShowIdentitiesCurrentTab","setDontShowIdentitiesCurrentTab","setEmail","setEmailVerified","getEnableAlwaysOnTop","accountPreference","enableAlwaysOnTop","globalPreference","setEnableAlwaysOnTop","getEnableAutoFillOnPageLoad","enableAutoFillOnPageLoad","setEnableAutoFillOnPageLoad","getEnableBiometric","enableBiometrics","setEnableBiometric","getEnableBrowserIntegration","enableBrowserIntegration","setEnableBrowserIntegration","getEnableBrowserIntegrationFingerprint","enableBrowserIntegrationFingerprint","setEnableBrowserIntegrationFingerprint","getEnableCloseToTray","enableCloseToTray","setEnableCloseToTray","getEnableFullWidth","enableFullWidth","setEnableFullWidth","enableGravitars","setEnableGravitars","getEnableMinimizeToTray","enableMinimizeToTray","setEnableMinimizeToTray","getEnableStartToTray","enableStartToTray","setEnableStartToTray","getEnableTray","enableTray","setEnableTray","defaultOnDiskMemoryOptions","getEntityId","setEntityId","getEntityType","entityType","setEntityType","getGlobalEnvironmentUrls","everBeenUnlocked","getForcePasswordReset","setForcePasswordReset","getInstalledVersion","installedVersion","setInstalledVersion","getLastActive","getLastSync","lastSync","setLastSync","legacyEtmKey","getLocale","setLocale","getMainWindowSize","mainWindowSize","setMainWindowSize","getMinimizeOnCopyToClipboard","minimizeOnCopyToClipboard","setMinimizeOnCopyToClipboard","neverDomains","getNoAutoPromptBiometrics","noAutoPromptBiometrics","setNoAutoPromptBiometrics","getNoAutoPromptBiometricsText","noAutoPromptBiometricsText","setNoAutoPromptBiometricsText","getOpenAtLogin","openAtLogin","setOpenAtLogin","organizationInvitation","passwordGenerationOptions","getUsernameGenerationOptions","usernameGenerationOptions","setUsernameGenerationOptions","setProtectedPin","setRefreshToken","rememberedEmail","getSecurityStamp","setSecurityStamp","getSsoOrgIdentifier","ssoOrganizationIdentifier","setSsoOrganizationIdentifier","ssoState","getTheme","setTheme","setVaultTimeout","getVaultTimeoutAction","accountVaultTimeoutAction","globalVaultTimeoutAction","setVaultTimeoutAction","getStateVersion","setStateVersion","getWindow","setWindow","useMemory","storageLocation","getGlobalsFromMemory","useDisk","getGlobalsFromDisk","saveGlobalsToMemory","saveGlobalsToDisk","useSecureStorage","getAccountFromMemory","getUserIdFromMemory","cachedAccount","Memory","Both","Disk","saveAccountToMemory","saveAccountToDisk","deepClone","scaffoldNewAccountLocalStorage","scaffoldNewAccountSessionStorage","scaffoldNewAccountMemoryStorage","storedAccount","pruneInMemoryAccounts","requestedOptions","defaultOptions","Session","getActiveUserIdFromStorage","removeAccountFromLocalStorage","resetAccount","removeAccountFromSessionStorage","removeAccountFromSecureStorage","persistentAccountInformation","timeoutAction","v1Keys","autoConfirmFingerprints","enableBiometric","enableGravatars","encPrivate","lastActive","ssoIdentifier","stamp","usesConnector","v1KeyPrefixes","currentStateVersion","getCurrentStateVersion","Latest","migrateStateFrom1To2","Two","migrateStateFrom2To3","Three","migrateStateFrom3To4","clearV1Keys","clearingUserId","keyPrefix","defaultAccount","accountSettings","cryptoMasterKeyAuto","cryptoMasterKeyB64","cryptoMasterKeyBiometric","authenticationStatus","authenticatedUserIds","Four","syncInProgress","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","syncSettings","syncPolicies","isEdit","localFolder","remoteFolder","shouldUpdate","localCipher","checkCollections","remoteCipher","localSend","remoteSend","successfully","OrganizationData","ProviderData","decoded","fromUrlB64ToUtf8","clientIdClientSecret","setClientId","setClientSecret","clearToken","storedToken","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","round","email_verified","getName","getPremium","getIssuer","iss","amr","B32Chars","SteamChars","getCode","period","digits","keyB32","isOtpAuth","isSteamAuth","getQueryParams","digitParams","periodParam","algParam","epoch","timeHex","leftPad","decToHex","timeBytes","fromHexToArray","keyBytes","b32ToBytes","sign","offset","fullCode","trunc","getTimeInterval","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","priority","Yubikey","selectedTwoFactorProviderType","twoFactorProvidersData","supportsDuo","providerPriority","_value","setSelectedProvider","clearProviders","requestClass","alreadyHashed","validateInput","VerifyOTPRequest","wordCapitalize","wordIncludeNumber","forwardedService","forwardedAnonAddyDomain","generateCatchall","generateSubaddress","generateForwarded","generateWord","word","zeroPad","atIndex","emailBeginning","emailEnding","subaddressString","randomString","catchallDomain","startString","forwardedSimpleLoginApiKey","generateSimpleLoginAlias","forwardedAnonAddyApiToken","generateAnonAddyAlias","forwardedFirefoxApiToken","generateFirefoxRelayAlias","charSet","redirect","Authentication","alias","apiToken","websiteNote","generated_for","full_address","lockedCallback","loggedOutCallback","startCheck","checkVaultTimeout","isViewOpen","shouldLock","executeTimeoutAction","lock","allowSoftLock","setVaultTimeoutOptions","action","currentAction","vaultTimeoutSeconds","crypto","subtle","wcLen","passwordBuf","toBuf","pbkdf2Params","toWebCryptoAlgorithm","impKey","importKey","deriveBits","ikm","outputByteSize","hkdfParams","prk","hashLen","infoBuf","infoArr","runningOkmLength","previousT","okm","md","forge","md5","sha1","valueBytes","toByteString","update","fromByteStringToArray","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","jwkPrivateKey","exportKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","fromBufferToByteString","styles","primary","secondary","danger","hoverStyles","BadgeComponent","badgeType","isSpan","nodeName","classes","BadgeModule","defaultIcon","BannerComponent","bannerType","bannerClass","BannerModule","buttonStyles","ButtonComponent","buttonType","block","ButtonModule","defaultI18n","calloutClass","headerClass","CalloutModule","MenuDividerComponent","MenuItemComponent","role","tabIndex","MenuTriggerForDirective","overlay","isOpen","hasPopup","defaultMenuConfig","panelClass","hasBackdrop","backdropClass","scrollStrategy","scrollStrategies","reposition","positionStrategy","position","flexibleConnectedTo","withPositions","originX","originY","overlayX","overlayY","withLockedPosition","withFlexibleDimensions","withPush","toggleMenu","destroyMenu","openMenu","disposeAll","menu","overlayRef","templatePortal","TemplatePortal","attach","closedEventsSub","getClosedEvents","keyDownEventsSub","keydownEvents","keyManager","onKeydown","detachments","escKey","backdropClick","menuClosed","mergeWith","dispose","MenuComponent","ngAfterContentInit","FocusKeyManager","menuItems","withWrap","TemplateRef","MenuModule","AcceptEmergencyComponent","EmergencyAccessAcceptRequest","AcceptOrganizationComponent","OrganizationUserAcceptRequest","performResetPasswordAutoEnroll","policyList","HintComponent","routerService","previousUrl","getPreviousUrl","navigateByUrl","showResetPasswordAutoEnrollWarning","goAfterLogIn","setPreviousUrl","getRememberEmail","resetPasswordPolicy","policiesData","setRememberEmail","RecoverDeleteComponent","DeleteRecoverRequest","RecoverTwoFactorComponent","recoveryCode","showCreateOrgMessage","layout","ReferenceEventRequest","flow","reference","cookie","shift","storedIdentifier","anotherMethod","twoFactorOptionsModal","VerifyEmailTokenComponent","VerifyEmailRequest","VerifyRecoverDeleteComponent","VerifyDeleteRecoverRequest","BroadcasterSubscriptionId","broadcasterService","notificationsService","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","run","command","setFullWidth","NavigationEnd","jq","TwoFactorAuthenticationPolicy","MasterPasswordPolicy","PasswordGeneratorPolicy","SingleOrgPolicy","RequireSsoPolicy","PersonalOwnershipPolicy","DisableSendPolicy","SendOptionsPolicy","ResetPasswordPolicy","idleStateChanged","msg","sanitize","SecurityContext","HTML","enableHtml","trustedHtml","timeOut","dirtyDates","defaultDates","getDefaultDateFilters","appApiPromiseUnfulfilled","dates","parseDates","exportPromise","export","clearExisting","loadAndParseEvents","refreshPromise","morePromise","eventInfo","getEventInfo","EventView","formatDateFilters","statusMap","pagedUsers","allUsers","pagedUsersCount","allCount","invitedCount","acceptedCount","confirmedCount","showConfirmUsers","showBulkConfirmUsers","iterateEnum","checkUser","selectCount","deleteWarningMessage","reinvite","confirm","mapIndex","updateUser","publicKeyResponse","autoConfirm","UserConfirmComponent","confirmModalRef","onConfirmedUser","fingerprint","NestedCheckboxComponent","parentIndeterminate","parentChecked","checkboxes","pascalize","camelToPascalCase","OrganizationSwitcherComponent","activeOrganization","canAccessAdmin","PasswordStrengthComponent","showText","scoreWidth","PremiumBadgeComponent","premiumRequired","HomeGuard","FooterComponent","NavbarComponent","UserLayoutComponent","LooseComponentsModule","SharedModule","VaultFilterModule","OrganizationBadgeModule","PipesModule","GetOrgNameFromIdPipe","registerLocaleData","ToastrModule","LinkSsoComponent","displayText","OrganizationOptionsComponent","allowEnrollmentChanges","showEnrolledStatus","unlinkSso","toggleResetPasswordEnrollment","keyString","toastStringRef","OrganizationVaultFilterComponent","buildAdminCollections","onSearchTextChanged","collectionResponse","collectionDomains","IndividualVaultComponent","IndividualVaultRoutingModule","changeDetectorRef","vaultService","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","trashCleanupWarning","filterComponent","cloneCipher","editCipher","ciphersComponent","editCipherId","queryParamsHandling","isShowingCards","applyVaultFilter","vaultFilter","showAddNew","buildFilter","calculateSearchBarLocalizationString","go","filterSearchText","cipherPassesFilter","editCipherAttachments","madeAttachmentChanges","attachmentsModalRef","shareCipher","shareModalRef","editCipherCollections","collectionsModalRef","folderAddEditModalRef","cipherAddEditModalRef","updateKey","UpdateKeyComponent","updateKeyModalRef","IndividualVaultModule","VaultModule","OrganizationNameBadgeComponent","onOrganizationClicked","profileName","pickTextColorBasedOnBgColor","emitOnOrganizationClicked","OrganizationVaultComponent","OrganizationVaultRoutingModule","firstLoaded","vaultFilterComponent","clearFilters","OrganizationVaultModule","VaultService","root","queryParamMap","canAccessManage","showToolsTab","canAccessTools","canAccessSettings","toolsRoute","publicKeys","fingerprints","statuses","done","excludedUsers","OrganizationUserBulkRequest","OrganizationUserBulkConfirmRequest","CollectionAddEditComponent","onSavedCollection","onDeletedCollection","accessGroups","groupsResponse","check","SelectionReadOnlyRequest","canCreate","pagedCollectionsCount","decryptCollections","assignedCollections","pagedCollections","canEdit","canDelete","removeCollection","EntityUsersComponent","usersModalRef","entityName","onEditedUsers","orgUsersUserIdMap","orgUsersIdMap","organizationUserType","organizationUserStatusType","showSelected","selectedCount","loadUsers","selectedChanged","filterSelected","selections","GroupAddEditComponent","onSavedGroup","onDeletedGroup","GroupRequest","GroupsComponent","pagedGroupsCount","pagedGroups","removeGroup","accessPolicies","accessSso","canResetPassword","orgUseResetPassword","orgHasKeys","orgResetPasswordPolicyEnabled","callingUserType","orgShareKey","OrganizationUserConfirmRequest","allowResetPassword","orgUser","callingUserHasPermission","UserGroupsComponent","groupsModalRef","resetPassword","ResetPasswordComponent","resetPasswordModalRef","onPasswordReset","PoliciesComponent","policyIdFromEvents","orgPolicy","orgPolicies","op","PolicyEditComponent","editModalRef","onSavedPolicy","cdr","factory","policyComponent","policyFormRef","Enabled","loggedOutWarningName","orgSymKey","decPrivateKey","newPasswordStrengthTimeout","User","manageAllCollectionsCheckboxes","manageAssignedCollectionsCheckboxes","customUserTypeSelected","setRequestPermissions","clearPermissions","handleDependentPermissions","OrganizationUserUpdateRequest","OrganizationUserInviteRequest","dontAskAgain","userGroups","ug","OrganizationUserUpdateGroupsRequest","ToolsComponent","ImportComponent","ExposedPasswordsReportComponent","InactiveTwoFactorReportComponent","ReusedPasswordsReportComponent","UnsecuredWebsitesReportComponent","WeakPasswordsReportComponent","TwoFactorSetupComponent","OrganizationBillingComponent","OrganizationSubscriptionComponent","display","PolicyRequest","DisableSendPolicyComponent","MasterPasswordPolicyComponent","showKeyConnectorInfo","passwordScores","PasswordGeneratorPolicyComponent","defaultTypes","PersonalOwnershipPolicyComponent","RequireSso","RequireSsoPolicyComponent","ResetPasswordPolicyComponent","SendOptionsPolicyComponent","SingleOrgPolicyComponent","TwoFactorAuthentication","TwoFactorAuthenticationPolicyComponent","manage","tools","previous","canUseApi","OrganizationUpdateRequest","submitTaxInfo","taxFormPromise","taxInfo","DeleteOrganizationComponent","deleteModalRef","onSuccess","purgeVault","PurgeVaultComponent","purgeModalRef","viewApiKey","ApiKeyComponent","apiKeyModalRef","postKey","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","TaxInfoComponent","AdjustSubscription","onAdjusted","limitSubscription","newSeatCount","currentSeatCount","newMaxSeats","OrganizationSubscriptionUpdateRequest","limitSubscriptionChanged","adjustedSeatTotal","maxSeatTotal","BillingSyncApiKeyComponent","showRotateScreen","BillingSync","keyRevisionDate","hasBillingToken","syncStatus","cancelRotate","rotateToken","dayDiff","date1","date2","diffTime","abs","submitButtonText","showLastSyncText","showAwaitingSyncText","daysBetween","ChangePlanComponent","onChanged","onCanceled","defaultUpgradePlan","defaultUpgradeProduct","Families","CountBasedLocalizationKey","singular","plural","OrganizationContentSummaryItem","localizationKeyOptions","localizationKey","OrganizationContentSummary","totalItemCount","itemCountByType","deleteOrganizationRequestType","organizationContentSummary","buildOrganizationContentSummary","organizationItems","getOrganizationItemCountByType","getOrganizationItemLocalizationKeysByType","DownloadLicenseComponent","onDownloaded","licenseString","ImageSubscriptionHiddenComponent","showAdjustPayment","showAddCredit","transactionType","billing","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","isCreditBalance","creditOrBalance","AppleInApp","GoogleInApp","adjustSeatsAdd","showAdjustSeats","showAdjustSeatAutoscale","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showBillingSyncKey","showDownloadLicense","showChangePlan","userOrg","apiKeyResponse","hasBillingSyncToken","existingBillingSyncConnection","CloudBillingSync","reinstate","reinstatePromise","cancelPromise","changePlan","closeChangePlan","changed","downloadLicense","manageBillingSync","setupBillingSyncModalRef","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","subscriptionAdjusted","adjustStorage","closeStorage","removeSponsorship","removeSponsorshipPromise","manageBillingSyncSelfHosted","billingSyncKeyRef","BillingSyncKeyComponent","billingSyncKeyViewContainerRef","existingConnectionId","setParentConnection","connection","isExpired","subscriptionMarkedForCancel","nextInvoice","storagePercentage","toFixed","storageProgressWidth","billingInterval","storageGbPrice","canAdjustSeats","isSponsoredSubscription","canDownloadLicense","canManageBillingSync","EnterpriseAnnually","EnterpriseMonthly","EnterpriseAnnually2019","EnterpriseMonthly2019","subscriptionDesc","showChangePlanButton","billingSyncSetUp","access2fa","showBilling","duoComp","openModal","duoModalRef","TwoFactorDuoComponent","onUpdated","updateStatus","filterProvider","AcceptFamilySponsorshipComponent","register","FamiliesForEnterpriseSetupComponent","badToken","showNewOrganization","_selectedFamilyOrganizationId","organizationPlansComponent","acceptingSponsorship","onOrganizationCreateSuccess","existingFamilyOrganizations","selectedFamilyOrganizationId","OrganizationSponsorshipRedeemRequest","planSponsorshipType","FamiliesForEnterprise","sponsoredOrganizationId","manageableCiphers","checkAccess","getAllCiphers","canManageCipher","importService","successNavigate","importBlockedByPolicy","upgradeOrganization","totpService","allowOwnershipAssignment","viewOnly","reupload","showFixOldAttachments","onEventsClicked","allCiphers","doNotSaveUrl","AccessComponent","PreferencesComponent","SecurityRoutingModule","DomainRulesComponent","SubscriptionRoutingModule","EmergencyAccessComponent","EmergencyAccessViewComponent","SponsoredFamiliesComponent","ReportsRoutingModule","useHash","paramsInheritanceStrategy","BreachReportComponent","checkedUsername","CipherReportComponent","requiresPaid","hasLoaded","setCiphers","repromptCipher","accessPremium","exposedPasswordMap","exposedPasswordCiphers","exposedCount","services","cipherDocs","load2fa","inactive2faCiphers","docs","serviceData","documentation","additionalDomain","ReportTypes","reports","exposedPasswords","requiresPremium","reusedPasswords","weakPasswords","unsecuredWebsites","inactive2fa","dataBreach","ReportCardComponent","report","hasPremium","bypassSecurityTrustHtml","click","ReportListComponent","ReportsComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","unsecuredCiphers","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","isUserNameNotEmpty","getCacheKey","hasUserName","scoreKey","unavailable","sendText","downloadData","accessRequest","toggleText","keyArray","SendAccessRequest","sendAccess","ControlContainer","NgForm","addSend","editSend","sendAddEditModalRef","toDateTimeLocalString","filterStart","filterEnd","EventOptions","appInfo","getAppInfo","getEventMessage","humanReadableMsg","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_UpdatedTempPassword","User_MigratedKeyToKeyConnector","Cipher_Created","formatCipherId","getShortId","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","formatCollectionId","Collection_Updated","Collection_Deleted","Group_Created","formatGroupId","Group_Updated","Group_Deleted","OrganizationUser_Invited","formatOrgUserId","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","OrganizationUser_ResetPassword_Enroll","OrganizationUser_ResetPassword_Withdraw","OrganizationUser_AdminResetPassword","OrganizationUser_ResetSsoLink","OrganizationUser_FirstSsoLogin","Organization_Updated","Organization_PurgedVault","Organization_VaultAccessed","Organization_EnabledSso","Organization_DisabledSso","Organization_EnabledKeyConnector","Organization_DisabledKeyConnector","Organization_SponsorshipsSynced","Policy_Updated","formatPolicyId","ProviderUser_Invited","formatProviderUserId","ProviderUser_Confirmed","ProviderUser_Updated","ProviderUser_Removed","ProviderOrganization_Created","formatProviderOrganizationId","ProviderOrganization_Added","ProviderOrganization_Removed","ProviderOrganization_VaultAccessed","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","shortId","cipherInfo","makeAnchor","innerHTML","pad","norm","InitService","eventLoggingService","htmlEl","documentElement","onDefaultSystemThemeChange","sysTheme","Light","Dark","ContainerService","modalOpen","RouterService","activatedRoute","titleService","currentUrl","child","firstChild","snapshot","rawTitle","updateUrl","newTitle","setTitle","PolicyListService","APP_INITIALIZER","initService","HtmlStorageService","MemoryStorageService","WebPlatformUtilsService","BroadcasterMessagingService","ImportService","showChangeEmail","deauthorizeSessions","DeauthorizeSessionsComponent","deauthModalRef","DeleteAccountComponent","AddCreditComponent","PayPal","onAdded","ppLoading","payPalConfig","ppButtonFormAction","ppButtonBusinessId","creditAmount","ppButtonCustomField","subject","returnUrl","ppButtonFormRef","BitPay","BitPayInvoiceRequest","credit","creditAmountNumber","bitPayUrl","formatAmount","floatAmount","parseFloat","ElementRef","AdjustPaymentComponent","paymentComponent","createPaymentToken","paymentToken","taxInfoComponent","changeCountry","hideBank","changeMethod","PaymentComponent","AdjustStorageComponent","storageAdjustment","StorageRequest","storageGbAdjustment","paymentFailed","handleStripeCardPayment","adjustedStorageTotal","OrganizationConnectionRequest","BillingSyncConfigRequest","deleteConnection","ChangeEmailComponent","tokenSent","showTwoFactorEmailWarning","newEmail","reset","ChangeKdfComponent","kdfOptions","recommendedKdfIterations","rotateEncKey","rotateEncKeyClicked","UpdateKeyRequest","updateEmergencyAccesses","updateAllResetPasswordKeys","emergencyAccess","allowedStatuses","RecoveryInitiated","RecoveryApproved","filteredAccesses","updateRequest","EmergencyAccessUpdateRequest","orgPlansComponent","TeamsAnnually","Teams","Enterprise","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","indexTrackBy","EmergencyAccessAddEditComponent","onDeleted","emergencyAccessType","waitTimes","waitTime","EmergencyAccessInviteRequest","EmergencyAccessAttachmentsComponent","EmergencyAccessConfirmComponent","onConfirmed","EmergencyAccessTakeoverComponent","onDone","takeoverResponse","oldKeyBuffer","oldEncKey","EmergencyAccessPasswordRequest","EmergencyAddEditComponent","viewAttachments","cipherData","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","grantedContacts","contact","doConfirmation","removeGrantee","removeGrantor","requestAccess","approve","takeover","takeoverModalRef","EmergencyAccessConfirmRequest","showFree","showCancel","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","discount","plans","changedOwnedBusiness","createOrganization","selectedPlan","selectedPlanInterval","selectableProducts","validPlans","familyPlan","selectablePlans","additionalStoragePriceMonthly","seatPriceMonthly","additionalStorageTotal","seatTotal","subtotal","subTotal","freeTrial","taxCharges","taxComponent","taxRate","paymentDesc","changedProduct","changedCountry","userHasBlockingSingleOrgPolicy","collectionCt","createSelfHosted","createCloudHosted","updateOrganization","OrganizationUpgradeRequest","additionalStorageGb","billingAddressCountry","billingAddressPostalCode","OrganizationCreateRequest","collectionName","tokenResult","includeTaxId","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","providerRequest","ProviderOrganizationCreateRequest","PaymentMethodComponent","lightInputColor","lightInputPlaceholderColor","darkInputColor","darkInputPlaceholderColor","showMethods","hidePaypal","hideCredit","routing_number","account_holder_name","account_holder_type","currency","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","async","Stripe","elements","setStripeElement","btScript","StripeElementStyle","fontFamily","fontSmoothing","invalid","StripeElementClasses","empty","Credit","head","removeChild","btStylesheet","braintree","dropin","authorization","container","paymentOptionPriority","paypal","buttonStyle","shape","tagline","createErr","requestPaymentMethod","nonce","handleCardSetup","setupIntent","payment_method","createToken","handleCardPayment","paymentIntent","placeholder","mount","getEffectiveTheme","localeOptions","themeOptions","disableIcons","startingLocale","startingTheme","effectiveTheme","vaultTimeoutActionChanged","PremiumComponent","premiumPrice","finalizePremium","paymentResponse","ProfileComponent","hidePasswordHint","UpdateProfileRequest","SecurityKeysComponent","showChangeKdf","viewUserApiKey","viewUserApiKeyModalRef","rotateUserApiKey","rotateUserApiKeyModalRef","SecurityComponent","showChangePassword","hasFamilySponsorshipAvailable","hasPremiumFromOrg","hideSubscription","availableSponsorshipOrgs","activeSponsorshipOrgs","sponsorshipForm","selectedSponsorshipOrgId","validators","sponsorshipEmail","asyncValidators","notAllowedValueAsync","sponsoredEmail","friendlyName","resetForm","forceReload","allOrgs","sponsorshipEmailControl","anyActiveSponsorships","anyOrgsAvailable","isSelfHosted","SponsoringOrgRowComponent","sponsoringOrg","sponsorshipRemoved","statusMessage","statusClass","setStatus","revokeSponsorship","revokeSponsorshipPromise","doRevokeSponsorship","resendEmail","resendEmailPromise","isSentAwaitingSync","toDelete","validUntil","formatDate","SubscriptionComponent","UserSubscriptionComponent","UserBillingHistoryComponent","subscriptionRoute","onCountryChanged","pristine","taxRates","localTaxRate","getTaxInfoRequest","hasChanged","TwoFactorAuthenticatorComponent","TwoFactorBaseComponent","qrScript","auth","authResponse","processResponse","buildRequestModel","QRious","element","twoFactorProviderType","hashedSecret","verificationType","enableFunction","ikey","skey","TwoFactorEmailComponent","sentEmail","TwoFactorRecoveryComponent","print","onafterprint","formatString","showPolicyWarning","evaluatePolicies","authenticatorModalRef","yubikeyModalRef","TwoFactorYubiKeyComponent","emailModalRef","webAuthnModalRef","TwoFactorWebAuthnComponent","recoveryModalRef","TwoFactorVerifyComponent","onAuthed","keyIdAvailable","keysConfiguredCount","webAuthnResponse","removePromise","readKey","challengePromise","readDevice","webAuthnChallenge","resetWebAuthn","webAuthnListening","webAuthnError","listening","configured","disablePromise","existingKey","padRight","makeRequest","UpdateLicenseComponent","updatePromise","NG_VALIDATORS","VerifyEmailComponent","findIndex","historyModalRef","lengthChanged","minNumberChanged","minSpecialChanged","setImportOptions","getFileContents","getFormatInstructionTitle","importOptions","fire","heightAuto","buttonsStyling","iconHtml","inputValue","inputAttributes","readonly","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","extract1PuxContent","readAsText","pre","JSZip","loadAsync","showRevisionDate","viewingPasswordHistory","cleanUp","totpUpdateCode","totpTick","totpInterval","toggleFavorite","launch","typeI18nKey","aType","confirmed","viewHistory","clearInterval","totpCode","half","totpCodeFormatted","intervalSeconds","totpSec","totpDash","totpLow","BulkActionsComponent","bulkDelete","promptPassword","selectedIds","getSelectedIds","BulkDeleteComponent","bulkDeleteModalRef","permanent","cipherIds","bulkRestore","BulkRestoreComponent","bulkRestoreModalRef","onRestored","bulkShare","selectedCiphers","getSelected","BulkShareComponent","bulkShareModalRef","onShared","bulkMove","BulkMoveComponent","bulkMoveModalRef","onMoved","deleteCiphersAdmin","deleteCiphers","deleteRequest","nonShareableCount","shareableCiphers","checkedCollectionIds","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","onOrganzationBadgeClicked","pagedCiphers","userHasPremiumAccess","pagedCiphersCount","clone","displayTotpCopyButton","checkCipher","subscriber","arg","localStorage","getItem","sessionStorage","setItem","removeItem","filePath","localesResult","store","migrationStateFrom1To2","browserCache","prefersColorSchemeDark","matchMedia","chrome","Web","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","rel","blobData","blobOptions","fileNameLower","doDownload","endsWith","createObjectURL","PublicKeyCredential","confirmText","cancelText","bodyIsHtml","iconClasses","bootstrapModal","removeAttribute","iconHtmlStr","showCancelButton","cancelButtonText","clipboardData","setData","queryCommandSupported","copyEl","contains","execCommand","readFromClipboard","authenticateBiometric","getDefaultSystemTheme","addListener","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","O","chunkIds","notFulfilled","Infinity","fulfilled","getter","__esModule","definition","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/connectors/webauthn-fallback.2a1252fee56755121240.js b/connectors/webauthn-fallback.2a1252fee56755121240.js new file mode 100644 index 00000000..45e388d2 --- /dev/null +++ b/connectors/webauthn-fallback.2a1252fee56755121240.js @@ -0,0 +1,2 @@ +(()=>{"use strict";var e={32728:(e,t)=>{function n(e){if(Array.isArray(e)&&(e=Uint8Array.from(e)),e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array){let t="";const n=e.byteLength;for(let r=0;re.charCodeAt(0))),t.allowCredentials.forEach((e=>{const t=e.id.replace(/\_/g,"/").replace(/\-/g,"+");e.id=Uint8Array.from(atob(t),(e=>e.charCodeAt(0)))})),t}},53204:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.b64Decode=t.getQsParam=void 0,t.getQsParam=function(e){const t=window.location.href;e=e.replace(/[\[\]]/g,"\\$&");const n=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return n?n[2]?decodeURIComponent(n[2].replace(/\+/g," ")):"":null},t.b64Decode=function(e,t=!1){return t&&(e=e.replace(/ /g,"+")),decodeURIComponent(Array.prototype.map.call(atob(e),(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""))}},45649:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{s(r.next(e))}catch(t){a(t)}}function c(e){try{s(r.throw(e))}catch(t){a(t)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const o=n(53204),a=n(32728);n(48672);let i,c=!1,s=null,d=!1,l="en",u={};function f(){if(c)return;if(s=o.getQsParam("parent"),!s)return void y("No parent.");s=decodeURIComponent(s),l=o.getQsParam("locale").replace("-","_");"1"===o.getQsParam("v")?function(){const e=o.getQsParam("data");if(!e)return void y("No data.");i=o.b64Decode(e)}():function(){let e=null;try{e=JSON.parse(o.b64Decode(o.getQsParam("data")))}catch(t){return void y("Cannot parse data.")}i=e.data}(),c=!0}function g(e){return r(this,void 0,void 0,(function*(){const t=`locales/${e}/messages.json?cache=g85wp2`,n=yield fetch(t);return yield n.json()}))}function m(e){var t;return(null===(t=u[e])||void 0===t?void 0:t.message)||""}function p(){if(d)return;if(!("credentials"in navigator))return void y(m("webAuthnNotSupported"));if(f(),!i)return void y("No data.");let e;try{e=a.parseWebauthnJson(i)}catch(t){return void y("Cannot parse data.")}!function(e){r(this,void 0,void 0,(function*(){try{const t=yield navigator.credentials.get({publicKey:e});if(d)return;const n=a.buildDataString(t),r=document.getElementById("remember").checked;window.postMessage({command:"webAuthnResult",data:n,remember:r},"*"),d=!0,function(e){document.getElementById("webauthn-button").disabled=!0;const t=document.getElementById("msg");b(t),t.textContent=e,t.classList.add("alert"),t.classList.add("alert-success")}(m("webAuthnSuccess"))}catch(t){y(t)}}))}(e)}function y(e){const t=document.getElementById("msg");b(t),t.textContent=e,t.classList.add("alert"),t.classList.add("alert-danger")}function b(e){e.classList.remove("alert"),e.classList.remove("alert-danger"),e.classList.remove("alert-success")}document.addEventListener("DOMContentLoaded",(()=>r(void 0,void 0,void 0,(function*(){f();try{u=yield g(l)}catch(n){console.error("Failed to load the locale",l),u=yield g("en")}document.getElementById("msg").innerText=m("webAuthnFallbackMsg"),document.getElementById("remember-label").innerText=m("rememberMe");const e=document.getElementById("webauthn-button");e.innerText=m("webAuthnAuthenticate"),e.onclick=p,document.getElementById("spinner").classList.add("d-none");const t=document.getElementById("content");t.classList.add("d-block"),t.classList.remove("d-none")}))))},48672:(e,t,n)=>{n.r(t)}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};n(45649)})(); +//# sourceMappingURL=webauthn-fallback.2a1252fee56755121240.js.map \ No newline at end of file diff --git a/connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js.map b/connectors/webauthn-fallback.2a1252fee56755121240.js.map similarity index 98% rename from connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js.map rename to connectors/webauthn-fallback.2a1252fee56755121240.js.map index 47fd17ed..390e8bb0 100644 --- a/connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js.map +++ b/connectors/webauthn-fallback.2a1252fee56755121240.js.map @@ -1 +1 @@ -{"version":3,"file":"connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js","mappings":"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","sources":["webpack://@bitwarden/web-vault/./src/connectors/common-webauthn.ts","webpack://@bitwarden/web-vault/./src/connectors/common.ts","webpack://@bitwarden/web-vault/./src/connectors/webauthn-fallback.ts","webpack://@bitwarden/web-vault/webpack/bootstrap","webpack://@bitwarden/web-vault/webpack/runtime/make namespace object","webpack://@bitwarden/web-vault/webpack/startup"],"sourcesContent":["export function buildDataString(assertedCredential: PublicKeyCredential) {\n const response = assertedCredential.response as AuthenticatorAssertionResponse;\n\n const authData = new Uint8Array(response.authenticatorData);\n const clientDataJSON = new Uint8Array(response.clientDataJSON);\n const rawId = new Uint8Array(assertedCredential.rawId);\n const sig = new Uint8Array(response.signature);\n\n const data = {\n id: assertedCredential.id,\n rawId: coerceToBase64Url(rawId),\n type: assertedCredential.type,\n extensions: assertedCredential.getClientExtensionResults(),\n response: {\n authenticatorData: coerceToBase64Url(authData),\n clientDataJson: coerceToBase64Url(clientDataJSON),\n signature: coerceToBase64Url(sig),\n },\n };\n\n return JSON.stringify(data);\n}\n\nexport function parseWebauthnJson(jsonString: string) {\n const json = JSON.parse(jsonString);\n\n const challenge = json.challenge.replace(/-/g, \"+\").replace(/_/g, \"/\");\n json.challenge = Uint8Array.from(atob(challenge), (c) => c.charCodeAt(0));\n\n json.allowCredentials.forEach((listItem: any) => {\n // eslint-disable-next-line\n const fixedId = listItem.id.replace(/\\_/g, \"/\").replace(/\\-/g, \"+\");\n listItem.id = Uint8Array.from(atob(fixedId), (c) => c.charCodeAt(0));\n });\n\n return json;\n}\n\n// From https://github.com/abergs/fido2-net-lib/blob/b487a1d47373ea18cd752b4988f7262035b7b54e/Demo/wwwroot/js/helpers.js#L34\n// License: https://github.com/abergs/fido2-net-lib/blob/master/LICENSE.txt\nfunction coerceToBase64Url(thing: any) {\n // Array or ArrayBuffer to Uint8Array\n if (Array.isArray(thing)) {\n thing = Uint8Array.from(thing);\n }\n\n if (thing instanceof ArrayBuffer) {\n thing = new Uint8Array(thing);\n }\n\n // Uint8Array to base64\n if (thing instanceof Uint8Array) {\n let str = \"\";\n const len = thing.byteLength;\n\n for (let i = 0; i < len; i++) {\n str += String.fromCharCode(thing[i]);\n }\n thing = window.btoa(str);\n }\n\n if (typeof thing !== \"string\") {\n throw new Error(\"could not coerce to string\");\n }\n\n // base64 to base64url\n // NOTE: \"=\" at the end of challenge is optional, strip it off here\n thing = thing.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=*$/g, \"\");\n\n return thing;\n}\n","export function getQsParam(name: string) {\n const url = window.location.href;\n // eslint-disable-next-line\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\");\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n if (!results[2]) {\n return \"\";\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\n\nexport function b64Decode(str: string, spaceAsPlus = false) {\n if (spaceAsPlus) {\n str = str.replace(/ /g, \"+\");\n }\n\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(str), (c: string) => {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\")\n );\n}\n","import { b64Decode, getQsParam } from \"./common\";\nimport { buildDataString, parseWebauthnJson } from \"./common-webauthn\";\n\nrequire(\"./webauthn.scss\");\n\nlet parsed = false;\nlet webauthnJson: any;\nlet parentUrl: string = null;\nlet sentSuccess = false;\nlet locale = \"en\";\n\nlet locales: any = {};\n\nfunction parseParameters() {\n if (parsed) {\n return;\n }\n\n parentUrl = getQsParam(\"parent\");\n if (!parentUrl) {\n error(\"No parent.\");\n return;\n } else {\n parentUrl = decodeURIComponent(parentUrl);\n }\n\n locale = getQsParam(\"locale\").replace(\"-\", \"_\");\n\n const version = getQsParam(\"v\");\n\n if (version === \"1\") {\n parseParametersV1();\n } else {\n parseParametersV2();\n }\n parsed = true;\n}\n\nfunction parseParametersV1() {\n const data = getQsParam(\"data\");\n if (!data) {\n error(\"No data.\");\n return;\n }\n\n webauthnJson = b64Decode(data);\n}\n\nfunction parseParametersV2() {\n let dataObj: { data: any; btnText: string } = null;\n try {\n dataObj = JSON.parse(b64Decode(getQsParam(\"data\")));\n } catch (e) {\n error(\"Cannot parse data.\");\n return;\n }\n\n webauthnJson = dataObj.data;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n parseParameters();\n try {\n locales = await loadLocales(locale);\n } catch {\n // eslint-disable-next-line\n console.error(\"Failed to load the locale\", locale);\n locales = await loadLocales(\"en\");\n }\n\n document.getElementById(\"msg\").innerText = translate(\"webAuthnFallbackMsg\");\n document.getElementById(\"remember-label\").innerText = translate(\"rememberMe\");\n\n const button = document.getElementById(\"webauthn-button\");\n button.innerText = translate(\"webAuthnAuthenticate\");\n button.onclick = start;\n\n document.getElementById(\"spinner\").classList.add(\"d-none\");\n const content = document.getElementById(\"content\");\n content.classList.add(\"d-block\");\n content.classList.remove(\"d-none\");\n});\n\nasync function loadLocales(newLocale: string) {\n const filePath = `locales/${newLocale}/messages.json?cache=${process.env.CACHE_TAG}`;\n const localesResult = await fetch(filePath);\n return await localesResult.json();\n}\n\nfunction translate(id: string) {\n return locales[id]?.message || \"\";\n}\n\nfunction start() {\n if (sentSuccess) {\n return;\n }\n\n if (!(\"credentials\" in navigator)) {\n error(translate(\"webAuthnNotSupported\"));\n return;\n }\n\n parseParameters();\n if (!webauthnJson) {\n error(\"No data.\");\n return;\n }\n\n let json: any;\n try {\n json = parseWebauthnJson(webauthnJson);\n } catch (e) {\n error(\"Cannot parse data.\");\n return;\n }\n\n initWebAuthn(json);\n}\n\nasync function initWebAuthn(obj: any) {\n try {\n const assertedCredential = (await navigator.credentials.get({\n publicKey: obj,\n })) as PublicKeyCredential;\n\n if (sentSuccess) {\n return;\n }\n\n const dataString = buildDataString(assertedCredential);\n const remember = (document.getElementById(\"remember\") as HTMLInputElement).checked;\n window.postMessage({ command: \"webAuthnResult\", data: dataString, remember: remember }, \"*\");\n\n sentSuccess = true;\n success(translate(\"webAuthnSuccess\"));\n } catch (err) {\n error(err);\n }\n}\n\nfunction error(message: string) {\n const el = document.getElementById(\"msg\");\n resetMsgBox(el);\n el.textContent = message;\n el.classList.add(\"alert\");\n el.classList.add(\"alert-danger\");\n}\n\nfunction success(message: string) {\n (document.getElementById(\"webauthn-button\") as HTMLButtonElement).disabled = true;\n\n const el = document.getElementById(\"msg\");\n resetMsgBox(el);\n el.textContent = message;\n el.classList.add(\"alert\");\n el.classList.add(\"alert-success\");\n}\n\nfunction resetMsgBox(el: HTMLElement) {\n el.classList.remove(\"alert\");\n el.classList.remove(\"alert-danger\");\n el.classList.remove(\"alert-success\");\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(45649);\n"],"names":["coerceToBase64Url","thing","Array","isArray","Uint8Array","from","ArrayBuffer","str","len","byteLength","i","String","fromCharCode","window","btoa","Error","replace","assertedCredential","response","authData","authenticatorData","clientDataJSON","rawId","sig","signature","data","id","type","extensions","getClientExtensionResults","clientDataJson","JSON","stringify","jsonString","json","parse","challenge","atob","c","charCodeAt","allowCredentials","forEach","listItem","fixedId","name","url","location","href","results","RegExp","exec","decodeURIComponent","spaceAsPlus","prototype","map","call","toString","slice","join","webauthnJson","parsed","parentUrl","sentSuccess","locale","locales","parseParameters","getQsParam","error","b64Decode","parseParametersV1","dataObj","e","parseParametersV2","loadLocales","newLocale","filePath","localesResult","fetch","translate","message","start","navigator","parseWebauthnJson","obj","credentials","get","publicKey","dataString","buildDataString","remember","document","getElementById","checked","postMessage","command","disabled","el","resetMsgBox","textContent","classList","add","success","err","initWebAuthn","remove","addEventListener","console","innerText","button","onclick","content","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty","value"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"connectors/webauthn-fallback.2a1252fee56755121240.js","mappings":"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","sources":["webpack://@bitwarden/web-vault/./src/connectors/common-webauthn.ts","webpack://@bitwarden/web-vault/./src/connectors/common.ts","webpack://@bitwarden/web-vault/./src/connectors/webauthn-fallback.ts","webpack://@bitwarden/web-vault/webpack/bootstrap","webpack://@bitwarden/web-vault/webpack/runtime/make namespace object","webpack://@bitwarden/web-vault/webpack/startup"],"sourcesContent":["export function buildDataString(assertedCredential: PublicKeyCredential) {\n const response = assertedCredential.response as AuthenticatorAssertionResponse;\n\n const authData = new Uint8Array(response.authenticatorData);\n const clientDataJSON = new Uint8Array(response.clientDataJSON);\n const rawId = new Uint8Array(assertedCredential.rawId);\n const sig = new Uint8Array(response.signature);\n\n const data = {\n id: assertedCredential.id,\n rawId: coerceToBase64Url(rawId),\n type: assertedCredential.type,\n extensions: assertedCredential.getClientExtensionResults(),\n response: {\n authenticatorData: coerceToBase64Url(authData),\n clientDataJson: coerceToBase64Url(clientDataJSON),\n signature: coerceToBase64Url(sig),\n },\n };\n\n return JSON.stringify(data);\n}\n\nexport function parseWebauthnJson(jsonString: string) {\n const json = JSON.parse(jsonString);\n\n const challenge = json.challenge.replace(/-/g, \"+\").replace(/_/g, \"/\");\n json.challenge = Uint8Array.from(atob(challenge), (c) => c.charCodeAt(0));\n\n json.allowCredentials.forEach((listItem: any) => {\n // eslint-disable-next-line\n const fixedId = listItem.id.replace(/\\_/g, \"/\").replace(/\\-/g, \"+\");\n listItem.id = Uint8Array.from(atob(fixedId), (c) => c.charCodeAt(0));\n });\n\n return json;\n}\n\n// From https://github.com/abergs/fido2-net-lib/blob/b487a1d47373ea18cd752b4988f7262035b7b54e/Demo/wwwroot/js/helpers.js#L34\n// License: https://github.com/abergs/fido2-net-lib/blob/master/LICENSE.txt\nfunction coerceToBase64Url(thing: any) {\n // Array or ArrayBuffer to Uint8Array\n if (Array.isArray(thing)) {\n thing = Uint8Array.from(thing);\n }\n\n if (thing instanceof ArrayBuffer) {\n thing = new Uint8Array(thing);\n }\n\n // Uint8Array to base64\n if (thing instanceof Uint8Array) {\n let str = \"\";\n const len = thing.byteLength;\n\n for (let i = 0; i < len; i++) {\n str += String.fromCharCode(thing[i]);\n }\n thing = window.btoa(str);\n }\n\n if (typeof thing !== \"string\") {\n throw new Error(\"could not coerce to string\");\n }\n\n // base64 to base64url\n // NOTE: \"=\" at the end of challenge is optional, strip it off here\n thing = thing.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=*$/g, \"\");\n\n return thing;\n}\n","export function getQsParam(name: string) {\n const url = window.location.href;\n // eslint-disable-next-line\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\");\n const results = regex.exec(url);\n\n if (!results) {\n return null;\n }\n if (!results[2]) {\n return \"\";\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\n\nexport function b64Decode(str: string, spaceAsPlus = false) {\n if (spaceAsPlus) {\n str = str.replace(/ /g, \"+\");\n }\n\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(str), (c: string) => {\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(\"\")\n );\n}\n","import { b64Decode, getQsParam } from \"./common\";\nimport { buildDataString, parseWebauthnJson } from \"./common-webauthn\";\n\nrequire(\"./webauthn.scss\");\n\nlet parsed = false;\nlet webauthnJson: any;\nlet parentUrl: string = null;\nlet sentSuccess = false;\nlet locale = \"en\";\n\nlet locales: any = {};\n\nfunction parseParameters() {\n if (parsed) {\n return;\n }\n\n parentUrl = getQsParam(\"parent\");\n if (!parentUrl) {\n error(\"No parent.\");\n return;\n } else {\n parentUrl = decodeURIComponent(parentUrl);\n }\n\n locale = getQsParam(\"locale\").replace(\"-\", \"_\");\n\n const version = getQsParam(\"v\");\n\n if (version === \"1\") {\n parseParametersV1();\n } else {\n parseParametersV2();\n }\n parsed = true;\n}\n\nfunction parseParametersV1() {\n const data = getQsParam(\"data\");\n if (!data) {\n error(\"No data.\");\n return;\n }\n\n webauthnJson = b64Decode(data);\n}\n\nfunction parseParametersV2() {\n let dataObj: { data: any; btnText: string } = null;\n try {\n dataObj = JSON.parse(b64Decode(getQsParam(\"data\")));\n } catch (e) {\n error(\"Cannot parse data.\");\n return;\n }\n\n webauthnJson = dataObj.data;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", async () => {\n parseParameters();\n try {\n locales = await loadLocales(locale);\n } catch {\n // eslint-disable-next-line\n console.error(\"Failed to load the locale\", locale);\n locales = await loadLocales(\"en\");\n }\n\n document.getElementById(\"msg\").innerText = translate(\"webAuthnFallbackMsg\");\n document.getElementById(\"remember-label\").innerText = translate(\"rememberMe\");\n\n const button = document.getElementById(\"webauthn-button\");\n button.innerText = translate(\"webAuthnAuthenticate\");\n button.onclick = start;\n\n document.getElementById(\"spinner\").classList.add(\"d-none\");\n const content = document.getElementById(\"content\");\n content.classList.add(\"d-block\");\n content.classList.remove(\"d-none\");\n});\n\nasync function loadLocales(newLocale: string) {\n const filePath = `locales/${newLocale}/messages.json?cache=${process.env.CACHE_TAG}`;\n const localesResult = await fetch(filePath);\n return await localesResult.json();\n}\n\nfunction translate(id: string) {\n return locales[id]?.message || \"\";\n}\n\nfunction start() {\n if (sentSuccess) {\n return;\n }\n\n if (!(\"credentials\" in navigator)) {\n error(translate(\"webAuthnNotSupported\"));\n return;\n }\n\n parseParameters();\n if (!webauthnJson) {\n error(\"No data.\");\n return;\n }\n\n let json: any;\n try {\n json = parseWebauthnJson(webauthnJson);\n } catch (e) {\n error(\"Cannot parse data.\");\n return;\n }\n\n initWebAuthn(json);\n}\n\nasync function initWebAuthn(obj: any) {\n try {\n const assertedCredential = (await navigator.credentials.get({\n publicKey: obj,\n })) as PublicKeyCredential;\n\n if (sentSuccess) {\n return;\n }\n\n const dataString = buildDataString(assertedCredential);\n const remember = (document.getElementById(\"remember\") as HTMLInputElement).checked;\n window.postMessage({ command: \"webAuthnResult\", data: dataString, remember: remember }, \"*\");\n\n sentSuccess = true;\n success(translate(\"webAuthnSuccess\"));\n } catch (err) {\n error(err);\n }\n}\n\nfunction error(message: string) {\n const el = document.getElementById(\"msg\");\n resetMsgBox(el);\n el.textContent = message;\n el.classList.add(\"alert\");\n el.classList.add(\"alert-danger\");\n}\n\nfunction success(message: string) {\n (document.getElementById(\"webauthn-button\") as HTMLButtonElement).disabled = true;\n\n const el = document.getElementById(\"msg\");\n resetMsgBox(el);\n el.textContent = message;\n el.classList.add(\"alert\");\n el.classList.add(\"alert-success\");\n}\n\nfunction resetMsgBox(el: HTMLElement) {\n el.classList.remove(\"alert\");\n el.classList.remove(\"alert-danger\");\n el.classList.remove(\"alert-success\");\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(45649);\n"],"names":["coerceToBase64Url","thing","Array","isArray","Uint8Array","from","ArrayBuffer","str","len","byteLength","i","String","fromCharCode","window","btoa","Error","replace","assertedCredential","response","authData","authenticatorData","clientDataJSON","rawId","sig","signature","data","id","type","extensions","getClientExtensionResults","clientDataJson","JSON","stringify","jsonString","json","parse","challenge","atob","c","charCodeAt","allowCredentials","forEach","listItem","fixedId","name","url","location","href","results","RegExp","exec","decodeURIComponent","spaceAsPlus","prototype","map","call","toString","slice","join","webauthnJson","parsed","parentUrl","sentSuccess","locale","locales","parseParameters","getQsParam","error","b64Decode","parseParametersV1","dataObj","e","parseParametersV2","loadLocales","newLocale","filePath","localesResult","fetch","translate","message","start","navigator","parseWebauthnJson","obj","credentials","get","publicKey","dataString","buildDataString","remember","document","getElementById","checked","postMessage","command","disabled","el","resetMsgBox","textContent","classList","add","success","err","initWebAuthn","remove","addEventListener","console","innerText","button","onclick","content","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","r","Symbol","toStringTag","Object","defineProperty","value"],"sourceRoot":""} \ No newline at end of file diff --git a/connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js b/connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js deleted file mode 100644 index 2dd1bb3d..00000000 --- a/connectors/webauthn-fallback.3fb4ff451a0eee664ccb.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{"use strict";var e={32728:(e,t)=>{function n(e){if(Array.isArray(e)&&(e=Uint8Array.from(e)),e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array){let t="";const n=e.byteLength;for(let r=0;re.charCodeAt(0))),t.allowCredentials.forEach((e=>{const t=e.id.replace(/\_/g,"/").replace(/\-/g,"+");e.id=Uint8Array.from(atob(t),(e=>e.charCodeAt(0)))})),t}},53204:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.b64Decode=t.getQsParam=void 0,t.getQsParam=function(e){const t=window.location.href;e=e.replace(/[\[\]]/g,"\\$&");const n=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return n?n[2]?decodeURIComponent(n[2].replace(/\+/g," ")):"":null},t.b64Decode=function(e,t=!1){return t&&(e=e.replace(/ /g,"+")),decodeURIComponent(Array.prototype.map.call(atob(e),(e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""))}},45649:function(e,t,n){var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function c(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const a=n(53204),o=n(32728);n(48672);let i,c=!1,s=null,d=!1,l="en",u={};function f(){if(c)return;if(s=a.getQsParam("parent"),!s)return void y("No parent.");s=decodeURIComponent(s),l=a.getQsParam("locale").replace("-","_");"1"===a.getQsParam("v")?function(){const e=a.getQsParam("data");if(!e)return void y("No data.");i=a.b64Decode(e)}():function(){let e=null;try{e=JSON.parse(a.b64Decode(a.getQsParam("data")))}catch(t){return void y("Cannot parse data.")}i=e.data}(),c=!0}function g(e){return r(this,void 0,void 0,(function*(){const t=`locales/${e}/messages.json?cache=aqtaj`,n=yield fetch(t);return yield n.json()}))}function m(e){var t;return(null===(t=u[e])||void 0===t?void 0:t.message)||""}function p(){if(d)return;if(!("credentials"in navigator))return void y(m("webAuthnNotSupported"));if(f(),!i)return void y("No data.");let e;try{e=o.parseWebauthnJson(i)}catch(t){return void y("Cannot parse data.")}!function(e){r(this,void 0,void 0,(function*(){try{const t=yield navigator.credentials.get({publicKey:e});if(d)return;const n=o.buildDataString(t),r=document.getElementById("remember").checked;window.postMessage({command:"webAuthnResult",data:n,remember:r},"*"),d=!0,function(e){document.getElementById("webauthn-button").disabled=!0;const t=document.getElementById("msg");b(t),t.textContent=e,t.classList.add("alert"),t.classList.add("alert-success")}(m("webAuthnSuccess"))}catch(t){y(t)}}))}(e)}function y(e){const t=document.getElementById("msg");b(t),t.textContent=e,t.classList.add("alert"),t.classList.add("alert-danger")}function b(e){e.classList.remove("alert"),e.classList.remove("alert-danger"),e.classList.remove("alert-success")}document.addEventListener("DOMContentLoaded",(()=>r(void 0,void 0,void 0,(function*(){f();try{u=yield g(l)}catch(n){console.error("Failed to load the locale",l),u=yield g("en")}document.getElementById("msg").innerText=m("webAuthnFallbackMsg"),document.getElementById("remember-label").innerText=m("rememberMe");const e=document.getElementById("webauthn-button");e.innerText=m("webAuthnAuthenticate"),e.onclick=p,document.getElementById("spinner").classList.add("d-none");const t=document.getElementById("content");t.classList.add("d-block"),t.classList.remove("d-none")}))))},48672:(e,t,n)=>{n.r(t)}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};n(45649)})(); -//# sourceMappingURL=webauthn-fallback.3fb4ff451a0eee664ccb.js.map \ No newline at end of file diff --git a/index.html b/index.html index 0c79d33d..1d004222 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Bitwarden Web Vault

\ No newline at end of file +Bitwarden Web Vault

\ No newline at end of file diff --git a/version.json b/version.json index a171c8a7..b7ca700c 100644 --- a/version.json +++ b/version.json @@ -1 +1 @@ -{ "version": "2022.05.0" } +{ "version": "2022.5.1" } diff --git a/webauthn-fallback-connector.html b/webauthn-fallback-connector.html index a35f560b..9f3b7df3 100644 --- a/webauthn-fallback-connector.html +++ b/webauthn-fallback-connector.html @@ -1 +1 @@ -Bitwarden WebAuthn Connector


\ No newline at end of file +Bitwarden WebAuthn Connector


\ No newline at end of file